MjAwOC0wMy0wNSAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4zLjAgcmVsZWFzZWQuCgoyMDA4LTAyLTE3ICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgoKCVBSIGRvY3VtZW50YXRpb24vMTU0NzkKCSogZ25hdF91Z24udGV4aTogSW4gbm9uLWNvZGUsIGF2b2lkIHNwYWNlIGJlZm9yZSBjb2xvbi4KCShSZWd1bGFyIEV4cHJlc3Npb25zIGluIGduYXRmaW5kIGFuZCBnbmF0eHJlZik6IEZpeCBpbmRlbnRhdGlvbi4KCShFeGFtcGxlcyBvZiBnbmF0eHJlZiBVc2FnZSk6IFVzZSBAY29tbWFuZHt2aX0gaW5zdGVhZCBvZgoJQGZpbGV7dml9LgoJKENoYXJhY3RlciBTZXQgQ29udHJvbCk6IERvIG5vdCB1c2UgQGNvZGUgZm9yIFVURi04LgoJKFZhbGlkaXR5IENoZWNraW5nKTogRml4IHR5cG8gIk5hTnMiIGluc3RlYWQgb2YgIk5hTidzIi4gIERvIG5vdAoJdXNlIEBjb2RlIGZvciBJRUVFLgoJKiBnbmF0X3JtLnRleGkgKEFnZ3JlZ2F0ZXMgd2l0aCBzdGF0aWMgYm91bmRzKTogRml4IHR5cG8gaW4gY29kZQoJc2FtcGxlLgoJKiBnbmF0X3JtLnRleGksIGduYXRfdWduLnRleGk6IEZpeCB0eXBvcy4gIEJ1bXAgY29weXJpZ2h0IHllYXJzLgoKMjAwOC0wMi0xMSAgSm9lbCBTaGVycmlsbCA8am9lbC5zaGVycmlsbEBvYXJjb3JwLmNvbT4KCglQUiBhZGEvMzUxNDMKCSogZW52LmM6IEFkZCBfX3J0ZW1zX18gdG8gaWYgZGVmaW5lZC4KCSogcy1vc2ludGUtcnRlbXMuYWRiOiBBZGQgVG9fVGFyZ2V0X1ByaW9yaXR5LiAgRml4IGZvcm1hdHRpbmcuCgkqIHMtb3NpbnRlLXJ0ZW1zLmFkczogQWRkIFRvX1RhcmdldF9Qcmlvcml0eSBwcm90b3R5cGUgYW5kCglQVEhSRUFEX1NDT1BFX1BST0NFU1MvUFRIUkVBRF9TQ09QRV9TWVNURU0gY29uc3RhbnRzLiAgQWRkCglwcmFnbWEgQ29udmVudGlvbiBhcyByZXF1aXJlZC4KCSogZ3NvY2tldC5oOiBNYWtlIGNvbXBpbGUgaW4gYW5kIG91dCBvZiBSVFMuCgkqIE1ha2VmaWxlLmluOiBBZGQgc3lzdGVtLXJ0ZW1zLmFkcy4gIEJ1aWxkIERFQyBleHRlbnNpb25zLgoJVXNlIGctc29jY29uLXJ0ZW1zLmFkcy4KCSogZy1zb2Njb24tcnRlbXMuYWRzLCBzeXN0ZW0tcnRlbXMuYWRzOiBOZXcgZmlsZXMuCgoyMDA4LTAyLTA2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJUFIgb3RoZXIvMzUxMDcKCSogTWFrZS1sYW5nLmluIChnbmF0MSk6IEFkZCAkKEdNUExJQlMpLgoKMjAwOC0wMS0yNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAoY29tcG9uZW50c190b19yZWNvcmQpOiBJbXByb3ZlIGNvbW1lbnQuCgoyMDA4LTAxLTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChjb21wb25lbnRzX3RvX3JlY29yZCk6IERvIG5vdCByZXVzZSB0aGUgZW1wdHkgdW5pb24gdHlwZQoJaWYgdGhlcmUgaXMgYSByZXByZXNlbnRhdGlvbiBjbGF1c2Ugb24gdGhlIHJlY29yZC4KCSogdHJhbnMuYyAoYWRkcmVzc2FibGVfcCk6IFJldHVybiB0cnVlIGZvciBJTlRFR0VSX0NTVC4KCjIwMDgtMDEtMjEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmFucy5jIChnbmF0X3RvX2dudSkgPE5fRnJlZV9TdGF0ZW1lbnQ+OiBVc2UgUE9JTlRFUl9QTFVTX0VYUFIKCWluIHBvaW50ZXIgYXJpdGhtZXRpY3MuCgkqIHV0aWxzMi5jIChidWlsZF9hbGxvY2F0b3IpOiBMaWtld2lzZS4KCjIwMDgtMDEtMTcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB1dGlscy5jIChidWlsZF9mdW5jdGlvbl9zdHViKTogUHJvcGVybHkgYnVpbGQgdGhlIGNhbGwgZXhwcmVzc2lvbi4KCjIwMDgtMDEtMTQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPG9iamVjdD46IFByb2Nlc3MgcmVuYW1pbmdzCgliZWZvcmUgY29udmVydGluZyB0aGUgZXhwcmVzc2lvbiB0byB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0LgoJKiB0cmFucy5jIChtYXliZV9zdGFiaWxpemVfcmVmZXJlbmNlKSA8Q09OU1RSVUNUT1I+OiBOZXcgY2FzZS4KCVN0YWJpbGl6ZSBjb25zdHJ1Y3RvcnMgZm9yIHNwZWNpYWwgd3JhcHBpbmcgdHlwZXMuCgoyMDA4LTAxLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJhbnMuYyAoY2FsbF90b19nbnUpOkludm9rZSB0aGUgYWRkcmVzc2FibGVfcCBwcmVkaWNhdGUgb25seQoJd2hlbiBuZWNlc3NhcnkuICBNZXJnZSBzb21lIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMuICBVcGRhdGUgY29tbWVudHMuCglSZW5hbWUgdW5jaGVja2VkX2NvbnZlcnRfcCBsb2NhbCB2YXJpYWJsZSB0byBzdXBwcmVzc190eXBlX2NvbnZlcnNpb24uCglEbyBub3Qgc3VwcHJlc3MgY29udmVyc2lvbnMgaW4gdGhlIEluIGNhc2UuCgkoYWRkcmVzc2FibGVfcCkgPFZJRVdfQ09OVkVSVF9FWFBSPjogRG8gbm90IHRha2UgYWxpZ25tZW50IGlzc3VlcwoJaW50byBhY2NvdW50IG9uIG5vbiBzdHJpY3QtYWxpZ25tZW50IHBsYXRmb3Jtcy4KCjIwMDgtMDEtMTIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB1dGlscy5jIChhZ2dyZWdhdGVfdHlwZV9jb250YWluc19hcnJheV9wKTogTmV3IHByZWRpY2F0ZS4KCShjcmVhdGVfZmllbGRfZGVjbCk6IEluIGEgcGFja2VkIHJlY29yZCwgZm9yY2UgYnl0ZSBhbGlnbm1lbnQKCWZvciBmaWVsZHMgd2l0aG91dCBzcGVjaWZpZWQgcG9zaXRpb24gdGhhdCBjb250YWluIGFuIGFycmF5LgoKMjAwOC0wMS0xMiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHV0aWxzLmMgKHVuY2hlY2tlZF9jb252ZXJ0KTogRm9sZCB0aGUgVklFV19DT05WRVJUX0VYUFIgZXhwcmVzc2lvbi4KCjIwMDgtMDEtMTAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW4uQG5yYy1jbnJjLmdjLmNhPgoKCVBSIGFkYS8zNDQ2NgoJKiBzLW9zaW50ZS1saW51eC1ocHBhLmFkcyAoU0NfTlBST0NFU1NPUlNfT05MTik6IE5ldyBjb25zdGFudCBmb3IKCXN5c2NvbmYgY2FsbC4KCShiaXRfZmllbGQpOiBOZXcgcGFja2VkIGJvb2xlYW4gdHlwZSB1c2VkIGJ5IGNwdV9zZXRfdC4KCShjcHVfc2V0X3QpOiBOZXcgdHlwZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBDIHR5cGUgd2l0aAoJdGhlIHNhbWUgbmFtZS4gTm90ZSB0aGF0IG9uIHRoZSBBZGEgc2lkZSB3ZSB1c2UgYSBiaXQKCWZpZWxkIGFycmF5IGZvciB0aGUgYWZmaW5pdHkgbWFzay4gVGhlcmUgaXMgbm90IG5lZWQKCWZvciB0aGUgQyBtYWNybyBmb3Igc2V0dGluZyBpbmRpdmlkdWFsIGJpdC4KCShwdGhyZWFkX3NldGFmZmluaXR5X25wKTogTmV3IGltcG9ydGVkIHJvdXRpbmUuCgoyMDA4LTAxLTAzICBUZXJvIEtvc2tpbmVuIDx0ZXJvLmtvc2tpbmVuQGlraS5maT4KCglQUiBhZGEvMzQ2NDcKCSogYWRhaW50LmMgKF9fZ25hdF9vcGVuX25ld190ZW1wLCBfX2duYXRfdG1wX25hbWUpOiBVc2UgbWtzdGVtcCgpCglvbiBPcGVuQlNEIGFzIGlzIGRvbmUgb24gb3RoZXIgQlNEIHN5c3RlbXMuCgoJUFIgYWRhLzM0NjQ1CgkqIHN5c2RlcC5jIChfX2duYXRfdHR5bmFtZSwgZ2V0Y19pbW1lZGlhdGVfbm93YWl0LAoJZ2V0Y19pbW1lZGlhdGVfY29tbW9uKTogVHJlYXQgT3BlbkJTRCBhcyBGcmVlQlNEIHJlZ2FyZGluZyBpbW1lZGlhdGUKCUkvTy4KCglQUiBhZGEvMzQ2NDQKCSogZW52LmMgKF9fZ25hdF9jbGVhcmVudik6IFRyZWF0IE9wZW5CU0QgYXMgb3RoZXIgQlNEIHN5c3RlbXMgbWlzc2luZwoJY2xlYXJlbnYoKS4KCglQUiBhZGEvMzQ2NDYKCSogaW5pdC5jIChfX2duYXRfZXJyb3JfaGFuZGxlciwgX19nbmF0X2luc3RhbGxfaGFuZGxlciwKCV9fZ25hdF9pbml0X2Zsb2F0KTogRGVmaW5lIGZvciBPcGVuQlNELgoKCSogaW5pdGlhbGl6ZS5jIChfX2duYXRfaW5pdGlhbGl6ZSk6IERlZmluZSBmb3IgT3BlbkJTRC4KCjIwMDctMTItMjcgIFNhbXVlbCBUYXJkaWV1ICA8c2FtQHJmYzExNDkubmV0PgoKCVBSIGFkYS8zNDU1MwoJKiBhZGFpbnQuYyAoX19nbmF0X29wZW5fbmV3X3RlbXAsIF9fZ25hdF90bXBfbmFtZSk6IFVzZSBta3N0ZW1wKCkKCWluc3RlYWQgb2YgbWt0ZW1wKCkgb3IgdG1wbmFtKCkgb24gTmV0QlNELgoKMjAwNy0xMi0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyYW5zLmMgKGNhbGxfdG9fZ251KTogTWFrZSB0aGUgdGVtcG9yYXJ5IGZvciBub24tYWRkcmVzc2FibGUKCUluIHBhcmFtZXRlcnMgcGFzc2VkIGJ5IHJlZmVyZW5jZS4KCShhZGRyZXNzYWJsZV9wKTogUmV0dXJuIHRydWUgZm9yIFNUUklOR19DU1QgYW5kIENBTExfRVhQUi4KCjIwMDctMTItMTkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1leHBlY3Qtdm1zLmFkYiwgZy1leHBlY3QuYWRiLCBzLXBvb3Npei5hZGI6IAoJQWRkIHByYWdtYSBXYXJuaW5ncyAoT2ZmKSBmb3IgdW5hc3NpZ25lZCBJTiBPVVQgYXJndW1lbnRzCgoJKiBzZW1fd2Fybi5hZGIgKE91dHB1dF9SZWZlcmVuY2UpOiBTdXBwcmVzcyBtZXNzYWdlcyBmb3IgaW50ZXJuYWwgbmFtZXMKCShDaGVja19SZWZlcmVuY2VzKTogRXh0ZW5zaXZlIGNoYW5nZXMgdG8gdHVuZSB1cCB3YXJuaW5ncwoJKE91dHB1dF9Ob25fTW9kaWZlZF9Jbl9PdXRfV2FybmluZ3MpOiBDaGFuZ2VzIHRvIHR1bmUgdXAgd2FybmluZ3MKCShIYXNfUHJhZ21hX1VubW9kaWZlZF9DaGVja19TcGVjKTogTmV3IGZ1bmN0aW9uCgkoQ2hlY2tfUmVmZXJlbmNlcyk6IEltcGxlbWVudCBwcmFnbWEgVW5tb2RpZmllZAoJKFdhcm5fT25fVW5hc3NpZ25lZF9PdXRfUGFyYW1ldGVyKTogSW1wbGVtZW50IHByYWdtYSBVbm1vZGlmaWVkCgoJKiBwYXItcHJhZy5hZGI6IER1bW15IGVudHJ5IGZvciBwcmFnbWEgVW5tb2RpZmllZAoKCSogc2VtX3ByYWcuYWRiOiBJbXBsZW1lbnQgcHJhZ21hIFVubW9kaWZpZWQKCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiOiAoSGFzX1ByYWdtYV9Vbm1vZGlmaWVkKTogTmV3IGZsYWcKCShQcm9jX05leHRfQ29tcG9uZW50X09yX0Rpc2NyaW1pbmFudCk6IEZpeCB0eXBvLgoJVXBkYXRlIGNvbW1lbnRzLgoKCSogc2VtX3V0aWwuYWRiIChOb3RlX1Bvc3NpYmxlX01vZGlmaWNhdGlvbik6IEFkZCBwcm9jZXNzaW5uZyBmb3IgcHJhZ21hCglVbm1vZGlmaWVkLgoJKFJlc2V0X0FuYWx5emVkX0ZsYWdzKTogVXNlIFRyYXZlcnNlX1Byb2MgaW5zdGVhZCBvZiBUcmF2ZXJzZV9GdW5jLAoJYmVjYXVzZSB0aGUgZm9ybWVyIGFscmVhZHkgdGFrZXMgY2FyZSBvZiBkaXNjYXJkaW5nIHRoZSByZXN1bHQuCgkoTWFya19Db2V4dGVuc2lvbnMpOiBSZW1vdmUgdW51bnVzZWQgaW5pdGlhbCB2YWx1ZSBmcm9tIElzX0R5bmFtaWMuCglBZGQgY29tbWVudC4KCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgZW50cnkgZm9yIHByYWdtYSBVbm1vZGlmaWVkCgoyMDA3LTEyLTE5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdGFyZ3Bhcm0uYWRiLCB0YXJncGFybS5hZHMsIHN5c3RlbS5hZHMsIHN5c3RlbS1kYXJ3aW4tcHBjLmFkcywKCXN5c3RlbS12eHdvcmtzLXg4Ni5hZHMsIHN5c3RlbS1saW51eC1wcGMuYWRzLCBzeXN0ZW0tbGludXgtaHBwYS5hZHMsCglzeXN0ZW0taHB1eC1pYTY0LmFkcywgc3lzdGVtLXZ4d29ya3MtYXJtLmFkcywgc3lzdGVtLWRhcndpbi14ODYuYWRzLAoJc3lzdGVtLXZtc182NC5hZHMsIHN5c3RlbS12bXMtaWE2NC5hZHMsIHN5c3RlbS1saW51eC1pYTY0LmFkcywKCXN5c3RlbS1mcmVlYnNkLXg4Ni5hZHMsIHN5c3RlbS1saW51eC14ODZfNjQuYWRzLCBzeXN0ZW0tdHJ1NjQuYWRzLAoJc3lzdGVtLWFpeC5hZHMsIHN5c3RlbS12eHdvcmtzLXNwYXJjdjkuYWRzLCBzeXN0ZW0tc29sYXJpcy14ODYuYWRzLAoJc3lzdGVtLWlyaXgtbzMyLmFkcywgc3lzdGVtLWlyaXgtbjMyLmFkcywgc3lzdGVtLWhwdXguYWRzLAoJc3lzdGVtLXZ4d29ya3MtbTY4ay5hZHMsIHN5c3RlbS1saW51eC14ODYuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1taXBzLmFkcywKCXN5c3RlbS1zb2xhcmlzLXNwYXJjLmFkcywgc3lzdGVtLXNvbGFyaXMtc3BhcmN2OS5hZHMsIHN5c3RlbS12bXMuYWRzLAoJc3lzdGVtLW1pbmd3LmFkcywgc3lzdGVtLXZtcy16Y3guYWRzLCBzeXN0ZW0tdnh3b3Jrcy1wcGMuYWRzCgkoRHluYW1pY19UcmFtcG9saW5lc19Vc2VkKTogRGVsZXRlLgoKCSogc3lzdGVtLWx5bnhvcy14ODYuYWRzLCBzeXN0ZW0tbHlueG9zLXBwYy5hZHM6IERpdHRvLgoJVHVybiBvbiBzdGFjayBwcm9iaW5nIG1lY2hhbmlzbSBvbiBMeW54T1MuCgoyMDA3LTEyLTE5ICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBhdHJlZS5hZHMsIGF0cmVlLmFkYiAoVHJhdmVyc2VfRnVuYyk6IFdhbGsgRmllbGQyIGxhc3QsIGFuZCBlbGltaW5hdGUKCXRoZSByZXN1bHRpbmcgdGFpbCByZWN1cnNpb24gYnkgaGFuZC4gVGhpcyBwcmV2ZW50cyBydW5uaW5nIG91dCBvZgoJbWVtb3J5IG9uIGRlZXBseSBuZXN0ZWQgY29uY2F0ZW5hdGlvbnMsIHNpbmNlIEZpZWxkMiBpcyB3aGVyZSB0aGUgbGVmdAoJb3BlcmFuZCBvZiBjb25jYXRlbmF0aW9ucyBpcyBzdG9yZWQuCglGaXggYnVnICh3YXMgcmV0dXJuaW5nIE9LX09yaWcgaW4gc29tZSBjYXNlcykuIEZpeCByZXR1cm4gc3VidHlwZSB0bwoJY2xhcmlmeSB0aGF0IGl0IGNhbiBvbmx5IHJldHVybiBPSyBvciBBYmFuZG9uLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfT3BfQ29uY2F0KTogUmVwbGFjZSB0aGUgcmVjdXJzaW9uIG9uIHRoZSBsZWZ0CglvcGVyYW5kIGJ5IGl0ZXJhdGlvbiwgaW4gb3JkZXIgdG8gYXZvaWQgcnVubmluZyBvdXQgb2YgbWVtb3J5IG9uCglkZWVwbHktbmVzdGVkIGNvbmNhdGVuYXRpb25zLiBVc2UgdGhlIFBhcmVudCBwb2ludGVyIHRvIGdldCBiYWNrIHVwIHRoZQoJdHJlZS4KCShSZXNvbHZlX09wX0NvbmNhdF9BcmcsIFJlc29sdmVfT3BfQ29uY2F0X0ZpcnN0LAoJIFJlc29sdmVfT3BfQ29uY2F0X1Jlc3QpOiBOZXcgcHJvY2VkdXJlcyBzcGxpdCBvdXQgb2YKCVJlc29sdmVfT3BfQ29uY2F0LCBzbyB0aGUgaXRlcmF0aXZlIGFsZ29yaXRobSBpbiBSZXNvbHZlX09wX0NvbmNhdCBpcwoJY2xlYXJlci4KCgkqIGNoZWNrcy5hZGIgKFJlbW92ZV9DaGVja3MpOiBVc2UgVHJhdmVyc2VfUHJvYyBpbnN0ZWFkIG9mCglUcmF2ZXJzZV9GdW5jLCBiZWNhdXNlIHRoZSBmb3JtZXIgYWxyZWFkeSB0YWtlcyBjYXJlIG9mIGRpc2NhcmRpbmcgdGhlCglyZXN1bHQuCgoJKiBlcnJvdXQuYWRiIChGaXJzdF9Ob2RlKTogVXNlIFRyYXZlcnNlX1Byb2MgaW5zdGVhZCBvZiBUcmF2ZXJzZV9GdW5jLAoJYmVjYXVzZSB0aGUgZm9ybWVyIGFscmVhZHkgdGFrZXMgY2FyZSBvZiBkaXNjYXJkaW5nIHRoZSByZXN1bHQuCgkoUmVtb3ZlX1dhcm5pbmdfTWVzc2FnZXMpOiBVc2UgYXBwcm9wcmlhdGUgc3VidHlwZSBmb3IgU3RhdHVzIGFuZAoJRGlzY2FyZCAKCjIwMDctMTItMTkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoTm90X09LX0Zvcl9CYWNrZW5kKTogQSBjb21wb25lbnQgb2YgYSBwcml2YXRlIHR5cGUgd2l0aAoJZGlzY3JpbWluYW50cyBmb3JjZXMgZXhwYW5zaW9uIG9mIHRoZSBhZ2dyZWdhdGUgaW50byBhc3NpZ25tZW50cy4KCShJbml0X1JlY29yZF9Db250cm9sbGVyKTogIElmIHRoZSB0eXBlIG9mIHRoZSBhZ2dyZWdhdGUgaXMgdW50YWdnZWQgYW5kCglpcyBub3QgaW5oZXJlbnRseSBsaW1pdGVkLCB0aGUgcmVjb3JkIGNvbnRyb2xsZXIgaXMgbm90IGxpbWl0ZWQgZWl0aGVyLgoKMjAwNy0xMi0xOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfYXR0ci5hZGIgKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UsIGNhc2UgU2l6ZSk6IEZpeCBlcnJvciBpbgoJaGFuZGxpbmcgY29tcGlsZSB0aW1lIGtub3duIHNpemUgb2YgcmVjb3JkIG9yIGFycmF5IChjYXNlIG9mIGZyb250IGVuZAoJbGF5b3V0IGFjdGl2ZSwgZS5nLiBpbiBHTkFBTVApLgoKMjAwNy0xMi0xOSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoMy5hZGIgKEV4cGFuZF9OX09iamVjdF9EZWNsYXJhdGlvbik6IENvbXBsZXRlIHRoZSBjaXJjdWl0cnkKCXRoYXQgZm9yY2VzIHRoZSBjb25zdHJ1Y3Rpb24gb2Ygc3RhdGljIGRpc3BhdGNoIHRhYmxlcyBpbiBjYXNlIG9mCglyZWNvcmQgc3VidHlwZXMuCgoyMDA3LTEyLTE5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDkuYWRiIChOdWxsX1N0YXRlbWVudHMpOiBNb3ZlZCB0byBsaWJyYXJ5IGxldmVsCgkoVHJpdmlhbF9BY2NlcHRfT0spOiBOZXcgZnVuY3Rpb24KCShFeHBhbmRfQWNjZXB0X0RlY2xhcmF0aW9uKTogVXNlIFRyaXZpYWxfQWNjZXB0X09LCgkoRXhwYW5kX05fQWNjZXB0X1N0YXRlbWVudCk6IFVzZSBUcml2aWFsX0FjY2VwdF9PSwoKMjAwNy0xMi0xOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfcGFrZC5hZGIgKEV4cGFuZF9CaXRfUGFja2VkX0VsZW1lbnRfU2V0KTogRml4IHBhY2tlZCBhcnJheSB0eXBlCglpbiBjb21wbGV4IGNhc2Ugd2hlcmUgYXJyYXkgaXMgVm9sYXRpbGUuCgoyMDA3LTEyLTE5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfUmVjb3JkX1R5cGUsIENoZWNrX0N1cnJlbnRfSW5zdGFuY2UpOiBJbXBsZW1lbnQKCXByb3Blcmx5IHRoZSBBZGEyMDA1IHJ1bGVzIGNvbmNlcm5pbmcgd2hlbiB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiBhCglyZWNvcmQgdHlwZSBpcyBhbGlhc2VkLgoKMjAwNy0xMi0xOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoMy5hZGIgKFBfUmVjb3JkX0RlY2xhcmF0aW9uKTogR3VhcmQgYWdhaW5zdCBjYXNjYWRlZCBlcnJvcnMgaW4KCW1hbmdsZWQgZGVjbGFyYXRpb24KCShQX1R5cGVfRGVjbGFyYXRpb24pOiBEaWFnbm9zZSBtaXN1c2Ugb2YgImFic3RyYWN0IiBpbiB1bnRhZ2dlZCByZWNvcmQKCWRlY2xhcmF0aW9ucy4KCShQX1ZhcmlhbnRfUGFydCk6IENsZWFuZXIgcGF0Y2ggZm9yIHBhcmVudGhlc2l6ZWQgZGlzY3JpbWluYW50CgoyMDA3LTEyLTE5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai1hdHRyLmFkYiAoUGFja2FnZV9Ob2RlX0lkX09mKTogUmV0dXJucyBVbmtub3duX1BhY2thZ2Ugd2hlbgoJcGFja2FnZSBpcyBub3Qga25vd24KCgkqIHByai1hdHRyLmFkcyAoVW5rbm93bl9QYWNrYWdlKTogTmV3IGNvbnN0YW50CglEbyBub3QgY3Jhc2ggd2hlbiBhbiB1bmtub3duIHBhY2thZ2UgaXMgaW4gc2V2ZXJhbCBwcm9qZWN0cwoKCSogcHJqLWRlY3QuYWRiIChQYXJzZV9QYWNrYWdlX0RlY2xhcmF0aW9uKTogTWFyayBhbiB1bmtub3duIHBhY2thZ2UgYXMKCWlnbm9yZWQKCgkqIHByai1ubXNjLmFkYiAoQ2hlY2spOiBSZW1vdmUgb2Jzb2xldGUgY29kZSByZWxhdGVkIHRvIG5vIGxvbmdlcgoJZXhpc3RpbmcgcGFja2FnZSBMYW5ndWFnZV9Qcm9jZXNzaW5nLgoKMjAwNy0xMi0xOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCglQUiBhZGEvMTU4MDMsIGFkYS8xNTgwNQoJKiBzZW1fY2g2LmFkYiwgc2VtX2NoMy5hZGIgKENvbnN0cmFpbl9BY2Nlc3MpOiBJbiBBZGEyMDA1LCBkaWFnbm9zZQoJaWxsZWdhbCBhY2Nlc3Mgc3VidHlwZXMgd2hlbiB0aGVyZSBpcyBhIGNvbnN0cmFpbmVkIHBhcnRpYWwgdmlldy4KCShDaGVja19Gb3JfUHJlbWF0dXJlX1VzYWdlKTogTmV3IHByb2NlZHVyZSBpbnNpZGUKCUFjY2Vzc19TdWJwcm9ncmFtX0RlY2xhcmF0aW9uIGZvciBjaGVja2luZyB0aGF0IGFuIGFjY2Vzcy10by1zdWJwcm9ncmFtCgl0eXBlIGRvZXNuJ3QgcmVmZXJlbmNlIGl0cyBvd24gbmFtZSB3aXRoaW4gYW55IGZvcm1hbCBwYXJhbWV0ZXJzIG9yCglyZXN1bHQgdHlwZSAoaW5jbHVkaW5nIHdpdGhpbiBuZXN0ZWQgYW5vbnltb3VzIGFjY2VzcyB0eXBlcykuCgkoQWNjZXNzX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBBZGQgY2FsbCB0byBDaGVja19Gb3JfUHJlbWF0dXJlX1VzYWdlLgoJKFNlbV9DaDMuQW5hbHl6ZV9PYmplY3RfRGVjbGFyYXRpb24sIFNlbV9jaDYuUHJvY2Vzc19Gb3JtYWxzKTogaWYgdGhlCgljb250ZXh0IGlzIGFuIGFjY2Vzc190b192YXJpYWJsZSwgdGhlIGV4cHJlc3Npb24gY2Fubm90IGJlIGFuCglhY2Nlc3NfdG9fY29uc3RhbnQuCgoyMDA3LTEyLTE5ICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9Db25jYXRlbmF0aW9uX1Jlc3QpOiBOZXcgcHJvY2VkdXJlLgoJKEFuYWx5emVfQ29uY2F0ZW5hdGlvbik6IFVzZSBpdGVyYXRpb24gaW5zdGVhZCBvZiByZWN1cnNpb24gaW4gb3JkZXIKCXRvIGF2b2lkIHJ1bm5pbmcgb3V0IG9mIHN0YWNrIHNwYWNlIGZvciBkZWVwbHkgbmVzdGVkIGNvbmNhdGVuYXRpb25zLgoKMjAwNy0xMi0xOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRiIChBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBEaWFnbm9zZSBpbGxlZ2FsIHJlbmFtaW5ncwoJd2hvc2UgcmVuYW1lZCBlbnRpdHkgaXMgYSBzdWJwcm9ncmFtIHRoYXQgcmVxdWlyZXMgb3ZlcnJpZGluZy4KCShQcmVtYXR1cmVfVXNhZ2UpOiBUZXN0IGZvciB0aGUgY2FzZSBvZiBOX0Z1bGxfVHlwZV9EZWNsYXJhdGlvbiB3aGVuCglpc3N1aW5nIGFuIGVycm9yIGZvciBwcmVtYXR1cmUgdXNhZ2UgYW5kIGlzc3VlIGEgbWVzc2FnZSB0aGF0IHNheXMKCSd0eXBlJyByYXRoZXIgdGhhbiAnb2JqZWN0Jy4KCjIwMDctMTItMTkgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCglQUiBhZGEvMzQxNDkKCSogc2VtX2Rpc3AuYWRiIChDaGVja19EaXNwYXRjaGluZ19DYWxsKTogQXVnbWVudCBleGlzdGluZyB0ZXN0IGZvcgoJcHJlc2VuY2Ugb2YgYSBzdGF0aWNhbGx5IHRhZ2dlZCBvcGVyYW5kIChQcmVzZW50IChTdGF0aWNfVGFnKSkgd2l0aAoJdGVzdCBmb3IgSW5kZXRlcm1fQW5jZXN0b3JfQ2FsbCB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgdG8gcHJvcGFnYXRlCgl0aGUgc3RhdGljIHRhZyB0byB0YWctaW5kZXRlcm1pbmF0ZSBvcGVyYW5kcyAod2hpY2ggZm9yY2VzIGRpc3BhdGNoaW5nCglvbiBzdWNoIGNhbGxzKS4KCShDaGVja19Db250cm9sbGluZ19Gb3JtYWxzKTogQWRhMjAwNSwgYWNjZXNzIHBhcmFtZXRlcnMgY2FuIGhhdmUKCWRlZmF1bHRzLgoJKEFkZF9EaXNwYXRjaGluZ19PcGVyYXRpb24sIENoZWNrX09wZXJhdGlvbl9Gcm9tX1ByaXZhdGVfVmlldyk6IGRvCglub3QgaW5zZXJ0IHN1YnByb2dyYW0gaW4gbGlzdCBvZiBwcmltaXRpdmUgb3BlcmF0aW9ucyBpZiBhbHJlYWR5IHRoZXJlLgoKMjAwNy0xMi0xOSAgVHJpc3RhbiBHaW5nb2xkICA8Z2luZ29sZEBhZGFjb3JlLmNvbT4KCgkqIHV0aWxzLmMgKGNyZWF0ZV92YXJfZGVjbF8xKTogY2FsbCByZXN0X29mX2RlY2xfY29tcGlsYXRpb24gb25seSBmb3IKCWdsb2JhbCB2YXJpYWJsZS4KCjIwMDctMTItMTkgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJUGFydCBvZiBQUiBhZGEvMzM2ODgKCSogZ2VuLXNvY2Nvbi5jOiBBZGQgY29uc3RhbnQgSVBfUEtUSU5GTyB0byBhbGxvdyBnZXR0aW5nIGFuY2lsbGFyeQoJZGF0YWdyYW0gaW5mbyBvbiBMaW51eC4KCjIwMDctMTItMTkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZWdwci5hZGIgKENoZWNrX0NvbXBpbGF0aW9uX05lZWRlZCk6IE5vcm1hbGl6ZSBDX1NvdXJjZV9QYXRoIHNvCgl0aGF0IHRoZSBzb3VyY2UgcGF0aCBuYW1lIGlzIGFsd2F5cyBmb3VuZCBpbiB0aGUgZGVwZW5kZW5jaWVzLgoKMjAwNy0xMi0xOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnbmF0X3JtLnRleGksIGduYXRfdWduLnRleGk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIG9mIC1nbmF0dy5vCglGaXggbmFtZSBvZiBXaWRlX1dpZGVfTGF0aW5fMS85IGZpbGUgbmFtZXMKCUFkZCBkb2N1bWVudGF0aW9uIGZvciBBZGEuRXhjZXB0aW9ucy5MYXN0X0NoYW5jZV9IYW5kbGVyIChhLWVsY2hoYS5hZHMpCglBZGQgbWlzc2luZyBkb2N1bWVudGF0aW9uIGZvciBBZGEuV2lkZV9bV2lkZV9dQ2hhcmFjdGVycy5Vbmljb2RlCglBZGQgbWlzc2luZyBkb2N1bWVudGF0aW9uIGZvciBBZGEuQ29tbWFuZF9MaW5lLlJlc3BvbnNlX0ZpbGUKCVVwZGF0ZSBsaXN0IG9mIHdhcm5pbmcgbGV0dGVycyBmb3IgV2FybmluZ3MgcHJhZ21hCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgcHJhZ21hIFVubW9kaWZpZWQKCjIwMDctMTItMTkgIFNhbXVlbCBUYXJkaWV1ICA8c2FtQHJmYzExNDkubmV0PgoKCSogTWFrZWZpbGUuaW46IEFkZCBzLXRhc2luZi5hZFtic10gc3Vic3RpdHV0aW9ucyBmb3Igc2g0LWxpbnV4IHRhcmdldC4KCjIwMDctMTItMTcgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtdnh3b3JrLWFscGhhLmFkczogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgoyMDA3LTEyLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZ25hdDEsIGduYXRiaW5kKTogUGFzcyBBTExfQ0ZMQUdTIG9uIHRoZSBsaW5rIGxpbmUuCgoyMDA3LTEyLTEzICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCglQUiBhZGEvMzQzNjAKCSogTWFrZWZpbGUuaW46IENoYW5nZSB0d28gb2NjdXJyZW5jZXMgb2YgbWxpYi10Z3QuYWRiIGJ5IGNvcnJlY3QgbmFtZQoJbWxpYi10Z3Qtc3BlY2lmaWMuYWRiLgoKMjAwNy0xMi0xMyAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogdHJhbnMuYyAoQXR0cmlidXRlX3RvX2dudSk6IENoZWNrIGZvciB2aW9sYXRpb25zIG9mIHRoZQoJTm9fSW1wbGljaXRfRHluYW1pY19Db2RlIHJlc3RyaWN0aW9uLiBUaGlzIGNoZWNraW5nIHVzZWQgdG8gYmUgZG9uZSBpbgoJdGhlIGZyb250IGVuZCwgYnV0IGlzIG1vdmVkIGhlcmUgc28gd2UgY2FuIG1ha2UgaXQgbW9yZSBhY2N1cmF0ZS4KCjIwMDctMTItMTMgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5jIChfX2duYXRfcHRocmVhZF9zZXRhZmZpbml0eV9ucCk6IE5ldyByb3V0aW5lLiBBIGR1bW15CgkgdmVyc2lvbiBpcyBwcm92aWRlZCBmb3Igb2xkZXIgR05VL0xpbnV4IGRpc3RyaWJ1dGlvbiBub3QKCSBzdXBwb3J0aW5nIHRocmVhZCBhZmZpbml0eSBzZXRzLgoJCgkqIHMtb3NpbnRlLWxpbnV4LmFkcyAoU0NfTlBST0NFU1NPUlNfT05MTik6IE5ldyBjb25zdGFudCBmb3Igc3lzY29uZgoJY2FsbC4KCShiaXRfZmllbGQpOiBOZXcgcGFja2VkIGJvb2xlYW4gdHlwZSB1c2VkIGJ5IGNwdV9zZXRfdC4KCShjcHVfc2V0X3QpOiBOZXcgdHlwZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBDIHR5cGUgd2l0aAoJdGhlIHNhbWUgbmFtZS4gTm90ZSB0aGF0IG9uIHRoZSBBZGEgc2lkZSB3ZSB1c2UgYSBiaXQKCWZpZWxkIGFycmF5IGZvciB0aGUgYWZmaW5pdHkgbWFzay4gVGhlcmUgaXMgbm90IG5lZWQKCWZvciB0aGUgQyBtYWNybyBmb3Igc2V0dGluZyBpbmRpdmlkdWFsIGJpdC4KCShwdGhyZWFkX3NldGFmZmluaXR5X25wKTogTmV3IGltcG9ydGVkIHJvdXRpbmUuCgkKCSogcy10YXByb3AtbGludXguYWRiIChFbnRlcl9UYXNrKTogQ2hlY2sgdGhhdCB0aGUgQ1BVIGFmZmluaXR5IG1hc2sgaXMKCW5vIG51bGwuCgkoQ3JlYXRlX1Rhc2spOiBTZXQgdGhlIHByb2Nlc3NvciBhZmZpbml0eSBtYXNrIGlmIGluZm9ybWF0aW9uCglpcyBwcmVzZW50LgoJCgkqIHMtdGFzaW5mLWxpbnV4LmFkcywgcy10YXNpbmYtbGludXguYWRiOiBOZXcgZmlsZXMuCgkKMjAwNy0xMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzLW9zaW50ZS1seW54b3MtMy5hZHMsIHMtb3NpbnRlLWhwdXguYWRzLCBzLW9zaW50ZS1zb2xhcmlzLXBvc2l4LmFkcywgCglzLW9zaW50ZS1mcmVlYnNkLmFkcywgcy1vc2ludGUtbHlueG9zLmFkcywgcy1vc2ludGUtdHJ1NjQuYWRzLCAKCXMtb3NpbnRlLW1pbmd3LmFkcywgcy1vc2ludGUtYWl4LmFkcywgcy1vc2ludGUtaHB1eC1kY2UuYWRzLCAKCXMtb3NpbnRlLWlyaXguYWRzLCBzLW9zaW50ZS1zb2xhcmlzLmFkcywgcy1pbnRtYW4tdm1zLmFkYiwKCXMtb3NpbnRlLXZtcy5hZHMsIHMtb3NpbnRlLXZ4d29ya3M2LmFkcywgcy1vc2ludGUtdnh3b3Jrcy5hZHMsCglzLWF1eGRlYy5hZHMsIHMtYXV4ZGVjLXZtc182NC5hZHMsIHMtb3NpbnRlLWRhcndpbi5hZHMsIAoJcy10YXByb3Atdm1zLmFkYiwgcy1pbnRlcnItc2lnYWN0aW9uLmFkYiwgcy1vc2ludGUtbGludXgtaHBwYS5hZHMsIAoJaS12eHdvcmsteDg2LmFkcywgcy10cG9wZGUtdm1zLmFkczogQWRkIG1pc3NpbmcgcHJhZ21hIENvbnZlbnRpb24gQwoJZm9yIHN1YnByb2dyYW0gcG9pbnRlcnMuCgoJKiBnLWN0cmxfYy5hZGI6IE5ldyBmaWxlLgoKCSogZy1jdHJsX2MuYWRzIChJbnN0YWxsX0hhbmRsZXIpOiBOZXcgYm9keS4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9TdWJwcm9ncmFtKTogVXNlIG5ldyBmbGFnIEhhc19QcmFnbWFfSW5saW5lX0Fsd2F5cwoJaW5zdGVhZCBvZiBvYnNvbGV0ZSBmdW5jdGlvbiBJc19BbHdheXNfSW5saW5lZC4KCShGcmVlemVfRW50aXR5KTogY2hlY2sgZm9yIHRhZ2dlZCB0eXBlIGluIGltcG9ydGVkIEMgc3VicHJvZ3JhbQoJKEZyZWV6ZV9FbnRpdHkpOiBjaGVjayBmb3IgOC1iaXQgYm9vbGVhbiBpbiBpbXBvcnRlZCBDIHN1YnByb2dyYW0KCShGcmVlemVfRW50aXR5KTogY2hlY2sgZm9yIGNvbnZlbnRpb24gQWRhIHN1YnByb2dyYW0gcG9pbnRlciBpbgoJaW1wb3J0ZWQgQyBzdWJwcm9ncmFtLgoJKEZyZWV6ZV9GaXhlZF9Qb2ludF9UeXBlKTogSW4gdGhlIGNhc2Ugb2YgYSBiYXNlIHR5cGUgd2hlcmUgdGhlIGxvdwoJYm91bmQgd291bGQgYmUgY2hvcHBlZCBvZmYgYW5kIGdvIGZyb20gbmVnYXRpdmUgdG8gemVybywgZm9yY2UKCUxvdmFsX0V4Y2xfRVAgdG8gYmUgdGhlIHNhbWUgYXMgTG92YWxfSW5jbF9FUCAodGhlIGluY2x1ZGVkIGxvd2VyCglib3VuZCkgc28gdGhhdCB0aGUgc2l6ZSBjb21wdXRhdGlvbiBmb3IgdGhlIGJhc2UgdHlwZSB3aWxsIHRha2UKCW5lZ2F0aXZlIHZhbHVlcyBpbnRvIGFjY291bnQuCgoyMDA3LTEyLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoJICAgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCSAgICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgoKCSogc3lzdGVtLWxpbnV4LWlhNjQuYWRzLCBzeXN0ZW0tZnJlZWJzZC14ODYuYWRzLCBzeXN0ZW0tbHlueG9zLXBwYy5hZHMsIAoJc3lzdGVtLWx5bnhvcy14ODYuYWRzLCBzeXN0ZW0tbGludXgteDg2XzY0LmFkcywgc3lzdGVtLXRydTY0LmFkcywgCglzeXN0ZW0tYWl4LmFkcywgc3lzdGVtLXZ4d29ya3Mtc3BhcmN2OS5hZHMsIHN5c3RlbS1zb2xhcmlzLXg4Ni5hZHMsIAoJc3lzdGVtLWlyaXgtbzMyLmFkcywgc3lzdGVtLWlyaXgtbjMyLmFkcywgc3lzdGVtLWhwdXguYWRzLCAKCXN5c3RlbS12eHdvcmtzLW02OGsuYWRzLCBzeXN0ZW0tbGludXgteDg2LmFkcywgc3lzdGVtLXZ4d29ya3MtbWlwcy5hZHMsIAoJc3lzdGVtLXNvbGFyaXMtc3BhcmMuYWRzLCBzeXN0ZW0tc29sYXJpcy1zcGFyY3Y5LmFkcywgc3lzdGVtLXZtcy5hZHMsIAoJc3lzdGVtLW1pbmd3LmFkcywgc3lzdGVtLXZtcy16Y3guYWRzLCBzeXN0ZW0tdnh3b3Jrcy1wcGMuYWRzLCAKCXN5c3RlbS12eHdvcmtzLWFybS5hZHMsIHN5c3RlbS1kYXJ3aW4teDg2LmFkcywgc3lzdGVtLmFkcywKCXN5c3RlbS12bXNfNjQuYWRzLCBzeXN0ZW0tZGFyd2luLXBwYy5hZHMsIHN5c3RlbS12eHdvcmtzLXg4Ni5hZHMsIAoJc3lzdGVtLWxpbnV4LXBwYy5hZHMsIHN5c3RlbS1saW51eC1ocHBhLmFkcywgc3lzdGVtLWhwdXgtaWE2NC5hZHMsCglzeXN0ZW0tdm1zLWlhNjQuYWRzIChTdGFja19DaGVja19MaW1pdHMpOiBOZXcgdGFyZ2V0IHBhcmFtZXRlci4KCShBbHdheXNfQ29tcGF0aWJsZV9SZXApOiBOZXcgZmxhZyB0byBjb250cm9sIHRyYW1wb2xpbmVzIGdsb2JhbGx5LgoJKER5bmFtaWNfVHJhbXBvbGluZXNfVXNlZCk6IE5ldyBmbGFnIGZvciBpbXBsZW1lbnRpbmcgdGhlCglOb19JbXBsaWNpdF9EeW5hbWljX0NvZGUgcmVzdHJpY3Rpb24gbW9yZSBjb3JyZWN0bHkgKG5vdCB5ZXQgdXNlZCwKCWFuZCBub3QgeWV0IHNldCBjb3JyZWN0bHkgZm9yIHNvbWUgdGFyZ2V0cykuCgoJKiBzLXRhcHJvcC12eHdvcmtzLmFkYjogVXNlIHN0YWNrIGxpbWl0IG1ldGhvZCBvZiBzdGFjayBjaGVja2luZy4KCVNpbXBseSBpbmRpcmVjdGx5IGNhbGwgcy1zdGNob3Agd2hlbiBhIHRhc2sgaXMgY3JlYXRlZC4KCgkqIGFsaS5hZHM6IAoJTmV3IGZsYWcgYWRkZWQ6IFN0YWNrX0NoZWNrX1N3aXRjaF9TZXQgd2hpY2ggaXMgc2V0IHdoZW4gJy1mc3RhY2stY2hlY2snCglhcHBlYXJzIGFzIGFuIGFyZ3VtZW50IChlbnRyaWVzIEEpIGluIGFuIEFMSSBmaWxlLgoKCSogZmUuaCAoU3RhY2tfQ2hlY2tfTGltaXRzKTogRGVjbGFyZSBuZXcgdGFyZ2V0IHBhcmFtZXRlci4KCShDaGVja19JbXBsaWNpdF9EeW5hbWljX0NvZGVfQWxsb3dlZCk6IE5ldyBwcm9jZWR1cmUuCgoJKiBpbml0LmM6IERlY2xhcmUgX19nbmF0X3NldF9zdGFja19saW1pdF9ob29rIGZvciBWeFdvcmtzIGtlcm5lbCBSVFMuCglUaGlzIHZhcmlhYmxlIGlzIGRlY2xhcmVkIGluIEMgdG8gYmUgc3VyZSBub3Qgc3ViamVjdCB0byBlbGFib3JhdGlvbgoJY29kZS4KCShfX2duYXRfbWFwX3NpZ25hbCwgVnhXb3Jrcyk6IEluIGtlcm5lbCBtb2RlLCBtYXAgU0lHSUxMIHRvCglTdG9yYWdlX0Vycm9yLgoKCSogdGFyZ3Bhcm0uYWRzLCB0YXJncGFybS5hZGIgKFN0YWNrX0NoZWNrX0xpbWl0cyk6IE5ldyBwYXJhbWV0ZXIuCgkoQWx3YXlzX0NvbXBhdGlibGVfUmVwLCBEeW5hbWljX1RyYW1wb2xpbmVzX1VzZWQpOiBOZXcgcGFyYW1ldGVycy4KCgkqIHMtc3RjaG9wLmFkczogQWRkIGNvbW1lbnRzLgoKCSogcy1zdGNob3Atdnh3b3Jrcy5hZGI6IFBhY2thZ2UgYWxtb3N0IGZ1bGx5IHJld3JpdHRlbiB0byB1c2Ugc3RhY2sKCWxpbWl0IG1ldGhvZCBvZiBzdGFjayBjaGVja2luZy4KCgkqIHMtc3RjaG9wLWxpbWl0LmFkczogTmV3IGZpbGUuCgoyMDA3LTEyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDUuYWRiLCBzLXRhc2tpbi5hZGIsIGEtY2lvcm1hLmFkYiwgYS1jb29ybWEuYWRiLCBhLWNvaGFtYS5hZGIsIAoJYS1jaWhhbWEuYWRiLCBnLWF3ay5hZGIsIAoJcy1pbm1hb3AtcG9zaXguYWRiOiBVcGRhdGUgaGFuZGxpbmcgb2YgYXNzaWduZWQgdmFsdWUvdW5yZWZlcmVuY2VkCgl3YXJuaW5ncwoKCSogZXhwX3NtZW0uYWRiOiBVcGRhdGUgaGFuZGxpbmcgb2YgYXNzaWduZWQgdmFsdWUvdW5yZWZlcmVuY2VkIHdhcm5pbmdzCgoJKiBzZW0uYWRiOiBVcGRhdGUgaGFuZGxpbmcgb2YgYXNzaWduZWQgdmFsdWUvdW5yZWZlcmVuY2VkIHdhcm5pbmdzCgoJKiBhLWV4ZXhwci1nY2MuYWRiOiBBZGQgYSBwcmFnbWEgd2FybmluZ3Mgb2ZmIGZvciBib29sZWFuIHJldHVybgoKCSogbGliLXhyZWYuYWRzOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIGsgeHJlZiB0eXBlCgoJKiBsaWIteHJlZi5hZGI6IAoJVXBkYXRlIGhhbmRsaW5nIG9mIGFzc2lnbmVkIHZhbHVlL3VucmVmZXJlbmNlZCB3YXJuaW5ncwoJKEdlbmVyYXRlX1JlZmVyZW5jZSk6IFdhcm5pbmcgZm9yIHJlZmVyZW5jZSB0byBlbnRpdHkgZm9yIHdoaWNoIGEKCXByYWdtYSBVbnJlZmVyZW5jZWQgaGFzIGJlZW4gZ2l2ZW4gc2hvdWxkIGJlIHVuY29uZGl0aW9uYWwuCglJZiB0aGUgZW50aXR5IGlzIGEgZGlzY3JpbWluYWwsIG1hcmsgdGhlIG9yaWdpbmFsCglkaXNjcmltaW5hbnQgYXMgcmVmZXJlbmNlZC4KCgkqIHNlbV93YXJuLmFkcywgc2VtX3dhcm4uYWRiCgkoQ2hlY2tfT25lX1VuaXQpOiBUZXN0IFJlbmFtZWRfSW5fU3BlYyB0byBjb250cm9sIGdpdmluZyB3YXJuaW5nIGZvcgoJbm8gZW50aXRpZXMgcmVmZXJlbmNlZCBpbiBwYWNrYWdlCgkoQ2hlY2tfT25lX1VuaXQpOiBEb24ndCBnaXZlIG1lc3NhZ2UgYWJvdXQgbm8gZW50aXRpZXMgcmVmZXJlbmNlZCBpbgoJYSBwYWNrYWdlIGlmIGEgcHJhZ21hIFVucmVmZXJlbmNlZCBoYXMgYXBwZWFyZWQuCglIYW5kbGUgbmV3IHdhcm5pbmcgZmxhZyAtZ25hdHcuYS8tZ25hdHcuQQoJVXBkYXRlIGhhbmRsaW5nIG9mIGFzc2lnbmVkIHZhbHVlL3VucmVmZXJlbmNlZCB3YXJuaW5ncwoKCSogYXRyZWUuaDogQWRkIGZsYWdzIHVwIHRvIEZsYWcyNDcKCShGbGFnMjMxKTogTmV3IG1hY3JvLgoKMjAwNy0xMi0xMyAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5oOiAoX19nbmF0X3BsaXN0X2luaXQpOiBOb3QgZGVmaW5lZCBmb3IgUlRYLgoKCSogaW5pdGlhbGl6ZS5jIChfX2duYXRfaW5pdGlhbGl6ZSk6IERvIG5vdCBjYWxsIF9fZ25hdF9wbGlzdF9pbml0IGZvcgoJUlRYIHN5c3RlbXMuCgoJKiBNYWtlZmlsZS5pbjogQWRkIG5ldyBmaWxlcyBzLXRhc2luZi1saW51eC5hZHMgYW5kIHMtdGFzaW5mLWxpbnV4LmFkYi4KCShMSUJHTkFUX1RBUkdFVF9QQUlSUywgTUlTQ0xJQiwgVEhSRUFEU0xJQiwKCUVYVFJBX0dOQVRSVExfTk9OVEFTS0lOR19PQkpTLCBFWFRSQV9HTkFUUlRMX1RBU0tJTkdfT0JKUywKCUdOQVRMSUJfU0hBUkVEIGZvciBSVFggcnVuIHRpbWUpOiBVc2UgdGhlIHZlcnNpb25zIHJlcXVpcmVkIGJ5IFJUWC4KCgkqIG1pbmd3MzIuaDogCglEbyBub3QgZGVmaW5lIEdOQVRfVU5JQ09ERV9TVVBQT1JUIGZvciBSVFggc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZC4KCgkqIHN5c2RlcC5jICh3aW5mbHVzaF9mdW5jdGlvbiBmb3IgUlRYKTogUHJvY2VkdXJlIHRoYXQgZG9lcyBub3RoaW5nCglzaW5jZSB3ZSBvbmx5IGhhdmUgcHJvYmxlbXMgd2l0aCBXaW5kb3dzIDk1Lzk4LCB3aGljaCBhcmUgbm90CglzdXBwb3J0ZWQgYnkgUlRYLgoJKF9fZ25hdF90dHluYW1lKTogUmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgb24gTnVjbGV1cywganVzdCBhcwoJZG9uZSBvbiB2eHdvcmtzLgoKMjAwNy0xMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLXRleHRpby5hZGIsIGEtdGV4dGlvLmFkczogCglFeHRlbnNpdmUgY2hhbmdlcyB0byBwcml2YXRlIHBhcnQgZm9yIHdpZGUgY2hhcmFjdGVyIGVuY29kaW5nCgoJKiBhLXdpdGVpby5hZGIsIGEtd2l0ZWlvLmFkcywgYS16dGV4aW8uYWRzLCBhLXp0ZXhpby5hZGIKCShMb29rX0FoZWFkKTogRml4IG1pc2hhbmRsaW5nIG9mIGVuY29kZWQgc2VxdWVuY2VzCglNb3ZlIGRlY2xhcmF0aW9uIG9mIFdjaF9Db24gdG8gcHJpdmF0ZSBwYXJ0IChzaG91bGQgbm90IGJlIHZpc2libGUpCgoJKiBhbGkuYWRiIChTY2FuX0FMSSk6IFNldCBkZWZhdWx0IGVuY29kaW5nIG1ldGhvZCB0byBicmFja2V0cyBpbnN0ZWFkIG9mCglVVEYtOC4gUHJvYmFibHkgdGhpcyBpcyBuZXZlciB1c2VkLCBidXQgaWYgaXQgaXMsIGJyYWNrZXRzIGlzCgljbGVhcmx5IGNvcnJlY3QuCgoJKiBiaW5kZ2VuLmFkYiAoR2V0X1dDX0VuY29kaW5nKTogTmV3IHByb2NlZHVyZSB0byBwcm9wZXJseSBoYW5kbGUKCXNldHRpbmcgd2lkZSBjaGFyYWN0ZXIgZW5jb2RpbmcgZm9yIG5vIG1haW4gcHJvZ3JhbSBjYXNlIGFuZCB3aGVuCgllbmNvZGluZyBpcyBzcGVjaWZpZWQgdXNpbmcgLVc/CglJbml0aWFsaXplIHN0YWNrIGxpbWl0IG9mIGVudmlyb25tZW50IHRhc2sgaWYgc3RhY2sgbGltaXQgbWV0aG9kIG9mCglzdGFjayBjaGVja2luZyBpcyBlbmFibGVkLgoJKEdlbl9BZGFpbml0X0FkYSk6IFVzZSBHZXRfV0NfRW5jb2RpbmcgdG8gb3V0cHV0IGVuY29kaW5nIG1ldGhvZAoJKEdlbl9BZGFpbml0X0MpOiBVc2UgR2V0X1dDX0VuY29kaW5nIHRvIG91dHB1dCBlbmNvZGluZyBtZXRob2QKCShHZXRfTWFpbl9Vbml0X05hbWUpOiBOZXcgZnVuY3Rpb24uCgkoR2VuX0FkYWluaXRfQWRhKTogQWRkIGNhbGwgdG8gbWFpbiBwcm9ncmFtIGZvciAuTkVUIHdoZW4gbmVlZGVkLgoJKEdlbl9PdXRwdXRfRmlsZSk6IFNldCBCaW5kX01haW5fUHJvZ3JhbSB0byBUcnVlIGZvciAuTkVUCgoJKiBiaW5kdXNnLmFkYjogQWRkIGxpbmUgZm9yIC1XeCBzd2l0Y2gKCgkqIHMtd2NoY29uLmFkYiwgcy13Y2hjb24uYWRzOiAoSXNfU3RhcnRfT2ZfRW5jb2RpbmcpOiBOZXcgZnVuY3Rpb24KCUFkZCBjb21tZW50cwoJQWRkIG5ldyB1c2VmdWwgY29uc3RhbnQgV0NfTG9uZ2VzdF9TZXF1ZW5jZXMKCgkqIHN3aXRjaC1iLmFkYjogQ2xlYW4gdXAgaGFuZGxpbmcgb2YgLVd4IHN3aXRjaAoJRm9yIC1nbmF0V3gsIHNldCBXaWRlX0NoYXJhY3Rlcl9FbmNvZGluZ19NZXRob2RfU3BlY2lmaWVkCgoJKiBzd2l0Y2gtYy5hZGI6IC1nbmF0ZyBhY3RpdmF0ZXMgd2FybmluZyBvbiBhc3NlcnRpb24gZXJyb3JzCglGb3IgLWduYXRXeCwgc2V0IFdpZGVfQ2hhcmFjdGVyX0VuY29kaW5nX01ldGhvZF9TcGVjaWZpZWQKCgkqIHMtd2NoY29uLmFkYjogKElzX1N0YXJ0X09mX0VuY29kaW5nKTogTmV3IGZ1bmN0aW9uCgoyMDA3LTEyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBhLW5nY290eS5hZGI6IE5ldyBwcmFnbWEgRmFzdF9NYXRoCgoJKiBvcHQuYWRiOiBOZXcgcHJhZ21hIEZhc3RfTWF0aAoKCSogcGFyLXByYWcuYWRiOiAKCUFkZCBJbXBsZW1lbnRlZF9CeV9FbnRyeSB0byB0aGUgbGlzdCBvZiBwcmFnbWFzIHdoaWNoIGRvIG5vdCByZXF1aXJlIGFueQoJc3BlY2lhbCBwcm9jZXNzaW5nLgoJKEZhdm9yX1RvcF9MZXZlbCk6IE5ldyBwcmFnbWEuCglOZXcgcHJhZ21hIEZhc3RfTWF0aAoKCSogZXhwX2F0dHIuYWRiOiBNb3ZlIFdpZGVfW1dpZGVfXUltYWdlIHJvdXRpbmVzIHRvIEV4cF9JbWd2CgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSwgRGlzcGxhY2VfQWxsb2NhdG9yX1BvaW50ZXIsCglFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBUYWtlIGludG8gYWNjb3VudCBWTV9UYXJnZXQKCShFeHBhbmRfQXR0cmlidXRlLCBjYXNlICdJZGVudGl0eSk6ICBIYW5kbGUgcHJvcGVybHkgdGhlIGNhc2Ugd2hlcmUKCXRoZSBwcmVmaXggaXMgYSB0YXNrIGludGVyZmFjZS4KCU5ldyBwcmFnbWEgRmFzdF9NYXRoCgoJKiBwYXIuYWRiIChOZXh0X1Rva2VuX0lzKTogTmV3IGZ1bmN0aW9uCgkoUF9QcmFnbWEpOiBBZGQgU2tpcHBpbmcgcGFyYW1ldGVyCgkoVV9MZWZ0X1BhcmVuKTogTmV3IHByb2NlZHVyZQoJKFVfUmlnaHRfUGFyZW4pOiBOZXcgcHJvY2VkdXJlCglOZXcgcHJhZ21hIEZhc3RfTWF0aAoKCSogcGFyLWNoMTAuYWRiIChQX1N1YnVuaXQpOiBVbmNvbmRpdGlvbmFsIG1zZyBmb3IgbWlzc2luZyApIGFmdGVyCglzdWJ1bml0CglOZXcgcHJhZ21hIEZhc3RfTWF0aAoKCSogc2VtX3ByYWcuYWRiOiBBZGQgc2lnbmlmaWNhbmNlIHZhbHVlIHRvIHRhYmxlIFNpZ19GbGFnIGZvciBwcmFnbWEKCUltcGxlbWVudGVkX0J5X0VudHJ5LgoJKEFuYWx5emVfUHJhZ21hKTogQWRkIGNhc2UgZm9yIEFkYSAyMDA1IHByYWdtYSBJbXBsZW1lbnRlZF9CeV9FbnRyeS4KCShTZXRfSW5saW5lX0ZsYWdzKTogRG8gbm90IHRyeSB0byBsaW5rIHByYWdtYSBJbmxpbmUgb250byBjaGFpbiBvZiByZXAKCWl0ZW1zLCBzaW5jZSBpdCBjYW4gYXBwbHkgdG8gbW9yZSB0aGFuIG9uZSBvdmVybG9hZGFibGUgZW50aXR5LiBTZXQKCW5ldyBmbGFnIEhhc19QcmFnbWFfSW5saW5lX0Fsd2F5cyBmb3IgSW5saW5lX0Fsd2F5cyBjYXNlLgoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIENvbXBsZXhfUmVwcmVzZW50YXRpb24pOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UuCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgQXNzZXJ0KTogV2hlbiBhc3NlcnRpb25zIGFyZSBkaXNhYmxlZCBidWlsZCB0aGUKCXJld3JpdHRlbiBjb2RlIHdpdGggU2xvYyBvZiBleHByZXNzaW9uIHJhdGhlciB0aGFuIHByYWdtYSwgc28gbmV3Cgl3YXJuaW5nIGFib3V0IGZhaWxpbmcgaXMgbm90IGRlbGV0ZWQuCgkoQW5hbHl6ZV9QcmFnbWEpOiBBbGxvdyBwcmFnbWEgUHJlZWxhYm9yYWJsZV9Jbml0aWFsaXphdGlvbiB0byBhcHBseSB0bwoJcHJvdGVjdGVkIHR5cGVzIGFuZCB1cGRhdGUgZXJyb3IgbWVzc2FnZSB0byByZWZsZWN0IHRoYXQuIFRlc3Qgd2hldGhlcgoJdGhlIHByb3RlY3RlZCB0eXBlIGlzIGFsbG93ZWQgZm9yIHRoZSBwcmFnbWEgKGFuIGVycm9yIGlzIGlzc3VlZCBpZiB0aGUKCXR5cGUgaGFzIGFueSBlbnRyaWVzLCBvciBjb21wb25lbnRzIHRoYXQgZG8gbm90IGhhdmUgcHJlZWxhYm9yYWJsZQoJaW5pdGlhbGl6YXRpb24pLgoJTmV3IHByYWdtYSBGYXN0X01hdGgKCShBbmFseXplX1ByYWdtYSwgY2FzZSBOb19SZXR1cm4pOiBIYW5kbGUgZ2VuZXJpYyBpbnN0YW5jZQoKCSogc25hbWVzLmgsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IAoJQWRkIG5ldyBwcmVkZWZpbmVkIG5hbWUgZm9yIGludGVyZmFjZSBwcmltaXRpdmUgX0Rpc3BfUmVxdWV1ZS4KCU5ldyBwcmFnbWEgRmFzdF9NYXRoCgoJKiBhLXRhZ3MuYWRzLCBhLXRhZ3MuYWRiOiBOZXcgY2FsbGluZyBzZXF1ZW5jZSBmb3IKCVN0cmluZ19Ub19XaWRlX1tXaWRlX11TdHJpbmcKCShTZWNvbmRhcnlfVGFnKTogTmV3IHN1YnByb2dyYW0uCgoJKiBleHBfaW1ndi5hZHMsIGV4cF9pbWd2LmFkYjogTW92ZSBXaWRlX1tXaWRlX11JbWFnZSByb3V0aW5lcyBoZXJlCglmcm9tIEV4cF9BdHRyCglOZXcgY2FsbGluZyBzZXF1ZW5jZSBmb3IgU3RyaW5nX1RvX1dpZGVfW1dpZGVfXVN0cmluZwoJKEV4cGFuZF9JbWFnZV9BdHRyaWJ1dGUpOiBNYWpvciByZXdyaXRlLiBOZXcgY2FsbGluZyBzZXF1ZW5jZSBhdm9pZHMKCXRoZSB1c2Ugb2YgdGhlIHNlY29uZGFyeSBzdGFjayBmb3IgaW1hZ2Ugcm91dGluZXMuCgoJKiBhLWV4Y2VwdC0yMDA1LmFkYiwgcy13Y2hzdHcuYWRzLCBzLXdjaHN0dy5hZGIsIHMtd3dkZW51LmFkYjogTmV3CgljYWxsaW5nIHNlcXVlbmNlIGZvciBTdHJpbmdfVG9fV2lkZV9bV2lkZV9dU3RyaW5nCgoJKiBwYXItY2gzLmFkYiAoUF9EZWNsYXJhdGl2ZV9JdGVtcyk6IFJlY29nbml6ZSB1c2Ugb2YgT3ZlcnJpZGluZyBpbgoJQWRhIDk1IG1vZGUKCShQX1Vua25vd25fRGlzY3JpbWluYW50X1BhcnRfT3B0KTogSGFuZGxlIG1pc3NpbmcgcGFyZW5zIGdyYWNlZnVsbHkKCVJlbW92ZSBBdHJlZS5EZWxldGVfVHJlZS9EZWxldGVfTm9kZSBhbmQgTmxpc3QuRGVsZXRlX0xpc3QKCgkqIHBhci1jaDYuYWRiIChQX1N1YnByb2dyYW0pOiBSZWNvZ25pemUgdXNlIG9mIE92ZXJyaWRpbmcgaW4gQWRhIDk1IG1vZGUKCShQX0Zvcm1hbF9QYXJ0KTogVXNlIFNraXBwaW5nIHBhcmFtZXRlciBpbiBQX1ByYWdtYSBjYWxsCgl0byBpbXByb3ZlIGVycm9yIHJlY292ZXJ5CgoJKiBwYXItdXRpbC5hZGIgKE5leHRfVG9rZW5fSXMpOiBOZXcgZnVuY3Rpb24KCShTaWduYWxfQmFkX0F0dHJpYnV0ZSk6IFVzZSBuZXcgTmFtZXQuSXNfQmFkX1NwZWxsaW5nX09mIGZ1bmN0aW9uCgoJKiBwYXItY2gyLmFkYiAoU2tpcF9QcmFnbWFfU2VtaWNvbG9uKTogRG8gbm90IHJlc3luY2hyb25pemUgdG8KCXNlbWljb2xvbiBpZiBtaXNzaW5nCgkoUF9QcmFnbWEpOiBJbXBsZW1lbnQgbmV3IFNraXBwaW5nIHBhcmFtZXRlcgoJUmVtb3ZlIEF0cmVlLkRlbGV0ZV9UcmVlL0RlbGV0ZV9Ob2RlIGFuZCBObGlzdC5EZWxldGVfTGlzdAoJRml4IGxvY2F0aW9uIG9mIGZsYWcgZm9yIHVucmVjb2duaXplZCBwcmFnbWEgbWVzc2FnZQoKCSogcGFyLXRjaGsuYWRiIChVX0xlZnRfUGFyZW4pOiBOZXcgcHJvY2VkdXJlCgkoVV9SaWdodF9QYXJlbik6IE5ldyBwcm9jZWR1cmUKCjIwMDctMTItMTMgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAYWRhY29yZS5jb20+CgoJKiBhLXRpZmlpby5hZGI6IAoJKFB1dF9JbnQ2NCk6IFVzZSBQdXRfRGlnaXQgdG8gYWR2YW5jZSBQb3MuIFRoaXMgZml4ZXMgYSBjYXNlIHdoZXJlCgl0aGUgc2Vjb25kIG9yIGxhdGVyIFNjYWxlZF9EaXZpZGUgd291bGQgb21pdCBsZWFkaW5nIHplcm9lcywKCXJlc3VsdGluZyBpbiB0b28gZmV3IGRpZ2l0cyBwcm9kdWNlZCBhbmQgYSBMYXlvdXRfRXJyb3IgYXMgcmVzdWx0LgoJKFB1dCk6IEluaXRpYWxpemUgUG9zLgoKMjAwNy0xMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJYXRyZWUuYWRzLCBhdHJlZS5hZGIgKEZsYWcyMzEuLkZsYWcyNDcpOiBOZXcgZnVuY3Rpb25zCgkoU2V0X0ZsYWcyMzEuLlNldF9GbGFnMjQ3KTogTmV3IHByb2NlZHVyZXMKCShCYXNpY19TZXRfQ29udmVudGlvbik6IFJlbmFtZSBTZXRfQ29udmVudGlvbiB0byBiZQoJQmFzaWNfU2V0X0NvbnZlbnRpb24KCShOa2luZF9Jbik6IE5ldyBmdW5jdGlvbnMKCVJlbW92ZSBBdHJlZS5EZWxldGVfVHJlZS9EZWxldGVfTm9kZSBhbmQgTmxpc3QuRGVsZXRlX0xpc3QKCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IFVzZSBuZXcgZmxhZyBIYXNfUHJhZ21hX0lubGluZV9BbHdheXMKCWluc3RlYWQKCSBvZiBvYnNvbGV0ZSBmdW5jdGlvbiBJc19BbHdheXNfSW5saW5lZAoJKFJlZ2lzdGVyX1ByZWRlZmluZWRfRFRfRW50cnkpOiBJbml0aWFsaXplIHNsb3RzIG9mIHRoZSBzZWNvbmQKCXNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZS4KCVJlbW92ZSBBdHJlZS5EZWxldGVfVHJlZS9EZWxldGVfTm9kZSBhbmQgTmxpc3QuRGVsZXRlX0xpc3QKCShFeHBhbmRfTl9GdW5jdGlvbl9DYWxsKTogUmVtb3ZlIHNwZWNpYWwgcHJvdmlzaW9uIGZvciBzdGFjayBjaGVja2luZy4KCgkqIGV4cF91dGlsLmFkcywgZXhwX3V0aWwuYWRiIChJc19QcmVkZWZpbmVkX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6CglJbmNsdWRlIF9EaXNwX1JlcXVldWUgaW4gdGhlIGxpc3Qgb2YgcHJlZGVmaW5lZCBvcGVyYXRpb25zLgoJKEZpbmRfSW50ZXJmYWNlX0FEVCk6IE1vZGlmaWVkIHRvIGZ1bGZpbGwgdGhlIG5ldyBzcGVjaWZpY2F0aW9uLgoJUmVtb3ZlIEF0cmVlLkRlbGV0ZV9UcmVlL0RlbGV0ZV9Ob2RlIGFuZCBObGlzdC5EZWxldGVfTGlzdAoKCSogcGFyLWNoNC5hZGIsIG5saXN0cy5hZHMsIG5saXN0cy5hZGI6IAoJUmVtb3ZlIEF0cmVlLkRlbGV0ZV9UcmVlL0RlbGV0ZV9Ob2RlIGFuZCBObGlzdC5EZWxldGVfTGlzdAoKCSogc2luZm8uYWRzLCBzaW5mby5hZGI6IChOa2luZF9Jbik6IE5ldyBmdW5jdGlvbnMKCUZpeCBsb2NhdGlvbiBvZiBmbGFnIGZvciB1bnJlY29nbml6ZWQgcHJhZ21hIG1lc3NhZ2UKCgkqIHNlbV9jaDcuYWRiOiBVc2UgTmtpbmRfSW4KCjIwMDctMTItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogb3B0LmFkczogCglJbmRpY2F0ZSB3aGF0IGZsYWdzIGFyZSB1c2VkIGJ5IHRoZSBQcm9qZWN0IE1hbmFnZXIsIGdwcmJ1aWxkIGFuZAoJZ3ByY2xlYW4uCgkoT3B0LkZvbGxvd19MaW5rc19Gb3JfRGlycyk6IE5ldyBmbGFnCgkoV2Fybl9Pbl9Bc3NlcnRpb25fRmFpbHVyZSk6IE5ldyBmbGFnCgkoV2lkZV9DaGFyYWN0ZXJfRW5jb2RpbmdfTWV0aG9kX1NwZWNpZmllZCk6IE5ldyBmbGFnCgkoU3VwcHJlc3NfQWxsX0lubGluaW5nKTogTmV3IHN3aXRjaCBzZXQgYnkgLWZuby1pbmxpbmUKCShSZWFsX1ZNU19UYXJnZXQpOiBOZXcgZmxhZwoJTmV3IHByYWdtYSBGYXN0X01hdGgKCjIwMDctMTItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYmFja19lbmQuYWRiOiBSZWNvZ25pemUgLWZuby1pbmxpbmUKCjIwMDctMTItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogY2hlY2tzLmFkYjogRml4IG9wdGltaXphdGlvbiBwcm9ibGVtIHdpdGggc2hvcnQtY2lyY3VpdGVkIGZvcm0KCjIwMDctMTItMTMgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIGNsZWFuLmFkYiAoVXNhZ2UpOiBBZGQgbGluZSBmb3IgLWFQCgkoQ2hlY2tfVmVyc2lvbl9BbmRfSGVscCk6IENoYW5nZSBDaGVja19WZXJzaW9uX0FuZF9IZWxwIHRvIGJlIGdlbmVyaWMsCgl3aXRoIGEgcGFyYW1ldGVyICJwcm9jZWR1cmUgVXNhZ2UiLCBpbnN0ZWFkIG9mIHBhc3NpbmcgYSBwb2ludGVyIHRvIGEKCXByb2NlZHVyZS4gVGhpcyBpcyB0byBlbGltaW5hdGUgdHJhbXBvbGluZXMgKHNpbmNlIHRoZSBVc2FnZSBwcm9jZWR1cmUKCWlzIG9mdGVuIG5lc3RlZCBpbiBhIG1haW4gcHJvY2VkdXJlLCBhbmQgaXQgd291bGQgYmUgaW5jb252ZW5pZW50IHRvCgl1bm5lc3QgaXQpLgoKCSogZy1jb21saW4uYWRiIChGb3JfRWFjaF9TaW1wbGVfU3dpdGNoKTogQ2hhbmdlIEZvcl9FYWNoX1NpbXBsZV9Td2l0Y2gKCXRvIGJlIGdlbmVyaWMsIHdpdGggYSBwYXJhbWV0ZXIgInByb2NlZHVyZSBDYWxsYmFjayAoLi4uKSIsIGluc3RlYWQgb2YKCXBhc3NpbmcgYSBwb2ludGVyIHRvIGEgcHJvY2VkdXJlLiBUaGlzIGlzIHRvIGVsaW1pbmF0ZSB0cmFtcG9saW5lcwoJKHNpbmNlIHRoZSBDYWxsYmFjayBwcm9jZWR1cmUgaXMgdXN1YWxseSBuZXN0ZWQpLgoKCSogZ25hdGZpbmQuYWRiLCBzd2l0Y2guYWRiLCBzd2l0Y2guYWRzLCBnbmF0bGluay5hZGIsIGduYXRscy5hZGIsIAoJZ25hdG5hbWUuYWRiLCBnbmF0eHJlZi5hZGIsIGduYXRjaG9wLmFkYiwgZ3ByZXAuYWRiLCBnbmF0YmluZC5hZGIKCShDaGVja19WZXJzaW9uX0FuZF9IZWxwKTogQ2hhbmdlIENoZWNrX1ZlcnNpb25fQW5kX0hlbHAgdG8gYmUgZ2VuZXJpYy4KCgkqIGctcGVoYWdlLmFkYiAoQ29tcHV0ZV9FZGdlc19BbmRfVmVydGljZXMsIEJ1aWxkX0lkZW50aWNhbF9LZXlfU2V0cyk6CglVc2UgdGhlIGdlbmVyaWMgSGVhcF9Tb3J0X0cgaW5zdGVhZCBvZiBIZWFwX1NvcnRfQS4KCjIwMDctMTItMTMgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYjogRmxhZyAyMzIgaXMgbm93IEltcGxlbWVudGVkX0J5X0VudHJ5LgoJKEltcGxlbWVudGVkX0J5X0VudHJ5LCBTZXRfSW1wbGVtZW50ZWRfQnlfRW50cnkpOiBOZXcgcm91dGluZXMuCgkoV3JpdGVfRW50cnlfRmxhZ3MpOiBBZGQgYW4gZW50cnkgZm9yIEltcGxlbWVudGVkX0J5X0VudHJ5LgoJKFJlbmFtZWRfSW5fU3BlYyk6IE5ldyBmbGFnCgkoSGFzX1ByYWdtYV9JbmxpbmVfQWx3YXlzKTogTmV3IGZsYWcKCUFkZCBtaXNzaW5nIGRvYyBmb3IgcHJhZ21hIE9ic29sZXNjZW50X1dhcm5pbmcKCUFkZCBtaXNzaW5nIGRvYyBmb3IgMTcgYWRkaXRpb25hbCB1bnVzZWQgZmxhZ3MgKDIzMC0yNDcpCgkoSXNfRGVyaXZlZF9UeXBlKTogUmVtb3ZlIGNvbmRpdGlvbiAibm90IElzX0dlbmVyaWNfVHlwZSIuCglBbHBoYWJldGl6ZSB3aXRoIGNsYXVzZXMuCglTZXBhcmF0ZSBJc19UaHVuayBhbmQgSGFzX1RodW5rcyBmbGFncwoJKFdyaXRlX0VudGl0eV9GbGFncyk6IEFkZCBmb3Jnb3R0ZW4gZW50cnkgZm9yIEhhc19UaHVua3MKCShSZWxhdGVkX0ludGVyZmFjZSk6IFJlbmFtZWQgdG8gUmVsYXRlZF9UeXBlLgoJKEhhc19UaHVua3MvU2V0X0hhc19UaHVua3MpOiBTdWJwcm9ncmFtcyBvZiBuZXcgYXR0cmlidXRlLgoJKFNldF9Jc19GbGFnKTogUmVzdHJpY3QgdGhlIGFzc2VydGlvbi4KCjIwMDctMTItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZXJyb3V0LmFkYiAoT3V0cHV0X1NvdXJjZV9MaW5lKTogRG8gbm90IGtlZXAgYSB0cmFpbGluZyBzcGFjZSBhZnRlcgoJdGhlIHNvdXJjZSBsaW5lIG51bWJlciBpZiB0aGUgc291cmNlIGxpbmUgaXMgZW1wdHkuCgoyMDA3LTEyLTEzICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoKCSogZXZhbF9mYXQuYWRiIChEZWNvbXBvc2VfSW50KTogSGFuZGxlIGFyZ3VtZW50IG9mIHplcm8uCgkoQ29tcG9zZSk6IFJlbW92ZSBzcGVjaWFsIGNhc2luZyBvZiB6ZXJvLgoJKEV4cG9uZW50KTogTGlrZXdpc2UuCgkoRnJhY3Rpb24pOiBMaWtld2lzZS4KCShNYWNoaW5lKTogTGlrZXdpc2UuCgkoRGVjb21wb3NlKTogVXBkYXRlIGNvbW1lbnQuCgoyMDA3LTEyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfYWdnci5hZGIgKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpOiBJZiB0aGVyZSBpcyBhbiBhZ2dyZWdhdGUgZm9yIGEKCWxpbWl0ZWQgYW5jZXN0b3IgcGFydCwgaW5pdGlhbGl6ZSBjb250cm9sbGVycyBvZiBlbmNsb3NpbmcgcmVjb3JkCgliZWZvcmUgZXhwYW5kaW5nIGFuY2VzdG9yIGFnZ3JlZ2F0ZS4KCShHZW5fQXNzaWduKTogSWYgYSBjb21wb25lbnQgb2YgdGhlIGFnZ3JlZ2F0ZSBpcyBib3gtaW5pdGlhbGl6ZWQsIGFkZAoJY29kZSB0byBjYWxsIEluaXRpYWxpemUgaWYgdGhlIGNvbXBvbmVudCBpcyBjb250cm9sbGVkLCBhbmQgZXhwbGljaXQKCWFzc2lnbm1lbnQgb2YgbnVsbCBpZiB0aGUgY29tcG9uZW50IGlzIGFuIGFjY2VzcyB0eXBlLgoKCUhhbmRsZSBwcm9wZXJseSBhZ2dyZWdhdGVzIGZvciBsaW1pdGVkIHR5cGVzIHRoYXQgYXBwZWFyIGluIG9iamVjdAoJZGVjbGFyYXRpb25zIHdoZW4gdGhlIGFnZ3JlZ2F0ZSBjb250YWlucyBjb250cm9sbGVkIHZhbHVlcyBzdWNoIGFzCglwcm90ZWN0ZWQgdHlwZXMuCglXaGVuIGV4cGFuZGluZyBsaW1pdGVkIGFnZ3JlZ2F0ZXMgaW50byBpbmRpdmlkdWFsIGNvbXBvbmVudHMsIGRvIG5vdAoJY2FsbCBBZGp1c3Qgb24gY29udHJvbGxlZCBjb21wb25lbnRzIHRoYXQgYXJlIGxpbWl0ZWQuCgoyMDA3LTEyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBhbmRlci5hZGI6IFRha2UgaW50byBhY2NvdW50IE5fU3VicHJvZ3JhbV9SZW5hbWluZ19EZWNsYXJhdGlvbgoKMjAwNy0xMi0xMyAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDMuYWRiIChQcmVkZWZpbmVkX1ByaW1pdGl2ZV9Cb2RpZXMpOiBHZW5lcmF0ZSB0aGUgYm9keSBvZgoJcHJlZGVmaW5lZCBwcmltaXRpdmUgX0Rpc3BfUmVxdWV1ZS4KCShNYWtlX1ByZWRlZmluZWRfUHJpbWl0aXZlX1NwZWNzKTogQ3JlYXRlIHRoZSBzcGVjIGZvciBwcmVkZWZpbmVkCglwcmltaXRpdmUgX0Rpc3BfUmVxdWV1ZS4KCShNYWtlX1ByZWRlZmluZWRfUHJpbWl0aXZlX1NwZWNzL1ByZWRlZmluZWRfUHJpbWl0aXZlX0JvZGllcyk6IFNldCB0aGUKCXR5cGUgb2YgZm9ybWFsIFJlbmFtZWRfRXEgdG8gRW50aXR5X0lkIChpbnN0ZWFkIG9mIE5vZGVfSWQpLgoJKE1ha2VfUHJlZGVmaW5lZF9QcmltaXRpdmVfU3BlY3MpOiBTcGVjIG9mICI9IiBuZWVkZWQgaWYgdGhlIHBhcmVudCBpcwoJYW4gaW50ZXJmYWNlIHR5cGUuIEluIGNhc2Ugb2YgbGltaXRlZCBpbnRlcmZhY2VzIHdlIG5vdyBkZWNsYXJlIGFsbCB0aGUKCXByZWRlZmluZWQgcHJpbWl0aXZlcyBhc3NvY2lhdGVkIHdpdGggc3luY2hyb25pemVkIGludGVyZmFjZXMgYXMKCWFic3RyYWN0LgoJKFByZWRlZl9TcGVjX09yX0JvZHkpOiBGb3IgaW50ZXJmYWNlIHR5cGVzIGdlbmVyYXRlIGFic3RyYWN0IHN1YnByb2dyYW0KCWRlY2xhcmF0aW9ucy4KCShQcmVkZWZpbmVkX1ByaW1pdGl2ZV9Cb2RpZXMpOiBBZGQgYm9keSBvZiAiPSIgaWYgdGhlIHBhcmVudCBvZiB0aGUKCXRhZ2dlZCB0eXBlIGlzIGFuIGludGVyZmFjZSB0eXBlIGFuZCB0aGVyZSBpcyBubyB1c2VyLWRlZmluZWQgZXF1YWxpdHkKCWZ1bmN0aW9uLgoJQWRkIGFsc28gYm9kaWVzIG9mIHByZWRlZmluZWQgcHJpbWl0aXZlcyBhc3NvY2lhdGVkIHdpdGggc3luY2hyb25pemVkCglpbnRlcmZhY2VzLgoJKEZyZWV6ZV9SZWNvcmRfVHlwZSk6IERvIG5vdCBidWlsZCBib2RpZXMgb2YgcHJlZGVmaW5lZCBwcmltaXRpdmVzIG9mCglpbnRlcmZhY2UgdHlwZXMgYmVjYXVzZSB0aGV5IGFyZSBub3cgZGVmaW5lZCBhYnN0cmFjdC4KCUFkZCBtaXNzaW5nIGRvY3VtZW50YXRpb24uCgkoRXhwYW5kX1JlY29yZF9Db250cm9sbGVyKTogVXBkYXRlIG9jY3VycmVuY2Ugb2YgUmVsYXRlZF9JbnRlcmZhY2UKCXRvIFJlbGF0ZWRfVHlwZS4KCShCdWlsZF9PZmZzZXRfVG9fVG9wX0Z1bmN0aW9ucyk6IERvIG5vdGhpbmcgaW4gY2FzZSBvZiBWTS4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBUYWtlIGludG8gYWNjb3VudCBWTV9UYXJnZXQgd2hlbiBoYW5kbGluZwoJY2xhc3Mgd2lkZSBpbnRlcmZhY2Ugb2JqZWN0IGRlY2xhcmF0aW9uLgoJKEV4cGFuZF9QcmV2aW91c19BY2Nlc3NfVHlwZSk6IERvIG5vdCBjcmVhdGUgYSBkdXBsaWNhdGUgbWFzdGVyIGVudGl0eQoJaWYgdGhlIGFjY2VzcyB0eXBlIGFscmVhZHkgaGFzIG9uZS4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBEZWZlbmQgYWdhaW5zdCBhdHRlbXB0IHRvIHZhbGlkaXR5IGNoZWNrCglnZW5lcmljIHR5cGVzLiBOb3RpY2VkIGZvciAtZ25hdFZjZiBzcGVjaWZpZWQgd2l0aCBwcmV2aW91cyBlcnJvcnMuCgoyMDA3LTEyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSwgRGlzcGxhY2VfQWxsb2NhdG9yX1BvaW50ZXIsCglFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBUYWtlIGludG8gYWNjb3VudCBWTV9UYXJnZXQKCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfTl9FeHRlbmRlZF9SZXR1cm5fU3RhdGVtZW50KTogRG8gbm90IHVzZQoJc2Vjb25kYXJ5IHN0YWNrIHdoZW4gVk1fVGFyZ2V0IC89IE5vX1ZNCgoyMDA3LTEyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNy5hZGIgKEV4cGFuZF9OX1BhY2thZ2VfQm9keSk6IFJlcGxhY2Ugb2NjdXJyZW5jZSBvZiBhdHRyaWJ1dGUKCUlzX0NvbXBsYXRpb25fVW5pdCBieSBJc19MaWJyYXJ5X0xldmVsX0VudGl0eSBpbiB0aGUgY29kZQoJdGhhdCBkZWNpZGVzIGlmIHRoZSBzdGF0aWMgZGlzcGF0Y2ggdGFibGVzIG5lZWQgdG8gYmUgYnVpbHQuCgkoV3JhcF9UcmFuc2llbnRfRGVjbGFyYXRpb24pOiBEbyBub3QgZ2VuZXJhdGUgYSBmaW5hbGl6YXRpb24gY2FsbCBpZgoJdGhpcyBpcyBhIHJlbmFtaW5nIGRlY2xhcmF0aW9uIGFuZCB0aGUgcmVuYW1lZCBvYmplY3QgaXMgYSBjb21wb25lbnQKCW9mIGEgY29udHJvbGxlZCB0eXBlLgoKMjAwNy0xMi0xMyAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoOC5hZHMsIGV4cF9jaDguYWRiIChFeHBhbmRfTl9TdWJwcm9ncmFtX1JlbmFtaW5nX0RlY2xhcmF0aW9uKToKCUluIHRoZSBjYXNlIHdoZXJlIHRoZSByZW5hbWVkIHN1YnByb2dyYW0gaXMgYSBkZXJlZmVyZW5jZSwgY2FsbAoJRm9yY2VfRXZhbHVhdGlvbiBvbiB0aGUgcHJlZml4LgoKMjAwNy0xMi0xMyAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2g5LmFkYiAoRXhwYW5kX05fQXN5bmNocm9ub3VzX1NlbGVjdCwKCUV4cGFuZF9OX0NvbmRpdGlvbmFsX0VudHJ5X0NhbGwsIEV4cGFuZF9OX1RpbWVkX0VudHJ5X0NhbGwpOiBDb2RlIGFuZAoJY29tbWVudCByZWZvcm1hdHRpbmcuCgkoU2V0X1ByaXZhbHMpOiBJbmhlcml0IGFsaWFzZWQgZmxhZyBmcm9tIGZvcm1hbC4gRnJvbSBjb2RlIHJlYWRpbmcuCgkoQnVpbGRfU2ltcGxlX0VudHJ5X0NhbGwpOiBPdXQgcGFyYW1ldGVycyBvZiBhbiBhY2Nlc3MgdHlwZSBhcmUgcGFzc2VkCglieSBjb3B5IGFuZCBpbml0aWFsaXplZCBmcm9tIHRoZSBhY3R1YWwuIFRoaXMgaW5jbHVkZXMgZW50cnkgcGFyYW1ldGVycy4KCShFeHBhbmRfTl9SZXF1ZXVlX1N0YXRlbWVudCk6IFJlaW1wbGVtZW50IGluIG9yZGVyIHRvIGhhbmRsZSBib3RoIEFkYSA5NQoJYW5kIEFkYSAyMDA1IG1vZGVscyBvZiByZXF1ZXVlLgoJKE51bGxfU3RhdGVtZW50cyk6IFN0aWxsIGNvbm5zaWRlciBkby1lbmQgYmxvY2sgbnVsbCBpZiBpdCBjb250YWlucwoJVW5yZWZlcmVuY2VkIGFuZCBXYXJuaW5ncyBwcmFnbWFzLgoJKEV4cGFuZF9OX0FjY2VwdF9TdGF0ZW1lbnQpOiBEbyBub3Qgb3B0aW1pemUgYXdheSBudWxsIGRvIGVuZCBpZgoJZGlzcGF0Y2hpbmcgcG9saWN5IGlzIG90aGVyIHRoYW4gZGVmYXVsdGVkLgoJKEV4cGFuZF9OX1RpbWVkX0VudHJ5X0NhbGwpOiBXaGVuIHRoZSB0cmlnZ2VyaW5nIHN0YXRlbWVudCBpcyBhCglkaXNwYXRjaGluZyBjYWxsLCBtYW51YWxseSBhbmFseXplIHRoZSBkZWxheSBzdGF0ZW1lbnQuCgkoRmluZF9QYXJhbWV0ZXJfVHlwZSk6IE1vdmUgc3VicHJvZ3JhbSB0byBTZW1fVXRpbC4KCjIwMDctMTItMTMgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGIgKERlZmF1bHRfUHJpbV9PcF9Qb3NpdGlvbik6IFByaW1pdGl2ZQoJX0Rpc3BfUmVxdWV1ZSBvY2N1cGllcyBkaXNwYXRjaCB0YWJsZSBzbG90IG51bWJlciAxNS4gTW92ZQoJX0Rpc3BfVGltZWRfU2VsZWN0IHRvIHNsb3QgMTYuCgkoTWFrZV9EaXNwX1JlcXVldWVfQm9keSwgTWFrZV9EaXNwX1JlcXVldWVfU3BlYyk6IE5ldyByb3V0aW5lcyB3aGljaAoJZ2VuZXJhdGUgdGhlIHNwZWMgYW5kIGJvZHkgb2YgX0Rpc3BfUmVxZXVldWUuCgkoTWFrZV9EVCk6IEJ1aWxkIGFuZCBpbml0aWFsaXplIHRoZSBzZWNvbmQgZGlzcGF0Y2ggdGFibGUuCglIYW5kbGUgaW5pdGlhbGl6YXRpb24gb2YgUkNfT2Zmc2V0IHdoZW4gdGhlIHBhcmVudAoJaXMgYSBwcml2YXRlIHR5cGUgd2l0aCB2YXJpYWJsZSBzaXplIGNvbXBvbmVudHMuCgkoTWFrZV9TZWNvbmRhcnlfRFQpOiBDb21wbGV0ZSBkb2N1bWVudGF0aW9uLiBBZGQgc3VwcG9ydCB0bwoJaW5pdGlhbGl6ZSB0aGUgc2Vjb25kIGRpc3BhdGNoIHRhYmxlLgoJKE1ha2VfVGFncyk6IEdlbmVyYXRlIHRoZSB0YWcgb2YgdGhlIHNlY29uZCBkaXNwYXRjaCB0YWJsZS4KCShSZWdpc3Rlcl9QcmltaXRpdmUpOiBBZGQgc3VwcG9ydCB0byByZWdpc3RlciBwcmltaXRpdmVzIGluIHRoZQoJc2Vjb25kIGRpc3BhdGNoIHRhYmxlLgoKMjAwNy0xMi0xMyAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZXhwZWN0LmMgKF9fZ25hdF9raWxsKSBbV0lOMzJdOiBJbXBsZW1lbnQgdGhlIFNJR0lOVCBzaWduYWwgb24KCVdpbmRvd3MuIFRoaXMgc2lnbmFsIGlzIHVzZWQgYnkgZ25hdG1ha2UgdG8ga2lsbCBjaGlsZCBwcm9jZXNzZXMgZm9yCglleGFtcGxlLgoKMjAwNy0xMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2ludHIuYWRiIChFeHBhbmRfRGlzcGF0Y2hpbmdfQ29uc3RydWN0b3JfQ2FsbCk6IEFkZCBtaXNzaW5nCglzdXBwb3J0IGZvciBnZW5lcmljIGRpc3BhdGNoaW5nIGNvbnN0cnVjdG9yIGNhbGxzIGluIHdoaWNoIHdlIG5lZWQgdG8KCWxvY2F0ZSB0aGUgdGFnIG9mIGEgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCBhbgoJaW50ZXJmYWNlIHR5cGUgdG8gcHJvcGVybHkgZGlzcGF0Y2ggdGhlIGNhbGwuCgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSBbY2FzZSBBZGRyZXNzXSwKCUV4cGFuZF9EaXNwYXRjaGluZ19Db25zdHJ1Y3Rvcl9DYWxsLCBFeHBhbmRfVW5jX0RlYWxsb2NhdGlvbik6IEZpeAoJaGFuZGxpbmcgb2YgVk0gdGFyZ2V0cy4KCjIwMDctMTItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9wcmFnLmFkYiAoRXhwYW5kX1ByYWdtYV9Bc3NlcnQpOiBSZWNvZ25pemUgbmV3IHdhcm5pbmcgZmxhZyBmb3IKCWFzc2VydCBmYWlsCgoJKiB1Z193b3JkczogQWRkIGVudHJpZXMgZm9yIC1nbmF0dy5hIC1nbmF0dy5BCgoJKiBzZW1fcmVzLmFkYiAoU2V0X1N0cmluZ19MaXRlcmFsX1N1YnR5cGUpOiBJZiB0aGUgY29udGV4dCBvZiB0aGUKCWxpdGVyYWwgaXMgYSBzdWJ0eXBlIHdpdGggbm9uLXN0YXRpYyBjb25zdHJhaW50cywgdXNlIHRoZSBiYXNlIHR5cGUgb2YKCXRoZSBjb250ZXh0IGFzIHRoZSBiYXNlIG9mIHRoZSBzdHJpbmcgc3VidHlwZSwgdG8gcHJldmVudCB0eXBlCgltaXNtYXRjaGVzIGluIGdpZ2kuCgkoUmVzb2x2ZV9BY3R1YWxzKTogSWYgdGhlIGFjdHVhbCBpcyBhbiBlbnRpdHkgbmFtZSwgZ2VuZXJhdGUgYQoJcmVmZXJlbmNlIGJlZm9yZSB0aGUgYWN0dWFsIGlzIHJlc29sdmVkIGFuZCBleHBhbmRlZCwgdG8gcHJldmVudAoJc3B1cmlvdXMgd2FybmluZ3Mgb24gZm9ybWFscyBvZiBlbmNsb3NpbmcgcHJvdGVjdGVkIG9wZXJhdGlvbnMuCgkoQW5hbHl6ZV9PdmVybG9hZGVkX1NlbGVjdGVkX0NvbXBvbmVudCk6IElmIHR5cGUgb2YgcHJlZml4IGlmCgljbGFzcy13aWRlLCB1c2UgdmlzaWJsZSBjb21wb25lbnRzIG9mIGJhc2UgdHlwZS4KCShSZXNvbHZlX1NlbGVjdGVkX0NvbXBvbmVudCk6IERpdHRvLgoJKFJlc29sdmVfU2hvcnRfQ2lyY3VpdCk6IERldGVjdCBjYXNlIG9mIHByYWdtYSBBc3NlcnQgYXJndW1lbnQKCWV2YWx1YXRpbmcgdG8gRmFsc2UsIGFuZCBpc3N1ZSB3YXJuaW5nIG1lc3NhZ2UuCgoJKiB1c2FnZS5hZGI6IEFkZCBsaW5lcyBmb3IgLWduYXR3LmEgYW5kIC1nbmF0dy5BCgoyMDA3LTEyLTEzICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoKCSogZy1jYWxlbmQuYWRzIChOb19UaW1lKTogTmV3IGNvbnN0YW50LCB0byByZXByZXNlbnQgYW4gdW5pbml0aWFsaXplZAoJdGltZSB2YWx1ZQoKCSogZy1jYXRpaW8uYWRzLCBnLWNhdGlpby5hZGIgKFZhbHVlKTogQWRkZWQgc3VwcG9ydCBmb3IgbW9yZSBkYXRlCglmb3JtYXRzLgoJKE1vbnRoX05hbWVfVG9fTnVtYmVyKTogTmV3IHN1YnByb2dyYW0KCgkqIGctZGlyb3BlLmFkYiAoR2V0X0N1cnJlbnRfRGlyKTogT24gd2luZG93cywgbm9ybWFsaXplIHRoZSBkcml2ZQoJbGV0dGVyIHRvIHVwcGVyLWNhc2UuCgoyMDA3LTEyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBnbmF0MWRydi5hZGIgKEduYXQxZHJ2KTogUHJvcGVybHkgc2V0IG5ldyBmbGFnIE9wdC5SZWFsX1ZNU19UYXJnZXQKCgkqIGxheW91dC5hZGIgKFJlc29sdmVfQXR0cmlidXRlLCBjYXNlICdBY2Nlc3MpOiBJZiBkZXNpZ25hdGVkIHR5cGUgb2YKCWNvbnRleHQgaXMgYSBsaW1pdGVkIHZpZXcsIHVzZSBub24tbGltaXRlZCB2aWV3IHdoZW4gYXZhaWxhYmxlLiBJZiB0aGUKCW5vbi1saW1pdGVkIHZpZXcgaXMgYW4gdW5jb25zdHJhaW5lZCBhcnJheSwgdGhpcyBlbmZvcmNlcyBjb25zaXN0ZW5jeQoJcmVxdWlyZW1lbnRzIGluIDMuMTAuMiAoMjcpLgoJKExheW91dF9UeXBlKTogRm9yIGFuIGFjY2VzcyB0eXBlIHdob3NlIGRlc2lnbmF0ZWQgdHlwZSBpcyBhIGxpbWl0ZWQKCXZpZXcsIGV4YW1pbmUgaXRzIGRlY2xhcmF0aW9uIHRvIGRldGVybWluZSBpZiBpdCBpcyBhbiB1bmNvbnN0cmFpbmVkCglhcnJheSwgYW5kIHNpemUgdGhlIGFjY2VzcyB0eXBlIGFjY29yZGluZ2x5LgoJKExheW91dF9UeXBlKTogRG8gbm90IGZvcmNlIDMyLWJpdHMgZm9yIGNvbnZlbnRpb24gYyBzdWJwcm9ncmFtCglwb2ludGVycyBpbiAtZ25hdGRtIG1vZGUsIG9ubHkgaWYgcmVhbCB2bXMgdGFyZ2V0LgoKCSogc2VtX2F0dHIuYWRiIChBbmFseXplX0FjY2Vzc19BdHRyaWJ1dGUpOiBVc2UgbmV3IGZsYWcKCUhhc19QcmFnbWFfSW5saW5lX0Fsd2F5cyBpbnN0ZWFkIG9mIG9ic29sZXRlIGZ1bmN0aW9uIElzX0Fsd2F5c19JbmxpbmVkCgkoQW5hbHl6ZV9BY2Nlc3NfQXR0cmlidXRlLEF0dHJpYnV0ZV9BZGRyZXNzKTogUmVtb3ZlIGNoZWNrcyBmb3IKCXZpb2xhdGlvbnMgb2YgdGhlIE5vX0ltcGxpY2l0X0R5bmFtaWNfQ29kZSByZXN0cmljdGlvbi4KCShSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSAnQWNjZXNzKTogSWYgZGVzaWduYXRlZCB0eXBlIG9mIGNvbnRleHQgaXMgYQoJbGltaXRlZCB2aWV3LCB1c2Ugbm9uLWxpbWl0ZWQgdmlldyB3aGVuIGF2YWlsYWJsZS4gSWYgdGhlIG5vbi1saW1pdGVkCgl2aWV3IGlzIGFuIHVuY29uc3RyYWluZWQgYXJyYXksIHRoaXMgZW5mb3JjZXMgY29uc2lzdGVuY3kgcmVxdWlyZW1lbnRzCglpbiAzLjEwLjIgKDI3KS4KCShMYXlvdXRfVHlwZSk6IEZvciBhbiBhY2Nlc3MgdHlwZSB3aG9zZSBkZXNpZ25hdGVkIHR5cGUgaXMgYSBsaW1pdGVkCgl2aWV3LCBleGFtaW5lIGl0cyBkZWNsYXJhdGlvbiB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYW4gdW5jb25zdHJhaW5lZAoJYXJyYXksIGFuZCBzaXplIHRoZSBhY2Nlc3MgdHlwZSBhY2NvcmRpbmdseS4KCjIwMDctMTItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZ25hdGNtZC5hZGIgKEdOQVRDbWQpOiBEbyBub3QgaXNzdWUgLWQ9IHN3aXRjaCB0byBnbmF0bWV0cmljIHdoZW4KCW9iamVjdCBkaXJlY3Rvcnkgb2YgbWFpbiBwcm9qZWN0IGRvZXMgbm90IGV4aXN0LgoJT24gVk1TLCBjb3JyZWN0bHkgc2V0IHRoZW4gZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIHRoZSBzb3VyY2UKCWRpcmVjdG9yaWVzLgoKMjAwNy0xMi0xMyAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhZGFjb3JlLmNvbT4KCgkqIGctcmVnaXN0LmFkcywgZy1yZWdpc3QuYWRiIChTZXRfVmFsdWUpOiBuZXcgcGFyYW1ldGVyIEV4cGFuZDsgd2hlbgoJc2V0IHRvIFRydWUgdGhpcyBwcm9jZWR1cmUgd2lsbCBjcmVhdGUgdGhlIHZhbHVlIG9mIHR5cGUgUkVHX0VYUEFORF9TWi4KCUl0IHdhcyBvbmx5IHBvc3NpYmxlIHRvIGNyZWF0ZSBSRUdfU1ogdmFsdWVzIGJlZm9yZS4KCjIwMDctMTItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1zcGNoZ2UuYWRzLCBnLXNwY2hnZS5hZGIsIGctdTNzcGNoLmFkYiwgZy11M3NwY2guYWRzLAoJZy13aXNwY2guYWRiLCBnLXdpc3BjaC5hZHMsIGctenNwY2hlLmFkYiwgZy16c3BjaGUuYWRzLAoJbmFtZXQtc3AuYWRiLCBuYW1ldC1zcC5hZHM6IE5ldyBmaWxlcy4KCgkqIGctc3BlY2hlLmFkYjogVXNlIGdlbmVyaWMgcm91dGluZSBpbiBnLXNwY2hnZQoKCSogcy13Y2hjbnYuYWRzLCBzLXdjaGNudi5hZGI6IAoJTWlub3IgY29kZSBjbGVhbnVwIChtYWtlIGZvcm1hbCB0eXBlIGNvbnNpc3RlbnQgd2l0aCBzcGVjKQoKCSogbmFtZXQuYWRiOiBVcGRhdGUgY29tbWVudHMuCgoJKiBwYXItZW5kaC5hZGIgKEV2YWx1YXRlX0VuZF9FbnRyeSk6IFVzZSBuZXcKCU5hbWV0LlNwLklzX0JhZF9TcGVsbGluZ19PZiBmdW5jdGlvbgoKCSogcGFyLWxvYWQuYWRiIChMb2FkKTogVXNlIG5ldyBOYW1ldC5TcC5Jc19CYWRfU3BlbGxpbmdfT2YgZnVuY3Rpb24KCgkqIHNlbV9hZ2dyLmFkYiAoUmVzb2x2ZV9SZWNvcmRfQWdncmVnYXRlKTogSWYgYSBjb21wb25lbnQgb2YgYW4KCWFuY2VzdG9yIGlzIGFuIGFjY2VzcyB0eXBlIGluaXRpYWxpemVkIHdpdGggYSBib3gsIHNldCBpdHMgdHlwZQoJZXhwbGljaXRseSwgZm9yIHVzZSBpbiBzdWJzZXF1ZW50IGV4cGFuc2lvbi4KCShDaGVja19NaXNzcGVsbGVkX0NvbXBvbmVudCk6IFVzZSBuZXcgTmFtZXQuU3AuSXNfQmFkX1NwZWxsaW5nX09mCglmdW5jdGlvbgoKMjAwNy0xMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLXNwaXBhdC5hZGIgKEJyZWFrKTogRml4IGFjY2Vzc2liaWxpdHkgZXJyb3IgKHZzbiB0YWtpbmcgbm90IG51bGwKCWFjY2VzcyBWc3RyaW5nKQoKMjAwNy0xMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBpbmxpbmUuYWRiIChCYWNrX0VuZF9DYW5ub3RfSW5saW5lKTogVXNlIG5ldyBmbGFnCglIYXNfUHJhZ21hX0lubGluZV9BbHdheXMgaW5zdGVhZCBvZiBvYnNvbGV0ZSBmdW5jdGlvbiBJc19BbHdheXNfSW5saW5lZAoKCSogc2VtX2NoNi5hZHMsIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IFVzZSBuZXcgZmxhZwoJSGFzX1ByYWdtYV9JbmxpbmVfQWx3YXlzIGluc3RlYWQuCglvZiBvYnNvbGV0ZSBmdW5jdGlvbiBJc19BbHdheXNfSW5saW5lZAoJKEJ1aWxkX0JvZHlfVG9fSW5saW5lKTogU2FtZSBjaGFuZ2UKCShDYW5ub3RfSW5saW5lKTogU2FtZSBjaGFuZ2UKCURvIG5vdCBnaXZlIHdhcm5pbmcgb24gZXhjZXB0aW9uIHJhaXNlIGluIE5vX1JldHVybiBmdW5jdGlvbgoKCSogc2VtX2NoMTMuYWRiIChBbmFseXplX1JlY29yZF9SZXByZXNlbnRhdGlvbl9DbGF1c2UpOiBJZiBhbiBpbmhlcml0ZWQKCWNvbXBvbmVudCBoYXMgdHdvIGluY29uc2lzdGVudCBjb21wb25lbnQgY2xhdXNlcyBpbiB0aGUgc2FtZSByZWNvcmQKCXJlcHJlc2VudGF0aW9uIGNsYXVzZSwgZmF2b3IgdGhlIG1lc3NhZ2UgdGhhdCBjb21wbGFpbnMgYWJvdXQKCWR1cGxpY2F0aW9uIHJhdGhlciB0aGFuIGluY29uc2lzdGVuY3kuCglVcGRhdGUgY29tbWVudHMuCgkoUmVjb3JkX1JlcHJlc2VudGF0aW9uX0NsYXVzZSk6IERvIG5vdCB3YXJuIG9uIG1pc3NpbmcgY29tcG9uZW50CgljbGF1c2VzIGZvciBpbmhlcml0ZWQgY29tcG9uZW50cyBvZiBhIHR5cGUgZXh0ZW5zaW9uLgoJKFJlcF9JdGVtX1Rvb19MYXRlKTogRG8gbm90IGF0dGVtcHQgdG8gbGluayBwcmFnbWEgaW50byByZXAgY2hhaW4gZm9yCglhbiBvdmVybG9hZGFibGUgaXRlbSBpZiBpdCBpcyBhIHByYWdtYSB0aGF0IGNhbiBhcHBseSB0byBtdWx0aXBsZQoJb3ZlcmxvYWRhYmxlIGVudGl0aWVzIChlLmcuIElubGluZSkgYmVjYXVzZSBhIHByYWdtYSBjYW5ub3QgYmUgb24KCW1vcmUgdGhhbiBvbmUgY2hhaW4gYXQgYSB0aW1lLgoJKFZhbGlkYXRlX1VuY2hlY2tlZF9Db252ZXJzaW9uKTogQWRkIGNvZGUgdG8gd2FybiBvbiB1bmNoZWNrZWQKCWNvbnZlcnNpb24gd2hlcmUgb25lIG9mIHRoZSBvcGVyYW5kcyBpcyBBZGEuQ2FsZW5kYXIuVGltZS4KCShBbmFseXplX0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZSk6IEZpeCB0eXBvIGluIGVycm9yIG1lc3NhZ2UuCglGb3Igbm93LCBpZ25vcmUgQ29tcG9uZW50X1NpemUgY2xhdXNlIG9uIFZNIHRhcmdldHMsIGFzIGRvbmUgZm9yCglwcmFnbWEgUGFjay4KCjIwMDctMTItMTMgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmouYWRzLCBwcmouYWRiIChJc19BX0xhbmd1YWdlKTogTm93IHRha2VzIGEgTmFtZV9JZCBpbnN0ZWFkIG9mIGEKCXN0cmluZwoJKE11c3RfQ2hlY2tfQ29uZmlndXJhdGlvbiwgRGVmYXVsdF9MYW5ndWFnZV9Jc19BZGEpOiBuZXcgZmxhZ3MgaW4KCXByai5hZHMKCShIYXNoKTogTW92ZSBpbnN0YW50aWF0aW9uIG9mIFN5c3RlbS5IVGFibGUuSGFzaCBmcm9tIHNwZWMgdG8gYm9keQoJKHByai1ubXNjLmFkYik6IE9wdGltaXplIGNhbGxzIHRvIE5hbWVfRmluZCB3aGVuIG9uIGNhc2Ugc2Vuc2l0aXZlCglzeXN0ZW1zLCBzaW5jZSB3ZSBkbyBub3QgbmVlZCB0byByZWNvbXB1dGUgdGhlIE5hbWVfSWQgZm9yIHRoZSBjYW5vbmljYWwKCWZpbGUgbmFtZS4KCShCb2R5X1N1ZmZpeF9JZF9PZiwgU3BlY19TdWZmaXhfSWRfT2YpOiBuZXcgdmVyc2lvbiB0aGF0IHRha2VzIGEgbmFtZV9pZAoJYXMgYSBwYXJhbWV0ZXIuIFRoaXMgcGFyYW1ldGVyIGlzIGluIGZhY3QgYWx3YXlzICJhZGEiIGluIGFsbCBjYWxscywgYW5kCgl3ZSB3ZXJlIGRvaW5nIDE2MDU2MCBleHRyYSBjYWxscyB0byBOYW1lX0ZpbmQgdG8gY29udmVydCBpdCB0byBOYW1lX0FkYQoJd2hpbGUgbG9hZGluZyBhIHByb2plY3Qgd2l0aCA0MDAwMCBmaWxlcwoKCSogcHJqLWF0dHIuYWRiOiBGaXggbmFtZSBvZiBhdHRyaWJ1dGUgRGVwZW5kZW5jeV9Ecml2ZXIKCUNoYW5nZSB0aGUga2luZCBvZiBpbmRleGluZyBmb3IgYXR0cmlidXRlIFJvb3QKCgkqIHByai1kZWN0LmFkYiAoUGFyc2VfRGVjbGFyYXRpdmVfSXRlbXMpOiBBbGxvdyByZWRlY2xhcmF0aW9ucyBvZgoJdmFyaWFibGVzIGFscmVhZHkgZGVjbGFyZWQsIGluIGNhc2UgY29uc3RydWN0aW9ucy4KCgkqIHByai1lbnYuYWRiIChJbml0aWFsaXplKTogUmVzZXQgQ3VycmVudF9Tb3VyY2VfUGF0aF9GaWxlIGFuZAoJQ3VycmVudF9PYmplY3RfUGF0aF9GaWxlIHRvIE5vX1BhdGguCgoJKiBwcmotZXh0LmFkYiAoSW5pdGlhbGl6ZV9Qcm9qZWN0X1BhdGgpOiBJbiBtdWx0aSBsYW5ndWFnZSBtb2RlLCB1c2UKCUFEQV9QUk9KRUNUX1BBVEggaWYgdmFsdWUgb2YgR1BSX1BST0pFQ1RfUEFUSCBpcyBlbXB0eS4KCgkqIHByai1tYWtyLmFkYjogbmV3IHBhcmFtZXRlciBDdXJyZW50X0RpcgoKCSogcHJqLW5tc2MuYWRzLCBwcmotbm1zYy5hZGIgKEZpbmRfRXhwbGljaXRfU291cmNlcyk6IERvIG5vdCBsb29rIGZvcgoJQWRhIHNvdXJjZXMgd2hlbiBsYW5ndWFnZSBpcyBub3QgQWRhLgoJQ2hhbmdlIE9wdC5Gb2xsb3dfTGlua3MgdG8gT3B0LkZvbGxvd19MaW5rc19Gb3JfRmlsZXMuCgkoRmluZF9FeGNsdWRlZF9Tb3VyY2VzLCBGaW5kX0V4cGxpY2l0X1NvdXJjZXMpOiBuZXcgc3VicHJvZ3JhbXMKCShNdXN0X0NoZWNrX0NvbmZpZ3VyYXRpb24sIERlZmF1bHRfTGFuZ3VhZ2VfSXNfQWRhKTogbmV3IGZsYWdzLgoJKExvY2F0ZV9EaXJlY3RvcnkpOiBBbHdheXMgcmVzb2x2ZSBsaW5rcyB3aGVuIGNvbXB1dGluZyBDYW5vbmljYWxfUGF0aAoJKExvb2tfRm9yX1NvdXJjZXMpOiBNYWtlIHN1cmUgdGhhdCBOYW1lX0J1ZmZlciBjb250YWlucyB0aGUgZmlsZSBuYW1lCglpbiBTb3VyY2VfRmlsZXMgYmVmb3JlIGNoZWNraW5nIGZvciB0aGUgcHJlc2VuY2Ugb2YgYSBkaXJlY3RvcnkKCXNlcGFyYXRvci4KCU9wdGltaXplIGNhbGxzIHRvIE5hbWVfRmluZCB3aGVuIG9uIGNhc2Ugc2Vuc2l0aXZlIHN5c3RlbXMuCgkoQm9keV9TdWZmaXhfSWRfT2YsIFNwZWNfU3VmZml4X0lkX09mKTogbmV3IHZlcnNpb24gdGhhdCB0YWtlcyBhIG5hbWVfaWQKCWFzIGEgcGFyYW1ldGVyLgoJKFByai5ObXNjLkNoZWNrKTogbmV3IHBhcmFtZXRlciBDdXJyZW50X0RpcgoJKENoZWNrX0FkYV9OYW1pbmdfU2NoZW1lcyk6IFJlc3RyaWN0aW9ucyBvbiBzdWZmaXhlcyBhcmUgcmVsYXhlZC4gVGhleQoJY2Fubm90IGJlIGVtcHR5IGFuZCB0aGUgc3BlYyBzdWZmaXggY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBib2R5IG9yCglzZXBhcmF0ZSBzdWZmaXguCgkoR2V0X1VuaXQpOiBXaGVuIGEgZmlsZSBuYW1lIGNhbiBiZSBvZiBzZXZlcmFsIHVuaXQga2luZHMgKHNwZWMsIGJvZHkgb3IKCXN1YnVuaXQpLCBhbHdheXMgY29uc2lkZXIgdGhlIGxvbmdlc3Qgc3VmZml4LgoJKENoZWNrX0NvbmZpZ3VyYXRpb24pOiBEbyBub3QgaXNzdWUgYW4gZXJyb3IgaWYgdGhlcmUgaXMgbm8gY29tcGlsZXIKCWZvciBhIGxhbmd1YWdlLiBKdXN0IGlzc3VlIGEgd2FybmluZyBhbmQgaWdub3JlIHRoZSBzb3VyY2VzIGZvciB0aGUKCWxhbmd1YWdlLgoJKENoZWNrX0xpYnJhcnlfQXR0cmlidXRlcyk6IE9ubHkgY2hlY2sgTGlicmFyeV9EaXIgaWYgTGlicmFyeV9OYW1lIGlzCglub3QgZW1wdHkuCgkoQ2hlY2tfTmFtaW5nX1NjaGVtZXMuTWFrZWRfVW5pdCk6IE9ubHkgb3V0cHV0IG1lc3NhZ2UgaWYgaGlnaCB2ZXJib3NpdHkKCShVbml0X0V4Y2VwdGlvbnMpOiBOZXcgaGFzaCB0YWJsZQoJKENoZWNrX05hbWluZ19TY2hlbWVzKTogQ2hlY2sgaWYgYSBmaWxlIHRoYXQgY291bGQgYmUgYSB1bml0IGJlY2F1c2Ugb2YKCXRoZSBuYW1pbmcgc2NoZW1lIGlzIG5vdCBpbiBmYWN0IGEgc291cmNlIGJlY2F1c2UgdGhlcmUgaXMgYW4gZXhjZXB0aW9uCglmb3IgdGhlIHVuaXQuCgkoTG9va19Gb3JfU291cmNlcyk6IFB1dCB0aGUgdW5pdCBleGNlcHRpb25zIGluIGhhc2ggdGFibGUKCVVuaXRfRXhjZXB0aW9ucwoJKEdldF9Vbml0X0V4Y2VwdGlvbnMpOiBHaXZlIGluaXRpYWwgdmFsdWUgTm9fU291cmNlIHRvIGxvY2FsIHZhcmlhYmxlCglPdGhlcl9QYXJ0IHRvIGF2b2lkIGV4Y2VwdGlvbiB3aGVuIGNvZGUgaXMgY29tcGlsZWQgd2l0aCB2YWxpZGl0eQoJY2hlY2tpbmcuCgkoR2V0X1NvdXJjZXNfRnJvbV9GaWxlKTogQ2hlY2sgdGhhdCB0aGVyZSBpcyBubyBkaXJlY3RvcnkgaW5mb3JtYXRpb24KCWluIHRoZSBmaWxlIG5hbWVzLgoJKExvb2tfRm9yX1NvdXJjZXMpOiBDaGVjayB0aGF0IHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiBpbiB0aGUKCWxpc3Qgb2YgZmlsZSBuYW1lcyBpbiBTb3VyY2VfRmlsZXMuCgkoTG9va19Gb3JfU291cmNlcyk6IEluIG11bHRpLWxhbmd1YWdlIG1vZGUsIGRvIG5vdCBhbGxvdyBleGNlcHRpb24gZmlsZQoJbmFtZXMgdGhhdCBhcmUgZXhjbHVkZWQuCgkoRXhjbHVkZWRfU291cmNlc19IdGFibGUpOiBOZXcgaGFzaCB0YWJsZQoJKFNlYXJjaF9EaXJlY3Rvcmllcy5DaGVja19GaWxlKTogTmV3IHByb2NlZHVyZSB0byBzaW1wbGlmeQoJU2VhcmNoX0RpcmVjdG9yaWVzLgoJKFNlYXJjaF9EaXJlY3Rvcmllcyk6IERvIG5vdCBjb25zaWRlciBleGNsdWRlZCBzb3VyY2VzCgkoTG9va19Gb3JfU291cmNlcyk6IFBvcHVsYXRlIEV4Y2x1ZGVkX1NvdXJjZXNfSHRhYmxlIGJlZm9yZSBjYWxsaW5nCglTZWFyY2hfRGlyZWN0b3JpZXMuCgkoR2V0X0V4Y2VwdGlvbnMpOiBTZXQgY29tcG9uZW50IExhbmdfS2luZCBvZiBTb3VyY2VfRGF0YQoJKEdldF9Vbml0X0V4Y2VwdGlvbnMpOiBEaXR0bwoJKFNlYXJjaF9EaXJlY3Rvcmllcyk6IERpdHRvCgoJKiBwcmotcGFycy5hZGI6IG5ldyBwYXJhbWV0ZXIgQ3VycmVudF9EaXIKCgkqIHByai1wYXJ0LmFkcywgcHJqLXBhcnQuYWRiOiAKCUNoYW5nZSBPcHQuRm9sbG93X0xpbmtzIHRvIE9wdC5Gb2xsb3dfTGlua3NfRm9yX0ZpbGVzLgoJKE9wdC5Gb2xsb3dfTGlua3NfRm9yX0RpcnMpOiBOZXcgZmxhZwoJKFByb2plY3RfUGF0aF9OYW1lX09mKTogQ2FjaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgdGhpcyByb3V0aW5lIGFzCglMb2NhdGVfUmVndWxhcl9GaWxlIGlzIGEgY29zdGx5IHJvdXRpbmUuIFRoZSBjb2RlIHRvIG91dHB1dCBhIGxvZwoJaW5mb3JtYXRpb24gYW5kIHRoZSBlZmZlY3RpdmUgY2FsbCB0byBMb2NhdGVfUmVndWxhcl9GaWxlIGlzIG5vdwoJZmFjdG9yaXplZCBpbnRvIGEgcm91dGluZSAoY29kZSBjbGVhbi11cCkuCgkoUGFyc2UsIFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogbmV3IHBhcmFtZXRlciBDdXJyZW50X0RpcgoJV2hlbiBtYWluIHByb2plY3QgZmlsZSBjYW5ub3QgYmUgZm91bmQsIGluZGljYXRlIGluIHRoZSBlcnJvcgoJbWVzc2FnZSB0aGUgcHJvamVjdCBwYXRoIHRoYXQgd2FzIHVzZWQgdG8gZG8gdGhlIHNlYXJjaC4KCgkqIHByai1wcm9jLmFkcywgcHJqLXByb2MuYWRiIChPcHQuRm9sbG93X0xpbmtzX0Zvcl9EaXJzKTogTmV3IGZsYWcKCShQcmouUHJvYy5Qcm9jZXNzKik6IG5ldyBwYXJhbWV0ZXIgQ3VycmVudF9EaXIKCgkqIHN3aXRjaC1tLmFkYjogQ2hhbmdlIE9wdC5Gb2xsb3dfTGlua3MgdG8gT3B0LkZvbGxvd19MaW5rc19Gb3JfRmlsZXMKCjIwMDctMTItMTMgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIHJlc3RyaWN0LmFkcywgcmVzdHJpY3QuYWRiIChDaGVja19JbXBsaWNpdF9EeW5hbWljX0NvZGVfQWxsb3dlZCk6IE5ldwoJcHJvY2VkdXJlIHRvIGJlIGNhbGxlZCBmcm9tIHRoZSBiYWNrIGVuZCB0byBjaGVjayB0aGUKCU5vX0ltcGxpY2l0X0R5bmFtaWNfQ29kZSByZXN0cmljdGlvbi4KCjIwMDctMTItMTMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHJ0c2ZpbmQuYWRiIChDaGVja19DUlQpOiBUYWtlIGludG8gYWNjb3VudCBSVEVfQXZhaWxhYmxlX0NhbGwKCUZpeGVzIGFub3RoZXIgY2FzZSB3aGVyZSBSVEVfQXZhaWxhYmxlX0NhbGwgd2FzIGlnbm9yZWQgaW5zdGVhZCBvZiBiZWluZwoJdGFrZW4gaW50byBhY2NvdW50LgoJKExvYWRfRmFpbCk6IERpdHRvLgoKCSogcnRzZmluZC5hZHM6IEFkZCBuZXcgZW50cmllcy4KCjIwMDctMTItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1ieW9ybWEuYWRiLCBnLWJ5b3JtYS5hZHMsIGctZGVjc3RyLmFkYiwgZy1kZWNzdHIuYWRzLAoJZy1kZXV0c3QuYWRzLCBnLWVuY3N0ci5hZGIsIGctZW5jc3RyLmFkcywgZy1lbnV0c3QuYWRzOiBOZXcgZmlsZXMuCgoJKiBzY24uYWRiOiBJbXBsZW1lbnQgQk9NIHJlY29nbml0aW9uCgoyMDA3LTEyLTEzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoQ2hlY2tfUHJpdmF0ZV9DaGlsZF9Vbml0KTogQSBub24tcHJpdmF0ZSBsaWJyYXJ5IGxldmVsCglzdWJwcm9ncmFtIGJvZHkgdGhhdCBhY3RzIGFzIGl0cyBvd24gc3BlYyBtYXkgbm90IGhhdmUgYSBub24tcHJpdmF0ZQoJV0lUSCBjbGF1c2Ugb24gYSBwcml2YXRlIHNpYmxpbmcuCgkoQnVpbGRfVW5pdF9OYW1lKTogSWYgdGhlIHBhcmVudCB1bml0IGluIHRoZSBuYW1lIGluIGEgd2l0aF9jbGF1c2Ugb24gYQoJY2hpbGQgdW5pdCBpcyBhIHJlbmFtaW5nLCBjcmVhdGUgYW4gaW1wbGljaXQgd2l0aF9jbGF1c2Ugb24gdGhhdAoJcGFyZW50LCBhbmQgbm90IG9uIHRoZSB1bml0IGl0IHJlbmFtZXMsIHRvIHByZXZlbnQgdmlzaWJpbGl0eSBlcnJvcnMKCWluIHRoZSBjdXJyZW50IHVuaXQuCgoyMDA3LTEyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKEluc3RhbnRpYXRlX0Zvcm1hbF9TdWJwcm9ncmFtKTogSW4gdGhlIHN1YnByb2dyYW0KCXJlbmFtaW5nIGRlY2xhcmF0aW9uLCB1c2UgdGhlIFNsb2NzIG9mIHRoZSBmb3JtYWwgcGFyYW1ldGVycyBmcm9tIHRoZQoJZGVjbGFyYXRpb24gb2YgdGhlIGZvcm1hbCBzdWJwcm9ncmFtIHdoZW4gY3JlYXRpbmcgdGhlIGZvcm1hbCBwYXJhbWV0ZXIKCWVudGl0aWVzIGluIHRoZSByZW5hbWluZyBkZWNsYXJhdGlvbi4KCShBbmFseXplX0Zvcm1hbF9UeXBlX0RlY2xhcmF0aW9uKTogQ2hhbmdlIHRoZSBwbGFjZW1lbnQgb2YgdGhlIGVycm9yCgltZXNzYWdlIGNvbmNlcm5pbmcgaWxsZWdhbCBrbm93biBkaXNjcmltaW5hbnRzLiBJdCBpcyBub3cgcG9zdGVkIG9uIHRoZQoJdHlwZSByYXRoZXIgdGhhbiBvbiB0aGUgZmlyc3QgZGlzY3JpbWluYW50LiBUaGlzIGNoYW5nZSBlbnN1cmVzIGVhcmx5CgllcnJvciByZXBvcnQuCgkoRnJlZXplX1N1YnByb2dyYW1fQm9keSk6IElmIHRoZSBnZW5lcmljIHN1YnByb2dyYW0gaXMgbmVzdGVkIHdpdGhpbgoJdGhlIHBhY2thZ2UgYm9keSB0aGF0IGNvbnRhaW5zIHRoZSBpbnN0YW5jZSwgZG8gbm90IGdlbmVyYXRlIGFuCglvdXQtb2YtcGxhY2UgZnJlZXplIG5vZGUgZm9yIHRoZSBlbmNsb3NpbmcgcGFja2FnZS4KCShDb2xsZWN0X1ByZXZpb3VzX0luc3RhbnRpYXRpb25zKTogSWdub3JlIGludGVybmFsIGluc3RhbnRpYXRpb25zCglnZW5lcmF0ZWQgZm9yIGZvcm1hbCBwYWNrYWdlcy4KCShWYWxpZGF0ZV9EZXJpdmVkX1R5cGVfSW5zdGFuY2UpOiBBZGQgYSBjaGVjayB0aGF0IHdoZW4gYSBmb3JtYWwKCWRlcml2ZWQgdHlwZSBpcyBLbm93bl9Ub19IYXZlX1ByZWVsYWJfSW5pdCB0aGVuIHRoZSBhY3R1YWwgdHlwZSBtdXN0CgloYXZlIHByZWVsYWJvcmFibGUgaW5pdGlhbGl6YXRpb24sIGFuZCBpc3N1ZSBhbiBlcnJvciB3aGVuIHRoaXMKCWNvbmRpdGlvbiBpcyB2aW9sYXRlZC4KCjIwMDctMTItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcy1pbWVubmUuYWRiLCBzLWltZW5uZS5hZHM6IE5ldyBmaWxlcy4KCgkqIHMtaW1nYm9vLmFkYiwgcy1pbWdib28uYWRzLCBzLWltZ2NoYS5hZGIsIHMtaW1nY2hhLmFkcywgcy1pbWdkZWMuYWRiLCAKCXMtaW1nZGVjLmFkcywgcy1pbWdlbnUuYWRzLCBzLWltZ2ludC5hZGIsIHMtaW1naW50LmFkcywgcy1pbWdsbGQuYWRiLCAKCXMtaW1nbGxkLmFkcywgcy1pbWdsbGkuYWRiLCBzLWltZ2xsaS5hZHMsIHMtaW1nbGx1LmFkYiwgcy1pbWdsbHUuYWRzLCAKCXMtaW1ncmVhLmFkYiwgcy1pbWdyZWEuYWRzLCBzLWltZ3Vucy5hZGIsIHMtaW1ndW5zLmFkcywgcy1pbWd3Y2guYWRiLCAKCXMtaW1nd2NoLmFkczogTmV3IGNhbGxpbmcgc2VxdWVuY2UgZm9yIEltYWdlIHJvdXRpbmVzIHRvIGF2b2lkIHNlYwoJc3RhY2sgdXNhZ2UuCgoyMDA3LTEyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMy5hZHMsIHNlbV9jaDMuYWRiIChDaGVja19BYnN0cmFjdF9PdmVycmlkaW5nKTogQXZvaWQKCWdlbmVyYXRpb24gb2Ygc3B1cmlvdXMgZXJyb3IgaWYgcGFyZW50IGlzIGFuIGludGVyZmFjZSB0eXBlOyBjYXVzZWQKCWJlY2F1c2UgcHJlZGVmaW5lZCBwcmltaXRpdmUgYm9kaWVzIHdpbGwgYmUgZ2VuZXJhdGVkIGxhdGVyIGJ5CglGcmVlemVfUmVjb3JkX1R5cGUuCgkoUHJvY2Vzc19TdWJ0eXBlKTogVGhlIHN1YnR5cGUgaW5oZXJpdHMgdGhlIEtub3duX1RvX0hhdmVfUHJlZWxhYl9Jbml0CglmbGFnLgoJKERlcml2ZV9TdWJwcm9ncmFtcyk6IEhhbmRsZSBkZXJpdmF0aW9ucyBvZiBwcmVkZWZpbmVkIHByaW1pdGl2ZXMKCWFmdGVyIGFsbCB0aGUgdXNlci1kZWZpbmVkIHByaW1pdGl2ZXMgdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUKCWZvdW5kIGluIHByb3BlciBvcmRlciBpbiBpbnN0YW50aWF0aW9ucy4KCShBZGRfSW50ZXJmYWNlX1RhZ19Db21wb25lbnRzLCBJbmhlcml0X0NvbXBvbmVudHMpOiBVcGRhdGUgb2NjdXJyZW5jZXMKCW9mIFJlbGF0ZWRfSW50ZXJmYWNlIHRvIFJlbGF0ZWRfVHlwZS4KCShSZWNvcmRfVHlwZV9EZWNsYXJhdGlvbik6IE1pbm9yIHJlb3JkZXJpbmcgb2YgY2FsbHMgdG8gZGVjb3JhdGUgdGhlCglUYWcgY29tcG9uZW50IGJlY2F1c2UgdGhlIGVudGl0eSBtdXN0IGhhdmUgc2V0IGl0cyBFa2luZCBhdHRyaWJ1dGUKCWJlZm9yZSBzZXR0aW5nIGl0cyBJc19UYWcgYXR0cmlidXRlLgoJKEFuYWx5emVfU3VidHlwZV9EZWNsYXJhdGlvbik6IEluIHRoZSBjYXNlIG9mIHN1YnR5cGVzIHdpdGgKCVByaXZhdGVfS2luZCwgaW5oZXJpdCBLbm93bl9Ub19IYXZlX1ByZWVsYWJfSW5pdCBmcm9tIHRoZSBwYXJlbnQuCgoyMDA3LTEyLTEzICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IEluY2x1ZGUgdGhlIHJlcXVldWUKCXN0YXRlbWVudCB0byB0aGUgbGlzdCBvZiBjb250ZXh0cyB3aGVyZSBhIHNlbGVjdGVkIGNvbXBvbmVudCB3aXRoIGEKCWNvbmN1cnJlbnQgdGFnZ2VkIHR5cGUgcHJlZml4IHNob3VsZCB5aWVsZCBhIHByaW1pdGl2ZSBvcGVyYXRpb24uCgkoRmluZF9QcmltaXRpdmVfT3BlcmF0aW9uKTogSGFuZGxlIGNhc2Ugb2YgY2xhc3Mtd2lkZSB0eXBlcy4KCShBbmFseXplX092ZXJsb2FkZWRfU2VsZWN0ZWRfQ29tcG9uZW50KTogSWYgdHlwZSBvZiBwcmVmaXggaXMKCWNsYXNzLXdpZGUsIHVzZSB2aXNpYmxlIGNvbXBvbmVudHMgb2YgYmFzZSB0eXBlLgoJKFJlc29sdmVfU2VsZWN0ZWRfQ29tcG9uZW50KTogRGl0dG8uCgkoVHJ5X1ByaW1pdGl2ZV9PcGVyYXRpb24sIENvbGxlY3RfR2VuZXJpY19UeXBlX09wcyk6IElmIHRoZSB0eXBlIGlzIGEKCWZvcm1hbCBvZiBhIGdlbmVyaWMgc3VicHJvZ3JhbS4gZmluZCBjYW5kaWRhdGUgaW50ZXJwcmV0YXRpb25zIGJ5CglzY2FubmluZyB0aGUgbGlzdCBvZiBnZW5lcmljIGZvcm1hbCBkZWNsYXJhdGlvbnMuOgoJKFByb2Nlc3NfSW1wbGljaXRfRGVyZWZlcmVuY2VfUHJlZml4KTogSWYgdGhlIHByZWZpeCBoYXMgYW4gaW5jb21wbGV0ZQoJdHlwZSBmcm9tIGEgbGltaXRlZF93aXRoX2NsYXVzZSwgYW5kIHRoZSBmdWxsIHZpZXcgaXMgYXZhaWxhYmxlLCB1c2UgaXQKCWZvciBzdWJzZXF1ZW50IHNlbWFudGljIGNoZWNrcy4KCShDaGVja19NaXNzcGVsbGVkX1NlbGVjdG9yKTogVXNlIE5hbWV0LlNwLklzX0JhZF9TcGVsbGluZ19PZiBmdW5jdGlvbgoJKEZpbmRfUHJpbWl0aXZlX09wZXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShBbmFseXplX092ZXJsb2FkZWRfU2VsZWN0ZWRfQ29tcG9uZW50KTogaW5zZXJ0IGV4cGxpY2l0IGRlcmVmZXJlbmNlCglvbmx5IG9uY2UgaWYgc2V2ZXJhbCBpbnRlcnByZXRhdGlvbnMgb2YgdGhlIHByZWZpeCB5aWVsZCBhbiBhY2Nlc3MgdHlwZS4KCShUcnlfT2JqZWN0X09wZXJhdGlvbik6IENvZGUgYW5kIGNvbW1lbnQgY2xlYW51cC4KCShBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IFJlb3JkZXIgbG9jYWwgdmFyaWFibGVzLiBNaW5vdCBjb21tZW50IGFuZAoJY29kZSByZWZvcm1hdHRpbmcuIFdoZW4gdGhlIHR5cGUgb2YgdGhlIHByZWZpeCBpcyB0YWdnZWQgY29uY3VycmVudCwgYQoJY29ycmVjdCBpbnRlcnByZXRhdGlvbiBtaWdodCBiZSBhdmFpbGFibGUgaW4gdGhlIHByaW1pdGl2ZSBhbmQKCWNsYXNzLXdpZGUgb3BlcmF0aW9ucyBvZiB0aGUgdHlwZS4KCjIwMDctMTItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRiIChBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBTcGVjaWFsIGVycm9yIG1lc3NhZ2UgZm9yCglyZW5hbWluZyBlbnRyeSBhcyBzdWJwcm9ncmFtIHVzaW5nIHJlbmFtZS1hcy1ib2R5IGlmIHN1YnByb2dyYW0gc3BlYwoJZnJvemVuLgoJKFVzZV9PbmVfVHlwZSk6IFRoZSBjbGF1c2UgaXMgbGVnYWwgb24gYW4gYWNjZXNzIHR5cGUgd2hvc2UgZGVzaWduYXRlZAoJdHlwZSBoYXMgYSBsaW1pdGVkIHZpZXcuCgkoRmluZF9EaXJlY3RfTmFtZSk6IFVzZSBOYW1ldC5TcC5Jc19CYWRfU3BlbGxpbmdfT2YgZnVuY3Rpb24KCShGaW5kX0V4cGFuZGVkX05hbWUpOiBVc2UgTmFtZXQuU3AuSXNfQmFkX1NwZWxsaW5nX09mIGZ1bmN0aW9uCgkoQW5hbHl6ZV9SZW5hbWVkX1ByaW1pdGl2ZV9PcGVyYXRpb24pOiBuZXcgcHJvY2VkdXJlIHRvIGRldGVybWluZSB0aGUKCW9wZXJhdGlvbiBkZW5vdGVkIGJ5IGEgc2VsZWN0ZWQgY29tcG9uZW50LgoJKEFuYWx5emVfUmVuYW1lZF9FbnRyeSk6IFJlc29sdmUgdGhlIHByZWZpeCBvZiB0aGUgZW50cnkgbmFtZSwgYmVjYXVzZQoJaXQgY2FuIGJlIGFuIGV4cHJlc3Npb24sIHBvc3NpYmx5IG92ZXJsb2FkZWQsIHRoYXQgcmV0dXJucyBhIHRhc2sgb3IKCWFuIGFjY2VzcyB0byBvbmUuCgoyMDA3LTEyLTEzICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDkuYWRiIChBbmFseXplX1JlcXVldWUpOiBBZGQgYSBsb2NhbCBmbGFnIHRvIGNhcHR1cmUgd2hldGhlciBhCglyZXF1ZXVlIHN0YXRlbWVudCBpcyBkaXNwYXRjaGluZy4gRG8gbm90IGVtaXQgYW4gZXJyb3Igd2hlbiB0aGUgbmFtZSBpcwoJbm90IGFuIGVudHJ5IGFuZCB0aGUgY29udGV4dCBpcyBhIGRpc3BhdGNoaW5nIHNlbGVjdC4gQWRkIGNvZGUgdG8KCXBlcmZvcm0gc3VidHlwZSBjb25mb3JtYW5jZSBiZXR3ZWVuIHRoZSBmb3JtYWxzIG9mIHRoZSBjdXJyZW50IGVudHJ5CglhbmQgdGhvc2Ugb2YgdGhlIHRhcmdldCBpbnRlcmZhY2UgcHJpbWl0aXZlLgoJKEFuYWx5emVfQXN5bmNocm9ub3VzX1NlbGVjdCwgQW5hbHl6ZV9Db25kaXRpb25hbF9FbnRyeV9DYWxsLCBBbmFseXplXwoJVGltZWRfRW50cnlfQ2FsbCk6IEFuYWx5emUgdGhlIHRyaWdnZXJpbmcgc3RhdGVtZW50IGFzIHRoZSBmaXJzdCBzdGVwIG9mCgl0aGUgcHJvY2Vzc2luZy4gSWYgdGhpcyBpcyBhIGRpc3BhdGNoaW5nIHNlbGVjdCwgcG9zdHBvbmUgdGhlIGFuYWx5c2lzCglvZiBhbGwgc2VsZWN0IHN0YXRlbWVudHMgdW50aWwgdGhlIEV4cGFuZGVyIHRyYW5zZm9ybXMgdGhlIHNlbGVjdC4gVGhpcwoJYXBwcm9hY2ggYXZvaWRzIGdlbmVyYXRpbmcgZHVwbGljYXRlIGlkZW50aWZpZXJzIGFmdGVyIHRoZSBFeHBhbmRlciBoYXMKCXJlcGxpY2F0ZWQgc29tZSBvZiB0aGUgc2VsZWN0IHN0YXRlbWVudHMuIEluIGNhc2UgdGhlIEV4cGFuZGVyIGlzCglkaXNhYmxlZCwgcGVyZm9ybSByZWd1bGFyIGFuYWx5c2lzLgoJKENoZWNrX1RyaWdnZXJpbmdfU3RhdGVtZW50KTogTmV3IHJvdXRpbmUuCgkoQW5hbHl6ZV9SZXF1ZXVlKTogRXhjbHVkZSBhbnkgaW50ZXJwcmV0YXRpb25zIHRoYXQgYXJlIG5vdCBlbnRyaWVzIHdoZW4KCWNoZWNraW5nIG92ZXJsb2FkZWQgbmFtZXMgaW4gYSByZXF1ZXVlLiBBbHNvIHRlc3QgdHlwZSBjb25mb3JtYW5jZSBmb3IKCW1hdGNoaW5nIGludGVycHJldGF0aW9ucyByYXRoZXIgdGhhbiByZXF1aXJpbmcgc3VidHlwZSBjb25mb3JtYW5jZSBhdAoJdGhhdCBwb2ludCB0byBjb25mb3JtIHdpdGggdGhlIFJNJ3MgcmVzb2x1dGlvbiBydWxlIGZvciByZXF1ZXVlcy4KCjIwMDctMTItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9kaXNwLmFkYiAoQ2hlY2tfRGlzcGF0Y2hpbmdfQ2FsbCk6IElmIGFuIGFjdHVhbCBpbiBhIGNhbGwgdG8gYW4KCWluaGVyaXRlZCBvcGVyYXRpb24gaXMgYSBkZWZhdWx0ZWQgdGFnLWluZGV0ZXJtaW5hdGUgY2FsbCwgYW5kIHRoZXJlIGlzCglhIHN0YXRpY2FsbHkgdGFnZ2VkIGFjdHVhbCwgdXNlIHRoZSBzdGF0aWMgdGFnIGFzIGEgY29udHJvbGxpbmcgYWN0dWFsCglmb3IgdGhlIGRlZmF1bHRlZCBhY3R1YWwuCgoyMDA3LTEyLTEzICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoKCSogc2VtX2V2YWwuYWRiIChFdmFsX1JlYWxfTGl0ZXJhbCk6IE5fQ29uc3RhbnRfRGVjbGFyYXRpb24gaXMgYSBzdGF0aWMKCWNvbnRleHQsIHNvIGRvIG5vdCBjYWxsIENoZWNrX05vbl9TdGF0aWNfQ29udGV4dC4KCjIwMDctMTItMTMgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBzZW1fdHlwZS5hZGIgKEZ1bmN0aW9uX0ludGVycF9IYXNfQWJzdHJhY3RfT3ApOiBBZGQgZ3VhcmQgdG8gY2hlY2sKCXdoZXRoZXIgZm9ybWFsIEUgaXMgYW4gZW50aXR5IHdoaWNoIG1heSBoYXZlIHBhcmFtZXRlcnMuCgoyMDA3LTEyLTEzICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX3V0aWwuYWRzLCBzZW1fdXRpbC5hZGIgKElzX0NvbmN1cnJlbnRfSW50ZXJmYWNlKTogTmV3IHJvdXRpbmUuCgkoU2V0X0NvbnZlbnRpb24pOiBOZXcgcHJvY2VkdXJlIHRvIHNldCB0aGUgQ29udmVudGlvbiBmbGFnLCBhbmQgaW4KCWFkZGl0aW9uIG1ha2Ugc3VyZSB0aGUgRmF2b3JfVG9wX0xldmVsIGZsYWcgaXMga2VwdCBpbiBzeW5jIChhbGwKCWZvcmVpZ24tbGFuZ3VhZ2UgY29udmVudGlvbnMgcmVxdWlyZSBGYXZvcl9Ub3BfTGV2ZWwgPSBUcnVlKS4KCShDb2xsZWN0X0Fic3RyYWN0X0ludGVyZmFjZXMpOiBVcGRhdGUgb2NjdXJyZW5jZXMgb2YgUmVsYXRlZF9JbnRlcmZhY2UKCXRvIFJlbGF0ZWRfVHlwZS4KCShDb2xsZWN0X0ludGVyZmFjZXNfSW5mbyk6IE1pbm9yIHVwZGF0ZSB0byBoYW5kbGUgdGhlIHR3byBzZWNvbmRhcnkKCWRpc3BhdGNoIHRhYmxlcy4gVXBkYXRlIG9jY3VycmVuY2Ugb2YgUmVsYXRlZF9JbnRlcmZhY2UgdG8gUmVsYXRlZF9UeXBlLgoJKEdlbmVyYXRlX1BhcmVudF9SZWYpOiBBZGQgcGFyYW1ldGVyIHRvIHNwZWNpZnkgZW50aXR5IHRvIGNoZWNrCgkoSXNfUHJlZWxhYm9yYWJsZV9FeHByZXNzaW9uKTogQWxsb3cgdGhlIG5hbWUgb2YgYSBkaXNjcmltaW5hbnQgdG8KCWluaXRpYWxpemUgYSBjb21wb25lbnQgb2YgYSB0eXBlIHdpdGggcHJlZWxhYm9yYWJsZSBpbml0aWFsaXphdGlvbi4KCVRoaXMgaW5jbHVkZXMgdGhlIGNhc2Ugb2YgYSBkaXNjcmltaW5hbCB1c2VkIGluIHN1Y2ggYSBjb250ZXh0LgoJKElzX0RlcGVuZGVudF9Db21wb25lbnRfT2ZfTXV0YWJsZV9PYmplY3QpOiBUYWtlIGludG8gYWNjb3VudCB0aGUKCWxhdGVzdCBBZGEgMjAwNSBydWxlcyBhYm91dCByZW5hbWluZyBhbmQgJ0FjY2VzcyBvZgoJZGlzY3JpbWluYW50LWRlcGVuZGVudCBjb21wb25lbnRzLgoJKENoZWNrX05lc3RlZF9BY2Nlc3MpOiBBZGQgaGFuZGxpbmcgd2hlbiB0aGVyZSBhcmUgbm8gZW5jbG9zaW5nCglzdWJwcm9ncmFtcyAoZS5nLiBjYXNlIG9mIGEgcGFja2FnZSBib2R5KS4KCShGaW5kX1BhcmFtZXRlcl9UeXBlKTogRmFjdG9yIHJvdXRpbmUgZnJvbSBzZXZlcmFsIG90aGVyIGNvbXBpbGVyIGZpbGVzLgoJUmVtb3ZlIHJvdXRpbmUgZnJvbSBGaW5kX092ZXJyaWRkZW5fU3luY2hyb25pemVkX1ByaW1pdGl2ZS4KCjIwMDctMTItMTMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzaW5wdXQuYWRiIChHZXRfU291cmNlX0ZpbGVfSW5kZXgpOiBBZGQgYXNzZXJ0aW9uIHRvIGd1YXJkIGFnYWluc3QKCWFuIGludmFsaWQgYWNjZXNzIHRvIGFuIHVuaW5pdGlhbGl6ZWQgc2xvdCBpbiB0aGUKCVNvdXJjZV9GaWxlX0luZGV4X1RhYmxlLgoKMjAwNy0xMi0xMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHNpbnB1dC1sLmFkYiAoTG9hZF9GaWxlKTogRGlzYWJsZSBzdHlsZSBjaGVja3Mgd2hlbiBwcmVwcm9jZXNzaW5nLgoKMjAwNy0xMi0xMyAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogcy1zb2ZsaW4uYWRzOiBBcHBseSBuZXcgcHJhZ21hIEZhdm9yX1RvcF9MZXZlbCB0byBhbGwKCWFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGVzIGluIHRoaXMgcGFja2FnZS4KCjIwMDctMTItMTMgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBzLXN0YXVzYS5hZHMgKFN0YWNrX0FuYWx5emVyKTogUmVtb3ZlIEZpcnN0X0lzX1RvcG1vc3QsIHJlZHVuZGFudAoJd2l0aCBTdGFja19Hcm93c19Eb3duIGluIFN5c3RlbS5QYXJhbWV0ZXJzLiBSZW5hbWUgQXJyYXlfQWRkcmVzcyBpbnRvCglTdGFja19PdmVybGF5X0FkZHJlc3MgYW5kIGRvY3VtZW50IHRoYXQgd2UgYXJlIHVzaW5nIGFuIGludGVybmFsCglhYnN0cmFjdGlvbi4KCShCeXRlX1NpemUsIFVuc2lnbmVkXzMyX1NpemUpOiBSZW1vdmUsIG5vdyB1c2VsZXNzLgoJKFBhdHRlcm5fVHlwZSwgQnl0ZXNfUGVyX1BhdHRlcm4pOiBOZXcgc3VidHlwZSBhbmQgY29uc3RhbnQsIHRvIGJlIHVzZWQKCWNvbnNpc3RlbnRseSB0aHJvdWdob3V0IHRoZSB2YXJpb3VzIGltcGxlbWVudGF0aW9uIHBpZWNlcy4KCgkqIHMtc3RhdXNhLmFkYiAoU3RhY2tfU2xvdHMpOiBOZXcgdHlwZSwgYWJzdHJhY3Rpb24gZm9yIHRoZSBzdGFjawoJb3ZlcmxheSB3ZSBhcmUgdXNpbmcgdG8gZmlsbCB0aGUgc3RhY2sgYXJlYSB3aXRoIHBhdHRlcm5zLgoJKFRvcF9TbG90X0luZGV4X0luLCBCb3R0b21fU2xvdF9JbmRleF9Jbik6IE9wZXJhdGlvbnMgb24gU3RhY2tfU2xvdHMuCgkoUHVzaF9JbmRleF9TdGVwX0ZvciwgUG9wX0luZGV4X1N0ZXBfRm9yKTogTGlrZXdpc2UuCgkoRmlsbF9TdGFjaywgQ29tcHV0ZV9SZXN1bHQpOiBVc2UgdGhlIFN0YWNrX1Nsb3RzIGFic3RyYWN0aW9uLgoKMjAwNy0xMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzLXN0b2VsZS5hZGIgKCJtb2QiKTogbW9kIG5lZ2F0aXZlIHZhbHVlIHJhaXNlcyBDb25zdHJhaW50X0Vycm9yCgoyMDA3LTEyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXRhc3N0YS5hZGI6IAoJKENyZWF0ZV9UYXNrKTogVGFrZSBpbnRvIGFjY291bnQgdGFza3MgY3JlYXRlZCBieSBmb3JlaWduIHRocmVhZHMuCglDb2RlIGNsZWFuIHVwOiB1c2UgY29uc3RhbnRzIGluc3RlYWQgb2YgaGFyZCBjb2RlZCB2YWx1ZXMuCgoyMDA3LTEyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHN0eWxlZy5hZGIgKENoZWNrX0NvbW1lbnQpOiBNb3JlIGxpYmVyYWwgcnVsZXMgZm9yIGNvbW1lbnQgcGxhY2VtZW50CgoyMDA3LTEyLTEzICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdGItYWx2bXMuYyAoc3RydWN0IHRiX2VudHJ5X3QsIF9fZ25hdF9iYWNrdHJhY2UpOiBSZXZlcnQgYmFjayB0byB1c2UKCW9mIFByb2NlZHVyZSBWYWx1ZSBpbnN0ZWFkIG9mIEZyYW1lIFBvaW50ZXIgYXMgdGhlIGludm9jYXRpb24KCWlkZW50aWZpZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGluIGVhY2ggdHJhY2ViYWNrCgllbnRyeS4KCgkqIGctdHJhc3ltLXZtcy1hbHBoYS5hZGIgKFRyYWNlYmFja19FbnRyeSwgUFZfRm9yLCBGUF9Gb3IsCglUQl9FbnRyeV9Gb3IpOiBSZXZlcnQgYmFjayB0byB1c2Ugb2YgUHJvY2VkdXJlIFZhbHVlIGluc3RlYWQgb2YgRnJhbWUKCVBvaW50ZXIgYXMgdGhlIGludm9jYXRpb24gaWRlbnRpZmllciBwYXNzZWQgdG8gdGJrJHN5bWJvbGl6ZS4KCgkqIHMtdHJhZW50LXZtcy5hZHMsIHMtdHJhZW50LXZtcy5hZGIKCShUcmFjZWJhY2tfRW50cnksIFBWX0ZvciwgRlBfRm9yLCBUQl9FbnRyeV9Gb3IpOiBSZXZlcnQgYmFjayB0byB1c2Ugb2YKCVByb2NlZHVyZSBWYWx1ZSBpbnN0ZWFkIG9mIEZyYW1lIFBvaW50ZXIgYXMgdGhlIGludm9jYXRpb24gaWRlbnRpZmllcgoJcGFzc2VkIHRvIHRiayRzeW1ib2xpemUuCgoyMDA3LTEyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHRidWlsZC5hZHMsIHRidWlsZC5hZGI6IAoJRml4IGxvY2F0aW9uIG9mIGZsYWcgZm9yIHVucmVjb2duaXplZCBwcmFnbWEgbWVzc2FnZQoKMjAwNy0xMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiB0cmVlcHIuYWRzLCB0cmVlcHIuYWRiOiAocGwpOiBpbXBsZW1lbnQgdXNlIG9mIHBvc2l0aXZlIHZhbHVlCglzaG9ydGhhbmRzCgoyMDA3LTEyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHhlaW5mby5hZGI6IFJlbW92ZSB3YXJuaW5ncwoJKiB4bm1ha2UuYWRiOiBSZW1vdmUgd2FybmluZ3MKCSogeHNpbmZvLmFkYjogUmVtb3ZlIHdhcm5pbmdzCgkqIHh0cmVlcHJzLmFkYjogUmVtb3ZlIHdhcm5pbmdzCgkqIHhzbmFtZXMuYWRiOiBSZW1vdmUgd2FybmluZ3MKCgkqIGEtbmdjb2FyLmFkYjogRml4IHR5cG8uCgkqIHMtaW50ZXJyLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgkqIGVudi5jOiBNaW5vciByZWZvcm1hdHRpbmcuCgkqIGctYnl0c3dhLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoJKiBnLXJhbm51bS5hZHM6IE1pbm9yIGRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnRzCgkqIHMtdGFzaW5mLW1pbmd3LmFkYjogTWlub3IgaGVhZGVyIGZpeAoJKiBhLWNscmVmaS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJKiBnLXN0dHNuZS5hZHM6IE1pbm9yIGRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnQKCSogZy1zdHRzbmUtbG9ja2luZy5hZHM6IE1pbm9yIGRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnQKCSogZy1zb2xpb3Atc29sYXJpcy5hZHM6IE1pbm9yIGRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnQKCSogZy1zb2xpb3AtbWluZ3cuYWRzOiBNaW5vciBkb2N1bWVudGF0aW9uIGltcHJvdmVtZW50CgkqIGctc29saW9wLmFkczogTWlub3IgZG9jdW1lbnRhdGlvbiBpbXByb3ZlbWVudAoJKiBleHBfYWdnci5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoJKiBkZWJ1Zy5hZGI6IEFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgZ3ByYnVpbGQgZGVidWcgZmxhZ3MKCSogZXhwX2NoMi5hZGI6IFVzZSBOa2luZF9JbiB0byBzaW1wbGlmeSBjb2RlIHRocm91Z2hvdXQKCSogZXhwX3Bha2QuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGctYWx0aXZlLmFkcywgZy1hbGxldmUuYWRiOiBSZW1vdmUgYXNzZXJ0aW9ucy4KCUFkZCBjb21tZW50IGFib3V0IG1pbm9yIGRpZmZlcmVuY2VzIGJldHdlZW4gdGFyZ2V0cyByZWdhcmRpbmcKCWZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbnMuCgoJKiBnLXRocmVhZC5hZGI6IFJlbW92ZSBwcmFnbWEgdW5yZWZlcmVuY2VkLgoJKiBsaWIuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCSogcGFyLWNoOS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZyBvZiBlcnJvciBtZXNzYWdlcwoJKiBzZW1fY2FzZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJKiBzLWZpbGVpby5hZGI6IE1pbm9yIHJlZm9ybWF0dGlubmcKCSogcy12bWV4dGEuYWRzOiBNaW5vciB0eXBvCgkqIHZ4YWRkcjJsaW5lLmFkYjogCglUYWtlIGludG8gYWNjb3VudCAnU3VjY2VzcycgdmFsdWUgYXMgcGVyIG5ldyBHTkFUIHdhcm5pbmcuCgoyMDA3LTEyLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGEtZGlyZWN0LmFkYiAoQ3JlYXRlX1BhdGgpOiBBbHdheXMgdGFrZSAnLycgYXMgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yLAoJZXZlbiBvbiBXaW5kb3dzCgoyMDA3LTEyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBEY291bWVudCBuZXcgcnVsZXMgZm9yIHN0eWxlIGNoZWNrIGNvbW1lbnQgYWxpZ25tZW50CglEb2N1bWVudCB0aGF0IHN1ZmZpeGVzIG1heSBiZSB0ZXJtaW5hdGlvbnMgb2YgZWFjaCBvdGhlcnMKCUFkZCBkb2MgZm9yIC1nbmF0dy5hIGFuZCAtZ25hdHcuQQoJRG9jdW1lbnQgZ25hdGJpbmQgLVd4IHN3aXRjaAoJRG9jdW1lbnQgQk9NIHJlY29nbml0aW9uCglEb2N1bWVudCBwcmFnbWEgSW1wbGVtZW50ZWRfQnlfRW50cnkuCglEb2N1bWVudCBuZXcgdW5pdHMuCgoJKiBnbmF0X3JtLnRleGk6IChGYXZvcl9Ub3BfTGV2ZWwpOiBEb2N1bWVudCBuZXcgcHJhZ21hLgoJQWRkIGRvYyBmb3IgcHJhZ21hIFVucmVmZXJlbmNlZCBzdXBwcmVzc2luZyBubyBlbnRpdGllcyByZWZlcmVuY2VkIG1zZwoJQWRkIGRvY3VtZW50YXRpb24gb2YgR05BVC5EaXJlY3RvcnlfT3BlcmF0aW9ucy5JdGVyYXRpb24KCUFkZCBkb2N1bWVudGF0aW9uIG9mIEdOQVQuUmFuZG9tX051bWJlcnMKCUFkZCBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgU2hhcmVkLgoJQ29ycmVjdCBkb2N1bWVudGF0aW9uIGZvciBCaXRfT3JkZXIKCUFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgUG9vbF9BZGRyZXNzIGF0dHJpYnV0ZS4KCUZpeCBhbmQgaW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIHByYWdtYSBtYWNoaW5lX2F0dHJpYnV0ZS4KCU5ldyBwcmFnbWEgRmFzdF9NYXRoCglEb2N1bWVudCBCT00gcmVjb2duaXRpb24KCgkqIHZtc19kYXRhLmFkczogQWRkIGVudHJpZXMgZm9yIC1nbmF0dy5hIC1nbmF0dy5BCglBZGQgL1dpZGVfQ2hhcmFjdGVyX0VuY29kaW5nIGZvciBiaW5kZXIKCUFkZCBxdWFsaWZpZXIgZm9yIHRoZSBuZXcgZ25hdHBwIG9wdGlvbiAtLW5vLXNlcGFyYXRlLWxvb3AtdGhlbgoKMjAwNy0xMi0xMyAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLWNvaGFzZS5hZHMsIGEtY2loYW1hLmFkcywgYS1jaWhhc2UuYWRzLCBhLWNvaGFtYS5hZHM6IERvY3VtZW50Cgl3aGljaCBnZW5lcmljIGZvcm1hbCBvcGVyYXRpb25zIGFyZSBjYWxsZWQgZm9yIGVhY2ggb3BlcmF0aW9uLgoKMjAwNy0xMi0xMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIHRiLWdjYy5jICh1d19kYXRhX3QsIHRyYWNlX2NhbGxiYWNrKTogT25seSBkZWZpbmUgaWYgbm90IEdDQy1TSkxKIGVoLgoJKF9fZ25hdF9iYWNrdHJhY2UpOiBFYXJseSByZXR1cm4gMCBpZiB1c2luZyBHQ0MtU0pMSiBlaC4KCjIwMDctMTItMTMgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWRhY29yZS5jb20+CgoJKiBzLW9zX2xpYi5hZHMsIHMtb3NfbGliLmFkYiAoTm9ybWFsaXplX1BhdGhuYW1lKTogRG8gbm90IGNvbXB1dGUKCVJlZmVyZW5jZV9EaXIgdW5sZXNzIHdlIGFjdHVhbGx5IG5lZWQgaXQuCgoyMDA3LTEyLTEzICBWYXNpbGl5IEZvZmFub3YgIDxmb2Zhbm92QGFkYWNvcmUuY29tPgoJICAgIFRyaXN0YW4gR2luZ29sZCAgPGdpbmdvbGRAYWRhY29yZS5jb20+CgoJKiBnLXNvY3RoaS12bXMuYWRzIChGZF9TZXRfQWNjZXNzKTogbWFrZSBpdCAzMi1iaXQuCgoJKiBzLW9zcHJpbS12bXMuYWRiLAoJYS1jYWxlbmQtdm1zLmFkYjogUmVtb3ZlIHByYWdtYSB3YXJuaW5nIG9mZiBhbmQgYWRkIHByYWdtYQoJdW5yZWZlcmVuY2VkLgoKMjAwNy0xMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBpbXB1bml0LmFkYjogQWRkIGVudHJpZXMgZm9yIG1pc3NpbmcgdW5pdHMKCgkqIE1ha2VmaWxlLnJ0bDogQWRkIG5ldyBydW4tdGltZSB1bml0cy4KCgkqIE1ha2UtbGFuZy5pbjogIFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDA3LTEyLTEzICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBpdHlwZXMuYWRzLCBpdHlwZXMuYWRiIChDcmVhdGVfSXR5cGUpOiBGb3IgYWNjZXNzLXRvLXN1YnByb2dyYW0KCXR5cGVzLCBzZXQgQ2FuX1VzZV9JbnRlcm5hbF9SZXAgYXBwcm9wcmlhdGVseSwgYmFzZWQgb24KCUFsd2F5c19Db21wYXRpYmxlX1JlcF9Pbl9UYXJnZXQuCgoyMDA3LTEyLTEzICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKFNjYW5fTWFrZV9BcmcpOiBBZGQgdGVzdCBmb3IgLWFhbXBfdGFyZ2V0IHN3aXRjaCwgcGFzc2luZwoJaXQgdG8gdGhlIGZyb250IGVuZCBhbmQgc2V0dGluZyB0aGUgYWFtcF90YXJnZXQgZW52aXJvbm1lbnQgdmFyaWFibGUKCXRvIHRoZSBzd2l0Y2gncyBhcmd1bWVudCB0byBlbnN1cmUgdGhhdCBnbmFhbXBiaW5kIGFuZCBnbmFhbXBsaW5rIHdpbGwKCXRha2UgdGhlIHNwZWNpZmllZCBsaWJyYXJ5IGludG8gYWNjb3VudC4KCShNYWtlKTogT25seSBzZXQgQ2hlY2tfT2JqZWN0X0NvbnNpc3RlbmN5IHRvIEZhbHNlIGZvciBKVk0sIG5vdCBmb3IgQ0lMCgl0YXJnZXQsIHNpbmNlIHRoZSBDSUwgY29tcGlsZXIgc3VwcG9ydHMgYW4gIm9iamVjdCIgZmlsZSAoLmlsIGZpbGVzKS4KCjIwMDctMTItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogc3ltYm9scy1wcm9jZXNzaW5nLXZtcy1pYTY0LmFkYiAoUHJvY2Vzcy5Ta2lwX0hhbGYpOiBOZXcgcHJvY2VkdXJlCgkoUHJvY2Vzcy5IKTogUmVtb3ZlIHZhcmlhYmxlLiBSZXBsYWNlIFJlYWRfSGFsZiAoSCkgd2l0aCBTa2lwX0hhbGYuCgoyMDA3LTEyLTEzICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoKCSogcy1wYXJhbWUtdnh3b3Jrcy5hZGI6IAoJVXBkYXRlIGNvbW1lbnRzIHRvIHJlZmxlY3QgdXNhZ2Ugb2YgdGhpcyBwYWNrYWdlIGJ5IE51Y2xldXMuCgoyMDA3LTEyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBpLXZ4d29yay5hZHM6IEtpbGwgbmV3IHdhcm5pbmcgb24gQ29udmVudGlvbiBDLCBzaW5jZSBjaGFuZ2luZyB0aGUKCXNwZWMgd291bGQgYnJlYWsgY29kZS4KCgkqIGktZm9yYmxhLXVuaW1wbGVtZW50ZWQuYWRzLCB2eF9zdGFja19pbmZvLmM6IE5ldyBmaWxlcy4KCgkqIHN5c3RlbS12eHdvcmtzLWFscGhhLmFkczogUmVtb3ZlZC4KCjIwMDctMTItMTAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBhZGEtdHJlZS5oIChUWVBFX1JFVFVSTlNfQllfVEFSR0VUX1BUUl9QKTogTW92ZSBhcm91bmQuCgoyMDA3LTEyLTA5ICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCglQUiBhZGEvMzQzNjYKCSogc2VtX2NoMy5hZGIgKERlc2lnbmF0ZXNfVCk6IE5ldyBmdW5jdGlvbi4KCShNZW50aW9uc19UKTogRmFjdG9yIHJldXNhYmxlIHBhcnQgb2YgdGhlIGxvZ2ljIGludG8gRGVzaWduYXRlc19ULgoJQ29uc2lkZXIgbm9uLWFjY2VzcyBwYXJhbWV0ZXJzIGFuZCBhY2Nlc3MgYW5kIG5vbi1hY2Nlc3MgcmVzdWx0LgoJKENoZWNrX0Fub255bW91c19BY2Nlc3NfQ29tcG9uZW50cyk6IFNldCBla2luZCBvZiBhbm9ueW1vdXMgYWNjZXNzIHRvCglFX1N1YnByb2dyYW1fVHlwZSB0byBFX0Fub255bW91c19BY2Nlc3NfU3VicHJvZ3JhbV9UeXBlLgoKCSogZWluZm8uYWRzOiBVcGRhdGUgY29tbWVudCBmb3IgRV9Bbm9ueW1vdXNfQWNjZXNzX1N1YnByb2dyYW1fVHlwZS4KCjIwMDctMTItMDcgIEx1ZG92aWMgQnJlbnRhICA8bHVkb3ZpY0BsdWRvdmljLWJyZW50YS5vcmc+CgoJUFIgYWRhLzM0MzYxCgkqIG1saWItdGd0LmFkYiwgbWxpYi10Z3QuYWRzOiBGaXggY29tbWVudHMgYXQgdGhlIHRvcCB0byByZWZsZWN0Cgl0aGUgbmV3IGltcGxlbWVudGF0aW9uIG9mIHRhcmdldC1zcGVjaWZpYyBjYWxscy4KCjIwMDctMTItMDcgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPGNhc2UgRV9BY2Nlc3NfVHlwZT46IFdoZW4gY29tcHV0aW5nCgl0aGUgZGVzaWduYXRlZCBmdWxsIHZpZXcsIG9ubHkgZm9sbG93IGEgc2Vjb25kIGxldmVsIEZ1bGxfVmlldyBsaW5rCglmb3IgTm9uX0xpbWl0ZWRfVmlld3Mgb2YgZnJvbV9saW1pdGVkX3dpdGggcmVmZXJlbmNlcy4KCQoyMDA3LTEyLTA3ICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCglQUiBhZGEvMTU4MDUKCSogc2VtX2NoNi5hZGIgKFByb2Nlc3NfRm9ybWFscyk6IFByZXZlbnQgYW4gYWNjZXNzIHR5cGUgZm9ybWFsCgl0byBiZSBpbml0aWFsaXplZCB3aXRoIGFuIGFjY2VzcyB0byBjb25zdGFudCBvYmplY3QuCgoJKiBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9PYmplY3RfRGVjbGFyYXRpb24pOiBTaWduYWwgYW4gZXJyb3IKCXdoZW4gYW4gYWNjZXNzIHRvIGNvbnN0YW50IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbiBhY2Nlc3MKCXZhbHVlLgoKCVBSIGFkYS8yMTM0NgoJKiBhLWRpcmVjdC5hZGIgKENvbXBvc2UpOiBDb250YWluaW5nX0RpcmVjdG9yeSBjYW4gYmUgYW4gZW1wdHkgc3RyaW5nLgoKMjAwNy0xMi0wNyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMzQxNzMKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxjYXNlIEVfQXJyYXlfVHlwZT46IFdoZW4gc2V0dGluZwoJdGhlIGFsaWdubWVudCBvbiB0aGUgR0NDIFhVQSBhcnJheSB0eXBlLCBzZXQgVFlQRV9VU0VSX0FMSUdOIGlmCgl0aGlzIGlzIGZyb20gYW4gYWxpZ25tZW50IGNsYXVzZSBvbiB0aGUgR05BVCBlbnRpdHkuCgkqIHV0aWxzLmMgKGNyZWF0ZV9maWVsZF9kZWNsKTogUmV3cml0ZSB0aGUgY29tcHV0YXRpb24gb2YgREVDTF9BTElHTgoJdG8gZGlzdGluZ3Vpc2ggdGhlIGNhc2Ugd2hlcmUgd2Ugc2V0IGl0IGZyb20gdGhlIHR5cGUncyBhbGlnbm1lbnQuCglXaGVuIHNvLCBwcm9wYWdhdGUgVFlQRV9VU0VSX0FMSUdOIGludG8gREVDTF9VU0VSX0FMSUdOIHRvIGluZGljYXRlCgl3aGV0aGVyIHRoaXMgYWxpZ25tZW50IHdhcyBzZXQgZnJvbSBhbiBleHBsaWNpdCBhbGlnbm1lbnQgY2xhdXNlLgoKMjAwNy0xMi0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAobWFrZV9wYWNrYWJsZV90eXBlKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJKGduYXRfdG9fZ251X2ZpZWxkKTogQXZvaWQgc2V0dGluZyBzaXplIGFuZCBwb3NpdGlvbiBtdWx0aXBsZSB0aW1lcy4KCSogdXRpbHMuYyAoZmluaXNoX3JlY29yZF90eXBlKTogUmV0cmlldmUgdGhlIHJlYWwgbmFtZSBvZiB0aGUgdHlwZS4KCjIwMDctMTItMDUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmFucy5jIChsdmFsdWVfcmVxdWlyZWRfcCk6IFRha2UgYmFzZSBub2RlIGRpcmVjdGx5IGluc3RlYWQKCW9mIGl0cyBwYXJlbnQuICBSZW5hbWUgc2Vjb25kIHBhcmFtZXRlciB0byAnZ251X3R5cGUnLgoJPE5fSW5kZXhlZF9Db21wb25lbnQ+OiBSZXR1cm4gMCBpZiB0aGUgbm9kZSBpc24ndCB0aGUgcHJlZml4LgoJPE5fU2xpY2U+OiBMaWtld2lzZS4KCShJZGVudGlmaWVyX3RvX2dudSk6IFJlbmFtZSBwYXJlbnRfcmVxdWlyZXNfbHZhbHVlIHRvIHJlcXVpcmVfbHZhbHVlLgoJQWRqdXN0IGNhbGxzIHRvIGx2YWx1ZV9yZXF1aXJlZF9wLgoKMjAwNy0xMi0wNSAgU2FtdWVsIFRhcmRpZXUgIDxzYW1AcmZjMTE0OS5uZXQ+CgoJUFIgYWRhLzIxNDg5CgkqIGV4cF9jaDkuYWRiIChCdWlsZF9TaW1wbGVfRW50cnlfQ2FsbCk6IEluaXRpYWxpemUgT1VUIGFjY2VzcyB0eXBlCglwYXJhbWV0ZXJzIG9mIGFuIGVudHJ5IGNhbGwuCgoyMDA3LTEyLTAzICBSb2JlcnQgRGV3YXIgPGRld2FyQGFkYWNvcmUuY29tPgogICAgICAgICAgICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCiAgICAJUFIgYWRhLzM0Mjg3CiAgICAJKiBzZW1fdXRpbC5hZGIgKFNhZmVfVG9fQ2FwdHVyZV9WYWx1ZSk6IERvIG5vdCBjYXB0dXJlIHZhbHVlcwogICAgCW9mIHZhcmlhYmxlcyBkZWNsYXJlZCBpbiBhIGxpYnJhcnktbGV2ZWwgcGFja2FnZS4KICAgIAoyMDA3LTEyLTAyICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCgkqIGNsZWFuLmFkYiAoQ2xlYW5fTGlicmFyeV9EaXJlY3RvcnkpOiBVc2UgRW1wdHlfU3RyaW5nJ0FjY2VzcyBpbnRlYWQKCW9mIEVtcHR5X1N0cmluZydVbmNoZWNrZWRfQWNjZXNzLgoKCSogTWFrZWZpbGUuaW46IEFkZCBzdXBwb3J0IGZvciBzaDQtbGludXguCgoJKiBzeXN0ZW0tbGludXgtc2g0LmFkczogTmV3IGZpbGUuCgoyMDA3LTEyLTAxICBLb3N0aWsgQmVsb3Vzb3YgIDxrb3N0aWtiZWxAdWtyLm5ldD4KCglQUiBhZGEvMzM3MjIKCSogZW52LmMgKF9fZ25hdF9zZXRlbnYpOiBGcmVlQlNEIDcgaGFzIGEgUE9TSVggY29uZm9ybWFudCBwdXRlbnYoKQoJYW5kIGl0cyBhcmd1bWVudCBtdXN0IG5vdCBiZSBmcmVlKCllZC4KCjIwMDctMTEtMjkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKG1ha2VfcGFja2FibGVfdHlwZSk6IFJldHJpZXZlIHRoZSByZWFsIG5hbWUgb2YgdGhlIHR5cGUuCgkobWF5YmVfcGFkX3R5cGUpOiBTaW1wbGlmeSBzaW1pbGFyIGNvZGUuCgoyMDA3LTExLTI4ICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCglQUiBhZGEvMTU4MDQKCSogcGFyLWNoMy5hZGIgKFBfVmFyaWFudF9QYXJ0KTogU2lnbmFsIGFuIGVycm9yIHdoZW4gYW55dGhpbmcgb3RoZXIKCXRoYW4gYW4gaWRlbnRpZmllciBpcyB1c2VkIGFmdGVyICJjYXNlIiBpbiBhIHZhcmlhbnRfcGFydC4KCglQUiBhZGEvMTczMTgKCSogcGFyLWNoNC5hZGIgKElzX1BhcmFtZXRlcmxlc3NfQXR0cmlidXRlKTogTmV3IG1hcC4KCShQX05hbWUsIFNjYW5fQXBvc3Ryb3BoZSBibG9jayk6IFBhcnNlIGxlZnQgcGFyZW50aGVzaXMgZm9sbG93aW5nCglhdHRyaWJ1dGUgbmFtZSBvciBub3QgZGVwZW5kaW5nIG9uIHRoZSBuZXcgbWFwLgoKCSogc2VtLWF0dHIuYWRiIChBbmFseXplX0F0dHJpYnV0ZSk6IFBhcmFtZXRlcmxlc3MgYXR0cmlidXRlcwoJcmV0dXJuaW5nIGEgc3RyaW5nIG9yIGEgdHlwZSB3aWxsIG5vdCBiZSBjYWxsZWQgd2l0aCBpbXByb3BlcgoJYXJndW1lbnRzLgoKCSogc2VtLWF0dHIuYWRzIChBdHRyaWJ1dGVfQ2xhc3NfQXJyYXkpOiBNb3ZlIHRvIHNuYW1lcy5hZHMuCgoJKiBzbmFtZXMuYWRzIChBdHRyaWJ1dGVfQ2xhc3NfQXJyYXkpOiBNb3ZlZCBmcm9tIHNlbS1hdHRyLmFkcy4KCglQUiBhZGEvMzI3OTIKCSogc2VtX2F0dHIuYWRiIChBbmFseXplX0F0dHJpYnV0ZSwgQXR0cmlidXRlX0ludGVnZXJfVmFsdWUgY2xhdXNlKToKCVNpZ25hbCBhbiBlcnJvciB3aGVuIGF0dHJpYnV0ZSBhcmd1bWVudCBpcyBhIGZpeGVkLXBvaW50IHZhbHVlIG9mCglhbiB1bmtub3duIHR5cGUuCgoJUFIgYWRhLzIyNTU5CgkqIHNlbV9jaDMuYWRiIChCdWlsZF9EZXJpdmVkX051bWVyaWNfVHlwZSk6IERvIG5vdCBzZXQgUk1fU2l6ZSBvbgoJYSBkZXJpdmVkIG9yZGluYXJ5IGZpeGVkIHBvaW50IHR5cGUuCgoJKiBzZW1fY2gxMy5hZGIgKEFuYWx5emVfQXR0cmlidXRlX0RlZmluaXRpb25fQ2xhdXNlKTogUmVjb21wdXRlCglSTV9TaXplIHdoZW4gYSBTbWFsbCBjbGF1c2UgaXMgZm91bmQuCgoyMDA3LTExLTI2ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKICAgICAgICBQUiAzNDA4MS9DKysKICAgICAgICAqIHRyYW5zLmMgKFN1YnByb2dyYW1fQm9keV90b19nbnUsIENvbXBpbGF0aW9uX1VuaXRfdG9fZ251KToKICAgICAgICBQYXNzICdmYWxzZScgZm9yIHRoZSBuZXcgYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uIHBhcmFtZXRlci4KICAgICAgICAqIHV0aWxzLmMgKGJ1aWxkX2Z1bmN0aW9uX3N0dWIpOiBMaWtld2lzZS4KCjIwMDctMTEtMjUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHV0aWxzLmMgKGduYXRfcHVzaGxldmVsKTogVXNlIEJMT0NLX0NIQUlOLgoJKGduYXRfcG9wbGV2ZWwpOiBMaWtld2lzZS4KCjIwMDctMTEtMjUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPEVfUmVjb3JkX1R5cGU+OiBJZiB0aGUgdHlwZSBoYXMKCXN0cmljdCBhbGlnbm1lbnQsIG5vIGFsaWdubWVudCBjbGF1c2UgYW5kIGEga25vd24gc3RhdGljIHNpemUsIGNhcAoJdGhlIHR5cGUgYWxpZ25tZW50IHRvIHRoZSBncmVhdGVzdCBwb3dlciBvZiAyIGZhY3RvciBvZiB0aGUgc2l6ZS4KCShnbmF0X3RvX2dudV9maWVsZCk6IElmIHRoZSBmaWVsZCBoYXMgYSBjb21wb25lbnQgY2xhdXNlLCBpcyBhbGlhc2VkCglvciBvZiBhIHR5cGUgd2l0aCBzdHJpY3QgYWxpZ25tZW50LCByZXF1aXJlIHRoYXQgaXRzIHNpemUgYmUgZXF1YWwgdG8KCXRoYXQgb2YgdGhlIHR5cGUuCgkodmFsaWRhdGVfc2l6ZSk6IFVzZSB0aGUgdHlwZSBzaXplIGFzIHRoZSBtaW5pbXVtIHNpemUgZm9yIGEgdHlwZSB3aXRoCglzdHJpY3QgYWxpZ25tZW50LgoKMjAwNy0xMS0yMyAgU2FtdWVsIFRhcmRpZXUgIDxzYW1AcmZjMTE0OS5uZXQ+CgoJKiBzLWlubWFvcC1wb3NpeC5hZGIsIHMtaW50bWFuLXZ4d29ya3MuYWRiLCBzLXRhcHJvcC1ocHV4LWRjZS5hZGIsCglzLXRhcHJvcC1pcml4LmFkYiwgcy10YXByb3AtbGludXguYWRiLCBzLXRhcHJvcC1seW54b3MuYWRiLAoJcy10YXByb3AtcG9zaXguYWRiLCBzLXRhcHJvcC10cnU2NC5hZGIsIHMtdGFwcm9wLXZ4d29ya3MuYWRiOgoJVXNlICdBY2Nlc3MgaW5zdGVhZCBvZiAnVW5jaGVja2VkX0FjY2VzcyBpbiBzZWNvbmQgYW5kIHRoaXJkCglhcmd1bWVudHMgb2YgcHRocmVhZF9zaWdtYXNrLgoKMjAwNy0xMS0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAoY2VpbF9hbGlnbm1lbnQpOiBOZXcgZnVuY3Rpb24uCgkoZ25hdF90b19nbnVfZW50aXR5KTogVXNlIGl0IHRvIHNldCB0aGUgYWxpZ25tZW50IG9uIGF0b21pYyB0eXBlcy4KCShtYWtlX3BhY2thYmxlX3R5cGUpOiBMaWtld2lzZS4KCjIwMDctMTEtMjIgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiB0cmFucy5jIChnbmF0X3RvX2dudSkgPGNhc2UgTl9GcmVlX1N0YXRlbWVudD46IFJlZm9ybWF0IGxpbmVzCgl0byBmaXQgaW4gODAgY29sdW1ucy4KCjIwMDctMTEtMjEgIEF1cmVsaWVuIEphcm5vIDxhdXJlbGllbkBhdXJlbDMyLm5ldD4KCgkqIHMtb3NpbnRlLWtmcmVlYnNkLWdudS5hZHMgKFRvX1RhcmdldF9Qcmlvcml0eSk6IE5ldyBmdW5jdGlvbi4KCSogTWFrZWZpbGUuaW46IEFkZCBFSF9NRUNIQU5JU009LWdjYyB0byBrZnJlZWJzZC1nbnUuIFJlbW92ZSBTWU1MSUIuCgoyMDA3LTExLTE5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8zNDA5OAoJKiBtaXNjLmMgKGduYXRfYWRqdXN0X3JsaSk6IERlbGV0ZS4KCShnbmF0X2luaXQpOiBEbyBub3QgaW5pdGlhbGl6ZSB0aGUgdHJhbnNsYXRpb24gY29kZSBoZXJlLgoJRG8gbm90IGNhbGwgc2V0X2xhbmdfYWRqdXN0X3JsaS4KCSogdHJhbnMuYyAoaW5pdF9jb2RlX3RhYmxlKTogTWFrZSBzdGF0aWMuCgkoZ25hdF9pbml0X3N0bXRfZ3JvdXApOiBEZWxldGUuCgkoZ2lnaSk6IEluaXRpYWxpemUgdGhlIHRyYW5zbGF0aW9uIGNvZGUgZW50aXJlbHkgaGVyZS4KCUVtaXQgZGVidWcgaW5mbyBmb3IgdGhlIGNvbW1vbiB0eXBlcyBoZXJlIGluc3RlYWQgb2YuLi4KCSogdXRpbHMuYyAoZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IC4uLmhlcmUuCgkqIGdpZ2kuaCAoaW5pdF9jb2RlX3RhYmxlKTogRGVsZXRlLgoJKGduYXRfaW5pdF9zdG10X2dyb3VwKTogTGlrZXdpc2UuCgoyMDA3LTExLTE2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdXRpbHMyLmMgKGJ1aWxkX2NhbGxfYWxsb2NfZGVhbGxvYykgPGlmIGdudV9vYmo+OiBNb3ZlIHRoZSBjb2RlCglyZXRyaWV2aW5nIGFuIGFsbG9jYXRvciByZXR1cm4gdmFsdWUgZnJvbSBhIHN1cGVyLWFsaWduZWQgYWRkcmVzcyBmcm9tCgloZXJlIHRvIC4uLgoJKiB0cmFucy5jIChnbmF0X3RvX2dudSkgPGNhc2UgTl9GcmVlX1N0YXRlbWVudD46IC4uLiBoZXJlLCBhbmQgZG9uJ3QKCWV4cGVjdCBhIHN1cGVyLWFsaWduZWQgYWRkcmVzcyBmb3IgYSBmYXQgb3IgdGhpbiBwb2ludGVyLgoJCjIwMDctMTEtMTQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmFucy5jIChjYWxsX3RvX2dudSk6IEFsd2F5cyBzZXQgdGhlIHNvdXJjZSBsb2NhdGlvbiBvbiB0aGUgY2FsbAoJZXhwcmVzc2lvbi4gIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zLWJ5LXRhcmdldCwgYWxzbyBzZXQgaXQgb24gdGhlCglhZGRyZXNzIGV4cHJlc3Npb24uCgoyMDA3LTExLTE0ICBTYW11ZWwgVGFyZGlldSAgPHNhbUByZmMxMTQ5Lm5ldD4KCgkqIGFkYWludC5jLCBpbml0LmMsIGluaXRpYWxpemUuYywgbGluay5jOiBSZW1vdmUgc3lzdGVtLXNwZWNpZmljCglzZWN0aW9ucyBvZiBub24tc3VwcG9ydGVkIEludGVyaXggdGFyZ2V0LgoKCSogcy1vc2ludGUtaW50ZXJpeC5hZHM6IFJlbW92ZWQuCgoJKiBpLWNzdHJpbi5hZHMgKGNoYXJzX3B0cik6IE1ha2UgaXQgYSBDIGNvbnZlbnRpb24gdHlwZS4KCjIwMDctMTEtMTMgIFNhbXVlbCBUYXJkaWV1ICA8c2FtQHJmYzExNDkubmV0PgoKCSogYS10YXNhdHQuYWRiOiBBZGQgYSBjb21tZW50IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhY2thZ2UKCWV4cGxhaW5pbmcgd2h5IGluIGdlbmVyYWwgJ1VuY2hlY2tlZF9BY2Nlc3MgbXVzdCBiZSB1c2VkIGluc3RlYWQKCW9mICdBY2Nlc3MuCgoJKiBzZW1fcHJhZy5hZGIgKFByb2Nlc3NfQ29udmVudGlvbik6IE1vdmUgdGhlIHRlc3QgZm9yIHRoZQoJZW50aXR5IG9uIHdoaWNoIHRoZSBDb252ZW50aW9uIHByYWdtYSBhcHBsaWVzIGRvd24gdG8gYWxzbwoJZm9yYmlkIHByYWdtYSBDb252ZW50aW9uIG9uIGVudW1lcmF0aW9uIGxpdGVyYWxzIHJlYWNoZWQKCXRocm91Z2ggcmVuYW1pbmdzLgoKMjAwNy0xMS0xMCAgU2FtdWVsIFRhcmRpZXUgIDxzYW1AcmZjMTE0OS5uZXQ+CgoJKiBhLXRhc2F0dC5hZGI6IFJldmVydCBwcmV2aW91cyBjaGFuZ2UgZm9yIHRoaXMgZmlsZSBhcyBpdCB3aWxsCglnZW5lcmF0ZSBhbiBlcnJvciB3aGVuIHRoaXMgcGFja2FnZSBpcyBpbnN0YW50aWF0ZWQgZnJvbSBhCglsb2NhbCBjb250ZXh0LgoKMjAwNy0xMS0wNyAgU2FtdWVsIFRhcmRpZXUgIDxzYW1AcmZjMTE0OS5uZXQ+CgoJKiBhLXRhc2F0dC5hZGI6IFR5cGUgV3JhcHBlciBzaG91bGQgYmUgZGVjbGFyZWQgaW4gY29tbWVudCBpbnN0ZWFkCglvZiBhbHJlYWR5IGRlY2xhcmVkIHR5cGUgTm9kZV9BY2Nlc3MuCglVc2UgJ0FjY2VzcyBpbnN0ZWFkIG9mICdVbmNoZWNrZWRfQWNjZXNzIHdoZW4gYXBwbGljYWJsZS4gTG9jYWwKCWxpZmV0aW1lIGlzIHRoZSBvbmUgb2YgdGhlIHBhY2thZ2UuCgkoU2V0X1ZhbHVlKTogVyBpcyBhbGxvY2F0ZWQgb24gdGhlIGhlYXAuCgoJKiBnLXNvY2tldC5hZGI6IFVzZSAnQWNjZXNzIGluc3RlYWQgb2YgJ1VuY2hlY2tlZF9BY2Nlc3Mgd2hlbgoJYXBwbGljYWJsZS4KCShHZXRfU29ja2V0X09wdGlvbik6IE9wdGxlbiBmb3JtYWwgb2YgQ19HZXRzb2Nrb3B0IGlzIG9mIGFuIGFub255bW91cwoJYWNjZXNzIHR5cGUuCgkoUmVjZWl2ZV9Tb2NrZXQpOiBGcm9tbGVuIGZvcm1hbCBvZiBDX1JlY3Zmcm9tIGlzIG9mIGFuIGFub255bW91cwoJYWNjZXNzIHR5cGUuCgoJKiBzLXRhYXNkZS5hZGI6IFVzZSAnQWNjZXNzIGluc3RlYWQgb2YgJ1VuY2hlY2tlZF9BY2Nlc3Mgd2hlbgoJYXBwbGljYWJsZS4KCShlbGFib3JhdGlvbiBjb2RlKTogVGltZXJfUXVldWUgbGlmZXRpbWUgaXMgdGhlIG9uZSBvZiB0aGUKCXBhY2thZ2UuCgoJKiB0cmFjZWJhay5jIChpMzg2IGFsdGVybmF0aXZlKTogUmVtb3ZlIHVzZWxlc3MgY29tcGFyYWlzb24KCXdoaWNoIGlzIGFsd2F5cyBmYWxzZTsgTE9XRVNUX0FERFJFU1MgaXMgMCBhbmQgaXMgbmV2ZXIgZ3JlYXRlcgoJdGhhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyLgoKCSogc2VtX2F0dHIuYWRiIChBbmFseXplX0F0dHJpYnV0ZSk6IFJlbW92ZSBkdXBsaWNhdGUgaWRlbnRpY2FsCgllbWJlZGRlZCBjaGVjayBmb3IgIkFkYV9WZXJzaW9uID49IEFkYV8wNSIuCgoyMDA3LTExLTA3ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChtYWtlX2FsaWduaW5nX3R5cGUpOiBTZXQgdGhlIG1vZGUgb2YgdGhlIFJFQ09SRF9UWVBFIHdlCgljcmFmdCBhbmQgZXhwYW5kIGNvbW1lbnQuCgoyMDA3LTExLTAxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBNb3ZlIHRyYW5zbGF0aW9uIG9mIC1mUlRTPSBhZnRlciAtZ25hdGV6IHN3aXRjaC4KCjIwMDctMTAtMjMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IFJlcGxhY2UgY2FsbCB0byBhYm9ydCB3aXRoCgljYWxsIHRvIGdjY191bnJlYWNoYWJsZS4KCShnbmF0X2luaXQpOiBMaWtld2lzZS4KCShnbmF0X2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkoZnBfcHJlY190b19zaXplKTogTGlrZXdpc2UuCgkoZnBfc2l6ZV90b19wcmVjKTogTGlrZXdpc2UuCgoyMDA3LTEwLTIzICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJUFIgYm9vdHN0cmFwLzMzNjA4CgkqIHRyYWNlYmFrLmM6ICN1bmRlZiBhYm9ydCBhZnRlciBpbmNsdWRpbmcgc3lzdGVtLmguCgoyMDA3LTEwLTIwICBEYW5ueSBTbWl0aCA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBNYWtlZmlsZS5pbiAoTElCR05BVF9UQVJHRVRfUEFJUlMpIEFkZCBzLXRhc2luZi1taW5ndy5hZGIsCglzLXRhc2luZi1taW5ndy5hZHMsIGEtZXhldGltLW1pbmd3LmFkYiwgYS1leGV0aW0tbWluZ3cuYWRzCglmb3Igd2luMzIgdGFyZ2V0cy4KCShFWFRSQV9HTkFUUlRMX1RBU0tJTkdfT0JKUyk6IEFkZCBhLWV4ZXRpbS5vIGZvciB3aW4zMiB0YXJnZXRzLgoKMjAwNy0xMC0xNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLXRydTY0LmFkYjogKEhpZGVfWWVsbG93X1pvbmUpOiBBZGQgT24gcGFyYW1ldGVyLgoJU2V0IHRoZSBwcm90ZWN0aW9uIHN0YXR1cyBvZiB0aGUgZ3VhcmQgcGFnZSBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgT24uCgoJKiBzLW9zaW50ZS10cnU2NC5hZHM6IChIaWRlX1llbGxvd19ab25lKTogQWRkIE9uIHBhcmFtZXRlci4KCgkqIHMtdGFwcm9wLXRydTY0LmFkYjogKEVudGVyX1Rhc2spOiBQYXNzIFRydWUgdG8gSGlkZV9ZZWxsb3dfWm9uZS4KCShFeGl0X1Rhc2spOiBQYXNzIEZhbHNlIHRvIEhpZGVfWWVsbG93X1pvbmUuCgoyMDA3LTEwLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtdGFwcm9wLXNvbGFyaXMuYWRiLCBzLXRhcHJvcC12bXMuYWRiLCBzLXRhcHJvcC1taW5ndy5hZGIsIAoJcy10YXByb3Atdnh3b3Jrcy5hZGIsIHMtdGFwcm9wLXBvc2l4LmFkYiwgYS1jYWxlbmQtdm1zLmFkYiwKCWEtY2FsZW5kLmFkYiwgYS1udWZscmEuYWRiLCBhLXRpZ2VhdS5hZGIsIGEtd3RnZWF1LmFkYiwgCgljaGVja3MuYWRiLCBiaW5kZ2VuLmFkYiwgZXZhbF9mYXQuYWRiLCBleHBfZml4ZC5hZGIsIGZtYXAuYWRiLCAKCWZyZWV6ZS5hZGIsIGctYXdrLmFkYiwgZy1jYWxlbmQuYWRiLCBnLWRpb3BpdC5hZGIsIGctZXhwZWN0LmFkYiwgCglnbmF0Y2hvcC5hZGIsIGduYXRsaW5rLmFkYiwgZy1zcGlwYXQuYWRiLCBnLXRocmVhZC5hZGIsIG1ha2UuYWRiLCAKCW1kbGwuYWRiLCBtbGliLmFkYiwgbWxpYi1wcmouYWRiLCBvc2ludC5hZGIsIHBhci1jaDMuYWRiLCBwcmouYWRiLCAKCXByai1tYWtyLmFkYiwgc2VtX3ByYWcuYWRiLCBzZW1fdHlwZS5hZGIsIHMtZmF0Z2VuLmFkYiwgcy1maWxlaW8uYWRiLCAKCXNpbmZvLmFkcywgc2lucHV0LWQuYWRiLCBzLXRhYXNkZS5hZGIsIHMtdGFzZGViLmFkcywgcy10YXNyZW4uYWRiLCAKCXMtdGFzc3RhLmFkYiwgcy10cG9ib3AuYWRiLCBzLXRwb3Nlbi5hZGIsIHN0eWxlc3cuYWRiLCB0eXBlcy5hZHMsCgl1aW50cC5hZGIsIHZhbGlkc3cuYWRiLCBtYWtlZ3ByLmFkYiwgYS1yYnRnc28uYWRiLCBhLWNyYnRnby5hZGIsIAoJYS1jb29yc2UuYWRiLCBhLWNvbnZlYy5hZGIsIGEtY29pbnZlLmFkYiwgYS1jb2hhbWEuYWRiLCBhLWNpb3JzZS5hZGIsIAoJYS1jaWhhbWEuYWRiLCBhLWNpZGxsaS5hZGIsIGEtY2h0Z29wLmFkYiwgYS1jZGxpbGkuYWRiLCBhLWNkbGlsaS5hZGIsIAoJYS1jb29ybXUuYWRiLCBhLWNpb3JtdS5hZGIsIGEtY2loYXNlLmFkYiwgYS1jb2hhc2UuYWRiLCBhLWNpb3JtYS5hZGIsIAoJYS1jb29ybWEuYWRiLCBhLXp0Z2VhdS5hZGIsIHN5bWJvbHMtdm1zLmFkYiwgYS1jcmRsbGkuYWRiLCAKCWEtY2FsYXJpLmFkYiwgYS1jYWxmb3IuYWRiLCBzLW9zX2xpYi5hZGIsIHMtcmVncGF0LmFkYiwgYS1uZ3JlYXIuYWRiOgoJTWlub3IgcmVmb3JtYXR0aW5nLgoJQWRkIFVucmVmZXJlbmNlZCBhbmQgV2FybmluZ3MgKE9mZikgcHJhZ21hcyBmb3IgY2FzZXMgb2YKCXZhcmlhYmxlcyBtb2RpZmllZCBjYWxscyB3aGVyZSB0aGV5IGFyZSBJTiBPVVQgb3IgT1VUIHBhcmFtZXRlcnMgYW5kCgl0aGUgcmVzdWx0aW5nIHZhbHVlcyBhcmUgbm90IHN1YnNlcXVlbnRseSByZWZlcmVuY2VkLiBJbiBhIGZldyBjYXNlcywKCXdlIGFsc28gcmVtb3ZlIHJlZHVuZGFudCBjb2RlIGZvdW5kIGJ5IHRoZSBuZXcgd2FybmluZ3MuCgoJKiB1Z193b3Jkcywgdm1zX2RhdGEuYWRzLCB1c2FnZS5hZGIsIHNlbV91dGlsLmFkYiwgc2VtX3V0aWwuYWRzLCAKCXNlbV93YXJuLmFkYiwgc2VtX3dhcm4uYWRzLCBzZW1fcmVzLmFkYiwgc2VtX2NoNy5hZGIsIHNlbV9jaDguYWRiLAoJc2VtX2NoNS5hZGIsIG9wdC5hZHMsIGxpYi14cmVmLmFkYiwgbGliLXhyZWYuYWRzLCBleHBfc21lbS5hZGIsCglzZW1fY2gxMS5hZGIsIGV4cF9jaDYuYWRiLCBlaW5mby5hZHMsIGVpbmZvLmFkYjogaW1wbGVtZW50IGEgbmV3Cgl3YXJuaW5nIGNvbnRyb2xsZWQgYnkgLWduYXR3Lm8gdGhhdCB3YXJucyBvbiBjYXNlcyBvZiBvdXQgcGFyYW1ldGVyCgl2YWx1ZXMgYmVpbmcgaWdub3JlZC4KCjIwMDctMTAtMTUgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAYWRhY29yZS5jb20+CgoJKiBhZGFpbnQuYywgc29ja2V0LmMsIGNhbC5jOiBJbml0aWFsIHBvcnQgdG8gYXJtLW1lbnRvci1udWNsZXVzLgoKCSogZXhwZWN0LmM6IEluaXRpYWwgcG9ydCB0byBhcm0tbWVudG9yLW51Y2xldXMuCglVc2Uga2lsbCBmb3IgX19nbmF0X2tpbGwoKSBvbiBWTVMuCgoyMDA3LTEwLTE1ICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoKCSogYWxpLmFkcywgYWxpLmFkYiAoU2Nhbl9BTEkpOiBJbml0aWFsaXplIFhFLlRyZWYgdG8gYSBrbm93biBkZWZhdWx0Cgl2YWx1ZS4KCShYcmVmX1JlY29yZCk6IENoYW5nZSB0eXBlIGZvciBMaW5lLCBzaW5jZSBpbiB0aGUgY2FzZSBvZiBhIHJlZmVyZW5jZSB0bwoJYSBwcmVkZWZpbmVkIGVudGl0eSAoYXMgaGFwcGVucyBmb3IgYXJyYXkgaW5kZXggdHlwZXMpLCB0aGUgbGluZSBpcyBzZXQKCXRvIDAuCglBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyBtdWx0aXBsZSBhcnJheSBpbmRleCB0eXBlcyBpbmZvLCBvcgoJbXVsdGlwbGUgaW5oZXJpdGVkIGludGVyZmFjZXMgaW5mby4gVGhpcyBpbmZvcm1hdGlvbiBjYW5ub3QgYmUgc3RvcmVkCglpbiBYcmVmX0VudGl0eV9SZWNvcmQsIHdoaWNoIG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgVHJlZl8qLAoJYW5kIGlzIHRoZXJlZm9yZSBzdG9yZWQgaW4gdGhlIGxpc3Qgb2YgcmVmZXJlbmNlcyBpbnN0ZWFkLiBJdCBoYXMgYQoJc3BlY2lhbCB0cmVhdGVtZW50IGxhdGVyIG9uIGluIHRvb2xzIHRoYXQgdXNlIHRoaXMgaW5mb3JtYXRpb24uCgoyMDA3LTEwLTE1ICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgoKCSogZGVidWcuYWRiOiBEb2N1bWVudCB1c2Ugb2YgLWduYXRkLmEgYW5kIC1nbmF0ZC5JCgoJKiBsYXlvdXQuYWRiOiBPbiBPcGVuVk1TIC1nbmF0ZC5hIGRpc2FibGVzIGFsaWdubWVudCBvcHRpbWl6YXRpb24uCgoyMDA3LTEwLTE1ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfYXR0ci5hZGIgKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBDYXNlIEFjY2VzcywKCVVuY2hlY2tlZF9BY2Nlc3MsIGFuZCBVbnJlc3RyaWN0ZWRfQWNjZXNzLiBDbGVhbnVwIGNvZGUgdGhhdCB0YWtlcwoJY2FyZSBvZiBhY2Nlc3MgdG8gY2xhc3Mtd2lkZSBpbnRlcmZhY2UgdHlwZXMgcGx1cyByZW1vdmFsIG9mIGJpemFycmUKCWNvbnZlcnNpb24gb2YgdGFnZ2VkIG9iamVjdCB0byBhY2Nlc3MgdHlwZSAocmVwb3J0ZWQgYnkgR2FyeQoJRGlzbXVrZXMpLiBBZnRlciB0aGlzIHBhdGNoIHRoZXJlIGlzIG5vIG5lZWQgdG8gcGVyZm9ybSBhbnkKCWFkZGl0aW9uYWwgbWFuYWdlbWVudCBvbiB0aGVzZSBub2RlcyBpbiBFeHBhbmRfSW50ZXJmYWNlX0FjdHVhbHMuCgoJKiBleHBfZGlzcC5hZGIgKEV4cGFuZF9JbnRlcmZhY2VfQWN0dWFscyk6IENvZGUgY2xlYW51cC4gUmVtb3ZlIGNvZGUKCXRoYXQgaGFuZGxlcyB1c2Ugb2YgJ0FjY2VzcyBhbmQgJ1VuY2hlY2tlZF9BY2Nlc3MgYXBwbGllZCB0bwoJYWN0dWFscyBjb3ZlcmluZyBpbnRlcmZhY2UgdHlwZXMuIFN1Y2ggY29kZSBpcyBub3cKCWNlbnRyYWxpemVkIGluIEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UuCgoyMDA3LTEwLTE1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2gzLmFkYiAoQnVpbGRfSW5pdF9Qcm9jZWR1cmUpOiBLZWVwIHNlcGFyYXRlIHRoZSBpbml0aWFsaXphdGlvbgoJb2YgdGFnZ2VkIHR5cGVzIHdob3NlIHVsdGltYXRlIGFuY2VzdG9yIGlzIGEgQ1BQIHR5cGUuCgkoRnJlZXplX0FycmF5X1R5cGUpOiBGb3IgYSBwYWNrZWQgYXJyYXkgdHlwZSwgZ2VuZXJhdGUgYW4gaW5pdGlhbGl6YXRpb24KCXByb2NlZHVyZSBpZiB0aGUgdHlwZSBpcyBwdWJsaWMsIHRvIGhhbmRsZSBwcm9wZXJseSBhIGNsaWVudCB0aGF0CglzcGVjaWZpZXMgTm9ybWFsaXplX1NjYWxhcnMuCgoyMDA3LTEwLTE1ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogZXhwX2NoOS5hZGIgKEFjdHVhbF9JbmRleF9FeHByZXNzaW9uKTogV2hlbiB0aGUgZXhwYW5zaW9uIG9jY3VycwoJaW5zaWRlIGEgZ2VuZXJpYyBib2R5LCByZXRyaWV2ZSB0aGUgZnVsbCB2aWV3IG9mIHRoZSBlbnRyeSBmYW1pbHkKCWRpc2NyZXRlIHN1YnR5cGUgaWYgYXZhaWxhYmxlLgoKMjAwNy0xMC0xNSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoQWRkX1JBQ1dfUHJpbWl0aXZlX0RlY2xhcmF0aW9uc19BbmRfQm9kaWVzKTogRG8gbm90CglhdHRlbXB0IHRvIGdlbmVyYXRlIHN0dWJzIGZvciBoaWRkZW4gcHJpbWl0aXZlIG9wZXJhdGlvbnMuCgoyMDA3LTEwLTE1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1saWItdGd0LXNwZWNpZmljLmFkYiAoU3VwcG9ydF9Gb3JfTGlicmFyaWVzKTogTmV3IGZ1bmN0aW9uLAoJcmV0dXJuaW5nIE5vbmUsIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwbGF0Zm9ybSBzcGVjaWZpYyBib2R5IGZvcgoJTUxpYi5UZ3QuU3BlY2lmaWMuCgoyMDA3LTEwLTE1ICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBzZW1fY2FzZS5hZGIsIHNlbV9jaDEzLmFkYiwgbGliLXNvcnQuYWRiOiBSZXBsYWNlIHVzZSBvZiBIZWFwX1NvcnRfQQoJKHBhc3NpbmcnVW5yZXN0cmljdGVkX0FjY2VzcyBvZiBuZXN0ZWQgc3VicHJvZ3JhbXMgdG8gU29ydCkgd2l0aCB1c2Ugb2YKCXRoZSBnZW5lcmljIEhlYXBfU29ydF9HLCBpbiBvcmRlciB0byBhdm9pZCB0cmFtcG9saW5lcy4KCjIwMDctMTAtMTUgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWRhY29yZS5jb20+CgkgICAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHZ4X3N0YWNrX2luZm8uYzogTmV3IGZpbGUuCgoJKiBpLWZvcmJsYS11bmltcGxlbWVudGVkLmFkczogTmV3IGZpbGUuCgoJKiBNYWtlZmlsZS5pbjogaS1mb3JibGEtdW5pbXBsZW1lbnRlZC5hZHM6IGEgdmFyaWFudCBvZiBpLWZvcmJsYS5hZHMKCWZvciB1bnN1cHBvcnRlZCBjb25maWd1cmF0aW9uczsgdXNlIGl0IG9uIFZNUyB0YXJnZXRzIGluc3RlYWQgb2YgdGhlCglyZWFsIG9uZS4KCShFWFRSQV9MSUJHTkFUX1NSQ1MsRVhUUkFfTElCR05BVF9PQkpTIGZvciBWeFdvcmtzKTogSW5jbHVkZQoJdnhfc3RhY2tfaW5mby57YyxvfSB0aGF0IGNvbnRhaW5zIHRoZSByb3V0aW5lIF9fZ25hdF9nZXRfc3RhY2tfaW5mbwoJdXNlZCBieSBWeFdvcmtzIHRhcmdldHMgdG8gaGF2ZSBhY2Nlc3MgdG8gdGFzay1zcGVjaWZpYyBkYXRhIGFuZCBiZQoJYWJsZSB0byBleHRyYWN0IHRoZSBzdGFjayBib3VuZGFyaWVzIGZvciBzdGFjayBjaGVja2luZy4KCVVzZSBzeXN0ZW0tdm1zLWlhNjQuYWRzIG9uIGl2bXMuCgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoJKiBzeXNkZXAuYyAoX19nbmF0X2dldF9zdGFja19pbmZvKTogTW92ZSB0byBhIHN0YW5kYWxvbmUgZmlsZQoJKHZ4X3N0YWNrX2luZm8uYykuCgoyMDA3LTEwLTE1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHNuYW1lcy5hZGIsIHNuYW1lcy5hZHM6IEFkZCBuZXcgc3RhbmRhcmQgbmFtZSBydW50aW1lX2xpYnJhcnlfZGlyCgoJKiBwcmouYWRzIChMYW5ndWFnZV9Db25maWcpOiBBZGQgbmV3IGNvbXBvbmVudCBSdW50aW1lX0xpYnJhcnlfRGlyCgoJKiBwcmotYXR0ci5hZGI6IEFkZCBwcm9qZWN0IGxldmVsIGF0dHJpYnV0ZSBSdW50aW1lX0xpYnJhcnlfRGlyCgoJKiBwcmotZW52LmFkYiAoQ3JlYXRlX01hcHBpbmdfRmlsZSk6IERvIG5vdCBwdXQgYW4gZW50cnkgaWYgdGhlIHBhdGggb2YKCXRoZSBzb3VyY2UgaXMgdW5rbm93bi4KCgkqIHByai1leHQuYWRiOiBTcGVsbGluZyBlcnJvciBmaXgKCgkqIHByai1ubXNjLmFkYiAoQ2hlY2tfQWRhX05hbWUpOiBSZWplY3QgYW55IHVuaXQgdGhhdCBpbmNsdWRlcyBhbiBBZGEKCTk1IHJlc2VydmVkIHdvcmQgaW4gaXRzIG5hbWUuCgkoUHJvY2Vzc19Qcm9qZWN0X0xldmVsX0FycmF5X0F0dHJpYnV0ZXMpOiBQcm9jZXNzIG5ldyBhdHRyaWJ1dGUKCVJ1bnRpbWVfTGlicmFyeV9EaXIuCgoJKiBwcmotcGFydC5hZGIgKFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogRG8gbm90IGNoZWNrIHRoZSBuYW1lIG9mIHRoZQoJY29uZmlnIHByb2plY3QgYWdhaW5zdCB0aGUgdXNlciBwcm9qZWN0IG5hbWVzLgoKCSogcHJqLXByb2MuYWRiIChFeHByZXNzaW9uKTogSW4gbXVsdGktbGFuZ3VhZ2UgbW9kZSwgaW5kZXhlcyB0aGF0IGRvCglub3QgaW5jbHVkZSBhIGRvdCBhcmUgYWx3YXlzIGNhc2UgaW5zZW5zaXRpdmUuCgkoUHJvY2Vzc19EZWNsYXJhdGl2ZV9JdGVtcyk6IERpdHRvCgkoUHJvY2Vzc19Qcm9qZWN0X1RyZWVfUGhhc2VfMSk6IFNldCBTdWNjZXNzIHRvIEZhbHNlIGluIGNhc2UgYW4gZXJyb3IgaXMKCWRldGVjdGVkLgoKCSogcHJqLXV0aWwuYWRiIChWYWx1ZV9PZiAoSW5fQXJyYXkpKTogV2hlbiBGb3JjZV9Mb3dlcl9DYXNlX0luZGV4IGlzCglUcnVlLCBjb21wYXJlIGJvdGggaW5kZXhlcyBpbiBsb3dlciBjYXNlLgoKMjAwNy0xMC0xNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBydHNmaW5kLmFkYjogKExvYWRfUlRVKTogVHVybiBvZmYgc3R5bGUgY2hlY2tzIGZvciBMb2FkIGNhbGwKCjIwMDctMTAtMTUgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9hZ2dyLmFkYiAoUmVzb2x2ZV9SZWNvcmRfQWdncmVnYXRlKTogSW4gdGhlIGNhc2Ugb2YgYSBib3gKCWFzc29jaWF0aW9uIGZvciBhbiBhY2Nlc3MgY29tcG9uZW50LCBhZGQgYW4gYXNzb2NpYXRpb24gd2l0aCBudWxsIGFzCgl0aGUgZXhwcmVzc2lvbi4gUmVtb3ZlIHRlc3RpbmcgZm9yIGFycmF5IHN1YnR5cGVzIGFuZCB0aGUgc2V0dGluZyBpbgoJdGhhdCBjYXNlIG9mIEN0eXAgdG8gdGhlIGFycmF5IGNvbXBvbmVudCB0eXBlLCB3aGljaCBwcmV2ZW50ZWQgcHJvcGVyCglpbmNsdXNpb24gb2YgYW4gYXNzb2NpYXRpb24gZm9yIG51bGwtaW5pdGlhbGl6ZWQgYXJyYXlzLiBDb2xsYXBzZQoJY29uZGl0aW9uIHRoYXQgdGVzdHMgZm9yIGFycmF5IHN1YnR5cGVzIGludG8ganVzdCBhIHRlc3Qgb2YKCUlzX1BhcnRpYWxseV9Jbml0aWFsaXplZF9UeXBlICh3aGljaCBhbHJlYWR5IGNvdmVycyBhcnJheXMgYW55d2F5KS4KCjIwMDctMTAtMTUgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMi5hZGI6IE1pbm9yIGNvZGUgcmVmb3JtYXR0aW5nLgoJKENoZWNrX0dlbmVyaWNfQ2hpbGRfVW5pdCk6IEl0ZXJhdGUgb3ZlciB0aGUgaG9tb255bSBjaGFpbiBpbiBvcmRlciB0bwoJZmluZCB0aGUgcGFyZW50IHBhY2thZ2Ugd2hpY2ggbWF5IGhhdmUgYmVlbiBoaWRkZW4gYnkgbG9jYWwKCWRlY2xhcmF0aW9ucy4KCjIwMDctMTAtMTUgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDMuYWRiIChCdWlsZF9EZXJpdmVkX0NvbmN1cnJlbnRfVHlwZSk6IFNldCB0aGUgSXNfQ29uc3RyYWluZWQKCWZsYWcgb2YgZGVyaXZlZCBjb25jdXJyZW50IHR5cGVzLCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBmbGFnIHNldHRpbmcKCW9uIHRoZSBwYXJlbnQgc3VidHlwZSBhbmQgYW55IG5ldyBzZXQgb2YgZGlzY3JpbWluYW50cy4KCjIwMDctMTAtMTUgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYjogTWlub3IgY29kZSBhbmQgY29tbWVudCByZWZvcm1hdHRpbmcuCgkoQW5hbHl6ZV9BbGxvY2F0b3IpOiBXaGVuIHRoZSBkZXNpZ25hdGVkIHR5cGUgb2YgYW4gdW5jb25zdHJhaW5lZAoJYWxsb2NhdG9yIGlzIGEgcmVjb3JkIHdpdGggdW5rbm93biBkaXNjcmltaW5hbnRzIG9yIGFuIGFycmF5IHdpdGgKCXVua25vd24gcmFuZ2UgYm91bmRzLCBlbWl0IGEgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZSBkZXBlbmRpbmcgb24gdGhlCgljb21waWxhdGlvbiBtb2RlIGFuZCB3aGV0aGVyIHRoZSBkZXNpZ25hdGVkIHR5cGUgaXMgbGltaXRlZC4KCjIwMDctMTAtMTUgIFRyaXN0YW4gR2luZ29sZCAgPGdpbmdvbGRAYWRhY29yZS5jb20+CgoJKiBzeXN0ZW0tdm1zLWlhNjQuYWRzOiBOZXcgZmlsZS4KCgkqIHN5c3RlbS12bXNfNjQuYWRzOiBNaW5vciBjb21tZW50IGZpeC4KCjIwMDctMTAtMTUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDYuYWRiIChGaW5kX0NvcnJlc3BvbmRpbmdfU3BlYyk6IElmIHRoZSBwcmV2aW91cyBlbnRpdHkgaXMgYQoJYm9keSBnZW5lcmF0ZWQgZm9yIGEgZnVuY3Rpb24gd2l0aCBhIGNvbnRyb2xsaW5nIHJlc3VsdCB0aGF0IGlzIGEgbnVsbAoJZXh0ZW5zaW9uLCBkaXNjYXJkIHRoZSBnZW5lcmF0ZWQgYm9keSBpbiBmYXZvciBvZiB0aGUgY3VycmVudCBleHBsaWNpdAoJb25lLgoKMjAwNy0xMC0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2Rpc3AuYWRiIChGaW5kX0NvbnRyb2xsaW5nX0FyZyk6IEV4YW1pbmUgdGhlIGNhbGwgbm9kZSBiZWZvcmUKCWV4YW1pbmluZyBpdHMgb3JpZ2luYWwgZm9ybSwgdG8gaGFuZGxlIHByb3Blcmx5IG9wZXJhdG9yIGNhbGxzIHRoYXQKCWhhdmUgYmVlbiByZXdyaXR0ZW4uCgoyMDA3LTEwLTE1ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdGItYWx2bXMuYyAodGJfZW50cnlfdCwgX19nbmF0X2JhY2t0cmFjZSk6IFN0b3JlIGEgZnJhbWUgcG9pbnRlcgoJaW5zdGVhZCBvZiBhIHByb2NlZHVyZSB2YWx1ZSBpbiBlYWNoIHRyYWNlYmFjayBlbnRyeS4KCgkqIGctdHJhc3ltLXZtcy1hbHBoYS5hZGIgKFN5bWJvbGljX1RyYWNlYmFjayk6IFBhc3MgZnJhbWUgcG9pbnRlcgoJaW5zdGVhZCBvZiBwcm9jZWR1cmUgdmFsdWUgdG8gVEJLJFNZTUJPTElaRS4KCgkqIHMtdHJhZW50LXZtcy5hZGIgKFBWX0Zvcik6IFJlbmFtZSBhcyBGUF9Gb3IgYW5kIGFjY2VzcyB0aGUgcHJvcGVyCglmaWVsZC4KCShUQl9FbnRyeV9Gb3IpOiBBY2NvdW50IGZvciB0aGUgUFYvRlAgcmVuYW1pbmcuCgoJKiBzLXRyYWVudC12bXMuYWRzIChUcmFjZWJhY2tfRW50cnkpOiBSZW5hbWUgUFYgY29tcG9uZW50IGludG8gRlAgYW5kCglhZGQgY29tbWVudC4KCShOdWxsX1RCX0VudHJ5KTogQWNjb3VudCBmb3IgY2hhbmdlIG9mIGNvbXBvbmVudCBuYW1lLgoJKFBWX0Zvcik6IFJlbmFtZSBhcyBGUF9Gb3IuCgoyMDA3LTEwLTE1ICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgoKCSogdHJhbnMuYyAoZ25hdF90b19nbnUpOiBSZW1vdmUgdGhlIHBhZGRpbmcgc3RydWN0dXJlIG1vcmUgb2Z0ZW4uCglUaGlzIG9wdGltaXplIGFzc2lnbm1lbnQgdG8gb3Zlci1hbGlnbmVkIHJlY29yZC4KCjIwMDctMTAtMTUgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWRhY29yZS5jb20+CgoJKiB4cmVmX2xpYi5hZGIgKEdldF9GdWxsX1R5cGUpOiBBZGQgc3VwcG9ydCBmb3IgdGhlICdoJyBlbnRpdHkgdHlwZSwgaWUKCWludGVyZmFjZXMuCgoJKiB4cl90YWJscy5hZGIgKEFkZF9SZWZlcmVuY2UpOiBBZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyAnUicgcmVmZXJlbmNlCgl0eXBlLCBmb3IgZGlzcGF0Y2hpbmcgY2FsbHMuCgoyMDA3LTEwLTE1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBzd2l0Y2hlcyAtLXZlcnNpb24gYW5kIC0taGVscAoJZm9yIHRoZSBHTkFUIHRvb2xzIGduYXRiaW5kLCBnbmF0bGluaywgZ25hdG1ha2UsIGduYXRjaG9wLCBnbmF0bmFtZSwKCWduYXR4cmVmLCBnbmF0ZmluZCwgZ25hdGxzLCBhbmQgZ25hdGNsZWFuLgoJRG9jdW1lbnQgLWduYXR3Lm8uCglNZW50aW9uIGF0dHJpYnV0ZSBFeGNsdWRlZF9Tb3VyY2VfRGlycwoJUmVwbGFjZSBvYnNvbGVzY2VudCBhdHRyaWJ1dGUgTG9jYWxseV9SZW1vdmVkX0ZpbGVzIHdpdGggYXR0cmlidXRlCglFeGNsdWRlZF9Tb3VyY2VfRmlsZXMuCglJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgLXUgKGduYXRiaW5kKQoJRG9jdW1lbnQgaG93IHRvIGRvIHJlbGlhYmxlIHN0YWNrIGNoZWNraW5nIGZvciB0aGUgZW52aXJvbm1lbnRhbCB0YXNrCglvbiBpVk1TLgoKCSogZ25hdF9ybS50ZXhpOiBSZXdyaXRlIHNlY3Rpb24gYWJvdXQgTm9fSW1wbGljaXRfRHluYW1pY19Db2RlLgoJRG9jdW1lbnQgYXR0cmlidXRlIEV4Y2x1ZGVkX1NvdXJjZV9GaWxlcyBhbmQgaW5kaWNhdGUgdGhhdCBhdHRyaWJ1dGUKCUxvY2FsbHlfUmVtb3ZlZF9GaWxlcyBpcyBvYnNvbGVzY2VudC4KCjIwMDctMTAtMTUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnLXNvY2Nvbi12bXMuYWRzOiBGaXggdmFsdWUgb2YgTVNHX1dBSVRBTEwuCgoJKiBnZW4tc29jY29uLmM6IAoJVXBkYXRlIGRvY3VtZW50YXRpb24gdG8gbm90ZSB0aGF0IE9wZW5WTVMgOC4zIG9yIGxhdGVyIG11c3QgYmUgdXNlZAoJdG8gZ2VuZXJhdGUgZy1zb2Njb24tdm1zLmFkcy4KCgkqIGF0cmVlLmFkYjogQWRkID8/PyBjb21tZW50CgoJKiBleHBfdXRpbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCUFkZCA/Pz8gY29tbWVudCBpbiBLaWxsX0RlYWRfQ29kZS4KCjIwMDctMTAtMTUgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXJyb3V0LmFkczogQ29tbWVudCBjbGFyaWZpY2F0aW9uCgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fQWxsb2NhdG9yKTogQ29kZSBjbGVhbnVwLgoJKEV4cGFuZF9OX09wX0VxKTogSW1wcm92ZSBoYW5kbGluZyBvZiBhcnJheSBlcXVhbGl0eSB3aXRoIC1nbmF0VmEKCgkqIGxpYi5hZHM6IENvbW1lbnQgdXBkYXRlCgoJKiBpbml0LmM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIHNlbV9hdHRyLmFkYjogTWlub3IgZm9ybWF0dGluZwoKCSogb3NpbnQtYi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX2NoOS5hZGI6IEltcGxlbWVudCAtZ25hdGQuSSBzd2l0Y2gKCgkqIGctY29tbGluLmFkYjogKFN0YXJ0KTogRml4IGhhbmRsaW5nIG9mIGVtcHR5IGNvbW1hbmQgbGluZS4KCgkqIGduYXRjbWQuYWRiIChHTkFUQ21kKTogRG8gbm90IHB1dCB0aGUgLXJ1bGVzIGluIHRoZSAtY2FyZ3Mgc2VjdGlvbiwKCWV2ZW4gd2hlbiAtcnVsZXMgZm9sbG93cyB0aGUgLWNhcmdzIHNlY3Rpb24uCgoyMDA3LTEwLTA4ICBPbGxpZSBXaWxkICA8YWF3QGdvb2dsZS5jb20+CgoJKiBtaXNjLmMgKExBTkdfSE9PS1NfUFVTSERFQ0wpOiBSZXBsYWNlZCBsaGRfcmV0dXJuX3RyZWUgd2l0aAoJZ25hdF9yZXR1cm5fdHJlZS4KCShnbmF0X2luaXRfZ2NjX2VoKTogUmVwbGFjZWQgZ25hdF9laF9ydW50aW1lX3R5cGUgd2l0aAoJZ25hdF9yZXR1cm5fdHJlZS4KCShnbmF0X2VoX3J1bnRpbWVfdHlwZSk6IFJlbW92ZWQuCgkoZ25hdF9yZXR1cm5fdHJlZSk6IE5ldyBmdW5jdGlvbi4KCjIwMDctMTAtMDggIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCVBSIGFkYS8zMzQ1NAoJUmV2ZXJ0OgoJMjAwNy0wOC0zMSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCR05BVF9UQVJHRVRfUEFJUlMpOiBVc2Ugc3lzdGVtLWxpbnV4LXBwYzY0LmFkcwoJd2hlbiBjb21waWxpbmcgZm9yIHBvd2VycGM2NC0qLWxpbnV4LgoJKiBzeXN0ZW0tbGludXgtcHBjNjQuYWRzOiBOZXcgZmlsZS4KCjIwMDctMDktMjcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJTWFwcGVkIGxvY2F0aW9uIHN1cHBvcnQKCSogYmFja19lbmQuYWRiIChDYWxsX0JhY2tfRW5kKTogUGFzcyBpbmZvcm1hdGlvbiBhYm91dCBzb3VyY2UKCWZpbGVzIGluc3RlYWQgb2YgdW5pdHMgdG8gZ2lnaS4KCSogZ2lnaS5oIChzdHJ1Y3QgRmlsZV9JbmZvX1R5cGUpOiBOZXcuCgkoZ2lnaSk6IFJlbmFtZSBhbmQgY2hhbmdlIHR5cGUgb2YgbnVtYmVyX3VuaXRzIHBhcmFtZXRlciwgY2hhbmdlCgl0eXBlIG9mIGZpbGVfaW5mb19wdHIgcGFyYW1ldGVyLgoJKiB0cmFucy5jIChudW1iZXJfZmlsZXMpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGdpZ2kpOiBSZW5hbWUgYW5kIGNoYW5nZSB0eXBlIG9mIG51bWJlcl91bml0cyBwYXJhbWV0ZXIsIGNoYW5nZQoJdHlwZSBvZiBmaWxlX2luZm9fcHRyIHBhcmFtZXRlci4KCUlmIG1hcHBlZCBsb2NhdGlvbiBzdXBwb3J0IGlzIGVuYWJsZWQsIGNyZWF0ZSB0aGUgaXNvbW9ycGhpYyBtYXBwaW5nCgliZXR3ZWVuIHNvdXJjZSBmaWxlcyBhbmQgbGluZSBtYXBzLgoJKFNsb2NfdG9fbG9jdXMpOiBJZiBtYXBwZWQgbG9jYXRpb24gc3VwcG9ydCBpcyBlbmFibGVkLCB0cmFuc2xhdGUKCXNvdXJjZSBsb2NhdGlvbiBpbnRvIG1hcHBlZCBsb2NhdGlvbi4KCShhbm5vdGF0ZV93aXRoX25vZGUpOiBSZW5hbWUgaW50byBzZXRfZXhwcl9sb2NhdGlvbl9mcm9tX25vZGUuCglDYWxsIHNldF9leHByX2xvY2F0aW9uIGluc3RlYWQgb2YgYW5ub3RhdGVfd2l0aF9sb2N1cy4KCShQcmFnbWFfdG9fZ251KTogQWRqdXN0IGZvciBhYm92ZSBjaGFuZ2UuCgkoTG9vcF9TdGF0ZW1lbnRfdG9fZ251KTogTGlrZXdpc2UuCgkoY2FsbF90b19nbnUpOiBMaWtld2lzZS4KCShIYW5kbGVkX1NlcXVlbmNlX09mX1N0YXRlbWVudHNfdG9fZ251KTogTGlrZXdpc2UuCgkoZ25hdF90b19nbnUpOiBMaWtld2lzZS4KCShhZGRfc3RtdF93aXRoX25vZGUpOiBMaWtld2lzZS4KCShhZGRfY2xlYW51cCk6IExpa2V3aXNlLgoJKiB1dGlscy5jIChnbmF0X2luaXRfZGVjbF9wcm9jZXNzaW5nKTogRG8gbm90IHNldCBpbnB1dF9saW5lLgoKMjAwNy0wOS0yNiAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRiIChBbmFseXplX1VzZV9UeXBlKTogQ29kZSBjbGVhbnVwLgoJKEFwcGxpY2FibGVfVXNlKTogRW1pdCBhIHdhcm5pbmcgd2hlbiBhIHBhY2thZ2UgdHJpZXMgdG8gdXNlIGl0c2VsZi4KCShVc2VfT25lX1R5cGUpOiBBZGQgdmFyaWFibGUgSXNfS25vd25fVXNlZC4gRW1pdCBhIHdhcm5pbmcgd2hlbiBhIHR5cGUKCWlzIGFscmVhZHkgaW4gdXNlIG9yIHRoZSBwYWNrYWdlIHdoZXJlIGl0IGlzIGRlY2xhcmVkIGlzIGluIHVzZSBvciBpcwoJZGVjbGFyZWQgaW4gdGhlIGN1cnJlbnQgcGFja2FnZS4KCShTcGVjX1JlbG9hZGVkX0Zvcl9Cb2R5KTogTmV3IHN1YnNpZGlhcnkgcm91dGluZSBmb3IgVXNlX09uZV9UeXBlLgoKCSogYS10YXNhdHQuYWRiLCBzLW9zcHJpbS12eHdvcmtzLmFkYiwgZy1zb2N0aGktbWluZ3cuYWRiLAoJcy1pbnRtYW4tdm1zLmFkYiwgZy1zb2NrZXQuYWRiLCBnLXRocmVhZC5hZGIsIHMtdGFyZXN0LmFkYiwKCXMtdGFzc3RhLmFkYiwgcy10cG9yZnQuYWRiOiBSZW1vdmUgcmVkdW5kYW50ICd1c2UgdHlwZScgY2xhdXNlLgoKMjAwNy0wOS0yNiAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGEtY2FsZW5kLXZtcy5hZGIsIGEtY2FsZW5kLmFkYjogCglBZGQgYSBzZWN0aW9uIG9uIGxlYXAgc2Vjb25kcyBjb250cm9sIGFsb25nIHdpdGggdHdvIGVudGl0aWVzIHVzZWQgdG8KCWVuYWJsZSBhbmQgZGlzYWJsZSBsZWFwIHNlY29uZHMgc3VwcG9ydC4gVGhlIGFycmF5IExlYXBfU2Vjb25kX1RpbWVzIGlzCglub3cgY29uc3RhbnQgYW5kIGNvbnRhaW5zIGhhcmQgdGltZSB2YWx1ZXMgcHJlLWdlbmVyYXRlZC4gUmVtb3ZlCglhbGwgZWxhYm9yYXRpb24gY29kZSB1c2VkIHRvIHBvcHVsYXRlIHRoZSB0YWJsZSBvZiBsZWFwIHNlY29uZHMuCgoJKiBiaW5kZ2VuLmFkYjogCglBZGQgZW50aXR5IExlYXBfU2Vjb25kc19TdXBwb3J0IHRvIHRoZSBsaXN0IG9mIGdsb2JhbCBydW4tdGltZSB2YXJpYWJsZXMKCWFsb25nIHdpdGggYSBjb21tZW50IG9uIGl0cyB1c2FnZSBhbmQgdmFsdWVzLgoJKEdlbl9BZGFpbml0X0FkYSk6IEFkZCBjb2RlIHRvIGdlbmVyYXRlIHRoZSBkZWNsYXJhdGlvbiBhbmQgaW1wb3J0IG9mCglJbnRlZ2VyIHZhcmlhYmxlIExlYXBfU2Vjb25kc19TdXBwb3J0LiBTZXQgaXRzIHZhbHVlIHRvIHplcm8gKGRpc2FibGVkKQoJb3Igb25lIChlbmFibGVkKSBkZXBlbmRpbmcgb24gdGhlIHByZXNlbmNlIG9mIGJpbmRlciBzd2l0Y2ggIi15Ii4KCShHZW5fQWRhaW5pdF9DKTogQWRkIGNvZGUgdG8gZ2VuZXJhdGUgdGhlIGRlY2xhcmF0aW9uIG9mIGV4dGVybmFsIGludAoJX19nbF9sZWFwX3NlY29uZHNfc3VwcG9ydC4gU2V0IGlzIHZhbHVlIHRvIHplcm8gKGRpc2FibGVkKSBvciBvbmUKCShlbmFibGVkKSBkZXBlbmRpbmcgb24gdGhlIHByZXNlbmNlIG9mIGJpbmRlciBzd2l0Y2ggIi15Ii4KCgkqIGluaXQuYzogQWRkIF9fZ2xfbGVhcF9zZWNvbmRzX3N1cHBvcnQgdG8gdGhlIGxpc3Qgb2YgZ2xvYmFsIHZhbHVlcwoJY29tcHV0ZWQgYnkgdGhlIGJpbmRlci4KCjIwMDctMDktMjYgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhZGFjb3JlLmNvbT4KCgkqIHMtdGFwcm9wLWx5bnhvcy5hZGIsIHMtdGFwcm9wLXRydTY0LmFkYiwgcy10YXByb3AtaXJpeC5hZGIsCglzLXRhcHJvcC1ocHV4LWRjZS5hZGIsIHMtdGFwcm9wLWxpbnV4LmFkYiwgcy10YXByb3AtZHVtbXkuYWRiLAoJIHMtdGFwcm9wLXNvbGFyaXMuYWRiLCBzLXRhcHJvcC12bXMuYWRiLCBzLXRhcHJvcC1taW5ndy5hZGIsCglzLXRhcHJvcC1wb3NpeC5hZGIgKFN0b3BfVGFzayk6IE5ldyBmdW5jdGlvbiwgZHVtbXkgaW1wbGVtZW50YXRpb24uCgoJKiBzLXRhcHJvcC5hZHMsIHMtdGFwcm9wLXZ4d29ya3MuYWRiIChTdG9wX1Rhc2spOiBOZXcgZnVuY3Rpb24uCgoJKiBzLXRhc2RlYi5hZGIgKFN0b3BfQWxsX1Rhc2tzKTogTmV3IGZ1bmN0aW9uLCBpbXBsZW1lbnRpbmcgYSBydW4tdGltZQoJZnVuY3Rpb24gd2hpY2ggY2FuIGJlIGNhbGxlZCBieSB0aGUgZGVidWdnZXIgdG8gaW50ZXJydXB0IHRoZSB0YXNrcyBvZgoJYW4gQWRhIGFwcGxpY2F0aW9uIGFzeW5jaHJvbm91c2x5LCBhcyBuZWVkZWQgb24gVnhXb3Jrcy4KCShTdG9wX0FsbF9UYXNrc19IYW5kbGVyKTogUmVuYW1lZCBmcm9tIFN0b3BfQWxsX1Rhc2tzLgoKCSogcy10YXNkZWIuYWRzIChTdG9wX0FsbF9UYXNrc19IYW5kbGVyKTogTmV3IGZ1bmN0aW9uIGRlY2xhcmF0aW9uLAoJcmVuYW1lZCBmcm9tIFN0b3BfQWxsX1Rhc2tzLiBVcGRhdGUgY29tbWVudHMuCgkoU3RvcF9BbGxfdGFza3MpOiBOZXcgZnVuY3Rpb24gZGVjbGFyYXRpb24uCgoyMDA3LTA5LTI2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogYWRhaW50LmMgKGlmIGRlZmluZWQgKF9fTHlueF9fKSk6IFdyYXAgI2RlZi8jdW5kZWYgVk1PU19ERVYgYXJvdW5kCgkjaW5jbHVkZSA8dXRpbWUuaD4gYW5kICNkZWZpbmUgR0NDX1JFU09VUkNFX0ggYmVmb3JlCgkjaW5jbHVkZSA8c3lzL3dhaXQuaD4uCglBZGQgbW9yZSBwcm90ZWN0aW9ucyBpbiBfX2duYXRfdHJhbnNsYXRlX3Ztcy4KCgkqIGV4cGVjdC5jIChpZiBkZWZpbmVkIChfX0x5bnhfXykpOiAjZGVmaW5lIEdDQ19SRVNPVVJDRV9IIGJlZm9yZQoJI2luY2x1ZGUgPHN5cy93YWl0Lmg+LgoKMjAwNy0wOS0yNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhZGFjb3JlLmNvbT4KCgkqIGduYXR2c24uYWRzIChQQ1NfVmVyc2lvbl9OdW1iZXIsIEFTSVNfVmVyc2lvbl9OdW1iZXIpOiBSZW1vdmVkLgoKCSogZXhwX2Rpc3QuYWRzIChQQ1NfVmVyc2lvbl9OdW1iZXIpOiBNb3ZlIGZyb20gR25hdHZzbiB0byBFeHBfRGlzdCwKCXdoZXJlIGl0IGJlbG9uZ3MuCgoJKiBvcHQuYWRzOiBNb3ZlIEFTSVNfVmVyc2lvbl9OdW1iZXIgZnJvbSBHbmF0dnNuIGludG8gVHJlZV9JTy4KCgkqIHJ0c2ZpbmQuYWRiIChQQ1NfVmVyc2lvbl9OdW1iZXIpOiBNb3ZlIGZyb20gR25hdHZzbiB0byBFeHBfRGlzdCwKCXdoZXJlIGl0IGJlbG9uZ3MuCgoJKiBzZW1fZGlzdC5hZHM6IE1pbm9yIGNvbW1lbnQgZml4CgoJKiB0cmVlX2lvLmFkczogTW92ZSBBU0lTX1ZlcnNpb25fTnVtYmVyIGZyb20gR25hdHZzbiBpbnRvIFRyZWVfSU8uCgoyMDA3LTA5LTI2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZGI6IAoJKEdldF9IVF9MaW5rL1NldF9IVF9MaW5rKTogVXBkYXRlZCB0byBoYW5kbGUgdGhlIGFkZGl0aW9uYWwgbGV2ZWwgb2YKCSBpbmRpcmVjdGlvbiBhZGRlZCB0byB0aGUgSFRfTGluayBjb21wb25lbnQgb2YgdGhlIFRTRC4gVGhpcyBpcyByZXF1aXJlZAoJIHRvIHN0YXRpY2FsbHkgYWxsb2NhdGUgdGhlIFRTRC4KCgkqIGEtdGFncy5hZHM6IAoJTWlub3IgcmVvcmRlcmluZyBvZiB0aGUgZGVjbGFyYXRpb25zIGluIHRoZSBwcml2YXRlIHBhcnQuIFJlcXVpcmVkIHRvCglhZGQgYSBsZXZlbCBvZiBpbmRpcmVjdGlvbiB0byB0aGUgY29udGVudHMgb2YgdGhlIFRTRCBjb21wb25lbnQgSFRfTGluay4KCVRoaXMgaXMgcmVxdWlyZWQgdG8gc3RhdGljYWxseSBhbGxvY2F0ZSB0aGUgVFNELgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxvYmplY3Q+OiBEbyBub3QgZXhjbHVkZSBvYmplY3RzIHdpdGgKCUlzX1N0YXRpY2FsbHlfQWxsb2NhdGVkIHNldCBmcm9tIGNvbnN0YW50IG9iamVjdHMuCglEbyBub3QgbWFrZSBleHBvcnRlZCBjb25zdGFudHMgY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgdm9sYXRpbGUuCgkoZ25hdF90b19nbnVfcGFyYW0pOiBEbyBub3QgdHJlYXQgYW4gSU4gcGFyYW1ldGVyIHdob3NlIGFkZHJlc3MgaXMgdGFrZW4KCWFzIHJlYWQtb25seS4KCgkqIHRyYW5zLmMgKElkZW50aWZpZXJfdG9fZ251KTogRm9yIGNvbnN0YW50cywgdW5zaGFyZSBpbml0aWFsaXplcnMKCWJlZm9yZSByZXR1cm5pbmcgdGhlbS4KCgkqIGV4cF9kaXNwLmFkcywgZXhwX2Rpc3AuYWRiIChCdWlsZGluZ19TdGF0aWNfRFQpOiBTcGVjIG1vdmVkIHRvIHRoZQoJcHVibGljIHBhcnQgb2YgdGhlIHBhY2thZ2UuCgkoTWFrZV9EVCk6IE1vdmUgSFRfTGluayBjb21wb25lbnQgb3V0IG9mIHRoZSBUU0QgcmVjb3JkLiBGb3IgdGhpcwoJcHVycG9zZSBNYWtlX0RUIG5vdyBkZWNsYXJlcyBhIHNlcGFyYXRlIG9iamVjdCB0aGF0IHN0b3JlcyB0aGUKCUhUX0xpbmsgdmFsdWUsIGFuZCBpbml0aWFsaXplcyB0aGUgVFNEIGNvbXBvbmVudCB3aXRoIHRoZSBhZGRyZXNzCglvZiB0aGlzIG5ldyBvYmplY3QuIFRoZSBhZGRpdGlvbiBvZiB0aGlzIGxldmVsIG9mIGluZGlyZWN0aW9uIGlzCglyZXF1aXJlZCB0byBzdGF0aWNhbGx5IGFsbG9jYXRlIHRoZSBUU0QgYmVjYXVzZSB0aGUgVFNEIGNhbm5vdAoJaGF2ZSB2YXJpYWJsZSBjb21wb25lbnRzLgoJKEV4cGFuZF9JbnRlcmZhY2VfQ29udmVyc2lvbik6IEltcHJvdmUgdGhlIGV4cGFuZGVkIGNvZGUuCgkoRXhwYW5kX0ludGVyZmFjZV9UaHVuayk6IFNldCBJc19UaHVuayBpbiB0aGUgdGh1bmsgZW50aXR5LgoKCSogc2VtX2Rpc3AuYWRiIChDaGVja19EaXNwYXRjaGluZ19PcGVyYXRpb24pOiBJbiBjYXNlIG9mIGEgYm9keQoJZGVjbGFyaW5nIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiAtLS1hbGxvd2VkIGJ5IFJNIDMuOS4yICgxMy5lLzIpLS0tLAoJaWYgd2UgYXJlIGJ1aWxkaW5nIHN0YXRpYyBkaXNwYXRjaCB0YWJsZXMgdGhlbiB3ZSBtdXN0IG5vdCBnZW5lcmF0ZQoJZXh0cmEgY29kZSB0byByZWdpc3RlciB0aGUgcHJpbWl0aXZlIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHRhYmxlIHdpbGwKCWJlIGJ1aWx0IGF0IHRoZSBlbmQgb2YgdGhlIGxpYnJhcnkgcGFja2FnZTsgb3RoZXJ3aXNlIHdlIG5vdGlmeSB0aGF0Cgl3ZSBjYW5ub3QgYnVpbGQgdGhlIHN0YXRpYyBkaXNwYXRjaCB0YWJsZS4KCjIwMDctMDktMjYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogY2hlY2tzLmFkYiwgZ25hdDFkcnYuYWRiLCBzZW1fdXRpbC5hZHM6IEltcHJvdmUgd2FybmluZ3MgZm9yIGFkZHJlc3MKCW92ZXJsYXlzLgoKCSogc2VtX2NoMTMuYWRzLCBzZW1fY2gxMy5hZGI6IEltcHJvdmUgd2FybmluZ3MgZm9yIGFkZHJlc3Mgb3ZlcmxheXMKCShBbmFseXplX1JlY29yZF9SZXByZXNlbnRhdGlvbl9DbGF1c2UpOiBTdXBwcmVzcyBqdW5rIHdhcm5pbmcgZm9yCgltaXNzaW5nIGNvbXBvbmVudCBjbGF1c2UuCgkoQW5hbHl6ZV9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UsIGNhc2UgQWRkcmVzcyk6IEFwcGx5IHRoZSBzcGVjaWFsCgl0ZXN0cyBmb3IgY29udHJvbGxlZCB0eXBlIG92ZXJsYXkgdG8gY29tcG9zaXRlcyB3aXRoIGNvbnRyb2xsZWQKCWNvbXBvbmVudHMuCgkoQW5hbHl6ZV9SZWNvcmRfUmVwcmVzZW50YXRpb25fQ2xhdXNlKTogQWRkIHJlZmVyZW5jZSBmb3IgY29tcG9uZW50IG5hbWUKCjIwMDctMDktMjYgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBlaW5mby5hZGIgKElzX1RodW5rKTogTmV3IGF0dHJpYnV0ZSBhcHBsaWNhYmxlIHRvIHN1YnByb2dyYW1zLiBUcnVlCglmb3IgdGh1bmtzIGFzc29jaWF0ZWQgd2l0aCBpbnRlcmZhY2UgdHlwZXMuCgoJKiBlaW5mby5hZHM6IEltcHJvdmUgZG9jdW1lbnRhdGF0aW9uIG9mIElzX0ludGVybmFsCgkoSXNfVGh1bmspOiBOZXcgYXR0cmlidXRlIGFwcGxpY2FibGUgdG8gc3VicHJvZ3JhbXMuIFRydWUgZm9yIHRodW5rcwoJYXNzb2NpYXRlZCB3aXRoIGludGVyZmFjZSB0eXBlcy4KCUV4dGVuc2l2ZSBjb21tZW50IGZpeGVzIHJlZ2FyZGluZyBmbGFncyB0aGF0IGFwcGVhciBpbiBhbGwgZW50aXRpZXMuIFRoZQoJZG9jdW1lbnRhdGlvbiBpcyBub3cgY29uc2lzdGVudCBmb3IgYWxsIHN1Y2ggZmxhZ3MgKHRoZXJlIHdlcmUgYSBudW1iZXIKCW9mIGVycm9ycyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBpbiB0aGlzIHJlZ2FyZCkuCgoJKiBleHBfYXR0ci5hZGIgKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBNaW5vciBjb2RlIGNsZWFudXAuCgoJKiBleHBfY2g2LmFkYiAoTWFrZV9CdWlsZF9Jbl9QbGFjZV9DYWxsXyopOiBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgYW55CglvZiB0aGVzZSBwcm9jZWR1cmVzIGFyZSBwYXNzZWQgYSBmdW5jdGlvbiBjYWxsIHRoYXQgYWxyZWFkeSBoYXMKCWJ1aWxkLWluLXBsYWNlIGFjdHVhbHMgKHRlc3RpbmcgbmV3IGZsYWcKCUlzX0V4cGFuZGVkX0J1aWxkX0luX1BsYWNlX0NhbGwpLiBTZXQgdGhlIGZsYWcgb24gdGhlIGZ1bmN0aW9uIGNhbGwgaW4KCXRoZSBjYXNlIHdoZXJlIHByb2Nlc3NpbmcgY29udGludWVzLgoJKEV4cGFuZF9DYWxsKTogSWYgdGhlIGNhbGwgaXMgZ2VuZXJhdGVkIGZyb20gYSB0aHVuayBib2R5IHRoZW4gd2UKCXByb3BhZ2F0ZSB0aGUgZXh0cmEgYWN0dWFscyBhc3NvY2lhdGVkIHdpdGggdGhlIGFjY2Vzc2liaWxpdHkKCWxldmVsIG9mIHRoZSBhY2Nlc3MgdHlwZSBhY3R1YWxzLgoKCSogc2VtX2NoNi5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogU2V0IHRoZSBQcm90ZWN0ZWRfRm9ybWFsIGZpZWxkCglvZiBlYWNoIGV4dHJhIGZvcm1hbCBvZiBhIHByb3RlY3RlZCBvcGVyYXRpb24gdG8gcmVmZXJlbmNlIHRoZQoJY29ycmVzcG9uZGluZyBleHRyYSBmb3JtYWwgb2YgdGhlIHN1YnByb2dyYW0gZGVub3RlZCBieSB0aGUKCW9wZXJhdGlvbidzIFByb3RlY3RlZF9Cb2R5X1N1YnByb2dyYW0uCgkKCSogc2luZm8uYWRzLCBzaW5mby5hZGIgKElzX0V4cGFuZGVkX0J1aWxkX0luX1BsYWNlX0NhbGwpOiBOZXcgZmxhZyBvbgoJTl9GdW5jdGlvbl9DYWxsIG5vZGVzLgoKMjAwNy0wOS0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfY2g1LmFkYjogQWN0aXZhdGUgbWVtbW92ZSB0eXBlIHByb2Nlc3NpbmcgaWYgZGVidWcgZmxhZyBkLnMgaXMgc2V0CgoJKiBkZWJ1Zy5hZGI6IEFkZCBkLnMgZmxhZy4KCjIwMDctMDktMjYgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9kYnVnLmFkYiAoRGVidWdfUmVuYW1pbmdfRGVjbGFyYXRpb24pOiBTZXQgSXNfSW50ZXJuYWwgb24gdGhlCglkZWJ1ZyB2YXJpYWJsZSBzbyB0aGF0IGl0IHdvbid0IGJlIGluaXRpYWxpemVkIHdoZW4gcHJhZ21hCglJbml0aWFsaXplX1NjYWxhcnMgaXMgaW4gZWZmZWN0LgoKMjAwNy0wOS0yNiAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZnJlZXplLmFkYiAoRnJlZXplX0VudGl0eSk6IFJlbW92ZSBjaGVjayBmb3IgcHJlZWxhYm9yYWJsZQoJaW5pdGlhbGl6YXRpb24gb2YgYSBmdWxsIHZpZXcuIFRoaXMgaXMgbW92ZWQgdG8KCUFuYWx5emVfUGFja2FnZV9TcGVjaWZpY2F0aW9uLgoKCSogc2VtX2NoNy5hZGIgKEFuYWx5emVfUGFja2FnZV9TcGVjaWZpY2F0aW9uKTogQWRkIGNoZWNrIGZvcgoJcHJlZWxhYm9yYWJsZSBpbml0aWFsaXphdGlvbiBvZiBhIGZ1bGwgdmlldyBpbiBlbnRpdHkgbG9vcC4KCShVbmluc3RhbGxfRGVjbGFyYXRpb25zKTogSWYgZW50aXR5IGlzIGEgdXNlLXZpc2libGUgY29tcGlsYXRpb24gdW5pdCwKCWl0cyBjaGlsZCB1bml0cyBhcmUgdXNlLXZpc2libGUgb25seSBpZiB0aGV5IGFyZSB2aXNpYmxlIGNoaWxkIHVuaXRzLgoKCSogc2VtX3V0aWwuYWRiIChJc19QcmVlbGFib3JhYmxlX0V4cHJlc3Npb24pOiBOZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lCgl3aGV0aGVyIGFuIGV4cHJlc3Npb24gY2FuIGJlIHVzZWQgd2l0aGluIGEgdHlwZSBkZWNsYXJhdGlvbiB0aGF0CglyZXF1aXJlcyBwcmVlbGFib3JhYmxlIGluaXQuCgkoQ2hlY2tfQ29tcG9uZW50cyk6IFJlcGxhY2UgaW5saW5lIGNvZGUgdGhhdCBkb2VzIHBhcnRpYWwgY2hlY2tpbmcgZm9yCglwcmVlbGFib3JhYmxlIGRlZmF1bHQgZXhwcmVzc2lvbnMgd2l0aCBjYWxsIHRvCglJc19QcmVlbGFib3JhYmxlX0V4cHJlc3Npb24uCgkoSGFzX1ByZWVsYWJvcmFibGVfSW5pdGlhbGl6YXRpb24pOiBJbiB0aGUgY2FzZSBvZiBhIGdlbmVyaWMgYWN0dWFsCglzdWJ0eXBlLCAodGhhdCBpcywgSXNfR2VuZXJpY19BY3R1YWwgaXMgVHJ1ZSksIHJldHVybiB0aGUgcmVzdWx0IG9mCglhcHBseWluZyBIYXNfUHJlZWxhYm9yYWJsZV9Jbml0aWFsaXphdGlvbiB0byB0aGUgZ2VuZXJpYyBhY3R1YWwncyBiYXNlCgl0eXBlLgoKMjAwNy0wOS0yNiAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGctY2FsZW5kLmFkYiAoSGFzXzUzX1dlZWtzKTogUmVuYW1lIHRvIExhc3RfWWVhcl9IYXNfNTNfV2Vla3MuIEFkZCBhCgljYWxsIHRvIEphbl8xX0RheSBfT2ZfV2VlayB0byBvcHRpbWl6ZSBpdHMgcGVyZm9ybWFuY2UuCgkoSXNfTGVhcCk6IE1vdmUgdGhlIHJvdXRpbmUgdG8gdGhlIHNjb3BlIG9mIFdlZWtfSW5fWWVhci4KCShKYW5fMV9EYXlfT2ZfV2Vlayk6IE5ldyByb3V0aW5lIGluIFdlZWtfSW5fWWVhciB3aGljaCBjYWxjdWxhdGVzIHRoZQoJd2Vla2RheSBvbiB3aGljaCBKYW51YXJ5IDEgZmFsbHMgb2YgWWVhciAtIDEgYW5kIFllYXIgKyAxLiBUaGlzIGZ1bmN0aW9uCglhdm9pZHMgY2FsbGluZyBUaW1lX09mIGFuZCBTcGxpdCwgdGh1cyBtYWtpbmcgaXQgbW9yZSBlZmZpY2VudC4KCShXZWVrX0luX1llYXIpOiBSZWltcGxlbWVudGVkIGluIG9kZXIgdG8gZm9sbG93IElTTyA4NjAxLgoKCSogZy1jYWxlbmQuYWRzIChXZWVrX0luX1llYXIpOiBDaGFuZ2UgY29tbWVudCB0byByZWZsZWN0IG5ldwoJaW1wbGVtZW50YXRpb24uCgoyMDA3LTA5LTI2ICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoKCSogZy1jb21saW4uYWRzLCBnLWNvbWxpbi5hZGIgKENvbW1hbmRfTGluZV9Db25maWd1cmF0aW9uLAoJQ29tbWFuZF9MaW5lKTogTmV3IHR5cGVzCgkoRGVmaW5lX0FsaWFzLCBEZWZpbmVfUHJlZml4LCBGcmVlKTogTmV3IHN1YnByb2dyYW1zLiBUaGVzZSBwcm92aWRlCglzdXBwb3J0IGZvciBkZWZpbmluZyBob3cgc3dpdGNoZXMgY2FuIGJlIGdyb3VwZWQgb24gYSBjb21tYW5kIGxpbmUgKGFzCglpcyB0aGUgY2FzZSBmb3IgLWduYXR3Li4uIGZvciBHTkFUKSwgYW5kIGhvdyBzaW1wbGUgc3dpdGNoZXMgY2FuIGJlCgl1c2VkIGFzIGFsaWFzZXMgZm9yIG1vcmUgY29tcGxleCBzd2l0Y2hlcyAoLWduYXR3YSBpcyBzYW1lIGFzCgktZ25hdHdiY2VmLi4uKQoJKFNldF9Db21tYW5kX0xpbmUsIEFkZF9Td2l0Y2gsIFJlbW92ZV9Td2l0Y2gpOiBOZXcgc3VicHJvZ3JhbQoJKFN0YXJ0LCBDdXJyZW50XyopOiBOZXcgc3VicHJvZ3JhbXMKCUFkZGVkIHN1cHBvcnQgZm9yIHBhcnNpbmcgYW4gYXJyYXkgb2Ygc3RyaW5ncyBpbiBhZGRpdGlvbiB0byB0aGUgcmVhbAoJY29tbWFuZCBsaW5lLgoJKE9wdF9QYXJzZXIsIE9wdF9QYXJzZXJfRGF0YSk6IE5ldyB0eXBlLiBBcyBhIHJlc3VsdCwgc29tZSB0eXBlcyBoYWQgdG8KCSBiZSBtb3ZlZCBmcm9tIHRoZSBib2R5IHRvIHRoZSBwcml2YXRlIHBhcnQgb2YgdGhlIHNwZWMuCgkoKik6IEFsbCBzdWJwcm9ncmFtcyBub3cgaGF2ZSBhbiBleHRyYSBwYXJhbWV0ZXIgd2l0aCBkZWZhdWx0IHZhbHVlIHRvCglzcGVjaWZ5IHdoaWNoIHBhcnNlciBzaG91bGQgYmUgdXNlZC4gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGl0CglkZWZhdWx0cyB0byBwYXJzaW5nIHRoZSBjb21tYW5kIGxpbmUgb2YgdGhlIGFwcGxpY2F0aW9uLiBUaGV5IHdlcmUgYWxzbwoJbW9kaWZpZWQgdG8gcHJvcGVybHkgaGFuZGxlIGNhc2VzIHdoZXJlIGVhY2ggb2YgdGhlIGFyZ3VtZW50IGRvZXMgbm90CglzdGFydCBhdCBpbmRleCAxICh3aGljaCBpcyBhbHdheXMgdHJ1ZSBmb3IgQWRhLkNvbW1hbmRfTGluZSwgYnV0IG5vdAoJd2hlbiBwcm9jZXNzaW5nIGFueSBBcmd1bWVudF9MaXN0KS4KCShGcmVlKTogTmV3IHN1YnByb2dyYW0KCShJbnRlcm5hbF9Jbml0aWFsaXplX09wdGlvbl9TY2FuLCBGaW5kX0xvbmd1ZXN0X01hdGNoaW5nX1N3aXRjaCwKCUFyZ3VtZW50KTogTmV3IHN1YnByb2dyYW1zCgkoU3dpdGNoX1BhcmFtZXRlcl9UeXBlKTogTmV3IGVudW0sIHdoaWNoIGNsYXJpZmllcyB0aGUgY29kZS4gVGhlIGV4dHJhCglzcGVjaWFsIGNoYXJhY3RlcnMgbGlrZSAnOicsICc9JywuLi4gYXJlIG5vdyBoYW5kbGVkIGluIGEgc2luZ2xlIHBsYWNlLAoJd2hpY2ggbWFrZXMgdGhlIGNvZGUgbW9yZSBleHRlbnNpYmxlIGV2ZW50dWFsbHkuCgkoR2V0b3B0LCBGdWxsX1N3aXRjaCk6IFdoZW4gdGhlIHN3aXRjaCB3YXMgcmV0dXJuZWQgYXMgcGFydCBvZiB0aGUKCXNwZWNpYWwgY2hhcmFjdGVyICcqJywgbWFrZSBzdXJlIGl0IGlzIHByZXBlbmRlZCBieSB0aGUgc3dpdGNoIGNoYXJhY3RlcgoJKCctJyBpbiBnZW5lcmFsKSwgc28gdGhhdCB0aGUgYXBwbGljYXRpb24ga25vd3Mgd2hldGhlciAiZm9vIiBvciAiLWZvbyIKCXdhcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCjIwMDctMDktMjYgIEZsb3JpYW4gVmlsbG9pbmcgIDx2aWxsb2luZ0BhZGFjb3JlLmNvbT4KCgkqIGctZGlyb3BlLmFkYiAoUmVtb3ZlX0Rpcik6IEluIGNhc2Ugd2UgYXJlIHJlbW92aW5nIGRpcmVjdG9yaWVzCglyZWN1cnNpdmVseSwgbWFrZSBzdXJlIHRoYXQgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBkdXJpbmcgdGhlCglwcm9jZXNzaW5nLCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBpcyByZXNldCB0byBpdHMgaW5pdGlhbAoJdmFsdWUgYmVmb3JlIHByb3BhZ2F0aW5nIHRoZSBleGNlcHRpb24uCgoyMDA3LTA5LTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRiaW5kLmFkYjogSWYgdGhlcmUgYXJlIHNldmVyYWwgQUxJIGZpbGVzIHNwZWNpZmllZCBhbmQgdGhlcmUgaXMKCWEgbWFpbiBwcm9ncmFtIHRvIGJpbmQsIHRoZSBmaXJzdCBBTEkgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiB0aGUgbWFpbgoJc3VicHJvZ3JhbSBhbmQgdGhlIG5hbWVzIG9mIHRoZSBiaW5kZXIgZ2VuZXJhdGVkIGZpbGVzIHdpbGwgYmUgZGVyaXZlZAoJZnJvbSB0aGUgZmlyc3QgQUxJIGZpbGUgbmFtZS4KCShHbmF0YmluZCk6IEZpeCBpbnNlcnRpb24gY2hhcmFjdGVyIGluIGludm9jYXRpb24gb2YgRXJyb3JfTXNnCgoyMDA3LTA5LTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRjbWQuYWRiIChDaGVja19GaWxlcyk6IERvIG5vdCBpbmNsdWRlIHNvdXJjZXMgdGhhdCBoYXZlIGJlZW4KCXJlbW92ZWQgYnkgYXR0cmlidXRlcyBFeGNsdWRlX1NvdXJjZV9GaWxlcyBvciBMb2NhbGx5X1JlbW92ZWRfRmlsZXMuCgoyMDA3LTA5LTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBsaWIteHJlZi5hZHMsIGxpYi14cmVmLmFkYjogVGhlIGVudHJ5IGZvciBhcnJheSB0eXBlcyBub3cgY2FycmllcwoJaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBvZiBpdHMgaW5kZXggdHlwZXMsIGZvbGxvd2luZyB0aGUgdHlwZQoJcmVmZXJlbmNlIGZvciBpdHMgY29tcG9uZW50IHR5cGUuCgoyMDA3LTA5LTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiOiAoS2lsbCk6IE5ldyBwcm9jZWR1cmUgKF9fZ25hdF9raWxsIGltcG9ydGVkKQoJKFJ1bm5pbmdfQ29tcGlsZSwgT3V0c3RhbmRpbmdfQ29tcGlsZXMpOiBHbG9iYWwgdmFyaWFibGVzIHRoYXQKCXdlcmUgcHJldmlvdXNseSBsb2NhbCB0byBwcm9jZWR1cmUgQ29tcGlsZV9Tb3VyY2VzLgoJKFNpZ2ludF9JbnRlcmNlcHRlZCk6IFNlbmQgc2lnbmFsIFNJR0lOVCB0byBhbGwgb3V0c3RhbmRpbmcKCWNvbXBpbGF0aW9uIHByb2Nlc3Nlcy4KCgkoR25hdG1ha2UpOiBJZiBwcm9qZWN0IGZpbGVzIGFyZSB1c2VkLCBjcmVhdGUgdGhlIG1hcHBpbmcgb2YgYWxsIHRoZQoJc291cmNlcywgc28gdGhhdCB0aGUgY29ycmVjdCBwYXRocyB3aWxsIGJlIGZvdW5kLgoKCSogcHJqLWVudi5hZHMsIHByai1lbnYuYWRiIChDcmVhdGVfTWFwcGluZyk6IE5ldyBwcm9jZWR1cmUKCjIwMDctMDktMjYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZXV0bC5hZHMgKE1haW5fQ29uZmlnX1Byb2plY3QpOiBNb3ZlZCB0byBncHJfdXRpbC5hZHMKCgkqIHByai5hZHMsIHByai5hZGIgKERlZmF1bHRfTGFuZ3VhZ2UpOiBSZW1vdmUgZnVuY3Rpb24sIG5vIGxvbmdlciB1c2VkCglSZXBsYWNlIGNvbXBvbmVudHMgQ29tcGlsZXJfTWluX09wdGlvbnMgYW5kIEJpbmRlcl9NaW5fT3B0aW9ucyB3aXRoCglDb21waWxlcl9SZXF1aXJlZF9Td2l0Y2hlcyBhbmQgQmluZGVyX1JlcXVpcmVkX1N3aXRjaGVzIGluIHJlY29yZAoJTGFuZ3VhZ2VfQ29uZmlnLgoJUmVtb3ZlIGNvbXBvbmVudHMgRGVmYXVsdF9MYW5ndWFnZSBhbmQgQ29uZmlnIGluIFByb2plY3RfVHJlZV9EYXRhLAoJbm8gbG9uZ2VyIHVzZWQuCgoJKiBwcmotYXR0ci5hZGI6IE5ldyBhdHRyaWJ1dGVzIFJlcXVpcmVkX1N3aXRjaGVzICg8bGFuZ3VhZ2U+KSBpbgoJcGFja2FnZXMgQ29tcGlsZXIgYW5kIEJpbmRlci4KCgkqIHByai1ubXNjLmFkYjogTWFqb3IgcmV3cml0ZSBvZiB0aGUgcHJvY2Vzc2luZyBvZiBjb25maWd1cmF0aW9uCglhdHRyaWJ1dGVzIGZvciBncHJidWlsZC4gTm8gaW1wYWN0IG9uIEdOQVQgdG9vbHMuCgoJKiBwcmotcHJvYy5hZHMsIHByai1wcm9jLmFkYiAoUHJvY2Vzc19Qcm9qZWN0X1RyZWVfUGhhc2VfMik6IE5vIGxvbmdlcgoJcHJvY2VzcyBjb25maWd1cmF0aW9uIGF0dHJpYnV0ZXM6IHRoaXMgaXMgZG9uZSBpbiBQcmouTm1zYy5DaGVjay4KCShSZWN1cnNpdmVfUHJvY2Vzcyk6IE1ha2UgYSBmdWxsIGNvcHkgb2YgcGFja2FnZXMgaW5oZXJpdGVkIGZyb20gcHJvamVjdAoJYmVpbmcgZXh0ZW5kZWQsIGluc3RlYWQgb2YgYSBzaGFsbG93IGNvcHkuCgkoUHJvY2Vzc19Qcm9qZWN0X1RyZWVfUGhhc2VfMSk6IE5ldyBwcm9jZWR1cmUKCShQcm9jZXNzX1Byb2plY3RfVHJlZV9QaGFzZV8xKTogTmV3IHByb2NlZHVyZQoJKFByb2Nlc3MpOiBJbXBsZW1lbnRhdGlvbiBub3cgdXNlcyB0aGUgdHdvIG5ldyBwcm9jZWR1cmVzCgoJKiBwcmotdXRpbC5hZGIgKEV4ZWN1dGFibGVfT2YpOiBHZXQgdGhlIHN1ZmZpeCBhbmQgdGhlIGRlZmF1bHQgc3VmZml4Cglmcm9tIHRoZSBwcm9qZWN0IGNvbmZpZywgbm90IHRoZSB0cmVlIGNvbmZpZyB0aGF0IG5vIGxvbmdlciBleGlzdHMuCgoyMDA3LTA5LTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4uCgoyMDA3LTA5LTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG9zaW50LmFkYiwgb3NpbnQuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIG9zaW50LWIuYWRiLCBvc2ludC1iLmFkcyAoU2V0X0N1cnJlbnRfRmlsZV9OYW1lX0luZGV4KTogTmV3IHByb2NlZHVyZQoKMjAwNy0wOS0yNiAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoNC5hZGIgKFBfUmVjb3JkX09yX0FycmF5X0NvbXBvbmVudF9Bc3NvY2lhdGlvbik6IENoYW5nZSBBZGEgOTUKCW1lc3NhZ2UgdG8gY2l0ZSB1c2Ugb2YgPD4gaW4gYWdncmVnYXRlIGNvbXBvbmVudCBhc3NvY2lhdGlvbnMgcmF0aGVyCgl0aGFuIHdyb25nbHkgaW5kaWNhdGluZyB1c2Ugb2YgbGltaXRlZCBhZ2dyZWdhdGVzLgoKMjAwNy0wOS0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fYXR0ci5hZGIgKEFuYWx5emVfQWNjZXNzX0F0dHJpYnV0ZSk6IEZpeCBtaXNzaW5nIHNldCBvZgoJQWRkcmVzc19UYWtlbi4KCjIwMDctMDktMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDMuYWRiIChEZXJpdmVfU3VicHJvZ3JhbXMpOiBJZiB0aGUgaW50ZXJmYWNlIHBhcmVudCBpcyBhIGRpcmVjdAoJYW5jZXN0b3Igb2YgdGhlIGRlcml2ZWQgdHlwZSwgdGhlIG9wZXJhdGlvbnMgYXJlIGluaGVyaXRlZCBmcm9tIHRoZQoJcHJpbWFyeSBkaXNwYXRjaCB0YWJsZSBvZiB0aGUgcGFyZW50LgoJKE9LX0Zvcl9MaW1pdGVkX0luaXRfSW5fMDUpOiBSZW1vdmUgb2xkIGNvbW1lbnQuIFJlamVjdCBpbi1wbGFjZSBjYWxscwoJd2hlbiB0aGUgY29udGV4dCBpcyBhbiBleHBsaWNpdCB0eXBlIGNvbnZlcnNpb24uCgoyMDA3LTA5LTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9RdWFsaWZpZWRfRXhwcmVzc2lvbik6IEFwcGx5IG5hbWUgcmVzb2x1dGlvbgoJcnVsZSBmb3IgcXVhbGlmaWVkIGV4cHJlc3Npb25zIHByb3Blcmx5LCB0byBkZXRlY3QgaW1wcm9wZXIgY29udmVyc2lvbnMKCWFuZCByZXNvbHZlIHNvbWUgY2FzZXMgb2Ygb3ZlcmxvYWRpbmcuCgoyMDA3LTA5LTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9DYWxsKTogSWYgdGhlIGNhbGwgaXMgZGlzcGF0Y2hpbmcsIGdlbmVyYXRlIHRoZQoJcHJvcGVyIGtpbmQgb2YgcmVmZXJlbmNlIHRvIHRoZSBwcmltaXRpdmUgb3BlcmF0aW9uLCBmb3IgYmV0dGVyIHNvdXJjZQoJbmF2aWdhdGlvbi4KCShWYWxpZF9Db252ZXJzaW9uKTogQSB0YWdnZWQgY29udmVyc2lvbiBpcyBsZWdhbCBpZiBib3RoIG9wZXJhbmRzIGFyZQoJdGFnZ2VkLgoKMjAwNy0wOS0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fd2Fybi5hZGIgKENoZWNrX1JlZmVyZW5jZXMpOiBDYXRjaCBtb3JlIGNhc2VzIG9mIHVucmVmZXJlbmNlZAoJcGFja2FnZXMuCgoyMDA3LTA5LTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHNuYW1lcy5hZGIsIHNuYW1lcy5hZHM6IENoYW5nZSBJbmNsdWRlX09wdGlvbiB0byBJbmNsdWRlX1N3aXRjaGVzCgoyMDA3LTA5LTI2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtd2Noc3R3LmFkYjogcHJvdmlkZSBtZXNzYWdlcyBmb3IgcnVuIHRpbWUgdW5pdCBleGNlcHRpb25zCgoJKiBhLXdpdGVpby5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZXhwX2NoMTMuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDctMDktMjYgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFkYWNvcmUuY29tPgoKCSogdm1zX2RhdGEuYWRzOiBSZXZpc2UgZ25hdG1ldHJpYyBxdWFsaWZpZXJzLgoJQWRkIHF1YWxpZmllZCBmb3IgdGhlIG5ldyBnbmF0YmluZCBvcHRpb24gJy15JwoKCSogZ25hdF91Z24udGV4aTogUmV2aXNlIHRoZSBnbmF0bWV0cmljIHNlY3Rpb24uCglBZGQgZW50cnkgZm9yIG5ldyBnbmF0YmluZCBvcHRpb24gJy15Jy4KCgkqIGduYXRfcm0udGV4aTogTWlub3Igc3BlbGxpbmcgY29ycmVjdGlvbi4KCURvY3VtZW50IHJlc3RyaWN0aW9uIG9uIG92ZXJsYXlpbmcgY29udHJvbGxlZCB0eXBlcwoKMjAwNy0wOS0yNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtYWtlZ3ByLmFkYiAoTGlua19FeGVjdXRhYmxlcyk6IERvIG5vdCBmYWlsIHdoZW4gdGhlIHJvb3QgcHJvamVjdCBoYXMKCW5vIHNvdXJjZXMsIGJ1dCBpcyBhbiBleHRlbmRpbmcgcHJvamVjdC4KCjIwMDctMDktMjUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmFucy5jOiBGaXggbWlzcGxhY2VkICNkZWZpbmUuCgoyMDA3LTA5LTIyICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdXRpbHMyLmMgKGJ1aWxkX3VuYXJ5X29wKSA8QUREUl9FWFBSPiBbSU5ESVJFQ1RfUkVGXTogUHJvcGFnYXRlCgl0aGUgVFlQRV9SRUZfQ0FOX0FMSUFTX0FMTCBmbGFnIHRvIHRoZSByZXN1bHQuCgoyMDA3LTA5LTIxICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdXRpbHMuYyAodHlwZV9mb3Jfbm9uYWxpYXNlZF9jb21wb25lbnRfcCk6IFJldHVybiBmYWxzZSBmb3IKCWFsbCBBR0dSRUdBVEVfVFlQRXMuCgoyMDA3LTA5LTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxvYmplY3Q+OiBNYWtlIGFnYWluIHRoZSB0eXBlIG9mIGFuCglvYmplY3QgY292ZXJlZCBieSAxMy4zKDE5KSB2b2xhdGlsZS4KCjIwMDctMDktMTIgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgYWRhLzI2Nzk3CglQUiBhZGEvMzI0MDcKCSogdXRpbHMuYyAodW5jaGVja2VkX2NvbnZlcnQpOiBVc2UgYSBzdWJ0eXBlIGFzIHRoZSBpbnRlcm1lZGlhdGUgdHlwZQoJaW4gdGhlIHNwZWNpYWwgVklFV19DT05WRVJUX0VYUFIgY2FzZS4KCjIwMDctMDktMTIgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogdHlwZXMuYWRzLCBhLWNoYXJhYy5hZHMsIGZyZWV6ZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIGEtZXhjZXB0LmFkYiwgZy1oZXNvcmEuYWRiLCBnLXNwZWNoZS5hZGIsIGxpYi5hZGIsIGxpYi5hZHMsCglsaWItbG9hZC5hZGIsIGxpYi13cml0LmFkYiwgcy1hc3NlcnQuYWRiLCBzLWNhcnVuOC5hZGIsCglzLWNhc3V0aS5hZGIsIHMtY3JjMzIuYWRiLCBzLWV4Y3RhYi5hZGIsIHMtaHRhYmxlLmFkYiwgcy1pbWdlbnUuYWRiLAoJcy1tYXN0b3AuYWRiLCBzLW1lbW9yeS5hZGIsIHMtbWVtb3J5LmFkcywgcy1zZWNzdGEuYWRiLCBzLXNvZmxpbi5hZGIsCglzLXNvcGNvMy5hZGIsIHMtc29wY280LmFkYiwgcy1zb3BjbzUuYWRiLCBzLXN0YWNoZS5hZGIsIHMtc3RhbGliLmFkYiwKCXMtc3RvZWxlLmFkYiwgcy1zdHJjb20uYWRiLCBzLXN0cm9wcy5hZGIsIHMtdHJhY2ViLmFkYiwgcy10cmFlbnQuYWRiLAoJcy13Y2hjbnYuYWRiLCBzLXdjaGNvbi5hZGIsIHMtd2NoamlzLmFkYiwgcy1hZGRvcGUuYWRiLCBzLWV4Y2VwdC5hZGIsCglzLW9zX2xpYi5hZGIsIHMtc3RyaW5nLmFkYiwgcy11dGZfMzIuYWRiLCBhLWVsY2hoYS5hZGIsCglhLWNobGF0MS5hZHMsIGEtZWxjaGhhLmFkcywgYS1leGNlcHQuYWRzLCBnLWhlc29yYS5hZHMsIGctaHRhYmxlLmFkcywgCglnLXNwZWNoZS5hZHMsIHBhci1wcmFnLmFkYiwgcmVzdHJpY3QuYWRiLCByZXN0cmljdC5hZHMsIHMtYXNzZXJ0LmFkcywgCglzLWNhcnVuOC5hZHMsIHMtY2FzdXRpLmFkcywgcy1jcmMzMi5hZHMsIHNlbV9jaDExLmFkYiwgc2VtX3ByYWcuYWRiLCAKCXMtZXhjdGFiLmFkcywgcy1odGFibGUuYWRzLCBzLWltZ2VudS5hZHMsIHMtbWFzdG9wLmFkcywgc25hbWVzLmFkYiwgCglzbmFtZXMuYWRzLCBzbmFtZXMuaCwgcy1wdXJleGMuYWRzLCBzLXNlY3N0YS5hZHMsIHMtc29mbGluLmFkcywgCglzLXNvcGNvMy5hZHMsIHMtc29wY280LmFkcywgcy1zb3BjbzUuYWRzLCBzLXN0YWNoZS5hZHMsIHMtc3RhbGliLmFkcywgCglzLXN0b2VsZS5hZHMsIHMtc3RyY29tLmFkcywgcy1zdHJvcHMuYWRzLCBzLXRyYWNlYi5hZHMsIHMtdHJhZW50LmFkcywgCglzLXVuc3R5cC5hZHMsIHMtd2NoY252LmFkcywgcy13Y2hjb24uYWRzLCBzLXdjaGppcy5hZHMsIHMtYWRkb3BlLmFkcywgCglzLWV4Y2VwdC5hZHMsIHMtb3NfbGliLmFkcywgcy1zdHJpbmcuYWRzLCBzLXV0Zl8zMi5hZHM6IEltcGxlbWVudAoJcHJhZ21hIENvbXBpbGVyX1VuaXQgYW5kIGFkZHMgaXQgdG8gcmVsZXZhbnQgbGlicmFyeSB1bml0cy4KCjIwMDctMDktMTIgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9hZ2dyLmFkYiAoUmVzb2x2ZV9SZWNvcmRfQWdncmVnYXRlKTogQW4gb3RoZXJzIGFzc29jaWF0aW9uIHdpdGgKCWEgYm94IG5lZWQgbm90IGNvcnJlc3BvbmQgdG8gYW55IGNvbXBvbmVudC4KCjIwMDctMDktMTIgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy10aHJlYWQuYWRzOiBEb2N1bWVudCB1c2Ugb2YgIndpdGggR05BVC5UaHJlYWRzIiB0byBlbnN1cmUgbG9hZGluZwoJdGhlIHRhc2tpbmcgdmVyc2lvbiBvZiB0aGUgQWRhIHJ1biB0aW1lIHdoZW4gZm9yZWlnbiB0aHJlYWRzIGFyZQoJcHJlc2VudCBhbmQgdGhlcmUgYXJlIG5vIGV4cGxpY2l0IEFkYSB0YXNrcyBvciB0YXNraW5nIGNvbnN0cnVjdHMuCgoJKiBnbmF0X3JtLnRleGk6IENsYXJpZnkgZG9jdW1lbnRhdGlvbiBvZiBHTkFULlRocmVhZHMuCgoyMDA3LTA5LTEyICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogYmluZHVzZy5hZGIgKERpc3BsYXkpOiBDb3JyZWN0IGNvbW1lbnQgZm9yIHN3aXRjaCAtWC4gQWRkIGEgbGluZSBmb3IKCXRoZSB1c2FnZSBvZiBzd2l0Y2ggLXkuCgoJKiBzd2l0Y2gtYi5hZGIgKFNjYW5fQmluZGVyX1N3aXRjaGVzKTogU2V0IGZsYWcgTGVhcF9TZWNvbmRzX1N1cHBvcnQKCXdoZW4gc3dpdGNoIC15IGlzIHByZXNlbnQuCgoJKiBvcHQuYWRzOiBBZGQgYmluZGVyIGZsYWcgTGVhcF9TZWNvbmRzX1N1cHBvcnQgdXNlZCB0byBlbmFibGUvZGlzYWJsZQoJbGVhcCBzZWNvbmRzIGluIEFkYS5DYWxlbmRhciBhbmQgaXRzIGNoaWxkcmVuLgoKMjAwNy0wOS0xMiAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIGEtZXh0aXRpLmFkcyAoVGltZXIpOiBUaGUgZGlzY3JpbWluYW50IGlzIGEgIm5vdCBudWxsIGFjY2VzcwoJY29uc3RhbnQiIGluIHRoZSBSZWZlcmVuY2UgTWFudWFsLgoJKENhbmNlbF9IYW5kbGVyKTogQ2FuY2VsbGVkIGlzIGFuIG91dCBwYXJhbWV0ZXIgaW4gdGhlIFJlZmVyZW5jZSBNYW51YWwuCgoyMDA3LTA5LTEyICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGEtc3d1d2hhLmFkYjogUmVtb3ZlIGp1bmsgUk0gaGVhZGVyCgoyMDA3LTA5LTEyICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGctYnl0c3dhLXg4Ni5hZGIgKFN3YXAyLCBTd2FwNCwgU3dhcDgpOiBSZW1vdmUgZXhwbGljaXQgImluIiBtb2RlCglpbmRpY2F0b3IKCgkqIGctYnl0c3dhLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA3LTA5LTEyICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZy1zb2Njb24tc29sYXJpcy02NC5hZHMsIGctc29jY29uLWhwdXgtaWE2NC5hZHM6IAoJQWRkIG5ldyBjb25zdGFudCBUaHJlYWRfQmxvY2tpbmdfSU8sIGFsd2F5cyBUcnVlIGJ5IGRlZmF1bHQsIHNldCBGYWxzZQoJb24gYSBwZXItcnVudGltZSBiYXNpcy4KCShOZWVkX05ldGRiX0J1ZmZlcik6IE5ldyBjb25zdGFudC4KCjIwMDctMDktMTIgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtZHNhc2VyLmFkcyAoR2V0X0xvY2FsX1BhcnRpdGlvbl9JZCwgR2V0X1Bhc3NpdmVfUGFydGl0aW9uX0lkKToKCUFkZGVkIHJlbmFtZXMgZm9yIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIGluIFN5c3RlbS5QYXJ0aXRpb25fSW50ZXJmYWNlLgoKMjAwNy0wOS0xMiAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgVk1TIHNwZWNpZmljIFN5c3RlbS5DUlRMIHBhY2thZ2VzIHdoaWNoIGFyZSBubwoJbG9uZ2VyIG5lZWRlZC4KCgkqIHMtY3J0bC12bXM2NC5hZHM6IFJlbW92ZWQuCgoyMDA3LTA5LTEyICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1JlY29yZF9TdWJ0eXBlPjogRm9yIGEgc3VidHlwZQoJd2l0aCBkaXNjcmltaW5hbnQgY29uc3RyYWludHMsIGdlbmVyYWxpemUgdGhlIGNvZGUgZm9yIEJJVF9GSUVMRHMKCXRvIFBBQ0tFRCBmaWVsZHMgb2YgY29uc3RhbnQgc2l6ZSBhbmQgcHJvcGFnYXRlIERFQ0xfUEFDS0VELgoKMjAwNy0wOS0xMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAoYXJyYXlfdHlwZV9oYXNfbm9uYWxpYXNlZF9jb21wb25lbnQpOiBOZXcgcHJlZGljYXRlLgoJKGduYXRfdG9fZ251X2ZpZWxkKSA8RV9BcnJheV9UeXBlPjogSW52b2tlIHRoZSBhYm92ZSBwcmVkaWNhdGUgdG8KCXNldCB0aGUgVFlQRV9OT05BTElBU0VEX0NPTVBPTkVOVCBmbGFnIG9uIHRoZSB0eXBlLgoJPEVfQXJyYXlfU3VidHlwZT46IExpa2V3aXNlLgoJKiBnaWdpLmggKHR5cGVfZm9yX25vbmFsaWFzZWRfY29tcG9uZW50X3ApOiBEZWNsYXJlLgoJKiB1dGlscy5jICh0eXBlX2Zvcl9ub25hbGlhc2VkX2NvbXBvbmVudF9wKTogTmV3IHByZWRpY2F0ZS4KCShjcmVhdGVfZmllbGRfZGVjbCk6IEludm9rZSB0aGUgYWJvdmUgcHJlZGljYXRlIHRvIHNldCB0aGUKCURFQ0xfTk9OQUREUkVTU0FCTEVfUCBmbGFnIG9uIHRoZSBmaWVsZC4KCjIwMDctMDktMTEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiIChEaXNwYXRjaF9UYWJsZV9XcmFwcGVyKTogTmV3IGF0dHJpYnV0ZS4gUHJlc2VudAoJaW4gbGlicmFyeSBsZXZlbCByZWNvcmQgdHlwZSBlbnRpdGllcyBpZiB3ZSBhcmUgZ2VuZXJhdGluZyBzdGF0aWNhbGx5CglhbGxvY2F0ZWQgZGlzcGF0Y2ggdGFibGVzLgoKCSogZXhwX2Rpc3AuYWRiIChNYWtlX1RhZ3MvTWFrZV9EVCk6IFJlcGxhY2UgcHJldmlvdXMgY29kZQoJaW1wb3J0aW5nL2V4cG9ydGluZyB0aGUgX3RhZyBkZWNsYXJhdGlvbiBieSBuZXcgY29kZQoJaW1wb3J0aW5nL2V4cG9ydGluZyB0aGUgZGlzcGF0Y2ggdGFibGUgd3JhcHBlci4gVGhpcyBjaGFuZ2UgYWxsb3dzIHVzCgl0byBzdGF0aWNhbGx5IGFsbG9jYXRlIG9mIHRoZSBUU0QuCgkoTWFrZV9EVC5FeHBvcnRfRFQpOiBOZXcgcHJvY2VkdXJlLgoJKEJ1aWxkX1N0YXRpY19EVCk6IE5ldyBmdW5jdGlvbi4KCShIYXNfRFQpOiBOZXcgZnVuY3Rpb24uCgoJKiBmcmVlemUuYWRiIChGcmVlemVfU3RhdGljX09iamVjdCk6IENvZGUgY2xlYW51cDogRG8gbm90IHJlc2V0IGZsYWdzCglUcnVlX0NvbnN0YW50IGFuZCBDdXJyZW50X1ZhbHVlLiBSZXF1aXJlZCB0byBzdGF0aWNhbGx5CglhbGxvY2F0ZSB0aGUgZGlzcGF0Y2ggdGFibGVzLgoJKENoZWNrX0FsbG9jYXRvcik6IE1ha2UgZnVuY3Rpb24gaXRlcmF0aXZlIGluc3RlYWQgb2YgcmVjdXJzaXZlLgogCUFsc28gcmV0dXJuIGlubmVyIGFsbG9jYXRvciBub2RlLCB3aGVuIHByZXNlbnQsIHNvIHRoYXQgd2UgZG8gbm90IGhhdmUKIAl0byBsb29rIGZvciB0aGF0IG5vZGUgYWdhaW4gaW4gdGhlIGNhbGxlci4KCjIwMDctMDktMTEgIEphbiBIdWJpY2thIDxqaEBzdXNlLmN6PgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9ib2R5KTogS2lsbC4KCShMQU5HX0hPT0tTX0NBTExHUkFQSF9FWFBBTkRfRlVOQ1RJT04pOiBLaWxsLgoKMjAwNy0wOS0xMCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfYXRhZy5hZHMsIGV4cF9hdGFnLmFkYiwgbWxpYi10Z3QtdHJ1NjQuYWRiLCBtbGliLXRndC1haXguYWRiLAoJbWxpYi10Z3QtaXJpeC5hZGIsIG1saWItdGd0LWhwdXguYWRiLCBtbGliLXRndC1saW51eC5hZGIsCgltbGliLXRndC1zb2xhcmlzLmFkYiwgbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwgbWxpYi10Z3Qtdm1zLWlhNjQuYWRiLAoJbWxpYi10Z3QtbWluZ3cuYWRiLCBtbGliLXRndC12eHdvcmtzLmFkYiwgYWxpLmFkYiwgYWxpLmFkcywKCWFsaS11dGlsLmFkYiwgYWxpLXV0aWwuYWRzLCBhdHJlZS5oLCBiYWNrX2VuZC5hZGIsIGJhY2tfZW5kLmFkcywKCWJjaGVjay5hZGIsIGJjaGVjay5hZHMsIGJpbmRlLmFkYiwgYmluZGUuYWRzLCBiaW5kZXJyLmFkYiwgYmluZGVyci5hZHMsCgliaW5kZ2VuLmFkYiwgYmluZGdlbi5hZHMsIGJpbmR1c2cuYWRiLCBiaW5kdXNnLmFkcywgYnV0aWwuYWRiLAoJYnV0aWwuYWRzLCBjaGVja3MuYWRiLCBjaGVja3MuYWRzLCBjbGVhbi5hZGIsIGNsZWFuLmFkcywgY29tcGVyci5hZGIsCgljb21wZXJyLmFkcywgY3N0YW5kLmFkYiwgY3N0YW5kLmFkcywgZGVidWdfYS5hZGIsIGRlYnVnX2EuYWRzLAoJZWxpc3RzLmgsIGVycm91dC5hZGIsIGVycm91dGMuYWRzLCBlcnJ1dGlsLmFkYiwgZXJydXRpbC5hZHMsCgllcnJfdmFycy5hZHMsIGV2YWxfZmF0LmFkYiwgZXZhbF9mYXQuYWRzLCBleHBfc2VsLmFkcywgZXhwX3NlbC5hZGIsCglleHBfYWdnci5hZGIsIGV4cF9hZ2dyLmFkcywgZXhwYW5kZXIuYWRiLCBleHBhbmRlci5hZHMsIGV4cF9hdHRyLmFkcywKCWV4cF9jaDEwLmFkcywgZXhwX2NoMTEuYWRiLCBleHBfY2gxMi5hZGIsIGV4cF9jaDEyLmFkcywgZXhwX2NoMTMuYWRiLAoJZXhwX2NoMTMuYWRzLCBleHBfY2gyLmFkYiwgZXhwX2NoMi5hZHMsIGV4cF9jaDMuYWRzLCBleHBfY2g0LmFkYiwKCWV4cF9jaDQuYWRzLCBleHBfY2g1LmFkYiwgZXhwX2NoNS5hZHMsIGV4cF9jaDYuYWRiLCBleHBfY2g2LmFkcywKCWV4cF9jaDcuYWRiLCBleHBfY2g3LmFkcywgZXhwX2NoOC5hZGIsIGV4cF9jaDguYWRzLCBleHBfY2g5LmFkYiwKCWV4cF9jaDkuYWRzLCBleHBfY29kZS5hZGIsIGV4cF9jb2RlLmFkcywgZXhwX2RidWcuYWRiLCBleHBfZGJ1Zy5hZHMsCglleHBfZGlzcC5hZHMsIGV4cF9kaXN0LmFkYiwgZXhwX2Rpc3QuYWRzLCBleHBfZml4ZC5hZGIsIGV4cF9maXhkLmFkcywKCWV4cF9pbWd2LmFkYiwgZXhwX2ltZ3YuYWRzLCBleHBfaW50ci5hZGIsIGV4cF9pbnRyLmFkcywgZXhwX3Bha2QuYWRiLAoJZXhwX3Bha2QuYWRzLCBleHBfcHJhZy5hZGIsIGV4cF9wcmFnLmFkcywgZXhwX3NtZW0uYWRiLCBleHBfc3RybS5hZGIsCglleHBfc3RybS5hZHMsIGV4cF90c3MuYWRiLCBleHBfdHNzLmFkcywgZXhwX3V0aWwuYWRiLCBleHBfdXRpbC5hZHMsCglleHBfdmZwdC5hZGIsIGV4cF92ZnB0LmFkcywgZm1hcC5hZGIsIGZtYXAuYWRzLCBmbmFtZS1zZi5hZGIsCglmbmFtZS1zZi5hZHMsIGZuYW1lLXVmLmFkYiwgZm5hbWUtdWYuYWRzLCBmcm9udGVuZC5hZGIsIGZyb250ZW5kLmFkcywKCWdldF90YXJnLmFkYiwgZ2V0X3RhcmcuYWRzLCBnbmF0MWRydi5hZGIsIGduYXQxZHJ2LmFkcywgZ25hdGJpbmQuYWRiLAoJZ25hdGJpbmQuYWRzLCBnbmF0YmwuYywgZ25hdGNob3AuYWRiLCBnbmF0Y2xlYW4uYWRiLCBnbmF0Y21kLmFkYiwKCWduYXRjbWQuYWRzLCBnbmF0ZGxsLmFkYiwgZ25hdGZpbmQuYWRiLCBnbmF0a3IuYWRiLCBnbmF0a3IuYWRzLAoJZ25hdGxici5hZGIsIGduYXRsaW5rLmFkYiwgZ25hdGxpbmsuYWRzLCBnbmF0bHMuYWRiLCBnbmF0bHMuYWRzLAoJZ25hdG1ha2UuYWRiLCBnbmF0bWFrZS5hZHMsIGduYXRtZW0uYWRiLCBnbmF0bmFtZS5hZGIsIGduYXRuYW1lLmFkcywKCWduYXRwcmVwLmFkYiwgZ25hdHByZXAuYWRzLCBnbmF0c3ltLmFkYiwgZ25hdHhyZWYuYWRiLAoJZ3ByZXAuYWRiLCBncHJlcC5hZHMsIGhsby5hZGIsIGhsby5hZHMsIGltcHVuaXQuYWRiLCBpbXB1bml0LmFkcywKCWlubGluZS5hZGIsIGlubGluZS5hZHMsIGl0eXBlcy5hZGIsIGl0eXBlcy5hZHMsIGxheW91dC5hZGIsIGxheW91dC5hZHMsCglsaWItbG9hZC5hZGIsIGxpYi1sb2FkLmFkcywgbGliLXV0aWwuYWRiLCBsaWItdXRpbC5hZHMsIGxpYi13cml0LmFkYiwKCWxpYi13cml0LmFkcywgbGliLXhyZWYuYWRiLCBsaWIteHJlZi5hZHMsIGxpdmUuYWRiLCBsaXZlLmFkcywKCW1ha2UuYWRiLCBtYWtlLmFkcywgbWFrZXV0bC5hZHMsIG1ha2V1dGwuYWRiLCBtYWtldXNnLmFkYiwgbWFrZXVzZy5hZHMsCgltZGxsLmFkYiwgbWRsbC5hZHMsIG1kbGwtZmlsLmFkYiwgbWRsbC1maWwuYWRzLCBtZGxsLXV0bC5hZGIsCgltZGxsLXV0bC5hZHMsIG1lbXJvb3QuYWRiLCBtZW1yb290LmFkcywgbWxpYi5hZGIsIG1saWIuYWRzLAoJbWxpYi1maWwuYWRiLCBtbGliLWZpbC5hZHMsIG1saWItcHJqLmFkYiwgbWxpYi1wcmouYWRzLCBtbGliLXRndC5hZGIsCgltbGliLXRndC5hZHMsIG1saWItdXRsLmFkYiwgbWxpYi11dGwuYWRzLCBuYW1ldC5oLCBubWFrZS5hZHQsCglvc2ludC5hZGIsIG9zaW50LmFkcywgb3NpbnQtYi5hZGIsIG9zaW50LWIuYWRzLCBvc2ludC1jLmFkYiwKCW9zaW50LWMuYWRzLCBvc2ludC1sLmFkYiwgb3NpbnQtbC5hZHMsIG9zaW50LW0uYWRiLCBvc2ludC1tLmFkcywKCXBhci5hZGIsIHBhci5hZHMsIHBhci1jaDEwLmFkYiwgcGFyLWNoMTEuYWRiLCBwYXItY2gxMi5hZGIsCglwYXItY2gxMy5hZGIsIHBhci1jaDIuYWRiLCBwYXItY2gzLmFkYiwgcGFyLWNoNC5hZGIsIHBhci1jaDUuYWRiLAoJcGFyLWNoNi5hZGIsIHBhci1jaDcuYWRiLCBwYXItY2g4LmFkYiwgcGFyLWNoOS5hZGIsIHBhci1lbmRoLmFkYiwKCXBhci1sYWJsLmFkYiwgcGFyLWxvYWQuYWRiLCBwYXItcHJhZy5hZGIsIHBhci1zeW5jLmFkYiwgcGFyLXRjaGsuYWRiLAoJcGFyLXV0aWwuYWRiLCBwcmVwLmFkYiwgcHJlcC5hZHMsIHByZXBjb21wLmFkYiwgcHJlcGNvbXAuYWRzLAoJcHJqLmFkYiwgcHJqLmFkcywgcHJqLWF0dHIuYWRiLCBwcmotYXR0ci5hZHMsIHByai1jb20uYWRzLAoJcHJqLWRlY3QuYWRiLCBwcmotZGVjdC5hZHMsIHByai1lcnIuYWRiLCBwcmotZXJyLmFkcywgcHJqLWV4dC5hZGIsCglwcmotZXh0LmFkcywgcHJqLW1ha3IuYWRiLCBwcmotbWFrci5hZHMsIHByai1ubXNjLmFkYiwgcHJqLW5tc2MuYWRzLAoJcHJqLXBhcnMuYWRiLCBwcmotcGFycy5hZHMsIHByai1wYXJ0LmFkYiwgcHJqLXBhcnQuYWRzLAoJcHJqLXBwLmFkYiwgcHJqLXBwLmFkcywgcHJqLXByb2MuYWRiLCBwcmotcHJvYy5hZHMsCglwcmotc3RydC5hZGIsIHByai1zdHJ0LmFkcywgcHJqLXRyZWUuYWRiLCBwcmotdHJlZS5hZHMsCglwcmotdXRpbC5hZGIsIHByai11dGlsLmFkcywgcmVzdHJpY3QuYWRiLCByZXN0cmljdC5hZHMsCglydHNmaW5kLmFkYiwgcnRzZmluZC5hZHMsIHNjbi5hZGIsIHNjbi5hZHMsCglzY25nLmFkYiwgc2NuZy5hZHMsIHNkZWZhdWx0LmFkcywgc2VtLmFkcywgc2VtX2FnZ3IuYWRzLCBzZW1fYXR0ci5hZGIsCglzZW1fY2FzZS5hZGIsIHNlbV9jYXNlLmFkcywgc2VtX2NhdC5hZGIsIHNlbV9jYXQuYWRzLCBzZW1fY2gxMC5hZGIsCglzZW1fY2gxMC5hZHMsIHNlbV9jaDExLmFkYiwgc2VtX2NoMTEuYWRzLCBzZW1fY2gxMi5hZHMsIHNlbV9jaDEzLmFkYiwKCXNlbV9jaDEzLmFkcywgc2VtX2NoMi5hZGIsIHNlbV9jaDIuYWRzLCBzZW1fY2gzLmFkYiwgc2VtX2NoMy5hZHMsCglzZW1fY2g0LmFkcywgc2VtX2NoNS5hZGIsIHNlbV9jaDUuYWRzLCBzZW1fY2g2LmFkYiwgc2VtX2NoNi5hZHMsCglzZW1fY2g3LmFkYiwgc2VtX2NoNy5hZHMsIHNlbV9jaDguYWRiLCBzZW1fY2g4LmFkcywgc2VtX2NoOS5hZGIsCglzZW1fY2g5LmFkcywgc2VtX2Rpc3AuYWRiLCBzZW1fZGlzcC5hZHMsIHNlbV9kaXN0LmFkYiwgc2VtX2Rpc3QuYWRzLAoJc2VtX2VsYWIuYWRiLCBzZW1fZWxhYi5hZHMsIHNlbV9lbGltLmFkYiwgc2VtX2VsaW0uYWRzLCBzZW1fZXZhbC5hZGIsCglzZW1fZXZhbC5hZHMsIHNlbV9pbnRyLmFkYiwgc2VtX2ludHIuYWRzLCBzZW1fbWFwcy5hZGIsIHNlbV9tYXBzLmFkcywKCXNlbV9tZWNoLmFkYiwgc2VtX21lY2guYWRzLCBzZW1fcHJhZy5hZGIsIHNlbV9wcmFnLmFkcywgc2VtX3Jlcy5hZGIsCglzZW1fcmVzLmFkcywgc2VtX3NtZW0uYWRiLCBzZW1fc21lbS5hZHMsIHNlbV90eXBlLmFkYiwgc2VtX3R5cGUuYWRzLAoJc2VtX3V0aWwuYWRiLCBzZW1fdXRpbC5hZHMsIHNlbV92ZnB0LmFkYiwgc2VtX3ZmcHQuYWRzLCBzZW1fd2Fybi5hZGIsCglzZW1fd2Fybi5hZHMsIHNmbl9zY2FuLmFkcywgc2luZm8tY24uYWRiLCBzaW5mby1jbi5hZHMsIHNpbnB1dC1jLmFkYiwKCXNpbnB1dC1jLmFkcywgc2lucHV0LWQuYWRiLCBzaW5wdXQtZC5hZHMsIHNpbnB1dC1sLmFkYiwgc2lucHV0LWwuYWRzLAoJc2lucHV0LXAuYWRiLCBzaW5wdXQtcC5hZHMsIHNuYW1lcy5oLCBzcHJpbnQuYWRiLCBzcHJpbnQuYWRzLAoJc3RyaW5ndC5oLCBzdHlsZS5hZHMsIHN0eWxlZy5hZGIsIHN0eWxlZy5hZHMsIHN0eWxlZy1jLmFkYiwKCXN0eWxlZy1jLmFkcywgc3R5bGVzdy5hZGIsIHN0eWxlc3cuYWRzLCBzd2l0Y2guYWRiLCBzd2l0Y2guYWRzLAoJc3dpdGNoLWIuYWRiLCBzd2l0Y2gtYi5hZHMsIHN3aXRjaC1jLmFkYiwgc3dpdGNoLWMuYWRzLCBzd2l0Y2gtbS5hZGIsCglzd2l0Y2gtbS5hZHMsIHN5bWJvbHMuYWRiLCBzeW1ib2xzLmFkcywgdGFyZ3Bhcm0uYWRiLCB0YnVpbGQuYWRiLAoJdGJ1aWxkLmFkcywgdGVtcGRpci5hZGIsIHRlbXBkaXIuYWRzLCB0cmVlX2dlbi5hZGIsIHRyZWVfZ2VuLmFkcywKCXRyZWVwci5hZGIsIHRyZWVwci5hZHMsIHRyZWVwcnMuYWR0LCB0dHlwZWYuYWRzLCB0dHlwZXMuYWRzLAoJdHlwZXMuaCwgdWludHAuaCwgdXJlYWxwLmgsIHVzYWdlLmFkYiwgdXNhZ2UuYWRzLAoJdmFsaWRzdy5hZGIsIHZhbGlkc3cuYWRzLCB2eGFkZHIybGluZS5hZGIsIHhlaW5mby5hZGIsIHhubWFrZS5hZGIsCgl4cmVmX2xpYi5hZGIsIHhyZWZfbGliLmFkcywgeHJfdGFibHMuYWRiLCB4cl90YWJscy5hZHMsIHhzaW5mby5hZGIsCgl4dHJlZXBycy5hZGIsIHhzbmFtZXMuYWRiLCB2bXNfY29udi5hZHMsIHZtc19jb252LmFkYiwgeGduYXR1Z24uYWRiLAoJZ3BybWFrZS5hZGIsIG1ha2VncHIuYWRzLCBtYWtlZ3ByLmFkYiwgcHJqLWF0dHItcG0uYWRzLCBwcmotYXR0ci1wbS5hZGIsCgltbGliLXRndC1seW54b3MuYWRiLCBtbGliLXRndC1kYXJ3aW4uYWRiLCBzeW1ib2xzLXZtcy5hZGIsCglzeW1ib2xzLXByb2Nlc3Npbmctdm1zLWFscGhhLmFkYiwgc3ltYm9scy1wcm9jZXNzaW5nLXZtcy1pYTY0LmFkYiwKCW1saWItdGd0LXNwZWNpZmljLmFkYiwgbWxpYi10Z3Qtc3BlY2lmaWMuYWRzLCBtbGliLXRndC12bXMuYWRiLAoJbWxpYi10Z3Qtdm1zLmFkczogUmVwbGFjZSBoZWFkZXJzIHdpdGggR1BMIHYzIGhlYWRlcnMuCgoyMDA3LTA5LTEwICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoKCSogcy1yZWdwYXQuYWRiIChQYXJzZV9DaGFyYWN0ZXJfQ2xhc3MpOiBGaXggaGFuZGxpbmcgb2YgZW1wdHkgY2hhcmFjdGVyCgljbGFzc2VzICgiW10iKS4KCjIwMDctMDktMTAgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWRhY29yZS5jb20+CgoJKiBhZGFpbnQuYyAoX19nbmF0X3RyYW5zbGF0ZV92bXMpOiBuZXcgZnVuY3Rpb24uCgoyMDA3LTA5LTEwICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDMuYWRiIChQcmVkZWZfU3BlY19Pcl9Cb2R5KTogV2hlbiB0aGUgdHlwZSBpcyBhYnN0cmFjdCwgb25seQoJY3JlYXRlIGFuIGFic3RyYWN0IHN1YnByb2dyYW0gaW4gdGhlIGNhc2Ugb2YgJ0lucHV0LiBGb3IgJ091dHB1dCB3ZSBub3cKCWNyZWF0ZSBhIHJlYWwgc3BlYy9ib2R5IHdoZW4gdGhlIHR5cGUgaXMgYWJzdHJhY3QsIHNpbmNlIGl0IGNhbgoJcG90ZW50aWFsbHkgYmUgY2FsbGVkLgoJKFByZWRlZmluZWRfUHJpbWl0aXZlX0JvZGllcyk6IE5vdyBhbGxvdyB0aGUgY3JlYXRpb24gb2YgYSBwcmVkZWZpbmVkCglib2R5IGZvciAnT3V0cHV0IHdoZW4gdGhlIHR5cGUgaXMgYWJzdHJhY3QgKG9ubHkgdGhlIGNyZWF0aW9uIG9mIHRoZQoJYm9keSBmb3IgJ0lucHV0IGlzIGV4Y2x1ZGVkIHdoZW4gdGhlIHR5cGUgaXMgYWJzdHJhY3QpLgoJKFN0cmVhbV9PcGVyYXRpb25fT0spOiBBZGQgYW4gYWRkaXRpb25hbCBjb25kaXRpb24gaW4gdGhlIHJldHVybgoJc3RhdGVtZW50LCBzbyB0aGF0IEZhbHNlIHdpbGwgYmUgcmV0dXJuZWQgZm9yIFRUU19TdHJlYW1fSW5wdXQgaWYgdGhlCglhc3NvY2lhdGVkIHRhZ2dlZCB0eXBlIGlzIGFuIGFic3RyYWN0IGV4dGVuc2lvbi4gQWRkIGNvbW1lbnRzIGZvcgoJcmV0dXJuIHN0YXRlbWVudC4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBGb3IgdGhlIGNhc2Ugb2YgYSBzaGFyZWQgcGFzc2l2ZQoJdmFyaWFibGUsIGluc2VydCBpbml0IHByb2MgY2FsbCBvbmx5IGFmdGVyIHRoZSBzaGFyZWQgdmFyaWFibGUKCXByb2NlZHVyZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgYmVjYXVzZSB0aGUgSVAgY2FsbCBuZWVkcyB0byB1bmRlcmdvCglzaGFyZWQgcGFzc2l2ZSB2YXJpYWJsZSByZWZlcmVuY2UgZXhwYW5zaW9uLCB3aGljaCByZXF1aXJlcyB0aGVzZQoJcHJvY2VkdXJlcyB0byBiZSBhdmFpbGFibGUgKGFuZCBlbGFib3JhdGVkKS4KCjIwMDctMDktMTAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLWVudi5hZHMsIHByai1lbnYuYWRiIChDcmVhdGVfTWFwcGluZ19GaWxlIChMYW5ndWFnZSkpOiBSZW1vdmUKCXBhcmFtZXRlciBSdW50aW1lX1Byb2plY3QuCgoyMDA3LTA5LTEwICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fYWdnci5hZGIgKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpOiBJZiBhbiBhZ2dyZWdhdGUgY29tcG9uZW50IGlzCglnaXZlbiBhIGJveCBhc3NvY2lhdGlvbiwgdGhlIHR5cGUgb2YgdGhlIGNvbXBvbmVudCBpcyBkaXNjcmltaW5hdGVkLAoJYW5kIHRoZSB2YWx1ZSBvZiB0aGUgZGlzY3JpbWluYW50IGlzIHRoZSBkaXNjcmltaW5hbnQgb2YgdGhlIGVuY2xvc2luZwoJdHlwZSwgcmV0cmlldmUgaXRzIHZhbHVlIGZyb20gdGhlIGFnZ3JlZ2F0ZSBpdHNlbGYsIHdoZXJlIGl0IG11c3QgaGF2ZQoJYmVlbiBzdXBwbGllZC4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX09uZV9DYWxsKTogRnVydGhlciByZWZpbmVtZW50IHRvIHByZXZpb3VzIGZpeCwKCXRvIHJlbW92ZSBvdGhlciBzcHVyaW91cyBhbWJpZ3VpdGllcyBvbiBhcml0aG1ldGljIG9wZXJhdGlvbnMgaW52b2x2aW5nCglsaXRlcmFscyBhbmQgYWRkcmVzc2VzLCBvbiBzeXN0ZW1zIHdoZXJlIEFkZHJlc3MgaXMgYSB2aXNpYmxlIGludGVnZXIKCXR5cGUsIHdoZW4gdGhlIG9wZXJhdG9yIGlzIGNhbGxlZCBpbiBmdW5jdGlvbmFsIG5vdGF0aW9uLgoJKFRyeV9QcmltaXRpdmVfT3BlcmF0aW9uKTogV2l0aGluIGFuIGluc3RhbmNlLCBhIGNhbGwgaW4gcHJlZml4ZWQgZm9ybQoJaXMgbGVnYWwgd2hlbiB0aGUgdHlwZXMgbWF0Y2gsIGV2ZW4gaWYgdGhlIG9wZXJhdGlvbiBpcyBjdXJyZW50bHkKCWhpZGRlbi4KCjIwMDctMDktMTAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoQnVpbGRfTG9jYWxfUGFja2FnZSk6IEEgZm9ybWFsIHBhY2thZ2Ugd2l0aCBubwoJYXNzb2NpYXRpb25zIGlzIGxlZ2FsIGlmIGFsbCBmb3JtYWxzIGhhdmUgZGVmYXVsdHMuIEl0IGlzIG5vdAoJZXF1aXZhbGVudCB0byBhIGZvcm1hbCBkZWNsYXJlZCB3aXRoIGEgYm94LgoKMjAwNy0wOS0xMCAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBxdWFsaWZpZXIgZm9yIHRoZSBuZXcgZ25hdG1ldHJpYyAnLWxyYXRpbycgb3B0aW9uCgoyMDA3LTA5LTEwICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBkZXNjcmlwdGlvbiBvZiB0aGUgbmV3ICctbHJhdGlvJyBvcHRpb24KCVVwZGF0ZSA3LjMuMSBzZWN0aW9uIGFib3V0IGF2YWlsYWJpbGl0eSBvZiB0aGUgZmVhdHVyZS4KCjIwMDctMDktMTAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfc21lbS5hZHMsIGV4cF9zbWVtLmFkYiAoTWFrZV9TaGFyZWRfVmFyX1Byb2NzKTogUmV0dXJuIGxhc3QKCWluc2VydGVkIG5vZGUuCgoyMDA3LTA5LTEwICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogTWFrZWZpbGUuaW46IChtaXBzLWlyaXggc2VjdGlvbik6IEFjdGl2YXRlIGJ1aWxkIG9mIGxpYmdtZW0uCgoyMDA3LTA5LTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogYS1udW1hdXgteDg2LmFkYiAoTG9nYXJpdGhtaWNfUG93KTogRG8gbm90IHNpbGVudGx5IGNsb2JiZXIKCXg4NyByZWdpc3RlcnMuCgoyMDA3LTA5LTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxvYmplY3Q+OiBEZWFsIHdpdGggdmFyaWFibGUgYnVpbHQgZm9yCglhIGRlYnVnIHJlbmFtaW5nIGRlY2xhcmF0aW9uIHNwZWNpYWxseS4KCjIwMDctMDktMDggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPE9iamVjdD46IFNpbXBsaWZ5IHRoZSBjb25kaXRpb24gdW5kZXIKCXdoaWNoIGEgY29uc3RhbnQgcmVuYW1pbmcgaXMgdHJlYXRlZCBhcyBhIG5vcm1hbCBvYmplY3QgZGVjbGFyYXRpb24uCgkqIHRyYW5zLmMgKGx2YWx1ZV9yZXF1aXJlZF9wKSA8Tl9TbGljZT46IE5ldyBjYXNlLCBleHRyYWN0ZWQgZnJvbQoJdGhlIE5fSW5kZXhlZF9Db21wb25lbnQgY2FzZS4KCTxOX0luZGV4ZWRfQ29tcG9uZW50PjogRmFsbCB0aHJvdWdoIHRvIGFib3ZlIGNhc2UuCgk8Tl9PYmplY3RfUmVuYW1pbmdfRGVjbGFyYXRpb24+OiBSZXR1cm4gdHJ1ZSBmb3IgYWxsIGNvbXBvc2l0ZSB0eXBlcy4KCjIwMDctMDktMDggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKG1ha2VfcGFja2FibGVfdHlwZSk6IElmIHRoZSBuZXcgdHlwZSBoYXMgYmVlbiBnaXZlbiBCTEttb2RlLAoJdHJ5IGFnYWluIHRvIGdldCBhbiBpbnRlZ3JhbCBtb2RlIGZvciBpdC4KCjIwMDctMDktMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUmUtYXBwbHkgYWNjaWRlbnRhbGx5IHJldmVydGVkIGNoYW5nZToKCgkyMDA3LTAyLTA3ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCSogcmFpc2UtZ2NjLmMgKGdldF9yZWdpb25fZGVzY3JpcHRpb25fZm9yLCBnZXRfY2FsbF9zaXRlX2FjdGlvbl9mb3IsCglnZXRfYWN0aW9uX2Rlc2NyaXB0aW9uX2Zvcik6IFJlcGxhY2UgX1Vud2luZF9Xb3JkIHdpdGggX3VsZWIxMjhfdCAKCWFuZCBfVW53aW5kX1NXb3JkIHdpdGggX3NsZWIxMjhfdC4KCjIwMDctMDktMDYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmFucy5jIChjb252ZXJ0X3dpdGhfY2hlY2spOiBVcGRhdGUgY2FsbCB0byByZWFsXzJleHBOLgoKMjAwNy0wOS0wNSAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJhbnMuYyAoQ29tcGlsYXRpb25fdW5pdF90b19nbnUpOiBVc2Ugc2V0X2NmdW4uCgkqIHV0aWxzLmMgKGVuZF9zdWJwcm9nX2JvZHkpOiBMaWtld2lzZS4KCjIwMDctMDktMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IENoYW5nZSBjb3B5cmlnaHQgaGVhZGVyIHRvIHJlZmVyIHRvIHZlcnNpb24gMyBvZgoJdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZCB0byBwb2ludCByZWFkZXJzIGF0IHRoZQoJQ09QWUlORzMgZmlsZSBhbmQgdGhlIEZTRidzIGxpY2Vuc2Ugd2ViIHBhZ2UuCgkqIGFkYS10cmVlLmRlZiwgbm1ha2UuYWR0LCBubGlzdHMuaCwgc25hbWVzLmgsIHV0aWxzLmMsCglNYWtlZmlsZS5ydGwsIE1ha2VmaWxlLmluLCBjb25maWctbGFuZy5pbiwgdWludHAuaCwgdXJlYWxwLmgsCgluYW1ldC5oLCBkZWNsLmMsIHV0aWxzMi5jLCBsYW5nLm9wdCwgZWxpc3RzLmgsIGF0cmVlLmgsIHR5cGVzLmgsCgl0cmVlcHJzLmFkdCwgbGFuZy1zcGVjcy5oLCBjdWludHAuYywgc3RyaW5ndC5oLCBnbmF0YmwuYzoKCUxpa2V3aXNlLgoKMjAwNy0wOC0zMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJUFIgYWRhLzQ3MjAKCgkqIGduYXRjaG9wLmFkYiwgZ25hdGZpbmQuYWRiLCBnbmF0bGluay5hZGIsIGduYXRscy5hZGIsIAoJZ25hdG5hbWUuYWRiLCBnbmF0eHJlZi5hZGIsIGdwcmVwLmFkYiwgY2xlYW4uYWRiIGduYXRiaW5kLmFkYgoJKENoZWNrX1ZlcnNpb25fQW5kX0hlbHApOiBOZXcgcHJvY2VkdXJlIGluIHBhY2thZ2UgU3dpdGNoIHRvIHByb2Nlc3MKCXN3aXRjaGVzIC0tdmVyc2lvbiBhbmQgLS1oZWxwLgoJVXNlIENoZWNrX1ZlcnNpb25fQW5kX0hlbHAgaW4gR05BVCB0b29scwoKCSogbWFrZS5hZGI6ICBEaXR0by4KCShDb21waWxlX1NvdXJjZXMpOiBNYWtlIHN1cmUgdGhhdCBzb3VyY2VzIHRoYXQgYXJlICJleGNsdWRlZCIgYXJlIG5vdAoJY29tcGlsZWQuCgkoR25hdG1ha2UpOiBEbyBub3QgaXNzdWUgLWFPLiB0byBnbmF0YmluZCBhbmQgb25seSBpc3N1ZSAtSS0gaWYgYQoJcHJvamVjdCBmaWxlIGlzIHVzZWQuCgkoVmVyc2lvbl9Td2l0Y2gpOiBSZW1vdmUsIG1vdmVkIHRvIFN3aXRjaAoJKEhlbHBfU3dpdGNoKTogUmVtb3ZlLCBtb3ZlZCB0byBTd2l0Y2gKCShEaXNwbGF5X1ZlcnNpb24pOiBSZW1vdmUsIG1vdmVkIHRvIFN3aXRjaAoKCSogc3dpdGNoLmFkcywgc3dpdGNoLmFkYiAoQ2hlY2tfVmVyc2lvbl9BbmRfSGVscCk6IE5ldyBwcm9jZWR1cmUgaW4KCXBhY2thZ2UgU3dpdGNoIHRvIHByb2Nlc3Mgc3dpdGNoZXMgLS12ZXJzaW9uIGFuZCAtLWhlbHAuCgkoRGlzcGxheV9WZXJzaW9uKTogTmV3IHByb2NlZHVyZQoKCSogZ25hdHZzbi5hZHMsIGduYXR2c24uYWRiIChDb3B5cmlnaHRfSG9sZGVyKTogTmV3IGZ1bmN0aW9uLgoKMjAwNy0wOC0zMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogYS10YWdzLmFkYiAoSW50ZXJuYWxfVGFnKTogUHJvdGVjdCB0aGUgcnVuLXRpbWUgYWdhaW5zdCB3cm9uZwoJaW50ZXJuYWwgdGFncy4KCjIwMDctMDgtMzEgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBjaGVja3MuYWRiIChJbl9EZWNsYXJhdGl2ZV9SZWdpb25fT2ZfU3VicHJvZ3JhbV9Cb2R5KTogTmV3IHJvdXRpbmUuCgkoTWFya19Ob25fTnVsbCk6IElmIHRoZSBub2RlIGZvciB3aGljaCB3ZSBqdXN0IGdlbmVyYXRlZCBhbiBhY2Nlc3MgY2hlY2sKCWlzIGEgcmVmZXJlbmNlIHRvIGFuICppbiogcGFyYW1ldGVyIGFuZCB0aGUgcmVmZXJlbmNlIGFwcGVhcnMgaW4gdGhlCglkZWNsYXJhdGl2ZSBwYXJ0IG9mIGEgc3VicHJvZ3JhbSBib2R5LCBtYXJrIHRoZSBub2RlIGFzIGtub3duIG5vbiBudWxsLgoKMjAwNy0wOC0zMSAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiOiBOZXcgZmxhZyBJc19SYWlzZWQgKEZsYWcyMjQpLiBVcGRhdGUgdGhlCglzdHJ1Y3R1cmUgb2YgRV9FeGNlcHRpb24gdG8gcmVmbGVjdCB0aGUgbmV3IGZsYWcuCgkoSXNfUmFpc2VkLCBTZXRfSXNfUmFpc2VkKTogTmV3IGlubGluZWQgcm91dGluZXMuCglVcGRhdGUgdGhlIHVzYWdlIG9mIGF2YWlsYWJsZSBmbGFnIHRvIHJlZmxlY3QgdGhlIGFkZGl0aW9uIG9mIElzX1JhaXNlZC4KCShJc19SYWlzZWQsIFNldF9Jc19SYWlzZWQpOiBCb2RpZXMgb2YgbmV3IHJvdXRpbmVzLgoJKFdyaXRlX0VudGl0eV9GbGFncyk6IFdyaXRlIHRoZSBzdGF0dXMgb2YgZmxhZyBJc19SYWlzZWQuCgkoSXNfRGVzY2VuZGVudF9PZl9BZGRyZXNzKTogTmV3IGVudGl0eSBmbGFnLCB0byBzaW1wbGlmeSBoYW5kbGluZyBvZgoJc3B1cmlvdXMgYW1iaWd1aXRpZXMgd2hlbiBpbnRlZ2VyIGxpdGVyYWxzIGFwcGVhciBpbiB0aGUgY29udGV4dCBvZiBhbgoJYWRkcmVzcyB0eXBlIHRoYXQgaXMgYSB2aXNpYmxlIGludGVnZXIgdHlwZS4KCgkqIHNlbV9jaDExLmFkYiAoQW5hbHl6ZV9FeGNlcHRpb25fSGFuZGxlcik6IEFkZCBjb2RlIHRvIHdhcm4gb24gbG9jYWwKCWV4Y2VwdGlvbnMgbmV2ZXIgYmVpbmcgcmFpc2VkLgoJKEFuYWx5emVfUmFpc2VfU3RhdGVtZW50KTogV2hlbiBhbmFseXppbmcgYW4gZXhjZXB0aW9uLCBtYXJrIGl0IGFzIGJlaW5nCglleHBsaWNpdGx5IHJhaXNlZC4KCjIwMDctMDgtMzEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDExLmFkYiAoRXhwYW5kX0F0X0VuZF9IYW5kbGVyKTogQXZvaWQgZ2VuZXJhdGlvbiBvZiByYWlzZQoJc3RhdGVtZW50IHdoZW4gY29tcGlsaW5nIHVuZGVyIHJlc3RyaWN0aW9uIE5vX0V4Y2VwdGlvbnNfUHJvcGFyYXRpb24uCgoyMDA3LTA4LTMxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2gzLmFkYiAoQnVpbGRfUmVjb3JkX0luaXRfUHJvYyk6IElmIHRoZXJlIGlzIGEgc3RhdGljCglpbml0aWFsaXphdGlvbiBhZ2dyZWdhdGUgZm9yIHRoZSB0eXBlLCBnZW5lcmF0ZSBpdHlwZSByZWZlcmVuY2VzIGZvcgoJdGhldHlwZXMgb2YgaXRzIChzdWIpY29tcG9uZW50cywgdG8gcHJldmVudCBvdXQtb2Ytc2NvcGUgZXJyb3JzIGluIGdpZ2kuCgoyMDA3LTA4LTMxICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBleHBfY2g4LmFkYiAoRXhwYW5kX05fUGFja2FnZV9SZW5hbWluZ19EZWNsYXJhdGlvbik6IEluIHRoZSBjYXNlIG9mIGEKCWxpYnJhcnktbGV2ZWwgcGFja2FnZSByZW5hbWluZywgcGFzcyB0aGUgZGVjbGFyYXRpb24gYXNzb2NpYXRlZCB3aXRoCgl0aGUgcmVuYW1pbmcncyBzcGVjaWFsIGRlYnVnIHZhcmlhYmxlIHRvIFF1YWxpZnlfRW50aXR5X05hbWVzIHRvIGVuc3VyZQoJdGhhdCBpdHMgZW5jb2RlZCBuYW1lIGlzIHByb3Blcmx5IHF1YWxpZmllZC4KCgkqIGV4cF9kYnVnLmFkYiAoUXVhbGlmeV9BbGxfRW50aXR5X05hbWVzKTogQ2hlY2sgZm9yIGEgdmFyaWFibGUgZW50aXR5CglvY2N1cnJpbmcgaW4gdGhlIGxpc3Qgb2YgZW50aXRpZXMgdG8gcXVhbGlmeSwgYW5kIGRvIG5vdCBhdHRlbXB0IHRvCgl0cmF2ZXJzZSBhbiBlbnRpdHkgbGlzdCBpbiB0aGF0IGNhc2UuIFZhcmlhYmxlcyBhc3NvY2lhdGVkIHdpdGgKYAlsaWJyYXJ5LWxldmVsIHBhY2thZ2UgcmVuYW1pbmdzIGNhbiBub3cgb2NjdXIgaW4gdGhlIHRhYmxlLgoKCSogZXhwX2RidWcuYWRzOiBSZXZpc2UgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZW5jb2RpbmcgZm9yIHJlbmFtaW5nCglkZWNsYXJhdGlvbnMuCgoyMDA3LTA4LTMxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogbGF5b3V0LmFkYiAoTGF5b3V0X1R5cGUpOiBVc2UgVW5kZXJseWluZ19UeXBlIHRvIGRldGVybWluZSB3aGV0aGVyIGFuCglhY2Nlc3MgdHlwZSBwb2ludHMgdG8gYW4gdW5jb25zdHJhaW5lZCBhcnJheS4KCjIwMDctMDgtMzEgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgogICAgICAgICogcmVzdHJpY3QuYWRiLCBuYW1ldC5hZGIsIHBhci11dGlsLmFkYjogUmVtb3ZlIHJlZHVuZGFudCB0eXBlCgljb252ZXJzaW9uLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfUXVhbGlmaWVkX0V4cHJlc3Npb24pOiBBZGQgbWFjaGluZXJ5IHRvIGRldGVjdAoJc2ltcGxlIHJlZHVuZGFudCBxdWFsaWZpY2F0aW9ucy4gVGhlIGNoZWNrIGlzIHBlcmZvcm1lZCB3aGVuZXZlciB0aGUKCWV4cHJlc3Npb24gaXMgYSBub24tb3ZlcmxvYWRlZCBpZGVudGlmaWVyLgoJKFJlc29sdmVfVHlwZV9Db252ZXJzaW9uKTogRW5jaGFuY2UgdGhlIHJlZHVuZGFudCB0eXBlIGNvbnZlcnNpb24gY2hlY2sKCXRvIGluY2x1ZGUgbG9vcCBwYXJhbWV0ZXJzLgoJKFZhbGlkX0NvbnZlcnNpb24pOiBBdm9pZCBnZW5lcmF0aW9uIG9mIHNwdXJpb3VzIGVycm9yIG1lc3NhZ2UuCgoyMDA3LTA4LTMxICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBwYXItY2g0LmFkYiAoUF9TaW1wbGVfRXhwcmVzc2lvbik6IEZvbGQgbG9uZyBzZXF1ZW5jZXMgb2YKCWNvbmNhdGVuYXRpb25zIG9mIHN0cmluZyBsaXRlcmFscyBpbnRvIGEgc2luZ2xlIGxpdGVyYWwsIGluIG9yZGVyIHRvCglhdm9pZCB2ZXJ5IGRlZXAgcmVjdXJzaW9uIGluIHRoZSBmcm9udCBlbmQsIHdoaWNoIHdhcyBjYXVzaW5nIHN0YWNrCglvdmVyZmxvdy4KCgkqIHNlbV9ldmFsLmFkYiAoRXZhbF9Db25jYXRlbmF0aW9uKTogSWYgdGhlIGxlZnQgb3BlcmFuZCBpcyB0aGUgZW1wdHkKCXN0cmluZywgYW5kIHRoZSByaWdodCBvcGVyYW5kIGlzIGEgc3RyaW5nIGxpdGVyYWwgKHRoZSBjYXNlIG9mICIiICYKCSIuLi4iKSwgb3B0aW1pemUgYnkgYXZvaWRpbmcgY29weWluZyB0aGUgcmlnaHQgb3BlcmFuZCAtLSBqdXN0IHVzZSB0aGUKCXZhbHVlIG9mIHRoZSByaWdodCBvcGVyYW5kIGRpcmVjdGx5LgoKCSogc3RyaW5ndC5hZGIgKFN0b3JlX1N0cmluZ19DaGFycyk6IE9wdGltaXplIGJ5IGdyb3dpbmcgdGhlCglTdHJpbmdfQ2hhcnMgdGFibGUgYWxsIGF0IG9uY2UsIHJhdGhlciB0aGFuIGFwcGVuZGluZyBjaGFyYWN0ZXJzIG9uZSBieQoJb25lLgoJKFdyaXRlX1N0cmluZ19UYWJsZV9FbnRyeSk6IElmIHRoZSBzdHJpbmcgdG8gYmUgcHJpbnRlZCBpcyB2ZXJ5IGxvbmcsCglqdXN0IHByaW50IHRoZSBmaXJzdCBmZXcgY2hhcmFjdGVycywgZm9sbG93ZWQgYnkgdGhlIGxlbmd0aC4gT3RoZXJ3aXNlLAoJZG9pbmcgInBuKG4pIiBpbiB0aGUgZGVidWdnZXIgY2FuIHRha2UgYW4gZXh0cmVtZWx5IGxvbmcgdGltZS4KCgkqIHNlbV9wcmFnLmFkYiAoUHJvY2Vzc19JbnRlcmZhY2VfTmFtZSk6IFJlcGxhY2UgbG9vcCBkb2luZwoJU3RvcmVfU3RyaW5nX0NoYXIgd2l0aCBTdG9yZV9TdHJpbmdfQ2hhcnMuCgoyMDA3LTA4LTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai1hdHRyLmFkYjogQWRkIG5ldyBhdHRyaWJ1dGUgRXhjbHVkZWRfU291cmNlX0ZpbGVzCgoJKiBwcmotbm1zYy5hZGI6IFVzZSBhdHRyaWJ1dGUgRXhjbHVkZWRfU291cmNlX0ZpbGVzIGJlZm9yZQoJTG9jYWxseV9SZW1vdmVkX0ZpbGVzLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYjogTmV3IHN0YW5kYXJkIG5hbWUgRXhjbHVkZWRfU291cmNlX0ZpbGVzCgoyMDA3LTA4LTMxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKEFuYWx5emVfU3VidW5pdF9Db250ZXh0KTogV2hlbiBhbmFseXppbmcgY29udGV4dAoJY2xhdXNlcyBvZiBzdWJ1bml0cywgaWdub3JlIGxpbWl0ZWRfd2l0aF9jbGF1c2VzIHRoYXQgYXJlIGlsbGVnYWwgYW5kCgloYXZlIG5vdCBiZWVuIGZ1bGx5IGFuYWx5emVkLgoKMjAwNy0wOC0zMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMy5hZGI6IFRoZSBwcmVkaWNhdGUgSXNfRGVzY2VuZGVudF9PZl9BZGRyZXNzIGlzIG5vdyBhbiBlbnRpdHkKCWZsYWcsIGZvciBlZmZpZW5jeS4gSXQgaXMgY2FsbGVkIHdoZW4gYW5hbHl6aW5nIGFyaXRobWV0aWMgb3BlcmF0b3JzCglhbmQgYWxzbyBmb3IgYWN0dWFscyBpbiBjYWxscyB0aGF0IGFyZSB1bml2ZXJzYWxfaW50ZWdlcnMuIFRoZSBmbGFnIGlzCglzZXQgZm9yIHRoZSBwcmVkZWZpbmVkIHR5cGUgYWRkcmVzcywgYW5kIGZvciBhbnkgdHlwZSBvciBzdWJ0eXBlCglkZXJpdmVkIGZyb20gaXQuCgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9PbmVfQ2FsbCk6IFJlamVjdCBhbiBhY3R1YWwgdGhhdCBpcyBhCglVbml2ZXJzYWxfSW50ZWdlciwgd2hlbiB0aGUgZm9ybWFsIGlzIGEgZGVzY2VuZGVudCBvZiBhZGRyZXNzIGFuZCB0aGUKCWNhbGwgYXBwZWFycyBpbiB1c2VyIGNvZGUuCgkoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBpZiB0aGUgcHJlZml4IGlzIGEgcHJpdmF0ZSBleHRlbnNpb24sIHRoZQoJdGFnIGNvbXBvbmVudCBpcyB2aXNpYmxlLgoKCSogc2VtX3V0aWwuYWRzLCBzZW1fdXRpbC5hZGI6IFJlbW92ZSBJc19EZXNjZW5kZW50X09mX0FkZHJlc3MsIG5vdyBhbgoJZW50aXR5IGZsYWcuCgoyMDA3LTA4LTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtZmlsZWlvLmFkYiAoT3Blbik6IE5vcm1hbGl6ZSBmaWxlIG5hbWUgdG8gbG93ZXIgY2FzZSBpbiBub24tY2FzZQoJc2Vuc2l0aXZlIGZpbGUgbmFtZSBzeXN0ZW1zIHRvIGF2b2lkIHVuZXhwZWN0ZWQgbWlzbWF0Y2ggaW4gVmlzdGEuCgoyMDA3LTA4LTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHRlbXBkaXIuYWRiOiBPbiBWTVMsIHRha2UgaW50byBhY2NvdW50IEdOVVRNUERJUiBiZWZvcmUgVE1QRElSCgoyMDA3LTA4LTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHN5bWJvbHMtdm1zLmFkYiAoSW5pdGlhbGl6ZSk6IFJlYWQgc3ltYm9sIGZpbGVzIHdpdGggY29udGludWF0aW9uCglsaW5lcwoJKEZpbmFsaXplKTogSWYgc3ltYm9sIGlzIGxvbmcsIHNwbGl0IHRoZSBsaW5lCgoyMDA3LTA4LTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGZtYXAuYWRzOiBNaW5vciBjb21tZW50IHVwZGF0ZXMKCjIwMDctMDgtMzEgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGFkYWNvcmUuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDctMDgtMzEgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIHNpbmZvLmFkczogTWlub3IgY29tbWVudCBmaXguCgoyMDA3LTA4LTMxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc3RhbmQuYWRzOiAoU3RhbmRhcmRfRGVidWdfUmVuYW1pbmdfVHlwZSk6IE1ha2UgY29tbWVudCBjb25zaXN0ZW50Cgl3aXRoIGltcGxlbWVudGF0aW9uLgoJRG9jdW1lbnRhdGlvbiBjbGVhbnVwIG9ubHkuCgoyMDA3LTA4LTMxICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhZGFjb3JlLmNvbT4KCgkqIHZtc19kYXRhLmFkczogQWRkIG5ldyBxdWFsaWZpZXIgL1NUTVRfTkFNRV9PTl9ORVdfTElORSBmb3IgdGhlIG5ldwoJZ25hdHBwICctLXNlcGFyYXRlLXN0bXQtbmFtZScgb3B0aW9uLgoJQWRkIG5ldyBxdWFsaWZpZXIgL1VTRV9PTl9ORVdfTElOIGZvciB0aGUgbmV3IGduYXRwcCAnLS11c2Utb24tbmV3LWxpbmUnCglvcHRpb24uCgoJKiBnbmF0X3Vnbi50ZXhpOiBBZGQgZGVzY3JpcHRpb24gZm9yIHRoZSBuZXcgZ25hdHBwCgknLS1zZXBhcmF0ZS1zdG10LW5hbWUnIGFuZCAnLS11c2Utb24tbmV3LWxpbmUnIG9wdGlvbnMuCgoyMDA3LTA4LTMxICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIE1ha2VmaWxlLmluIChMSUJHTkFUX1RBUkdFVF9QQUlSUyk6IFVzZSBzeXN0ZW0tbGludXgtcHBjNjQuYWRzCgl3aGVuIGNvbXBpbGluZyBmb3IgcG93ZXJwYzY0LSotbGludXguCgkqIHN5c3RlbS1saW51eC1wcGM2NC5hZHM6IE5ldyBmaWxlLgoKMjAwNy0wOC0yMiAgS3Jpc3RlciBXYWxmcmlkc3NvbiAgPGNhdG9AZGYubHRoLnNlPgoKCSogZW52LmMgKCBfX2duYXRfY2xlYXJlbnYpOiBVc2UgdGhlIF9fZ25hdF91bnNldGVudiBtZWNoYW5pc20gZm9yCglOZXRCU0QuCgoyMDA3LTA4LTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtaXNjLmMgKGduYXRfdHlwZV9tYXhfc2l6ZSk6IENvbnN0aWZ5LgoKMjAwNy0wOC0xNiAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX1N0YW5kYXJkKTogQ3JlYXRlIGFuIGVudGl0eSBmb3IgYSB6ZXJvLXNpemVkIHR5cGUKCWFzc29jaWF0ZWQgd2l0aCBTdGFuZGFyZF9EZWJ1Z19SZW5hbWluZ19UeXBlLCB0byBiZSB1c2VkIGFzIHRoZSB0eXBlIG9mCgl0aGUgc3BlY2lhbCB2YXJpYWJsZXMgd2hvc2UgbmFtZXMgcHJvdmlkZSBkZWJ1Z2dlciBlbmNvZGluZ3MgZm9yCglyZW5hbWluZyBkZWNsYXJhdGlvbnMuCgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYiAoRGVidWdfUmVuYW1pbmdfTGluayk6IENoYW5nZSB0byByZXR1cm4gTm9kZTI1LgoJKFNldF9EZWJ1Z19SZW5hbWluZ19MaW5rKTogQ2hhbmdlIHRvIHNldCBOb2RlMjUuCgkoV3JpdGVfRmllbGQxM19OYW1lKTogUmVtb3ZlIGNhc2UgZm9yIEVfRW51bWVyYXRpb25fTGl0ZXJhbC4KCShXcml0ZV9GaWVsZDI1X05hbWUpOiBBZGQgY2FzZSBmb3IgRV9WYXJpYWJsZSB0byBvdXRwdXQKCSJEZWJ1Z19SZW5hbWluZ19MaW5rIi4KCShXcml0ZV9GaWVsZDIzX05hbWUpOiBDb3JyZWN0IHRoZSBvdXRwdXQgc3RyaW5nIGZvciAiTGltaXRlZF9WaWV3Ii4KCgkqIGV4cF9kYnVnLmFkYjogQWRkIHdpdGggYW5kIHVzZSBvZiBUYnVpbGQuCgkoRGVidWdfUmVuYW1pbmdfRGVjbGFyYXRpb24pOiBSZXBsYWNlIGNyZWF0aW9uIG9mIGFuIGVudW1lcmF0aW9uIHR5cGUKCWFuZCBsaXRlcmFsIHdpdGggY3JlYXRpb24gb2YgYSB2YXJpYWJsZSBvZiB0eXBlCglTdGFuZGFyZF9EZWJ1Z19SZW5hbWluZ19UeXBlIHdob3NlIG5hbWUgZW5jb2RlcyBib3RoIHRoZSByZW5hbWVkIG9iamVjdAoJYW5kIHRoZSBlbnRpdHkgb2YgdGhlIHJlbmFtaW5nIGRlY2xhcmF0aW9uLgoJKFF1YWxpZnlfRW50aXR5X05hbWUpOiBBZGQgdGhlIGRlbGF5ZWQgcXVhbGlmaWNhdGlvbiBvZiB0aGUgZW50aXR5IG5hbWUKCXBhcnQgb2YgdGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0aGF0IGhhcyBhIERlYnVnX1JlbmFtaW5nX0xpbmsuCgoJKiBzdGFuZC5hZHMgKFN0YW5kYXJkX0RlYnVnX1JlbmFtaW5nX1R5cGUpOiBOZXcgRW50aXR5X0lkIGRlbm90aW5nIGEKCXNwZWNpYWwgdHlwZSB0byBiZSBhc3NvY2lhdGVkIHdpdGggdmFyaWFibGVzIHRoYXQgcHJvdmlkZSBkZWJ1Z2dlcgoJZW5jb2RpbmdzIGZvciByZW5hbWluZyBkZWNsYXJhdGlvbnMuCgoyMDA3LTA4LTE2ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoQnVpbGRfUmVjb3JkX0FnZ3JfQ29kZSk6IEV4dGVuZCB0aGUgdGVzdCBmb3IgYW4KCWFuY2VzdG9yIHBhcnQgZ2l2ZW4gYnkgYW4gYWdncmVnYXRlIHRvIHRlc3QgZm9yIGFuIHVuY2hlY2tlZCBjb252ZXJzaW9uLAoJc2luY2UgdGhpcyBjYW4gb2NjdXIgaW4gc29tZSBjYXNlcyB3aGVuIHRoZSBhbmNlc3RvciBwYXJ0IGlzIGEgZnVuY3Rpb24KCWNhbGwsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGZhbGwgaW50byB0aGUgcmVjdXJzaXZlIGNhbGwgdG8gdGhpcwoJcHJvY2VkdXJlIGluIHRoYXQgY2FzZS4KCgkqIGV4cF9jaDMuYWRiIChTdHJlYW1fT3BlcmF0aW9uX09LKTogUmV2aXNlIHRlc3RzIGZvciBhdmFpbGFiaWxpdHkgb2YKCXN0cmVhbSBhdHRyaWJ1dGVzIG9uIGxpbWl0ZWQgdHlwZXMgdG8gYWNjb3VudCBmb3IgdXNlci1zcGVjaWZpZWQKCWF0dHJpYnV0ZXMgYXMgd2VsbCBhcyB3aGV0aGVyIElucHV0IChyZXNwLiBPdXRwdXQpIGJlY29tZXMgYXZhaWxhYmxlCglkdWUgdG8gUmVhZCAocmVzcC4gV3JpdGUpIGJlaW5nIGF2YWlsYWJsZSBmb3IgdGhlIHR5cGUuIENoYW5nZSBCb29sZWFuCgl2YXJpYWJsZSB0byB0aGUgbW9yZSBhY2N1cmF0ZSBuYW1lCglIYXNfUHJlZGVmaW5lZF9Pcl9TcGVjaWZpZWRfU3RyZWFtX0F0dHJpYnV0ZS4gQ2hhbmdlIGNvbnZvbHV0ZWQKCWRvdWJsZS0ibm90IiBwcmVkaWNhdGUgYXQgYmVnaW5uaW5nIG9mIHJldHVybiBzdGF0ZW1lbnQgdG8gbW9yZQoJdW5kZXJzdGFuZGFibGUgZm9ybS4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfTl9FeHRlbmRlZF9SZXR1cm5fU3RhdGVtZW50KTogSWYgdGhlIGV4dGVuZGVkCglyZXR1cm4gaGFzIGFuIGFzc29jaWF0ZWQgTl9IYW5kbGVkX1NlcXVlbmNlX09mX1N0YXRlbWVudHMsIHRoZW4gd3JhcCBpdAoJaW4gYSBibG9jayBzdGF0ZW1lbnQgYW5kIHVzZSB0aGF0IGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgb2YgdGhlCglleHBhbmRlZCByZXR1cm4gcmF0aGVyIHRoYW4gaW5jb3JyZWN0bHkgdXNpbmcgdGhlIGhhbmRsZWQgc2VxdWVuY2UgYXMKCXRoZSBmaXJzdCBzdGF0ZW1lbnQuCgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX05fU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IElmIHRoaXMgaXMgYSBwcm90ZWN0ZWQKCW9wZXJhdGlvbiwgZ2VuZXJhdGUgYW4gZXhwbGljaXQgZnJlZXplIG5vZGUgZm9yIGl0IHJhdGhlciB0aGFuCglnZW5lcmF0aW5nIGV4dHJhIGZvcm1hbHMsIHRvIGVuc3VyZSB0aGF0IGdpZ2kgaGFzIHRoZSBwcm9wZXIgb3JkZXIgb2YKCWVsYWJvcmF0aW9uIGZvciBhbm9ueW1vdXMgc3VidHlwZXMgaW4gdGhlIHNpZ25hdHVyZSBvZiB0aGUgc3VicHJvZ3JhbXMuCgkoQnVpbGRfSW5fUGxhY2VfRm9ybWFsKTogTW92ZSBhc3NlcnRpb24gdG8gYmVnaW5uaW5nIG9mIGxvb3AuCgkoSXNfQnVpbGRfSW5fUGxhY2VfRnVuY3Rpb25fQ2FsbCk6IEFsbG93IGZvciBhbiB1bmNoZWNrZWQgY29udmVyc2lvbgoJYXBwbGllZCB0byBhIGZ1bmN0aW9uIGNhbGwgKG9jY3VycyBmb3Igc29tZSBjYXNlcyBvZiAnSW5wdXQpLgoJKE1ha2VfQnVpbGRfSW5fUGxhY2VfQ2FsbF9Jbl8qKTogQWxsb3cgZm9yIGFuIHVuY2hlY2tlZCBjb252ZXJzaW9uCglhcHBsaWVkIHRvIGEgZnVuY3Rpb24gY2FsbCAob2NjdXJzIGZvciBzb21lIGNhc2VzIG9mICdJbnB1dCkuCgoJKiBleHBfc3RybS5hZGIgKEJ1aWxkX1JlY29yZF9Pcl9FbGVtZW50YXJ5X0lucHV0X0Z1bmN0aW9uKTogRm9yIEFkYQoJMjAwNSwgZ2VuZXJhdGUgYW4gZXh0ZW5kZWQgcmV0dXJuIHN0YXRlbWVudCBlbmNsb3NpbmcgdGhlIHJlc3VsdCBvYmplY3QKCWFuZCAnUmVhZCBjYWxsLgoKCSogZnJlZXplLmFkYiAoRnJlZXplX1JlY29yZF9UeXBlKTogRXh0ZW5kIHRoZSBjdXJyZW50IG1hbmFnZW1lbnQgb2YKCWNvbXBvbmVudHMgdGhhdCBhcmUgYWNjZXNzIHR5cGUgd2l0aCBhbiBhbGxvY2F0b3IgYXMgZGVmYXVsdCB2YWx1ZTogYWRkCgltaXNzaW5nIHN1cHBvcnQgdG8gdGhlIHVzZSBvZiBxdWFsaWZpZWQgZXhwcmVzc2lvbnMgb2YgdGhlCglhbGxvY2F0b3IgKHdoaWNoIGFsc28gY2F1c2UgZnJlZXppbmcgb2YgdGhlIGRlc2lnbmF0ZWQgdHlwZSEpCgkoRnJlZXplX0VudGl0eSk6IENhbGwgRnJlZXplX1N1YnByb2dyYW0gaW4gdGhlIGNhc2Ugb2YgYSBwcmVkZWZpbmVkCglkaXNwYXRjaGluZyBvcGVyYXRpb24sIHNpbmNlIGV4dHJhIGZvcm1hbHMgbWF5IGJlIG5lZWRlZCBieSBjYWxscyB0bwoJYnVpbGQtaW4tcGxhY2UgZnVuY3Rpb25zIChzdWNoIGFzIHN0cmVhbSAnSW5wdXQpLgoKCSogc2VtX2NoNi5hZGIgKENyZWF0ZV9FeHRyYV9Gb3JtYWxzKTogU2tpcCBjcmVhdGlvbiBvZiB0aGUgZXh0cmEKCWZvcm1hbHMgZm9yICdDb25zdHJhaW5lZCBhbmQgYWNjZXNzaWJpbGl0eSBsZXZlbCBpbiB0aGUgY2FzZSBvZiBhCglwcmVkZWZpbmVkIGRpc3BhdGNoaW5nIG9wZXJhdGlvbi4KCgkqIGV4cF91dGlsLmFkYiAoSW5zZXJ0X0FjdGlvbnMpOiBBIHByb3RlY3RlZCBib2R5IGlzIGEgdmFsaWQgaW5zZXJ0aW9uCglwb2ludCwgbm8gbmVlZCB0byBmaW5kIHRoZSBwYXJlbnQgbm9kZS4KCjIwMDctMDgtMTYgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hdHRyLmFkYiAoQXR0cmlidXRlX1ByaW9yaXR5KTogQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgZW50cmllcwoJYW5kIGVudHJ5IGJhcnJpZXJzLgoKMjAwNy0wOC0xNiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoOS5hZGIgKEJ1aWxkX1Byb3RlY3RlZF9FbnRyeSk6IFVuZG8gcHJldmlvdXMgY2hhbmdlIGJlY2F1c2UgaXQKCWlzIG5vdCByZWFsbHkgcmVxdWlyZWQgYW5kIGNhbiBpbnRyb2R1Y2UgcmVncmVzc2lvbiB3aXRoIHRoZSBkZWJ1Z2dlci4KCVRoZSBvcmlnaW5hbCBwcm9ibGVtIGlzIGZpeGVkIHdpdGggdGhlIHBhdGNoIHdyaXR0ZW4gZm9yIGNoZWNrcy5hZGIuCgoyMDA3LTA4LTE2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZy1keW50YWIuYWRiLCBnLXRhYmxlLmFkYiwgdGFibGUuYWRiOiAoU2V0X0l0ZW0pOiBTdXBwcmVzcwoJUmFuZ2VfQ2hlY2sgb24gQWxsb2NhdGVkX1RhYmxlLgoKMjAwNy0wOC0xNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtYWtlLmFkYiAoQ29sbGVjdF9Bcmd1bWVudHMpOiBDYWxsIFRlc3RfSWZfUmVsYXRpdmVfUGF0aCB3aXRoCglJbmNsdWRpbmdfTm9uX1N3aXRjaCBzZXQgdG8gRmFsc2UuCgkoR25hdG1ha2UpOiBGb3IgdGhlIGNvbXBpbGVyLCBjYWxsIFRlc3RfSWZfUmVsYXRpdmVfUGF0aCB3aXRoCglJbmNsdWRpbmdfTm9uX1N3aXRjaCBzZXQgdG8gRmFsc2UuCgoJKiBtYWtldXRsLmFkYiwgbWFrZXV0bC5hZHMgKFRlc3RfSWZfUmVsYXRpdmVfUGF0aCk6IE5ldyBCb29sZWFuCglwYXJhbWV0ZXIgSW5jbHVkaW5nX05vbl9Td2l0Y2gsIGRlZmF1bHRlZCB0byBUcnVlLiBXaGVuCglJbmNsdWRpbmdfTm9uX1N3aXRjaCBpcyBGYWxzZSwgb3B0aW9ucyB0aGF0IGFyZSBub3Qgc3dpdGNoZXMgYW5kCglhcHBlYXIgYXMgcmVsYXRpdmUgcGF0aCBhcmUgbm90IGNvbnZlcnRlZCB0byBhYnNvbHV0ZSBwYXRocy4KCjIwMDctMDgtMTYgIE5pY29sYXMgUm9jaGUgIDxyb2NoZUBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChnbmF0bGliKTogUHJvcGFnYXRlIEZPUkNFX0RFQlVHX0FEQUZMQUdTIHZhbHVlIHRvIHN1YgoJbWFrZWZpbGVzCgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMKCjIwMDctMDgtMTYgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKEhhc19XaXRoX0NsYXVzZSk6IElmIHRoZSBuYW1lIG9mIHRoZSB3aXRoIGNsYXVzZQoJY3VycmVudGx5IGluc3BlY3RlZCBpcyBhIHNlbGVjdGVkIGNvbXBvbmVudCwgcmV0cmlldmUgdGhlIGVudGl0eSBvZgoJaXRzIHNlbGVjdG9yLgoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IENhbGwgSGFzX0xpbWl0ZWRfV2l0aF9DbGF1c2Ugc3RhcnRpbmcKCWZyb20gdGhlIGltbWVkaWF0ZSBhbmNlc3RvciBvZiBNYWluX1VuaXRfRW50aXR5LgoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IERvIG5vdCBpbnN0YWxsIHRoZSBsaW1pdGVkIHZpZXcgb2YKCXBhY2thZ2UgUCBpZiBQIGlzIHJlYWNoYWJsZSB0aHJvdWdoIGFuIGFuY2VzdG9yIGNoYWluIGZyb20gcGFja2FnZSBDCglhbmQgQyBhbHNvIGhhcyBhIHdpdGggY2xhdXNlIGZvciBQIGluIGl0cyBib2R5LgoJKEhhc19MaW1pdGVkX1dpdGhfQ2xhdXNlKTogTmV3IHJvdXRpbmUuCgkoSGFzX1dpdGhfQ2xhdXNlKTogTmV3IHJvdXRpbmUuCgoyMDA3LTA4LTE2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKENvcHlfR2VuZXJpY19Ob2RlKTogQSByZWZlcmVuY2UgdG8gYSBjaGlsZCB1bml0IG9mIHRoZQoJZ2VuZXJpYyBmb3IgYW4gZW5jbG9zaW5nIGluc3RhbmNlIGlzIGEgZ2xvYmFsIHJlZmVyZW5jZSwgZXZlbiB0aG91Z2gKCWl0cyBzY29wZSBpcyB0aGUgZW5jbG9zaW5nIGluc3RhbmNlLgoKMjAwNy0wOC0xNiAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDMuYWRiIChPS19Gb3JfTGltaXRlZF9Jbml0X0luXzA1KTogQWxsb3cgY2FsbHMgdG8gJ0lucHV0IHRvCglpbml0aWFsaXplIGEgbGltaXRlZCBvYmplY3QuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IEFkZCBtaXNzaW5nIGNoZWNrIG9mIHJ1bGVzIEFSTSAzLjkuNAoJMTMvMiBhbmQgMTQvMi4KCU1ha2Ugc3VyZSBIYXNfQ29tcGxleF9SZXByZXNlbnRhdGlvbiBpcyBpbmhlcml0ZWQgYnkgZGVyaXZlZCB0eXBlLgoKMjAwNy0wOC0xNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g1LmFkYiAoQW5hbHl6ZV9Bc3NpZ25tZW50KTogTWFrZSBzdXJlIHdlIHN0aWxsIG5vdGUgdXBkYXRlIGluCglleGNlcHRpb24gY2FzZQoKMjAwNy0wOC0xNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2Rpc3AuYWRiIChDaGVja19EaXNwYXRjaGluZ19PcGVyYXRpb24pOiBJZiB0aGUgb3BlcmF0aW9uCglpbXBsZW1lbnRzIGFuIG9wZXJhdGlvbiBpbmhlcml0ZWQgZnJvbSBhIHByb2dlbml0b3IgaW50ZXJmYWNlLCB2ZXJpZnkKCXRoYXQgdGhleSBhcmUgc3VidHlwZS1jb25mb3JtYW50LgoKMjAwNy0wOC0xNiAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgkgICAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBzZW1fcmVzLmFkYiAoQ29tZXNfRnJvbV9QcmVkZWZpbmVkX0xpYl9Vbml0KTogTmV3LgoJKFJlc29sdmUpOiBBbHBoYWJldGl6ZSBsb2NhbCB2YXJpYWJsZXMuIEFkZCBuZXcgdmFyaWFibGUgRnJvbV9MaWIuIFdoZW4KCXRoZSBzdGF0ZW1lbnQgd2hpY2ggaXMgYmVpbmcgcmVzb2x2ZWQgY29tZXMgZnJvbSBhIHByZWRlZmluZWQgbGlicmFyeQoJdW5pdCwgYWxsIG5vbi1wcmVkZWZpbmVkIGxpYnJhcnkgaW50ZXJwcmV0YXRpb25zIGFyZSBza2lwcGVkLgoJKFJlc29sdmVfT3BfQ29uY2F0KTogSWYgc3RyaW5nIGNvbmNhdGVuYXRpb24gd2FzIGZvbGRlZCBpbiB0aGUgcGFyc2VyLAoJYnV0IHRoZSAiJiIgaXMgdXNlciBkZWZpbmVkLCBnaXZlIGFuIGVycm9yLCBiZWNhdXNlIHRoZSBmb2xkaW5nIHdvdWxkCgliZSB3cm9uZy4KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiIChJc19Gb2xkZWRfSW5fUGFyc2VyKTogTmV3IGZsYWcgdG8gaW5kaWNhdGUgdGhhdAoJdGhlIHBhcnNlciBoYXMgZm9sZGVkIGEgbG9uZyBzZXF1ZW5jZSBvZiBjb25jYXRlbmF0aW9ucyBvZiBzdHJpbmcKCWxpdGVyYWxzLgoKCSogdHJhbnMuYyAoSGFuZGxlZF9TZXF1ZW5jZV9PZl9TdGF0ZW1lbnRzX3RvX2dudSk6IE1hcmsgIkpNUEJVRl9TQVZFIgoJYW5kICJKTVBfQlVGIiB2YXJpYWJsZXMgYXMgYXJ0aWZpY2lhbC4KCShOX1N0cmluZ19MaXRlcmFsKTogRG8gbm90IHVzZSBhbGxvY2EgZm9yIHZlcnkgbG9uZyBzdHJpbmcgbGl0ZXJhbHMuIFVzZQoJeG1hbGxvYy9mcmVlIGluc3RlYWQuIE90aGVyd2lzZSB0aGUgc3RhY2sgbWlnaHQgb3ZlcmZsb3cuCgoJKiB1dGlscy5jIChpbml0X2dpZ2lfZGVjbHMpOiBNYXJrICJKTVBCVUZfVCIgdHlwZSBhcyBjcmVhdGVkIGJ5IHRoZQoJY29tcGlsZXIuCgoyMDA3LTA4LTE2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHZtc19jb252LmFkYiAoUHJvY2Vzc19Bcmd1bWVudCk6IEVuc3VyZSB0aGF0IHByb2plY3QgcmVsYXRlZCBvcHRpb25zCglhcmUgbm90IHB1dCBpbiB0aGUgLWNhcmdzIHNlY3Rpb24gd2hlbiB1c2luZyBHTkFUIENPTVBJTEUuCgoyMDA3LTA4LTE2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBub3RlIG9uIHByZXByb2Nlc3NpbmcgKG91dHB1dCBmaWxlIG5vdCB3cml0dGVuKQoKMjAwNy0wOC0xNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDctMDgtMTYgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIHNlbV90eXBlLmFkcywgc2VtX2NoNC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDctMDgtMTQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnLXNvY2Nvbi1pbnRlcml4LmFkcywgYS1leGNwb2wtaW50ZXJpeC5hZGIsIGEtaW50bmFtLWludGVyaXguYWRzLCAKCXMtb3NpbnRlLWludGVyaXguYWRzLCBzeXN0ZW0taW50ZXJpeC5hZHM6IFJlbW92ZWQuCgoyMDA3LTA4LTE0ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogYS1jYWxlbmQtdm1zLmFkYiwgYS1jYWxlbmQuYWRiICgiKyIsICItIiwgQWRkLCBTdWJ0cmFjdCk6IFJlbW92ZQoJY2FsbHMgdG8gQ2hlY2tfV2l0aGluX1RpbWVfQm91bmRzLgoJKCIrIiwgIi0iLCBBZGQsIFN1YnRyYWN0KTogUmVtb3ZlIGNhbGxzIHRvIENoZWNrX1dpdGhpbl9UaW1lX0JvdW5kcy4KCShEaWZmZXJlbmNlKTogQWNjb3VudCBmb3IgcG9zc2libGUgcm91bmRpbmcgb2YgdGhlIHJlc3VsdGluZyBkaWZmZXJlbmNlCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHVpbnRwLmFkYiwgYS16dGVkaXQuYWRiLCBzLXdjaGNvbi5hZGIsIHhubWFrZS5hZGIsIHMtd2NoY29uLmFkYiwKCXBhci1jaDUuYWRiLCBwYXItY2gxMC5hZGIsIGdldF90YXJnLmFkYiwgYS13dGVkaXQuYWRiLCBhLXRlaW9lZC5hZGIsCglzLW9zaW50ZS1zb2xhcmlzLmFkYiwgcy1vc2ludGUtc29sYXJpcy5hZHMsCglzLW9zaW50ZS1mcmVlYnNkLmFkcywgcy1vc2ludGUtZnJlZWJzZC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIHN0eWxlZy5hZGIsIHN0eWxlZy5hZHMsIHN0eWxlc3cuYWRiLCBzdHlsZXN3LmFkczogaW1wbGVtZW50IHN0eWxlCglzd2l0Y2ggLWduYXR5Uy4gRW5hYmxlIC1nbmF0eVMgaW4gR05BVCBzdHlsZSBjaGVjayBtb2RlCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBpbmxpbmUuYWRiLCB0eXBlcy5hZHMsIGlubGluZS5hZHMsIGZyb250ZW5kLmFkYiwgYWxsb2MuYWRzOiAKCVN1cHByZXNzIHVubW9kaWZpZWQgaW4tb3V0IHBhcmFtZXRlciB3YXJuaW5nIGluIHNvbWUgY2FzZXMKCVRoaXMgcGF0Y2ggaXMgYSBhbHNvIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIHdheSBzdXBwcmVzc2libGUKCWNoZWNrcyBhcmUgaGFuZGxlZC4KCgkqIGNoZWNrcy5hZHMsIGNoZWNrcy5hZGIgKEluc3RhbGxfTnVsbF9FeGNsdWRpbmdfQ2hlY2spOiBObyBjaGVjawoJbmVlZGVkIGZvciBhY2Nlc3MgdG8gY29uY3VycmVudCByZWNvcmQgdHlwZXMgZ2VuZXJhdGVkIGJ5IHRoZSBleHBhbmRlci4KCShHZW5lcmF0ZV9SYW5nZV9DaGVjayk6IFdoZW4gZ2VuZXJhdGluZyBhIHRlbXBvcmFyeSB0byBjYXB0dXJlIHRoZQoJdmFsdWUgb2YgYSBjb252ZXJzaW9uIHRoYXQgcmVxdWlyZXMgYSByYW5nZSBjaGVjaywgc2V0IHRoZSB0eXBlIG9mIHRoZQoJdGVtcG9yYXJ5IGJlZm9yZSByZXdyaXRpbmcgdGhlIG5vZGUsIHNvIHRoYXQgdGhlIHR5cGUgaXMgYWx3YXlzCglwcm9wZXJseSBwbGFjZWQgZm9yIGJhY2stZW5kIHVzZS4KCShBcHBseV9GbG9hdF9Db252ZXJzaW9uX0NoZWNrKTogSGFuZGxlIGNhc2Ugd2hlcmUgdGhlIGNvbnZlcnNpb24gaXMKCXRydW5jYXRpbmcuCgkoR2V0X0Rpc2NyaW1pbmFsKTogQ29kZSByZWZvcm1hdHRpbmcuIENsaW1iIHRoZSBzY29wZSBzdGFjayBsb29raW5nCglmb3IgYSBwcm90ZWN0ZWQgdHlwZSBpbiBvcmRlciB0byBleGFtaW5lIGl0cyBkaXNjcmltaW5hbnRzLgoKMjAwNy0wOC0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogYS1zdHpzdXAuYWRiLCBubGlzdHMuYWRiLCBsaWItdXRpbC5hZGIsIHRyZWVwci5hZGIsIAoJYS1zdHdpc3UuYWRiLCBhLXN0cnN1cC5hZGI6IEZpeCB3YXJuaW5ncyBmb3IgcmFuZ2UKCXRlc3RzIG9wdGltaXplZCBvdXQuCgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fSW4pOiBBZGQgd2FybmluZ3MgZm9yIHJhbmdlIHRlc3RzIG9wdGltaXplZCBvdXQuCgkoR2V0X0FsbG9jYXRvcl9GaW5hbF9MaXN0KTogRm9yIHRoZSBjYXNlIG9mIGFuIGFub255bW91cyBhY2Nlc3MgdHlwZQoJdGhhdCBoYXMgYSBzcGVjaWZpZWQgQXNzb2NpYXRlZF9GaW5hbF9DaGFpbiwgZG8gbm90IGdvIHVwIHRvIHRoZQoJZW5jbG9zaW5nIHNjb3BlLgoJKEV4cGFuZF9OX1R5cGVfQ29udmVyc2lvbik6IFRlc3QgZm9yIHRoZSBjYXNlIG9mIHJlbmFtaW5ncyBvZiBhY2Nlc3MKCXBhcmFtZXRlcnMgd2hlbiBkZWNpZGluZyB3aGV0aGVyIHRvIGFwcGx5IGEgcnVuLXRpbWUgYWNjZXNzaWJpbGl0eQoJY2hlY2suCgkoQ29udmVydF9BZ2dyX0luX0FsbG9jYXRvcik6IFVzZSBJbnNlcnRfQWN0aW9ucyB0byBwbGFjZSBleHBhbmRlZAoJYWdncmVnYXRlIGNvZGUgYmVmb3JlIGFsbG9jYXRvciwgYW5kIGFoZWFkIG9mIGRlY2xhcmF0aW9uIGZvcgoJdGVtcG9yYXJ5LCB0byBwcmV2ZW50IGFjY2VzcyBiZWZvcmUgZWxhYm9yYXRpb24gd2hlbiB0aGUgYWxsb2NhdG9yIGlzCglhbiBhY3R1YWwgZm9yIGFuIGFjY2VzcyBwYXJhbWV0ZXIuCgkoRXhwYW5kX05fVHlwZV9Db252ZXJzaW9uKTogT24gYW4gYWNjZXNzIHR5cGUgY29udmVyc2lvbiBpbnZvbHZpbmcgYW4KCWFjY2VzcyBwYXJhbWV0ZXIsIGRvIG5vdCBhcHBseSBhbiBhY2Nlc3NpYmlsaXR5IGNoZWNrIHdoZW4gdGhlCglvcGVyYW5kJ3Mgb3JpZ2luYWwgbm9kZSB3YXMgYW4gYXR0cmlidXRlIG90aGVyIHRoYW4gJ0FjY2Vzcy4gV2Ugbm93CgljcmVhdGUgYWNjZXNzIGNvbnZlcnNpb25zIGZvciB0aGUgZXhwYW5zaW9uIG9mICdVbmNoZWNrZWRfQWNjZXNzIGFuZAoJJ1VucmVzdHJpY3RlZF9BY2Nlc3MgaW4gY2VydGFpbiBjYXNlcyBhbmQgY2xlYXJseSBhY2Nlc3NpYmlsaXR5IHNob3VsZAoJbm90IGJlIGNoZWNrZWQgZm9yIHRob3NlLgoKCSogZXhwX2NoNi5hZHMsIGV4cF9jaDYuYWRiIChBZGRfQ2FsbF9CeV9Db3B5X0NvZGUpOiBGb3IgYW4gYWN0dWFsIHRoYXQKCWluY2x1ZGVzIGEgdHlwZSBjb252ZXJzaW9uIG9mIGEgcGFja2VkIGNvbXBvbmVudCB0aGF0IGhhcyBiZWVuIGV4cGFuZGVkLAoJcmVjb3ZlciB0aGUgb3JpZ2luYWwgZXhwcmVzc2lvbiBmb3IgdGhlIG9iamVjdCwgYW5kIHVzZSB0aGlzIGV4cHJlc3Npb24KCWluIHRoZSBwb3N0LWNhbGwgYXNzaWdubWVudCBzdGF0ZW1lbnQsIHNvIHRoYXQgdGhlIGFzc2lnbm1lbnQgaXMgbWFkZQoJdG8gdGhlIG9iamVjdCBhbmQgbm90IHRvIGEgYmFjay1lbmQgdGVtcG9yYXJ5LgoJKEZyZWV6ZV9TdWJwcm9ncmFtKTogSW4gY2FzZSBvZiBwcmltaXRpdmVzIG9mIHRhZ2dlZCB0eXBlcyBub3QgZGVmaW5lZAoJYXQgdGhlIGxpYnJhcnkgbGV2ZWwgZm9yY2UgZ2VuZXJhdGlvbiBvZiBjb2RlIHRvIHJlZ2lzdGVyIHRoZSBwcmltaXRpdmUKCWluIHRoZSBkaXNwYXRjaCB0YWJsZS4gSW4gYWRkaXRpb24gc29tZSBjb2RlIHJlb3JnYW5pemF0aW9uIGhhcyBiZWVuCglkb25lIHRvIGxlYXZlIHRoZSBpbXBsZW1lbnRhdGlvbiBjbGVhci4KCShFeHBhbmRfQ2FsbCk6IFdoZW4gZXhwYW5kaW5nIGFuIGluaGVyaXRlZCBpbXBsaWNpdCBjb252ZXJzaW9uLAoJcHJlc2VydmUgdGhlIHR5cGUgb2YgdGhlIGluaGVyaXRlZCBmdW5jdGlvbiBhZnRlciB0aGUgaW50cmluc2ljCglvcGVyYXRpb24gaGFzIGJlZW4gZXhwYW5kZWQuCgoJKiBleHBfY2gyLmFkcywgZXhwX2NoMi5hZGIKCShFeHBhbmRfRW50cnlfUGFyYW1ldGVyLkluX0Fzc2lnbm1lbnRfQ29udGV4dCk6IEFuIGltcGxpY2l0IGRlcmVmZXJlbmNlCglvZiBhbiBlbnRyeSBmb3JtYWwgYXBwZWFyaW5nIGluIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGRvZXMgbm90IGFzc2lnbgoJdG8gdGhlIGZvcm1hbC4KCShFeHBhbmRfQ3VycmVudF9WYWx1ZSk6IEluc3RlYWQgb2YgY2FsbGluZyBhIHJvdXRpbmUgdG8gZGV0ZXJtaW5lCgl3aGV0aGVyIHRoZSBwcmVmaXggb2YgYW4gYXR0cmlidXRlIHJlZmVyZW5jZSBzaG91bGQgYmUgb3B0aW1pemVkIG9yCglub3QsIHByZXZlbnQgdGhlIG9wdGltaXphdGlvbiBvZiBzdWNoIHByZWZpeGVzIGFsbCB0b2dldGhlci4KCgkqIGxpYi14cmVmLmFkYiAoR2VuZXJhdGVfUmVmZXJlbmNlLklzX09uX0xIUyk6IEFuIGluZGV4ZWQgb3Igc2VsZWN0ZWQKCWNvbXBvbmVudCB3aG9zZSBwcmVmaXggaXMga25vd24gdG8gYmUgb2YgYW4gYWNjZXNzIHR5cGUgaXMgYW4gaW1wbGljaXQKCWRlcmVmZXJlbmNlIGFuZCBkb2VzIG5vdCBhc3NpZ24gdG8gdGhlIHByZWZpeC4KCjIwMDctMDgtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGF0cmVlLmFkcywgYXRyZWUuYWRiIChOZXdfQ29weV9UcmVlKTogSWYgaGFzaCB0YWJsZSBpcyBiZWluZyB1c2VkIGFuZAoJaXR5cGUgaXMgdmlzaXRlZCwgbWFrZSBhbiBlbnRyeSBpbnRvIHRhYmxlIHRvIGxpbmsgYXNzb2NpYXRlZCBub2RlIGFuZAoJbmV3IGl0eXBlLgoJQWRkIGNvbW1lbnRzIGFuZCBjb3JyZWN0IGhhcm1sZXNzIGVycm9yIGluIEJ1aWxkX05DVF9IYXNoX1RhYmxlcwoJKEFycmF5X0FnZ3JfU3VidHlwZSk6IEFzc29jaWF0ZSBlYWNoIGl0eXBlIGNyZWF0ZWQgZm9yIGFuIGluZGV4IHR5cGUgdG8KCXRoZSBjb3JyZXNwb25kaW5nIHJhbmdlIGNvbnN0cnVjdCwgYW5kIG5vdCB0byB0aGUgYWdncmVnYXRlIGl0c2VsZi4gdG8KCW1haW50YWluIGEgb25lLXRvLW9uZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIGl0eXBlIGFuZCBpdHMgYXNzb2NpYXRlZAoJbm9kZSwgdG8gcHJldmVudCBlcnJvcnMgd2hlbiBjb21wbGV4IGV4cHJlc3Npb24gaXMgY29waWVkLgoJRml4IG1pc2hhbmRsaW5nIG9mIG11bHRpcGxlIGxldmVscyBvZiBwYXJlbnMKCgkqIHNlbV9hZ2dyLmFkYjogQ3JlYXRlIGEgbGltaXRlZCB2aWV3IG9mIGFuIGluY29tcGxldGUgdHlwZSwgdG8gbWFrZQoJdHJlYXRtZW50IG9mIGxpbWl0ZWQgdmlld3MgdW5pZm9ybSBmb3IgYWxsIHZpc2libGUgZGVjbGFyYXRpb25zIGluIGEKCWxpbWl0ZWRfd2l0aGVkIHBhY2thZ2UuCgkoTmV3X0NvcHlfVHJlZSk6IElmIGhhc2ggdGFibGUgaXMgYmVpbmcgdXNlZCBhbmQgaXR5cGUgaXMgdmlzaXRlZCwKCW1ha2UgYW4gZW50cnkgaW50byB0YWJsZSB0byBsaW5rIGFzc29jaWF0ZWQgbm9kZSBhbmQgbmV3IGl0eXBlLgoJKFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZSk6IERvIG5vdCBhZGQgYW4gb3RoZXJzIGJveCBhc3NvY2lhdGlvbiBmb3IgYQoJZGlzY3JpbWluYXRlZCByZWNvcmQgY29tcG9uZW50IHRoYXQgaGFzIG9ubHkgZGlzY3JpbWluYW50cywgd2hlbiB0aGVyZQoJaXMgYSBib3ggYXNzb2NpYXRpb24gZm9yIHRoZSBjb21wb25lbnQgaXRzZWxmLgoKCSogcGFyLWNoNC5hZGI6IEZpeCBtaXNoYW5kbGluZyBvZiBtdWx0aXBsZSBsZXZlbHMgb2YgcGFyZW5zCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGNvbXBlcnIuYWRiOiBGaXggcHJvYmxlbSB3aXRoIHN1cHByZXNzaW5nIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSBnaWdpCgoJKiBlcnJvdXRjLmFkcywgZXJyb3V0Yy5hZGIsIGVycm91dC5hZHMsIAoJZXJyb3V0LmFkYiAoV3JpdGVfRW9sKTogUmVtb3ZlIHRyYWlsaW5nIHNwYWNlcyBiZWZvcmUgd3JpdGluZyB0aGUgbGluZQoJKFdyaXRlX0VvbF9LZWVwX0JsYW5rcyk6IE5ldyBwcm9jZWR1cmUgdG8gd3JpdGUgYSBsaW5lLCBpbmNsdWRpbmcKCXBvc3NpYmxlIHRyYWlsaW5nIHNwYWNlcy4KCShPdXRwdXRfU291cmNlX0xpbmUpOiBDYWxsIFdyaXRlX0VvbF9LZWVwX0JsYW5rcyB0byBvdXRwdXQgYSBzb3VyY2UgbGluZQoJRml4IHByb2JsZW0gd2l0aCBzdXBwcmVzc2luZyB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gYmFjayBlbmQKCUltcHJvdmUgaGFuZGxpbmcgb2YgZGVsZXRlZCB3YXJuaW5ncwoKCSogZ25hdDFkcnYuYWRiOiAKCUZpeCBwcm9ibGVtIHdpdGggc3VwcHJlc3Npbmcgd2FybmluZyBtZXNzYWdlcyBmcm9tIGJhY2sgZW5kCglIYW5kbGUgc2V0dGluZyBvZiBTdGF0aWNfRGlzcGF0Y2hfVGFibGVzIGZsYWcuCgoJKiBwcmVwY29tcC5hZGI6IAoJRml4IHByb2JsZW0gd2l0aCBzdXBwcmVzc2luZyB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gYmFjayBlbmQKCgkqIGV4cF9pbnRyLmFkYjogSW1wcm92ZSBoYW5kbGluZyBvZiBkZWxldGVkIHdhcm5pbmdzCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGRlYnVnLmFkYjogSW1wcm92ZSAtZ25hdGRJIHRvIGNvdmVyIGFsbCBjYXNlcyBvZiBzZXJpYWxpemF0aW9uCglBZGQgZG9jdW1lbnRhdGlvbiBvZiBkWiwgZC50CgoJKiBzcHJpbnQuYWRzLCBzcHJpbnQuYWRiOiBJbXByb3ZlIC1nbmF0ZEkgdG8gY292ZXIgYWxsIGNhc2VzIG9mCglzZXJpYWxpemF0aW9uLgoJKFNwcmludF9Ob2RlX0FjdHVhbCk6IEdlbmVyYXRlIG5ldyBvdXRwdXQgYXNzb2NpYXRlZCB3aXRoIGltcGxpY2l0CglpbXBvcnRhdGlvbiBhbmQgaW1wbGljaXQgZXhwb3J0YXRpb24gb2Ygb2JqZWN0IGRlY2xhcmF0aW9ucy4KCjIwMDctMDgtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZWluZm8uYWRzLCBlaW5mby5hZGI6IENyZWF0ZSBhIGxpbWl0ZWQgdmlldyBvZiBhbiBpbmNvbXBsZXRlIHR5cGUsCgl0byBtYWtlIHRyZWF0bWVudCBvZiBsaW1pdGVkIHZpZXdzIHVuaWZvcm0gZm9yIGFsbCB2aXNpYmxlIGRlY2xhcmF0aW9ucwoJaW4gYSBsaW1pdGVkX3dpdGhlZCBwYWNrYWdlLgoJSW1wcm92ZSB3YXJuaW5ncyBmb3IgaW4gb3V0IHBhcmFtZXRlcnMKCShTZXRfUmVsYXRlZF9JbnRlcmFmYWNlL1JlbGF0ZWRfSW50ZXJmYWNlKTogQWxsb3cgdGhlIHVzZSBvZiB0aGlzCglhdHRyaWJ1dGUgd2l0aCBjb25zdGFudHMuCgkoV3JpdGVfRmllbGQyNl9OYW1lKTogSGFuZGxlIGF0dHJpYnV0ZSBSZWxhdGVkX0ludGVyZmFjZSBpbiBjb25zdGFudHMuCglXYXJuIG9uIGR1cGxpY2F0ZSBwcmFnbWEgUHJlZWxhYm9yYWJsZV9Jbml0aWFsaWFsaXphdGlvbgoKCSogc2VtX2NoNi5hZHMsIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IEZvcmNlIHRoZQoJZ2VuZXJhdGlvbiBvZiBhIGZyZWV6aW5nIG5vZGUgdG8gZW5zdXJlIHByb3BlciBtYW5hZ2VtZW50IG9mIG51bGwKCWV4Y2x1ZGluZyBhY2Nlc3MgdHlwZXMgaW4gdGhlIGJhY2tlbmQuCgkoQ3JlYXRlX0V4dHJhX0Zvcm1hbHMpOiBUZXN0IGJhc2UgdHlwZSBvZiB0aGUgZm9ybWFsIHdoZW4gY2hlY2tpbmcgZm9yCgl0aGUgbmVlZCB0byBhZGQgYW4gZXh0cmEgYWNjZXNzaWJpbGl0eS1sZXZlbCBmb3JtYWwuIFBhc3MgdGhlIGVudGl0eSBFCglvbiBhbGwgY2FsbHMgdG8gQWRkX0V4dHJhX0Zvcm1hbCAocmF0aGVyIHRoYW4gU2NvcGUgKEZvcm1hbCkgYXMgd2FzCglvcmlnaW5hbGx5IGJlaW5nIGRvbmUgaW4gYSBjb3VwbGUgb2YgY2FzZXMpLCB0byBlbnN1cmUgdGhhdCB0aGUKCUV4dHJhX0Zvcm1hbHMgbGlzdCBnZXRzIHNldCBvbiB0aGUgZW50aXR5IEUgd2hlbiB0aGUgZmlyc3QgZW50aXR5IGlzCglhZGRlZC4KCShDb25mb3JtaW5nX1R5cGVzKTogQWRkIG1pc3NpbmcgY2FsbHMgdG8gQmFzZV9UeXBlIHRvIHRoZSBjb2RlIHRoYXQKCWhhbmRsZXMgYW5vbnltb3VzIGFjY2VzcyB0eXBlcy4gVGhpcyBpcyByZXF1aXJlZCB0byBoYW5kbGUgdGhlCglnZW5lcmFsIGNhc2UgYmVjYXVzZSBQcm9jZXNzX0Zvcm1hbHMgYnVpbGRzIGludGVybmFsIHN1YnR5cGUgZW50aXRpZXMKCXRvIGhhbmRsZSBudWxsLWV4Y2x1ZGluZyBhY2Nlc3MgdHlwZXMuCgkoTWFrZV9Db250cm9sbGluZ19GdW5jdGlvbl9XcmFwcGVycyk6IENyZWF0ZSB3cmFwcGVycyBmb3IgY29uc3RydWN0b3IKCWZ1bmN0aW9ucyB0aGF0IG5lZWQgaXQsIGV2ZW4gd2hlbiBub3QgbWFya2VkIFJlcXVpcmVzX092ZXJyaWRpbmcuCglJbXByb3ZlIHdhcm5pbmdzIGZvciBpbiBvdXQgcGFyYW1ldGVycwoJKEFuYWx5emVfRnVuY3Rpb25fUmV0dXJuKTogV2FybiBmb3IgZGlzYWxsb3dlZCBudWxsIHJldHVybgoJV2FybiBvbiByZXR1cm4gZnJvbSBwcm9jZWR1cmUgd2l0aCB1bnNldCBvdXQgcGFyYW1ldGVyCglFbnN1cmUgY29uc2lzdGVudCB1c2Ugb2YgIyBpbiBlcnJvciBtZXNzYWdlcwoJKENoZWNrX092ZXJyaWRpbmdfSW5kaWNhdG9yKTogQWRkIGluIHBhcmFtZXRlciBJc19QcmltaXRpdmUuCgkoQW5hbHl6ZV9GdW5jdGlvbl9SZXR1cm4pOiBNb3ZlIGNhbGwgdG8gQXBwbHlfQ29uc3RyYWludF9DaGVjayBiZWZvcmUKCXRoZSBpbXBsaWNpdCBjb252ZXJzaW9uIG9mIHRoZSBleHByZXNzaW9uIGRvbmUgZm9yIGFub255bW91cyBhY2Nlc3MKCXR5cGVzLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRoZSBjb2RlIG9mIHRoZSBudWxsIGV4Y2x1ZGluZwoJY2hlY2sgKGlmIHJlcXVpcmVkKS4KCgkqIHNlbV93YXJuLmFkcywgc2VtX3dhcm4uYWRiIChDaGVja19SZWZlcmVuY2VzLlB1YmxpY2x5X1JlZmVyZW5jZWFibGUpOgoJQSBmb3JtYWwgcGFyYW1ldGVyIGlzIG5ldmVyIHB1YmxpY2x5IHJlZmVyZW5jZWFibGUgb3V0c2lkZSBvZiBpdHMgYm9keS4KCShDaGVja19SZWZlcmVuY2VzKTogRm9yIGFuIHVucmVmZXJlbmNlZCBmb3JtYWwgcGFyYW1ldGVyIGluIGFuIGFjY2VwdAoJc3RhdGVtZW50LCB1c2UgdGhlIHNhbWUgd2FybmluZyBjaXJjdWl0cnkgYXMgZm9yIHN1YnByb2dyYW0gZm9ybWFsCglwYXJhbWV0ZXJzLgoJKFdhcm5fT25fVW5yZWZlcmVuY2VkX0VudGl0eSk6IE5ldyBzdWJwcm9ncmFtLCB0YWtlbiBmcm9tCglPdXRwdXRfVW5yZWZlcmVuY2VkX01lc3NhZ2VzLCBjb250YWluaW5nIHRoZSBwYXJ0IG9mIHRoYXQgcm91dGluZSB0aGF0CglpcyBub3cgcmV1c2VkIGZvciBlbnRyeSBmb3JtYWxzIGFzIGRlc2NyaWJlZCBhYm92ZS4KCShHb3RvX1NwZWNfRW50aXR5KTogTmV3IGZ1bmN0aW9uCgkoQ2hlY2tfUmVmZXJlbmNlcyk6IERvIG5vdCBnaXZlIElOIE9VVCB3YXJuaW5nIGZvciBkaXNwYXRjaGluZyBvcGVyYXRpb24KCUltcHJvdmUgd2FybmluZ3MgZm9yIGluIG91dCBwYXJhbWV0ZXJzCgkoVGVzdF9SZWYpOiBDaGVjayB0aGF0IHRoZSBlbnRpdHkgaXMgbm90IHVuZGVmaW5pdGUgYmVmb3JlIGNhbGxpbmcKCVNjb3BlX1dpdGhpbiwgaW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgbG9vcHMuCglXYXJuIG9uIHJldHVybiBmcm9tIHByb2NlZHVyZSB3aXRoIHVuc2V0IG91dCBwYXJhbWV0ZXIKCUltcHJvdmVkIHdhcm5pbmdzIGZvciB1bnVzZWQgdmFyaWFibGVzCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZXhwX2F0dHIuYWRiIChFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlKTogSGFuZGxlIGNhc2Ugb2YgY2hpbGQgdW5pdAoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBGdXJ0aGVyIHVuaWZ5IHRoZSBoYW5kbGluZyBvZiB0aGUKCXRocmVlIGZvcm1zIG9mIGFjY2VzcyBhdHRyaWJ1dGVzLCB1c2luZyBjb21tb24gY29kZSBub3cgZm9yIGFsbCB0aHJlZQoJY2FzZXMuIEFkZCBhIHRlc3QgZm9yIHRoZSBjYXNlIG9mIGFwcGx5aW5nIGFuIGFjY2VzcyBhdHRyaWJ1dGUgdG8KCWFuIGV4cGxpY2l0IGRlcmVmZXJlbmNlIHdoZW4gdGhlIGNvbnRleHQgaXMgYW4gYWNjZXNzLXRvLWludGVyZmFjZQoJdHlwZS4gSW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gYXBwbHkgdGhlIGNvbnZlcnNpb24gdG8gdGhlIHByZWZpeAoJb2YgdGhlIGV4cGxpY2l0IGRlcmVmZXJlbmNlIHJhdGhlciB0aGFuIHRoZSBwcmVmaXggb2YgdGhlIGF0dHJpYnV0ZS4KCShBdHRyaWJ1dGVfVmVyc2lvbiwgVUVUX0FkZHJlc3MpOiBTZXQgZW50aXR5IGFzIGludGVybmFsIHRvIGVuc3VyZQoJcHJvcGVyIGRnIG91dHB1dCBvZiBpbXBsaWNpdCBpbXBvcnRhdGlvbi4KCShFeHBhbmRfQWNjZXNzX1RvX1R5cGUpOiBSZW1vdmVkLgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBNZXJnZSB0aGUgY29kZSBmcm9tIHRoZSB0aHJlZSBjYXNlcwoJb2YgYWNjZXNzIGF0dHJpYnV0ZXMsIHNpbmNlIHRoZSBwcm9jZXNzaW5nIGlzIGxhcmdlbHkgaWRlbnRpY2FsIGZvcgoJdGhlc2UgY2FzZXMuIFRoZSBzdWJzdGFudGl2ZSBmaXggaGVyZSBpcyB0byBwcm9jZXNzIHRoZSBjYXNlIG9mIGEKCXR5cGUgbmFtZSBwcmVmaXggKGN1cnJlbnQgaW5zdGFuY2UgY2FzZSkgYmVmb3JlIGhhbmRsaW5nIHRoZSBjYXNlCglvZiBpbnRlcmZhY2UgcHJlZml4ZXMuCgoyMDA3LTA4LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfY2gzLmFkcywgZXhwX2NoMy5hZGIgKEFkZF9GaW5hbF9DaGFpbik6IE5ldyBzdWJwcm9ncmFtLgoJKEZyZWV6ZV9BcnJheV9UeXBlLCBGcmVlemVfUmVjb3JkX1R5cGUpOiBGb3IgdGhlIGNhc2Ugb2YgYSBjb21wb25lbnQKCXR5cGUgdGhhdCBpcyBhbiBhbm9ueW1vdXMgYWNjZXNzIHRvIGNvbnRyb2xsZWQgb2JqZWN0LCBlc3RhYmxpc2gKCWFuIGFzc29jaWF0ZWQgZmluYWxpemF0aW9uIGNoYWluIHRvIGF2b2lkIGNvcnJ1cHRpbmcgdGhlIGdsb2JhbAoJZmluYWxpemF0aW9uIGxpc3Qgd2hlbiBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBvYmplY3QgZGVzaWduYXRlZAoJYnkgc3VjaCBhIGNvbXBvbmVudCBpcyBkZWFsbG9jYXRlZC4KCShNYWtlX0NvbnRyb2xsaW5nX0Z1bmN0aW9uX1dyYXBwZXJzKTogQ3JlYXRlIHdyYXBwZXJzIGZvciBjb25zdHJ1Y3RvcgoJZnVuY3Rpb25zIHRoYXQgbmVlZCBpdCwgZXZlbiB3aGVuIG5vdCBtYXJrZWQgUmVxdWlyZXNfT3ZlcnJpZGluZy4KCShJbml0aWFsaXplX1RhZyk6IFJlcGxhY2UgY2FsbCB0byBoYXNfZGlzY3JpbWluYW50cyBieSBjYWxsIHRvCglJc19WYXJpYWJsZV9TaXplX1JlY29yZCBpbiB0aGUgY2lyY3VpdHJ5IHRoYXQgaGFuZGxlcyB0aGUKCWluaXRpYWxpemF0aW9uIG9mIHNlY29uZGFyeSB0YWdzLgoJKElzX1ZhcmlhYmxlX1NpemVfUmVjb3JkKTogTmV3IGltcGxlbWVudGF0aW9uLgoJKEV4cGFuZF9OX09iamVjdF9EZWNsYXJhdGlvbik6IFN1cHByZXNzIGNhbGwgdG8gaW5pdCBwcm9jIGlmIHRoZXJlIGlzIGEKCVN1cHByZXNzX0luaXRpYWxpemF0aW9uIHByYWdtYSBmb3IgYSBkZXJpdmVkIHR5cGUuCgkoSXNfVmFyaWFibGVfU2l6ZV9SZWNvcmQpOiBOZXcgc3VicHJvZ3JhbS4KCShCdWlsZF9PZmZzZXRfVG9fVG9wX0Z1bmN0aW9ucyk6IE5ldyBpbXBsZW1lbnRhdGlvbiB0aGF0IHNpbXBsaWZpZXMgdGhlCglpbml0aWFsIHZlcnNpb24gb2YgdGhpcyByb3V0aW5lIGFuZCBhbHNvIGZpeGVzIHByb2JsZW1zIGNhdXNpbmcKCWluY29tcGxldGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHRhYmxlIG9mIGludGVyZmFjZXMuCgkoQnVpbGRfSW5pdF9Qcm9jZWR1cmUpOiBJbXByb3ZlIHRoZSBnZW5lcmF0aW9uIG9mIGNvZGUgdG8gaW5pdGlhbGl6ZSB0aGUKCXRoZSB0YWcgY29tcG9uZW50cyBvZiBzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGVzLgoJKEluaXRfU2Vjb25kYXJ5X1RhZ3MpOiBOZXcgaW1wbGVtZW50YXRpb24gdGhhdCBzaW1wbGlmaWVzIHRoZSBwcmV2aW91cwoJdmVyc2lvbiBvZiB0aGlzIHJvdXRpbmUuCgkoTWFrZV9EVCk6IEFkZCBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUgd2hlbiB0eXBlIGhhcyBiZWVuIGZyb3plbiBieSBhbgoJb2JqZWN0IGRlY2xhcmF0aW9uLCBmb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4KCShDaGVja19QcmVtYXR1cmVfRnJlZXppbmcpOiBOZXcgc3Vic2lkaWFyeSBwcm9jZWR1cmUgb2YgTWFrZV9EVCwgdG8KCWRpYWdub3NlIGF0dGVtcHMgdG8gZnJlZXplIGEgc3VicHJvZ3JhbSB3aGVuIHNvbWUgdW50YWdnZWQgdHlwZSBvZiBpdHMKCXByb2ZpbGUgaXMgYSBwcml2YXRlIHR5cGUgd2hvc2UgZnVsbCB2aWV3IGhhcyBub3QgYmVlbiBhbmFseXplZCB5ZXQuCgkoRnJlZXplX0FycmF5X1R5cGUpOiBHZW5lcmF0ZSBpbml0IHByb2MgZm9yIHBhY2tlZCBhcnJheSBpZiBlaXRoZXIKCUluaXRpYWxpemUgb3IgTm9ybWFsaXplX1NjYWxhcnMgaXMgc2V0LgoJKE1ha2VfQ29udHJvbGxpbmdfRnVuY3Rpb25fV3JhcHBlcnMsIE1ha2VfTnVsbF9Qcm9jZWR1cmVfU3BlY3MpOiB3aGVuCgljb25zdHJ1Y3RpbmcgdGhlIG5ldyBwcm9maWxlLCBjb3B5IHRoZSBudWxsX2V4Y2x1c2lvbiBpbmRpY2F0b3IgZm9yIGVhY2gKCXBhcmFtZXRlciwgdG8gZW5zdXJlIGZ1bGwgY29uZm9ybWFuY2Ugb2YgdGhlIG5ldyBib2R5IHdpdGggdGhlIHNwZWMuCgoJKiBzZW1fdHlwZS5hZHMsIHNlbV90eXBlLmFkYiAoTWFrZV9Db250cm9sbGluZ19GdW5jdGlvbl9XcmFwcGVycyk6CglDcmVhdGUgd3JhcHBlcnMgZm9yIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IG5lZWQgaXQsIGV2ZW4gd2hlbiBub3QKCW1hcmtlZCBSZXF1aXJlc19PdmVycmlkaW5nLgoJKENvdmVycyk6IEhhbmRsZSBwcm9wZXJseSBkZXNpZ25hdGVkIHR5cGVzIG9mIGFub255bW91cyBhY2Nlc3MgdHlwZXMsCgl3aG9zZSBub24tbGltaXRlZCB2aWV3cyBhcmUgdGhlbXNlbHZlcyBpbmNvbXBsZXRlIHR5cGVzLgoJKEFkZF9FbnRyeSk6IFVzZSBhbiBlbnRpdHkgdG8gc3RvcmUgdGhlIGFic3RyYWN0IG9wZXJhdGlvbiB3aGljaCBoaWRlcwoJYW4gaW50ZXJwcmV0YXRpb24uCgkoQmluYXJ5X09wX01heV9CZV9IaWRkZW4pOiBSZW5hbWUgdG8gQmluYXJ5X09wX0ludGVycF9IYXNfQWJzdHJhY3RfT3AuCgkoQ29sbGVjdF9JbnRlcnBzKTogVXNlIEVtcHR5IGFzIGFuIGFjdHVhbCBmb3IgQWJzdHJhY3RfT3AgaW4gdGhlCglpbml0aWFsaXphdGlvbiBhZ2dyZWdhdGUuCgkoRnVuY3Rpb25fSW50ZXJwX01heV9CZV9IaWRkZW4pOiBSZW5hbWUgdG8KCUZ1bmN0aW9uX0ludGVycF9IYXNfQWJzdHJhY3RfT3AuCgkoSGFzX0NvbXBhdGlibGVfVHlwZSk6IFJlbW92ZSBtYWNoaW5lcnkgdGhhdCBza2lwcyBpbnRlcnByZXRhdGlvbnMgaWYKCXRoZXkgYXJlIGxhYmVsZWQgYXMgcG90ZW50aWFsbHkgaGlkZGVuIGJ5IGFuIGFic3RyYWN0IG9wZXJhdG9yLgoJKEhhc19IaWRkZW5fSW50ZXJwKTogUmVuYW1lIHRvIEhhc19BYnN0cmFjdF9PcC4KCShTZXRfTWF5X0JlX0hpZGRlbik6IFJlbmFtZSB0byBTZXRfQWJzdHJhY3RfT3AuCgkoV3JpdGVfT3ZlcmxvYWRzKTogT3V0cHV0IHRoZSBhYnN0cmFjdCBvcGVyYXRvciBpZiBwcmVzZW50LgoJKEFkZF9FbnRyeSk6IEJlZm9yZSBpbnNlcnRpbmcgYSBuZXcgZW50cnkgaW50byB0aGUgaW50ZXJwcmV0YXRpb24gdGFibGUKCWZvciBhIG5vZGUsIGRldGVybWluZSB3aGV0aGVyIHRoZSBlbnRyeSB3aWxsIGJlIGRpc2FibGVkIGJ5IGFuIGFic3RyYWN0CglvcGVyYXRvci4KCShCaW5hcnlfT3BfSW50ZXJwX01heV9CZV9IaWRkZW4pOiBOZXcgcm91dGluZS4KCShDb2xsZWN0X0ludGVycHMpOiBBZGQgdmFsdWUgZm9yIGZsYWcgTWF5X0JlX0hpZGRlbiBpbiBpbml0aWFsaXphdGlvbgoJYWdncmVnYXRlLgoJKEZ1bmN0aW9uX0ludGVycF9NYXlfQmVfSGlkZGVuKTogTmV3IHJvdXRpbmUuCgkoSGFzX0NvbXBhdGlibGVfVHlwZSk6IERvIG5vdCBjb25zaWRlciBpbnRlcnByZXRhdGlvbnMgaGlkZGVuIGJ5CglhYnN0cmFjdCBvcGVyYXRvcnMgd2hlbiB0cnlpbmcgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdHdvIHR5cGVzIGFyZQoJY29tcGF0aWJsZS4KCShIYXNfSGlkZGVuX0ludGVycCk6IE5ldyByb3V0aW5lLgoJKFNldF9NYXlfQmVfSGlkZGVuX0ludGVycCk6IE5ldyByb3V0aW5lLgoJKFdyaXRlX092ZXJsb2Fkcyk6IFdyaXRlIHRoZSBzdGF0dXMgb2YgZmxhZyBNYXlfQmVfSGlkZGVuLgoKMjAwNy0wOC0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXNwLmFkcywgZXhwX2Rpc3AuYWRiIChCdWlsZF9EaXNwYXRjaF9UYWJsZXMpOiBIYW5kbGUgdGFnZ2VkCgl0eXBlcyBkZWNsYXJlZCBpbiB0aGUgZGVjbGFyYXRpdmUgcGFydCBvZiBhIG5lc3RlZCBwYWNrYWdlIGJvZHkgb3IgaW4KCXRoZSBwcm9wZXIgYm9keSBvZiBhIHN0dWIuCgkoU2V0X0FsbF9EVF9Qb3NpdGlvbik6IEFkZCBtaXNzaW5nIGNoZWNrIHRvIGF2b2lkIHdyb25nIGFzc2lnbmF0aW9uCglvZiB0aGUgc2FtZSBkaXNwYXRjaCB0YWJsZSBzbG90IHRvIHJlbmFtZWQgcHJpbWl0aXZlcy4KCShNYWtlX1NlbGVjdF9TcGVjaWZpY19EYXRhX1RhYmxlKTogSGFuZGxlIHByaXZhdGUgdHlwZXMuCgkoVGFnZ2VkX0tpbmQpOiBIYW5kbGUgcHJpdmF0ZSB0eXBlcy4KCShNYWtlX1RhZ3MsIE1ha2VfRFQpOiBTZXQgdGFnIGVudGl0eSBhcyBpbnRlcm5hbCB0byBlbnN1cmUgcHJvcGVyIGRnCglvdXRwdXQgb2YgaW1wbGljaXQgaW1wb3J0YXRpb24gYW5kIGV4cG9ydGF0aW9uLgoJKEV4cGFuZF9JbnRlcmZhY2VfVGh1bmspOiBGaXggYnVnIGluIHRoZSBleHBhbnNpb24gYXNzdW1pbmcgdGhhdCB0aGUKCWZpcnN0IGZvcm1hbCBvZiB0aGUgdGh1bmsgaXMgYWx3YXlzIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udHJvbGxpbmcKCXR5cGUuIEluIGFkZGl0aW9uIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBjb2RlIGNsZWFudXA6IHJlbW92ZSBmb3JtYWwKCVRodW5rX0FsaWFzIHdoaWNoIGlzIG5vIGxvbmdlciByZXF1aXJlZCwgY2xlYW51cCBldmFsdWF0aW9uIG9mIHRoZQoJdGhlIGNvbnRyb2xsaW5nIHR5cGUsIGFuZCB1cGRhdGUgdGhlIGRvY3VtZW50YXRpb24uCglSZXBsYWNlIG9jY3VycmVuY2Ugb2YgRGVmYXVsdF9QcmltX09wX0NvdW50IGJ5CglNYXhfUHJlZGVmX1ByaW1zLiBBZGRpdGlvbiBvZiBjb21waWxlLXRpbWUgY2hlY2sgdG8gdmVyaWZ5Cgl0aGF0IHRoZSB2YWx1ZSBvZiBNYXhfUHJlZGVmX1ByaW1zIGlzIGNvcnJlY3QuCgkoQ2hlY2tfUHJlbWF0dXJlX0ZyZWV6aW5nKTogQXBwbHkgY2hlY2sgaW4gQWRhOTUgbW9kZSBhcyB3ZWxsLgoJKE1ha2VfRFQpOiBBZGQgcGFyYW1ldGVyIHRvIGluZGljYXRlIHdoZW4gdHlwZSBoYXMgYmVlbiBmcm96ZW4gYnkgYW4KCW9iamVjdCBkZWNsYXJhdGlvbiwgZm9yIGRpYWdub3N0aWMgcHVycG9zZXMuCgkoQnVpbGRfU3RhdGljX0Rpc3BhdGNoX1RhYmxlcyk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgdGFrZXMgY2FyZSBvZiB0aGUKCWNvbnN0cnVjdGlvbiBvZiBzdGF0aWNhbGx5IGFsbG9jYXRlZCBkaXNwYXRjaCB0YWJsZXMuCgkoTWFrZV9EVCk6IEluIGNhc2Ugb2YgbGlicmFyeS1sZXZlbCB0YWdnZWQgdHlwZXMgZXhwb3J0IHRoZSBkZWNsYXJhdGlvbgoJb2YgdGhlIHByaW1hcnkgdGFnLiBSZW1vdmUgZ2VuZXJhdGlvbiBvZiB0YWdzIChub3cgZG9uZSBieSBNYWtlX1RhZ3MpLgoJQWRkaXRpb25hbCBtb2RpZmljYXRpb25zIHRvIGhhbmRsZSBub24tc3RhdGljIGdlbmVyYXRpb24gb2YgZGlzcGF0Y2gKCXRhYmxlcy4gVGFrZSBjYXJlIG9mIGJ1aWxkaW5nIHRhYmxlcyBmb3IgYXN5bmNocm9ub3VzIGludGVyZmFjZSB0eXBlcwoJKE1ha2VfVGFncyk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIHRoZSBlbnRpdGllcyBhc3NvY2lhdGVkIHdpdGgKCXRoZSBwcmltYXJ5IGFuZCBzZWNvbmRhcnkgdGFncyBvZiBUeXAgYW5kIGZpbGxzIHRoZSBjb250ZW50cyBvZiBBY2Nlc3NfCglEaXNwX1RhYmxlLiBJbiBjYXNlIG9mIGxpYnJhcnktbGV2ZWwgdGFnZ2VkIHR5cGVzIGltcG9ydHMgdGhlIGZvcndhcmQKCWRlY2xhcmF0aW9uIG9mIHRoZSBwcmltYXJ5IHRhZyB0aGF0IHdpbGwgYmUgZGVjbGFyZWQgbGF0ZXIgYnkgTWFrZV9EVC4KCShFeHBhbmRfSW50ZXJmYWNlX0NvbnZlcnNpb24pOiBJbiBjYXNlIG9mIGFjY2VzcyB0eXBlcyB0byBpbnRlcmZhY2VzCglyZXBsYWNlIGFuIGl0eXBlIGRlY2xhcmF0aW9uIGJ5IGFuIGV4cGxpY2l0IHR5cGUgZGVjbGFyYXRpb24gdG8gYXZvaWQKCXByb2JsZW1zIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2NvcGUgb2Ygc3VjaCBpdHlwZSBpbiB0cmFuc2llbnQgYmxvY2tzLgoKMjAwNy0wOC0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF91dGlsLmFkcywgZXhwX3V0aWwuYWRiOiAKCVRoaXMgcGF0Y2ggcmVwbGFjZXMgYSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgZXhwbGljaXQgdGVzdHMgZm9yIE5fTnVsbAoJd2l0aCBjYWxscyB0byBLbm93bl9OdWxsLiBUaGlzIGltcHJvdmVzIHRyYWNraW5nIG9mIG51bGwgdmFsdWVzLCBzaW5jZQoJS25vd25fTnVsbCBhbHNvIGNhdGNoZXMgbnVsbCBjb25zdGFudHMsIGFuZCB2YXJpYWJsZXMgY3VycmVudGx5IGtub3duIHRvCgliZSBudWxsLCBzbyB3ZSBnZXQgYmV0dGVyIHRyYWNraW5nLgoJKEVuc3VyZV9EZWZpbmVkKTogY3JlYXRlIGFuIGl0eXBlIHJlZmVyZW5jZSBvbmx5IGluIHRoZSBzY29wZSBvZiB0aGUKCWl0eXBlLgoJKFNpZGVfRWZmZWN0X0ZyZWUpOiBBIHNlbGVjdGVkIGNvbXBvbmVudCBvZiBhbiBhY2Nlc3MgdHlwZSB0aGF0CglkZW5vdGVzIGEgY29tcG9uZW50IHdpdGggYSByZXAgY2xhdXNlIG11c3QgYmUgdHJlYXRlZCBhcyBub3QKCXNpZGUtZWZmZWN0IGZyZWUsIGJlY2F1c2UgaWYgaXQgaXMgcGFydCBvZiBhIGxpbmtlZCBzdHJ1Y3R1cmUgaXRzCgl2YWx1ZSBtYXkgYmUgYWZmZWN0ZWQgYnkgYSByZW5hbWluZy4KCShFeHBhbmRfU3VidHlwZV9Gcm9tX0V4cHIpOiBGb3IgbGltaXRlZCBvYmplY3RzIGluaXRpYWxpemVkIHdpdGggYnVpbGQKCWluIHBsYWNlIGZ1bmN0aW9uIGNhbGxzLCBkbyBub3RoaW5nOyBvdGhlcndpc2Ugd2UgcHJlbWF0dXJlbHkgaW50cm9kdWNlCglhbiBOX1JlZmVyZW5jZSBub2RlIGluIHRoZSBleHByZXNzaW9uIGluaXRpYWxpemluZyB0aGUgb2JqZWN0LCB3aGljaAoJYnJlYWtzIHRoZSBjaXJjdWl0cnkgdGhhdCBkZXRlY3RzIGFuZCBhZGRzIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0bwoJdGhlIGNhbGxlZCBmdW5jdGlvbi4gQnVnIGZvdW5kIHdvcmtpbmcgaW4gdGhlIG5ldyBwYXRjaCBmb3Igc3RhdGljYWxseQoJYWxsb2NhdGVkIGRpc3BhdGNoIHRhYmxlcy4KCShJc19MaWJyYXJ5X0xldmVsX1RhZ2dlZF9UeXBlKTogTmV3IHN1YnByb2dyYW0uCgkoUmVtb3ZlX1NpZGVfRWZmZWN0cyk6IElmIHRoZSBleHByZXNzaW9uIG9mIGFuIGVsZW1lbnRhcnkgdHlwZSBpcyBhbgoJb3BlcmF0b3IgdHJlYXQgYXMgYSBmdW5jdGlvbiBjYWxsLgoJKE1ha2VfTGl0ZXJhbF9SYW5nZSk6IElmIHRoZSBpbmRleCB0eXBlIG9mIHRoZSBhcnJheSBpcyBub3QgaW50ZWdlciwgdXNlCglhdHRyaWJ1dGVzIHByb3Blcmx5IHRvIGNvbXB1dGUgdGhlIGNvbnN0cmFpbnQgb24gdGhlIHJlc3VsdGluZyBhZ2dyZWdhdGUKCXdoaWNoIGlzIGEgc3RyaW5nLgoKCSogZnJlZXplLmFkcywgZnJlZXplLmFkYiAoRnJlZXplX0VudGl0eSk6IElmIHRoZSBlbnRpdHkgaXMgYQoJY2xhc3Mtd2lkZSB0eXBlIHdob3NlIGJhc2UgdHlwZSBpcyBhbiBpbmNvbXBsZXRlIHByaXZhdGUgdHlwZSwgbGVhdmUKCWNsYXNzLXdpZGUgdHlwZSB1bmZyb3plbiBzbyB0aGF0IGZyZWV6ZSBub2RlcyBjYW4gYmUgZ2VuZXJhdGVkCglwcm9wZXJseSBhdCBhIGxhdGVyIHBvaW50LgoJKEZyZWV6ZV9FbnRpdHksIGFycmF5IGNhc2UpOiBIYW5kbGUgY2FzZSBvZiBwcmFnbWEgUGFjayBhbmQgY29tcG9uZW50CglzaXplIGF0dHJpYnV0cmUgY2xhdXNlIGZvciBzYW1lIGFycmF5LgoKMjAwNy0wOC0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmouYWRzLCBwcmouYWRiOiBVcGRhdGUgUHJvamVjdCBNYW5hZ2VyIHRvIG5ldyBhdHRyaWJ1dGUgbmFtZXMgZm9yCglncHJidWlsZC4KCUFsbG93IGFsbCB2YWxpZCBkZWNsYXJhdGlvbnMgaW4gY29uZmlndXJhdGlvbiBwcm9qZWN0IGZpbGVzCgkoUmVzZXQpOiBJbml0aWFsaXplIGFsbCB0YWJsZXMgYW5kIGhhc2ggdGFibGVzIGluIHRoZSBwcm9qZWN0IHRyZWUgZGF0YQoJTWFqb3IgdXBkYXRlIG9mIHRoZSBQcm9qZWN0IE1hbmFnZXIgYW5kIG9mIHRoZSBwcm9qZWN0IGF3YXJlIHRvb2xzLAoJaW5jbHVkaW5nIGdwcm1ha2UsIHNvIHRoYXQgdGhlIHNhbWUgc291cmNlcyBpbiB0aGUgR05BVCByZXBvc2l0b3J5CgljYW4gYmUgdXNlZCBieSBncHJidWlsZC4KCShTbGFzaF9JZCk6IENoYW5nZSB0eXBlIHRvIGJlIFBhdGhfTmFtZV9UeXBlCgkoU2xhc2gpOiBSZXR1cm4gYSBQYXRoX05hbWVfVHlwZSBpbnN0ZWFkIG9mIGEgRmlsZV9OYW1lX1R5cGUKCgkqIHByai1hdHRyLmFkcywgcHJqLWF0dHIuYWRiOiBSZW1vdmUgYXR0cmlidXRlcyBubyBsb25nZXIgdXNlZCBieQoJZ3ByYnVpbGQuCglVcGRhdGUgUHJvamVjdCBNYW5hZ2VyIHRvIG5ldyBhdHRyaWJ1dGUgbmFtZXMgZm9yIGdocHJidWlsZAoJQWxsb3cgYWxsIHZhbGlkIGRlY2xhcmF0aW9ucyBpbiBjb25maWd1cmF0aW9uIHByb2plY3QgZmlsZXMKCU1ham9yIHVwZGF0ZSBvZiB0aGUgUHJvamVjdCBNYW5hZ2VyIGFuZCBvZiB0aGUgcHJvamVjdCBhd2FyZSB0b29scywKCWluY2x1ZGluZyBncHJtYWtlLCBzbyB0aGF0IHRoZSBzYW1lIHNvdXJjZXMgaW4gdGhlIEdOQVQgcmVwb3NpdG9yeQoJY2FuIGJlIHVzZWQgYnkgZ3ByYnVpbGQuCgoJKiBwcmotY29tLmFkczogCglNYWpvciB1cGRhdGUgb2YgdGhlIFByb2plY3QgTWFuYWdlciBhbmQgb2YgdGhlIHByb2plY3QgYXdhcmUgdG9vbHMsCglpbmNsdWRpbmcgZ3BybWFrZSwgc28gdGhhdCB0aGUgc2FtZSBzb3VyY2VzIGluIHRoZSBHTkFUIHJlcG9zaXRvcnkKCWNhbiBiZSB1c2VkIGJ5IGdwcmJ1aWxkLgoKCSogcHJqLWRlY3QuYWRiIChQcmouU3RydC5BdHRyaWJ1dGVfUmVmZXJlbmNlKTogU2V0IGNvcnJlY3RseSB0aGUgY2FzZQoJaW5zZW5zaXRpdmUgZmxhZyBmb3IgYXR0cmlidXRlcyB3aXRoIG9wdGlvbmFsIGluZGV4LgoJKFByai5EZWN0LlBhcnNlX0F0dHJpYnV0ZV9EZWNsYXJhdGlvbik6IEZvciBjYXNlIGluc2Vuc2l0aXZlIGFzc29jaWF0aXZlCglhcnJheSBhdHRyaWJ1dGUsIHB1dCB0aGUgaW5kZXggaW4gbG93ZXIgY2FzZS4KCVVwZGF0ZSBQcm9qZWN0IE1hbmFnZXIgdG8gbmV3IGF0dHJpYnV0ZSBuYW1lcyBmb3IgZ2hwcmJ1aWxkCglBbGxvdyBhbGwgdmFsaWQgZGVjbGFyYXRpb25zIGluIGNvbmZpZ3VyYXRpb24gcHJvamVjdCBmaWxlcwoJTWFqb3IgdXBkYXRlIG9mIHRoZSBQcm9qZWN0IE1hbmFnZXIgYW5kIG9mIHRoZSBwcm9qZWN0IGF3YXJlIHRvb2xzLAoJaW5jbHVkaW5nIGdwcm1ha2UsIHNvIHRoYXQgdGhlIHNhbWUgc291cmNlcyBpbiB0aGUgR05BVCByZXBvc2l0b3J5CgljYW4gYmUgdXNlZCBieSBncHJidWlsZC4KCgkqIHByai1lbnYuYWRzLCBwcmotZW52LmFkYjogCglNYWpvciB1cGRhdGUgb2YgdGhlIFByb2plY3QgTWFuYWdlciBhbmQgb2YgdGhlIHByb2plY3QgYXdhcmUgdG9vbHMsCglpbmNsdWRpbmcgZ3BybWFrZSwgc28gdGhhdCB0aGUgc2FtZSBzb3VyY2VzIGluIHRoZSBHTkFUIHJlcG9zaXRvcnkKCWNhbiBiZSB1c2VkIGJ5IGdwcmJ1aWxkLgoJKEdldF9SZWZlcmVuY2UpOiBDaGFuZ2UgdHlwZSBvZiBwYXJhbWV0ZXIgUGF0aCB0byBQYXRoX05hbWVfVHlwZQoKCSogcHJqLWV4dC5hZHMsIHByai1leHQuYWRiIChJbml0aWFsaXplX1Byb2plY3RfUGF0aCk6IE1ha2Ugc3VyZSwgYWZ0ZXIKCXJlbW92aW5nICctJyBmcm9tIHRoZSBwYXRoIHRvIHN0YXJ0IHdpdGggdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUKCW5leHQgZGlyZWN0b3J5LgoJTWFqb3IgdXBkYXRlIG9mIHRoZSBQcm9qZWN0IE1hbmFnZXIgYW5kIG9mIHRoZSBwcm9qZWN0IGF3YXJlIHRvb2xzLAoJaW5jbHVkaW5nIGdwcm1ha2UsIHNvIHRoYXQgdGhlIHNhbWUgc291cmNlcyBpbiB0aGUgR05BVCByZXBvc2l0b3J5CgljYW4gYmUgdXNlZCBieSBncHJidWlsZC4KCU1ham9yIHVwZGF0ZSBvZiB0aGUgUHJvamVjdCBNYW5hZ2VyIGFuZCBvZiB0aGUgcHJvamVjdCBhd2FyZSB0b29scywKCWluY2x1ZGluZyBncHJtYWtlLCBzbyB0aGF0IHRoZSBzYW1lIHNvdXJjZXMgaW4gdGhlIEdOQVQgcmVwb3NpdG9yeQoJY2FuIGJlIHVzZWQgYnkgZ3ByYnVpbGQuCgoJKiBwcmotbm1zYy5hZHMsIHByai1ubXNjLmFkYjogCglVcGRhdGUgUHJvamVjdCBNYW5hZ2VyIHRvIG5ldyBhdHRyaWJ1dGUgbmFtZXMgZm9yIGdocHJidWlsZAoJQWxsb3cgYWxsIHZhbGlkIGRlY2xhcmF0aW9ucyBpbiBjb25maWd1cmF0aW9uIHByb2plY3QgZmlsZXMKCShTZWFyY2hfRGlyZWN0b3JpZXMpOiBEZXRlY3Qgc3VidW5pdHMgdGhhdCBhcmUgc3BlY2lmaWVkIHdpdGggYW4KCWF0dHJpYnV0ZSBCb2R5IGluIHBhY2thZ2UgTmFtaW5nLiBEbyBub3QgcmVwbGFjZSBhIHNvdXJjZS91bml0IGluIHRoZQoJc2FtZSBwcm9qZWN0IHdoZW4gdGhlIG9yZGVyIG9mIHRoZSBzb3VyY2UgZGlycyBhcmUga25vd24uIERldGVjdAoJZHVwbGljYXRlIHNvdXJjZXMvdW5pdHMgaW4gdGhlIHNhbWUgcHJvamVjdCB3aGVuIHRoZSBvcmRlciBvZiB0aGUKCXNvdXJjZSBkaXJzIGFyZSBub3Qga25vd24uCgkoQ2hlY2tfQWRhX05hbWUpOiBBbGxvdyBhbGwgaWRlbnRpZmllcnMgdGhhdCBhcmUgbm90IHJlc2VydmVkIHdvcmRzCglpbiBBZGEgOTUuCglNYWpvciB1cGRhdGUgb2YgdGhlIFByb2plY3QgTWFuYWdlciBhbmQgb2YgdGhlIHByb2plY3QgYXdhcmUgdG9vbHMsCglpbmNsdWRpbmcgZ3BybWFrZSwgc28gdGhhdCB0aGUgc2FtZSBzb3VyY2VzIGluIHRoZSBHTkFUIHJlcG9zaXRvcnkKCWNhbiBiZSB1c2VkIGJ5IGdwcmJ1aWxkLgoJKExvb2tfRm9yX1NvdXJjZXMpOiBJZiB0aGUgbGlzdCBvZiBzb3VyY2VzIGlzIGVtcHR5LCBzZXQgdGhlIG9iamVjdAoJZGlyZWN0b3J5IG9mIG5vbiBleHRlbmRpbmcgcHJvamVjdCB0byBuaWwuCglDaGFuZ2UgdHlwZSBvZiBwYXRoIG5hbWUgdmFyaWFibGVzIHRvIGJlIFBhdGhfTmFtZV9UeXBlCgkoTG9jYXRlX0RpcmVjdG9yeSk6IE1ha2Ugc3VyZSB0aGF0IG9uIFdpbmRvd3MgJy8nIGlzIGNvbnZlcnRlZCB0byAnXCcsCglvdGhlcndpc2UgY3JlYXRpbmcgbWlzc2luZyBkaXJlY3RvcmllcyB3aWxsIGZhaWwuCgoJKiBwcmotYXR0ci1wbS5hZGIsIHByai10cmVlLmFkcywgcHJqLXByb2MuYWRzLCBwcmotcHJvYy5hZGIsIAoJcHJqLXBhcnQuYWRzLCBwcmotcGFydC5hZGI6CglNYWpvciB1cGRhdGUgb2YgdGhlIFByb2plY3QgTWFuYWdlciBhbmQgb2YgdGhlIHByb2plY3QgYXdhcmUgdG9vbHMsCglpbmNsdWRpbmcgZ3BybWFrZSwgc28gdGhhdCB0aGUgc2FtZSBzb3VyY2VzIGluIHRoZSBHTkFUIHJlcG9zaXRvcnkKCWNhbiBiZSB1c2VkIGJ5IGdwcmJ1aWxkLgoKCSogcHJqLXN0cnQuYWRiIChQcmouU3RydC5BdHRyaWJ1dGVfUmVmZXJlbmNlKTogU2V0IGNvcnJlY3RseSB0aGUgY2FzZQoJaW5zZW5zaXRpdmUgZmxhZyBmb3IgYXR0cmlidXRlcyB3aXRoIG9wdGlvbmFsIGluZGV4LgoJKFByai5EZWN0LlBhcnNlX0F0dHJpYnV0ZV9EZWNsYXJhdGlvbik6IEZvciBjYXNlIGluc2Vuc2l0aXZlIGFzc29jaWF0aXZlCglhcnJheSBhdHRyaWJ1dGUsIHB1dCB0aGUgaW5kZXggaW4gbG93ZXIgY2FzZS4KCShQYXJzZV9WYXJpYWJsZV9SZWZlcmVuY2UpOiBBbGxvdyB0aGUgY3VycmVudCBwcm9qZWN0IG5hbWUgdG8gYmUgdXNlZCBpbgoJdGhlIHByZWZpeCBvZiBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlLgoKCSogcHJqLXV0aWwuYWRzLCBwcmotdXRpbC5hZGIKCShWYWx1ZV9PZiAoZm9yIGFycmF5cykpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgRm9yY2VfTG93ZXJfQ2FzZV9JbmRleCwKCWRlZmF1bHRlZCB0byBGYWxzZS4gV2hlbiBUcnVlLCBhbHdheXMgY2hlY2sgYWdhaW5zdCBpbmRleGVzIGluIGxvd2VyCgljYXNlLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmgsIHNuYW1lcy5hZGI6IAoJVXBkYXRlIFByb2plY3QgTWFuYWdlciB0byBuZXcgYXR0cmlidXRlIG5hbWVzIGZvciBncHJidWlsZAoJQWxsb3cgYWxsIHZhbGlkIGRlY2xhcmF0aW9ucyBpbiBjb25maWd1cmF0aW9uIHByb2plY3QgZmlsZXMKCjIwMDctMDgtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIG9wdC5hZHM6IFdhcm5pbmcgZm9yIG5vbi1sb2NhbCBleGNlcHRpb24gcHJvcGFnYXRpb24gbm93IG9mZiBieQoJZGVmYXVsdAoJTmV3IHN3aXRjaCAtZ25hdEkgdG8gZGlzYWJsZSByZXByZXNlbnRhdGlvbiBjbGF1c2VzCglJbXBsZW1lbnQgbmV3IHByYWdtYSBJbXBsaWNpdF9QYWNraW5nCgoJKiB1c2FnZS5hZGI6IAoJV2FybmluZyBmb3Igbm9uLWxvY2FsIGV4Y2VwdGlvbiBwcm9wYWdhdGlvbiBub3cgb2ZmIGJ5IGRlZmF1bHQKCUFkZCB3YXJuaW5nIGZvciB1bmNoZWNrZWQgY29udmVyc2lvbiBvZiBwb2ludGVycyB3aSBkaWZmZXJlbnQKCWNvbnZlbnRpb25zLgoJTmV3IHN3aXRjaCAtZ25hdEkgdG8gZGlzYWJsZSByZXByZXNlbnRhdGlvbiBjbGF1c2VzCgoJKiB1c2FnZS5hZGI6IG5ldyBzd2l0Y2ggLWduYXR5UwoKCSogZ25hdF91Z24udGV4aTogRm9yIHRoZSBnbmF0Y2hlY2sgTm9uX1F1YWxpZmllZF9BZ2dyZWdhdGVzIHJ1bGUgYWRkIGEKCW5vdGUgdGhhdCBhZ2dyZWdhdGVzIG9mIGFub255bW91cyBhcnJheSB0eXBlcyBhcmUgbm90IGZsYWdnZWQuCgktZ25hdHdjIG5vdyBpbmNsdWRlcyBtZW1iZXJzaGlwIHRlc3RzIG9wdGltaXplZCBhd2F5CgktZ25hdHcueCB3YXJuaW5ncyBhcmUgbm93IG9mZiBieSBkZWZhdWx0CglBZGRlZCBjb25kaXRpb25hbCBjb21waWxhdGlvbiBBcHBlbmRpeAoJQWRkIGRvY3VtZW50YXRpb24gb2YgLWduYXRJCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgbmV3IC1nbmF0eVMgc3R5bGUgY2hlY2sKCVVwZGF0ZSBkb2N1bWVudGF0aW9uIGFib3V0IFNBTCBhbmQgYXV0by1pbml0IG9uIFdpbmRvd3MuCgoJKiBnbmF0X3JtLnRleGk6IAoJQWRkIGRvY3VtZW50YXRpb24gZm9yIHByYWdtYSBDaGVja19OYW1lIGFuZCAnRW5hYmxlZCBhdHRyaWJ1dGUKCURvY3VtZW50IHRoYXQgRWxpbWluYXRlIG9uIGRpc3BhdGNoaW5nIG9wZXJhdGlvbiBpcyBpZ25vcmVkCglEb2N1bWVudCBJREUgYXR0cmlidXRlcyBWQ1NfUmVwb3NpdG9yeV9Sb290IGFuZCBWQ1NfUGF0Y2hfUm9vdC4KCURvY3VtZW50IHByYWdtYSBNYWluCglEb2N1bWVudCBwcmFnbWEgSW1wbGljaXRfUGFja2luZwoKCSogc2VtX2NoMTMuYWRiOiBBZGQgd2FybmluZyBmb3IgdW5jaGVja2VkIGNvbnZlcnNpb24gb2YgcG9pbnRlcnMgd2kKCWRpZmZlcmVudCBjb252ZW50aW9ucwoJTmV3IHN3aXRjaCAtZ25hdEkgdG8gZGlzYWJsZSByZXByZXNlbnRhdGlvbiBjbGF1c2VzCgoJKiBzd2l0Y2gtYy5hZGIgKFNjYW5fRnJvbnRfRW5kX1N3aXRjaGVzKTogV2hlbiBhIC1nbmF0IHN3aXRjaCBpcyBub3QKCXJlY29nbml6ZWQsIHJlcG9ydCB0aGUgaW52YWxpZCBjaGFyYWN0ZXJzIGluY2x1ZGluZyAiLWduYXQiIGluc3RlYWQgb2YKCWp1c3QgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgc3dpdGNoLgoJTmV3IHN3aXRjaCAtZ25hdEkgdG8gZGlzYWJsZSByZXByZXNlbnRhdGlvbiBjbGF1c2VzCglTZXQgV2Fybl9Pbl9PYmplY3RfUmVuYW1lc19GdW5jdGlvbiB0cnVlIGZvciAtZ25hdGcKCgkqIHZtc19kYXRhLmFkczogQWRkIGRvYyBmb3IgL0lHTk9SRV9SRVBfQ0xBVVNFUwoJQWRkIFNUQVRFTUVOVFNfQUZURVJfVEhFTl9FTFNFIGFzIHN5bm9ueW0gZm9yIC1nbmF0eVMKCUFkZCBxdWFsaWZpZXIgL0FERF9QUk9KRUNUX1NFQVJDSF9ESVI9IGZvciBkaWZmZXJlbnQgdG9vbHMsIGVxdWl2YWxlbnQKCXRvIHN3aXRjaCAtYVAgKGFkZCBkaXJlY3RvcnkgdG8gcHJvamVjdCBzZWFyY2ggZGlyKS4KCgkqIHBhci1wcmFnLmFkYjogSW1wbGVtZW50IG5ldyBwcmFnbWEgSW1wbGljaXRfUGFja2luZwoKCSogc2VtX3ByYWcuYWRiIChBbmFseXplX1ByYWdtYSwgY2FzZSBDb21wbGV4X1JlcHJlc2VudGF0aW9uKTogTWFyayB0aGUKCXR5cGUgYXMgaGF2aW5nIGEgbm9uLXN0YW5kYXJkIHJlcHJlc2VudGF0aW9uLCB0byBmb3JjZSBleHBhbnNpb24gb24KCWNvbnZlcnNpb24gdG8gcmVsYXRlZCB0eXBlcy4KCShBbmFseXplX1ByYWdtYSk6IFdhcm4gb24gbWlzc3BlbGxlZCBwcmFnbWEKCShBbmFseXplX1ByYWdtYSwgY2FzZSBDb252ZW50aW9uX0lkZW50aWZpZXIpOiBGaXggY2hlY2tpbmcgb2Ygc2Vjb25kIGFyZwoJRW5zdXJlIGNvbnNpc3RlbnQgdXNlIG9mICMgaW4gZXJyb3IgbWVzc2FnZXMKCUltcGxlbWVudCBwcmFnbWEgSW1wbGljaXRfUGFja2luZwoKMjAwNy0wOC0xNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdGFyZ3R5cHMuYyAoZ2V0X3RhcmdldF9tYXhpbXVtX2RlZmF1bHRfYWxpZ25tZW50KTogTmV3IGZ1bmN0aW9uLgoJTWF4aW11bSBhbGlnbm1lbnQKCXRoYXQgdGhlIGNvbXBpbGVyIG1pZ2h0IGNob29zZSBieSBkZWZhdWx0IGZvciBhIHR5cGUgb3Igb2JqZWN0LgoJKGdldF90YXJnZXRfZGVmYXVsdF9hbGxvY2F0b3JfYWxpZ25tZW50KTogTmV3IGZ1bmN0aW9uLiBBbGlnbm1lbnQga25vd24KCXRvIGJlIGhvbm9yZWQgYnkgdGhlIHRhcmdldCBkZWZhdWx0IGFsbG9jYXRvci4KCShnZXRfdGFyZ2V0X21heGltdW1fYWxsb3dlZF9hbGlnbm1lbnQpOiBOZXcgZnVuY3Rpb24uIE1heGltdW0gYWxpZ25tZW50Cgl3ZSBtaWdodCBhY2NlcHQgZm9yIGFueSB0eXBlIG9yIG9iamVjdCBvbiB0aGUgdGFyZ2V0LgoJKGdldF90YXJnZXRfbWF4aW11bV9hbGlnbm1lbnQpOiBOb3cgc3lub255bSBvZiBtYXhpbXVtX2RlZmF1bHRfYWxpZ25tZW50CgoJKiBnaWdpLmggKGdldF90YXJnZXRfbWF4aW11bV9kZWZhdWx0X2FsaWdubWVudCk6IERlY2xhcmUgbmV3IGZ1bmN0aW9uLgoJKGdldF90YXJnZXRfZGVmYXVsdF9hbGxvY2F0b3JfYWxpZ25tZW50KTogTGlrZXdpc2UuCgkoZ2V0X3RhcmdldF9tYXhpbXVtX2FsbG93ZWRfYWxpZ25tZW50KTogTGlrZXdpc2UuCgoJUFIgYWRhLzE5MDM3CgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KSA8b2JqZWN0PjogRXhjZXB0IGZvciB0aGUgcmVuYW1pbmcgb2YgdGhlCglyZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsLCBmaXJzdCB0cnkgdG8gdXNlIGEgc3RhYmlsaXplZCByZWZlcmVuY2UgZm9yCglhIGNvbnN0YW50IHJlbmFtaW5nIHRvby4KCSh2YWxpZGF0ZV9hbGlnbm1lbnQpOiBVc2UgdGFyZ2V0X21heGltdW1fYWxsb3dlZF9hbGlnbm1lbnQgaW5zdGVhZCBvZgoJTUFYX09GSUxFX0FMSUdOTUVOVCBhcyB0aGUgdXBwZXIgYm91bmQgdG8gd2hhdCB3ZSBhY2NlcHQuCgkoZ25hdF90b19nbnVfZW50aXR5KTogVXNlIGNvbW1vbiBub2RlcyBkaXJlY3RseS4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxvYmplY3Q+OiBQaWNrIHRoZSB2YWx1ZXMgb2YgdGhlIHR5cGUgdG8gYW5ub3RhdGUKCWFsaWdubWVudCBhbmQgc2l6ZSBmb3IgdGhlIG9iamVjdC4KCShsdmFsdWVfcmVxdWlyZWRfcCk6IEhhbmRsZSBOX1BhcmFtZXRlcl9Bc3NvY2lhdGlvbiBsaWtlIE5fRnVuY3Rpb25fQ2FsbAoJYW5kIE5fUHJvY2VkdXJlX0NhbGxfU3RhdGVtZW50LgoJKHRha2VzX2FkZHJlc3MpOiBSZW5hbWUgdG8gbHZhbHVlX3JlcXVpcmVkX3AsIGFkZCB0aGlyZCBwYXJhbWV0ZXIKCSdhbGlhc2VkJyBhbmQgYWRqdXN0IHJlY3Vyc2l2ZSBjYWxscy4KCTxOX0luZGV4ZWRfQ29tcG9uZW50PjogVXBkYXRlICdhbGlhc2VkJyBmcm9tIHRoZSBhcnJheSB0eXBlLgoJPE5fU2VsZWN0ZWRfQ29tcG9uZW50PjogTmV3IGNhc2UuCgk8Tl9PYmplY3RfUmVuYW1pbmdfRGVjbGFyYXRpb24+OiBOZXcgTGlrZXdpc2UuCgkoSWRlbnRpZmllcl90b19nbnUpOiBBZGp1c3QgZm9yIGFib3ZlIGNoYW5nZXMuCgkobWF5YmVfc3RhYmlsaXplX3JlZmVyZW5jZSkgPENPTlNUX0RFQ0w+OiBOZXcgY2FzZS4KCgkqIHV0aWxzMi5jIChidWlsZF9iaW5hcnlfb3ApIDxBUlJBWV9SQU5HRV9SRUY+OiBMb29rIHRocm91Z2ggY29udmVyc2lvbgoJYmV0d2VlbiB0eXBlIHZhcmlhbnRzLgoJKGJ1aWxkX3NpbXBsZV9jb21wb25lbnRfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfY2FsbF9hbGxvY19kZWFsbG9jKTogVXNlIHRhcmdldF9kZWZhdWx0X2FsbG9jYXRvcl9hbGlnbm1lbnQKCWluc3RlYWQgb2YgQklHR0VTVF9BTElHTk1FTlQgYXMgdGhlIHRocmVzaG9sZCB0byB0cmlnZ2VyIHRoZSBzdXBlcgoJYWxpZ25pbmcgdHlwZSBjaXJjdWl0cnkgZm9yIGFsbG9jYXRpb25zIGZyb20gdGhlIGRlZmF1bHQgc3RvcmFnZSBwb29sLgoJKGJ1aWxkX2FsbG9jYXRvcik6IExpa2V3aXNlLgoJKGJ1aWxkX3NpbXBsZV9jb21wb25lbnRfcmVmKTogTWFudWFsbHkgZm9sZCB0aGUgcmVmZXJlbmNlIGZvciBhCgljb25zdHJ1Y3RvciBpZiB0aGUgcmVjb3JkIHR5cGUgY29udGFpbnMgYSB0ZW1wbGF0ZS4KCgkqIHV0aWxzLmMgKHZhbHVlX3plcm9wKTogRGVsZXRlLgoJKGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBFbWl0IGRlYnVnIGluZm8gZm9yIGNvbW1vbiB0eXBlcy4KCShyZXN0X29mX3JlY29yZF90eXBlX2NvbXBpbGF0aW9uKTogSWYgYSB1bmlvbiBjb250YWlucyBhIGZpZWxkCgl3aXRoIGEgbm9uLWNvbnN0YW50IHF1YWxpZmllciwgdHJlYXQgaXQgYXMgdmFyaWFibGUtc2l6ZWQuCgkoZmluaXNoX3JlY29yZF90eXBlKTogR2l2ZSB0aGUgc3R1YiBUWVBFX0RFQ0wgYSBuYW1lLgoJKHJlc3Rfb2ZfcmVjb3JkX3R5cGVfY29tcGlsYXRpb24pOiBMaWtld2lzZS4KCShjb252ZXJ0KSA8Q09OU1RSVUNUT1I+OiBOZXcgY2FzZS4gIEJ1aWxkIGEgbmV3IGNvbnN0cnVjdG9yIGlmCgl0eXBlcyBhcmUgZXF1aXZhbGVudCBhcnJheSB0eXBlcy4KCShjcmVhdGVfZmllbGRfZGVjbCk6IENsYWltIGZpZWxkcyBvZiBhbnkgQVJSQVlfVFlQRSBhcmUgYWRkcmVzc2FibGUsCglldmVuIGlmIHRoZSB0eXBlIGlzIG5vdCBwYXNzZWQgYnkgcmVmZXJlbmNlLgoJKHN0YXRpY19jdG9ycywgc3RhdGljX2R0b3JzKTogRGVsZXRlLgoJKGVuZF9zdWJwcm9nX2JvZHkpOiBEbyBub3QgcmVjb3JkIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuCgkoYnVpbGRfZ2xvYmFsX2NkdG9yKTogRGVsZXRlLgoJKGduYXRfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IERvIG5vdCBjYWxsIGJ1aWxkX2dsb2JhbF9jZHRvci4KCgkqIGxhbmctc3BBUkdFVF9WWFdPUktTX1JUUCBpcyBkZWZpbmVkLCBhcHBlbmQgLW1ydHAgd2hlbgoJLWZSVFM9cnRwIGlzIHNwZWNpZmllZC4KCUlmIENPTkZJR19EVUFMX0VYQ0VQVElPTlMgaXMgMSwgYXBwZW5kIC1mc2psaiB3aGVuIC1mUlRTPXNqbGogaXMKCXNwZWNpZmllZC4KCgkqIG1pc2MuYyAoZ25hdF9pbml0X2djY19laCk6IFVzZSBfX2duYXRfZWhfcGVyc29uYWxpdHlfc2ogZm9yIHRoZSBuYW1lCglvZiB0aGUgcGVyc29uYWxpdHkgZnVuY3Rpb24gd2l0aCBTSkxKIGV4Y2VwdGlvbnMuCgogICAgICAgICogcmFpc2UtZ2NjLmMgKFBFUlNPTkFMSVRZX0ZVTkNUSU9OKTogVXNlIF9fZ25hdF9laF9wZXJzb25hbGl0eV9zaiBmb3IKCXRoZSBuYW1lIG9mIHRoZSBwZXJzb25hbGl0eSBmdW5jdGlvbiB3aXRoIFNKTEogZXhjZXB0aW9ucy4KCjIwMDctMDgtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHBhci5hZHMsIHBhci5hZGI6IEltcHJvdmUgaGFuZGxpbmcgb2YgZXh0cmEgcmlnaHQgcGFyZW5zLgoJKFBhcik6IFJlbW92ZSBmbGFnIEZyb21fTGltaXRlZF9XaXRoX0NsYXVzZS4KCgkqIHBhci11dGlsLmFkYiwgcGFyLWNoMy5hZGI6IEltcHJvdmUgZXJyb3IgcmVjb3ZlcnkgZm9yIGJhZCBjb25zdHJhaW50CglJbXByb3ZlIGhhbmRsaW5nIG9mIGV4dHJhIHJpZ2h0IHBhcmVucy4KCjIwMDctMDgtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLXRjaGsuYWRiIChURl9TZW1pY29sb24pOiBJbXByb3ZlIGVycm9yIHJlY292ZXJ5CgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fYXR0ci5hZHMsIHNlbV9hdHRyLmFkYiAoQW5hbHl6ZV9BdHRyaWJ1dGUsIGNhc2UgVmFsdWUpOiBGb3IKCWVudW1lcmF0aW9uIHR5cGUsIG1hcmsgYWxsIGxpdGVyYWxzIGFzIHJlZmVyZW5jZWQuCgkoRXZhbF9BdHRyaWJ1dGUsIGNhc2UgJ0ltYWdlKTogSWYgdGhlIGFyZ3VtZW50IGlzIGFuIGVudW1lcmF0aW9uCglsaXRlcmFsIGFuZCBuYW1lcyBhcmUgYXZhaWxhYmxlLCBjb25zdGFudC1mb2xkIGJ1dCBtYXJrIG5ldmVydGhlbGVzcyBhcwoJbm9uLXN0YXRpYy4KCUNsZWFuIHVwIGZ1bmN0aW9uIG5hbWVzLgoJKE5hbWVfTW9kaWZpZXNfUHJlZml4KTogUmVuYW1lIHRvIE5hbWVfSW1wbGllc19MdmFsdWVfUHJlZml4LiBDbGFyaWZ5Cgljb21tZW50LgoJKFJlcXVpcmVzX1NpbXBsZV9OYW1lX1ByZWZpeCk6IFJlbW92ZWQuCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMS5hZGI6IEltcHJvdmVkIHdhcm5pbmdzIGZvciB1bnVzZWQgdmFyaWFibGVzCgoJKiBzZW1fY2gzLmFkcywgc2VtX2NoMy5hZGIgKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBJZiB0aGUgYW5jZXN0b3IKCWlzIGEgc3luY2hyb25pemVkIGludGVyZmFjZSwgdGhlIGRlcml2ZWQgdHlwZSBpcyBsaW1pdGVkLgoJKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogTWFyayB0aGUgcG90ZW50aWFsIGNvZXh0ZW5zaW9ucyBpbiB0aGUKCWRlZmluaXRpb24gYW5kIGV4cHJlc3Npb24gb2YgYW4gb2JqZWN0IGRlY2xhcmF0aW9uIG5vZGUuCgkoQnVpbGRfRGVyaXZlZF9UeXBlKTogRm9yIHRoZSBjb21wbGV0aW9uIG9mIGEgcHJpdmF0ZSB0eXBlIGRlY2xhcmF0aW9uCgl3aXRoIGEgZGVyaXZlZCB0eXBlIGRlY2xhcmF0aW9uLCBjaGFpbiB0aGUgcGFyZW50IHR5cGUncyByZXByZXNlbnRhdGlvbgoJaXRlbXMgdG8gdGhlIGxhc3QgcmVwcmVzZW50YXRpb24gaXRlbSBvZiB0aGUgZGVyaXZlZCB0eXBlIChub3QgdGhlCglmaXJzdCBvbmUpIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50IGFscmVhZHkuCgkoQW5hbHl6ZV9PYmplY3RfRGVjbGFyYXRpb24sIENvbnN0YW50X1JlZGVjbGFyYXRpb24pOiBBbGxvdyBpbmNvbXBsZXRlCglvYmplY3QgZGVjbGFyYXRpb24gb2YgZm9yd2FyZCByZWZlcmVuY2VzIHRvIHRhZ3MuCgkoQWNjZXNzX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBJbiBBZGEyMDA1LCBhbm9ueW1vdXMgYWNjZXNzIHRvCglzdWJwcm9ncmFtIHR5cGVzIGNhbiBhcHBlYXIgYXMgYWNjZXNzIGRpc2NyaW1pbmFudHMgb2Ygc3luY2hyb25pemVkCgl0eXBlcy4KCShPS19Gb3JfTGltaXRlZF9Jbml0X0luXzA1KTogVGhlIGluaXRpYWxpemF0aW9uIGlzIGxlZ2FsIGlzIGl0IGlzIGEgY2FsbAoJZ2l2ZW4gaW4gcHJlZml4ZWQgZm9ybSBhcyBhIHNlbGVjdGVkIGNvbXBvbmVudC4KCShQcm9jZXNzX0Rpc2NyaW1pbmFudHMpOiBJZiBub3QgYWxsIGRpc2NyaW1pbmFudHMgaGF2ZSBkZWZhdWx0cywgcGxhY2UKCWVycm9yIG1lc3NhZ2Ugb24gYSBkZWZhdWx0IHRoYXQgaXMgcHJlc2VudC4KCShBbmFseXplX1ByaXZhdGVfRXh0ZW5zaW9uX0RlY2xhcmF0aW9uKTogRGlhZ25vc2UgcHJvcGVybHkgYW4gYXR0ZW1wdCB0bwoJZXh0ZW5kIGEgc3luY2hyb25pemVkIHRhZ2dlZCB0eXBlLgoJSW1wcm92ZWQgd2FybmluZ3MgZm9yIHVudXNlZCB2YXJpYWJsZXMKCShJc19WaXNpYmxlX0NvbXBvbmVudCk6IEZpeCBhIHZpc2liaWxpdHkgaG9sZSBvbiBhIGNvbXBvbmVudCBpbmhlcml0ZWQKCWJ5IGEgcHJpdmF0ZSBleHRlbnNpb24gd2hlbiBwYXJlbnQgaXMgaXRzZWxmIGRlY2xhcmVkIGFzIGEgcHJpdmF0ZQoJZXh0ZW5zaW9uLCBhbmQgdGhlIGRlcml2YXRpb24gaXMgaW4gYSBjaGlsZCB1bml0LgoJKEZpbmRfSGlkZGVuX0ludGVyZmFjZSk6IE1vdmUgc3BlYyBmcm9tIHRoZSBwYWNrYWdlIGJvZHkuCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g1LmFkYjogSW1wcm92ZSB3YXJuaW5ncyBvbiByZWR1bmRhbnQgYXNzaWdubWVudHMKCgkqIHNlbV91dGlsLmFkcywgc2VtX3V0aWwuYWRiOiAoSXNfVmFyaWFibGUpOiBBZGQgZGVmZW5zZSBhZ2FpbnN0IGp1bmsKCXBhcmFtZXRlcgoJKElzX1N5bmNocm9uaXplZF9UYWdnZWRfVHlwZSk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgcmV0dXJucyB0cnVlCglpbiBjYXNlIG9mIHN5bmNocm9uaXplZCB0YWdnZWQgdHlwZXMgKEFBUk0gMy45LjQgKDYvMikpLgoJKFNhZmVfVG9fQ2FwdHVyZV9WYWx1ZSk6IENhbiBub3cgcmV0dXJuIFRydWUgZm9yIGNvbnN0YW50cywgZXZlbiBpZiBDb25kCglpcyBzZXQgdG8gRmFsc2UuIEltcHJvdmVzIGhhbmRsaW5nIG9mIEtub3duX1tOb3RfXU51bGwuCgkoV3JvbmdfVHlwZSk6IFNwZWNpYWwgY2FzZSBhZGRyZXNzIGFyaXRobWV0aWMgYXR0ZW1wdAoJKENvbGxlY3RfQWJzdHJhY3RfSW50ZXJmYWNlcyk6IEFkZCBuZXcgZm9ybWFsIHRvIGFsbG93IGNvbGxlY3RpbmcKCWFic3RyYWN0IGludGVyZmFjZXMganVzdCB1c2luZyB0aGUgcGFydGlhbCB2aWV3IG9mIHByaXZhdGUgdHlwZXMuCgkoSGFzX0Fic3RyYWN0X0ludGVyZmFjZXMpOiBBZGQgbmV3IGZvcm1hbCB0byBhbGxvdyBjaGVja2luZyB0eXBlcwoJY292ZXJpbmcgaW50ZXJmYWNlcyB1c2luZyB0aGUgcGFydGlhbCB2aWV3IG9mIHByaXZhdGUgdHlwZXMuCgkoSXNfRnVsbHlfSW5pdGlhbGl6ZWRfVHlwZSk6IFNwZWNpYWwgVk0gY2FzZSBmb3IgdVRhZyBjb21wb25lbnQuIFRoaXMKCWNvbXBvbmVudCBzdGlsbCBuZWVkcyB0byBiZSBkZWZpbmVkIGluIHRoaXMgY2FzZSwgYnV0IGlzIG5ldmVyCglpbml0aWFsaXplZCBhcyBWTXMgYXJlIHVzaW5nIG90aGVyIGRpc3BhdGNoaW5nIG1lY2hhbmlzbXMuCgkoQWJzdHJhY3RfSW50ZXJmYWNlX0xpc3QpOiBGb3IgYSBwcm90ZWN0ZWQgdHlwZSwgdXNlIGJhc2UgdHlwZSB0byBnZXQKCXByb3BlciBkZWNsYXJhdGlvbi4KCUltcHJvdmUgd2FybmluZ3Mgb24gcmVkdW5kYW50IGFzc2lnbm1lbnRzCgkoSXNfVmFyaWFibGUpOiBIYW5kbGUgcHJvcGVybHkgYW4gaW1wbGljaXQgZGVyZWZlcmVuY2Ugb2YgYSBwcmVmaXhlZAoJZnVuY3Rpb24gY2FsbC4KCShCdWlsZF9BY3R1YWxfU3VidHlwZSk6IElmIHRoaXMgaXMgYW4gYWN0dWFsIHN1YnR5cGUgZm9yIGFuCgl1bmNvbnN0cmFpbmVkIGZvcm1hbCBwYXJhbWV0ZXIsIHVzZSB0aGUgc2xvYyBvZiB0aGUgYm9keSBmb3IgdGhlIG5ldwoJZGVjbGFyYXRpb24sIHRvIHByZXZlbnQgYW5vbWFsaXNlcyBpbiB0aGUgZGVidWdnZXIuCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9lbGltLmFkYiAoU2V0X0VsaW1pbmF0ZWQpOiBJZ25vcmUgcHJhZ21hIEVsaW1pbmF0ZSBmb3IKCWRpc3BhdGNoaW5nIG9wZXJhdGlvbgoKMjAwNy0wOC0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkcywgCglleHBfYWdnci5hZGIgKENvbnZlcnRfQWdncl9Jbl9BbGxvY2F0b3IpOiBVc2UgSW5zZXJ0X0FjdGlvbnMgdG8gcGxhY2UKCWV4cGFuZGVkIGFnZ3JlZ2F0ZSBjb2RlIGJlZm9yZSBhbGxvY2F0b3IsIGFuZCBhaGVhZCBvZiBkZWNsYXJhdGlvbiBmb3IKCXRlbXBvcmFyeSwgdG8gcHJldmVudCBhY2Nlc3MgYmVmb3JlIGVsYWJvcmF0aW9uIHdoZW4gdGhlIGFsbG9jYXRvciBpcwoJYW4gYWN0dWFsIGZvciBhbiBhY2Nlc3MgcGFyYW1ldGVyLgoJKElzX1N0YXRpY19EaXNwYXRjaF9UYWJsZV9BZ2dyZWdhdGUpOiBIYW5kbGUgYWdncmVnYXRlcyBpbml0aWFsaXppbmcKCXRoZSBUU0QgYW5kIHRoZSB0YWJsZSBvZiBpbnRlcmZhY2VzLgoJKENvbnZlcnRfVG9fQXNzaWdubWVudHMpOiBBdWdtZW50IHRoZSB0ZXN0IGZvciBkZWxheWluZyBhZ2dyZWdhdGUKCWV4cGFuc2lvbiBmb3IgbGltaXRlZCByZXR1cm4gc3RhdGVtZW50cyB0byBpbmNsdWRlIHRoZSBjYXNlIG9mIGV4dGVuZGVkCglyZXR1cm5zLCB0byBwcmV2ZW50IGNyZWF0aW9uIG9mIGFuIHVud2FudGVkIHRyYW5zaWVudCBzY29wZS4KCShJc19TdGF0aWNfRGlzcGF0Y2hfVGFibGVfQWdncmVnYXRlKTogTmV3IHN1YnByb2dyYW0uCgkoRXhwYW5kX0FycmF5X0FnZ3JlZ2F0ZSk6IEhhbmRsZSBhZ2dyZWdhdGVzIGFzc29jaWF0ZWQgd2l0aAoJc3RhdGljYWxseSBhbGxvY2F0ZWQgZGlzcGF0Y2ggdGFibGVzLgoJKEV4cGFuZF9SZWNvcmRfQWdncmVnYXRlKTogSGFuZGxlIGFnZ3JlZ2F0ZXMgYXNzb2NpYXRlZCB3aXRoCglzdGF0aWNhbGx5IGFsbG9jYXRlZCBkaXNwYXRjaCB0YWJsZXMuCgkoR2VuX0N0cmxfQWN0aW9uc19Gb3JfQWdncik6IEdlbmVyYXRlIGEgZmluYWxpemF0aW9uIGxpc3QgZm9yIGFsbG9jYXRvcnMKCW9mIGFub255bW91cyBhY2Nlc3MgdHlwZS4KCjIwMDctMDgtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfQXNzaWduX0FycmF5KTogSWYgc291cmNlIG9yIHRhcmdldCBvZiBhc3NpZ25tZW50CglpcyBhIHZhcmlhYmxlIHRoYXQgcmVuYW1lcyBhIHNsaWNlLCB1c2UgdGhlIHZhcmlhYmxlIGl0c2VsZiBpbiB0aGUKCWV4cGFubnNpb24gd2hlbiB0aGUgcmVuYW1lZCBleHByZXNzaW9uIGl0c2VsZiBtYXkgYmUgbW9kaWZpZWQgYmV0d2VlbgoJdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSByZW5hbWluZyBhbmQgdGhlIGFycmF5IGFzc2lnbm1lbnQuCgoyMDA3LTA4LTE0ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvcC1seW54b3MuYWRiLCBzLXRhcHJvcC10cnU2NC5hZGIsIHMtdGFwcm9wLWlyaXguYWRiLCAKCXMtdGFwcm9wLWhwdXgtZGNlLmFkYiwgcy10YXByb3AtZHVtbXkuYWRiLCBzLXRhcHJvcC1zb2xhcmlzLmFkYiwgCglzLXRhcHJvcC12bXMuYWRiLCBzLXRhcHJvcC1wb3NpeC5hZGIgKENvbnRpbnVlX1Rhc2ssIFN0b3BfQWxsX1Rhc2tzKToKCU5ldyBmdW5jdGlvbnM7IGR1bW15IGltcGxlbWVudGF0aW9ucy4KCgkqIHMtb3NpbnRlLXZ4d29ya3MuYWRzIChUYXNrX1N0b3AsIFRhc2tfQ29udCwgSW50X0xvY2ssIEludF9VbmxvY2spOiBOZXcKCWZ1bmN0aW9ucywgdXNlZCB0byBpbXBsZW1lbnQgdGhlIG11bHRpLXRhc2tzIG1vZGUgcm91dGluZXMgb24gVnhXb3Jrcy4KCgkqIHMtb3NpbnRlLXZ4d29ya3MuYWRiLCBzLW9zaW50ZS12eHdvcmtzNi5hZGIgKFRhc2tfQ29udCwgVGFza19TdG9wKToKCU5ldyBmdW5jdGlvbnMsIHRoaW4KCWJpbmRpbmcgdG8gdGhlIFZ4V29ya3Mgcm91dGluZXMgd2hpY2ggaGF2ZSBjaGFuZ2VkIGJldHdlZW4gVnhXb3JrcyA1CglhbmQgNi4KCShJbnRfTG9jaywgSW50X1VubG9jayk6IE5ldyBmdW5jdGlvbiwgdGhpbiBiaW5kaW5nIHRvIGtlcm5lbCByb3V0aW5lcwoJd2hpY2ggYXJlIG5vdCBjYWxsYWJsZSBmcm9tIGEgUlRQLgoKCSogcy10YXByb3Atdnh3b3Jrcy5hZGIgKFN0b3BfQWxsX1Rhc2tzLCBDb250aW51ZV9UYXNrKTogTmV3IGZ1bmN0aW9ucywKCWltcGxlbWVudGVkIGZvciB0aGUgbXVsdGktdGFza3MgbW9kZSBvbiBWeFdvcmtzIDUgYW5kIDYuCgoJKiBzLXRhcHJvcC5hZHMgKFN0b3BfQWxsX1Rhc2tzLCBDb250aW51ZV9UYXNrKTogTmV3IGZ1bmN0aW9ucy4KCgkqIHMtdGFzZGViLmFkcywgcy10YXNkZWIuYWRiIChDb250aW51ZV9BbGxfVGFza3MsIFN0b3BfQWxsX1Rhc2tzKTogTmV3CglmdW5jdGlvbnMuCgoyMDA3LTA4LTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGNsZWFuLmFkYiwgZm1hcC5hZGIsIHNpbnB1dC1wLmFkYiwgc2lucHV0LXAuYWRzLCBnbmF0Y21kLmFkYiwgCglnbmF0bmFtZS5hZGIsIG1ha2V1dGwuYWRzLCBtYWtldXRsLmFkYiwgbWFrZWdwci5hZGIsIG1saWItdGd0LXZtcy5hZGIKCW1saWItdGd0LWRhcndpbi5hZGIsIG1saWItdGd0LWx5bnhvcy5hZGIsIG1saWItcHJqLmFkYiwgbWxpYi10Z3QuYWRiLCAKCW1saWItdGd0LmFkcywgbWxpYi10Z3QtaXJpeC5hZGIgbWxpYi10Z3QtaHB1eC5hZGIsIG1saWItdGd0LWxpbnV4LmFkYiwgCgltbGliLXRndC1zb2xhcmlzLmFkYiwgbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwgbWxpYi10Z3Qtdm1zLWlhNjQuYWRiLCAKCW1saWItdGd0LW1pbmd3LmFkYiwgbWxpYi10Z3Qtdnh3b3Jrcy5hZGIsIG1saWItdGd0LWFpeC5hZGIsCgltbGliLXRndC10cnU2NC5hZGIsIG1saWIuYWRzLCBtbGliLmFkYiAoQ3JlYXRlX1N5bV9MaW5rcyk6IE5ldwoJcHJvY2VkdXJlLgoJKE1ham9yX0lkX05hbWUpOiBOZXcgZnVuY3Rpb24uCgltbGliLXRndC5hZHMvbWxpYi50Z3QuYWRiOgoJKExpYnJhcnlfTWFqb3JfTWlub3JfSWRfU3VwcG9ydGVkKTogTmV3IGZ1bmN0aW9uLCBkZWZhdWx0IHJldHVybnMgVHJ1ZQoJTW9zdCBtbGliLXRndC0qLmFkYiB0aGF0IHN1cHBvcnQgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3ltYm9saWMgbGlua3M6CgkoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogQWRkIHN1cHBvcnQgZm9yIG1ham9yL21pbm9yIGlkcyBmb3Igc2hhcmVkIGxpYnMKCU90aGVyIG1saWItdGd0LSouYWRiIChhaXgsIG1pbmd3LCB2bXMsIHZ4d29ya3MsIHhpKToKCUltcGxlbWVudGF0aW9uIG9mIExpYnJhcnlfTWFqb3JfTWlub3JfSWRfU3VwcG9ydGVkIHJldHVybnMgRmFsc2UKCWNsZWFuLmFkYjoKCShDbGVhbl9MaWJyYXJ5X0RpcmVjdG9yeSk6IElmIG1ham9yL21pbm9yIGlkcyBhcmUgc3VwcG9ydGVkLCBjbGVhbiBhbGwKCWxpYnJhcnkgZmlsZXMuCglNYWpvciB1cGRhdGUgb2YgdGhlIFByb2plY3QgTWFuYWdlciBhbmQgb2YgdGhlIHByb2plY3QgYXdhcmUgdG9vbHMsCglpbmNsdWRpbmcgZ3BybWFrZSwgc28gdGhhdCB0aGUgc2FtZSBzb3VyY2VzIGluIHRoZSBHTkFUIHJlcG9zaXRvcnkKCWNhbiBiZSB1c2VkIGJ5IGdwcmJ1aWxkLgoKMjAwNy0wOC0xNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIHN5c3RlbS1zb2xhcmlzLXg4Ni5hZHMgKFpDWF9CeV9EZWZhdWx0KTogU3dpdGNoIHRvIFRydWUuCgkoR0NDX1pDWF9TdXBwb3J0KTogU3dpdGNoIHRvIFRydWUuCgkKCSogcy1pbnRtYW4tc29sYXJpcy5hZGIgKE5vdGlmeV9FeGNlcHRpb24pOiBDYWxsCglBZGp1c3RfQ29udGV4dF9Gb3JfUmFpc2UgYmVmb3JlIHJhaXNpbmcsIGFzIGV4cGVjdGVkIGZvciBzaWduYWwKCWhhbmRsZXJzIGluIGdlbmVyYWwuCgkKCSogcy1pbnRtYW4tcG9zaXguYWRiIChOb3RpZnlfRXhjZXB0aW9uKTogUmVtb3ZlIGRlY2xhcmF0aW9uIG9mCglBZGp1c3RfQ29udGV4dF9Gb3JfUmFpc2UsIG1vdmVkIHRvIHRoZSBzcGVjIG9mIHRoaXMgdW5pdCB0byBiZSB2aXNpYmxlCgl0byBvdGhlciBpbXBsZW1lbnRhdGlvbiBib2RpZXMuCgkKCSogcy1pbnRtYW4uYWRzIChBZGp1c3RfQ29udGV4dF9Gb3JfUmFpc2UpOiBEZWNsYXJlIGFuZCBpbXBvcnQgaGVyZSwgdG8KCWJlIHZpc2libGUgYnkgbXVsdGlwbGUgaW1wbGVtZW50YXRpb24gYm9kaWVzLgoJCgkqIGluaXQuYyBbVk1TIHNlY3Rpb25dIChfX2duYXRfaGFuZGxlX3Ztc19jb25kaXRpb24pOiBBZGp1c3QgY29udGV4dAoJb25seSBmb3IgY29uZGl0aW9ucyBjb21pbmcgZnJvbSBoYXJkd2FyZS4KCVthbHBoYS10cnU2NCBzZWN0aW9uXSAoX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSk6IEltcGxlbWVudCwKCWFkanVzdG1lbnRzIHRvIHNpZ25hbCBjb250ZXh0IHByaW9yIHRvIGV4Y2VwdGlvbiByYWlzZSBmcm9tIHNpZ25hbAoJaGFuZGxlci4KCShfX2duYXRfbWFwX3NpZ25hbCBmb3IgVnhXb3Jrcyk6IE1hcCBTSUdTRUdWIHRvIFN0b3JhZ2VfRXJyb3IgaW4gUlRQCgltb2RlLgoJU29sYXJpcyBzZWN0aW9uOiAoX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSk6IE5ldyBmdW5jdGlvbi4KCUltcGxlbWVudGF0aW9uIG9mIHRoZSBtYWNoaW5lIGNvbnRleHQgYWRqdXN0bWVudHMgdG8gcGVyZm9ybSBwcmlvciB0bwoJcmFpc2UgZnJvbSBhIHNpZ25hbCBoYW5kbGVyLiBWZXJzaW9uIGZvciBib3RoIHNwYXJjIGFuZCB4ODYuCgkoSEFWRV9HTkFUX0FESlVTVF9DT05URVhUX0ZPUl9SQUlTRSk6IERlZmluZS4KCShfX2duYXRfZXJyb3JfaGFuZGxlcik6IEV4cGVjdCBhIHRoaXJkIGFyZ3VtZW50LCB1Y29udGV4dF90ICouIEFkanVzdCBpdAoJcHJpb3IgdG8gcmFpc2luZyBhcyBleHBlY3RlZCBmb3IgYW55IGhhbmRsZXIsIGJlZm9yZSBwb3NzaWJsZSBuZXN0ZWQKCWZhdWx0cyB0byBtYWtlIHN1cmUgYWxsIHRoZSBjb250ZXh0cyBpbiBhIGNoYWluIGhhdmUgYmVlbiBhZGp1c3RlZCBieQoJdGhlIHRpbWUgd2UgcHJvcGFnYXRlLgoKMjAwNy0wOC0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogcy1vc2ludGUtbWluZ3cuYWRzOiBBZGQgc3VwcG9ydCBmb3IgQWRhLkV4ZWN1dGlvbl9UaW1lIG9uIFdpbmRvd3MuCgkoU1lTVEVNX0lORk8pOiBOZXcgcmVjb3JkLgoJKFNldFRocmVhZElkZWFsUHJvY2Vzc29yKTogTmV3IGltcG9ydGVkIHJvdXRpbmUgbmVlZGVkIGZvciBzdXBwb3J0aW5nCgl0YXNrX2luZm8gcHJhZ21hIG9uIFdpbmRvd3MuCgoJKiBzLXRhcHJvcC1taW5ndy5hZGIgKEVudGVyX1Rhc2spOiBDaGVjayBpZiBDUFUgbnVtYmVyIGdpdmVuIGluIHRhc2sKCWluZm8gY2FuIGJlIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgaG9zdC4KCShDcmVhdGVfVGFzayk6IFNldCB0aGUgaWRlYWwgcHJvY2Vzc29yIGlmIGluZm9ybWF0aW9uIGlzIHByZXNlbnQuCgoJKiBzLXRhc2luZi1taW5ndy5hZGIsIHMtdGFzaW5mLW1pbmd3LmFkcywKCWEtZXhldGltLW1pbmd3LmFkYiwgYS1leGV0aW0tbWluZ3cuYWRzOiBOZXcgZmlsZXMuCgoyMDA3LTA4LTE0ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogcy10YXByb3AtbGludXguYWRiIChHZXRfU3RhY2tfQXR0cmlidXRlcyk6IE5ldyBzdWJwcm9ncmFtLiBGZXRjaCB0aGUKCXN0YWNrIHNpemUgYW5kIGluaXRpYWwgc3RhY2sgcG9pbnRlciB2YWx1ZSBmb3IgYSBnaXZlbiB0YXNrLgoJKEVudGVyX1Rhc2spOiBHZXQgdGhlIHN0YWNrIGF0dHJpYnV0ZXMgb2YgdGhlIHRhc2sgd2UgYXJlIGVudGVyaW5nIGFuZAoJbGV0IHRoZSBzdGFjayBjaGVja2luZyBlbmdpbmUga25vdyBhYm91dCB0aGVtLgoKCSogcy1zdGNob3AuYWRiLCBzLXN0Y2hvcC5hZHMgKE5vdGlmeV9TdGFja19BdHRyaWJ1dGVzKTogTmV3IHN1YnByb2dyYW0uCglMZXQgdGhlIHN0YWNrLWNoZWNraW5nIGVuZ2luZSBrbm93IGFib3V0IHRoZSBpbml0aWFsIHNwIHZhbHVlIGFuZCBzdGFjawoJc2l6ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdGFzay4KCShTZXRfU3RhY2tfSW5mbyk6IElmIGEgc3RhY2sgYmFzZSBoYXMgYmVlbiBub3RpZmllZCBmb3IgdGhlIGN1cnJlbnQKCXRhc2ssIGhvbm9yIGl0LiBGYWxsYmFjayB0byB0aGUgcHJldmlvdXMgbGVzcyBhY2N1cmF0ZSBtZXRob2Qgb3RoZXJ3aXNlLgoKCSogcy1zdGNob3Atdnh3b3Jrcy5hZGIgKE5vdGlmeV9TdGFja19BdHRyaWJ1dGVzKTogRHVtbXkgYm9keS4KCjIwMDctMDgtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEwLmFkYjogQ3JlYXRlIGEgbGltaXRlZCB2aWV3IG9mIGFuIGluY29tcGxldGUgdHlwZSwgdG8gbWFrZQoJdHJlYXRtZW50IG9mIGxpbWl0ZWQgdmlld3MgdW5pZm9ybSBmb3IgYWxsIHZpc2libGUgZGVjbGFyYXRpb25zIGluIGEKCWxpbWl0ZWRfd2l0aGVkIHBhY2thZ2UuCglTZXQgZmxhZyBpbmRpY2F0aW5nIHRoYXQgYSBzdWJwcm9ncmFtIGJvZHkgZm9yIGEgY2hpbGQgdW5pdCBoYXMgYQoJZ2VuZXJhdGVkIHNwZWMuCgkoQW5hbHl6ZV9Db21waWxhdGlvbl9Vbml0KTogSWYgdW5pdCBpcyBhIHN1YnByb2dyYW0gYm9keSB0aGF0IGhhcyBubwoJc2VwYXJhdGUgZGVjbGFyYXRpb24sIHJlbW92ZSB0aGUgdW5pdCBuYW1lIGZyb20gdmlzaWJpbGl0eSBhZnRlcgoJY29tcGlsYXRpb24sIHNvIHRoYXQgZW52aXJvbm1lbnQgaXMgY2xlYW4gZm9yIHN1YnNlcXVlbnQgY29tcGlsYXRpb25zLgoJKEluc3RhbGxfTGltaXRlZF9Db250ZXh0X0NsYXVzZXMpOiBEbyBub3QgaW5zdGFsbCBhCglsaW1pdGVkX3ByaXZhdGVfd2l0aF9jbGF1c2UgdW5sZXNzIHRoZSBjdXJyZW50IHVuaXQgaXMgYSBib2R5IG9yIGEKCXByaXZhdGUgY2hpbGQgdW5pdC4KCShBbmFseXplX1N1YnVuaXQsIEluc3RhbGxfUGFyZW50cyk6IFRyZWF0IGdlbmVyaWMgYW5kIG5vbi1nZW5lcmljIHVuaXRzCglpbiB0aGUgc2FtZSBmYXNoaW9uLgoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IERvIG5vdCBpbnN0YWxsIGEgbGltaXRlZCB3aXRoIGNsYXVzZSBpZgoJaXQgYXBwbGllcyB0byB0aGUgZGVjbGFyYXRpb24gb2YgdGhlIGN1cnJlbnQgcGFja2FnZSBib2R5LgoJKFJlbW92ZV9Qcml2YXRlX1dpdGhfQ2xhdXNlcyk6IElmIHRoZXJlIGlzIGEgcmVndWxhciB3aXRoX2NsYXVzZSBmb3IKCXRoZSB1bml0LCBkZWxldGUgUHJpdmF0ZV9XaXRoX0NsYXVzZSBmcm9tIGNvbnRleHQsIHRvIHByZXZlbnQgaW1wcm9wZXIKCWhpZGluZyB3aGVuIHByb2Nlc3Npbmcgc3Vic2VxdWVudCBuZXN0ZWQgcGFja2FnZXMgYW5kIGluc3RhbnRpYXRpb25zLgoKMjAwNy0wOC0xNCAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5jIChfX2duYXRfaXNfYWJzb2x1dGVfcGF0aCk6IEZvciBWeFdvcmtzIHN5c3RlbXMgd2UgYWNjZXB0CglkaXIvZmlsZSwgZGV2aWNlOi9kaXIvZmlsZSwgYW5kIGRldmljZTpkcml2ZV9sZXR0ZXI6L2Rpci9maWxlIGFzCglyZXByZXNlbnRpbmcgYWJzb2x1dGUgcGF0aCBuYW1lcy4KCV9fZ25hdF9zZXRfZmlsZV90aW1lX25hbWUgW1ZNU106IEZpeCBzb21lIDY0LzMyIGJpdCBpc3N1ZXMuCgoJKiBjc3RyZWFtcy5jIChfX2duYXRfZnVsbF9uYW1lIGZvciBWeFdvcmtzKTogVXNlCglfX2duYXRfaXNfYWJzb2x1dGVfcGF0aCB0byBkZXRlY3Qgd2hldGhlciB3ZSBuZWVkIHRvIGFkZCB0aGUgY3VycmVudAoJZGlyZWN0b3J5IHRvIG5vcm1hbGl6ZSB0aGUgcGF0aC4KCjIwMDctMDgtMTQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZHMsIAoJYS10YWdzLmFkYiAoRGlzcGxhY2UpOiBBc3NvY2lhdGUgYSBtZXNzYWdlIHdpdGggdGhlIHJhaXNlZCBDRQoJZXhjZXB0aW9uLgoJKFRvX0FkZHJfUHRyLCBUb19BZGRyZXNzLCBUb19EaXNwYXRjaF9UYWJsZV9QdHIsCglUb19PYmplY3RfU3BlY2lmaWNfRGF0YV9QdHIgVG9fUHJlZGVmX1ByaW1zX1B0ciwKCVRvX1RhZ19QdHIsIFRvX1R5cGVfU3BlY2lmaWNfRGF0YV9QdHIpOiBNb3ZlZCBoZXJlIGZyb20gdGhlIHBhY2thZ2UKCXNwZWMuCgkoRGVmYXVsdF9QcmltX09wX0NvdW50KTogUmVtb3ZlZC4KCShJV19NZW1iZXJzaGlwLCBHZXRfRW50cnlfSW5kZXgsIEdldF9PZmZzZXRfSW5kZXgsIEdldF9QcmltX09wX0tpbmQsCglSZWdpc3Rlcl9UYWcsIFNldF9FbnRyeV9JbmRleCwgU2V0X09mZnNldF9Ub19Ub3AsIFNldF9QcmltX09wX0tpbmQpOgoJUmVtb3ZlIHByYWdtYSBJbmxpbmVfQWx3YXlzLgoKCSogcnRzZmluZC5hZHMgKERlZmF1bHRfUHJpbV9PcF9Db3VudCk6IFJlbW92ZWQKCShNYXhfUHJlZGVmX1ByaW1zKTogTmV3IGVudGl0eQoJKFJFX0V4cGFuZGVkX05hbWUpOiBSZW1vdmVkCgkoUkVfSFRfTGluayk6IFJlbW92ZWQKCShSRV9JZmFjZV9UYWcpOiBSZW1tb3ZlZAoJKFJFX0lmYWNlc19UYWJsZSk6IFJlbW92ZWQKCShSRV9JbnRlcmZhY2VzX0FycmF5KTogUmVtb3ZlZAoJKFJFX0ludGVyZmFjZV9EYXRhX0VsZW1lbnQpOiBSZW1vdmVkCgkoUkVfTmJfSWZhY2VzKTogUmVtb3ZlZAoJKFJFX1JDX09mZnNldCk6IFJlbW92ZWQKCShSRV9TdGF0aWNfT2Zmc2V0X1RvX1RvcCk6IFJlbW92ZWQKCgkqIGV4cF9hdGFnLmFkcywgZXhwX2F0YWcuYWRiIChCdWlsZF9Jbmhlcml0X1ByaW1zKTogQWRkaXRpb24gb2YgYSBuZXcKCWZvcm1hbC4KCShCdWlsZF9Jbmhlcml0X1ByZWRlZmluZWRfUHJpbXMpOiBSZXBsYWNlIG9jY3VycmVuY2VzIG9mIERlZmF1bHRfCglQcmltX09wX0NvdW50IGJ5IE1heF9QcmVkZWZfUHJpbXMuCgoyMDA3LTA4LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogYmluZGUuYWRiIChFbGFiX0FsbF9MaW5rcyk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjYWxsIHRvCglHZW5lcmljX1NlcGFyYXRlbHlfQ29tcGlsZWQgKGlmIGEgdW5pdCBzYXRpc2ZpZXMgdGhpcyBwcmVkaWNhdGUsIHRoZXJlCgl3b24ndCBiZSBhbiBhc3NvY2lhdGVkIEFmaWxlKS4KCShFbGFiX0FsbF9MaW5rcyk6IEZhaWwgaWYgYSByZWZlcmVuY2VkIHVuaXQgY2Fubm90IGJlIGZvdW5kCgoJKiBiaW5kZ2VuLmFkYjogCglGaXggY29tbWVudHMgaW4gYmluZGdlbiByZWdhcmRpbmcgY29uc2lzdGVuY3kgY2hlY2tzIGRvbmUgaW4gQmNoZWNrOgoJdGhlIGNoZWNrcyBhcmUgbWFkZSBhY3Jvc3MgdW5pdHMgd2l0aGluIGEgcGFydGl0aW9uLCBub3QgYWNyb3NzIHNldmVyYWwKCXBhcnRpdGlvbnMuCglGaXggZ2VuZXJhdGlvbiBvZiBDIGJpbmRlciBmaWxlIGZvciBWeFdvcmtzLgoKCSogbGliLmFkcywgbGliLmFkYiAoR2VuZXJpY19TZXBhcmF0ZWx5X0NvbXBpbGVkKTogUmVuYW1lIHRvCglHZW5lcmljX01heV9MYWNrX0FMSSwgbW9yZSBkZXNjcmlwdGl2ZSBvZiB0aGUgY3VycmVudCB1c2Ugb2YgdGhlCglwcmVkaWNhdGUsIGFuZCB1cGRhdGUgZG9jdW1lbnRhdGlvbi4KCgkqIGxpYi13cml0LmFkcywgbGliLXdyaXQuYWRiIChXcml0ZV9XaXRoX0xpbmVzKTogTWlub3IgY29kZQoJcmVvcmdhbml6YXRpb24gYW5kIGRvY3VtZW50YXRpb24gdXBkYXRlIGZvciB0aGUgY2FzZSBvZiBwcmVkZWZpbmVkCglsaWJyYXJ5IGdlbmVyaWNzIChmb3Igd2hpY2ggd2UgZG8gbm90IHJlZmVyZW5jZSBhbiBBZmlsZSkuCgoyMDA3LTA4LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtaW50bWFuLWlyaXguYWRiLCBzLW9zaW50ZS1pcml4LmFkYiwgcy1vc2ludGUtaXJpeC5hZHMsCglzLXByb2luZi1pcml4LWF0aHJlYWQuYWRzLCBzLW9zaW50ZS1ocHV4LWRjZS5hZGIsIHMtb3NpbnRlLWhwdXgtZGNlLmFkcywKCXMtcGFyYW1lLWhwdXguYWRzLCBzLWludG1hbi1kdW1teS5hZGIsIHMtdGFzaW5mLXNvbGFyaXMuYWRiLAoJcy10YXNpbmYtc29sYXJpcy5hZHMsIHMtYXN0aGFuLXZtcy1hbHBoYS5hZGIsIHMtaW5tYW9wLXZtcy5hZGIsCglzLWludG1hbi12bXMuYWRiLCBzLWludG1hbi12bXMuYWRzLCBzLW9zcHJpbS1taW5ndy5hZGIsCglzLXBhcmFtZS12bXMtcmVzdHJpY3QuYWRzLCBzLXBhcmFtZS1hZTY1My5hZHMsIHMtaW50bWFuLXZ4d29ya3MuYWRzLAoJcy1pbnRtYW4tdnh3b3Jrcy5hZHMsIHMtaW50bWFuLXZ4d29ya3MuYWRiLCBzLXBhcmFtZS12eHdvcmtzLmFkcywKCXMtdGZzZXRyLXZ4d29ya3MuYWRiLCBzLWludGVyci5hZGIsIHMtaW50ZXJyLmFkcywgYS10YXNhdHQuYWRiLAoJZXhwX2NoMTMuYWRiLCBzLWh0YWJsZS5hZHMsIHMtaW1nYm9vLmFkcywgcy1pbWdsbGkuYWRzLCBzLWltZ2xsdS5hZHMsCglzLWltZ3Vucy5hZHMsIGctZWFjb2R1LmFkYiwgcGFyLWNoMTIuYWRiLCBzLXN0YWNoZS5hZHMsIHMtc3RhdXNhLmFkYiwKCXMtcG9vc2l6LmFkYiwgcy1wYXJhbWUuYWRzLCBzLW1hc3RvcC5hZHMsIHMtb3NpbnRlLWRhcndpbi5hZHMsCglhLWNodGdrZS5hZGIsIHMtYXN0aGFuLXZtcy1hbHBoYS5hZGIsIHMtcGFyYW1lLXZtcy1hbHBoYS5hZHMsCglzLXBhcmFtZS12bXMtaWE2NC5hZHMsIHMtcGFyYW1lLXZ4d29ya3MuYWRiLCBzLWV4Y2VwdC5hZHMsCglnLWFsdGNvbi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCWFkYS10cmVlLmg6IERlbGV0ZSBlbXB0eSBsaW5lLgoKCWFsaS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoJQ2xhcmlmaWNhdGlvbiBvZiBjb21tZW50cy4KCU1pbm9yIHNwZWxsaW5nIGNvcnJlY3Rpb24KCgkqIGV4cF9kYnVnLmFkYjogQWRkIFdhcm5pbmdzIE9mZiB0byBzdXBwcmVzcyBuZXcgd2FybmluZwoKCSogYS13aXRlaW8uYWRiIChXcml0ZSk6IEFkZCBXYXJuaW5ncyAoT2ZmKSBmb3IgdW5uZWVkZWQgSU4gT1VUIG1vZGUKCWZvcm1hbAoKCSogYS1zdHJ1bmIuYWRiIChTZXRfVW5ib3VuZGVkX1N0cmluZyk6IEF2b2lkIG1lbW9yeSBsZWFrIGJ5IGZyZWVpbmcgb2xkCgl2YWx1ZQoKCSogYS10ZXh0aW8uYWRiIChXcml0ZSk6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBJTiBPVVQgbW9kZSBmcm9tCgoJKiBhLXRleHRpby5hZHM6IFJlb3JkZXIgdGhlIHN0YW5kYXJkIGlucHV0L291dHB1dC9lcnJvciBkZWNsYXJhdGlvbnMKCWZvciBjb25zaXN0ZW5jeS4KCgkqIGctZGlyb3BlLmFkYiwgZy1kaXJvcGUuYWRzOiBDaGFuZ2UgRGlyIHRvIG1vZGUgSU4gZm9yIE9wZW4gY2FsbAoKCSogcGFyLWNoMi5hZGI6IFJlY29nbml6ZSBSTSBzcGVjaWFsbHkgaW4gZXJyb3V0CglDaGFuZ2UgJ1InTSB0byBSTSBpbiBhbGwgZXJyb3IgbWVzc2FnZXMKCgkqIHNjbmcuYWRiOiBSZWNvZ25pemUgUk0gc3BlY2lhbGx5IGluIGVycm91dAoKCSogc2VtLmFkcywgc2VtLmFkYiwgZXhwX3N0cm0uYWRiLCBleHBfY2g1LmFkcywgZXhwYW5kZXIuYWRiOiBSZW5hbWUKCU5fUmV0dXJuIG5vZGUgdG8gYmUgTl9TaW1wbGVfUmV0dXJuLCB0byByZWZsZWN0IEFkYSAyMDA1IHRlcm1pbm9sb2d5LgoKCSogcy1kaXJlaW8uYWRiOiBBZGQgbWlzc2luZyByb3V0aW5lIGhlYWRlciBib3guCgoJKiBzZW1fYXR0ci5hZHM6IEFkZCA/Pz8gY29tbWVudHMKCgkqIHNlbV9ldmFsLmFkYjogUmVjb2duaXplIFJNIHNwZWNpYWxseSBpbiBlcnJvdXQKCUNoYW5nZSAnUidNIHRvIFJNIGluIGFsbCBlcnJvciBtZXNzYWdlcwoKCSogc2VtX21hcHMuYWRiLCBzZW1fbWFwcy5hZHM6IFJlbW92ZSBzb21lIHVubmVjZXNzYXJ5IElOIE9VVCBtb2RlcwoKCSogcy10YXNpbmYuYWRzOiBGaXggbWlub3IgY29tbWVudCB0eXBvLgoKCSogYS1jaWhhbWEuYWRiOiBNaW5vciBjb21tZW50IGFkZGl0aW9uCgoJKiBhLXp0ZXhpby5hZGIgKFdyaXRlKTogQWRkIFdhcm5pbmdzIChPZmYpIGZvciB1bm5lZWRlZCBJTiBPVVQgbW9kZQoJZm9ybWFsCgoJKiBzLXRhc2luZi10cnU2NC5hZHM6IEZpeCBtaW5vciBjb21tZW50IHR5cG8uCgoJKiBpdHlwZXMuYWRzOiBDb21tZW50IHVwZGF0ZS4KCgkqIGFsaS11dGlsLmFkYjogUmVtb3ZlIEdlbmVyaWNfU2VwYXJhdGVseV9Db21waWxlZCBndWFyZCwgbm90IG5lZWRlZAoJYW55bW9yZS4KCgkqIGFyZ3YuYzogQWRkZWQgcHJvdGVjdGlvbiBhZ2FpbnN0IG51bGwgZ25hdF9hcmd2IGFuZCBnbmF0X2VudnAuCgoJKiBiY2hlY2suYWRiIChDaGVja19Db25zaXN0ZW5jeSk6IFVzZSBjb3JyZWN0IG1hcmt1cCBjaGFyYWN0ZXIgKHspIGluCgl3YXJuaW5nIG1lc3NhZ2Ugd2hlbiBUb2xlcmF0ZV9Db25zaXN0ZW5jeV9FcnJvcnMgaXMgVHJ1ZS4KCgkqIGNzdGFuZC5hZGIgKENyZWF0ZV9TdGFuZGFyZCk6IERvIG5vdCBjYWxsIEluaXRfU2l6ZV9BbGlnbm1lbnQgZm9yCglBbnlfSWQsIGFzIHRoaXMgc3VicHJvZ3JhbSBpcyBvbmx5IGFwcGxpY2FibGUgdG8gKnR5cGUqIGVudGl0aWVzIChpdAoJc2V0cyBSTV9TaXplKS4gSW5zdGVhZCBpbml0aWFsaXplIGp1c3QgRXNpemUgYW5kIEFsaWdubWVudC4KCjIwMDctMDgtMTQgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIGEtY2loYW1hLmFkcywgYS1jaWRsbGkuYWRzLCBhLWNodGdvcC5hZHMsIGEtY2h0Z29wLmFkYiwgYS1jZGxpbGkuYWRzLCAKCWEtY2loYXNlLmFkYiwgYS1jaWhhc2UuYWRzLCBhLWNvaGFzZS5hZGIsIGEtY29oYXNlLmFkcywgYS1jaW9ybWEuYWRzLCAKCWEtY29vcm1hLmFkcywgYS1jaW9ybXUuYWRzLCBhLWNvb3JtdS5hZHMsIGEtY2lvcnNlLmFkcywgYS1jb2hhbWEuYWRzLCAKCWEtY29oYXRhLmFkcywgYS1jb252ZWMuYWRiLCBhLWNvaW52ZS5hZHMsIGEtY29pbnZlLmFkYiwgYS1jb252ZWMuYWRzLAoJYS1jb29yc2UuYWRzIChOZXh0KTogQXBwbGllZCBwcmFnbWEgSW5saW5lLgoJTWFrZSBhbGwgQ29udGFpbmVycyBwYWNrYWdlcyBSZW1vdGVfVHlwZXMgKHVubGVzcyB0aGV5IGFyZSBhbHJlYWR5CglQdXJlKS4KCShQcmV2aW91cyk6IGFwcGxpZWQgcHJhZ21hIElubGluZQoJKEVsZW1lbnRzX1R5cGUpOiBpcyBub3cgYSByZWNvcmQgaW5zdGVhZCBvZiBhbiBhcnJheQoKMjAwNy0wOC0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHRhYmxlLmFkYiwgZy10YWJsZS5hZGIsIGctZHludGFiLmFkYiAoQXBwZW5kKTogUmVpbXBsZW1lbnQgaW4gdGVybXMKCW9mIFNldF9JdGVtLgoJKFNldF9JdGVtKTogV2hlbiB0aGUgbmV3IGl0ZW0gaXMgYW4gZWxlbWVudCBvZiB0aGUgY3VycmVudGx5IGFsbG9jYXRlZAoJdGFibGUgcGFzc2VkIGJ5IHJlZmVyZW5jZSwgc2F2ZSBhIGNvcHkgb24gdGhlIHN0YWNrIGlmIHdlJ3JlIGdvaW5nCgl0byByZWFsbG9jYXRlLiBBbHNvLCBpbiBUYWJsZS5TZXRfSXRlbSwgbWFrZSBzdXJlIHdlIHRlc3QgdGhlIHByb3BlcgoJdmFyaWFibGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gY2FsbCBTZXRfTGFzdC4KCgkqIHNpbnB1dC1kLmFkYiwgc2lucHV0LWwuYWRiLCBzdHJpbmd0LmFkYiwgc3dpdGNoLW0uYWRiLAoJc3ltYm9scy12bXMuYWRiLCBzeW1ib2xzLXByb2Nlc3Npbmctdm1zLWFscGhhLmFkYiwKCXN5bWJvbHMtcHJvY2Vzc2luZy12bXMtaWE2NC5hZGIsIHNlbV9lbGFiLmFkYiwgcmVwaW5mby5hZGI6IFJlcGxhY2UKCXNvbWUgb2NjdXJyZW5jZXMgb2YgdGhlIHBhdHRlcm4KCSAgIFQuSW5jcmVtZW50X0xhc3Q7CgkgICBULlRhYmxlIChULkxhc3QpIDo9IFZhbHVlOwoJd2l0aCBhIGNsZWFuZXIgY2FsbCB0bwoJICAgVC5BcHBlbmQgKFZhbHVlKTsKCjIwMDctMDgtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEyLmFkcywgc2VtX2NoMTIuYWRiIChJbnN0YW50aWF0ZV9UeXBlKTogSWYgdGhlIGZvcm1hbCBpcyBhCglkZXJpdmVkIHR5cGUgd2l0aCBpbnRlcmZhY2UgcHJvZ2VuaXRvcnMgdXNlIHRoZSBhbmFseXplZCBmb3JtYWwgYXMgdGhlCglwYXJlbnQgb2YgdGhlIGFjdHVhbCwgdG8gY3JlYXRlIHJlbmFtaW5ncyBmb3IgYWxsIHRoZSBpbmhlcml0ZWQKCW9wZXJhdGlvbnMgaW4gRGVyaXZlX1N1YnByb2dyYW1zLgoJKENvbGxlY3RfUHJldmlvdXNfSW5zdGFuY2VzKTogbmV3IHByb2NlZHVyZSB3aXRoaW4gb2YKCUxvYWRfUGFyZW50X09mX0dlbmVyaWMsIHRvIGluc3RhbnRpYXRlIGFsbCBib2RpZXMgaW4gdGhlIGNvbXBpbGF0aW9uCgl1bml0IGJlaW5nIGxvYWRlZCwgdG8gZW5zdXJlIHRoYXQgdGhlIGdlbmVyYXRpb24gb2YgZ2xvYmFsIHN5bWJvbHMgaXMKCWNvbnNpc3RlbnQgaW4gZGlmZmVyZW50IGNvbXBpbGF0aW9uIG1vZGVzLgoJKElzX1RhZ2dlZF9BbmNlc3Rvcik6IE5ldyBmdW5jdGlvbiB0ZXN0aW5nIHRoZSBhbmNlc3RvciByZWxhdGlvbiB0aGF0Cgl0YWtlcyBwcm9nZW5pdG9yIHR5cGVzIGludG8gYWNjb3VudC4KCShWYWxpZGF0ZV9EZXJpdmVkX1R5cGVfSW5zdGFuY2UpOiBFbmZvcmNlIHRoZSBydWxlIG9mIDMuOS4zKDkpIGJ5Cgl0cmF2ZXJzaW5nIG92ZXIgdGhlIHByaW1pdGl2ZXMgb2YgdGhlIGZvcm1hbCBhbmQgYWN0dWFsIHR5cGVzIHRvIGxvY2F0ZQoJYW55IGFic3RyYWN0IHN1YnByb2dyYW1zIG9mIHRoZSBhY3R1YWwgdHlwZSB0aGF0IGNvcnJlc3BvbmQgdG8gYQoJbm9uYWJzdHJhY3Qgc3VicHJvZ3JhbSBvZiB0aGUgZm9ybWFsIHR5cGUncyBhbmNlc3RvciB0eXBlKHMpLCBhbmQgaXNzdWUKCWFuIGVycm9yIGlmIHN1Y2ggaXMgZm91bmQuCgkoQW5hbHl6ZV9QYWNrYWdlX0luc3RhbnRpYXRpb24sIEFuYWx5emVfU3VicHJvZ3JhbV9JbnN0YW50aWF0aW9uLAoJSW5zdGFudGlhdGVfUGFja2FnZV9Cb2R5LCBJbnN0YW50aWF0ZV9TdWJwcm9ncmFtX0JvZHkpOgoJUmVtb3ZlIGJvZ3VzIGd1YXJkIGFyb3VuZCBjYWxscyB0byBJbmhlcml0X0NvbnRleHQuCgkoUmVzZXRfRW50aXR5KTogSWYgdGhlIGVudGl0eSBpcyB0aGUgc2VsZWN0b3Igb2YgYSBzZWxlY3RlZCBjb21wb25lbnQKCXRoYXQgZGVub3RlcyBhIG5hbWVkIG51bWJlciwgcHJvcGFnYXRlIGNvbnN0YW50LWZvbGRpbmcgdG8gdGhlIGdlbmVyaWMKCXRlbXBsYXRlIG9ubHkgaWYgdGhlIG5hbWVkIG51bWJlciBpcyBnbG9iYWwgdG8gdGhlIGdlbmVyaWMgdW5pdC4KCShTZXRfSW5zdGFuY2VfRW52KTogT25seSByZXNldCB0aGUgY29tcGlsYXRpb24gc3dpdGNoZXMgd2hlbiBjb21waWxpbmcKCWEgcHJlZGVmaW5lZCBvciBpbnRlcm5hbCB1bml0LgoKMjAwNy0wOC0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNC5hZGIgKFRyeV9DbGFzc19XaWRlX09wZXJhdGlvbik6IHVzZSBiYXNlIHR5cGUgb2YgZmlyc3QKCXBhcmFtZXRlciB0byBkZXRlcm1pbmUgd2hldGhlciBvcGVyYXRpb24gYXBwbGllcyB0byB0aGUgcHJlZml4LgoJKENvbXBsZXRlX09iamVjdF9PcGVyYXRpb24pOiBJZiBhY3R1YWwgaGFzIGFuIGFjY2VzcyB0eXBlIGFuZAoJY29udHJvbGxpbmcgZm9ybWFsIGlzIG5vdCBhbiBpbl9wYXJhbWV0ZXIsIHJlamVjdCB0aGUgYWN0dWFsIGlmIGl0IGlzCglhbiBhY2Nlc3NfdG9fY29uc3RhbnQgdHlwZS4KCShUcnlfUHJpbWl0aXZlX09wZXJhdGlvbik6IElmIHRoZSB0eXBlIG9mIHRoZSBwcmVmaXggaXMgYSBmb3JtYWwgdGFnZ2VkCgl0eXBlLCB0aGUgY2FuZGlkYXRlIG9wZXJhdGlvbnMgYXJlIGZvdW5kIGluIHRoZSBzY29wZSBvZiBkZWNsYXJhdGlvbiBvZgoJdGhlIHR5cGUsIGJlY2F1c2UgdGhlIHR5cGUgaGFzIG5vIHByaW1pdGl2ZSBzdWJwcm9ncmFtcy4KCShBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IElmIHByZWZpeCBpcyBjbGFzcy13aWRlLCBhbmQgcm9vdCB0eXBlIGlzCglhIHByaXZhdGUgZXh0ZW5zaW9uLCBvbmx5IGV4YW1pbmUgdmlzaWJsZSBjb21wb25lbnRzIGJlZm9yZSB0cnlpbmcgdG8KCWFuYWx5emUgYXMgYSBwcmVmaXhlZCBjYWxsLgoJQ2hhbmdlIEVudGl0eV9MaXN0IHRvIFR5cGVfVG9fVXNlLCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5LgoJKEhhc19GaXhlZF9PcCk6IFVzZSBiYXNlIHR5cGUgd2hlbiBjaGVja2luZyB3aGV0aGVyIHRoZSB0eXBlIG9mIGFuCglvcGVyYXRvciBoYXMgYSB1c2VyLWRlZmluZWQgbXVsdGlwbGljYXRpb24vZGl2aXNpb24KCShDaGVja19Bcml0aG1ldGljX1BhaXIpOiBVc2UgQWRhIDIwMDUgcnVsZXMgdG8gcmVtb3ZlIGFtYmlndWl0aWVzIHdoZW4KCXVzZXItZGVmaW5lZCBvcGVyYXRvcnMgYXJlIGF2YWlsYWJsZSBmb3IgZml4ZWQtcG9pbnQgdHlwZXMuCgoyMDA3LTA4LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jYXQuYWRzLCBzZW1fY2F0LmFkYiAoSGFzX1N0cmVhbV9BdHRyaWJ1dGVfRGVmaW5pdGlvbik6IE5ldwoJZm9ybWFsIEF0X0FueV9QbGFjZSBpbmRpY2F0aW5nLCB3aGVuIFRydWUsIHRoYXQgd2Ugd2FudCB0byB0ZXN0IGZvcgoJYXZhaWxhYmlsaXR5IG9mIHRoZSBzdHJlYW0gYXR0cmlidXRlIGF0IGFueSBwbGFjZSAoYXMgb3Bwb3NlZCB0byB0aGUKCWN1cnJlbnQgdmlzaWJpbGl0eSBjb250ZXh0IG9ubHkpLgoJKE1pc3NpbmdfUmVhZF9Xcml0ZV9BdHRyaWJ1dGVzKTogQSBzdHJlYW0gYXR0cmlidXRlIGlzIG1pc3NpbmcgZm9yIHRoZQoJcHVycG9zZSBvZiBlbmZvcmNpbmcgRS4yLjIoOCkgb25seSBpZiBpdCBpcyBub3QgYXZhaWxhYmxlIGF0IGFueSBwbGFjZS4KCVRha2UgaW50byBhY2NvdW50IHRoZSBBZGEyMDA1IHByYWdtYSBIYXNfUHJlZWxhYm9yYWJsZV9Jbml0aWFsaXphdGlvbgoJd2hlbiBjaGVja2luZyB0aGUgbGVnYWxpdHkgb2YgYW4gZXh0ZW5zaW9uIGFnZ3JlZ2F0ZSBpbiBhIHByZWVsYWJvcmFibGUKCXBhY2thZ2UuIFRyZWF0IHRoZSBsaXRlcmFsIG51bGwgYXMgYSB2YWxpZCBkZWZhdWx0IGV4cHJlc3Npb24gaW4gYQoJY29tcG9uZW50IGRlY2xhcmF0aW9uIGZvciBhIHR5cGUgd2l0aCBwcmVlbGFib3JhYmxlIGluaXRpYWxpemF0aW9uLgoJQSBsaW1pdGVkIGludGVyZmFjZSBpcyBhIGxlZ2FsIHByb2dlbml0b3IgZm9yIHRoZSBkZXNpZ25hdGVkIHR5cGUgb2YgYQoJcmVtb3RlIGFjY2VzcyB0byBjbGFzcy13aWRlIHR5cGUuCgoyMDA3LTA4LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRzLCBzZW1fY2g4LmFkYiAoRmluZF9UeXBlLCBjYXNlIG9mIGEgJ0Jhc2UgYXR0cmlidXRlCglyZWZlcmVuY2UpOiBVc2UgY29ycmVjdCBlbnRpdHkgYXMgZGVub3RlZCBlbnRpdHkgZm9yIHRoZSBzZWxlY3RvciBvZgoJdGhlIHJld3JpdHRlbiBub2RlLgoJKEZpbmRfRGlyZWN0X05hbWUpOiBBZGQgY29tbWVudCBhYm91dCBHZW5lcmF0ZV9SZWZlcmVuY2UgaW5jb3JyZWN0bHkKCXNldHRpbmcgdGhlIFJlZmVyZW5jZWRfQXNfTEhTIGZsYWcgZm9yIGVudGl0aWVzIHRoYXQgYXJlIGltcGxpY2l0bHkKCWRlcmVmZXJlbmNlZC4KCShGaW5kX1R5cGUpOiBJZiB0aGUgdHlwZSBpcyBhbiBpbnRlcm5hbGx5IGdlbmVyYXRlZCBpbmNvbXBsZXRlIHR5cGUsCgltYXJrIHRoZSBmdWxsIHZpZXcgYXMgcmVmZXJlbmNlZCwgdG8gcHJldmVudCBzcHVyaW91cyB3YXJuaW5ncy4KCShGaW5kX1NlbGVjdGVkX0NvbXBvbmVudCwgSGFzX0NvbXBvbmVudHMpOiBIYW5kbGUgcHJvcGVybHkgbm9uLWxpbWl0ZWQKCXZpZXdzIHRoYXQgYXJlIHRoZW1zZWx2ZXMgaW5jb21wbGV0ZSB0eXBlcy4KCUhhbmRsZSBpbnRlcmZhY2VzIHZpc2libGUgdGhyb3VnaCBsaW1pdGVkLXdpdGggY2xhdXNlcy4KCShBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBEaXNhbWJpZ3VhdGUgYW5kIHNldCB0aGUgZW50aXR5IG9mIGEKCXN1YnByb2dyYW0gZ2VuZXJpYyBhY3R1YWwgZm9yIHdoaWNoIHdlIGhhdmUgZ2VuZXJhdGVkIGEgcmVuYW1pbmcuCglXYXJuIHdoZW4gdGhlIHJlbmFtaW5nIGludHJvZHVjZXMgYSBob21vbnltIG9mCgl0aGUgcmVuYW1lZCBlbnRpdHksIGFuZCB0aGUgcmVuYW1lZCBlbnRpdHkgaXMgZGlyZWN0bHkgdmlzaWJsZS4KCjIwMDctMDgtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfQWxsb2NhdG9yKTogUHJvcGFnYXRlIGFueSBjb2V4dGVuc2lvbnMgdGhhdAoJYXBwZWFyIGluIHRoZSBzdWJ0cmVlIHRvIHRoZSBjdXJyZW50IGFsbG9jYXRvciBpZiBpdCBpcyBub3QgYSBzdGF0aWMKCWNvZXh0ZW5zaW9uLgoJKFJlc29sdmVfQWxsb2NhdG9yKTogUGVyZm9ybSBjbGVhbnVwIGlmIHJlc29sdXRpb24gaGFzIGRldGVybWluZWQgdGhhdAoJdGhlIGFsbG9jYXRvciBpcyBub3QgYSBjb2V4dGVuc2lvbi4KCShSZXNvbHZlKTogU2tpcCBhbiBpbnRlcnByZXRhdGlvbiBoaWRkZW4gYnkgYW4gYWJzdHJhY3Qgb3BlcmF0b3Igb25seQoJd2hlbiB0aGUgdHlwZSBvZiB0aGUgaW50ZXJwcmV0YXRpb24gbWF0Y2hlcyB0aGF0IG9mIHRoZSBjb250ZXh0LgoJKFJlc29sdmUpOiBXaGVuIGxvb3BpbmcgdGhyb3VnaCBhbGwgcG9zc2libGUgaW50ZXJwcmV0YXRpb25zIG9mIGEgbm9kZSwKCWRvIG5vdCBjb25zaWRlciB0aG9zZSB0aGF0IGFyZSBoaWRkZW4gYnkgYWJzdHJhY3Qgb3BlcmF0b3JzLgoJKFJlc29sdmVfQWN0dWFscyk6IFdoZW4gdmVyaWZ5aW5nIHRoYXQgYW4gYWNjZXNzIHRvIGNsYXNzLXdpZGUgb2JqZWN0CglpcyBhbiBhY3R1YWwgIGZvciBhIGNvbnRyb2xsaW5nIGZvcm1hbCwgaWdub3JlIGFub255bW91cyBhY2Nlc3MgdG8KCXN1YnByb2dyYW1zIHdob3NlIHJldHVybiB0eXBlIGlzIGFuIGFjY2VzcyB0byBjbGFzc193aWRlIHR5cGUuCgkoUmVzb2x2ZV9TbGljZSk6IElmIHRoZSBwcmVmaXggb2YgdGhlIHNsaWNlIGlzIGEgc2VsZWN0ZWQgY29tcG9uZW50Cgl3aG9zZSB0eXBlIGRlcGVuZHMgb24gZGlzY3JpbWluYW50cywgYnVpbGQgaXRzIGFjdHVhbCBzdWJ0eXBlIGJlZm9yZQoJYXBwbHlpbmcgcmFuZ2UgY2hlY2tzIG9uIHRoZSBib3VuZHMgb2YgdGhlIHNsaWNlLgoJKFZhbGlkX0NvbnZlcnNpb24pOiBJbiBhbiBpbnN0YW5jZSBvciBpbmxpbmVkIGJvZHksIGNvbXBhcmUgcm9vdCB0eXBlcywKCXRvIHByZXZlbnQgYW5vbWFsaWVzIGJldHdlZW4gcHJpdmF0ZSBhbmQgcHVibGljIHZpZXdzLgoJKFJlc29sdmUpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgZm9yIGFtYmlndW91cyBmaXhlZCBtdWx0aXBsaWNhdGlvbgoJZXhwcmVzc2lvbnMgdGhhdCBpbnZvbHZlIHVuaXZlcnNhbF9maXhlZCBtdWx0aXBseWluZyBvcGVyYXRpb25zLgoKMjAwNy0wOC0xNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBleHBfY2g5LmFkYiAoQnVpbGRfUHJvdGVjdGVkX0VudHJ5KTogUHJvcGFnYXRlIHRoZSBvcmlnaW5hbCBzb3VyY2UKCWxvY2F0aW9uIHRvIGFsbG93IHRoZSBjb3JyZWN0IGdlbmVyYXRpb24gb2YgZXJyb3JzIGluIGNhc2Ugb2YKCXJlc3RyaWN0aW9ucyBhcHBsaWVkIHRvIHRoZSBleHBhbmRlZCBjb2RlLgoJKEV4cGFuZF9FbnRyeV9CYXJyaWVyKTogUmVtb3ZlIGFsbCBnZW5lcmF0ZWQgcmVuYW1pbmdzIGZvciBhIGJhcnJpZXIKCWZ1bmN0aW9uIGlmIHRoZSBjb25kaXRpb24gZG9lcyBub3QgcmVmZXJlbmNlIHRoZW0uCgkoRXhwYW5kX0VudHJ5X0JvZHlfRGVjbGFyYXRpb25zKTogTWFyayB0aGUgaW5kZXggY29uc3RhbnQgYXMgaGF2aW5nIGEKCXZhbGlkIHZhbHVlLgoKMjAwNy0wOC0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoUG9seU9SQl9TdXBwb3J0LkJ1aWxkX1R5cGVDb2RlX0Z1bmN0aW9uKTogV2hlbiBjcmVhdGluZwoJdHlwZWNvZGUgcGFyYW1ldGVycyBmb3IgYSB1bmlvbiAoaW4gYSB2YXJpYW50IHJlY29yZCksIHJlbW92ZQoJZXh0cmFuZW91cyBsYXllciBvZiBBbnkgd3JhcHBpbmcgZm9yIG1lbWJlciBsYWJlbC4KCShFeHBhbmRfUmVjZWl2aW5nX1N0dWJzX0JvZGllcyk6IEZvciBhbiBSQ0kgcGFja2FnZSBib2R5IHRoYXQgaGFzCgllbGFicmF0aW9uIHN0YXRlbWVudHMsIHJlZ2lzdGVyIHRoZSBwYWNrYWdlIHdpdGggdGhlIG5hbWUgc2VydmVyCglhdCB0aGUgYmVnaW5uaW5nLCBub3QgYXQgdGhlIGVuZCwgb2YgdGhlIGVsYWJvcmF0aW9uIHN0YXRlbWVudHMgc28KCXRoYXQgdGhleSBjYW4gY3JlYXRlIHJlbW90ZSBhY2Nlc3MgdG8gc3VicHJvZ3JhbSB2YWx1ZXMgdGhhdCBkZXNpZ25hdGUKCXJlbW90ZSBzdWJwcm9ncmFtcyBmcm9tIHRoZSBwYWNrYWdlLgoKMjAwNy0wOC0xNCAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGctY2F0aWlvLmFkYiAoSW1hZ2UpOiBGb3IgdGhlIGNhc2Ugb2YgJXMsIHVzZSBBZGEuQ2FsZW5kYXIuVGltZQoJdmFsdWVzIHRvIGNvbXB1dGUgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBVbml4IEVwb2MgaW4gb3JkZXIgdG8KCWFjY291bnQgZm9yIERheWxpZ2h0IFNhdmluZ3MgVGltZS4gUGVyZm9ybSBzcGVjaWFsIHByb2Nlc3NpbmcgZm9yIGRhdGVzCgl0aGF0IGFyZSBlYXJsaWVyIHRoYW4gdGhlIFVuaXggRXBvYyB0byBvYnRhaW4gYSBuZWdhdGl2ZSBudW1iZXIuCgoyMDA3LTA4LTE0ICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoKCSogZy1jb21saW4uYWRiIChHZXRvcHQpOiBGaXggaGFuZGxpbmcgb2YgIioiIHN3aXRjaCB3aGVuIG5vdCBjb2xsYXBzaW5nCglzd2l0Y2hlcy4KCjIwMDctMDgtMTQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBnbmF0bGluay5hZGIgKEduYXRsaW5rKTogUGFzcyBzd2l0Y2hlcyB0byB0aGUgbGlua2VyIGV2ZW4gaWYgdGhlCgliaW5kZXItZ2VuZXJhdGVkIGZpbGUgaXMgbm90IGluIEFkYS4KCVBhc3MgLW1ydHAgdG8gdGhlIGxpbmtlciBpZiBpdCBpcyBHQ0MgYW5kIC0tUlRTPXJ0cCBoYXMgYmVlbgoJcmVjb3JkZWQgaW4gdGhlIEFMSSBmaWxlLgoJUGFzcyAtZnNqbGogdG8gdGhlIGxpbmtlciBpZiBpdCBpcyBHQ0MgYW5kIC0tUlRTPXNqbGogaGFzIGJlZW4gcmVjb3JkZWQuCgoyMDA3LTA4LTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRscy5hZGI6IChDb3JyZXNwb25kaW5nX1NkZXBfRW50cnkpOiBBbHdheXMgcmV0dXJuIGEgdmFsdWUKCShPdXRwdXRfU291cmNlKTogRG8gbm90aGluZyBpZiBwYXJhbWV0ZXIgaXMgTm9fU2RlcF9JZAoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogRG8gbm90IHJlYnVpbGQgYW4gYXJjaGl2ZSBzaW1wbHkgYmVjYXVzZSBhCglzaGFyZWQgbGlicmFyeSBpdCBpbXBvcnRzIGhhcyBhIGxhdGVyIHRpbWUgc3RhbXAuCgkoQ2hlY2spOiBSZXNvbHZlIHRoZSBzeW1ib2xpYyBsaW5rcyBpbiB0aGUgcGF0aCBuYW1lIG9mIHRoZSBvYmplY3QKCWRpcmVjdG9yeS4KCUNoZWNrIHRoYXQgdGhlIEFMSSBmaWxlIGlzIGluIHRoZSBjb3JyZWN0IG9iamVjdCBkaXJlY3RvcnkKCUNoZWNrIGlmIGEgZmlsZSBuYW1lIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gdGhlIG1hcHBpbmcgb2YgdW5pdHMKCXRvIGZpbGUgbmFtZXMuCgkoRGlzcGxheV9WZXJzaW9uKTogTmV3IHByb2NlZHVyZQoJKEluaXRpYWxpemUpOiBQcm9jZXNzIHN3aXRjaGVzIC0tdmVyc2lvbiBhbmQgLS1oZWxwCglVc2UgdHlwZSBQYXRoX05hbWVfVHlwZSBmb3IgcGF0aCBuYW1lCgoyMDA3LTA4LTE0ICBQYXVsIEhpbGZpbmdlciAgPGhpbGZpbmdlckBhZGFjb3JlLmNvbT4KCgkqIGltcHVuaXQuYWRiOiBSZS1vcmdhbml6ZSBTeXN0ZW0uUmFuZG9tX051bWJlcnMgYW5kCglHTkFULlJhbmRvbV9OdW1iZXJzIGFuZCBhZGQgdG8gYnVpbGRzLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgcy1yYW5udW0uYWQqIGFuZCBnLXJhbm51bS5hZCosIGEtYXNzZXJ0KgoKCSogcy1yYW5udW0uYWRzLCBzLXJhbm51bS5hZGIsIGctcmFubnVtLmFkcywgZy1yYW5udW0uYWRiOiBOZXcgZmlsZXMuCgoJKiBhLWFzc2VydC5hZHMsIGEtYXNzZXJ0LmFkYjogTmV3IGZpbGVzLgoKMjAwNy0wOC0xNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogbGF5b3V0LmFkYiAoTGF5b3V0X1R5cGUpOiBJbiB0aGUgY2FzZSBvZiBhY2Nlc3MtdG8tc3VicHJvZ3JhbSB0eXBlcywKCWlmIEFBTVBfT25fVGFyZ2V0IGlzIFRydWUsIHRoZW4gdGhlIHNpemUgb2YgdGhlIHR5cGUgZW5jb21wYXNzZXMgdHdvCglhZGRyZXNzZXMgKGEgc3RhdGljIGxpbmsgYW5kIGEgc3VicHJvZ3JhbSBhZGRyZXNzKSwgZXhjZXB0IGluIHRoZSBjYXNlCglvZiBsaWJyYXJ5LWxldmVsIGFjY2VzcyB0eXBlcy4KCjIwMDctMDgtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogb3V0cHV0LmFkcywgb3V0cHV0LmFkYiAoV3JpdGVfRW9sKTogUmVtb3ZlIHRyYWlsaW5nIHNwYWNlcyBiZWZvcmUKCXdyaXRpbmcgdGhlIGxpbmUuCgkoV3JpdGVfRW9sX0tlZXBfQmxhbmtzKTogTmV3IHByb2NlZHVyZSB0byB3cml0ZSBhIGxpbmUsIGluY2x1ZGluZwoJcG9zc2libGUgdHJhaWxpbmcgc3BhY2VzLgoJKE91dHB1dF9Tb3VyY2VfTGluZSk6IENhbGwgV3JpdGVfRW9sX0tlZXBfQmxhbmtzIHRvIG91dHB1dCBhIHNvdXJjZSBsaW5lCgoyMDA3LTA4LTE0ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBwYXItY2g2LmFkYiAoUF9Gb3JtYWxfUGFydCk6IEZpeCB3cm9uZyBlcnJvciBtZXNzYWdlIGFzc29jaWF0ZWQgd2l0aAoJbnVsbC1leGNsdWRpbmcgYWNjZXNzIHR5cGVzLgoKMjAwNy0wOC0xNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoOS5hZGIgKENoZWNrX0ludGVyZmFjZXMpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IGZhY3Rvcml6ZXMgY29kZQoJdGhhdCBpcyBjb21tb24gdG8gQW5hbHl6ZV9Qcm90ZWN0ZWRfVHlwZSBhbmQgQW5hbHl6ZV9UYXNrX1R5cGUuIEluIGNhc2UKCW9mIHByaXZhdGUgdHlwZXMgYWRkIG1pc3NpbmcgY2hlY2sgb24gbWF0Y2hpbmcgaW50ZXJmYWNlcyBpbiB0aGUKCXBhcnRpYWwgYW5kIGZ1bGwgZGVjbGFyYXRpb25zLgoJKEFuYWx5emVfUHJvdGVjdGVkX1R5cGUpOiBDb2RlIGNsZWFudXAuCgkoQW5hbHl6ZV9UYXNrX1R5cGUpOiBDb2RlIGNsZWFudXAuCgoyMDA3LTA4LTE0ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fZGlzcC5hZGIgKENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IERvIG5vdCBlbWl0IHdhcm5pbmcgb24gYQoJZ2VuZXJhdGVkIGludGVyZmFjZSB0aHVuay4KCjIwMDctMDgtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHMtZmljb2JsLmFkczogRGVjbGFyZSBBRkNCIGFzIGEgdGFnZ2VkIGluY29tcGxldGUgdHlwZSwgdG8gcHJldmVudAoJb2Jzb2xlc2NlbnQgd2FybmluZyBvbiBhcHBsaWNhdGlvbiBvZiAnQ2xhc3MgdG8gYW4gaW5jb21wbGV0ZSB0eXBlLgoKCSogcy1maW5yb28uYWRzOiBEZWNsYXJlIFJvb3RfQ29udHJvbGxlZCBhcyBhIHRhZ2dlZCBpbmNvbXBsZXRlIHR5cGUsIHRvCglwcmV2ZW50IG9ic29sZXNjZW50IHdhcm5pbmcgb24gYXBwbGljYXRpb24gb2YgJ0NsYXNzIHRvIGFuIGluY29tcGxldGUKCXR5cGUuCgoyMDA3LTA4LTE0ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBzLWZpbGVpby5hZGIgKElzX09wZW4pOiBBZGQgY2hlY2sgZm9yIHVzYWJpbGl0eSBvZiB0aGUgdW5kZXJseWluZwoJZmlsZSBzdHJlYW0uCgoyMDA3LTA4LTE0ICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgoJKiBzLWZpbmltcC5hZGIgKERldGFjaF9Gcm9tX0ZpbmFsX0xpc3QpOiBtYWtlIHRoaXMgcHJvY2VkdXJlIGlkZW1wb3RlbnQKCXNpbmNlIGl0IGlzIHBvdGVudGlhbGx5IHVzZWQgaW4gY2FzZXMgaW1wbHlpbmcgZG91YmxlIGZpbmFsaXphdGlvbiBvZgoJdGhlIHNhbWUgb2JqZWN0LgoKMjAwNy0wOC0xNCAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHMtdGFzaW5pLmFkYiAoR2V0X1N0YWNrX0luZm8pOiBNb3ZlIHRoaXMgZnVuY3Rpb24gdG8KCVN5c3RlbS5Tb2Z0X0xpbmtzLlRhc2tpbmcgYmVjYXVzZSBpdCBpcyBjb21tb24gdG8gdGhlIGZ1bGwgYW5kIHRoZQoJcmVzdHJpY3RlZCBydW4gdGltZXMuCgkoSW5pdF9SVFMpOiBEbyBub3Qgc2V0IHRoZSBHZXRfU3RhY2tfSW5mbyBzb2Z0IGxpbmsgYmVjYXVzZSBpdCBpcyBkb25lCglpbiBTU0wuVGFza2luZy5Jbml0X1Rhc2tpbmdfU29mdF9MaW5rcy4KCgkqIHMtc29saXRhLmFkYiAoR2V0X1N0YWNrX0luZm8pOiBGdW5jdGlvbiBtb3ZlZCBmcm9tCglTeXN0ZW0uVGFza2luZy5Jbml0aWFsaXphdGlvbiBiZWNhdXNlIGl0IGlzIGNvbW1vbiB0byB0aGUgZnVsbCBhbmQgdGhlCglyZXN0cmljdGVkIHJ1biB0aW1lcy4KCShJbml0X1Rhc2tpbmdfU29mdF9MaW5rcyk6IFNldCB0aGUgdGFza2luZyBzb2Z0IGxpbmsgZm9yIEdldF9TdGFja19JbmZvLgoKMjAwNy0wOC0xNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy10cG9ib3AuYWRzLCBzLXRwb2JvcC5hZGIsIHMtdGFzcmVuLmFkcywgcy10YXNyZW4uYWRiLAoJcy10YXNraW4uYWRzIChSZXF1ZXVlX1dpdGhfQWJvcnQpOiBSZW5hbWUgZmllbGQgV2l0aF9BYm9ydC4KCShQT19Eb19Pcl9RdWV1ZSwgVGFza19Eb19Pcl9RdWV1ZSwgUmVxdWV1ZV9DYWxsKTogUmVtb3ZlIFdpdGhfQWJvcnQKCXBhcmFtZXRlci4KCgkqIHMtdGFzc3RhLmFkYiAoVGFza19XcmFwcGVyKTogSW5jcmVhc2VkIHZhbHVlIG9mIHRoZSBzbWFsbCBvdmVyZmxvdwoJZ3VhcmQgdG8gMTJLLgoKMjAwNy0wOC0xNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogcy12ZWJvb3AuYWRiIChTVSk6IE5ldyBuYW1lZCBudW1iZXIgaW5pdGlhbGl6ZWQgdG8KCVN5c3RlbS5TdG9yYWdlX1VuaXQuCgkoVHJ1ZV9WYWwpOiBUaGUgaW5pdGlhbGl6YXRpb24gZXhwcmVzc2lvbiBpcyByZXZpc2VkIHRvIHVzZSBTVSAoPQoJU3RvcmFnZV9Vbml0KSByYXRoZXIgdGhhbiBhc3N1bWluZyA4IGZvciB0aGUgY29tcG9uZW50IHNpemUgb2YgYW4KCXVucGFja2VkIEJvb2xlYW4gYXJyYXkuCgoyMDA3LTA4LTE0ICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgoKCSogdHJhY2ViYWsuYzogVXNlIHRiLWl2bXMuYyBvbiBPcGVuVk1TIEl0YW5pdW0uCgoJKiB0Yi1pdm1zLmM6IE5ldyBmaWxlLgoKCSogZy10cmFzeW0tdm1zLWlhNjQuYWRiOiBGaXhlZCBmb3IgT3BlblZNUyB2ZXJzaW9uIDguMgoKMjAwNy0wOC0xNCAgR2VlcnQgQm9zY2ggIDxib3NjaEBhZGFjb3JlLmNvbT4KCgkqIGktZm9yYmxhLmFkcywgaS1mb3JibGEuYWRiLCBhLW5nY29hci5hZGIsIGEtbmdjb2FyLmFkcywgaS1mb3JsYXAuYWRzLAoJcy1nZWFyb3AuYWRiLCBzLWdlY29ibC5hZGIsIHMtZ2Vjb2JsLmFkcywgcy1nZXJlbGEuYWRiLCBzLWdlcmVsYS5hZHM6CglBZGQgcmVxdWlyZWQgbGlua2VyIHByYWdtYXMgZm9yIGF1dG9tYXRpY2FsbHkgbGlua2luZyB3aXRoIHRoZSBnbmFsYXN1cAoJbGluZWFyIGFsZ2VicmEgc3VwcG9ydCBsaWJyYXJ5LCBhbmQgdGhlIHN5c3RlbXMgbWF0aCBsaWJyYXJ5LgoJUmVuYW1lIGNkb3QgdG8gY2RvdHUgYW5kIHpkb3QgdG8gemRvdHUuCglVcGRhdGUgaGVhZGVyIGNvbW1lbnQgdG8gZGVzY3JpYmUgcHVycG9zZSBvZiBwYWNrYWdlLgoKMjAwNy0wOC0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDcuYWRiIChGaW5kX0ZpbmFsX0xpc3QpOiBGb3IgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlIHRoYXQgaGFzCglhbiBleHBsaWNpdGx5IHNwZWNpZmllZCBBc3NvY2lhdGVkX0ZpbmFsX0NoYWluLCB1c2UgdGhhdCBsaXN0LgoJKEV4cGFuZF9OX1BhY2thZ2VfQm9keSk6IEJ1aWxkIGRpc3BhdGNoIHRhYmxlcyBvZiBsaWJyYXJ5IGxldmVsIHRhZ2dlZAoJdHlwZXMuCgkoRXhwYW5kX05fUGFja2FnZV9EZWNsYXJhdGlvbik6IEJ1aWxkIGRpc3BhdGNoIHRhYmxlcyBvZiBsaWJyYXJ5IGxldmVsCgl0YWdnZWQgdHlwZXMuIE1pbm9yIGNvZGUgY2xlYW51cC4KCjIwMDctMDgtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZ25hdGNob3AuYWRiIChUZXJtaW5hdGVfUHJvZ3JhbSk6IFJlbW92ZSBleGNlcHRpb24gYW5kIHVzZQoJVHlwZXMuVGVybWluYXRlX1Byb2dyYW0gaW5zdGVhZC4KCgkqIG9zaW50LmFkcywgb3NpbnQuYWRiIChDdXJyZW50X0V4aXRfU3RhdHVzKTogTmV3IGdsb2JhbCB2YXJpYWJsZQoJKEZpbmRfUHJvZ3JhbV9OYW1lKTogQWRkZWQgcHJvdGVjdGlvbiBhZ2FpbnN0IGVtcHR5IG5hbWUuCgkoT1NfRXhpdF9UaHJvdWdoX0V4Y2VwdGlvbik6IE5ldyBwcm9jZWR1cmUKCgkqIHMtb3NfbGliLmFkcywgcy1vc19saWIuYWRiIChPU19FeGl0KTogTmV3IHByb2NlZHVyZSBib2R5CgkoT1NfRXhpdF9EZWZhdWx0KTogTmV3IHByb2NlZHVyZSB0aGF0IGNvbnRhaW5zIHRoZSBwcmV2aW91cwoJaW1wbGVtZW50YXRpb24gb2YgcHJvY2VkdXJlIE9TX0V4aXQuCgkoRmluYWxfVmFsdWUpOiBSZW1vdmUgb2Jzb2xldGUgSW50ZXJpeCBzdHVmZi4KCjIwMDctMDgtMTQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnLXNvY2tldC5hZHM6IFJlb3JnYW5pemUgZXhhbXBsZSBjb2RlIHNvIHRoYXQgaXQgYWxzbyB3b3JrcyBvbgoJV2luZG93cyBYUC4KCjIwMDctMDgtMTQgIFRyaXN0YW4gR2luZ29sZCAgPGdpbmdvbGRAYWRhY29yZS5jb20+CgoJKiBnLXRyYXN5bS5hZHM6IEFJWCBub3cgc3VwcG9ydHMgc3ltYm9saWMgYmFja3RyYWNlcy4KCjIwMDctMDgtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGxpYi1sb2FkLmFkYiAoRnJvbV9MaW1pdGVkX1dpdGhfQ2hhaW4pOiBBbHdheXMgc2NhbiB0aGUgc3RhY2sgb2YKCXVuaXRzIGJlaW5nIGxvYWRlZCB0byBkZXRlY3QgY2lyY3VsYXJpdGllcy4gQSBjaXJjdWxhcml0eSBtYXkgYmUKCXByZXNlbnQgZXZlbiBpZiB0aGUgY3VycmVudCBjaGFpbiBvZiBwZW5kaW5nIHVuaXRzIHRvIGxvYWQgc3RhcnRzIGZyb20KCWEgbGltaXRlZF93aXRoX2NsYXVzZS4KCgkqIGxpYi1sb2FkLmFkczogQ2hhbmdlIHByb2ZpbGUgb2YgTG9hZF9Vbml0IHRvIHVzZSBhIHdpdGhfY2xhdXNlCglyYXRoZXIgdGhhbiBhIGJvb2xlYW4gZmxhZywgaW4gb3JkZXIgdG8gZGV0ZWN0IGNpcmN1bGFyaXRpZXMgaW4KCXdpdGhfY2xhdXNlcy4KCgkqIHBhci1sb2FkLmFkYjogVXNlIGN1cnJlbnQgd2l0aF9jbGF1c2UgaW4gY2FsbHMgdG8gTG9hZF9Vbml0LCByYXRoZXIKCXRoYW4gcHJvcGFnYXRpbmcgdGhlIEZyb21fTGltaXRlZF9XaXRoIGZsYWcsIGluIG9yZGVyIHRvIGhhbmRsZQoJcHJvcGVybHkgY2lyY3VsYXJpdGllcyBpbnZvbHZpbmcgd2l0aF9jbGF1c2VzLgoKMjAwNy0wOC0xNCAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBsaW5rLmMgKEZyZWVCU0QpOiBBZGQgImNvbnN0IiBrZXl3b3JkIHdoZXJlIG5lZWRlZCwgdG8gZWxpbWluYXRlCgl3YXJuaW5ncy4KCjIwMDctMDgtMTQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBHTkFUUlRMX0xJTkVBUkFMR0VCUkFfT0JKUzogTmV3IHZhcmlhYmxlIGhvbGRpbmcgb2JqZWN0cwoJdG8gYnVpbGQgZm9yIGxpYmduYWxhLgoJbGliZ25hdDogQWRkIHJ1bGVzIHRvIGJ1aWxkIGxpYmduYWxhLmEKCShMSUJHTkFUX1RBUkdFVF9QQUlSUyBmb3IgVnhXb3Jrcyk6IFJlbW92ZSBzLW9zaW50ZS12eHdvcmtzLmFkYiBmcm9tCgl0YXJnZXQgcGFpcnMgb2YgdGhlIFZ4V29ya3MgNiBrZXJuZWwgcnVudGltZSwgdXNlIGl0IG9ubHkgZm9yIFZ4V29ya3MgNS4KCUFkZCBzLW9zaW50ZS12eHdvcmtzLWtlcm5lbC5hZGIgdG8gdGhlIHRhcmdldCBwYWlycyBvZiB0aGUKCWtlcm5lbCBydW4tdGltZSBsaWIgZm9yIFZ4V29ya3MgNiwgd2hpY2ggd291bGQgcHJvdmlkZSBhIGRpZmZlcmVudAoJaW1wbGVtZW50YXRpb24gZm9yIFRhc2tfQ29udCBhbmQgVGFza19TdG9wIHRoYW4gdGhlIFZ4V29ya3MgNSB2ZXJzaW9uLgoJeDg2LXNvbGFyaXMgc2VjdGlvbiAoRUhfTUVDSEFOSVNNKTogU2V0IHRvIC1nY2MsIGFzIHRoaXMgcG9ydCBpcyBub3cKCXJ1bm5pbmcgWkNYIGJ5IGRlZmF1bHQuCglBZGQgZy1zdHRzbmUtbG9ja2luZyB0byBMeW54T1MgdmVyc2lvbi4KCVJlbW92ZSBnLXN0dHNuZS12eHdvcmtzLmFkczsgdXNlIGctc3R0c25lLWxvY2tpbmcuYWRzIGluc3RlYWQuCglPbiB4ODYvZGFyd2luLCB1c2UgYS1udW1hdXgteDg2LmFkPyBhbmQgc3lzdGVtLWRhcndpbi14ODYuYWRzLgoKCSogc3lzdGVtLWRhcndpbi14ODYuYWRzOiBOZXcgZmlsZS4KCgkqIE1ha2UtbGFuZy5pbjogRGVsZXRlIGZpbGVzIGJlZm9yZSBjb3B5aW5nIG9udG8gdGhlbSwgc28gaWYgdGhleSBhcmUKCXJlYWQtb25seSwgdGhlIGNvcHkgd29uJ3QgZmFpbC4KCVVwZGF0ZSBkZXBlbmRlbmNpZXMKCjIwMDctMDgtMTQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIG1kbGwtZmlsLmFkYiwgKiBtZGxsLmFkYjogSW1wbGVtZW50IGEgbW9yZSBjb25zaXN0ZW50IGxpYnJhcmllcwoJbmFtaW5nIHNjaGVtZS4KCjIwMDctMDgtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi11dGwuYWRiIChHY2NfTmFtZSk6IENoYW5nZSBmcm9tIGNvbnN0YW50IFN0cmluZyB0byBTdHJpbmdfQWNjZXNzCgkoR2NjKTogSW5pdGlhbGl6ZSBHY2NfTmFtZSBhdCB0aGUgZmlyc3QgY2FsbAoKMjAwNy0wOC0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNy5hZGIgKEFuYWx5emVfUGFja2FnZV9TcGVjaWZpY2F0aW9uKTogRG8gbm90IGluc3RhbGwgcHJpdmF0ZQoJd2l0aF9jbGF1c2VzIG9mIHRoZSBlbmNsb3NpbmcgdW5pdCB3aGVuIGFuYWx5emluZyB0aGUgcGFja2FnZQoJc3BlY2lmaWNhdGlvbiBvZiBhIG5lc3RlZCBpbnN0YW5jZS4KCjIwMDctMDgtMTQgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBzaW5mby5hZHMsIHNpbmZvLmFkYiAoSXNfQ29leHRlbnNpb24sIFNldF9Jc19Db2V4dGVuc2lvbik6IFJlbW92ZWQuCgkoSXNfRHluYW1pY19Db2V4dGVuc2lvbiwgU2V0X0lzX0R5bmFtaWNfQ29leHRlbnNpb24pOiBOZXcgcm91dGluZXMuCglSZW1vdmUgZmxhZyBJc19Db2V4dGVuc2lvbi4gQWRkIGZsYWcgSXNfRHluYW1pY19Db2V4dGVuc2lvbi4gVXBkYXRlIHRoZQoJbGF5b3V0IG9mIE5fQWxsb2NhdG9yLgoKMjAwNy0wOC0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHJ0c2ZpbmQuYWRiIChDaGVja19SUEMpOiBBZGQgUENTIHZlcnNpb24gY2hlY2suCgoJKiBnbmF0dnNuLmFkcywgZ25hdHZzbi5hZGI6IEFkZCBQQ1MgdmVyc2lvbi4KCShHbmF0X0ZyZWVfU29mdHdhcmUpOiBOZXcgZnVuY3Rpb24uCgoJKiBzZW1fZGlzdC5hZHMsIHNlbV9kaXN0LmFkYiAoR2V0X1BDU19WZXJzaW9uKTogTmV3IHN1YnByb2dyYW0uIFJldHVybnMKCXRoZSBQQ1NfVmVyc2lvbiB2YWx1ZSBmcm9tIHMtcGFyaW50LCB1c2VkIHRvIGNoZWNrIHRoYXQgaXQgaXMgY29uc2lzdGVudAoJd2l0aCB3aGF0IGV4cF9kaXN0IGV4cGVjdHMuCgoJKiBzLXBhcmludC5hZHMgKFBDU19WZXJzaW9uKTogTmV3IGVudGl0eSBmb3IgY2hlY2tpbmcgY29uc2lzdGVuY3kKCWJldHdlZW4gZXhwX2Rpc3QgYW5kIFBDUy4KCgkqIGdlbi1zb2Njb24uYzogKFNPX1JFVVNFUE9SVCk6IE5ldyBjb25zdGFudC4KCjIwMDctMDgtMTQgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBhLWNhbGZvci5hZGIgKEltYWdlIChEdXJhdGlvbjsgQm9vbGVhbikpOiBDaGFuZ2UgdHlwZSBvZiBsb2NhbAoJdmFyaWFibGUgU3ViX1NlY29uZCB0byBEdXJhdGlvbiBpbiBvcmRlciB0byBhY2NvbW9kYXRlIGEgbGFyZ2VyIHJhbmdlCglvZiBhcml0aG1ldGljIG9wZXJhdGlvbnMuCgoyMDA3LTA4LTE0ICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBnLXN0dHNuZS1sb2NraW5nLmFkczogTW92ZSBjb21tZW50cyBmcm9tIHNwZWMgdG8gYm9keS4KCSogZy1zdHRzbmUtbG9ja2luZy5hZGI6IE1vdmUgY29tbWVudHMgZnJvbSBzcGVjIHRvIGJvZHkuCgkqIGctc3R0c25lLXZ4d29ya3MuYWRzOiBSZW1vdmVkLgoJKiBnLXN0dHNuZS12eHdvcmtzLmFkYjogUmVtb3ZlZC4KCjIwMDctMDgtMTEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBtaXNjLmMgKGduYXRfZ2V0X2FsaWFzX3NldCk6IENoYW5nZSByZXR1cm4gdHlwZSB0bwoJYWxpYXNfc2V0X3R5cGUuCgoyMDA3LTA4LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZWNsLmMsIHV0aWxzMi5jOiBGaXggd2hpdGVzcGFjZSBpbiBsYXN0IGNoYW5nZS4KCjIwMDctMDgtMTEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlY2wuYyAoY29tcGFyZV9maWVsZF9iaXRwb3MpOiBDb25zdGlmeS4KCSogdXRpbHMyLmMgKGNvbXBhcmVfZWxtdF9iaXRwb3MpOiBMaWtld2lzZS4KCjIwMDctMDctMjcgIEF1cmVsaWVuIEphcm5vICA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CgoJKiBzLW9zaW50ZS1rZnJlZWJzZC1nbnUuYWRzICgoc2lnc2V0X3RfcHRyKTogUmVtb3ZlZCwgcmVwbGFjZWQgYnkgCglhbm9ueW1vdXMgYWNjZXNzIHR5cGUuCgkocHRocmVhZF9zaWdtYXNrKTogTm93IHRha2UgYW4gYWNjZXNzIHNpZ3NldF90LgoKMjAwNy0wNy0wNSAgSm9lbCBTaGVycmlsbCA8am9lbC5zaGVycmlsbEBvYXJjb3JwLmNvbT4KCiAgICAgICAgKiBzLW9zaW50ZS1ydGVtcy5hZHM6IENvcnJlY3QgcHJvdG90eXBlIG9mIHB0aHJlYWRfc2lnbWFzay4KCQoyMDA3LTA2LTIxICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIHRyZWUtb3B0aW1pemF0aW9uLzI1NzM3CgkqIG1pc2MuYyAoZ25hdF9wb3N0X29wdGlvbnMpOiBEbyBub3QgZm9yY2UgZmxhZ190cmVlX3NhbGlhcyB0byAwLgoKMjAwNy0wNi0xNSAgQW5kcmV3IFBpbnNraSAgPGFuZHJld19waW5za2lAcGxheXN0YXRpb24uc29ueS5jb20+CgoJKiB0cmFucy5jIChBdHRyaWJ1dGVfdG9fZ251KTogV2hlbiBzdWJ0cmFjdGluZyBhbgoJb2Zmc2V0IGZyb20gYSBwb2ludGVyLCB1c2UgUE9JTlRFUl9QTFVTX0VYUFIgd2l0aAoJTkVHQVRFX0VYUFIgaW5zdGVhZCBvZiBNSU5VU19FWFBSLgoJKGduYXRfdG9fZ251KTogTGlrZXdpc2UuCgkqIHV0aWxzLmMgKGNvbnZlcnQpOiBXaGVuIGNvbnZlcnRpbmcgYmV0d2VlbgoJdGhpbiBwb2ludGVycywgdXNlIFBPSU5URVJfUExVU19FWFBSIGFuZCBzaXpldHlwZQoJZm9yIHRoZSBvZmZzZXQuCgkqIHV0aWxzMi5jIChrbm93bl9hbGlnbm1lbnQpOiBQT0lOVEVSX1BMVVNfRVhQUgoJaGF2ZSB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgUExVU19FWFBSIGZvciBhbGlnbm1lbnQuCgkoYnVpbGRfYmluYXJ5X29wKTogQWRkIHN1cHBvcnQgZm9yIHRoZSBzZW1hbnRpY3Mgb2YKCVBPSU5URVJfUExVU19FWFBSJ3Mgb3BlcmFuZHMuCglXaGVuIGFkZGluZyBhbiBvZmZzZXQgdG8gYSBwb2ludGVyLCB1c2UgUE9JTlRFUl9QTFVTX0VYUFIuCgoyMDA3LTA2LTExICBSYWZhZWwgQXZpbGEgZGUgRXNwaW5kb2xhICA8ZXNwaW5kb2xhQGdvb2dsZS5jb20+CgoJKiB0cmFucy5jIChBdHRyaWJ1dGVfdG9fZ251KTogVXNlIHNpZ25lZF9vcl91bnNpZ25lZF90eXBlX2ZvciBpbnN0ZWFkCglvZiBnZXRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUuCgkqIG1pc2MuYyAoTEFOR19IT09LU19TSUdORURfVFlQRSk6IFJlbW92ZS4KCjIwMDctMDYtMTEgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KICAgICAgICAgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctc3RzaWZkLXNvY2tldHMuYWRiIChDcmVhdGUpOiBXb3JrIGFyb3VuZCBzdHJhbmdlIGJlaGF2aW9yIG9mCgknYmluZCcgb24gd2luZG93cyB0aGF0IGNhdXNlcyAnY29ubmVjdCcgdG8gZmFpbCBpbnRlcm1pdHRlbnRseSwgYnkKCXJldHJ5aW5nIHRoZSAnYmluZCcuCgkoR05BVC5Tb2NrZXRzLlRoaW4uU2lnbmFsbGluZ19GZHMpOiBOZXcgcHJvY2VkdXJlIENsb3NlLgoKMjAwNy0wNi0xMCAgRHVuY2FuIFNhbmRzICA8YmFsZHJpY2tAZnJlZS5mcj4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KTogVXNlIHBvaW50ZXJzIHRvIGR1bW15IG5vZGVzLCByYXRoZXIKCXRoYW4gdG8gdm9pZCwgZm9yIHRoZSBmaWVsZHMgd2hlbiBtYWtpbmcgYSBuZXcgZmF0IHBvaW50ZXIgdHlwZS4KCShnbmF0X3N1YnN0aXR1dGVfaW5fdHlwZSk6IE5vdyBzdWJzdGl0dXRlX2luX3R5cGUuCgkqIGdpZ2kuaCAoZ25hdF9zdWJzdGl0dXRlX2luX3R5cGUpOiBMaWtld2lzZS4gIEFkanVzdCByZWN1cnNpdmUgY2FsbHMuCgkqIHRyYW5zLmMgKGduYXRfZ2ltcGxpZnlfZXhwcik6IFJlbW92ZSBDT01QT05FTlRfUkVGIGtsdWRnZS4KCSogdXRpbHMuYyAodXBkYXRlX3BvaW50ZXJfdG8pOiBVcGRhdGUgZmF0IHBvaW50ZXJzIGJ5IHVwZGF0aW5nIHRoZQoJZHVtbXkgbm9kZSBwb2ludGVycyB1c2VkIGZvciB0aGUgZmllbGRzLgoKMjAwNy0wNi0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgogICAgICAgICogZy1zb2Njb24tZnJlZWJzZC5hZHMsIGctc29jY29uLXZ4d29ya3MuYWRzOiwKCWctc29jY29uLWFpeC5hZHMsIGctc29jY29uLWlyaXguYWRzLCBnLXNvY2Nvbi1ocHV4LmFkcywgCglnLXNvY2Nvbi1zb2xhcmlzLmFkcywgZy1zb2Njb24tdm1zLmFkcywgZy1zb2Njb24tdHJ1NjQuYWRzOiAgQWRkIG5ldwoJY29uc3RhbnQgVGhyZWFkX0Jsb2NraW5nX0lPLCBhbHdheXMgVHJ1ZSBieSBkZWZhdWx0LCBzZXQgRmFsc2UKCW9uIGEgcGVyLXJ1bnRpbWUgYmFzaXMuCgkoTmVlZF9OZXRkYl9CdWZmZXIpOiBOZXcgY29uc3RhbnQuCgoJKiBnLXN0aGVtZS5hZGIsIGctc3R0c25lLmFkcywgZy1zdHRzbmUtbG9ja2luZy5hZHMsCglnLXN0dHNuZS1sb2NraW5nLmFkYiwgZy1zdHRzbmUtdnh3b3Jrcy5hZHMsIGctc3R0c25lLXZ4d29ya3MuYWRiOiBOZXcKCWZpbGVzLgoKCSogZy1zb2N0aGktdnh3b3Jrcy5hZHMsIGctc29jdGhpLXZ4d29ya3MuYWRiLAoJZy1zb2N0aGktdm1zLmFkcywgZy1zb2N0aGktdm1zLmFkYiAoU2FmZV9HZXRob3N0YnluYW1lLAoJU2FmZV9HZXRob3N0YnlhZGRyLCBTYWZlX0dldHNlcnZieW5hbWUsIFNhZmVfR2V0c2VydmJ5cG9ydCk6IFVzZSBuZXcKCWNoaWxkIHBhY2thZ2UgVGFza19TYWZlX05ldERCCgkoSG9zdF9FcnJvcl9NZXNzYWdlcyk6IEFkZCBzdHViIGJvZHkuCgkoR05BVC5Tb2NrZXRzLlRoaW4uU2lnbmFsbGluZ19GZHMpOiBOZXcgcHJvY2VkdXJlIENsb3NlLgoKCSogZy1zb2Njb24tbWluZ3cuYWRzOiBBZGQgV2luZG93cy1zcGVjaWZpYyBjb25zdGFudHMuCgkoTmVlZF9OZXRkYl9CdWZmZXIpOiBOZXcgY29uc3RhbnQuCgkoR05BVC5Tb2NrZXRzLlRoaW4uQ19JbmV0X0FkZHIsIFdpbmRvd3MgdmVyc2lvbik6IFJlbW92ZSB1c2VsZXNzIEFkYQoJd3JhcHBlciBhbmQgaW1wb3J0IGluZXRfYWRkcigzKSBmcm9tIHRoZSBzdGFuZGFyZCBzb2NrZXRzIGxpYnJhcnkKCWRpcmVjdGx5IGluc3RlYWQuCgkoSW5fQWRkcik6IEFkZCBhbGlnbm1lbnQgY2xhdXNlLgoJKEdOQVQuU29ja2V0cy5UaGluLlNpZ25hbGxpbmdfRmRzKTogTmV3IHByb2NlZHVyZSBDbG9zZS4KCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS10YXN0ZXIuYWRiLCBzLW9zaW50ZS1ocHV4LmFkcywgcy1vc2ludGUtc29sYXJpcy1wb3NpeC5hZHMsCglzLW9zaW50ZS1pcml4LmFkcywgcy1pbnRlcnItc2lnYWN0aW9uLmFkYiwgcy1tYXN0b3AtaXJpeC5hZGIsCglzLW9zaW50ZS1ocHV4LWRjZS5hZHMsIHMtb3NpbnRlLWludGVyaXguYWRzLCBzLW9zaW50ZS1zb2xhcmlzLmFkcywKCXMtdGFzcHJpLXNvbGFyaXMuYWRzLCBzLWlubWFvcC12bXMuYWRiLCBzLWludGVyci12bXMuYWRiLAoJcy1tYXN0b3Atdm1zLmFkYiwgcy1vc2ludGUtdm1zLmFkcywgcy10cG9wZGUtdm1zLmFkYiwKCXMtb3NpbnRlLW1pbmd3LmFkcywgcy1pbnRlcnItdnh3b3Jrcy5hZGIsIGktY3N0cmVhLXZtcy5hZGIsCglhLWRpb2NzdC5hZGIsIGEtZGlyZWlvLmFkYiwgYS1pbnRlcnIuYWRiLCBhLXNlcXVpby5hZGIsIGEtc2lvY3N0LmFkYiwKCWEtc3NpY3N0LmFkYiwgYS1zdG9yaW8uYWRiLCBhLXN0c3Rpby5hZGIsIGEtc3R3aW1hLmFkYiwgYS10YXNhdHQuYWRiLAoJYS10YXNpZGUuYWRiLCBhLXRpb2NzdC5hZGIsIGEtd2l0ZWlvLmFkYiwgYS13dGNzdHIuYWRiLCBnLWNyYzMyLmFkYiwKCWctZGlyb3BlLmFkYiwgZy1keW50YWIuYWRiLCBnLW1lbWR1bS5hZGIsIGctcmVnZXhwLmFkYiwgZy1zcGlwYXQuYWRiLAoJZy1zcGl0Ym8uYWRiLCBnLXN0cmluZy5hZGIsIGctc3RyaW5nLmFkcywgZy10YWJsZS5hZGIsIGctdGhyZWFkLmFkYiwKCWktY29ib2wuYWRiLCBpLWNwb2ludC5hZGIsIGktY3N0cmVhLmFkYiwgaS1jc3RyaW4uYWRiLCBpLXBhY2RlYy5hZGIsCglzLWFkZGltYS5hZGIsIHMtYXJpdDY0LmFkYiwgcy1hdXhkZWMuYWRiLCBzLWF1eGRlYy5hZHMsCglzLWF1eGRlYy12bXNfNjQuYWRzLCBzLWNhcnNpOC5hZGIsIHMtY2FydW44LmFkYiwgcy1jYXNpMTYuYWRiLAoJcy1jYXNpMzIuYWRiLCBzLWNhc2k2NC5hZGIsIHMtY2F1bjE2LmFkYiwgcy1jYXVuMzIuYWRiLCBzLWNhdW42NC5hZGIsCglzLWRpcmVpby5hZGIsIHMtZmlsZWlvLmFkYiwgcy1maW5pbXAuYWRzLCBzLWdldmVvcC5hZGIsIHMtaW1nZW51LmFkYiwKCXMtcGFjazAzLmFkYiwgcy1wYWNrMDUuYWRiLCBzLXBhY2swNi5hZGIsIHMtcGFjazA3LmFkYiwgcy1wYWNrMDkuYWRiLAoJcy1wYWNrMTAuYWRiLCBzLXBhY2sxMS5hZGIsIHMtcGFjazEyLmFkYiwgcy1wYWNrMTMuYWRiLCBzLXBhY2sxNC5hZGIsCiAJcy1wYWNrMTUuYWRiLCBzLXBhY2sxNy5hZGIsIHMtcGFjazE4LmFkYiwgcy1wYWNrMTkuYWRiLCBzLXBhY2syMC5hZGIsCglzLXBhY2syMS5hZGIsIHMtcGFjazIyLmFkYiwgcy1wYWNrMjMuYWRiLCBzLXBhY2syNC5hZGIsIHMtcGFjazI1LmFkYiwKCXMtcGFjazI2LmFkYiwgcy1wYWNrMjcuYWRiLCBzLXBhY2syOC5hZGIsIHMtcGFjazI5LmFkYiwgcy1wYWNrMzAuYWRiLAoJcy1wYWNrMzEuYWRiLCBzLXBhY2szMy5hZGIsIHMtcGFjazM0LmFkYiwgcy1wYWNrMzUuYWRiLCBzLXBhY2szNi5hZGIsCglzLXBhY2szNy5hZGIsIHMtcGFjazM4LmFkYiwgcy1wYWNrMzkuYWRiLCBzLXBhY2s0MC5hZGIsIHMtcGFjazQxLmFkYiwKCXMtcGFjazQyLmFkYiwgcy1wYWNrNDMuYWRiLCBzLXBhY2s0NC5hZGIsIHMtcGFjazQ1LmFkYiwgcy1wYWNrNDYuYWRiLAoJcy1wYWNrNDcuYWRiLCBzLXBhY2s0OC5hZGIsIHMtcGFjazQ5LmFkYiwgcy1wYWNrNTAuYWRiLCBzLXBhY2s1MS5hZGIsCglzLXBhY2s1Mi5hZGIsIHMtcGFjazUzLmFkYiwgcy1wYWNrNTQuYWRiLCBzLXBhY2s1NS5hZGIsIHMtcGFjazU2LmFkYiwKCXMtcGFjazU3LmFkYiwgcy1wYWNrNTguYWRiLCBzLXBhY2s1OS5hZGIsIHMtcGFjazYwLmFkYiwgcy1wYWNrNjEuYWRiLAoJcy1wYWNrNjIuYWRiLCBzLXBhY2s2My5hZGIsIHMtcG9vbG9jLmFkYiwgcy1wb29zaXouYWRiLCBzLXNjYXZhbC5hZGIsCglzLXNlcXVpby5hZGIsIHMtc2hhc3RvLmFkYiwgcy1zdGFsaWIuYWRzLCBzLXN0cmF0dC5hZGIsIHMtc3RyY29tLmFkYiwKCXMtdGFhc2RlLmFkYiwgcy10YXNkZWIuYWRiLCBzLXRhc3V0aS5hZHMsIHMtdGF0YWF0LmFkcywgcy10cG9iZW4uYWRzLAoJcy12YWxlbnUuYWRiLCBzLXdpZGVudS5hZGIsIHMtd3dkZW51LmFkYiwgcy1hZGRvcGUuYWRiLCBhLXN0em1hcC5hZGIsCglhLXp0Y3N0ci5hZGIsIGEtenRleGlvLmFkYiwgcy1vc2ludGUtbGludXgtaHBwYS5hZHM6IFJlcGxhY2UKCVVuY2hlY2tlZF8qIGJ5IEFkYS5VbmNoZWNrZWRfKgoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLXN0cmluZy5hZGIsIHMtcHJvaW5mLWlyaXgtYXRocmVhZC5hZGIsIHMtZ2xvbG9jLW1pbmd3LmFkYiwKCXMtdGZzZXRyLWRlZmF1bHQuYWRiLCBnbmF0ZmluZC5hZGIsIGduYXR4cmVmLmFkYiwgZ3ByZXAuYWRiLAoJZy1yZWdleHAuYWRiLCBnLXJlZ2V4cC5hZHMsIGctcmVncGF0LmFkcywgZy10YXNsb2MuYWRiLCBnLXRhc2xvYy5hZHMsCglvdXRwdXQuYWRiLCBzd2l0Y2gtbS5hZHMsIHRyZWVfaW4uYWRzLCB0cmVlX2lvLmFkcywgaW5kZXBzdy5hZHMsCglnLXV0Zl8zMi5hZGIsIGctdXRmXzMyLmFkcywgYS13aWNodW4uYWRiLCBhLXdpY2h1bi5hZHMsIGEtemNodW5pLmFkYiwKCWEtemNodW5pLmFkczogUmVwbGFjZSBHTkFULnh4eCBieSBTeXN0ZW0ueHh4IHdoZW4gYXBwcm9wcmlhdGUuCgoJKiBzLXV0Zl8zMi5hZGIsIHMtdXRmXzMyLmFkcywgcy1vc19saWIuYWRiLCBzLW9zX2xpYi5hZHMsIHMtcmVnZXhwLmFkYiwKCXMtcmVnZXhwLmFkcywgcy1yZWdwYXQuYWRiLCBzLXJlZ3BhdC5hZHMsIHMtc3RyaW5nLmFkYiwgcy1zdHJpbmcuYWRzLAoJcy10YXNsb2MuYWRiLCBzLXRhc2xvYy5hZHM6IE5ldyBmaWxlcy4KCjIwMDctMDYtMDYgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIGctZXhwZWN0LXZtcy5hZGI6IAoJKFNlbmRfU2lnbmFsLCBDbG9zZSk6IFJhaXNlIEludmFsaWRfUHJvY2VzcyBpZiB0aGUgcHJvY2VzcyBpZCBpcyBpbnZhbGlkLgoJKiBnLWV4cGVjdC5hZHMsIGctZXhwZWN0LmFkYiAoU2VuZCk6IEF2b2lkIHVzZWxlc3MgY29weSBvZiB0aGUgc3RyaW5nLgoJKFNlbmRfU2lnbmFsLCBDbG9zZSk6IFJhaXNlIEludmFsaWRfUHJvY2VzcyBpZiB0aGUgcHJvY2VzcyBpZCBpcwoJaW52YWxpZC4KCShQYXR0ZXJuX01hdGNoZXJfQWNjZXNzKTogSXMgbm93IGEgZ2VuZXJhbCBhY2Nlc3MgdHlwZSB0byBiZSBhYmxlIHRvCgl1c2UgYWxpYXNlZCBzdHJpbmcuCgoyMDA3LTA2LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGEtaW50bmFtLWFpeC5hZHM6IEFkanVzdCBjb21tZW50IHRvIGFjY291bnQgZm9yIFNJR0FEQUFCT1JUIGNoYW5nZQoJKFNJR0VNVCBpcyBub3cgdXNlZCBpbnN0ZWFkIG9mIFNJR1RFUk0gb24gQUlYKS4KCgkqIHMtb3NpbnRlLWFpeC5hZHMgKExpbmtlcl9PcHRpb25zKTogVXNlIC1wdGhyZWFkIGluc3RlYWQgb2YgLWxwdGhyZWFkcy4KCShUaW1lX1NsaWNlX1N1cHBvcnRlZCk6IFNldCB0byBUcnVlLgoJVXNlIFNJR0VNVCBpbnN0ZWFkIG9mIFNJR1RFUk0gYXMgU0lHQURBQUJPUlQuCgoyMDA3LTA2LTA2ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogYS1jYWxlbmQuYWRzLCBhLWNhbGVuZC5hZGIsIGEtY2FsZW5kLXZtcy5hZHMsIGEtY2FsZW5kLXZtcy5hZGIgKCItIgoJKFRpbWUsIFRpbWUpKTogVXNlIFRvX1JlbGF0aXZlX1RpbWUgcmF0aGVyIHRoYW4gbWFudWFsIGNhbGN1bGF0aW9uIHRvCglleHByZXNzIHRoZSBib3VuZHMgb2YgRHVyYXRpb24gYXMgVGltZS4gUmFpc2UgVGltZV9FcnJvciB3aGVuIHRoZQoJcmVzdWx0IGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGhpZ2hlciBib3VuZCBvZiBEdXJhdGlvbiAob24gdGhlCgltYXJnaW4gY2FzZSkuCgkoIisiIChUaW1lLCBEdXJhdGlvbikpOiBSZW9yZGVyIGNvZGUuIFJlbW92ZSB0aGUgZGVjbGFyYXRpb24gb2YgY29uc3RhbnQKCUFkYV9IaWdoX0FuZF9MZWFwcy4KCSgiLSIgKFRpbWUsIER1cmF0aW9uKSk6IFJlb3JkZXIgY29kZS4gUmVtb3ZlIHRoZSBkZWNsYXJhdGlvbiBvZiBjb25zdGFudAoJQWRhX0hpZ2hfQW5kX0xlYXBzLgoJKCItIiAoVGltZSwgVGltZSkpOiBSZW9yZGVyIGNvZGUuCgkoQWxsX0xlYXBfU2Vjb25kcyk6IFJlbW92ZWQuCgkoQXJpdGhtZXRpY19PcGVyYXRpb25zLkFkZCk6IFJlbW92ZSBzaWduIHJlbGF0ZWQga2x1ZGdlLgoJKEFyaXRobWV0aWNfT3BlcmF0aW9ucy5EaWZmZXJlbmNlKTogQ29udHJvbCB0aGUgbGVhcHMgc2Vjb25kcyBwcm9jZXNzaW5nCgl3aXRoIGZsYWcgTGVhcF9TdXBwb3J0LgoJKEFyaXRobWV0aWNfT3BlcmF0aW9ucy5TdWJ0cmFjdCk6IFJlbW92ZSBzaWduIHJlbGF0ZWQga2x1ZGdlLgoJKENoZWNrX1dpdGhpbl9UaW1lX0JvdW5kcyk6IE5ldyBwcm9jZWR1cmUuCgkoQ2xvY2spOiBDb250cm9sIHRoZSBsZWFwIHNlY29uZHMgcHJvY2Vzc2luZyB3aXRoIGZsYWcgTGVhcF9TdXBwb3J0LgoJKEN1bXVsYXRpdmVfTGVhcF9TZWNvbmRzKTogQXNzZXJ0IHRoYXQgdGhlIHRhcmdldCBzdXBwb3J0cyBsZWFwIHNlY29uZHMuCgkoRm9ybWF0dGluZ19PcGVyYXRpb25zLlNwbGl0KTogQ29udHJvbCB0aGUgbGVhcCBzZWNvbmRzIHByb2Nlc3Npbmcgd2l0aAoJZmxhZyBMZWFwX1N1cHBvcnQuCgkoRm9ybWF0dGluZ19PcGVyYXRpb25zLlRpbWVfT2YpOiBDb250cm9sIHRoZSBsZWFwcyBzZWNvbmRzIHByb2Nlc3NpbmcKCXdpdGggZmxhZyBMZWFwX1N1cHBvcnQuIEFkanVzdCB0aGUgeWVhciwgbW9udGggYW5kIGRheSAoaWYgYXBwbGljYWJsZSkKCXdoZW4gdGhlIHZhbHVlIG9mIGRheSBzZWNvbmRzIGRlc2lnbmF0ZXMgYSBuZXcgZGF5LgoJKFNwbGl0KTogVXNlIHBhcmFtZXRlciBhc3NvY2lhdGlvbnMgZm9yIGJldHRlciByZWFkYWJpbGl0eS4gSW50ZWdyYXRlCglmbGFnIElzX0FkYV8wNS4KCShUaW1lX09mKTogVXNlIHBhcmFtZXRlciBhc3NvY2lhdGlvbnMgZm9yIGJldHRlciByZWFkYWJpbGl0eS4gSW50ZWdyYXRlCglmbGFnIElzX0FkYV8wNS4KCgkqIGEtY2FsZm9yLmFkYiAoU3BsaXQpOiBVc2UgcGFyYW1ldGVyIGFzc29jaWF0aW9ucyBmb3IgYmV0dGVyCglyZWFkYWJpbGl0eS4gSW50ZWdyYXRlIGZsYWcgSXNfQWRhXzA1LgoJKFRpbWVfT2YpOiBSZW1vdmUgZmxhZyBMZWFwX0NoZWNrcy4gVXNlIHBhcmFtZXRlciBhc3NvY2lhdGlvbnMgZm9yCgliZXR0ZXIgcmVhZGFiaWxpdHkuIEludGVncmF0ZSBmbGFnIElzX0FkYV8wNS4KCjIwMDctMDYtMDYgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtdGFwcm9wLXZtcy5hZGIsIHMtdGFwcm9wLWhwdXgtZGNlLmFkYiwgcy10YXByb3Atdnh3b3Jrcy5hZGIsIAoJcy1vc3ByaW0tcG9zaXguYWRiLCBzLXRhcHJvcC1wb3NpeC5hZGIsIHMtb3NwcmltLXZ4d29ya3MuYWRiLCAKCXMtdGFwcm9wLXNvbGFyaXMuYWRiLCBzLW9zcHJpbS1zb2xhcmlzLmFkYiwgcy10YXByb3AtZHVtbXkuYWRiLCAKCXMtb3NwcmltLXVuaXguYWRiLCBzLW9zaW50ZS1mcmVlYnNkLmFkYiwgcy1vc2ludGUtZnJlZWJzZC5hZHMsIAoJcy1vc2ludGUtbHlueG9zLmFkYiwgcy1vc2ludGUtbHlueG9zLmFkcywgcy10YXByb3AtdHJ1NjQuYWRiLCAKCXMtdGFwcm9wLWx5bnhvcy5hZGIsIHMtdGFwcm9wLWlyaXguYWRiLCBzLW9zaW50ZS10cnU2NC5hZGIsIAoJcy1vc2ludGUtdHJ1NjQuYWRzLCBzLXRhcHJvcC1saW51eC5hZGIsIHMtcGFyYW1lLmFkcywgCglzLXBhcmFtZS12bXMtYWxwaGEuYWRzLCBzLXBhcmFtZS12bXMtaWE2NC5hZHMsIHMtcGFyYW1lLWhwdXguYWRzLCAKCXMtcGFyYW1lLXZtcy1yZXN0cmljdC5hZHMsIHMtcGFyYW1lLWFlNjUzLmFkcywgcy1wYXJhbWUtdnh3b3Jrcy5hZHMsIAoJcy10YXByb3AtbWluZ3cuYWRiLCBzLW9zaW50ZS1seW54b3MtMy5hZHMsIHMtb3NpbnRlLWx5bnhvcy0zLmFkYiwKICAgICAgICBzLW9zcHJpbS1taW5ndy5hZGIgKFRpbWVkX0RlbGF5LCBUaW1lZF9TbGVlcCk6IFJlZ2lzdGVyIHRoZSBiYXNlCgl0aW1lIHdoZW4gZW50ZXJpbmcgdGhpcyByb3V0aW5lIHRvIGRldGVjdCBhIGJhY2t3YXJkIGNsb2NrIHNldHRpbmcKCShtYW51YWwgc2V0dGluZyBvciBEU1QgYWRqdXN0bWVudCksIHRvIGF2b2lkIHdhaXRpbmcgZm9yIGEgbG9uZ2VyIGRlbGF5Cgl0aGFuIG5lZWRlZC4KCShUaW1lX0R1cmF0aW9uLCBUb19UaW1ldmFsLCBzdHJ1Y3RfdGltZXZhbCk6IFJlbW92ZWQgd2hlbiBub3QgcmVsZXZhbnQuCglSZW1vdmUgaGFuZGxpbmcgb2YgZGVmZXJyZWQgcHJpb3JpdHkgY2hhbmdlLCBhbmQgcmVwbGFjZSBieSBzZXR0aW5nIHRoZQoJdGFzayBwcmlvcml0eSBkaXJlY3RseSwgYXMgcmVxdWlyZWQgYnkgQUktMTg4LgoJVXBkYXRlIGNvbW1lbnRzLgoJKE1heF9UYXNrX0ltYWdlX0xlbmd0aCk6IE5ldyBjb25zdGFudC4KCVJlcGxhY2UgV2FybmluZ3MgKE9mZikgYnkgVW5yZWZlcmVuY2VkIHByYWdtYSwgY2xlYW5lci4KCShEeW5hbWljX1ByaW9yaXR5X1N1cHBvcnQpOiBSZW1vdmVkLCBubyBsb25nZXIgbmVlZGVkLgoJKFBvbGxfQmFzZV9Qcmlvcml0eV9DaGFuZ2UpOiBEaXR0by4KCShTZXRfQ2VpbGluZyk6IEFkZCB0aGlzIHByb2NlZHVyZSB0byBjaGFuZ2UgdGhlIGNlaWxpbmcgcHJpb3JpdHkKCWFzc29jaWF0ZWQgdG8gYSBsb2NrLiBUaGlzIGlzIGEgZHVtbXkgaW1wbGVtZW50YXRpb24gYmVjYXVzZSBkeW5hbWljCglwcmlvcml0eSBjZWlsaW5ncyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBzeXN0ZW0uCgoJKiBhLWR5bnByaS5hZGIgKFNldF9Qcmlvcml0eSk6IFRha2UgaW50byBhY2NvdW50IGNhc2Ugd2hlcmUgVGFyZ2V0IGlzCglhY2NlcHRpbmcgYSBSViB3aXRoIGl0cyBwcmlvcml0eSBib29zdGVkLgoJUmVtb3ZlIGhhbmRsaW5nIG9mIGRlZmVycmVkIHByaW9yaXR5IGNoYW5nZSwgYW5kIHJlcGxhY2UgYnkgc2V0dGluZyB0aGUKCXRhc2sgcHJpb3JpdHkgZGlyZWN0bHksIGFzIHJlcXVpcmVkIGJ5IEFJLTE4OC4KCgkqIHMtdGFlbmNhLmFkYiAoVHJ5X1RvX0NhbmNlbF9FbnRyeV9DYWxsKTogUmVtb3ZlIHNwZWNpYWwgY2FzZSBmb3IKCVN1Y2NlZWRlZCA9IFRydWUuCglSZW1vdmUgaGFuZGxpbmcgb2YgZGVmZXJyZWQgcHJpb3JpdHkgY2hhbmdlLCBhbmQgcmVwbGFjZSBieSBzZXR0aW5nIHRoZQoJdGFzayBwcmlvcml0eSBkaXJlY3RseSwgYXMgcmVxdWlyZWQgYnkgQUktMTg4LgoJKFdhaXRfRm9yX0NvbXBsZXRpb24sIFdhaXRfRm9yX0NhbGwsIFRpbWVkX1NlbGVjdGl2ZV9XYWl0KTogQ2hhbmdlIHN0YXRlCglvZiBTZWxmX0lkIGVhcmxpZXIuCgoJKiBzLXRhc2luaS5hZHMsIHMtdGFzaW5pLmFkYiAoV2FrZXVwX0VudHJ5X0NhbGxlcik6IFJlbGF4IGFzc2VydGlvbi4KCShQb2xsX0Jhc2VfUHJpb3JpdHlfQ2hhbmdlKTogUmVtb3ZlZC4KCUNvZGUgY2xlYW4gdXA6IHVzZSBTU0wuQ3VycmVudF9UYXJnZXRfRXhjZXB0aW9uLgoKCSogcy10YXNyZW4uYWRiIChUYXNrX0NvdW50KTogQ2FsbCBZaWVsZCB0byBsZXQgYSBjaGFuY2UgdG8gb3RoZXIgdGFza3MKCXRvIHJ1biBhcyB0aGlzIGlzIGEgcG90ZW50aWFsbHkgZGlzcGF0Y2hpbmcgcG9pbnQuCgkoQ2FsbF9TeW5jaHJvbm91cyk6IFVzZSBMb2NhbF9EZWZlcl9BYm9ydC4KCShDYWxsYWJsZSk6IFJlbGF4IGFzc2VydGlvbi4KCShTZWxlY3RpdmVfV2FpdCk6IFJlbGF4IGFzc2VydGlvbiBpbiBjYXNlIGFib3J0IGlzIG5vdCBhbGxvd2VkLgoJUmVtb3ZlIGhhbmRsaW5nIG9mIGRlZmVycmVkIHByaW9yaXR5IGNoYW5nZSwgYW5kIHJlcGxhY2UgYnkgc2V0dGluZyB0aGUKCXRhc2sgcHJpb3JpdHkgZGlyZWN0bHksIGFzIHJlcXVpcmVkIGJ5IEFJLTE4OC4KCgkqIHMtdGFzdXRpLmFkYiAoTWFrZV9QYXNzaXZlKTogQWRqdXN0IGFzc2VydGlvbnMuCglSZW1vdmUgaGFuZGxpbmcgb2YgZGVmZXJyZWQgcHJpb3JpdHkgY2hhbmdlLCBhbmQgcmVwbGFjZSBieSBzZXR0aW5nIHRoZQoJdGFzayBwcmlvcml0eSBkaXJlY3RseSwgYXMgcmVxdWlyZWQgYnkgQUktMTg4LgoKMjAwNy0wNi0wNiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogc3lzdGVtLXZ4d29ya3Mtc3BhcmN2OS5hZHMsIHN5c3RlbS1zb2xhcmlzLXg4Ni5hZHMsIAoJc3lzdGVtLWlyaXgtbzMyLmFkcywgc3lzdGVtLWZyZWVic2QteDg2LmFkcywgc3lzdGVtLWx5bnhvcy1wcGMuYWRzLCAKCXN5c3RlbS1seW54b3MteDg2LmFkcywgc3lzdGVtLXZ4d29ya3MtbTY4ay5hZHMsIHN5c3RlbS1saW51eC14ODYuYWRzLCAKCXN5c3RlbS12eHdvcmtzLW1pcHMuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1hbHBoYS5hZHMsIAoJc3lzdGVtLXZ4d29ya3MteDg2LmFkcywgc3lzdGVtLWxpbnV4LXBwYy5hZHMsIHN5c3RlbS1taW5ndy5hZHMsIAoJc3lzdGVtLXZtcy16Y3guYWRzLCBzeXN0ZW0tZGFyd2luLXBwYy5hZHMsIHN5c3RlbS12eHdvcmtzLXBwYy5hZHMsIAoJc3lzdGVtLWludGVyaXguYWRzLCBzeXN0ZW0tbGludXgtaHBwYS5hZHMsIHN5c3RlbS10cnU2NC5hZHMsIAoJc3lzdGVtLWhwdXguYWRzLCBzeXN0ZW0taXJpeC1uMzIuYWRzLCBzeXN0ZW0tc29sYXJpcy1zcGFyYy5hZHMsIAoJc3lzdGVtLXNvbGFyaXMtc3BhcmN2OS5hZHMsIHN5c3RlbS12bXMuYWRzLCBzeXN0ZW0uYWRzLAoJc3lzdGVtLXZtc182NC5hZHMsIHN5c3RlbS1ocHV4LWlhNjQuYWRzLCBzeXN0ZW0tbGludXgteDg2XzY0LmFkcywKCXN5c3RlbS1saW51eC1pYTY0LmFkczogRG9jdW1lbnQgbWFwcGluZyBiZXR3ZWVuIEFkYSBhbmQgT1MgcHJpb3JpdGllcy4KCVRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgbGFyZ2VzdCBub24tYmluYXJ5IG1vZHVsdXMgZnJvbSAyKiozMS0xIHRvCgkyKiozMi0xLgoJKENvbXBpbGVyX1N5c3RlbV9WZXJzaW9uKTogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCglDbGVhbiB1cCBzeXN0ZW0gZmlsZXMgYnkgcmVtb3ZpbmcgZmxhZ3Mgb25seSB1c2VkIG9uIGEgc2luZ2xlIHRhcmdldC4KCUFsc28gcmVtb3ZlIG9ic29sZXRlIGZsYWdzLCBvbmx5IHVzZWQgZHVyaW5nIGJvb3RzdHJhcCBmcm9tIHN5c3RlbS5hZHMKCShBZGRyZXNzKTogQWRkIGEgcHJhZ21hIFByZWVsYWJvcmFibGVfSW5pdGlhbGl6YXRpb24uCgoJKiBzeXN0ZW0tYWl4LmFkczogIERpdHRvLgoJKEdDQ19aQ1hfU3VwcG9ydCk6IFNldCB0byB0cnVlLgoJVXBkYXRlIHByaW9yaXR5IHJhbmdlIG9uIEFJWCBhbmQgbWFwIEFkYSBwcmlvcml0aWVzIHRvIHRhcmdldAoJcHJpb3JpdGllcyBhcHByb3ByaWF0ZWx5IGZvciBkaWZmZXJlbnQgc2NoZWR1bGluZyBwb2xpY2llcy4KCgkqIHR0eXBlcy5hZHM6IHNldCBsYXJnZXN0IG5vbi1iaW5hcnkgbW9kdWx1cyBmcm9tIDIqKjMxLTEgdG8gMioqMzItMQoKMjAwNy0wNi0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtbGliLXRndC1zcGVjaWZpYy5hZGIsIG1saWItdGd0LXNwZWNpZmljLmFkcywKCW1saWItdGd0LXZtcy5hZGIsIG1saWItdGd0LXZtcy5hZHM6IE5ldyBmaWxlcy4KCgkqIG1saWItdGd0LmFkYiwgbWxpYi10Z3QuYWRzLCBtbGliLXRndC1kYXJ3aW4uYWRiLCAKCW1saWItdGd0LXZ4d29ya3MuYWRiLCBtbGliLXRndC1taW5ndy5hZGIsIG1saWItdGd0LWx5bnhvcy5hZGIsIAoJbWxpYi10Z3QtbGludXguYWRiLCBtbGliLXRndC1zb2xhcmlzLmFkYiwgbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwgCgltbGliLXRndC12bXMtaWE2NC5hZGIsIG1saWItdGd0LWFpeC5hZGIsIG1saWItdGd0LWlyaXguYWRiLCAKCW1saWItdGd0LWhwdXguYWRiLCBtbGliLXRndC10cnU2NC5hZGI6IE1ha2UgYSBjb21tb24gYm9keSBmb3IgcGFja2FnZQoJTUxpYi5UZ3QsIGNvbnRhaW5pbmcgdGhlIGRlZmF1bHQgdmVyc2lvbnMgb2YgdGhlIGV4cG9ydGVkIHN1YnByb2dyYW1zLgoJRm9yIGVhY2ggcGxhdGZvcm0sIGNyZWF0ZSBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIGJvZHkgb2YgbmV3IGNoaWxkCglwYWNrYWdlIE1MaWIuVGd0LlNwZWNpZmljIHRoYXQgY29udGFpbnMgb25seSB0aGUgYm9keSBvZiBzdWJwcm9ncmFtcwoJdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQuCgkoQXJjaGl2ZV9CdWlsZGVyX0FwcGVuZF9PcHRpb25zKTogTmV3IGZ1bmN0aW9uLgoKMjAwNy0wNi0wNiAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLWFpeC5hZGI6IE1hcCBBZGEgcHJpb3JpdGllcyB0byB0YXJnZXQgcHJpb3JpdGllcwoJYXBwcm9wcmlhdGVseSBmb3IgZGlmZmVyZW50IHNjaGVkdWxpbmcgcG9saWNpZXMuCgoyMDA3LTA2LTA2ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLW9zaW50ZS1saW51eC5hZHMgKHNpZ3NldF90KTogQnVtcCBhbGlnbm1lbnQgdG8gbWF0Y2ggbW9yZSBjbG9zZWx5CglpdHMgQyBjb3VudGVycGFydC4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIFVuY2hlY2tlZF9Db252ZXJzaW9uLCBhbmQgdXNlIEFkYS54eHggaW5zdGVhZC4KCVJlcGxhY2UgVW5jaGVja2VkX0NvbnZlcnNpb24gYnkgQWRhLlVuY2hlY2tlZF9Db252ZXJzaW9uLiAKCjIwMDctMDYtMDYgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWRhY29yZS5jb20+CgoJKiBzLW9zcHJpbS12bXMuYWRzLCBzLW9zcHJpbS12bXMuYWRiIChJbml0aWFsaXplKTogTmV3IHByb2NlZHVyZS4KCU5vb3Agb24gVk1TLCBhZGRlZCBmb3IgaW50ZXJmYWNlIGNvbW1vbmFsaXR5LgoKMjAwNy0wNi0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSAgICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPG9iamVjdD46IE1hbnVhbGx5IG1hcmsgdGhlIHRvcCBvZiB0aGUKCXJlbmFtZWQgZXhwcmVzc2lvbiBvZiBhIGZ1bGwgcmVuYW1pbmcgYXQgdG9wbGV2ZWwuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIG9iamVjdCk6IElmIG5vdCBkZWZpbmluZywgZG8gbm90IGxvb2sgaW5zaWRlCgl0aGUgdmFsdWVzIHRoZSBjb25zdGFudCBpcyBpbml0aWFsaXplZCB0byBpZiBpdCBpcyBhbiBOX0FsbG9jYXRvci4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX0FycmF5X1N1YnR5cGU+OiBNYW51YWxseSBtYXJrIHRoZSB0b3Agb2YgdGhlCglUWVBFX1NJWkVfVU5JVCBvZiBpbm5lciB0eXBlcyBhZnRlciB0aGUgc3RyaWRlIGlzIGVsYWJvcmF0ZWQuCgkobWFrZV9hbGlnbmluZ190eXBlKTogQWNjZXB0IGFuIGV4dHJhIFJPT00gYXJndW1lbnQgZm9yIHN0b3JhZ2UgdG8gYmUKCW1hZGUgYXZhaWxhYmxlIGJlZm9yZSB0aGUgYWxpZ25lZCBmaWVsZCwgYW5kIGFuIGV4dHJhIEJBU0VfQUxJR04KCWFyZ3VtZW50IGZvciBjYWxsZXJzIHRvIHBhc3MgdGhlIGFsaWdubWVudCBndWFyYW50ZWVkIHRvIGJlIGhvbm9yZWQgZm9yCgl0aGUgd2hvbGUgYWxpZ25pbmcgb2JqZWN0LiBBdm9pZCBjYWxsIHRvIGZpbmlzaF9yZWNvcmRfdHlwZSwgd2hpY2ggb25seQoJaW50ZXJmZXJlcyB3aXRoIHRoZSBzaXplcyB3ZSB3YW50IHRvIHNldC4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogUGFzcyB0aGUgcmVxdWlyZWQgZXh0cmEgYXJndW1lbnRzIHRvCgltYWtlX2FsaWduaW5nX3R5cGUgZm9yIHN1cGVyLWFsaWduZWQgb2JqZWN0cyBvbiBzdGFjay4KCShjb21wb25lbnRzX3RvX3JlY29yZCk6IFBhc3MgdGhlIGFkanVzdGVkIHNpemUgb2YgdGhlIHR5cGUgd2hlbiBjcmVhdGluZwoJZmllbGRzIGluIHRoZSBxdWFsaWZpZWQgdW5pb24gZm9yIHRoZSB2YXJpYW50IHBhcnQuCgkoZ25hdF9zdWJzdGl0dXRlX2luX3R5cGUpOiBDb3B5IFRZUEVfVVNFUl9BTElHTi4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9TaWduZWRfSW50ZWdlcl9TdWJ0eXBlKTogTGlrZXdpc2UgZm9yCglwYWNrZWQgYXJyYXkgdHlwZS4KCShtYXliZV9wYWRfdHlwZSk6IFNldCBUWVBFX1VTRVJfQUxJR04uCgkobWFrZV9hbGlnbmluZ190eXBlKTogTGlrZXdpc2UuCglBTElHTiBhcmd1bWVudCBpcyB1bnNpZ25lZCBpbnQuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfRnVuY3Rpb24pOiBCYWNrIGFubm90YXRlIHJldHVybiBtZWNoYW5pc20uCgkoZ25hdF90b19nbnVfcGFyYW0pOiBMaWtld2lzZSwgZm9yIHBhcmFtZXRlcnMuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8b2JqZWN0PjogQWx3YXlzIGluc3RhbnRpYXRlIHRoZSByZW5hbWluZyBvYmplY3QKCWlmIGl0IGlzIGNvbnN0YW50IGFuZCBzdGVtcyBmcm9tIGEgZnVuY3Rpb24gY2FsbC4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1JlY29yZF9UeXBlPjogU2V0IHBhY2tlZCB0byAtMiBpZiB0aGUgYWxpZ25tZW50CglvZiB0aGUgcmVjb3JkIGlzIHNwZWNpZmllZC4gIEFkanVzdCBhY2NvcmRpbmdseS4KCShhZGp1c3RfcGFja2VkKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShnbmF0X3RvX2dudV9maWVsZCk6IFVzZSBpdCB0byBhZGp1c3QgdGhlIHBhY2tlZG5lc3Mgc2V0dGluZy4KCShjb21wb25lbnRzX3RvX3JlY29yZCk6IExpa2V3aXNlLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPG9iamVjdD46IERvIG5vdCB0ZXN0IHRoZSByZW5hbWVkIGV4cHJlc3Npb24gZm9yCglzaWRlLWVmZmVjdHMgaWYgdGhlIG9iamVjdCBpcyBkZWVtZWQgY29uc3RhbnQuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9BcnJheV9UeXBlPjogQ3JlYXRlIGEgbmFtZSBmb3IgdGhlIGZhdCBwb2ludGVyCgl0eXBlIGluc3RlYWQgb2YgbWVyZWx5IGZpbmFsaXppbmcgaXQuICBUaWR5LgoJPEVfQWNjZXNzX1N1YnByb2dyYW1fVHlwZT46IFJldHJpZXZlIHRoZSB0eXBlIGZyb20gdGhlIFRZUEVfREVDTC4KCTxFX0FjY2Vzc19UeXBlPjogTGlrZXdpc2UuCgkoZGVmZXJfZGVidWdfaW5jb21wbGV0ZV9saXN0KTogUmVuYW1lIHRvIGRlZmVyX2ZpbmFsaXplX2xpc3QuCgkoZGVmZXJfZGVidWdfbGV2ZWwpOiBEZWxldGUuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8ZGVidWdfZGVmZXJyZWQ+OiBMaWtld2lzZQoJPEVfQXJyYXlfVHlwZT46IENhbGwgcmVzdF9vZl9yZWNvcmRfdHlwZV9jb21waWxhdGlvbiBvbiB0aGUgZmF0IHBvaW50ZXIKCXR5cGUuCgk8RV9SZWNvcmRfVHlwZT46IERvIG5vdCBleHBsaWNpdGx5IGRlZmVyIGZpbmFsaXppbmcgdGhlIHR5cGUuCglBZGp1c3QgZm9yIHdyaXRlX3JlY29yZF90eXBlX2RlYnVnX2luZm8gcmVuYW1pbmcuCgk8RV9TdWJwcm9ncmFtX1R5cGU+OiBMaWtld2lzZS4KCUZpbmFsaXplIGRlZmVycmVkIHR5cGVzIHJpZ2h0IGFmdGVyIGRlZmVycmVkIGluY29tcGxldGUgdHlwZXMgYXJlCglleHBhbmRlZC4KCShyZXN0X29mX3R5cGVfZGVjbF9jb21waWxhdGlvbik6IE5ldyBnbG9iYWwgZnVuY3Rpb24uCgkoY29tcG9uZW50c190b19yZWNvcmQpOiBSZW5hbWUgZGVmZXJfZGVidWcgcGFyYW1ldGVyIHRvIGRvX25vdF9maW5hbGl6ZS4KCShjb21wb25lbnRzX3RvX3JlY29yZCk6IFByb3BhZ2F0ZSB0aGUgcGFja2VkbmVzcyB0byB0aGUgZmllbGRzIG9mIHRoZQoJcXVhbGlmaWVkIHVuaW9uIHR5cGUgaWYgdGhlcmUgaXMgYSB2YXJpYW50IHBhcnQuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9BcnJheV9UeXBlPjogVXNlIG5ldyBmdW5jdGlvbgoJaW5zdGVhZCBvZiBpbmxpbmUgY29kZSB0byBhZGp1c3QgdGhlIFhVVCBmaWVsZCBvZmZzZXRzLgoJKGduYXRfdG9fZ251X2VudGl0eSk6IEFkanVzdCBmb3IgbmV3IHByb3RvdHlwZSBvZiBmaW5pc2hfcmVjb3JkX3R5cGUuCgk8RV9SZWNvcmRfU3VidHlwZT46IERvIG5vdCBsZXQgZmluaXNoX3JlY29yZF90eXBlIGNvbXB1dGUgdGhlIHNpemVzCglhbmQgd3JpdGUgdGhlIGRlYnVnIGluZm8gaWYgdGhlIHR5cGUgZGVyaXZlcyBmcm9tIGEgZGlzY3JpbWluYXRlZCBvbmUuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9BcnJheV9UeXBlPjogQWRqdXN0IGNhbGwgdG8gY3JlYXRlX2luZGV4X3R5cGUuCgk8RV9BcnJheV9TdWJ0eXBlPjogTGlrZXdpc2UuCgk8RV9TdHJpbmdfTGl0ZXJhbF9TdWJ0eXBlPjogTGlrZXdpc2UuCgkoZ25hdF90b19nbnVfZW50aXR5KTogU2V0IFRZUEVfVVNFUl9BTElHTiBvbiB0eXBlcyBvbmx5IGlmIHRoZXkgaGF2ZQoJYW4gYWxpZ25tZW50IGNsYXVzZS4KCShtYXliZV9wYWRfdHlwZSk6IFVwZGF0ZSBPUklHX1NJWkUgdG8gdGhlIG1pbmltdW0gcmVxdWlyZWQgdG8gbWVldCBBTElHTgoJYmVmb3JlIGdpdmluZyB3YXJuaW5nLgoJKHByZXBlbmRfb25lX2F0dHJpYnV0ZV90byk6IE5ldyBmdW5jdGlvbiwgaGVscGVyIHRvIHByZXBlbmQgYW4gYXR0cmlidXRlCgl0byBhbiBhdHRyaWJ1dGUgbGlzdC4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1Byb2NlZHVyZT46IFVzZSBpdC4KCShwcmVwZW5kX2F0dHJpYnV0ZXMpOiBMaWtld2lzZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogVXNlIGNvbnN0YW50cyBvZiB0aGUgcHJvcGVyIHR5cGUuCgk8RV9BcnJheV9UeXBlPjogRGVjbGFyZSB0aGUgcGFkZGluZyB0eXBlIGZvciB0aGUgZWxlbWVudCB0eXBlLCBpZiBhbnkuCgk8RV9BcnJheV9TdWJ0eXBlPjogTGlrZXdpc2UuCgkoZGVmZXJfbGltaXRlZF93aXRoKTogTmV3IHZhcmlhYmxlLgoJKEdpZ2lfRXF1aXZhbGVudF9UeXBlKTogTmV3IGZ1bmN0aW9uLgoJKGduYXRfdG9fZ251X2VudGl0eSk6IFVzZSBpdCBhdCBzdGFydCBhbmQgdXNlIHJlc3VsdCB0aHJvdWdob3V0LgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0FjY2Vzc19UeXBlKTogUmV3b3JrIHRvIHVzZQoJR2lnaV9FcXVpdmFsZW50X1R5cGUsIHN1cHBvcnQgTGltaXRlZF9XaXRoLCBhbGxvdyB0d28gbGV2ZWxzIG9mCglpbmRpcmVjdGlvbiwgcHJlY29tcHV0ZSBpZiB1bmNvbnN0cmFpbmVkIGFycmF5IHRvIHNpbXBsaWZ5IGxvZ2ljLCBhbmQKCXVzZSBkZWZlcl9saW1pdGVkX3dpdGggdG8gZGVmZXIgZWxhYm9yYXRpb24gb2Ygc29tZSB0eXBlcyBmcm9tIGxpbWl0ZWQKCXdpdGguCgkoZmluYWxpemVfZnJvbV93aXRoX3R5cGVzKTogTmV3IGZ1bmN0aW9uLgoKMjAwNy0wNi0wNiAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgVHJpc3RhbiBHaW5nb2xkICA8Z2luZ29sZEBhZGFjb3JlLmNvbT4KCSAgICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdHJhbnMuYyAoSWRlbnRpZmllcl90b19nbnUpOiBDaGFuZ2UgdGVzdCBmb3IgZGVmZXJyZWQgY29uc3RhbnQgYnkKCWFkZGluZyBndWFyZCB0aGF0IHRoZSBlbnRpdHkgaXMgYW4gRV9Db25zdGFudCBiZWZvcmUgdGVzdGluZyBwcmVzZW5jZQoJb2YgRnVsbF92aWV3IChhbmQgcmVtb3ZlIHVubmVjZXNzYXJ5IHRlc3QgdGhhdCBlbnRpdHkgaXMgbm90IGEgdHlwZSkuCglGb3IgYSBDT05TVF9ERUNMIHVzZWQgYnkgcmVmZXJlbmNlLCBtYW51YWxseSByZXRyaWV2ZQoJdGhlIERFQ0xfSU5JVElBTC4gIERvIG5vdCBpbnZva2UgZm9sZCBpbiB0aGUgb3RoZXIgREVDTF9QIGNhc2VzIGVpdGhlci4KCShzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBNb3ZlIGZyb20gdXRpbHMuYyB0byBoZXJlLgoJKHN0cnVjdCBwYXJtX2F0dHIpOiBOZXcgc3RydWN0dXJlLgoJKHBhcm1fYXR0ciwgcGFybV9hdHRyIHZlY3RvciwgcGFybV9hdHRyIEdDIHZlY3Rvcik6IE5ldyB0eXBlcy4KCShmX3Bhcm1fYXR0cl9jYWNoZSk6IE5ldyBtYWNyby4KCShBdHRyaWJ1dGVfdG9fZ251KSA8QXR0cl9MZW5ndGg+OiBXaGVuIG5vdCBvcHRpbWl6aW5nLCBjYWNoZSB0aGUKCWV4cHJlc3Npb25zIGZvciB0aGUgJ0ZpcnN0LCAnTGFzdCBhbmQgJ0xlbmd0aCBhdHRyaWJ1dGVzIG9mIHRoZQoJdW5jb25zdHJhaW5lZCBhcnJheSBJTiBwYXJhbWV0ZXJzLgoJKFN1YnByb2dyYW1fQm9keV90b19nbnUpOiBVc2UgZ251X3N1YnByb2dfZGVjbCB0aHJvdWdob3V0LgoJQWxsb2NhdGUgdGhlIGluZm9ybWF0aW9uIHN0cnVjdHVyZSBmb3IgdGhlIGZ1bmN0aW9uIGVhcmxpZXIsIGFzIHdlbGwKCWFzIHRoZSBsYW5ndWFnZS1zcGVjaWZpYyBwYXJ0LgoJSWYgdGhlIHBhcmFtZXRlciBhdHRyaWJ1dGVzIGNhY2hlIGhhcyBiZWVuIHBvcHVsYXRlZCwgZXZhbHVhdGUgdGhlCgljYWNoZWQgZXhwcmVzc2lvbnMgb24gZW50cnkuCgkodGFrZXNfYWRkcmVzcyk6IEFkZCBPUEVSQU5EX1RZUEUgcGFyYW1ldGVyLiAgSGFuZGxlIE5fRnVuY3Rpb25fQ2FsbCwKCU5fUHJvY2VkdXJlX0NhbGxfU3RhdGVtZW50IGFuZCBOX0luZGV4ZWRfQ29tcG9uZW50LgoJKFByYWdtYV90b19nbnUpOiBUcmFuc2xhdGUgaW5zcGVjdGlvbl9wb2ludCB0byBhbiBhc20gc3RhdGVtZW50Cgljb250YWluYWluZyBhIGNvbW1lbnQgYW5kIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgKGVpdGhlciBpdHMgYWRkcmVzcwoJZm9yIEJMS21vZGUgb3IgaXRzIHZhbHVlKS4KCShJZGVudGlmaWVyX3RvX2dudSk6IFVzZSBUUkVFX0NPTlNUQU5UIGluc3RlYWQgb2YgQ09OU1RfREVDTCB0byBkZWNpZGUKCXRvIGdvIHRvIERFQ0xfSU5JVElBTC4gVG9nZXRoZXIgd2l0aCB0aGUgc2l6ZSBjb25zdHJhaW50IHJlbGF4YXRpb24KCWluIGNyZWF0ZV92YXJfZGVjbCwgZW5sYXJnZXMgdGhlIHNldCBvZiBzaXR1YXRpb25zIGluIHdoaWNoIGFuCglpZGVudGlmaWVyIG1heSBiZSB1c2VkIGFzIGFuIGluaXRpYWxpemVyIHdpdGhvdXQgaW1wbHlpbmcgZWxhYm9yYXRpb24KCWNvZGUuCgkoU3VicHJvZ3JhbV9Cb2R5X3RvX2dudSk6IERvIG5vdCBmaWRkbGUgd2l0aCB0aGUgZGVidWcgaW50ZXJmYWNlIGJ1dCBzZXQKCURFQ0xfSUdOT1JFRF9QIG9uIHRoZSBmdW5jdGlvbiBpZiBOZWVkc19EZWJ1Z19JbmZvIGlzIG5vdCBzZXQgb24gdGhlCglub2RlLgoJKG1heWJlX3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBSZW1vdmUgbHZhbHVlc19vbmx5IHBhcmFtZXRlci4KCShnbmF0X3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBBZGp1c3QgZm9yIGFib3ZlIGNoYW5nZS4KCShnbmF0X3RvX2dudSk6IERvIG5vdCBzZXQgbG9jYXRpb24gaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdAoJaWYgaXQgaXMgYSByZWZlcmVuY2UuCgkoYWRkX2NsZWFudXApOiBBZGQgZ25hdF9ub2RlIHBhcmFtZXRlciBhbmQgc2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUKCWNsZWFudXAgdG8gaXQuCgkoSGFuZGxlZF9TZXF1ZW5jZV9PZl9TdGF0ZW1lbnRzX3RvX2dudSk6IEFkanVzdCBjYWxscyB0byBhZGRfY2xlYW51cC4KCShFeGNlcHRpb25fSGFuZGxlcl90b19nbnVfemN4KTogTGlrZXdpc2UuCgkoZ2lnaSk6IFJlbW92ZSB0aGUgY2dyYXBoIG5vZGUgaWYgdGhlIGVsYWJvcmF0aW9uIHByb2NlZHVyZSBpcyBlbXB0eS4KCShTdWJwcm9ncmFtX0JvZHlfdG9fZ251KTogSWYgYSBzdHViIGlzIGF0dGFjaGVkIHRvIHRoZSBzdWJwcm9ncmFtLCBlbWl0Cgl0aGUgZm9ybWVyIHJpZ2h0IGFmdGVyIHRoZSBsYXR0ZXIuCgkoc3RhcnRfc3RtdF9ncm91cCk6IE1ha2UgZ2xvYmFsLgoJKGVuZF9zdG10X2dyb3VwKTogTGlrZXdpc2UuCgkoZ251X2NvbnN0cmFpbnRfZXJyb3JfbGFiZWxfc3RhY2ssIGdudV9zdG9yYWdlX2Vycm9yX2xhYmVsX3N0YWNrKTogTmV3Cgl2YXJzLgoJKGdudV9wcm9ncmFtX2Vycm9yX2xhYmVsX3N0YWNrKTogTGlrZXdpc2UuCgkoZ2lnaSk6IEluaXRpYWxpemUgdGhlbS4KCShjYWxsX3RvX2dudSwgZ25hdF90b19nbnUsIGVtaXRfY2hlY2spOiBBZGQgbmV3IGFyZyB0byBidWlsZF9jYWxsX3JhaXNlLgoJKGduYXRfdG9fZ251LCBOX3tQdXNoLFBvcH1fe0NvbnN0cmFpbnQsU3RvcmFnZSxQcm9ncmFtfV9FcnJvcl9MYWJlbCk6CglOZXcgY2FzZXMuCgkocHVzaF9leGNlcHRpb25fbGFiZWxfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkodGFrZXNfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbi4KCgkqIHV0aWxzLmMgKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IE1vdmUgdG8gdHJhbnMuYyBmcm9tIGhlcmUuCgkodW5jaGVja2VkX2NvbnZlcnQpOiBEbyBub3Qgd3JhcCB1cCBpbnRlZ2VyIGNvbnN0YW50cyBpbgoJVklFV19DT05WRVJUX0VYUFJzLgoJKGNyZWF0ZV92YXJfZGVjbF8xKTogRGVjb3VwbGUgVFJFRV9DT05TVEFOVCBmcm9tIENPTlNUX0RFQ0wuIFByZXZlbnQKCXRoZSBsYXR0ZXIgZm9yIGFnZ3JlZ2F0ZSB0eXBlcywgdW5leHBlY3RlZCBieSBsYXRlciBwYXNzZXMsIGFuZCByZWxheCBhbgoJYXJiaXRyYXJ5IHNpemUgY29uc3RyYWludCBvbiB0aGUgZm9ybWVyLgoJKGNyZWF0ZV9maWVsZF9kZWNsKTogVXNlIHRyZWVfaW50X2NzdF9lcXVhbCBpbnN0ZWFkIG9mIG9wZXJhbmRfZXF1YWxfcAoJdG8gY29tcGFyZSB0aGUgc2l6ZXMuCgkoY29udmVydF92bXNfZGVzY3JpcHRvcik6IFdoZW4gY29udmVydGluZyB0byBhIGZhdCBwb2ludGVyIHR5cGUsIGJlCglwcmVwYXJlZCBmb3IgYSBTIGRlc2NyaXB0b3IgYXQgcnVudGltZSBpbiBzcGl0ZSBvZiBhIFNCIHNwZWNpZmljYXRpb24uCgkoc2hpZnRfdW5jX2NvbXBvbmVudHNfZm9yX3RoaW5fcG9pbnRlcnMpOiBOZXcgZnVuY3Rpb24uCgkod3JpdGVfcmVjb3JkX3R5cGVfZGVidWdfaW5mbyk6IEZvciB2YXJpYWJsZS1zaXplZCBmaWVsZHMsIGNhcCB0aGUKCWFsaWdubWVudCBvZiB0aGUgcG9pbnRlciB0byB0aGUgY29tcHV0ZWQgYWxpZ25tZW50LgoJKGZpbmlzaF9yZWNvcmRfdHlwZSk6IENoYW5nZSBIQVNfUkVQIHBhcmFtZXRlciBpbnRvIFJFUF9MRVZFTC4KCUlmIFJFUF9MRVZFTCBpcyAyLCBkbyBub3QgY29tcHV0ZSB0aGUgc2l6ZXMuCgkoYnVpbGRfdm1zX2Rlc2NyaXB0b3IpOiBBZGp1c3QgZm9yIG5ldyBwcm90b3R5cGUgb2YgZmluaXNoX3JlY29yZF90eXBlLgoJKGJ1aWxkX3VuY19vYmplY3RfdHlwZSk6IExpa2V3aXNlLgoJKGRlY2xhcmVfZGVidWdfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCiAgICAgICAgKiBhZGEtdHJlZS5kZWY6IFVTRV9TVE1UOiByZW1vdmVkIChub3QgZW1pdHRlZCBhbnltb3JlKS4KCiAgICAgICAgKiBtaXNjLmMgKGduYXRfZXhwYW5kX2V4cHIpOiBDYWxsIHRvIGduYXRfZXhwYW5kX3N0bXQgcmVtb3ZlZCBiZWNhdXNlCiAgICAgICAgbm8gc3RhdGVtZW50IGlzIGV4cGFuZGFibGUgYW55bW9yZS4KICAgICAgICAoZ25hdF9pbml0X2djY19laCk6IERvIG5vdCBpbml0aWFsaXplIHRoZSBEV0FSRi0yIENGSSBtYWNoaW5lcnkgdHdpY2UuCiAgICAgICAgKGduYXRfaGFuZGxlX29wdGlvbik6IE9ubHkgYWxsb3cgZmxhZ19lbGltaW5hdGVfZGVidWdfdHlwZXMgdG8gYmUgc2V0CiAgICAgICAgd2hlbiB0aGUgdXNlciByZXF1ZXN0ZWQgaXQgZXhwbGljaXRlbHkuCiAgICAgICAgKGduYXRfcG9zdF9vcHRpb25zKTogQnkgZGVmYXVsdCwgc2V0IGZsYWdfZWxpbWluYXRlX3VudXNlZF9kZWJ1Z190eXBlcwogICAgICAgIHRvIDAgZm9yIEFkYS4KICAgICAgICAoZ2V0X2FsaWFzX3NldCk6IFJldHVybiBhbGlhcyBzZXQgMCBmb3IgYSB0eXBlIGlmCiAgICAgICAgVFlQRV9VTklWRVJTQUxfQUxJQVNJTkdfUCBpcyBzZXQgb24gaXRzIG1haW4gdmFyaWFudC4KCiAgICAgICAgKiBhZGEtdHJlZS5oOiAoVFlQRV9VTklWRVJTQUxfQUxJQVNJTkdfUCk6IE5ldyBtYWNyby4KICAgICAgICAoREVDTF9GVU5DVElPTl9TVFVCKTogTmV3IGFjY2Vzc29yIG1hY3JvLgogICAgICAgIChTRVRfREVDTF9GVU5DVElPTl9TVFVCKTogTmV3IHNldHRlciBtYWNyby4KCiAgICAgICAgKiBsYW5nLm9wdCAoZmVsaW1pbmF0ZS11bnVzZWQtZGVidWctdHlwZXMpOiBJbnRlcmNlcHQgdGhpcyBmbGFnIGZvciBBZGEuCgoJKiBmZS5oIChHZXRfTG9jYWxfUmFpc2VfQ2FsbF9FbnRpdHksIEdldF9SVF9FeGNlcHRpb25fRW50aXR5KTogTmV3CglkZWNsYXJhdGlvbnMuCgoyMDA3LTA2LTA2ICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogcy1pbnRtYW4tdnh3b3Jrcy5hZHMsIHMtaW50bWFuLXZ4d29ya3MuYWRiIChBYm9ydF9UYXNrX1NpZ25hbCk6CglSZW5hbWUgdG8gQWJvcnRfVGFza19JbnRlcnJ1cHQgdG8gYmUgYWJsZSB0byBrZWVwIHRoZSBzYW1lIGludGVyZmFjZQoJYXMgdGhlIHJlc3Qgb2YgdGhlIHRhcmdldHMuCgoJKiBzLW9zaW50ZS12eHdvcmtzLmFkcyBzLW9zaW50ZS12eHdvcmtzLmFkYgoJKFRvX1Z4V29ya3NfUHJpb3JpdHkpOiBSZW1vdmUgZXhwbGljaXQgImluIiBtb2RlIGluZGljYXRvcgoKCSogcy1vc2ludGUtdnh3b3JrczYuYWRzLCBzLXZ4d29yay1hcm0uYWRzLCBzeXN0ZW0tdnh3b3Jrcy1hcm0uYWRzOgoJTmV3IGZpbGVzLgoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLWNoYWhhbi5hZHM6IFJlbW92ZSBvYnNvbGVzY2VudCBwcmFnbWFzCgoJKiBhLWNobGF0MS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBjb21wZXJyLmFkYiAoQ29tcGlsZXJfQWJvcnQpOiBOZXcgRmluYWxpemUvT3V0cHV0X01lc3NhZ2VzIGludGVyZmFjZQoJZm9yIEVycm91dAoKCSogZXJyb3V0LmFkYjogTmV3IEZpbmFsaXplL0NvbXBpbGF0aW9uX0Vycm9ycy9PdXRwdXRfTWVzc2FnZXMKCWltcGxlbWVudGF0aW9uCgoJKiBlcnJvdXQuYWRzIChGaW5hbGl6ZSk6IENoYW5nZWQgaW50ZXJmYWNlCgkoT3V0cHV0X01lc3NhZ2VzKTogTmV3IHByb2NlZHVyZQoJKENvbXBpbGF0aW9uX0Vycm9ycyk6IE5ldyBJbnRlcmZhY2UKCgkqIHByZXBjb21wLmFkcywgcHJlcGNvbXAuYWRiIChQYXJzZV9QcmVwcm9jZXNzaW5nX0RhdGFfRmlsZSk6IE5ldwoJRmluYWxpemUvT3V0cHV0X01lc3NhZ2VzIGludGVyZmFjZSBmb3IgRXJyb3V0CgkoUHJlcGFyZV9Ub19QcmVwcm9jZXNzKTogTmV3IEZpbmFsaXplL091dHB1dF9NZXNzYWdlcyBpbnRlcmZhY2UgZm9yCglFcnJvdXQuCgoyMDA3LTA2LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLWV4Y2VwdC5hZHMsIGEtZXhjZXB0LmFkYjogKFJtc2dfMjgpOiBGaXggZGVzY3JpcHRpb24gZm9yIEUuNCgxOCkKCWNoZWNrLgoJKFJhaXNlX0N1cnJlbnRfRXhjZXApOiBDYWxsIERlYnVnX1JhaXNlX0V4Y2VwdGlvbiBqdXN0IGJlZm9yZQoJcHJvcGFnYXRpb24gc3RhcnRzLCB0byBsZXQgZGVidWdnZXJzIGtub3cgYWJvdXQgdGhlIGV2ZW50IGluIGEgcmVsaWFibGUKCWZhc2hpb24uCgkoTG9jYWxfUmFpc2UpOiBNb3ZlZCB0byBTeXN0ZW0uRXhjZXB0aW9ucwoJTW9yZSBjb252ZW5pZW50IHRvIGhhdmUgdGhpcyBhcyBhIHNlcGFyYXRlIHVuaXQKCgkqIHMtZXhjZXB0LmFkYiwgcy1leGNlcHQuYWRzOiBOZXcgZmlsZXMuCgoJKiBhLWV4ZXh0ci5hZGIgKFVuaGFuZGxlZF9FeGNlcHRpb24pOiBEZWxldGUgLSByZXBsYWNlZCBieQoJRGVidWdfVW5oYW5kbGVkX0V4Y2VwdGlvbiBpbiBTeXN0ZW0uRXhjZXB0aW9ucyB3aGVyZSBpdCBiZWxvbmdzCgl0b2dldGhlciB3aXRoIGEgY291cGxlIG9mIG90aGVyIGRlYnVnIGhlbHBlcnMuCgkoTm90aWZ5X1VuaGFuZGxlZF9FeGNlcHRpb24pOiBVc2UgRGVidWdfVW5oYW5kbGVkX0V4Y2VwdGlvbiBpbnN0ZWFkIG9mCgl0aGUgZm9ybWVyIFVuaGFuZGxlZF9FeGNlcHRpb24uCgoJKiBleHBfY2gxMS5hZHMsIGV4cF9jaDExLmFkYjogKFBvc3NpYmxlX0xvY2FsX1JhaXNlKTogTmV3IHByb2NlZHVyZQoJKFdhcm5fTm9fRXhjZXB0aW9uX1Byb3BhZ2F0aW9uKTogTmV3IHByb2NlZHVyZQoJKFdhcm5fSWZfTm9fUHJvcGFnYXRpb24pOiBSZXdyaXR0ZW4gZm9yIG5ldyB3YXJuaW5nIGdlbmVyYXRpb24KCShFeHBhbmRfRXhjZXB0aW9uX0hhbmRsZXJzKTogTmV3IHdhcm5pbmcgZ2VuZXJhdGlvbgoJKEV4cGFuZF9OX1JhaXNlX3h4eF9FcnJvcik6IFJld3JpdHRlbiBmb3IgbmV3IHdhcm5pbmdzCgkoQWRkX0V4Y2VwdGlvbl9MYWJlbCk6IFVzZSBTcGVjaWFsX0V4Y2VwdGlvbl9QYWNrYWdlX1VzZWQgZm9yIHRlc3QKCWluc3RlYWQgb2YgTW9zdF9SZWNlbnRfRXhjZXB0aW9uX1VzZWQgKGFjY29tb2RhdGVzIEV4Y2VwdGlvbl9UcmFjZXMpCgkoRXhwYW5kX0xvY2FsX0V4Y2VwdGlvbl9IYW5kbGVycyk6IFVuY29uZGl0aW9uYWxseSBhZGQgZXh0cmEgYmxvY2sgd3JhcAoJZXZlbiBpZiByZXN0cmljdGlvbiBpcyBzZXQgKG1ha2VzIGxpZmUgZWFzaWVyIGluIENoZWNrX1JldHVybnMpCgkoRXhwYW5kX0xvY2FsX0V4Y2VwdGlvbl9IYW5kbGVycyk6IEZvbGxvdyByZW5hbWVkIGVudGl0eSBjaGFpbiB3aGVuCgljaGVja2luZyBleGNlcHRpb24gaWRlbnRpdGllcy4KCShFeHBhbmRfTG9jYWxfRXhjZXB0aW9uX0hhbmRsZXJzKTogRG8gbm90IG9wdGltaXplIHdoZW4gYWxsIG90aGVycyBjYXNlCgkoRXhwYW5kX0xvY2FsX0V4Y2VwdGlvbl9IYW5kbGVycyk6IFNldCBFeGNlcHRpb25fSnVuayBmbGFnIG9uIGdlbmVyYXRlZAoJYmxvY2sgZm9yIGhhbmRsZXIgKHVzZWQgYnkgQ2hlY2tfUmV0dXJucykKCShFeHBhbmRfTG9jYWxfRXhjZXB0aW9uX0hhbmRsZXJzKTogTG9jYWxfUmFpc2Ugbm93IHRha2VzIGFuIGFkZHJlc3MKCShFeHBhbmRfTl9IYW5kbGVkX1NlcXVlbmNlX09mX1N0YXRlbWVudHMpOiBQcm9wZXJseSBoYW5kbGUgLWduYXRkLnggdG8KCXJlbW92ZSBhbGwgZXhjZXB0aW9uIGhhbmRsZXJzIHdoZW4gb3B0aW1pemluZyBsb2NhbCByYWlzZSBzdGF0ZW1lbnRzLgoJKEZpbmRfTG9jYWxfSGFuZGxlcik6IFVzZSBHZXRfUmVuYW1lZF9FbnRpdHkKCShFeHBhbmRfTl9IYW5kbGVkX1NlcXVlbmNlX09mX1N0YXRlbWVudHMpOiBJZiB0aGUgaGFuZGxlZCBzZXF1ZW5jZSBpcwoJbWFya2VkIGFuYWx5emVkIGFmdGVyIGV4cGFuZGluZyBleGNlcHRpb24gaGFuZGxlcnMsIGRvIG5vdCBnZW5lcmF0ZQoJcmVkdW5kYW50IGNsZWFudXAgYWN0aW9ucywgYmVjYXVzZSB0aGV5IGhhdmUgYmVlbiBjb25zdHJ1Y3RlZCBhbHJlYWR5LgoKMjAwNy0wNi0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGEtZmluYWxpLmFkcyAoQWRhLkZpbmFsaXphdGlvbik6IEFkZCBtaXNzaW5nIHByYWdtYSBSZW1vdGVfVHlwZXMuIFRoZQoJcHJlc2VuY2Ugb2YgdGhpcyBjYXRlZ29yaXphdGlvbiBwcmFnbWEgaXMgbWFuZGF0ZWQgYnkgdGhlIGxhbmd1YWdlLgoJKExpbWl0ZWRfQ29udHJvbGxlZCk6IEFkZCBtaXNzaW5nIHByYWdtYSBQcmVlbGFib3JhYmxlX0luaXRpYWxpemF0aW9uCglmb3IgdGhpcyB0eXBlLgoKMjAwNy0wNi0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBiY2hlY2suYWRiLCBiaW5kZS5hZGIsIGJpbmRlcnIuYWRiLCBiaW5kZXJyLmFkcywgYnV0aWwuYWRiLCAKCWJ1dGlsLmFkcywgZXJyb3V0Yy5hZGIsIGVycm91dGMuYWRzLCBlcnJ1dGlsLmFkYiwgZXJydXRpbC5hZHMsIAoJZXJyX3ZhcnMuYWRzLCBleHBfdHNzLmFkYiwgZXhwX3Rzcy5hZHMsIGZtYXAuYWRiLCBmbWFwLmFkcywgCglmbmFtZS5hZGIsIGZuYW1lLmFkcywgZm5hbWUtc2YuYWRiLCBmbmFtZS11Zi5hZGIsIGZuYW1lLXVmLmFkcywgCglsaWItc29ydC5hZGIsIGxpYi11dGlsLmFkYiwgbGliLXV0aWwuYWRzLCBsaWIteHJlZi5hZGIsIG1ha2V1dGwuYWRzLCAKCW1ha2V1dGwuYWRiLCBubWFrZS5hZHQsIG9zaW50LmFkYiwgb3NpbnQuYWRzLCBvc2ludC1iLmFkYiwgCglwYXItbG9hZC5hZGIsIHByai1hdHRyLmFkYiwgcHJqLWRlY3QuYWRiLCBwcmotZXJyLmFkYiwgcHJqLW1ha3IuYWRiLCAKCXByai1wYXJ0LmFkYiwgcHJqLXBwLmFkYiwgcHJqLXByb2MuYWRiLCBwcmotdHJlZS5hZGIsIHByai10cmVlLmFkcywgCglwcmotdXRpbC5hZGIsIHByai11dGlsLmFkcywgc2NhbnMuYWRiLCBzY2Fucy5hZHMsIHNlbV9jaDIuYWRiLCAKCXNpbnB1dC1jLmFkYiwgc3R5bGVnLWMuYWRiLCB0ZW1wZGlyLmFkYiwgdGVtcGRpci5hZHMsIHVuYW1lLmFkYiwgCgl1bmFtZS5hZHMsIGF0cmVlLmgsIGF0cmVlLmFkcywgYXRyZWUuYWRiLCBhbGktdXRpbC5hZHMsIGFsaS11dGlsLmFkYiwKCWFsaS5hZHMsIGFsaS5hZGI6IAoJTW92ZSBOYW1lX0lkLCBGaWxlX05hbWVfVHlwZSBhbmQgVW5pdF9OYW1lX1R5cGUgZnJvbSBwYWNrYWdlIFR5cGVzIHRvCglwYWNrYWdlIE5hbWV0LiBNYWtlIEZpbGVfTmFtZV9UeXBlIGFuZCBVbml0X05hbWVfVHlwZSB0eXBlcyBkZXJpdmVkIGZyb20KCU1hbWVfSWQuIEFkZCBuZXcgdHlwZSBQYXRoX05hbWVfVHlwZSwgYWxzbyBkZXJpdmVkIGZyb20gTmFtZV9JZC4KCVVzZSB2YXJpYWJsZXMgb2YgdHlwZXMgRmlsZV9OYW1lX1R5cGUgYW5kIFVuaXRfTmFtZV9UeXBlIGluIGVycm9yCgltZXNzYWdlcy4KCShHZXRfTmFtZSk6IEFkZCBwYXJhbWV0ZXIgSWdub3JlX1NwZWNpYWwsIGFuZCBzZXQgaXQgcmVhZGluZyBmaWxlIG5hbWUKCShOZXdfQ29weSk6IFdoZW4gZGVidWdnaW5nIHRoZSBjb21waWxlciwgY2FsbCBOZXdfTm9kZV9EZWJ1Z2dpbmdfT3V0cHV0CgloZXJlLgoJRGVmaW5lIGZsYWdzIEZsYWcyMTctRmxhZzIzMCB3aXRoIGFzc29jaWF0ZWQgc3VicHJvZ3JhbXMKCShGbGFnX1dvcmQ1KTogTmV3IHJlY29yZCB0eXBlLgoJKEZsYWdfV29yZDVfUHRyKTogTmV3IGFjY2VzcyB0eXBlLgoJKFRvX0ZsYWdfV29yZDUpOiBOZXcgdW5jaGVja2VkIGNvbnZlcnNpb24uCgkoVG9fRmxhZ19Xb3JkNV9QdHIpOiBMaWtld2lzZS4KCShGbGFnMjE2KTogTmV3IGZ1bmN0aW9uLgoJKFNldF9GbGFnMjE2KTogTmV3IHByb2NlZHVyZS4KCjIwMDctMDYtMDYgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGEtc3R6dW5iLmFkYiwgYS1zdHdpdW4uYWRiLCBhLXN0cnVuYi5hZGI6IChJbnNlcnQpOiBVc2UgJ0xlbmd0aAoJaW5zdGVhZCBvZiAnU2l6ZS4KCgkqIGEtc3R3aWZpLmFkcywgYS1zdHpmaXguYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDctMDYtMDYgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZHMsIGEtdGFncy5hZGIgKFRhZ19TaXplKTogVGhpcyBjb25zdGFudCBpcyBub3cgaW50ZXJuYWwgdG8KCXRoZSBwYWNrYWdlLgoJKE9iamVjdF9TcGVjaWZpY19EYXRhX0FycmF5KTogVGhpcyBpcyBub3cgaW50ZXJuYWwgdG8gdGhlIHBhY2thZ2UuCgkoT2JqZWN0X1NwZWNpZmljX0RhdGEpOiBUaGlzIGlzIG5vdyBpbnRlcm5hbCB0byB0aGUgcGFja2FnZS4KCShTZWxlY3RfU3BlY2lmaWNfRGF0YV9FbGVtZW50KTogVGhpcyBpcyBub3cgaW50ZXJuYWwgdG8gdGhlIHBhY2thZ2UuCgkoU2VsZWN0X1NwZWNpZmljX0RhdGFfQXJyYXkpOiBUaGlzIGlzIG5vdyBpbnRlcm5hbCB0byB0aGUgcGFja2FnZS4KCShTZWxlY3RfU3BlY2lmaWNfRGF0YSk6IFRoaXMgaXMgbm93IGludGVybmFsIHRvIHRoZSBwYWNrYWdlLgoJKE9mZnNldF9Ub19Ub3BfRnVuY3Rpb25fUHRyKTogVGhpcyBpcyBub3cgcHVibGljLgoJKFRvX09mZnNldF9Ub19Ub3BfRnVuY3Rpb25fUHRyKTogUmVtb3ZlZC4KCShTdG9yYWdlX09mZnNldF9QdHIsVG9fU3RvcmFnZV9PZmZzZXRfUHRyKTogVGhlc2UgZGVjbGFyYXRpb25zIGFyZSBub3cKCSBsb2NhbCB0byBzdWJwcm9ncmFtIE9mZnNldF9Ub19Ub3AuCgkoUHJlZGVmaW5lZF9EVCk6IFJlbW92ZWQuCgkoVHlwZWluZm9fUHRyKTogUmVtb3ZlZC4KCShPU0QpOiBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBpbnRlcm5hbCB0byB0aGlzIHBhY2thZ2UuCgkoU1NEKTogVGhpcyBmdW5jdGlvbiBpcyBub3cgaW50ZXJuYWwgdG8gdGhpcyBwYWNrYWdlLgoJKERUKTogTmV3IGZ1bmN0aW9uIHRoYXQgZGlzcGxhY2VzIHRoZSBwb2ludGVyIHRvIHRoZSB0YWJsZSBvZiBwcmltaXRpdmVzCgkgdG8gZ2V0IGFjY2VzcyB0byB0aGUgZW5jbG9zaW5nIHdyYXBwZXIgcmVjb3JkLgoJKElXX01lbWJlcnNoaXApOiBDb2RlIGNsZWFudXAuCgkoT2Zmc2V0X1RvX1RvcCk6IENvZGUgY2xlYW51cC4KCShQcmVkZWZpbmVkX0RUKTogUmVtb3ZlZC4KCShSZWdpc3Rlcl9JbnRlcmZhY2VfVGFnKTogUmVtb3ZlZC4KCShTZXRfSW50ZXJmYWNlX1RhYmxlKTogUmVtb3ZlZC4KCShTZXRfT2Zmc2V0X0luZGV4KTogUmVtb3ZlZC4KCShTZXRfT2Zmc2V0X1RvX1RvcCk6IENvZGUgY2xlYW51cC4KCShTZXRfT1NEKTogUmVtb3ZlZC4KCShTZXRfU2lnbmF0dXJlKTogUmVtb3ZlZC4KCShTZXRfU1NEKTogUmVtb3ZlZC4KCShTZXRfVGFnZ2VkX0tpbmQpOiBSZW1vdmVkLgoJKFR5cGVpbmZvX1B0cik6IFJlbW92ZWQuCgkoVFNEKTogUmVtb3ZlZC4KCShEaXNwbGFjZSk6IEFkZCBtaXNzaW5nIGNoZWNrIG9uIG51bGwgYWN0dWFsLgoKCSogZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGIKCShTZWxlY3RfRXhwYW5zaW9uX1V0aWxpdGllcyk6IFJlbW92ZWQuCgkoQnVpbGRfQ29tbW9uX0Rpc3BhdGNoaW5nX1NlbGVjdF9TdGF0ZW1lbnRzKTogTW92ZWQgdG8gZXhwX2F0YWdzLgoJKEV4cGFuZF9EaXNwYXRjaGluZ19DYWxsKTogVXBkYXRlIGNhbGxzIHRvIEdldF9QcmltX09wX0FkZHJlc3MgYmVjYXVzZQoJdGhlIGludGVyZmFjZSByZXF1aXJlcyBhIG5ldyBwYXJhbWV0ZXIuCgkoTWFrZV9EaXNwX0FzeW5jaHJvbm91c19TZWxlY3RfU3BlYywgTWFrZV9EaXNwX0NvbmRpdGlvbmFsX1NlbGVjdF9TcGVjLAoJTWFrZV9EaXNwX0dldF9QcmltX09wX0tpbmRfU3BlYywgTWFrZV9EaXNwX1RpbWVkX1NlbGVjdF9TcGVjKTogUmVwbGFjZQoJY2FsbHMgdG8gc3VicHJvZ3JhbXMgQnVpbGRfVCwgQnVpbGRfUywgZXRjLiBieSB0aGUgY29ycmVzcG9uZGluZyBjb2RlLgoJRG9uZSB0byByZW1vdmUgcGFja2FnZSBTZWxlY3RfRXhwYW5zaW9uX1V0aWxpdGllcy4KCShNYWtlX0RUKTogTmV3IGltcGxlbWVudGF0aW9uIGZvciBzdGF0aWNhbGx5IGFsbG9jYXRlZCBkaXNwYXRjaCB0YWJsZXMuCgkoTWFrZV9TZWNvbmRhcnlfRFQpOiBNb3ZlZCB0byB0aGUgc2NvcGUgb2YgTWFrZV9EVC4KCShSZWdpc3Rlcl9QcmltaXRpdmUpOiBDb2RlIGNsZWFudXAgcGx1cyBpbmNvcG9yYXRlIHRoZSB1c2Ugb2YgdGhlIG5ldwoJZnVuY3Rpb24gRFRfQWRkcmVzc19BdHRyaWJ1dGUuCgkoRXhwYW5kX0ludGVyZmFjZV9UaHVuayk6IFRoZSBwcm9maWxlIG9mIHRoaXMgc3VicHJvZ3JhbSBoYXMgYmVlbgoJY2hhbmdlZCB0byByZXR1cm4gdGhlIFRodW5rX0lkIGFuZCB0aGUgY29ycmVzcG9uZGluZyBjb2RlLgoJKEZpbGxfRFRfRW50cnkpOiBSZW1vdmVkLiBJdHMgZnVuY3Rpb25hbGl0eSBpcyBub3cgcHJvdmlkZWQgYnkKCXN1YnByb2dyYW0gUmVnaXN0ZXJfUHJpbWl0aXZlLgoJKEZpbGxfU2Vjb25kYXJ5X0RUX0VudHJ5KTogUmVtb3ZlZC4gSXRzIGZ1bmN0aW9uYWxpdHkgaXMgbm93IHByb3ZpZGVkIGJ5CglzdWJwcm9ncmFtIFJlZ2lzdGVyX1ByaW1pdGl2ZS4KCShSZWdpc3Rlcl9QcmltaXRpdmUpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IGluY29ycG9yYXRlcyB0aGUgcHJldmlvdXMKCWZ1bmN0aW9uYWxpdGllcyBvZiBGaWxsX0RUX0VudHJ5IGFuZCBGaWxsX1NlY29uZGFyeV9EVF9FbnRyeS4KCShCdWlsZF9Db21tb25fRGlzcGF0Y2hpbmdfU2VsZWN0X1N0YXRlbWVudHMpOiBSZW1vdmUgZm9ybWFsIFR5cC4gVGhpcwoJd2FzIG9ubHkgcmVxdWlyZWQgdG8gY2FsbCBNYWtlX0RUX0FjY2Vzc19BY3Rpb24sIHdoaWNoIGlzIG5vdyByZW1vdmVkLgoJKEFkYV9BY3Rpb25zKTogUmVtb3ZlZAoJKEFjdGlvbl9Jc19Qcm9jKTogUmVtb3ZlZAoJKEFjdGlvbl9OYl9BcmcpOiBSZW1vdmVkCglSZXBsYWNlIGFsbCB0aGUgY2FsbHMgdG8gTWFrZV9EVF9BY2Nlc3NfQWN0aW9uIGJ5IGRpcmVjdCBjYWxscyB0bwoJTWFrZV9Qcm9jZWR1cmVfQ2FsbF9TdGF0ZW1lbnQgb3IgTWFrZV9GdW5jdGlvbl9DYWxsLgoJKFNldF9EVENfRW50aXR5X1ZhbHVlKTogTmV3IHN1YnByb2dyYW0uCgkoU2V0X0FsbF9EVF9Qb3NpdGlvbik6IEFkZCBjYWxsIHRvIG5ldyBzdWJwcm9ncmFtIFNldF9EVENfRW50aXR5X1ZhbHVlLgoJKEV4cGFuZF9JbnRlcmZhY2VfVGh1bmspOiBBZGQgbWlzc2luZyBzdXBwb3J0IGZvciBwcmltaXRpdmVzIHRoYXQgYXJlCglmdW5jdGlvbnMgd2l0aCBhIGNvbnRyb2xsaW5nIHJlc3VsdCAoY2FzZSBpbiB3aGljaCB0aGVyZSBpcyBubyBuZWVkCgl0byBnZW5lcmF0ZSB0aGUgdGh1bmspLgoKCSogZXhwX2F0YWcuYWRzLCBleHBfYXRhZy5hZGIKCShCdWlsZF9EVCk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgZGlzcGxhY2VzIHRoZSBwb2ludGVyIHRvIHJlZmVyZW5jZSB0aGUKCWJhc2Ugb2YgdGhlIHdyYXBwZXIgcmVjb3JkLgoJKEJ1aWxkX1R5cGVpbmZvX09mZnNldCk6IFJlbW92ZWQuCgkoUlRFX1RhZ19Ob2RlKTogUmVtb3ZlZC4KCShCdWlsZF9Db21tb25fRGlzcGF0Y2hpbmdfU2VsZWN0X1N0YXRlbWVudHMpOiBNb3ZlZCBoZXJlIGZyb20gZXhwX2Rpc3AKCShCdWlsZF9HZXRfUkNfT2Zmc2V0KTogUmVtb3ZlZC4KCShCdWlsZF9Jbmhlcml0X1ByZWRlZmluZWRfUHJpbXMpOiBSZW1vdmVkLgoJKEJ1aWxkX0luaGVyaXRfVFNEOiBSZW1vdmVkLgoJKEJ1aWxkX05ld19UU0QpOiBSZW1vdmVkLgoJKEJ1aWxkX1NldF9FeHRlcm5hbF9UYWcpOiBSZW1vdmVkLgoJKEJ1aWxkX1NldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKEJ1aWxkX1NldF9QcmltX09wX0FkZHJlc3MpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCShCdWlsZF9TZXRfVFNEKTogUmVtb3ZlZC4KCgkqIHJ0c2ZpbmQuYWRzLCBydHNmaW5kLmFkYgoJKExvYWRfRmFpbCk6IElmIGxvYWQgZmFpbHMgYW5kIHdlIGFyZSBub3QgaW4gY29uZmlndXJhYmxlIHJ1bi10aW1lCgltb2RlLCB0aGVuIHJhaXNlIFVucmVjb3ZlcmFibGVfRXJyb3IuCgkoVGV4dF9JT19LbHVkZ2UpOiBHZW5lcmF0ZSBhbiBlcnJvciBtZXNzYWdlIGlmIGEgcnVuLXRpbWUgbGlicmFyeSBpcwoJbm90IGF2YWlsYWJsZSBpbiBhIGdpdmVuIHJ1bi10aW1lIChpZS4gemZwIHJ1bi10aW1lKS4KCShSVEVfUmVjb3JkX0NvbXBvbmVudCk6IEFkZCBjb2RlIHRvIGNoZWNrIHRoYXQgdGhlIGNvbXBvbmVudCB3ZSBzZWFyY2gKCWZvciBpcyBub3QgZm91bmQgaW4gdHdvIHJlY29yZHMgaW4gdGhlIGdpdmVuIHJ1bi10aW1lIHBhY2thZ2UuCgkoUkVfRFRfT2Zmc2V0X1RvX1RvcF9TaXplLCBSRV9EVF9QcmVkZWZfUHJpbXNfU2l6ZSk6IFJlbW92ZWQKCShSRV9EVF9QcmVkZWZfUHJpbXNfT2Zmc2V0KTogTmV3IGVudGl0eQoJKFJFX1N0YXRpY19PZmZzZXRfVG9fVG9wKTogTmV3IGVudGl0eQoJKFJFX0hUX0xpbmspOiBOZXcgZW50aXR5LgoJKFN5c3RlbV9BZGRyZXNzX0ltYWdlKTogQWRkaXRpb24gb2YgdGhpcyBydW4tdGltZSBwYWNrYWdlLgoJKFJFX0FkZHJlc3NfSW1hZ2UpOiBOZXcgZW50aXR5LgoJKFJFX0Fic3RyYWN0X0ludGVyZmFjZSk6IFJlbW92ZWQuCgkoUkVfRGVmYXVsdF9QcmltX09wX0NvdW50KTogUmVtb3ZlZC4KCShSRV9EVF9FbnRyeV9TaXplKTogUmVtb3ZlZC4KCShSRV9EVF9NaW5fUHJvbG9ndWVfU2l6ZSk6IFJlbW92ZWQuCgkoUkVfRFRfUHJvbG9ndWVfU2l6ZSk6IFJlbW92ZWQuCgkoUkVfSWZhY2VzX1RhYmxlX1B0cik6IFJlbW92ZWQuCgkoUkVfSW50ZXJmYWNlX0RhdGFfUHRyKTogUmVtb3ZlZC4KCShSRV9UeXBlX1NwZWNpZmljX0RhdGEpOiBSZW1vdmVkLgoJKFJFX1ByaW1hcnlfRFQpOiBSZW1vdmVkLgoJKFJFX1JlZ2lzdGVyX0ludGVyZmFjZV9UYWcpOiBSZW1vdmVkLgoJKFJFX1NldF9PZmZzZXRfSW5kZXgpOiBSZW1vdmVkLgoJKFJFX1NldF9PU0QpOiBSZW1vdmVkLgoJKFJFX1NldF9TU0QpOiBSZW1vdmVkLgoJKFJFX1NldF9TaWduYXR1cmUpOiBSZW1vdmVkLgoJKFJFX1NldF9UYWdnZWRfS2luZCk6IFJlbW92ZWQuCgkoUkVfQWRkcmVzc19BcnJheSk6IE5ldyBlbnRpdHkuCgkoUkVfRFQpOiBOZXcgZW50aXR5LgoJKFJFX0lmYWNlX1RhZyk6IE5ldyBlbnRpdHkuCgkoUkVfSW50ZXJmYWNlc19UYWJsZSk6IE5ldyBlbnRpdHkuCgkoUkVfTm9fRGlzcGF0Y2hfVGFibGUpOiBOZXcgZW50aXR5LgoJKFJFX05EVF9Qcmltc19QdHIpOiBOZXcgZW50aXR5LgoJKFJFX05EVF9UU0QpOiBOZXcgZW50aXR5LgoJKFJFX051bV9Qcmltcyk6IE5ldyBlbnRpdHkuCgkoUkVfT2Zmc2V0X1RvX1RvcF9GdW5jdGlvbl9QdHIpOiBOZXcgZW50aXR5LgoJKFJFX09TRF9UYWJsZSk6IE5ldyBlbnRpdHkuCgkoUkVfT1NEX051bV9Qcmltcyk6IE5ldyBlbnRpdHkuCgkoUkVfUHJlZGVmX1ByaW1zKTogTmV3IGVudGl0eQoJKFJFX1ByZWRlZl9Qcmltc19UYWJsZV9QdHIpOiBOZXcgZW50aXR5LgoJKFJFX1ByaW1hcnlfRFQpOiBOZXcgZW50aXR5LgoJKFJFX1NpZ25hdHVyZSk6IE5ldyBlbnRpdHkuCgkoUkVfU1NEKTogTmV3IGVudGl0eS4KCShSRV9UU0QpOiBOZXcgZW50aXR5LgoJKFJFX1R5cGVfU3BlY2lmaWNfRGF0YSk6IE5ldyBlbnRpdHkuCgkoUkVfVGFnX0tpbmQpOiBOZXcgZW50aXR5LgoKMjAwNy0wNi0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGEtdGV4dGlvLmFkcywgYS10ZXh0aW8uYWRiIChXcml0ZSk6IEFkZCBleHBsaWNpdCBzaXplIGNsYXVzZSBmb3IgdGhlCglDIGltcG9ydGVkIHZhcmlhYmxlLgoJKFNraXBfTGluZSk6IERvIG5vdCByZXNldCBCZWZvcmVfTE1fUE0gaW1tZWRpYXRlbHkgd2hlbiBCZWZvcmVfTE0gaXMgc2V0CglvbiBlbnRyeS4KCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS10aWVuaW8uYWRiIChHZXQpOiBBZGp1c3QgYnVmZmVyIHNpemUgdG8gYWNjb21vZGF0ZSBvbmUgZXh0cmEKCWNoYXJhY3RlcgoKMjAwNy0wNi0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBhLXRpZmlpby5hZGIgKFB1dCwgaW50ZXJuYWwpOiBGb3IgbmVnYXRpdmUgbnVtYmVycywgY2hlY2sgdGhhdCB0aGVyZQoJaXMgcm9vbSBmb3IgYXQgbGVhc3Qgb25lIGRpZ2l0IGFuZCB0aGUgbWludXMgc2lnbi4KCShQdXQuUHV0X0NoYXJhY3Rlcik6IE5ldmVyIHB1dCBhIGNoYXJhY3RlciBvdXRzaWRlIG9mIHRoZSByYW5nZSBvZgoJc3RyaW5nIFRvLgoKMjAwNy0wNi0wNiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdXRpbHMyLmMgKGJ1aWxkX2FsbG9jYXRvcik6IFByb3ZpZGUgdGhlIGV4dHJhIGFyZ3VtZW50cyB0bwoJbWFrZV9hbGlnbmluZ190eXBlIGZvciBzdXBlci1hbGlnbmVkIG9iamVjdHMgYWxsb2NhdGVkIGZyb20gdGhlIGRlZmF1bHQKCXBvb2wuIExlYXZlIGVub3VnaCByb29tIGZvciBhIHBvaW50ZXIgYmVmb3JlIHRoZSBhbGlnbmluZyBmaWVsZCwgYW5kCglzdG9yZSB0aGUgc3lzdGVtJ3MgYWxsb2NhdG9yIHJldHVybiB2YWx1ZSB0aGVyZS4KCShidWlsZF9jYWxsX2FsbG9jX2RlYWxsb2MpOiBXaGVuIHJlbGVhc2luZyBhIHN1cGVyLWFsaWduZWQgb2JqZWN0LAoJcmV0cmlldmUgdGhlIHN5c3RlbSdzIGFsbG9jYXRvciByZXR1cm4gdmFsdWUgZnJvbSB3aGVyZSBidWlsZF9hbGxvY2F0b3IKCWhhcyBzdG9yZWQgaXQsIGp1c3QgYWhlYWQgb2YgdGhlIGFkanVzdGVkIGFkZHJlc3Mgd2UgYXJlIHBhc3NlZC4KCShidWlsZF9jYWxsX3JhaXNlKTogSGFuZGxlIHByb3Blcmx5IHRoZSBnZW5lcmF0aW9uIG9mIGxpbmUgbnVtYmVycyB3aGVuCgl0aGUgbm9kZSBpcyBtYXJrZWQgTm9fTG9jYXRpb24uCgkoY29tcGFyZV9lbG10X2JpdHBvcyk6IFVzZSB0cmVlX2ludF9jc3RfY29tcGFyZS4gIFN0YWJpbGl6ZSB0aGUgc29ydAoJYnkgdXNpbmcgREVDTF9VSUQgb24gdGllcy4KCShidWlsZF9iaW5hcnlfb3ApIDxFUV9FWFBSPjogQWNjZXB0IGZhdCBwb2ludGVyIHR5cGVzIHdpdGggdGhlIHNhbWUKCW1haW4gdmFyaWFudC4KCShidWlsZF9jYWxsX3JhaXNlKTogSGFuZGxlIGNvbnZlcnRpbmcgZXhjZXB0aW9uIGludG8gZ290bzsgc3VwcG9ydCBuZXcKCWFyZ3VtZW50IEtJTkQuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IEFkZCBuZXcgYXJnIHRvIGJ1aWxkX2NhbGxfcmFpc2UuCgoyMDA3LTA2LTA2ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogYS16dGZsYXUuYWRiLCBhLXd0ZmxhdS5hZGIsIGEtdGlmbGF1LmFkYiAoTG9hZF9SZWFsKTogRG8gbm90IHBhcnNlCgkiLiIgaW4gdGhlIGNhc2Ugb2Ygbm5uLnh4eCB3aGVuIG5ubiB0ZXJtaW5hdGVzIHdpdGggYW4gdW5kZXJzY29yZS4KCVBhcnNlIHRoZSByZW1haW5pbmcgIiMiIG9yICI6IiBpbiB0aGUgY2FzZSBvZiBubm4jLnh4eCMKCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS10aWdlYXUuYWRzLCBhLXRpZ2VhdS5hZGI6IChTdG9yZV9DaGFyKTogQ2hhbmdlIEJ1ZiB0byBJTiBPVVQKCjIwMDctMDYtMDYgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGJpbmRnZW4uYWRiIChHZW5fT3V0cHV0X0ZpbGVfQWRhKTogR2VuZXJhdGUgcHJhZ21hIE5vX1J1bl9UaW1lIHdoZW4KCW5lZWRlZC4KCShHZW5fT3V0cHV0X0ZpbGVfQWRhLCBHZW5fT3V0cHV0X0ZpbGVfQyk6IE5ldmVyIHVzZSBfX2F0dHJpYnV0ZQoJKChkZXN0cnVjdG9yKSkgZm9yIGFkYWZpbmFsLCBldmVuIHdoZW4gc3dpdGNoIC1hIGlzIHVzZWQuCglEbyBub3QgaXNzdWUgcHJhZ21hIExpbmtlcl9EZXN0cnVjdG9yIGZvciBhZGFmaW5hbCB3aGVuIHN3aXRjaCAtYSBpcwoJdXNlZC4KCShHZW5fT2JqZWN0X0ZpbGVzX09wdGlvbnMpOiBBZGQgZm9ybWF0dGluZyBvZiBMaW5rZXIgT3B0aW9ucywgd2hlbgoJT3V0cHV0X0xpbmtlcl9PcHRpb25fTGlzdCBpcyBzZXQuIFN1cHByZXNzIHRoaXMgZm9ybWF0dGluZyB3aGVuCglaZXJvX0Zvcm1hdHRpbmcgaXMgc2V0LgoJQWRkIGNhc2UgZm9yIENMSV9UYXJnZXQuCgkoU3lzdGVtX1Jlc3RyaWN0aW9uc19Vc2VkKTogTmV3IGZsYWcsIHVzZWQgdG8gYXZvaWQgZ2VuZXJhdGluZyB3aXRoIG9mCglTeXN0ZW1fUmVzdHJpY3Rpb25zIGFuZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGF0YSB1bmxlc3MgdGhlcmUgaXMKCXNvbWUgdXNlIG9mIFN5c3RlbS5SZXN0cmljdGlvbnMgaW4gdGhlIHBhcnRpdGlvbi4KCShDaGVja19TeXN0ZW1fUmVzdHJpY3Rpb25zX1VzZWQpOiBOZXcgcHJvY2VkdXJlCgogICAgICAgICogcy1zdGFsaWIuYWRiOiBSZW1vdmUgd2l0aCBvZiBTeXN0ZW0uUmVzdHJpY3Rpb25zLiBObyBsb25nZXIgbmVlZGVkCglzaW5jZSB3ZSBvbmx5IHdpdGggdGhpcyB1bml0IGluIHRoZSBiaW5kZXIgZmlsZSBpZiBpdCBpcyB1c2VkIGVsc2V3aGVyZQoJaW4gdGhlIHBhcnRpdGlvbi4KCjIwMDctMDYtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogYmluZHVzZy5hZGI6IEFkZCBsaW5lIGZvciBAPHJlc3BvbnNlIGZpbGU+CglBZGQgbGluZXMgZm9yIG5ldyBzd2l0Y2hlcyAtUiBhbmQgLVoKCgkqIGduYXRiaW5kLmFkYiAoR25hdGJpbmQpOiBEbyBub3QgaW5jbHVkZSBzb3VyY2VzIGZyb20gdGhlIEdOQVQKCWhpZXJhcmNoeSBpbiB0aGUgbGlzdCBvZiBmaWxlcyBvZiB0aGUgY2xvc3VyZSB3aGVuIC1SIGlzIHVzZWQKCShHbmF0YmluZCk6IEFjY2VwdCBhcmd1bWVudHMgc3RhcnRpbmcgd2l0aCAnQCcgdG8gaW5kaWNhdGUgcmVzcG9uc2UKCWZpbGVzIGFuZCB0YWtlIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUgcmVzcG9uc2UgZmlsZXMuCglJZiBMaXN0X0Nsb3N1cmUgaXMgc2V0LCBkaXNwbGF5IHRoZSByZWZlcmVuY2VkIGZpbGVzCgoyMDA3LTA2LTA2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogY2hlY2tzLmFkcywgY2hlY2tzLmFkYiAoQXBwbHlfQWRkcmVzc19DbGF1c2VfQ2hlY2spOiBIYW5kbGUgY2FzZSBpbgoJd2hpY2ggdGhlIGFkZHJlc3MtY2xhdXNlIGlzIGFwcGxpZWQgdG8gaW4tbW9kZSBhY3R1YWxzIChhbGxvd2VkIGJ5CgkxMy4xKDIyKSkuCgkoQXBwbHlfRGlzY3JpbWluYW50X0NoZWNrKTogRG8gbm90IGdlbmVyYXRlIGEgY2hlY2sgaWYgdGhlIHR5cGUgaXMKCWNvbnN0cmFpbmVkIGJ5IGEgY3VycmVudCBpbnN0YW5jZS4KCShBY3RpdmF0ZV9EaXZpc2lvbl9DaGVjayk6IE5ldyBwcm9jZWR1cmUKCShBY3RpdmF0ZV9PdmVyZmxvd19DaGVjayk6IE5ldyBwcm9jZWR1cmUKCShBY3RpdmF0ZV9SYW5nZV9DaGVjayk6IE5ldyBwcm9jZWR1cmUKCUNhbGwgdGhlc2UgbmV3IEFjdGl2YXRlIHByb2NlZHVyZXMgaW5zdGVhZCBvZiBzZXR0aW5nIGZsYWdzIGRpcmVjdGx5CgkoQXBwbHlfQXJyYXlfU2l6ZV9DaGVjayk6IFJlbW92ZWQsIG5vIGxvbmdlciBuZWVkZWQuCglDb2RlIGNsZWFuIHVwOiByZW1vdmUgb2Jzb2xldGUgY29kZSByZWxhdGVkIHRvIEdDQyAyLgoJKEdldF9FX0xlbmd0aCk6IFByb3RlY3QgYWdhaW5zdCBib21iIGluIGNhc2Ugc2NvcGUgaXMgc3RhbmRhcmQKCShTZWxlY3RlZF9SYW5nZV9DaGVja3MpOiBJZiB0aGUgbm9kZSB0byBiZSBjaGVja2VkIGlzIGEgY29udmVyc2lvbiB0bwoJYW4gdW5jb25zdHJhaW5lZCBhcnJheSB0eXBlLCBhbmQgdGhlIGV4cHJlc3Npb24gaXMgYSBzbGljZSwgdXNlIHRoZQoJYm91bmRzIG9mIHRoZSBzbGljZSB0byBjb25zdHJ1Y3QgdGhlIHJlcXVpcmVkIGNvbnN0cmFpbnQgY2hlY2tzLgoJSW1wcm92ZSBOT1QgTlVMTCBlcnJvciBtZXNzYWdlcwoJKEFwcGx5X0NvbnN0cmFpbnRfQ2hlY2spOiBJZiB0aGUgY29udGV4dCBpcyBhIG51bGwtZXhjbHVkaW5nIGFjY2VzcwoJdHlwZSwgZGlhZ25vc2UgcHJvcGVybHkgdGhlIGxpdGVyYWwgbnVsbC4KCjIwMDctMDYtMDYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGNsZWFuLmFkYiAoQ2xlYW5fQXJjaGl2ZSk6IFVzZSB1bnRvdWNoZWQgY2FzaW5nIGZvciB0aGUgYXJjaGl2ZSBuYW1lCglhbmQgdGhlIGNvcnJlc3BvbmRpbmcgLmRlcHMgZmlsZS4KCShDbGVhbl9JbnRlcmZhY2VfQ29weV9EaXJlY3RvcnkpOiBVc2UgdW50b3VjaGVkIGNhc2luZyBmb3IgdGhlIGxpYnJhcnkKCXNyYyBkaXJlY3RvcnkuIE1pbm9yIGNvZGUtY2xlYW4tdXAuIFVzZSB1bnRvdWNoZWQgY2FzaW5nIGZvciBmaWxlcwoJcmVhZCBpbnRvIHRoZSBsaWJyYXJ5IHNyYyBkaXIuCgkoQ2xlYW5fTGlicmFyeV9EaXJlY3RvcnkpOiBJZGVtLgoJKFBhcnNlX0NtZF9MaW5lKTogQWNjZXB0IG5ldyBzd2l0Y2ggLWFQCgoyMDA3LTA2LTA2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogZWluZm8uYWRzLCBlaW5mby5hZGIgKEF2YWlsYWJsZV9WaWV3KTogTmV3IHN5bnRoZXNpemVkIGF0dHJpYnV0ZQoJYXBwbGljYWJsZSB0byB0eXBlcyB0aGF0IGhhdmUgdGhlIFdpdGhfVHlwZSBmbGFnIHNldC4gUmV0dXJucyB0aGUKCW5vbi1saW1pdGVkIHZpZXcgb2YgdGhlIHR5cGUsIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHRoZSB0eXBlIGl0c2VsZi4KCUZvciBjbGFzcy13aWRlIHR5cGVzLCB0aGVyZSBpcyBubyBkaXJlY3QgbGluayBpbiB0aGUgdHJlZSwgc28gd2UgaGF2ZQoJdG8gcmV0cmlldmUgdGhlIGNsYXNzLXdpZGUgdHlwZSBvZiB0aGUgbm9uLWxpbWl0ZWQgdmlldyBvZiB0aGUgRXR5cGUuCglOZXcgYXR0cmlidXRlcyBTdGF0aWNfSW5pdGlhbGl6YXRpb24gYW5kIFN0YXRpY19FbGFib3JhdGlvbl9EZXNpcmVkLgoJUmVtb3ZlIHRoZSBwcmFnbWEgVGhyZWFkX0JvZHksIGFuZCB0aGUgYXNzb2NpYXRlZCBmbGFnCglJc19UaHJlYWRfQm9keSBpbiBlbnRpdGllcywgYW5kIGFsbCByZWxhdGVkIGNvZGUuCgkoU3VwcHJlc3NfVmFsdWVfVHJhY2tpbmdfT25fQ2FsbCk6IE5ldyBmbGFnCglFX0V4Y2VwdGlvbiBoYXMgRXNpemUgYW5kIEFsaWdubWVudCBmaWVsZHMKCShVbml2ZXJzYWxfQWxpYXNpbmcpOiBOZXcgZnVuY3Rpb24uCgkoU2V0X1VuaXZlcnNhbF9BbGlhc2luZyk6IE5ldyBwcm9jZWR1cmUuCgkoV3JpdGVfRW50aXR5X0ZsYWdzKTogRGVhbCB3aXRoIFVuaXZlcnNhbF9BbGlhc2luZyBmbGFnLgoJKENoZWNrX05lc3RlZF9BY2Nlc3MpOiBOZXcgcHJvY2VkdXJlLgoJKEhhc19VcF9MZXZlbF9BY2Nlc3MsIFNldF9IYXNfVXBfTGV2ZWxfQWNjZXNzKTogTmV3IHByb2NlZHVyZXMuCgkoRmluZF9EaXJlY3RfTmFtZSwgTm90ZV9Qb3NzaWJsZV9Nb2RpZmljYXRpb24pOiBVc2UgQ2hlY2tfTmVzdGVkX0FjY2Vzcy4KCShSZWxhdGVkX0ludGVyZmFjZSk6IE5ldyBhdHRyaWJ1dGUuIFByZXNlbnQgaW4gZGlzcGF0Y2ggdGFibGUgcG9pbnRlcgoJY29tcG9uZW50cyBvZiByZWNvcmRzLiBTZXQgdG8gcG9pbnQgdG8gdGhlIGVudGl0eSBvZiB0aGUgY29ycmVzcG9uZGluZwoJaW50ZXJmYWNlIHR5cGUuCgkoSXNfQnlfUmVmZXJlbmNlX1R5cGUpOiBSZWN1cnNlIG9uIHRoZSBmdWxsIHZpZXcgb2YgYW4gaW5jb21wbGV0ZSB0eXBlLgoJKE9yaWdpbmFsX0FjY2Vzc19UeXBlKTogUmVtb3ZlLCBub3QgbmVlZGVkLgoJKFJvb3RfVHlwZSk6IEhhbmRsZSBwcm9wZXJseSBzdWJ0eXBlcyBvZiBjbGFzcy13aWRlLXR5cGVzLgoJVXBkYXRlIGNvbW1lbnRzLgoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfRXhwbGljaXRfRGVyZWZlcmVuY2UpOiBBZGQgc3VwcG9ydCBmb3IKCWNsYXNzLXdpZGUgdHlwZXMgdmlzaWJsZSB0aHJvdWdoIGxpbWl0ZWQtd2l0aCBjbGF1c2VzLgoJKFRyeV9QcmltaXRpdmVfT3BlcmF0aW9uKTogV2hlbiBleGFtaW5pbmcgYWxsIHByaW1pdGl2ZSBvcGVyYXRpb25zIG9mIGEKCXRhZ2dlZCB0eXBlLCBkbyBub3QgY29uc2lkZXIgc3VicHJvZ3JhbXMgbGFiZWxlZCBhcyBoaWRkZW4gdW5sZXNzIHRoZXkKCWJlbG9uZyB0byBhIHByaXZhdGUgZ2VuZXJpYyB0eXBlIHdpdGggYSB0YWdnZWQgcGFyZW50LgoJKFRyeV9PYmplY3RfT3BlcmF0aW9uKTogRXh0ZW5zaXZlIHJld3JpdGluZywgdG8gaGFuZGxlIHByb3Blcmx5IHZhcmlvdXMKCW92ZXJsb2FkaW5nIGNhc2VzLCB3aGVuIHNldmVyYWwgYW5jZXN0b3JzIG1heSBoYXZlIGNsYXNzLXdpZGUgb3BlcmF0aW9ucwoJdGhhdCBhcmUgcG9zc2libGUgY2FuZGlkYXRlcywgYW5kIHdoZW4gdGhlIG92ZXJsb2FkZWQgZnVuY3Rpb25zIHJldHVybgoJYXJyYXkgdHlwZXMgYW5kIGhhdmUgZGVmYXVsdGVkIHBhcmFtZXRlcnMgc28gdGhhdCB0aGUgY2FsbCBtYXkgYmUKCWludGVycHJldGVkIGFzIGFuIGluZGV4aW5nLgoJKEFuYWx5emVfQWxsb2NhdG9yKTogUmVtb3ZlIE1hcmtfQWxsb2NhdG9yIGFuZCBpdHMgaW52b2NhdGlvbi4KCShQcm9jZXNzX0Z1bmN0aW9uX0NhbGwpOiB1c2UgTmV4dCwgcmF0aGVyIHRoYW4gTmV4dF9BY3R1YWwsIHRvIGFuYWx5emUKCXN1Y2Nlc3NpdmUgYWN0dWFscyBiZWZvcmUgYW5hbHl6aW5nIHRoZSBjYWxsIGl0c2VsZi4KCShUcnlfUHJpbWl0aXZlX09wZXJhdGlvbik6IEEgcHJpbWl0aXZlIG9wZXJhdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlCglwcmVmaXggaWYgdGhlIHByZWZpeCBoYXMgYSBzeW5jaHJvbml6ZWQgdHlwZSBhbmQgdGhlIHR5cGUgb2YgdGhlIGZvcm1hbAoJaXMgaXRzIGNvcnJlc3BvbmRpbmcgcmVjb3JkLCBhcyBjYW4gYmUgdGhlIGNhc2Ugd2hlbiB0aGUgcHJpbWl0aXZlCglvcGVyYXRpb24gaXMgZGVjbGFyZWQgb3V0c2lkZSBvZiB0aGUgYm9keSBvZiB0aGUgdHlwZS4KCShUcmF2ZXJzZV9Ib21vbnltcyk6IE5ldyBzdWJwcm9jZWR1cmUgb2YgVHJ5X0NsYXNzX1dpZGVfT3BlcmF0aW9uLCB0bwoJcGVyZm9ybSBob21vbnltIHRyYXZlcnNhbCwgbG9va2luZyBmb3IgY2xhc3Mtd2lkZSBvcGVyYXRpb24gbWF0Y2hlcwoJKGZvcm1lcmx5IGRvbmUgaW4gc3RhdGVtZW50cyBvZiBUcnlfQ2xhc3NfV2lkZV9PcGVyYXRpb24pLiBNYXRjaGVzIG9uCglhY2Nlc3MgcGFyYW1ldGVycyBhcmUgbm93IHJlc3RyaWN0ZWQgdG8gYW5vbnltb3VzIGFjY2VzcyB0eXBlcy4KCShNYXJrX0FsbG9jYXRvcik6IEFuIGFsbG9jYXRvciB3aXRoIGEgZGlzY3JpbWluYW50IGFzc29jaWF0aW9uIHBhcmVudCBpcwoJYSBjb2V4dGVuc2lvbi4KCShUcnlfT25lX1ByZWZpeF9JbnRlcnByZXRhdGlvbik6IElmIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QgaXMKCWluY29tcGxldGUsIGFzIGNhbiBiZSBoYXBwZW4gd2hlbiBpdCBpcyBhIGxpbWl0ZWQgdmlldyBvYnRhaW5lZCB0aHJvdWdoCglhIGxpbWl0ZWRfd2l0aF9jbGF1c2UsIHRoZSBzZWxlY3RlZCBjb21wb25lbnQgaXMgbm90IHBhcnQgb2YgYSBwcmVmaXhlZAoJY2FsbC4KCShDb21wbGV0ZV9PYmplY3RfT3BlcmF0aW9uKTogRGlhZ25vc2UgcHJvcGVybHkgYW4gb2JqZWN0IHRoYXQgaXMgbm90CglhbGlhc2VkIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgY29udHJvbGxpbmcgZm9ybWFsIGlzIGFuIGFjY2VzcwoJcGFyYW1ldGVyLgoJKFRyeV9QcmltaXRpdmVfT3BlcmF0aW9uLCBUcnlfQ2xhc3NfV2lkZV9PcGVyYXRpb24pOiBEaWFnbm9zZSBwcm9wZXJseQoJYW1iaWd1b3VzIGNhbGxzIGluIHByZWZpeGVkIG5vdGF0aW9uLCB3aGVyZSB0d28gcHJpbWl0aXZlcyBkaWZmZXIgb25seQoJaW4gdGhhdCB0aGUgY29udHJvbGxpbmcgYXJndW1lbnQgb2Ygb25lIGlzIGFuIGFjY2VzcyBwYXJhbWV0ZXIuCgoJKiBzZW1fY2g2LmFkYiAoSGFzX1NpbmdsZV9SZXR1cm4pOiBBZGQgZ3VhcmQgaW4gY29kZSB0aGF0IGRldGVybWluZXMKCXdoZXRoZXIgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gdW5jb25zdHJhaW5lZCB0eXBlIGNhbiBiZSBpbmxpbmVkLgoJKFByb2Nlc3NfRm9ybWFscyk6IERpYWdub3NlIHByb3Blcmx5IHRoZSBpbGxlZ2FsIHVzZSBvZiBhbiBpbmNvbXBsZXRlCgl0eXBlIGluIHRoZSBwcm9maWxlIG9mIGFuIGFjY2Vzc190b19zdWJwcm9ncmFtIGRlY2xhcmF0aW9uLgoJKENoZWNrX1N5bmNocm9uaXplZF9PdmVycmlkaW5nKTogTm90aGluZyBjaGVjayBmb3IgY29uY3VycmVudCB0eXBlcywgdGhlCglvcGVyYXRpb25zIGFyZSBhdHRhY2hlZCB0byB0aGUgY29ycmVzcG9uZGluZyByZWNvcmQuCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX1NwZWNpZmljYXRpb24pOiBBZGQgdmFyaWFibGVzIEZvcm1hbCBhbmQgRm9ybWFsX1R5cC4KCVdoZW4gcHJvY2Vzc2luZyBhIHByaW1pdGl2ZSBvZiBhIGNvbmN1cnJlbnQgdHlwZSB3aGljaCBpbXBsZW1lbnRzIGFuCglpbnRlcmZhY2UgY2hhbmdlIHRoZSB0eXBlIG9mIGFsbCBjb250cm9sbGluZyBmb3JtYWxzIHRvIHRoYXQgb2YgdGhlCgljb3JyZXNwb25kaW5nIHJlY29yZCB0eXBlLgoJKENoZWNrX1N5bmNocm9uaXplZF9PdmVycmlkaW5nKTogUmVsYXggdGhlIGNvbmRpdGlvbmFsIGxvZ2ljIHdoZW4gdHJ5aW5nCgl0byBkZXRlcm1pbmUgdGhlIHRhZ2dlZCB0eXBlIHRvIHdoaWNoIGEgcHJpbWl0aXZlIGJlbG9uZ3MuCgkoQ2hlY2tfQ29udmVudGlvbnMpOiBDYXB0dXJlIGNvbmRpdGlvbiB0byBpZ25vcmUgYSBwcmltaXRpdmUgb3BlcmF0aW9uCgkod2hpY2ggaXMgc2hhcmVkIGJldHdlZW4gdGhlIGxvb3AgaW4gQ2hlY2tfQ29udmVudGlvbnMgYW5kIHRoZSBvbmUgaW4KCUNoZWNrX0NvbnZlbnRpb24pIGluIGEgbmV3IGxvY2FsIGZ1bmN0aW9uIFNraXBfQ2hlY2suCgkoQ2hlY2tfQ29udmVudGlvbik6IFJlbmFtZSBQcmltX09wIHRvIFNlY29uZF9QcmltX09wIHRvIGF2b2lkIHBvc3NpYmxlCgljb25mdXNpb24gd2l0aCBDaGVja19Db252ZW50aW9ucycgb3duIFByaW1fT3AgbG9jYWwgdmFyaWFibGUuCgkoQ3JlYXRlX0V4dHJhX0Zvcm1hbHMpOiBUZXN0IGZvciBhIHRhZ2dlZCByZXN1bHQgdHlwZSByYXRoZXIgdGhhbiBhCgljb250cm9sbGluZyByZXN1bHQgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIGFkZCBhIEJJUF9BbGxvY19Gb3JtCglmb3JtYWwgYW5kIGEgQklQX0ZpbmFsX0xpc3QgZm9ybWFsIHRvIHRoZSBmdW5jdGlvbi4KCShDaGVja19Db25mb3JtYW5jZSk7IEZvciBwYXJhbWV0ZXJzIHRoYXQgYXJlIGFub255bW91cyBhY2Nlc3MgdHlwZXMsCglzdWJ0eXBlIGNvbmZvcm1hbmNlIHJlcXVpcmVzIHRoYXQgdGhlIG5vdCBudWxsIGFuZCB0aGUgY29uc3RhbnQKCWluZGljYXRvcnMgbXVzdCBtYXRjaAoJKENoZWNrX1N5bmNocm9uaXplZF9PdmVycmlkaW5nKTogTmV3IHBhcmFtZXRlciBGb3JtYWxfVHlwLiBBZGQgbWFjaGluZXJ5Cgl0byByZXRyaWV2ZSB0aGUgYXBwcm9wcmlhdGUgdHlwZSB3aGVuIHByb2Nlc3NpbmcgYSBjb25jdXJyZW50IHR5cGUKCWRlY2xhcmVkIHdpdGhpbiBhIGdlbmVyaWMuIE1pbm9yIGNvbW1lbnQgcmVmb3JtYXR0aW5nLiBDaGFuZ2UgaW52b2NhdGlvbgoJb2YgT3ZlcnJpZGVzX1N5bmNocm9uaXplZF9QcmltaXRpdmUgdG8gRmluZF9PdmVycmlkZGVuX1N5bmNocm9uaXplZF9QcmktCgltaXRpdmUuCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBJZiB0aGUgcmV0dXJuIHR5cGUgb2YgYSBmdW5jdGlvbiBpcyBhbgoJYW5vbnltb3VzIGFjY2VzcyB0byB0aGUgbGltaXRlZCB2aWV3IG9mIGEgY2xhc3Mtd2lkZSB0eXBlLCBhbmQgdGhlCglub24tbGltaXRlZCB2aWV3IG9mIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSwgdXBkYXRlIHRoZSB0eXBlIG9mIHRoZQoJZnVuY3Rpb24gc28gdGhhdCBjb2RlIGNhbiBiZSBnZW5lcmF0ZWQuCgkoUHJvY2Vzc19Gb3JtYWxzKTogSW4gY2FzZSBvZiBhY2Nlc3Mtc3VidHlwZSBpdHlwZSB3aG9zZSBkZXNpZ25hdGVkCgl0eXBlIGlzIGFsc28gYW4gaXR5cGUgKHNpdHVhdGlvbiB0aGF0IGhhcHBlbnMgbm93IHdpdGggYWNjZXNzIHRvCglzdWJwcm9ncmFtcykgd2UgbWFyayB0aGUgYWNjZXNzLXR5cGUgaXR5cGUgd2l0aCB0aGUgSGFzX0RlbGF5ZWRfRnJlZXplCglhdHRyaWJ1dGUgdG8gYXZvaWQgYmFja2VuZCBwcm9ibGVtcy4KCShDaGVja19SZXR1cm5fU3VidHlwZV9JbmRpY2F0aW9uKTogUmVwbGFjZSBSX1R5cGUgd2l0aCBSX1N0bV9UeXBlIGluCglpbml0IG9mIFJfU3RtX1R5cGVfSXNfQW5vbl9BY2Nlc3MuIEFsc28gY2hlY2sgdGhhdCBiYXNlIHR5cGVzIG9mIHRoZQoJYW5vbnltb3VzIHR5cGVzJyBkZXNpZ25hdGVkIHR5cGVzIGFyZSBzYW1lIGJlZm9yZSB0ZXN0aW5nCglTdWJ0eXBlc19TdGF0aWNhbGx5X01hdGNoLgoJKENyZWF0ZV9FeHRyYV9Gb3JtYWxzKTogVGVzdCBmb3IgYSBuYW1lZCBhY2Nlc3MgcGFyYW1ldGVyIHRoYXQgaXMgYQoJY29udHJvbGxpbmcgZm9ybWFsIGFzIGFuIGFkZGl0aW9uYWwgY29uZGl0aW9uIGZvciBhZGRpbmcgYW4KCWFjY2Vzc2liaWxpdHkgbGV2ZWwgZm9ybWFsLiBUaGlzIGNhbiBvY2N1ciBpbiB0aGUgc3VicCB0eXBlIGNyZWF0ZWQgZm9yCglkaXNwYXRjaGluZyBjYWxscyBpbiBFeHBhbmRfRGlzcGF0Y2hpbmdfQ2FsbCwgYW5kIGFsbG93cyBjYWxsaW5nCglDcmVhdGVfRXh0cmFfRm9ybWFscyBmcm9tIHRoYXQgcHJvY2VkdXJlIHJhdGhlciB0aGFuIHNwZWNpYWwtY2FzaW5nIHRoZQoJZXh0cmEgZm9ybWFscyB0aGVyZS4KCShDcmVhdGVfRXh0cmFfRm9ybWFscyk6IEFkZCBCSVBfQWxsb2NfRm9ybSBhbmQgQklQX0ZpbmFsX0xpc3QgZm9ybWFscwoJd2hlbiB0aGUgZnVuY3Rpb24gaGFzIGEgY29udHJvbGxpbmcgcmVzdWx0LgoJKENoZWNrX1JldHVybnMpOiBBZGQgbXVjaCBtb3JlIGtub3dsZWRnZSBvZiB0aGUgb3B0aW1pemF0aW9uIG9mIGxvY2FsCglyYWlzZSBzdGF0ZW1lbnRzIHRvIGdvdG9zLCB0byByZXRhaW4gcHJvcGVyIHdhcm5pbmdzIGluIHRoaXMgY2FzZS4KCShDaGVja19TdGF0ZW1lbnRfU2VxdWVuY2UpOiBJZ25vcmUgTl9QdXNoX3h4eF9MYWJlbCBhbmQgTl9Qb3BfeHh4X0xhYmVsCglub2RlcyB3aGVuIGxvb2tpbmcgZm9yIGxhc3Qgc3RhdGVtZW50LgoKCSogc2VtX3R5cGUuYWRzLCBzZW1fdHlwZS5hZGIgKFNwZWNpZmljX1R5cGUpOiBBZGQgc3VwcG9ydCBmb3IKCWNsYXNzLXdpZGUgdHlwZXMgdmlzaWJsZSB0aHJvdWdoIGxpbWl0ZWQgd2l0aCBjbGF1c2VzLgoJKEFkZF9PbmVfSW50ZXJwKTogSWYgdGhlIG9wZXJhbmRzIGFyZSBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzLCB0aGUKCXByZWRlZmluZWQgb3BlcmF0b3Igb24gdW5pdmVyc2FsX2FjY2VzcyBpcyBpbW1lZGlhdGVseSB2aXNpYmxlcwoJKEZpbmRfVW5pcXVlX1R5cGUpOiBIYW5kbGUgYW5vbnltb3VzIGFjY2VzcyB0byBzdWJwcm9ncmFtIHR5cGVzIGp1c3QgYXMKCW90aGVyIGFub255bW91cyBhY2Nlc3MgdHlwZXMuCgkoRGlzYW1iaWd1YXRlKTogVGFrZSBpbnRvIGFjY291bnQgQ0lMIGNvbnZlbnRpb24uCgkoSW50ZXJmYWNlX1ByZXNlbnRfSW5fQW5jZXN0b3IpOiBBZGQgc3VwcG9ydCBmb3IgY2xhc3Mtd2lkZSBpbnRlcmZhY2VzLgoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzaW5wdXQuYWRzLCBzaW5wdXQuYWRiLCB1aW50cC5hZHMsIHVyZWFscC5hZGIsIHN0cmluZ3QuYWRiLAoJc2VtX2VsaW0uYWRiLCBwcmotc3RydC5hZGIsIHJlcGluZm8uYWRzLCByZXBpbmZvLmFkYiwgbmFtZXQuYWRzLAoJZWxpc3RzLmFkcywgZWxpc3RzLmFkYiwgbGliLmFkcywgbGliLmFkYiAoVW5sb2NrKTogTmV3IHByb2NlZHVyZS4KCUZpeCBsb3dlciBib3VuZCBvZiB0YWJsZXMuCglBZGQgcmVwIGNsYXVzZXMuCgoJKiBubGlzdHMuYWRiOiBEaXR0by4KCShQcmV2X05vZGUsIE5leHRfTm9kZSk6IENoYW5nZSBpbmRleCB0eXBlIHRvIEludCBzbyB0aGF0IGl0IHByb3Blcmx5Cgljb3ZlcnMgdGhlIHJhbmdlIEZpcnN0X05vZGVfSWQgLSAxIHVwLgoKMjAwNy0wNi0wNiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkcywgZXhwX2FnZ3IuYWRiOiAKCShCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogQWRkIG1pc3NpbmcgaW5pdGlhbGl6YXRpb24gb2Ygc2Vjb25kYXJ5IHRhZ3MKCWluIGV4dGVuc2lvbiBhZ2dyZWdhdGVzLgoJKEZsYXR0ZW4pOiBPdGhlciBjb25kaXRpb25zIGJlaW5nIG1ldCwgYW4gYWdncmVnYXRlIGlzIHN0YXRpYyBpZiB0aGUKCWxvdyBib3VuZCBnaXZlbiBieSBjb21wb25lbnQgYXNzb2NpYXRpb25zIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBsb3cKCWJvdW5kIG9mIHRoZSBiYXNlIGluZGV4IHR5cGUuCgkoUGFja2VkX0FycmF5X0FnZ3JlZ2F0ZV9IYW5kbGVkKTogSWYgdGhlIGNvbXBvbmVudCB0eXBlIGlzIGl0c2VsZiBhCglwYWNrZWQgYXJyYXkgb3IgcmVjb3JkLCB0aGUgZnJvbnQtZW5kIG11c3QgZXhwYW5kIGludG8gYXNzaWdubWVudHMuCgkoR2VuX0N0cmxfQWN0aW9uc19Gb3JfQWdncik6IEluIGNhbGwgdG8gSW5pdF9Db250cm9sbGVyLCBwYXNzIEZhbHNlIHRvCglJbml0X1ByLCBpbnN0ZWFkIG9mIEFuY2VzdG9yX0lzX0V4cHJlc3Npb24uCgkoR2VuX0N0cmxfQWN0aW9uc19Gb3JfQWdncik6IFdoZW4gcHJvY2Vzc2luZyBhbiBhZ2dyZWdhdGUgb2YgYQoJY29leHRlbnNpb24gY2hhaW4gcm9vdCwgZWl0aGVyIGdlbmVyYXRlIGEgbGlzdCBjb250cm9sbGVyIG9yIHVzZSB0aGUKCWFscmVhZHkgZXhpc3Rpbmcgb25lLgoJKFN0YXRpY19BcnJheV9BZ2dyZWdhdGUpOiBOZXcgcHJvY2VkdXJlIHRvIGNvbnN0cnVjdCBhIHBvc2l0aW9uYWwKCWFnZ3JlZ2F0ZSB0aGF0IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBiYWNrZW5kLCB3aGVuIGFsbCBib3VuZHMgYW5kCgljb21wb25lbnRzIGFyZSBjb21waWxlLXRpbWUga25vd24gY29uc3RhbnRzLgoJKEV4cGFuZF9SZWNvcmRfQWdncmVnYXRlKTogRm9yY2UgY29udmVyc2lvbiBvZiBhZ2dyZWdhdGVzIG9mIHRhZ2dlZAoJdHlwZXMgY292ZXJpbmcgaW50ZXJmYWNlIHR5cGVzIGludG8gYXNzaWdubWVudHMuCgkoUmVwbGFjZV9UeXBlKTogbW92ZSB0byBCdWlsZF9SZWNvcmRfQWdncl9Db2RlLgoJKEV4cGFuZF9SZWNvcmRfQWdncl9Db2RlKTogaWYgdGhlIHRhcmdldCBvZiB0aGUgYWdncmVnYXRlIGlzIGFuCglpbnRlcmZhY2UgdHlwZSwgY29udmVydCB0byB0aGUgZGVmaW5pdGUgdHlwZSBvZiB0aGUgYWdncmVnYXRlIGl0c2VsZiwKCXNvIHRoYXQgbmVlZGVkIGNvbXBvbmVudHMgYXJlIHZpc2libGUuCgkoQ29udmVydF9BZ2dyX0luX09iamVjdF9EZWNsKTogSWYgdGhlIGFnZ3JlZ2F0ZSBoYXMgY29udHJvbGxlZAoJY29tcG9uZW50cyBhbmQgdGhlIGNvbnRleHQgaXMgYW4gZXh0ZW5kZWQgcmV0dXJuIHN0YXRlbWVudCBkbyBub3QKCWNyZWF0ZSBhIHRyYW5zaWVudCBibG9jayBmb3IgaXQsIHRvIHByZXZlbnQgcHJlbWF0dXJlIGZpbmFsaXphdGlvbgoJYmVmb3JlIHRoZSByZXR1cm4gaXMgZXhlY3V0ZWQuCgkoR2VuX0Fzc2lnbik6IERvIG5vdCBnZW5lcmF0ZSBhIGNhbGwgdG8gZGVlcCBhZGp1c3Qgcm91dGluZSBpZiB0aGUKCWNvbXBvbmVudCB0eXBlIGlzIGl0c2VsZiBhbiBhcnJheSBvZiBjb250cm9sbGVkIChzdWIpLWNvbXBvbmVudHMKCWluaXRpYWxpemVkIHdpdGggYW4gaW5uZXIgYWdncmVnYXRlLgoJKENvbXBvbmVudF9DaGVjayk6IE5ldyBuYW1lIGZvciBTdGF0aWNfQ2hlY2suIFRoaXMgbmFtZSBpcyBub3cgbW9yZQoJYXBwcm9wcmlhdGUsIGFuZCBkb2N1bWVudGF0aW9uIGlzIGFkZGVkIHdoaWNoIHdhcyBtaXNzaW5nLgoJKENvbXBvbmVudF9DaGVjayk6IEFkZCB0ZXN0IGZvciBiaXQgYWxpZ25lZCBjb21wb25lbnQgdmFsdWUKCShDb21wb25lbnRfTm90X09LX0Zvcl9CYWNrZW5kKTogUmVuYW1lcyBIYXNfRGVsYXllZF9OZXN0ZWRfQWdncmVnYXRlX09yXwoJVGFnZ2VkX0NvbXBzLCBuYW1lIGlzIG1vcmUgYXBwcm9wcmlhdGUgZ2l2ZW4gYWRkZWQgZnVuY3Rpb24gYmVsb3cuCgkoQ29tcG9uZW50X05vdF9PS19Gb3JfQmFja2VuZCk6IENoZWNrIGZvciBiaXQgYWxpZ25lZCBjb21wb25lbnQgcmVmLgoKMjAwNy0wNi0wNiAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfYXR0ci5hZGIgKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBDYXNlIENhbGxhYmxlIGFuZAoJVGVybWluYXRlZDogQWRkIHVuY2hlY2tlZCB0eXBlIGNvbnZlcnNpb24gZnJvbSBTeXN0ZW0uQWRkcmVzcyB0bwoJU3lzdGVtLlRhc2tpbmcuVGFza19JZCB3aGVuIGNhbGxpbmcgdGhlIHByZWRlZmluZWQgcHJpbWl0aXZlCglfZGlzcF9nZXRfdGFza19pZC4KCURpc2FibGUgbmV3IEFkYSAwNSBhY2Nlc3NpYmlsaXR5IGNoZWNrIGZvciBKVk0uTkVUIHRhcmdldHMsIHdoaWNoCgljYW5ub3QgYmUgaW1wbGVtZW50ZWQgaW4gYSBwcmFjdGljYWwgd2F5LgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2U6IGNhc2UgQXR0cmlidXRlX1RhZyk6IFRoZSB1c2Ugb2YgJ1RhZyBpbgoJdGhlIHNvdXJjZXMgYWx3YXlzIHJlZmVyZW5jZXMgdGhlIHRhZyBvZiB0aGUgYWN0dWFsIG9iamVjdC4gVGhlcmVmb3JlLAoJaWYgJ1RhZyBpcyBhcHBsaWVkIGluIHRoZSBzb3VyY2VzIHRvIGNsYXNzLXdpZGUgaW50ZXJmYWNlIG9iamVjdHMgd2UKCWdlbmVyYXRlIGNvZGUgdGhhdCBkaXNwbGFjZXMgInRoaXMiIHRvIHJlZmVyZW5jZSB0aGUgYmFzZSBvZiB0aGUgb2JqZWN0LgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UsIGNhc2UgU2l6ZSk6IFJldHVybiBzcGVjaWZpZWQgc2l6ZSBpZgoJa25vd24gdG8gZnJvbnQgZW5kLgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBUaGUgZXhwYW5zaW9uIG9mIHRoZSAnQWRkcmVzcyBhdHRyaWJ1dGUKCWhhcyBjb2RlIHRoYXQgZGlzcGxhY2VzIHRoZSBwb2ludGVyIG9mIHRoZSBvYmplY3QgdG8gbWFuYWdlIGludGVyZmFjZQoJdHlwZXMuIEhvd2V2ZXIgdGhpcyBjb2RlIG11c3Qgbm90IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHByZWZpeCBpcyBhCglzdWJwcm9ncmFtLiBUaGlzIGJ1ZyBjYXVzZWQgdGhlIHdyb25nIGV4cGFuc2lvbiBvZiB0aGUgaW50ZXJuYWxseQoJZ2VuZXJhdGVkIGFzc2lnbm1lbnQgdGhhdCBmaWxscyB0aGUgZGlzcGF0Y2ggdGFibGUgd2hlbiB0aGUgcHJpbWl0aXZlCglpcyBhIGZ1bmN0aW9uIHJldHVybmluZyBhIGNsYXNzLXdpZGUgaW50ZXJmYWNlIHR5cGUuCgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZTpBdHRyaWJ1dGVfVmFsaWQpOiBSZW1vdmUgaW5jb3JyZWN0IGNhbGwgdG8KCVNldF9BdHRyaWJ1dGVfTmFtZSBmb3IgTmFtZV9VbmFsaWduZWRfVmFsaWQuCgoyMDA3LTA2LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoMTMuYWRiIChFeHBhbmRfTl9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UsIGNhc2UgJ0FkZHJlc3MpOgoJSWYgdGhlIGluaXRpYWxpemF0aW9uIGlzIHRoZSBlcXVpdmFsZW50IGFnZ3JlZ2F0ZSBvZiB0aGUgaW5pdGlhbGl6YXRpb24KCXByb2NlZHVyZSBvZiB0aGUgdHlwZSwgZG8gbm90IHJlbW92ZSBpdC4KCShFeHBhbmRfTl9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UpOiBFeGNsdWRlIGFjY2VzcyB2YXJpYWJsZXMKCWluaXRpYWxpemVkIHRvIG51bGwgZnJvbSBoYXZpbmcgdGhlaXIgZXhwcmVzc2lvbiByZXNldCB0byBlbXB0eSBhbmQKCW5vdGUgdGhpcyBleGNlcHRpb24gaW4gdGhlIGNvbW1lbnQuCgoyMDA3LTA2LTA2ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBleHBfY2gyLmFkYjogUmVtb3ZlICJ3aXRoIiBhbmQgInVzZSIgY2xhdXNlcyBmb3IgTmFtZXQgYW5kIFNuYW1lcy4KCUFkZCAid2l0aCIgYW5kICJ1c2UiIGNsYXVzZXMgZm9yIFNlbV9BdHRyLgoJKEV4cGFuZF9DdXJyZW50X1ZhbHVlKTogRG8gbm90IHJlcGxhY2Ugb2NjdXJlbmNlcyBvZiBhdHRyaWJ1dGUKCXJlZmVyZW5jZXMgd2hlcmUgdGhlIHByZWZpeCBtdXN0IGJlIGEgc2ltcGxlIG5hbWUuCgoJKiBzZW1fYXR0ci5hZHMsIHNlbV9hdHRyLmFkYjogUmVtb3ZlICJ3aXRoIiBhbmQgInVzZSIgY2xhdXNlcyBmb3IKCU5hbWV0LiBBZGQgbmV3IGFycmF5cyBBdHRyaWJ1dGVfTmFtZV9Nb2RpZmllc19QcmVmaXggYW5kCglBdHRyaWJ1dGVfUmVxdWlyZXNfU2ltcGxlX05hbWVfUHJlZml4LgoJKE5hbWVfTW9kaWZpZXNfUHJlZml4KTogQm9keSBvZiBuZXcgZnVuY3Rpb24uCgkoUmVxdWlyZXNfU2ltcGxlX05hbWVfUHJlZml4KTogQm9keSBvZiBuZXcgZnVuY3Rpb24uCgkoUmVzb2x2ZV9BdHRyaWJ1dGUsIGNhc2UgQWNjZXNzKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciBjYXNlIG9mCgltaXNtYXRjaGVkIGNvbnZlbnRpb25zLgoJKEFuYWx5emVfQXR0cmlidXRlLCBjYXNlICdUYWcpOiBUaGUgcHJlZml4IHRoZSBhdHRyaWJ1dGUgY2Fubm90IGJlIG9mIGFuCglpbmNvbXBsZXRlIHR5cGUuCgkoQW5hbHl6ZV9BdHRyaWJ1dGUsIGNhc2UgJ0FjY2Vzcyk6IElmIHRoZSB0eXBlIG9mIHRoZSBwcmVmaXggaXMgYQoJY29uc3RyYWluZWQgc3VidHlwZSBmb3IgYSBub21pbmFsIHVuY29uc3RyYWluZWQgdHlwZSwgdXNlIGl0cyBiYXNlIHR5cGUKCXRvIGNoZWNrIGZvciBjb25mb3JtYW5jZSB3aXRoIHRoZSBjb250ZXh0LgoJKFJlc29sdmVfQXR0cmlidXRlKTogUmVtb3ZlIHRlc3Qgb2YgdGhlIGFjY2VzcyB0eXBlIGJlaW5nIGFzc29jaWF0ZWQKCXdpdGggYSByZXR1cm4gc3RhdGVtZW50IGZyb20gY29uZGl0aW9uIGZvciBwZXJmb3JtaW5nIGFjY2Vzc2liaWxpdHkKCWNoZWNrcyBvbiBhY2Nlc3MgYXR0cmlidXRlcywgc2luY2UgdGhpcyBjYXNlIGlzIG5vdyBjYXB0dXJlZCBieQoJSXNfTG9jYWxfQW5vbnltb3VzX0FjY2Vzcy4KCShBbmFseXplX0FjY2Vzc19BdHRyaWJ1dGUpOiBTZXQgQWRkcmVzc19UYWtlbiBvbiBlbnRpdHkKCShBbmFseXplX0F0dHJpYnV0ZSwgY2FzZSBBZGRyZXNzKTogU2V0IEFkZHJlc3NfVGFrZW4gb24gZW50aXR5CgkoT0tfU2VsZl9SZWZlcmVuY2UpOiBUcmF2ZXJzZSB0cmVlIHRvIGxvY2F0ZSBlbmNsb3NpbmcgYWdncmVnYXRlIHdoZW4KCXZhbGlkYXRpbmcgYW4gYWNjZXNzIGF0dHJpYnV0ZSB3aG9zZSBwcmVmaXggaXMgYSBjdXJyZW50IGluc3RhbmNlLgoJKFJlc29sdmVfQXR0cmlidXRlKTogSW4gY2FzZSBvZiBhdHRyaWJ1dGVzICdDb2RlX0FkZHJlc3MgYW5kICdBZGRyZXNzCglhcHBsaWVkIHRvIGRpc3BhdGNoaW5nIG9wZXJhdGlvbnMsIGlmIGZyZWV6aW5nIGlzIHJlcXVpcmVkIHRoZW4gd2Ugc2V0Cgl0aGUgYXR0cmlidXRlIEhhc19EZWxheWVkX0ZyZWV6ZSBpbiB0aGUgcHJlZml4J3MgZW50aXR5LgoJKENoZWNrX0xvY2FsX0FjY2Vzcyk6IFNldCBmbGFnIFN1cHByZXNzX1ZhbHVlX1RyYWNraW5nX09uX0NhbGwgaW4KCWN1cnJlbnQgc2NvcGUgaWYgYWNjZXNzIG9mIGxvY2FsIHN1YnByb2dyYW0gdGFrZW4KCShBbmFseXplX0FjY2Vzc19BdHRyaWJ1dGUpOiBDaGVjayBsZWdhbGl0eSBvZiBzZWxmLXJlZmVyZW5jZSBldmVuIGlmIHRoZQoJZXhwcmVzc2lvbiBjb21lcyBmcm9tIHNvdXJjZSwgYXMgd2hlbiBhIHNpbmdsZSBjb21wb25lbnQgYXNzb2NpYXRpb24gaW4KCWFuIGFnZ3JlZ2F0ZSBoYXMgYSBib3ggYXNzb2NpYXRpb24uCgkoUmVzb2x2ZV9BdHRyaWJ1dGUsIGNhc2UgJ0FjY2Vzcyk6IERvIG5vdCBhcHBseSBhY2Nlc3NpYmlsaXR5IGNoZWNrcyB0bwoJdGhlIHByZWZpeCBpZiBpdCBpcyBhIHByb3RlY3RlZCBvcGVyYXRpb24gYW5kIHRoZSBhdHRyaWJ1dGUgaXMKCVVucmVzdHJpY3RlZF9BY2Nlc3MuCgkoUmVzb2x2ZV9BdHRyaWJ1dGUsIGNhc2UgJ0FjY2Vzcyk6IFNldCB0aGUgRXR5cGUgb2YgdGhlIGF0dHJpYnV0ZQoJcmVmZXJlbmNlIHRvIHRoZSBiYXNlIHR5cGUgb2YgdGhlIGNvbnRleHQsIHRvIGZvcmNlIGEgY29uc3RyYWludCBjaGVjawoJd2hlbiB0aGUgY29udGV4dCBpcyBhbiBhY2Nlc3Mgc3VidHlwZSB3aXRoIGFuIGV4cGxpY2l0IGNvbnN0cmFpbnQuCgkoQW5hbHl6ZV9BdHRyaWJ1dGUsIGNhc2UgJ0NsYXNzKTogSWYgdGhlIHByZWZpeCBpcyBhbiBpbnRlcmZhY2UgYW5kIHRoZQoJbm9kZSBpcyByZXdyaXR0ZW4gYXMgYW4gaW50ZXJmYWNlIGNvbnZlcnNpb24uIGxlYXZlIHVuYW5hbHl6ZWQgYWZ0ZXIKCXJlc29sdXRpb24sIHRvIGVuc3VyZSB0aGF0IHR5cGUgY2hlY2tpbmcgYWdhaW5zdCB0aGUgY29udGV4dCB3aWxsIHRha2UKCXBsYWNlLgoKMjAwNy0wNi0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDMuYWRiIChNYWtlX0NvbnRyb2xsaW5nX0Z1bmN0aW9uX1dyYXBwZXJzKTogZ2VuZXJhdGUgd3JhcHBlciBhCgl3cmFwcGVyIHdoZW4gdGhlIGZ1bGwgdmlldyBvZiB0aGUgY29udHJvbGxpbmcgdHlwZSBvZiBhbiBpbmhlcml0ZWQKCWZ1bmN0aW9uIHRoYXQgZGlzcGF0Y2hlcyBvbiByZXN1bHQgaW1wbGVtZW50cyBpbnRlcmZhY2VzLgoJKEV4cGFuZF9OX09iamVjdF9EZWNsYXJhdGlvbik6IEluIGNhc2VzIHdoZXJlIHRoZSB0eXBlIG9mIHRoZQoJZGVjbGFyYXRpb24gaXMgYW5vbnltb3VzIGFjY2VzcywgY3JlYXRlIGZpbmFsaXphdGlvbiBsaXN0IGZvciBpdC4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBHZW5lcmF0ZSBhIHBlcnNpc3RlbnRfYnNzIGRpcmVjdGl2ZSBvbmx5CglpZiB0aGUgb2JqZWN0IGhhcyBubyBleHBsaWNpdCBpbml0aWFsaXphdGlvbiwgdG8gbWF0Y2ggZGVzY3JpcHRpb24gb2YKCWZ1bmN0aW9uYWxpdHkgb2YgcHJhZ2FtIFBlcnNpc3RlbnRfQlNTLgoJKEJ1aWxkX0VxdWl2YWxlbnRfQXJyYXlfQWdncmVnYXRlLCBCdWlsZF9FcXVpdmFsZW50X1JlY29yZF9BZ2dyZWdhdGUpOgoJbmV3IGZ1bmN0aW9uIHRvIGJ1aWxkIHN0YXRpYyBhZ2dyZWdhdGVzLCB0byByZXBsYWNlIGluaXRpYWxpemF0aW9uIGNhbGwKCXdoZW4gc3RhdGljIGluaXRpYWxpemF0aW9uIGlzIGRlc2lyZWQuCgkoRnJlZXplX1R5cGUpOiBHZW5lcmF0ZSBhIGxpc3QgY29udHJvbGxlciBmb3IgYW4gYWNjZXNzIHR5cGUgd2hlbmV2ZXIKCWl0cyBkZXNpZ25hdGVkIHR5cGUgaGFzIGNvbnRyb2xsZWQgYW5vbnltb3VzIGFjY2VzcyBkaXNjcmltaW5hbnRzLgoJKEJ1aWxkX0VxdWl2YWxlbnRfQWdncmVnYXRlKTogTmV3IHByb2NlZHVyZSB0byBjb21wdXRlIGEgc3RhdGljCglhZ2dyZWdhdGUgdG8gYmUgdXNlZCBhcyBkZWZhdWx0IGluaXRpYWxpemF0aW9uIGZvciBjb21wb3NpdGUgdHlwZXMsCglpbnN0ZWFkIG9mIGEgZ2VuZXJhdGluZyBhIGNhbGwgdG8gdGhlIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZSBmb3IgdGhlCgl0eXBlLgoJKEJ1aWxkX0luaXRpYWxpemF0aW9uX0NhbGwpOiBXaGVuIGF2YWlsYWJsZSwgcmVwbGFjZSBhIGNhbGwgdG8gdGhlCglpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUgd2l0aCBhIGNvcHkgb2YgdGhlIGVxdWl2YWxlbnQgc3RhdGljIGFnZ3JlZ2F0ZQoJZm9yIHRoZSB0eXBlLgoJKEV4cGFuZF9OX09iamVjdF9EZWNsYXJhdGlvbik6ICBVc2UgTmV3X09jY3VycmVuY2VfT2YgaW4gZ2VuZXJhdGVkCglkZWNsYXJhdGlvbnMgZm9yIG9iamVjdHMgb2YgYSBjbGFzcy13aWRlIGludGVyZmFjZSB0eXBlLCByYXRoZXIgdGhhbgoJanVzdCBpZGVudGlmaWVycywgdG8gcHJldmVudCB2aXNpYmlsaXR5IHByb2JsZW1zLgoJKEV4cGFuZF9OX09iamVjdF9EZWNsYXJhdGlvbik6IFdoZW4gZXhwYW5kaW5nIHRoZSBkZWNsYXJhdGlvbiBmb3IgYW4KCW9iamVjdCBvZiBhIGNsYXNzLXdpZGUgaW50ZXJmYWNlIHR5cGUsIHByZXNlcnZlIHRoZSBob21vbnltIGNoYWluIG9mCgl0aGUgb3JpZ2luYWwgZW50aXR5IGJlZm9yZSBleGNoYW5naW5nIGl0IHdpdGggdGhhdCBvZiB0aGUgZ2VuZXJhdGVkCglyZW5hbWluZyBkZWNsYXJhdGlvbi4KCShGcmVlemVfRW51bWVyYXRpb25fVHlwZSk6IERvbid0IHJhaXNlIENFIGlmIE5vX0V4Y2VwdGlvbl9Qcm9wYWdhdGlvbgoJYWN0aXZlLCBiZWNhdXNlIHRoZXJlIGlzIG5vIHdheSB0byBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBJbiBjYXNlIG9mIENQUF9DbGFzcyB0eXBlcyBhZGQgYSBjYWxsIHRvIE1ha2VfRFQKCXRvIGRvIGEgbWluaW11bSBkZWNvcmF0aW9uIG9mIHRoZSBBY2Nlc3NfRGlzcF9UYWJsZSBsaXN0LgoJKEV4cGFuZF9SZWNvcmRfQ29udHJvbGxlcik6IEF2b2lkIHRoZSBhZGRpdGlvbiBvZiB0aGUgY29udHJvbGxlciBiZXR3ZWVuCgl0aGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIHRhZyBvZiBhIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZSBhbmQgaXRzCglhZGphY2VudCBjb21wb25lbnQgdGhhdCBzdG9yZXMgdGhlIG9mZnNldCB0byB0aGUgYmFzZSBvZiB0aGUgb2JqZWN0LgoJVGhpcyBsYXR0ZXIgY29tcG9uZW50IGlzIG9ubHkgZ2VuZXJhdGVkIHdoZW4gdGhlIHBhcmVudCB0eXBlIGhhcwoJZGlzY3JpbWluYW50cyAtLS1kb2N1bWVudGVkIGluIEFkZF9JbnRlcmZhY2VfVGFnX0NvbXBvbmVudHMpLgoJKEFwcGx5X0FycmF5X1NpemVfQ2hlY2spOiBSZW1vdmVkLCBubyBsb25nZXIgbmVlZGVkLgoJKEV4cGFuZF9OX0Z1bGxfVHlwZV9EZWNsYXJhdGlvbik6IElmIHRoZSB0eXBlIGhhcyBhbm9ueW1vdXMgYWNjZXNzCgljb21wb25lbnRzLCBjcmVhdGUgYSBNYXN0ZXJfRW50aXR5IGZvciBpdCBvbmx5IGlmIGl0IGNvbnRhaW5zIHRhc2tzLgoJKEJ1aWxkX0luaXRfUHJvY2VkdXJlKTogU3VwcHJlc3MgdGhlIHRhZyBhc3NpZ25tZW50IGNvbXBpbGluZyB1bmRlcgoJbm8gcnVuLXRpbWUgbW9kZS4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBSZW1vdmUgY29kZSBhc3NvY2lhdGVkIHdpdGggY3JlYXRpb24gb2YgZGlzcGF0Y2gKCXRhYmxlLgoJKEluaXRfU2Vjb25kYXJ5X1RhZ3MpOiBVcGRhdGUgdHlwZSBvZiBhY3R1YWxzIHdoZW4gZ2VuZXJhdGluZyBjYWxscyB0bwoJQWRhLlRhZ3MuU2V0X09mZnNldF9Ub19Ub3AKCShTdHJlYW1fT3BlcmF0aW9uX09LKTogRGlzYWJsZSB1c2Ugb2Ygc3RyZWFtcyBjb21waWxpbmcgdW5kZXIgbm8KCXJ1bi10aW1lIG1vZGUKCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBEb24ndCBkbyBJbml0aWFsaXplX1NjYWxhcnMgaW5pdGFsaXphdGlvbgoJaWYgSGFzX0luaXRfRXhwcmVzc2lvbiBzZXQuCgkoQnVpbGRfSW5pdF9Qcm9jZWR1cmUpOiBSZXBsYWNlIGNhbGwgdG8gRmlsbF9EVF9FbnRyeSBieSBjYWxsIHRvCglSZWdpc3Rlcl9QcmltaXRpdmUsIHdoaWNoIHByb3ZpZGVzIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuCgkoUmVxdWlyZXNfSW5pdF9Qcm9jKTogUmV0dXJuIGZhbHNlIGluIGNhc2Ugb2YgaW50ZXJmYWNlIHR5cGVzLgoJKEFkZF9TZWNvbmRhcnlfVGFibGVzKTogVXNlIHRoZSBuZXcgYXR0cmlidXRlIFJlbGF0ZWRfSW50ZXJmYWNlIHRvCgljbGVhbnVwIHRoZSBjb2RlLgoJKFByZWRlZmluZWRfUHJpbWl0aXZlX0ZyZWV6ZSk6IERvIG5vdCBhc3N1bWUgdGhhdCBhbiBpbnRlcm5hbCBlbnRpdHkKCWlzIGFsd2F5cyBhc3NvY2lhdGVkIHdpdGggYSBwcmVkZWZpbmVkIHByaW1pdGl2ZSBiZWNhdXNlIHRoZSBpbnRlcm5hbAoJZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIGludGVyZmFjZSB0eXBlcyBhcmUgbm90IHByZWRlZmluZWQgcHJpbWl0aXZlcy4KCVRoZXJlZm9yZSwgdGhlIGNhbGwgdG8gSXNfSW50ZXJuYWwgaXMgcmVwbGFjZWQgYnkgYSBjYWxsIHRvIHRoZQoJZnVuY3Rpb24gSXNfUHJlZGVmaW5lZF9EaXNwYXRjaGluZ19PcGVyYXRpb24uCgkoTWFrZV9FcV9JZik6IFdoZW4gZ2VuZXJhdGluZyB0aGUgbGlzdCBvZiBjb21wYXJpc29ucyBmb3IgdGhlCgljb21wb25lbnRzIG9mIGEgZ2l2ZW4gdmFyaWFudCwgb21pdCB0aGUgY29udHJvbGxlciBjb21wb25lbnQgdGhhdCBpcwoJcHJlc2VudCBpZiB0aGUgdmFyaWFudCBoYXMgY29udHJvbGxlZCBjb21wb25lbnRzLgoKMjAwNy0wNi0wNiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNC5hZGIgKENvbXBsZXRlX0NvZXh0ZW5zaW9uX0ZpbmFsaXphdGlvbik6IEFkZCBtYWNoaW5lcnkgdG8KCWhhbmRsZSB0aGUgY3JlYXRpb24gb2YgZmluYWxpemF0aW9uIGxpc3RzIGFuZCBjYWxscyBmb3IgbmVzdGVkCgljb2V4dGVuc2lvbnMgd2hlbiB0aGUgcm9vdCBvZiB0aGUgY2hhaW5zIGlzIHBhcnQgb2YgYSByZXR1cm4gc3RhdGVtZW50LgoJKEluc2lkZV9BX1JldHVybl9TdGF0ZW1lbnQpOiBOZXcgZnVuY3Rpb24gaW5zaWRlIENvbXBsZXRlX0NvZXh0ZW5zaW9uXwoJRmluYWxpemF0aW9uLgoJKEV4cGFuZF9SZWNvcmRfRXF1YWxpdHkpOiBTa2lwIGNvbXBvbmVudHMgdGhhdCBhcmUgaW50ZXJmYWNlIHR5cGVzLgoJKERpc3BsYWNlX0FsbG9jYXRvcl9Qb2ludGVyKTogQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgaW50ZXJmYWNlIHN1YnR5cGVzCgkoRXhwYW5kX05fQWxsb2NhdG9yKTogUmVwbGFjZSBpbnZvY2F0aW9uIG9mIElzX0xvY2FsX0FjY2Vzc19EaXNjcmltaW5hbnQKCXdpdGggUmV3cml0ZV9Db2V4dGVuc2lvbi4gQ2hhbmdlIHRoZSBjb25kaXRpb24gZm9yIGRldGVjdGluZyBjb2V4dGVuc2lvbgoJcm9vdCBub2Rlcy4KCShJc19Mb2NhbF9BY2Nlc3NfRGlzY3JpbWluYW50KTogUmVtb3ZlZC4KCShSZXdyaXRlX0NvZXh0ZW5zaW9uKTogTmV3IHJvdXRpbmUgd2hpY2ggcmV3cml0ZXMgYSBzdGF0aWMgY29leHRlbnNpb24KCWFzIGEgdGVtcG9yYXJ5IGFuZCB1c2VzIGl0cyB1bnJlc3RyaWN0ZWQgYWNjZXNzIGluIHRoZSBjb25zdHJ1Y3Rpb24gb2YKCXRoZSBvdXRlciBvYmplY3QuCgkoQ29tcGxldGVfQ29leHRlbnNpb25fRmluYWxpemF0aW9uKTogTmV3IHJvdXRpbmUuIEdlbmVyYXRlIGZpbmFsaXphdGlvbgoJYXR0YWNobWVudCBjYWxscyB0byBhbGwgZGVsYXllZCBjb2V4dGVuc2lvbnMuCgkoRXhwYW5kX05fQWxsb2NhdG9yKTogQ2FsbCBDb21wbGV0ZV9Db2V4dGVuc2lvbl9GaW5hbGl6YXRpb24gd2hlbmV2ZXIKCXRoZSBhbGxvY2F0b3IgaXMgbm90IGEgY29leHRlbnNpb24gaXRzZWxmIGFuZCBoYXMgZGVsYXllZCBjb2V4dGVuc2lvbnMuCglJZiB0aGUgY3VycmVudCBhbGxvY2F0b3IgaXMgY29udHJvbGxlZCwgYnV0IGFsc28gYSBjb2V4dGVuc2lvbiwgZGVsYXkKCXRoZSBnZW5lcmF0aW9uIG9mIHRoZSBmaW5hbGl6YXRpb24gYXR0YWNobWVudCBjYWxsLgoJUmVuYW1lIGxvY2FsIHZhcmlhYmxlICJOb2RlIiB0byAiTm9kIiBpbiBvcmRlciB0byBhdm9pZCBjb25mdXNpb24gd2l0aAoJIkVsaXN0cy5Ob2RlIi4KCShFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBDYWxsIEFkanVzdCBmb3IgaW5pdGlhbGl6ZWQgYWxsb2NhdG9ycyBvZgoJbGltaXRlZCB0eXBlcyB0aGF0IGFyZSBub3QgaW5oZXJlbnRseSBsaW1pdGVkLiBTdWNoIGFuIGFsbG9jYXRvciBpcwoJaWxsZWdhbCwgYnV0IGlzIGdlbmVyYXRlZCBieSB0aGUgZXhwYW5kZXIgZm9yIGEgcmV0dXJuIHN0YXRlbWVudCwgdG8KCWNvcHkgdGhlIHJlc3VsdCBvbnRvIHRoZSBzZWNvbmRhcnkgc3RhY2suIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSB3aGVyZSBhCglsaW1pdGVkIG9iamVjdCBjYW4gYmUgY29waWVkLiBHZW5lcmF0ZSBjb2RlIHRvIGRpc3BsYWNlIHRoZSBwb2ludGVyCgl0byB0aGUgb2JqZWN0IGlmIHRoZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiBpcyBhIGNsYXNzLXdpZGUgaW50ZXJmYWNlCglvYmplY3QuIFN1Y2ggZGlzcGxhY2VtZW50IHdhcyBtaXNzaW5nIGFuZCBoZW5jZSB0aGUgY29weSBvZiB0aGUgb2JqZWN0Cgl3YXMgd3JvbmcuCgkoQXBwbHlfQWNjZXNzaWJpbGl0eV9DaGVjayk6IEhhbmRsZSBhbGxvY2F0ZWQgb2JqZWN0cyBpbml0aWFsaXplZCBpbgoJcGxhY2UuCgkoRGlzcGxhY2VfQWxsb2NhdG9yX1BvaW50ZXIpOiBTdWJzaWRpYXJ5IHByb2NlZHVyZSB0byBFeHBhbmRfTl9BbGxvY2F0b3IKCWFuZCBFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24uIEFsbG9jYXRpbmcgY2xhc3Mtd2lkZSBpbnRlcmZhY2Ugb2JqZWN0cwoJdGhpcyByb3V0aW5lIGRpc3BsYWNlcyB0aGUgcG9pbnRlciB0byB0aGUgYWxsb2NhdGVkIG9iamVjdCB0byByZWZlcmVuY2UKCXRoZSBjb21wb25lbnQgcmVmZXJlbmNpbmcgdGhlIGNvcnJlc3BvbmRpbmcgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlLgoJRXhwYW5kX0FsbG9jYXRvcl9FeHByZXNzaW9uKTogQWRkIG1pc3Npbmcgc3VwcG9ydCB0byBhbGxvY2F0ZSBjbGFzcy13aWRlCglpbnRlcmZhY2Ugb2JqZWN0cyBpbml0aWFsaXplZCB3aXRoIGEgcXVhbGlmaWVkIGV4cHJlc3Npb24uCgkoR2V0X0FsbG9jYXRvcl9GaW5hbF9MaXN0KTogVGVzdCBmb3IgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlIHRoYXQgaXMgYQoJZnVuY3Rpb24gcmVzdWx0IHR5cGUsIGFuZCB1c2UgdGhlIGZpbmFsaXphdGlvbiBsaXN0IGFzc29jaWF0ZWQgd2l0aCB0aGUKCWZ1bmN0aW9uIHNjb3BlIGluIHRoYXQgY2FzZSAoc3VjaCBhbiBhbm9ueW1vdXMgdHlwZSBzaG91bGQgbm90IGJlCgl0cmVhdGVkIGxpa2UgYW4gYWNjZXNzIHBhcmFtZXRlcidzIHR5cGUpLgoKMjAwNy0wNi0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX05fQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBGb3IgdGhlIGFzc2lnbm1lbnQgb2YgYQoJY29udHJvbGxlZCB0eXBlLCB1c2UgTWFrZV9IYW5kbGVyX0Zvcl9DdHJsX09wZXJhdGlvbiB0byBjb25zdHJ1Y3QgdGhlCglyZXF1aXJlZCBleGNlcHRpb24gaGFuZGxlci4KCShFeHBhbmRfU2ltcGxlX0Z1bmN0aW9uX1JldHVybiwgRXhwYW5kX05fUmV0dXJuX1N0YXRlbWVudCk6IEhhbmRsZQoJcHJvcGVybHkgdGhlIGNhc2Ugb2YgYSBmdW5jdGlvbiB3aG9zZSByZXR1cm4gdHlwZSBpcyBhIGxpbWl0ZWQKCWNsYXNzLXdpZGUgaW50ZXJmYWNlIHR5cGUuIE1vZGlmeSB0aGUgY29kZSBvZiB0aGUgYWNjZXNzaWJpbGl0eQoJY2hlY2sgdG8gaGFuZGxlIGNsYXNzLXdpZGUgaW50ZXJmYWNlIG9iamVjdHMuIEluIHRoaXMgY2FzZSB3ZSBuZWVkIHRvCglkaXNwbGFjZSAidGhpcyIgdG8gcmVmZXJlbmNlIHRoZSBwcmltYXJ5IGRpc3BhdGNoIHRhYmxlIHRvIGdldCBhY2Nlc3MKCXRvIHRoZSBUU0Qgb2YgdGhlIG9iamVjdCAodG8gZXZhbHVhdGUgaXRzIGFjY2Vzc2liaWxpdHkgbGV2ZWwpLgoJKEV4cGFuZF9OX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQpOiBUZXN0IGZvciBhIHRhZ2dlZCByZXN1bHQgdHlwZQoJcmF0aGVyIHRoYW4gYSBjb250cm9sbGluZyByZXN1bHQgYXMgb25lIG9mIHRoZSBjb25kaXRpb25zIGZvcgoJZ2VuZXJhdGluZyB0ZXN0cyBvZiB0aGUgaW1wbGljaXQgQklQX0FsbG9jX0Zvcm0gZm9ybWFsLiBUaGUKCWluaXRpYWxpemF0aW9uIGFzc2lnbm1lbnQgaXMgYWxzbyBoYW5kbGVkIGFjY29yZGluZyB0byB3aGV0aGVyIHRoZQoJcmVzdWx0IGlzIHRhZ2dlZCBpbnN0ZWFkIG9mIGNvbnRyb2xsaW5nLgoJSW4gdGhlIGNhc2Ugd2hlcmUgdGhlIGluaXQgYXNzaWdubWVudCBpcyBpbnNlcnRlZCBpbiB0aGUgInRoZW4iIHBhcnQgb2YKCXRoZSBhbGxvY2F0aW9uIGNvbmRpdGlvbmFsLCByZXdyaXRlIHRoZSB0YXJnZXQgdG8gYmUgYSBkZXJlZmVyZW5jZSBvZgoJdGhlIGltcGxpY2l0IEJJUF9PYmplY3RfQWNjZXNzIGZvcm1hbC4KCUlmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyB1bmNvbnN0cmFpbmVkIGFuZCBjcmVhdGVkIG9uIHRoZSBzZWNvbmRhcnkKCXN0YWNrLCBtYXJrIHRoZSBlbmNsb3NpbmcgYmxvY2sgYW5kIGZ1bmN0aW9uIHNvIHRoYXQgdGhlIHNlY29uZGFyeQoJc3RhY2sgaXMgbm90IHJlY2xhaW1lZCBvbiByZXR1cm4uCglUcmVhdCByZXR1cm5zIGZyb20gZnVuY3Rpb25zIHdpdGggY29udHJvbGxpbmcgcmVzdWx0cyBzaW1pbGFybHkgdG8KCXJldHVybnMgZnJvbSBmdW5jdGlvbnMgd2l0aCB1bmNvbnN0cmFpbmVkIHJlc3VsdCBzdWJ0eXBlcy4KCUlmIHRoZSBvYmplY3QgcmV0dXJuZWQgaXMgdW5jb25zdHJhaW5lZCwgYW5kIGFuIGFsbG9jYXRvciBtdXN0IGJlCgljcmVhdGVkIGZvciBpdCwgYW5hbHl6ZSB0aGUgYWxsb2NhdG9yIG9uY2UgdGhlIGJsb2NrIGZvciB0aGUgZXh0ZW5kZWQKCXJldHVybiBpcyBpbnN0YWxsZWQsIHRvIGVuc3VyZSB0aGF0IGZpbmFsaXphYmxlIGNvbXBvbmVudHMKCW9mIHRoZSBleHByZXNzaW9uIHVzZSB0aGUgcHJvcGVyIGZpbmFsaXphdGlvbiBsaXN0LiBHdWFyZCB0aGUgY2FsbCB0bwoJTW92ZV9GaW5hbF9MaXN0IHdpdGggYSBjaGVjayB0aGF0IHRoZXJlIGlzIHNvbWV0aGluZyB0byBmaW5hbGl6ZS4KCShNYWtlX1RhZ19DdHJsX0Fzc2lnbm1lbnQpOiBVc2UgIm9sZCIgaGFuZGxpbmcKCW9mIGNvbnRyb2xsZWQgdHlwZSBhc3NpZ25tZW50IGZvciB2aXJ0dWFsIG1hY2hpbmVzLCBzaW5jZSBuZXcgY29kZSB1c2VzCgl1bnN1cHBvcnRlZCBmZWF0dXJlcyAoc3VjaCBhcyBkaXJlY3QgYWNjZXNzIHRvIGJ5dGVzIGluIG1lbW9yeSkuCgoyMDA3LTA2LTA2ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNi5hZHMsIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IFdoZW4gYWRkaW5nIGFuIGV4dHJhCglhY2Nlc3NpYmlsaXR5IGFjdHVhbCwgY2hlY2sgZm9yIHRoZSBjYXNlIG9mIGFuIGFsaWFzZWQgb2JqZWN0IHRoYXQgaGFzCgliZWVuIHJld3JpdHRlbiBhcyBhbiBBY2Nlc3MgYXR0cmlidXRlLCBhbmQgYXNzaWduIFByZXYgdG8gUHJldl9PcmlnIHNvCgl3ZSBmYWxsIGludG8gcHJvY2Vzc2luZyBmb3IgdGhlIGF0dHJpYnV0ZSByYXRoZXIgdGhhbiB0aGUgbmFtZSBvZiB0aGUKCW9iamVjdC4KCShFeHBhbmRfSW5saW5lX0NhbGwpOiBJZiBhbiBhY3R1YWwgaXMgYSBsaXRlcmFsLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKCWZvcm1hbCBoYXMgaXRzIGFkZHJlc3MgdGFrZW4gaW4gdGhlIGJvZHksIGNyZWF0ZSBhIHRlbXBvcmFyeSB0byBjYXB0dXJlCgl2YWx1ZS4gIElmIHRoZSByZXR1cm4gdHlwZSBpcyBhIGxpbWl0ZWQgaW50ZXJmYWNlLCBkbyBub3QgdHJlYXQgdGhlCglyZXR1cm4gdmFsdWUgYXMgQ29udHJvbGxlZC4KCShJc19Jbl9QbGFjZV9GdW5jdGlvbik6ICBJZiB0aGUgcmV0dXJuIHR5cGUgaXMgYSBsaW1pdGVkIGludGVyZmFjZSwKCXRyZWF0IGFzIHJldHVybmluZyBpbiBwbGFjZS4gVGhlIGFjdHVhbCByZXR1cm5lZCBvYmplY3QgbWF5IG5vdCBhbHdheXMKCWJlIGxpbWl0ZWQsIGJ1dCB0aGUgY2FsbGVyIGhhcyB0byBhc3N1bWUgdGhhdCBpdCBpcyByZXR1cm5lZCBpbiBwbGFjZS4KCShBZGRfRmluYWxfTGlzdF9BY3R1YWxfVG9fQnVpbGRfSW5fUGxhY2VfQ2FsbCk6IElmIHRoZSBjYWxsIGlzIHRoZQoJY29udGV4dCBvZiBhbiBhbGxvY2F0b3IsIHVzZSB0aGUgY29ycmVjdCBmaW5hbGl6YXRpb24gY2hhaW4gKHRoYXQgaXMsCgl0aGUgY2hhaW4gYmVsb25naW5nIHRvIHRoZSBhY2Nlc3MgdHlwZSwgcmF0aGVyIHRoYW4gdGhlIGNoYWluIGJlbG9uZ2luZwoJdG8gdGhlIGN1cnJlbnQgc2NvcGUpLgoJKEFkZF9BbGxvY19Gb3JtX0FjdHVhbF9Ub19CdWlsZF9Jbl9QbGFjZV9DYWxsKTogVGVzdCBmb3IgYSB0YWdnZWQKCXJlc3VsdCB0eXBlIHJhdGhlciB0aGFuIGEgY29udHJvbGxpbmcgcmVzdWx0IGFzIGEgcHJlY29uZGl0aW9uIGZvcgoJYWRkaW5nIGFuIGFsbG9jYXRpb24gZm9ybSBhY3R1YWwgdG8gYSBidWlsZC1pbi1wbGFjZSBjYWxsLgoJKEFkZF9GaW5hbF9MaXN0X0FjdHVhbF9Ub19CdWlsZF9Jbl9QbGFjZV9DYWxsKTogRGl0dG8uCgkoRnJlZXplX1N1YnByb2dyYW0pOiBDb2RlIGNsZWFudXAuIFJlbW92ZSBhbGwgdGhlIGNvZGUgdGhhdCByZWdpc3RlciB0aGUKCXByaW1pdGl2ZSBpbiB0aGUgZGlzcGF0Y2ggdGFibGVzLiBUaGlzIHdvcmsgaXMgbm93IGRvbmUgYnkgTWFrZV9EVCB3aGVuCgl0aGUgdHlwZSBpcyBmcm96ZW4uCgkoUmVnaXN0ZXJfUHJlZGVmaW5lZF9EVF9FbnRyeSk6IFJlbW92ZWQuCgkoQWRkX1JldHVybik6IElmIGVuZCBsYWJlbCBpcyBub3QgcHJlc2VudCwgdXNlIHNsb2Mgb2YgbGFzdCBzdGF0ZW1lbnQKCWZvciBnZW5lcmF0ZWQgcmV0dXJuIHN0YXRlbWVudCBpbiBwcm9jZWR1cmUsIGZvciBiZXR0ZXIgZ2RiIGJlaGF2aW9yCglvbiBleHBhbmRlZCBjb2RlLgoJKEFkZF9BY2Nlc3NfQWN0dWFsX1RvX0J1aWxkX0luX1BsYWNlX0NhbGwpOiBTZXQgcGFyZW50IGZpZWxkcyBvZiB0aGUKCW9iamVjdCBhZGRyZXNzIG5vZGVzIHRvIGVuc3VyZSBwcm9wZXIgcHJvY2Vzc2luZyBieSByb3V0aW5lcyBsaWtlCglJbnNlcnRfQWZ0ZXIqLgoJKEV4cGFuZF9DYWxsKTogRml4IGdlbmVyYXRpb24gb2YgdmFsaWRpdHkgY2hlY2sgZm9yIHBhcmFtZXRlcgoJKEFkZF9BbGxvY19Gb3JtX0FjdHVhbF9Ub19CdWlsZF9Jbl9QbGFjZV9DYWxsKTogUmV0dXJuIHdpdGhvdXQgcGFzc2luZwoJdGhlIGFsbG9jYXRpb24gZm9ybSBwYXJhbWV0ZXIgaWYgdGhlIHJlc3VsdCBzdWJ0eXBlIGlzIGNvbnN0cmFpbmVkLAoJZXhjZXB0IHdoZW4gdGhlIGZ1bmN0aW9uIGhhcyBhIGNvbnRyb2xsaW5nIHJlc3VsdC4KCShBZGRfRmluYWxfTGlzdF9BY3R1YWxfVG9fQnVpbGRfSW5fUGxhY2VfQ2FsbCk6IFRlc3QgQ29udHJvbGxlZF9UeXBlCglyYXRoZXIgdGhhbiBJc19Db250cm9sbGVkIGFuZCBIYXNfQ29udHJvbGxlZF9Db21wb25lbnQsIHNpbmNlIHdlIHdhbnQgdG8KCWluY2x1ZGUgY2xhc3Mtd2lkZSByZXN1bHQgdHlwZXMgaW4gdGhpcyB0cmVhdG1lbnQuIEFsc28gdGVzdCBmb3IgYQoJY29udHJvbGxpbmcgcmVzdWx0LCBzaW5jZSB0aGF0IGFsc28gcmVxdWlyZXMgcGFzc2luZyBhIGZpbmFsaXphdGlvbgoJbGlzdC4KCShNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fQWxsb2NhdG9yKTogQ2FsbCBBZGRfQWxsb2NfRm9ybV9BY3R1YWxfKgoJZXZlbiB3aGVuIHRoZSByZXN1bHQgc3VidHlwZSBpcyBjb25zdHJhaW5lZCwgdG8gaGFuZGxlIGNhbGxzIGludm9sdmluZwoJY29udHJvbGxpbmcgcmVzdWx0cy4KCShNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fQW5vbnltb3VzX0NvbnRleHQpOiBBZGRfQWxsb2NfRm9ybV9BY3R1YWxfKgoJaXMgbm93IGNhbGxlZCBldmVuIHdoZW4gdGhlIHJlc3VsdCBzdWJ0eXBlIGlzIGNvbnN0cmFpbmVkLCB0byBoYW5kbGUKCWNhbGxzIGludm9sdmluZyBjb250cm9sbGluZyByZXN1bHRzLgoJKE1ha2VfQnVpbGRfSW5fUGxhY2VfQ2FsbF9Jbl9Bc3NpZ25tZW50KTogUmVtb3ZlIHRlc3QgZm9yIElzX0NvbnN0cmFpbmVkCglvbiBjYWxsIHRvIEFkZF9BbGxvY19Gb3JtX0FjdHVhbF9Ub19CdWlsZF9Jbl9QbGFjZV9DYWxsICh0aGF0IHByb2NlZHVyZQoJbm93IHBlcmZvcm1zIHRoZSB0ZXN0KS4KCShNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fT2JqZWN0X0RlY2xhcmF0aW9uKToKCUFkZF9BbGxvY19Gb3JtX0FjdHVhbF8qIGlzIG5vdyBjYWxsZWQgZXZlbiB3aGVuIHRoZSByZXN1bHQgc3VidHlwZSBpcwoJY29uc3RyYWluZWQsIHRvIGhhbmRsZSBjYWxscyBpbnZvbHZpbmcgY29udHJvbGxpbmcgcmVzdWx0cy4KCShBZGRfUmV0dXJuKTogQWNjb21vZGF0ZSByZXdyaXR0ZW4gcGF0dGVybiBmcm9tIGxvY2FsIHJhaXNlIHRvIGdvdG8KCXRyYW5zZm9ybWF0aW9uLCBzbyB0aGF0IHdlIHN0aWxsIHJlY29nbml6ZSBhbiB0cmFuc2ZlciBzdGF0ZW1lbnQKCWFuZCBkbyB0aGUgcmlnaHQgdGhpbmcgaGVyZSBpbiB0aGF0IGNhc2UuCgkoRXhwYW5kX05fU3VicHJvZ3JhbV9Cb2R5KTogQWRkIGR1bW15IFB1c2gvUG9wX3h4eF9MYWJlbCBub2RlcyBhdCBzdGFydAoJYW5kIGVuZCBvZiBzdWJwcm9ncmFtIGNvZGUuCgkoUmVnaXN0ZXJfSW50ZXJmYWNlX0RUX0VudHJ5LCBSZWdpc3Rlcl9QcmVkZWZpbmVkX0RUX0VudHJ5KTogQWRkIG1pc3NpbmcKCXN1cHBvcnQgZm9yIHByaW1pdGl2ZXMgdGhhdCBhcmUgZnVuY3Rpb25zICh3aXRob3V0IGZvcm1hbHMpIHdpdGggYQoJY29udHJvbGxpbmcgcmVzdWx0LgoJKEluaGVyaXRlZF9Gcm9tX0Zvcm1hbCk6IElmIHRoZSBhY3R1YWwgc3VidHlwZSBoYXMgbm90IGdlbmVyaWMgcGFyZW50Cgl0eXBlLCBpdCBpcyBub3QgYW4gYWN0dWFsIGZvciBhIGZvcm1hbCBkZXJpdmVkIHR5cGUsIGFuZCB0aGVyZSBpcyBubwoJb3BlcmF0aW9uIHRvIGluaGVyaXQgZnJvbSB0aGUgZm9ybWFsLgoKMjAwNy0wNi0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfY2g3LmFkcywgZXhwX2NoNy5hZGIgKEV4cGFuZF9DbGVhbnVwX0FjdGlvbnMpOiBTZXQgU2xvYyBvZgoJaW5zZXJ0ZWQgY2xlYW51cCBjb2RlIGFwcHJvcHJpYXRlbHkgZm9yIEdEQiB1c2UuCgkoTWFrZV9EZWVwX1Byb2MpOiBVc2UgTWFrZV9IYW5kbGVyX0Zvcl9DdHJsX09wZXJhdGlvbiB0byBjcmVhdGUKCWV4Y2VwdGlvbiBoYW5kbGVyIGZvciBEZWVwX0FkanVzdCBvciBEZWVwX0ZpbmFsaXplLgoJKE1ha2VfSGFuZGxlcl9Gb3JfQ3RybF9PcGVyYXRpb24pOiBOZXcgc3VicHJvZ3JhbS4gV2hlbiBydW50aW1lIGVudGl0eQoJUmFpc2VfRnJvbV9Db250cm9sbGVkX09wZXJhdGlvbiBpcyBhdmFpbGFibGUsIHVzZSBhIGNhbGwgdG8gdGhhdAoJc3VicHJvZ3JhbSBpbnN0ZWFkIG9mIGEgcGxhaW4gInJhaXNlIFByb2dyYW1fRXJyb3IiIG5vZGUgdG8gcmFpc2UKCVByb2dyYW1fRXJyb3IgaWYgYW4gZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgZnJvbSBhbiBBZGp1c3Qgb3IgRmluYWxpemUKCW9wZXJhdGlvbi4KCShJbnNlcnRfQWN0aW9uc19Jbl9TY29wZV9Bcm91bmQpOiBJZiB0aGUgc3RhdGVtZW50IHRvIGJlIHdyYXBwZWQKCWFwcGVhcnMgaW4gdGhlIG9wdGlvbmFsIHN0YXRlbWVudCBsaXN0IG9mIGEgdHJpZ2dlcmluZyBhbHRlcm5hdGl2ZSwgdGhlCglzY29wZSBhY3Rpb25zIGNhbiBiZSBpbnNlcnRlZCBkaXJlY3RseSB0aGVyZSwgYW5kIG5vdCBpbiB0aGUgbGlzdCB0aGF0CglpbmNsdWRlcyB0aGUgYXN5bmNocm9ub3VzIHNlbGVjdCBpdHNlbGYuCgoyMDA3LTA2LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDkuYWRzLCBleHBfY2g5LmFkYiAoQnVpbGRfUHJvdGVjdGVkX0VudHJ5KTogU2V0IHNsb2Mgb2YKCWdlbmVyYXRlZCBleGNlcHRpb24gaGFuZGxlciBhcHByb3ByaWF0ZWx5IHdoZW4gZGVidWdnaW5nIGdlbmVyYXRlZCBjb2RlLgoJRGVhbCBwcm9wZXJseSB3aXRoIE5vX0V4Y2VwdGlvbl9Qcm9wYWdhdGlvbiByZXN0cmljdGlvbiBtb2RlLgoJKEV4cGFuZF9OX0Fib3J0X1N0YXRlbWVudCk6IEFkZCBhbiB1bmNoZWNrZWQgdHlwZSBjb252ZXJzaW9uIGZyb20KCVN5c3RlbS5BZGRyZXNzIHRvIFN5c3RlbS5UYXNraW5nLlRhc2tfSWQgd2hlbiBwcm9jZXNzaW5nIHRoZSByZXN1bHQgb2YKCXRoZSBwcmVkZWZpbmVkIHByaW1pdGl2ZSBfZGlzcF9nZXRfdGFza19pZC4KCShFeHBhbmRfTl9Bc3luY2hyb25vdXNfU2VsZWN0KTogQ2xhcmlmeSBjb21tZW50LgoJKEV4cGFuZF9OX1Byb3RlY3RlZF9UeXBlX0RlY2xhcmF0aW9uKTogTWlub3IgY29kZSBjbGVhbnVwLgoJKEZpbmRfUGFyYW1ldGVyX1R5cGUpOiBOZXcgcm91dGluZSBpbnNpZGUgVHlwZV9Db25mb3JtYW50X1BhcmFtZXRlcnMuCgkoVHlwZV9Db25mb3JtYW50X1BhcmFtZXRlcnMpOiBOZXcgcGFyYW1ldGVyIFByaW1fT3BfVHlwLiBDb2RlIGNsZWFudXAuCgkoQWRkX1ByaXZhdGVfRGVjbGFyYXRpb25zLCBCdWlsZF9Qcm90ZWN0ZWRfQm9keSk6IFVzZSBwcm9wZXIgc2xvY3MgZm9yCglwcml2YWxzIGFuZCBmb3IgZ2VuZXJhdGVkIGNhbGwgdG8gQ29tcGxldGVfRW50cnlfQm9keSwgZm9yIGJldHRlciBnZGIKCWJlaGF2aW9yLgoJKENvcHlfUmVzdWx0X1R5cGUpOiBVdGlsaXR5IHRvIGNvbnN0cnVjdCBhIHBhcmFtZXRlciBhbmQgcmVzdWx0IHByb2ZpbGUKCWZvciBwcm90ZWN0ZWQgZnVuY3Rpb25zIHdob3NlIHJldHVybiB0eXBlIGlzIGFuIGFub255bW91cyBhY2Nlc3MgdG8KCXN1YnByb2dyYW0uCgkoQnVpbGRfUHJvdGVjdGVkX1N1Yl9TcGVjIGFuZCBFeHBhbmRfQWNjZXNzX1Byb3RlY3RlZF9TdWJwcm9ncmFtX1R5cGUpOgoJY2FsbCB0aGUgYWJvdmUuCgkoQnVpbGRfVGFza19BY3RpdmF0aW9uX0NhbGwpOiBJbnNlcnQgQWN0aXZhdGVfVGFza3MgY2FsbCBhdCBwcm9wZXIKCXBvaW50IHdoZW4gdGhlIGxvY2FsLXJhaXNlLXRvLWdvdG8gdHJhbnNmb3JtYXRpb24gaGFzIHRha2VuIHBsYWNlLgoKMjAwNy0wNi0wNiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIE5pY29sYXMgU2V0dG9uICA8c2V0dG9uQGFkYWNvcmUuY29tPgoKCSogZXhwX2RidWcuYWRiIChHZXRfRW5jb2RlZF9OYW1lKTogTW9kaWZpZWQgdG8gY29udGludWUgcHJvdmlkaW5nIGl0cwoJZnVuY3Rpb25hbGl0eSB3aGVuIHRoZSBiYWNrZW5kIGlzIGdlbmVyYXRpbmcgY29kZS4KCU90aGVyd2lzZSBhbnkgc2VyaW91cyBlcnJvcgoJcmVwb3J0ZWQgYnkgdGhlIGJhY2tlbmQgY2FsbGluZyB0aGUgZnJvbnRlbmQgcm91dGluZSBFcnJvcl9Nc2cKCWNoYW5nZXMgdGhlIENvbXBpbGF0aW9uX01vZGUgdG8gQ2hlY2tfU2VtYW50aWNzLCBkaXNhYmxlcyB0aGUKCWZ1bmN0aW9uYWxpdHkgb2YgdGhpcyByb3V0aW5lIGFuZCBjYXVzZXMgdGhlIGdlbmVyYXRpb24gb2YKCXNwdXJlb3VzIGFkZGl0aW9uYWwgZXJyb3JzLgoKCSogZXhwX2RidWcuYWRzIChQb2ludGVycyB0byBVbmNvbnN0cmFpbmVkIEFycmF5cyk6IERvY3VtZW50IHRoZQoJZGVidWdnaW5nIGluZm9ybWF0aW9uIG5vdyBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGZvciBmYXQtcG9pbnRlcgoJdHlwZXMuCglEb2N1bWVudCB0aGUgY29udGVudHMgb2YgRFdfQVRfcHJvZHVjZXIgaW4gdGhlIEdOQVQgVmVuZG9yIGV4dGVuc2lvbnMgdG8KCURXQVJGMi8zLgoJRG9jdW1lbnQgR05BVCBWZW5kb3IgZXh0ZW5zaW9ucyB0byBEV0FSRiAyLzMgYW5kIHRoZSAiLWdkd2FyZisiIHN3aXRjaC4KCjIwMDctMDYtMDYgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZHMsIGV4cF9kaXN0LmFkYiAoTWFrZV9UcmFuc3BvcnRhYmxlX0NoZWNrKTogTmV3IHN1YnByb2dyYW0KCShHQVJMSUNfU3VwcG9ydC5CdWlsZF9TdWJwcm9ncmFtX1JlY2VpdmluZ19TdHVicywKCVBvbHlPUkJfU3VwcG9ydC5CdWlsZF9TdWJwcm9ncmFtX1JlY2VpdmluZ19TdHVicyk6CglGb3IgYSByZW1vdGUgY2FsbCB0byBhIGZ1bmN0aW9uIHdpdGggYSBjbGFzc3dpZGUgcmV0dXJuIHR5cGUsIGFwcGx5IGFuCglFLjQoMTgpIGNoZWNrIHRvIHRoZSByZXR1cm5lZCB2YWx1ZS4KCShBZGRfUkFDV19QcmltaXRpdmVfRGVjbGFyYXRpb25zX0FuZF9Cb2RpZXMpOiBEbyBub3QgZ2VuZXJhdGUgc3R1YnMgZm9yCglzdHJlYW0gYXR0cmlidXRlcyBvZiB0aGUgZGVzaWduYXRlZCB0eXBlIG9mIGFuIFJBQ1csIGFzIHRoZXkgYXJlIG5vdAoJZGlzcGF0Y2hpbmcgcHJpbWl0aXZlIG9wZXJhdGlvbnMuCgoyMDA3LTA2LTA2ICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoKCSogZXhwX2ZpeGQuYWRiIChJbnRlZ2VyX0xpdGVyYWwpOiBBZGQgb3B0aW9uYWwgYXJndW1lbnQgdG8gY29uc3RydWN0IGEKCW5lZ2F0aXZlIGxpdGVyYWwKCShEb19EaXZpZGVfRml4ZWRfRml4ZWQpOiBBZGQgY29tbWVudHMgdG8gaW5kaWNhdGUgRnJhYyBpcyBhbHdheXMKCXBvc2l0aXZlCgkoRG9fRGl2aWRlX0ZpeGVkX1VuaXZlcnNhbCk6IEhhbmRsZSBjYXNlIG9mIG5lZ2F0aXZlIEZyYWMuCgkoRG9fTXVsdGlwbHlfRml4ZWRfRml4ZWQpOiBBZGQgY29tZW50cyB0byBpbmRpY2F0ZSBGcmFjIGlzIGFsd2F5cwoJcG9zaXRpdmUKCShEb19NdWx0aXBseV9GaXhlZF9Vbml2ZXJzYWwpOiBIYW5kbGUgY2FzZSBvZiBuZWdhdGl2ZSBGcmFjLgoKMjAwNy0wNi0wNiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2ltZ3YuYWRiIChFeHBhbmRfVmFsdWVfQXR0cmlidXRlKTogRGlzYWJsZSBjb21waWxhdGlvbiBvZiB0aGlzCglhdHRyaWJ1dGUgY29tcGlsaW5nIHBhY2thZ2UgQWRhLlRhZ3MgdW5kZXIgTm9fUnVuX1RpbWVfTW9kZS4KCjIwMDctMDYtMDYgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbnRyLmFkYiAoRXhwYW5kX1VuY19EZWFsbG9jYXRpb24pOiBBZGQgbWlzc2luZyBzdXBwb3J0IGZvcgoJZGVhbGxvY2F0aW9uIG9mIGNsYXNzLXdpZGUgaW50ZXJmYWNlIG9iamVjdHMuCgkoRXhwYW5kX0Rpc3BhdGNoaW5nX0NvbnN0cnVjdG9yX0NhbGwpOiBUYWtlIGludG8gYWNjb3VudCB0aGF0IGlmIHRoZQoJcmVzdWx0IG9mIHRoZSBkaXNwYXRjaGluZyBjb25zdHJ1Y3RvciBpcyBhbiBpbnRlcmZhY2UgdHlwZSwgdGhlCglmdW5jdGlvbiByZXR1cm5zIGEgY2xhc3Mtd2lkZSBpbnRlcmZhY2UgdHlwZTsgb3RoZXJ3aXNlIHRoZSByZXR1cm5lZAoJb2JqZWN0IHdvdWxkIGJlIGFjdHVhbC4gVGhlIGZyb250ZW5kIHByZXZpb3VzbHkgYWNjZXB0ZWQgcmV0dXJuaW5nCglpbnRlcmZhY2UgdHlwZXMgYmVjYXVzZSBFeHBhbmRfSW50ZXJmYWNlX0FjdHVhbHMgc2lsZW50bHkgcGVyZm9ybWVkCgl0aGUgbWFuYWdlbWVudCBvZiB0aGUgcmV0dXJuZWQgdHlwZSAiYXMgaWYiIGl0IHdlcmUgYSBjbGFzcy13aWRlCglpbnRlcmZhY2UgdHlwZS4KCShFeHBhbmRfRGlzcGF0Y2hpbmdfQ29uc3RydWN0b3JfQ2FsbCk6IFJlcGxhY2UgY2FsbCB0bwoJTWFrZV9EVF9BY2Nlc3NfQWN0aW9uIGJ5IGRpcmVjdCBjYWxsIHRvIE1ha2VfRnVuY3Rpb25fQ2FsbC4KCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9wYWtkLmFkYiAoRXhwYW5kX1BhY2tlZF9Ob3QpOiBVc2UgUk1fU2l6ZSByYXRoZXIgdGhhbiBFU2l6ZSB0bwoJY29tcHV0ZSBtYXNraW5nIGNvbnN0YW50LCBzaW5jZSB3ZSBub3cgc2V0IEVzaXplIHByb3Blcmx5IHRvIHRoZQoJdW5kZXJseWluZyBzaXplLgoJKENyZWF0ZV9QYWNrZWRfQXJyYXlfVHlwZSk6IFNldCBwcm9wZXIgRXNpemUgdmFsdWUgYWRqdXN0ZWQgYXMgcmVxdWlyZWQKCXRvIG1hdGNoIHRoZSBhbGlnbm1lbnQuCgkoQ3JlYXRlX1BhY2tlZF9BcnJheV9UeXBlKTogVXNlIFNob3J0X1Nob3J0X1Vuc2lnbmVkIGFzIGJhc2UgdHlwZSBmb3IKCXBhY2tlZCBhcnJheXMgb2YgOCBiaXRzIG9yIGxlc3MuCgoJKiBmcmVlemUuYWRiIChGcmVlemVfRW50aXR5KTogV2hlbiBmcmVlemluZyB0aGUgZm9ybWFscyBvZiBhCglzdWJwcm9ncmFtLCBmcmVlemUgdGhlIGRlc2lnbmF0ZWQgdHlwZSBvZiBhIHBhcmFtZXRlciBvZiBhbiBhY2Nlc3MgdHlwZQoJb25seSBpZiBpdCBpcyBhbiBhY2Nlc3MgcGFyYW1ldGVyLgoJSW5jcmVhc2Ugc2l6ZSBvZiBDIGNvbnZlbnRpb24gZW51bWVyYXRpb24gb2JqZWN0CgkoRnJlZXplX0VudGl0eSwgYXJyYXkgdHlwZSBjYXNlKTogTWFrZSBzdXJlIEVzaXplIHZhbHVlIGlzIHByb3Blcmx5CglhZGp1c3RlZCBmb3IgdGhlIGFsaWdubWVudCBpZiBpdCBpcyBrbm93bi4KCShGcmVlemVfRW50aXR5LCBhcnJheSB0eXBlIGNhc2UpOiBXaGVuIGNoZWNraW5nIGJpdCBwYWNrZWQgYXJyYXlzIGZvcgoJdGhlIHNpemUgYmVpbmcgaW5jb3JyZWN0LCBjaGVjayBSTV9TaXplLCBub3QgRXNpemUuCgkoRnJlZXplX1JlY29yZF9UeXBlKTogQ2hlY2sgZm9yIGJhZCBkaXNjcmltaW5hdGVkIHJlY29yZCBjb252ZW50aW9uCgkoSW5fRXhwX0JvZHkpOiBSZXR1cm4gdHJ1ZSBpZiB0aGUgYm9keSBpcyBnZW5lcmF0ZWQgZm9yIGEgc3VicHJvZ3JhbQoJcmVuYW1pbmcsIGVpdGhlciBhbiBhdHRyaWJ1dGUgcmVuYW1pbmcgb3IgYSByZW5hbWluZyBhcyBib2R5LgoJKENoZWNrX0l0eXBlKTogSWYgdGhlIGRlc2lnbmF0ZWQgdHlwZSBvZiBhbiBhbm9ueW1vdXMgYWNjZXNzIGNvbXBvbmVudAoJaXMgYSBub24tcHJvdGVjdGVkIHN1YnByb2dyYW0gdHlwZSwgaW5kaWNhdGUgdGhhdCBpdCBpcyBmcm96ZW4sIHRvCglwcmV2ZW50IG91dC1vZi1zY29wZSBmcmVlemUgbm9kZSBhdCBzb21lIHN1YnNlcXVlbnQgY2FsbC4KCShGcmVlemVfU3VicHJvZ3JhbSk6IE9uIE9wZW5WTVMsIHJlamVjdCBkZXNjcmlwdG9yIHBhc3NpbmcgbWVjaGFuaXNtCglvbmx5IGlmIHRoZSBzdWJwcm9ncmFtIGlzIG5laXRoZXIgaW1wb3J0ZWQgbm9yIGV4cG9ydGVkLCBhcyB3ZWxsIGFzIHRoZQoJTkNBIGRlc2NyaXB0b3IgY2xhc3MgaWYgdGhlIHN1YnByb2dyYW0gaXMgZXhwb3J0ZWQuCgoyMDA3LTA2LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9wcmFnLmFkYiAoRXhwYW5kX1ByYWdtYV9JbXBvcnRfT3JfSW50ZXJmYWNlKTogUmVtb3ZlIHByb3Blcmx5IGEKCWRlZmF1bHQgaW5pdGlhbGl6YXRpb24gb24gYW4gaW1wb3J0ZWQgb2JqZWN0LCB3aGVuIHRoZXJlIGlzIG5vCglpbml0aWFsaXphdGlvbiBjYWxsIGdlbmVyYXRlZCBmb3IgaXQuCgkoRXhwYW5kX1ByYWdtYV9Bc3NlcnQpOiBBZGQgaGFuZGxpbmcgb2YgTm9fRXhjZXB0aW9uX1Byb3BhZ2F0aW9uCglyZXN0cmljdGlvbgoKCSogc25hbWVzLmgsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGIsIHBhci1wcmFnLmFkYjogTmV3IHByYWdtYQoJU3RhdGljX0VsYWJvcmF0aW9uX0Rlc2lyZWQuCglSZW1vdmUgcHJhZ21hIFRocmVhZF9Cb2R5LgoJSW1wbGVtZW50IGEgbmV3IHByYWdtYSBOb19Cb2R5CglSZW1vdmVzIHRoZSBFeHBsaWNpdF9PdmVycmlkaW5nIHByYWdtYQoJUmVtb3ZlIE9wdGlvbmFsX092ZXJyaWRpbmcgcHJhZ21hCgkoUHJhZyk6IERlYWwgd2l0aCBVbml2ZXJzYWxfQWxpYXNpbmcuCgkoTmFtZV9DSUwsIE5hbWVfQ0lMX0NvbnN0cnVjdG9yLCBDb252ZW50aW9uX0NJTCwKCVByYWdtYV9DSUxfQ29uc3RydWN0b3IpOiBOZXcgbmFtZXMuCgoJKiBzZW1fY2F0LmFkYiAoVmFsaWRhdGVfT2JqZWN0X0RlY2xhcmF0aW9uKTogQW4gaW5pdGlhbGl6YXRpb24gdGhhdAoJdXNlcyB0aGUgZXF1aXZhbGVudCBhZ2dyZWdhdGUgb2YgYSB0eXBlIG11c3QgYmUgdHJlYXRlZCBhcyBhbiBpbXBsaWNpdAoJaW5pdGlhbGl6YXRpb24uCgkoR2V0X0NhdGVnb3JpemF0aW9uKTogQ2hlY2sgYSB1bml0IGZvciBwcmFnbWEgUHJlZWxhYm9yYXRlIG9ubHkgaWYgaXQKCWhhcyBub25lIG9mIHRoZSBvdGhlciBjYXRlZ29yaWVzLgoJKFByb2Nlc3NfSW1wb3J0X09yX0ludGVyZmFjZV9QcmFnbWEpOiBSZXBvcnQgYW4gZXJyb3IgZm9yIGFuIGF0dGVtcHQKCXRvIGFwcGx5IEltcG9ydCB0byBhbiBvYmplY3QgcmVuYW1pbmcgZGVjbGFyYXRpb24uCgoJKiBzZW1fcHJhZy5hZGIgKFByb2Nlc3NfSW1wb3J0X09yX0ludGVyZmFjZSk6IFdhcm4gdGhhdCBhIHR5cGUgaW1wb3J0ZWQKCWZyb20gYSBDKysgY2xhc3Mgc2hvdWxkIGJlIGRlY2xhcmVkIGFzIGxpbWl0ZWQgYW5kIHRoYXQgaXQgd2lsbCBiZQoJY29uc2lkZXJlcmQgbGltaXRlZC4KCShBbmFseXplX1ByYWdtYSk6IFdhcm4gdGhhdCBhIHR5cGUgc3BlY2lmaWVkIHdpdGggcHJhZ21hIENQUF9DbGFzcwoJc2hvdWxkIGJlIGRlY2xhcmVkIGFzIGxpbWl0ZWQgYW5kIHRoYXQgaXQgd2lsbCBiZSBjb25zaWRlcmVyZCBsaW1pdGVkLgoJKEFkYV8yMDA1X1ByYWdtYSk6IE5ldyBwcm9jZWR1cmUsIHVzZWQgdG8gZGVhbCB3aXRoIEFkYSAyMDA1IHByYWdtYXMKCShBbmFseXplX1ByYWdtYSwgY2FzZSBFeHBvcnQpOiBEaWFnbm9zZSBleHBvcnQgb2YgZW51bWVyYXRpb24gbGl0ZXJhbAoJKEFuYWx5emVfUHJhZ21hKTogRGVhbCB3aXRoIFVuaXZlcnNhbF9BbGlhc2luZy4KCShTaWdfRmxhZ3MpOiBMaWtld2lzZS4KCShTZXRfRW5jb2RlZF9JbnRlcmZhY2VfTmFtZSk6IFN1cHByZXNzIGVuY29kaW5nIHdoZW4gY29tcGlsaW5nIGZvciBBQU1QLgoJKE92ZXJmbG93X0NoZWNrc19VbnN1cHByZXNzZWQpOiBOZXcgZmxhZy4KCShQcm9jZXNzX1N1cHByZXNzX1Vuc3VwcHJlc3MpOiBTZXQgT3ZlcmZsb3dfQ2hlY2tzX1Vuc3VwcHJlc3NlZC4KCShBbmFseXplX1ByYWdtYSBbY2FzZSBQYWNrXSk6IElnbm9yZSBwcmFnbWEgUGFjayBhbmQgcG9zdCB3YXJuaW5nIGluCgljYXNlIG9mIEpWTSBvciAuTkVUIHRhcmdldHMsIGFuZCBjb21waWxpbmcgdXNlciBjb2RlLgoJQWRkIGRlYnVnZ2luZyBjb252ZW5pZW5jZSByb3V0aW5lIHJ2CgoyMDA3LTA2LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9zdHJtLmFkYiAoTWFrZV9GaWVsZF9BdHRyaWJ1dGVzKTogQXZvaWQgX1BhcmVudCBjb21wb25lbnRzIHRoYXQKCWFyZSBpbnRlcmZhY2UgdHlwZS4KCShCdWlsZF9FbGVtZW50YXJ5X0lucHV0X0NhbGwpOiBGb3IgZmxvYXRpbmctcG9pbnQgdXNlIHJpZ2h0IHR5cGUgaW4gdGhlCglhYnNlbmNlIG9mIHN0cmFuZ2Ugc2l6ZSBvciBzdHJlYW0gc2l6ZSBjbGF1c2VzLgoJKEJ1aWxkX0VsZW1lbnRhcnlfV3JpdGVfQ2FsbCk6IFNhbWUgZml4CgkoSGFzX1N0cmVhbV9TdGFuZGFyZF9SZXApOiBSZXR1cm5zIEZhbHNlIGlmIFN0cmVhbV9TaXplIGF0dHJpYnV0ZQoJc2V0IHRvIHZhbHVlIHRoYXQgZG9lcyBub3QgbWF0Y2ggYmFzZSB0eXBlIHNpemUuCgoyMDA3LTA2LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfdXRpbC5hZHMsIGV4cF91dGlsLmFkYiAoRXhwYW5kX1N1YnR5cGVfRnJvbV9FeHByKTogSW4gQWRhMjAwNSwgYW4KCW9iamVjdCBvZiBhIGxpbWl0ZWQgdHlwZSBjYW4gYmUgaW5pdGlhbGl6ZWQgd2l0aCBhIGNhbGwgdG8gYSBmdW5jdGlvbgoJdGhhdCByZXR1cm5zIGluIHBsYWNlLiBJZiB0aGUgbGltaXRlZCB0eXBlIGhhcyB1bmtub3duIGRpc2NyaW1pbmFudHMsCglhbmQgdGhlIHVuZGVybHlpbmcgdHlwZSBpcyBhIGNvbnN0cmFpbmVkIGNvbXBvc2l0ZSB0eXBlLCBidWlsZCBhbiBhY3R1YWwKCXN1YnR5cGUgZnJvbSB0aGUgZnVuY3Rpb24gY2FsbCwgYXMgaXMgZG9uZSBmb3IgcHJpdmF0ZSB0eXBlcy4KCShTaWRlX0VmZmVjdF9GcmVlKTogQW4gZXhwcmVzc2lvbiB0aGF0IGlzIHRoZSByZW5hbWluZyBvZiBhbiBvYmplY3Qgb3IKCXdob3NlIHByZWZpeCBpcyB0aGUgcmVuYW1pbmcgb2YgYSBvYmplY3QsIGlzIG5vdCBzaWRlLWVmZmVjdCBmcmVlCgliZWNhdXNlIGl0IG1heSBiZSBhc3NpZ25lZCB0aHJvdWdoIHRoZSByZW5hbWluZyBhbmQgaXRzIHZhbHVlIG11c3QgYmUKCWNhcHR1cmVkIGluIGEgdGVtcG9yYXJ5LgoJKEhhc19Db250cm9sbGVkX0NvZXh0ZW5zaW9ucyk6IE5ldyByb3V0aW5lLgoJKEV4cGFuZF9TdWJ0eXBlX0Zyb21fRXhwcik6IERvIG5vdGhpbmcgaWYgdHlwZSBpcyBhIGxpbWl0ZWQgaW50ZXJmYWNlLAoJYXMgaXMgZG9uZSBmb3Igb3RoZXIgbGltaXRlZCB0eXBlcy4KCShOb25fTGltaXRlZF9EZXNpZ25hdGVkX1R5cGUpOiBuZXcgcHJlZGljYXRlLgoJKE1ha2VfQ1dfRXF1aXZhbGVudF9UeXBlKTogTW9kaWZpZWQgdG8gaGFuZGxlIGNsYXNzLXdpZGUgaW50ZXJmYWNlCglvYmplY3RzLgoJUmVtb3ZlIGFsbCBoYW5kbGluZyBvZiB3aXRoX3R5cGUgY2xhdXNlcy4KCiAgICAgICAgKiBwYXItY2gxMC5hZGI6IFJlbW92ZSBhbGwgaGFuZGxpbmcgb2Ygd2l0aF90eXBlIGNsYXVzZXMuCgoJKiBsaWItbG9hZC5hZHMsIGxpYi1sb2FkLmFkYiAoTG9hZF9NYWluX1NvdXJjZSk6IERvIG5vdCBnZXQgdGhlCgljaGVja3N1bSBpZiB0aGUgbWFpbiBzb3VyY2UgY291bGQgbm90IGJlIHBhcnNlZC4KCShMb2F0X1VuaXQpOiBXaGVuIHByb2Nlc3NpbmcgYSBjaGlsZCB1bml0LCBkZXRlcm1pbmUgcHJvcGVybHkgd2hldGhlcgoJdGhlIHBhcmVudCB1bml0IGlzIGEgcmVuYW1pbmcgd2hlbiB0aGUgcGFyZW50IGlzIGl0c2VsZiBhIGNoaWxkIHVuaXQuCglSZW1vdmUgaGFuZGxpbmcgb2Ygd2l0aF90eXBlIGNsYXVzZXMuCgoJKiBzaW5mby5hZHMsIHNpbmZvLmFkYiAoSXNfU3RhdGljX0NvZXh0ZW5zaW9uKTogTmV3IGZ1bmN0aW9uLgoJKFNldF9Jc19TdGF0aWNfQ29leHRlbnNpb24pOiBOZXcgcHJvY2VkdXJlLgoJKEhhc19Mb2NhbF9SYWlzZSk6IE5ldyBmdW5jdGlvbgoJKFNldF9IYXNfTG9jYWxfUmFpc2UpOiBOZXcgcHJvY2VkdXJlCgkoUmVuYW1pbmdfRXhjZXB0aW9uKTogTmV3IGZpZWxkCgkoSGFzX0luaXRfRXhwcmVzc2lvbik6IE5ldyBmbGFnCgkoRGVsYXlfRmluYWxpemVfQXR0YWNoKTogUmVtb3ZlIGJlY2F1c2UgZmxhZyBpcyBvYnNvbGV0ZS4KCShTZXRfRGVsYXlfRmluYWxpemVfQXR0YWNoKTogUmVtb3ZlIGJlY2F1c2UgZmxhZyBpcyBvYnNvbGV0ZS4KCVJlbW92ZSBhbGwgaGFuZGxpbmcgb2Ygd2l0aF90eXBlIGNsYXVzZXMuCgkoRXhjZXB0aW9uX0p1bmspOiBDYW4gbm93IGJlIHNldCBpbiBOX0Jsb2NrX1N0YXRlbWVudAoKMjAwNy0wNi0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBmcm9udGVuZC5hZGIgKEZyb250ZW5kKTogUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZSBtYWluIHNvdXJjZSBjb3VsZAoJbm90IGJlIHBhcnNlZCwgYmVjYXVzZSBvZiBwcmVwcm9jZXNzaW5nIGVycm9ycy4KCgkqIGduYXQxZHJ2LmFkYiAoZ25hdDFkcnYpOiBIYW5kbGUgUkVfTm90X0F2YWlsYWJsZSBncmFjZWZ1bGx5LgoJKEduYXQxZHJ2KTogRXhpdCB3aXRoIGVycm9ycyBpZiB0aGUgbWFpbiBzb3VyY2UgY291bGQgbm90IGJlIHBhcnNlZCwKCWJlY2F1c2Ugb2YgcHJlcHJvY2Vzc2luZyBlcnJvcnMuCgkoQ2hlY2tfUmVwX0luZm8pOiBOZXcgcHJvY2VkdXJlCgoyMDA3LTA2LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGctaGVzb3JnLmFkcywgZy1oZWFzb3IuYWRzLAoJZy1idXNvcmcuYWRzLCBnLWJ1YnNvci5hZHM6IFVwZGF0ZSBkb2N1bWVudGF0aW9uCglHTkFULkhlYXAvQnViYmxlX1NvcnRfRyBpcyBub3cgcHVyZQoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLWNhdGlpby5hZHMsIGctY2F0aWlvLmFkYiAoSW1hZ2UpOiBDaGVjayBmb3IgbnVsbCBwaWN0dXJlIHN0cmluZwoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZy1jb21saW4uYWRzLCBnLWNvbWxpbi5hZGI6IAoJQWRkIG5ldyB3YXJuaW5nIGZvciByZW5hbWluZyBvZiBmdW5jdGlvbiByZXR1cm4gb2JqZWN0cwoKCSogb3B0LmFkYiAoVHJlZV9Xcml0ZSwgVHJlZV9SZWFkKTogVXNlIHByb3BlciBleHByZXNzaW9ucyBmb3Igc2l6ZQoJKFRyZWVfUmVhZCk6IFVzZSBzaXplIG9mIG9iamVjdCBpbnN0ZWFkIG9mIHR5cGUnb2JqZWN0X3NpemUsIHNpbmNlIHRoZQoJbGF0dGVyIGlzIGluY29ycmVjdCBmb3IgcGFja2VkIGFycmF5IHR5cGVzLgoJKFRyZWVfV3JpdGUpOiBTYW1lIGZpeAoKCSogb3B0LmFkczogQWRkIG5ldyB3YXJuaW5nIGZvciByZW5hbWluZyBvZiBmdW5jdGlvbiByZXR1cm4gb2JqZWN0cwoJKEdlbmVyYXRpbmdfQ29kZSk6IE5ldyBib29sZWFuIHZhcmlhYmxlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUKCWZyb250ZW5kIGFzIGZpbmlzaGVkIGl0cyB3b3JrIGFuZCBoYXMgY2FsbGVkIHRoZSBiYWNrZW5kIHRvIHByb2Nlc3MKCXRoZSB0cmVlIGFuZCBnZW5lcmF0ZSB0aGUgb2JqZWN0IGZpbGUuCgkoR0NDX1ZlcnNpb24pOiBJcyBub3cgcHJpdmF0ZQoJKFN0YXRpY19EaXNwYXRjaF9UYWJsZXMpOiBOZXcgY29uc3RhbnQgZGVjbGFyYXRpb24uCgkoT3ZlcmZsb3dfQ2hlY2tzX1Vuc3VwcHJlc3NlZCk6IE5ldyBmbGFnLgoJKFByb2Nlc3NfU3VwcHJlc3NfVW5zdXBwcmVzcyk6IFNldCBPdmVyZmxvd19DaGVja3NfVW5zdXBwcmVzc2VkLgoJKExpc3RfQ2xvc3VyZSk6IE5ldyBmbGFnIGZvciBnbmF0YmluZCAoLVIpCglaZXJvX0Zvcm1hdHRpbmc6IE5ldyBmbGFnIGZvciBnbmF0YmluZCAoLVopCgkoU3BlY2lhbF9FeGNlcHRpb25fUGFja2FnZV9Vc2VkKTogTmV3IGZsYWcuCgkoV2Fybl9Pbl9VbnJlcHBlZF9Db21wb25lbnRzKTogTmV3IGZsYWcuCgoJKiBzZW1fY2g4LmFkYiAoQ2hlY2tfTGlicmFyeV9Vbml0X1JlbmFtaW5nKTogQ2hlY2sgdGhhdCB0aGUgcmVuYW1lZAoJdW5pdCBpcyBhIGNvbXBpbGF0aW9uIHVuaXQsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gaXRzIHNjb3BlLCBzbyB0aGF0CglTdGFuZGFyZCBjYW4gYmUgcmVuYW1lZC4KCShBbmFseXplX09iamVjdF9SZW5hbWluZyk6IEFkZCBuZXcgd2FybmluZyBmb3IgcmVuYW1pbmcgb2YgZnVuY3Rpb24KCXJldHVybiBvYmplY3RzLgoJQWxzbyByZWplY3QgYXR0ZW1wdCB0byByZW5hbWUgZnVuY3Rpb24gcmV0dXJuIG9iamVjdCBpbiBBZGEgODMgbW9kZS4KCShBdHRyaWJ1dGVfUmVuYW1pbmcpOiBJbiBjYXNlIG9mIHRhZ2dlZCB0eXBlcywgYWRkIHRoZSBib2R5IG9mIHRoZQoJZ2VuZXJhdGVkIGZ1bmN0aW9uIHRvIHRoZSBmcmVlemluZyBhY3Rpb25zIG9mIHRoZSB0eXBlLgoJKEZpbmRfVHlwZSk6IEEgcHJvdGVjdGVkIHR5cGUgaXMgdmlzaWJsZSByaWdodCBhZnRlciB0aGUgcmVzZXJ2ZWQgd29yZAoJImlzIiBpcyBlbmNvdW50ZXJlZCBpbiBpdHMgdHlwZSBkZWNsYXJhdGlvbi4gU2V0IHRoZSBlbnRpdHkgYW5kIHR5cGUKCXJhdGhlciB0aGFuIGVtaXR0aW5nIGFuIGVycm9yIG1lc3NhZ2UuCgkoTmV3X1Njb3BlKTogUHJvcGVybHkgcHJvcGFnYXRlIERpc2NhcmRfTmFtZXMgdG8gaW5uZXIgc2NvcGVzCgkoQ2hlY2tfTmVzdGVkX0FjY2Vzcyk6IE5ldyBwcm9jZWR1cmUuCgkoSGFzX05lc3RlZF9BY2Nlc3MsIFNldF9IYXNfTmVzdGVkX0FjY2Vzcyk6IE5ldyBwcm9jZWR1cmVzLgoJKEZpbmRfRGlyZWN0X05hbWUsIE5vdGVfUG9zc2libGVfTW9kaWZpY2F0aW9uKTogVXNlIENoZWNrX05lc3RlZF9BY2Nlc3MuCgoJKiBzZW1fd2Fybi5hZHMsIHNlbV93YXJuLmFkYjogSW1wcm92ZW1lbnRzIHRvIGluZmluaXRlIGxvb3Agd2FybmluZwoJQWRkIG5ldyB3YXJuaW5nIGZvciByZW5hbWluZyBvZiBmdW5jdGlvbiByZXR1cm4gb2JqZWN0cwoJKENoZWNrX1JlZmVyZW5jZXMpOiBTdXBwcmVzcyB3YXJuaW5ncyBmb3Igb2JqZWN0cyB3aG9zZSB0eXBlIG9yCgliYXNlIHR5cGUgaGFzIFdhcm5pbmdzIHN1cHByZXNzZWQuCgkoU2V0X0RvdF9XYXJuaW5nX1N3aXRjaCk6IEFkZCBwcm9jZXNzaW5nIGZvciAtZ25hdHcuYy9DCgkoU2V0X1dhcm5pbmdfU3dpdGNoKTogSW5jbHVkZSBuZXcgLWduYXR3YyBpbiAtZ25hdHdhCgoyMDA3LTA2LTA2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBnLWRlYnBvby5hZHMsIGctZGVicG9vLmFkYiAoRnJlZV9QaHlzaWNhbGx5LkZyZWVfQmxvY2tzKTogVXNlIHRoZQoJYWJzb2x1dGUgdmFsdWUgb2YgSGVhZGVyLkJsb2NrX1NpemUgd2hlbiBkaXNwbGF5aW5nIHRoZSBmcmVlZCBwaHlzaWNhbAoJbWVtb3J5IGluIHRyYWNlcy4KCShBbGxvY2F0ZSk6IENvbXB1dGUgU3RvcmFnZV9BZGRyZXNzIHVzaW5nIEludGVnZXJfQWRkcmVzcywgbm90CglTdG9yYWdlX09mZnNldCwgYmVjYXVzZSB0aGUgcmFuZ2Ugb2YgU3RvcmFnZV9PZmZzZXQgbWF5IG5vdCBiZSBsYXJnZQoJZW5vdWdoLgoJKENvbmZpZ3VyZSk6IE5ldyBwYXJhbWV0ZXIgTG93X0xldmVsX1RyYWNlcwoJKEFsbG9jYXRlLCBEZWFsbG9jYXRpb24sIEZyZWVfUGh5c2ljYWxseSk6IEFkZGVkIGxvdy1sZXZlbCB0cmFjZXMKCShDb25maWd1cmUpOiBuZXcgcGFyYW1ldGVyIEVycm9yc19Ub19TdGRvdXQuCgkoT3V0cHV0X0ZpbGUpOiBuZXcgc3VicHJvZ3JhbQoJKERlYWxsb2NhdGUsIERlcmVmZXJlbmNlKTogU2VuZCBlcnJvciBtZXNzYWdlcyB0byB0aGUgcHJvcGVyIHN0cmVhbQoJKFByaW50X1Bvb2wsIFByaW50X0luZm9fU3Rkb3V0KTogTWFrZSBzdXJlIHRoZSBvdXRwdXQgZ29lcyB0byBzdGRvdXQsIGFzCglkb2N1bWVudGVkLiBQcmV2aW91cyBjb2RlIHdvdWxkIHNlbmQgaXQgdG8gdGhlIGN1cnJlbnQgb3V0cHV0IGZpbGUKCWRlZmluZWQgaW4gR05BVC5JTywgd2hpY2ggbWlnaHQgbm90IGJlIHN0ZG91dAoJKElzX1ZhbGlkKTogQWRqdXN0IGNvbW1lbnQgdG8gbWVudGlvbiB0aGF0IGEgcG9zaXRpdmUgcmVwbHkgbWVhbnMgdGhhdAoJSGVhZGVyX09mIG1heSBiZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBhbGxvY2F0aW9uIGhlYWRlciBhc3NvY2lhdGVkIHdpdGgKCXRoZSBzdWJwcm9ncmFtIFN0b3JhZ2UgYWRkcmVzcyBhcmd1bWVudC4gUmV0dXJuIEZhbHNlIGVhcmx5IGlmIHRoaXMKCWFkZHJlc3MgYXJndW1lbnQgaXMgbWlzYWxpZ25lZC4KCjIwMDctMDYtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZ25hdGNtZC5hZGIgKEdOQVRDbWQpOiBBY2NlcHQgc3dpdGNoIC1hUCBmb3IgY29tbWFuZHMgdGhhdCBhY2NlcHQKCXN3aXRjaCAtUAoJKEFTSVNfTWFpbik6IE5ldyBnbG9iYWwgdmFyaWFibGUKCShHZXRfQ2xvc3VyZSk6IE5ldyBwcm9jZWR1cmUKCShHTkFUQ21kKTogU2V0IEFTSVNfTWFpbiB3aGVuIC1QIGFuZCAtVSB3aXRoIGEgbWFpbiBpcyB1c2VkIGZvciBnbmF0CgljaGVjaywgbWV0cmljIG9yIHByZXR0eS4gQ2FsbCBHZXRfQ2xvc3VyZSBpbiB0aGlzIGNhc2UuCgkoQ2hlY2tfRmlsZXMpOiBGb3IgR05BVCBMSVNULCBjaGVjayBhbGwgc291cmNlcyBvZiBhbGwgcHJvamVjdHMgd2hlbgoJQWxsX1Byb2plY3RzIGlzIFRydWUuCgkoR05BVENtZCk6IEFjY2VwdCAtVSBmb3IgR05BVCBMSVNUCgoyMDA3LTA2LTA2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRsaW5rLmFkYiAoR25hdGxpbmspOiBEbyBub3Qgc3BlY2lmeSAtc3RhdGljLWxpYmdjYyB3aGVuIC0tTElOSz0KCWhhcyBiZWVuIHNwZWNpZmllZAoJQ29ycmVjdCBlcnJvciBtZXNzYWdlIHdoZW4gaW52b2NhdGlvbiBvZiB0aGUgbGlua2VyIGZhaWxzCglBZGQgZXhwbGljaXQgc2l6ZSBjbGF1c2UgZm9yIHRoZSBDIGltcG9ydGVkIHZhcmlhYmxlcwoJT2JqZWN0X0xpc3RfRmlsZV9TdXBwb3J0ZWQgYW5kIFVzaW5nX0dOVV9MaW5rZXIgdG8gZW1waGFzaXplIHRoYXQKCXdlIGV4cGVjdCBjaGFyIHNpemUuCglSZWFkIHRhcmdldCBwYXJhbWV0ZXJzIGVhcmxpZXIsIHNpbmNlIHRoaXMgaXMgbmVlZGVkIHRvIHNldAoJVGFyZ2V0X1ZNIHByb3Blcmx5LiBBbHNvIGRvIG5vdCB1c2UgLXN0YXRpYy9zaGFyZWQtbGliZ2NjIGZvciBub24gR0NDCgl0YXJnZXRzLgoKMjAwNy0wNi0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBnbmF0bHMuYWRiOiAKCUFkZCAzIHNwYWNlcyBiZWZvcmUgdGhlIGRlZmF1bHQgcHJvamVjdCBkaXJlY3Rvcnkgd2hlbiBkaXNwbGF5aW5nCgl0aGUgcHJvamVjdCBzZWFyY2ggcGF0aC4KCUFkZCBuZXcgY29tbWFuZCBsaW5lIHN3aXRjaCAnLWwnIHRvIGRpc3BsYXkgbGljZW5zZSBpbmZvcm1hdGlvbi4KCjIwMDctMDYtMDYgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWRhY29yZS5jb20+CgoJKiBnbWVtLmM6IEFkZCBzdXBwb3J0IGZvciB0aW1lc3RhbXBzIG9uIG1lbW9yeSBvcGVyYXRpb25zLgoKCSogbWVtdHJhY2suYWRiLCBnbmF0bWVtLmFkYjogQWRkIHN1cHBvcnQgZm9yIHRpbWVzdGFtcHMgb24gbWVtb3J5CglvcGVyYXRpb25zIChub3QgdXNlZCBjdXJyZW50bHksIGp1c3QgZm91bmRhdGlvbiBmb3IgZnV0dXJlCgllbmhhbmNlbWVudHMpLiBBZGQgcG9zc2liaWxpdHkgdG8gcGVyZm9ybSBmdWxsIGR1bXAgb2YgZ21lbS5vdXQgZmlsZS4KCShQcmludF9CYWNrX1RyYWNlcyk6IERlY2xhcmUgYWNjZXNzZXMgdG8gcm9vdCBhcnJheXMgY29uc3RhbnRzIHNpbmNlCgl0aGV5IGFyZW4ndCBtb2RpZmllZC4KCShQcmludF9CYWNrX1RyYWNlcyk6IGFsbG9jYXRlIHJvb3QgYXJyYXlzIG9uIHRoZSBoZWFwIHJhdGhlciB0aGFuIHN0YWNrLgoKMjAwNy0wNi0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBnbmF0c3ltLmFkYjogVXBkYXRlIENvcHlyaWdodCBub3RpY2UKCShQYXJzZV9DbWRfTGluZSk6IEFjY2VwdCBuZXcgc3dpdGNoIC1ECgkoR25hdHN5bSk6IEluIERpcmVjdCBwb2xpY3kgKHN3aXRjaCAtRCkgY29weSByZWZlcmVuY2UgZmlsZSB0byBzeW1ib2wKCSBmaWxlLgoKCSogcHJqLmFkcyAoUG9saWN5KTogTmV3IHBvbGljeSBEaXJlY3QKCShZZXNfTm9fVW5rbm93bik6IE5ldyBlbnVtZXJhdGlvbiB0eXBlCgkoUHJvamVjdF9EYXRhKTogTmV3IGNvbXBvbmVudCBMaWJnbmFybF9OZWVkZWQKCgkqIHByai1ubXNjLmFkYiAoQ2hlY2tfRm9yX1NvdXJjZSk6IFdoZW4gcmVjb3JkaW5nIGEgc291cmNlIGZpbGUgbWFrZQoJdXNlIHRoZSB1bnRvdWNoZWQgcGF0aG5hbWUgY2FzaW5nLgoJKEdldF9EaXJlY3Rvcmllcyk6IEVuc3VyZSB0aGF0IHRoZSBEaXNwbGF5X0V4ZWNfRGlyZWN0b3J5IGlzIHVzaW5nIHRoZQoJcHJvcGVyIGNhc2luZyBvbiBub24gY2FzZS1zZW5zaXRpdmUgcGxhdGZvcm1zIGxpa2UgV2luZG93cy4KCShHZXRfVW5pdCk6IEFjY2VwdCBmaWxlIG5hbWVzIHhfXy4uLiBhbmQgeH4uLi4gKHdoZXJlIHggPSBhLCBnLCBpIG9yIHMpCglvbiBhbGwgcGxhdGZvcm1zLCBhcyBpdCBpcyBub3QgcG9zc2libGUgdG8ga25vdyB3aGljaCBvbmUgaXMgYWxsb3dlZAoJYmVmb3JlIHByb2Nlc3NpbmcgdGhlIHByb2plY3QgZmlsZXMuCgkoQ2hlY2tfU3RhbmRfQWxvbmVfTGlicmFyeSk6IENoZWNrIHRoYXQgTGlicmFyeV9SZWZlcmVuY2VfU3ltYm9sX0ZpbGUgaXMKCXNwZWNpZmllZCB3aGVuIHN5bWJvbCBwb2xpY3kgaXMgRGlyZWN0LiBDaGVjayB0aGF0IHdoZW4gdGhlcmUgaXMgYQoJc3ltYm9sIGZpbGUgZGVmaW5lZCAoZWl0aGVyIGJ5IGRlZmF1bHQgb3Igd2l0aCBhdHRyaWJ1dGUKCUxpYnJhcnlfU3ltYm9sX0ZpbGUpIGl0IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgcmVmZXJlbmNlIHN5bWJvbCBmaWxlLgoJKENoZWNrX1N0YW5kX0Fsb25lX0xpYnJhcnkpOiBSZWNvZ25pemUgbmV3IHN5bWJvbCBwb2xpY3kgRGlyZWN0LgoJKExvb2tfRm9yX1NvdXJjZXMpOiBBbGxvdyBMb2NhbGx5X1JlbW92ZWRfRmlsZXMgdG8gYmUgZGVjbGFyZSBpbiBub24KCWV4dGVuZGluZyBwcm9qZWN0cy4KCShSZWNvcmRfQWRhX1NvdXJjZSk6IFJlY29yZCBhIHNvdXJjZSB0aGF0IGhhcyBiZWVuIGxvY2FsbHkgcmVtb3ZlZCBpbiBhbgoJaW1wb3J0ZWQgcHJvamVjdC4KCgkqIHN5bWJvbHMuYWRzIChQb2xpY3kpOiBOZXcgcG9saWN5IERpcmVjdAoKCSogc3ltYm9scy12bXMuYWRiIChJbml0aWFsaXplKTogVGFrZSBuZXcgcG9saWN5IERpcmVjdCBpbiBjYXNlCglzdGF0ZW1lbnQKCjIwMDctMDYtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZy1vc19saWIuYWRzLCBnLW9zX2xpYi5hZGIgKE5vcm1hbGl6ZV9QYXRobmFtZS5HZXRfRGlyZWN0b3J5KToKCUNvcnJlY3Qgb2J2aW91cyBidWcgKHJldHVybiBEaXI7IGluc3RlYWQgb2YgcmV0dXJuIERpcmVjdG9yeTspLgoJKE5vcm1hbGl6ZV9QYXRobmFtZSk6IFVzZSBSZWZlcmVuY2VfRGlyJ0xlbmd0aCwgbm90IFJlZmVyZW5jZV9EaXInTGFzdAoKMjAwNy0wNi0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctcGVoYWdlLmFkYiAoUHJvZHVjZSk6IE9wZW4gb3V0cHV0IGZpbGVzIGluIEJpbmFyeSBtb2RlLCBzbyB0aGF0Cgl0aGV5IGhhdmUgVU5JWCBsaW5lIGVuZGluZ3MgKExGIG9ubHkpIGV2ZW4gb24gV2luZG93cywgYW5kIHRodXMgcGFzcwoJYWxsIEdOQVQgc3R5bGUgY2hlY2tzLgoKMjAwNy0wNi0wNiAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhZGFjb3JlLmNvbT4KCgkqIGctcmVncGF0LmFkYiAoUXVvdGUpOiBGaXggaW1wcm9wZXIgcXVvdGluZyBvZiAnLicKCjIwMDctMDYtMDYgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnLXNvY2Nvbi5hZHM6IEFkZCBuZXcgY29uc3RhbnQgVGhyZWFkX0Jsb2NraW5nX0lPLCBhbHdheXMgVHJ1ZSBieQoJZGVmYXVsdCwgc2V0IEZhbHNlIG9uIGEgcGVyLXJ1bnRpbWUgYmFzaXMuCgkoTmVlZF9OZXRkYl9CdWZmZXIpOiBOZXcgY29uc3RhbnQuCgoJKiBnLXNvY2tldC5hZHMsIGctc29ja2V0LmFkYjogSW1wb3J0IG5ldyBwYWNrYWdlCglHTkFULlNvY2tldHMuVGhpbi5UYXNrX1NhZmVfTmV0REIuCgkoUmFpc2VfSG9zdF9FcnJvcik6IFVzZSBIb3N0X0Vycm9yX01lc3NhZ2UgZnJvbSBwbGF0Zm9ybS1zcGVjaWZpYyB0aGluCgliaW5kaW5nIHRvIG9idGFpbiBwcm9wZXIgbWVzc2FnZS4KCShDbG9zZV9TZWxlY3Rvcik6IFVzZSBHTkFULlNvY2tldHMuVGhpbi5TaWduYWxsaW5nX0Zkcy5DbG9zZS4KCVJlcGxhY2UgdmFyaW91cyBvY2N1cnJlbmNlcyBvZiBBcnJ5IChBcnJ5J0ZpcnN0KSdBZGRyZXNzIHdpdGggdGhlCgllcXVpdmFsZW50IEFycnknQWRkcmVzcyAoR05BVCBhbHdheXMgZm9sbG93cyBpbXBsZW1lbnRhdGlvbiBhZHZpY2UgZnJvbQoJMTMuMygxNCkpLgoJKEdldF9Ib3N0X0J5X0FkZHJlc3MsIEdldF9Ib3N0X0J5X05hbWUsCglHZXRfU2VydmljZV9CeV9OYW1lLCBHZXRfU2VydmljZV9CeV9Qb3J0KTogRG8gbm90IHVzZSBHTkFULlRhc2tfTG9jazsKCWluc3RlYWQsIHJlbHkgb24gcGxhdGZvcm0tc3BlY2lmaWMgdGFzayBzYWZlIG5ldGRiIG9wZXJhdGlvbnMgcHJvdmlkZWQKCWJ5IGctc29jdGhpLgoKCSogZy1zb2N0aGkuYWRzLCBnLXNvY3RoaS5hZGIgKEluaXRpYWxpemUpOiBSZW1vdmUgb2Jzb2xldGUgZm9ybWFsCglwYXJhbWV0ZXIgUHJvY2Vzc19CbG9ja2luZ19JTy4KCShIb3N0X0Vycm9yX01lc3NhZ2VzKTogQWRkIHN0dWIgYm9keS4KCShHTkFULlNvY2tldHMuVGhpbi5TaWduYWxsaW5nX0Zkcyk6IE5ldyBwcm9jZWR1cmUgQ2xvc2UuCgkoU2FmZV9HZXRob3N0YnluYW1lLCBTYWZlX0dldGhvc3RieWFkZHIsIFNhZmVfR2V0c2VydmJ5bmFtZSwKCVNhZmVfR2V0c2VydmJ5cG9ydCk6IE1vdmUgZnVuY3Rpb25zIGludG8gbmV3IGNoaWxkIHBhY2thZ2UKCVRhc2tfU2FmZV9OZXREQi4KCShOb25yZWVudHJhbnRfR2V0aG9zdGJ5bmFtZSwgTm9ucmVlbnRyYW50X0dldGhvc3RieWFkZHIsCglOb25yZWVudHJhbnRfR2V0c2VydmJ5bmFtZSwgTm9ucmVlbnRyYW50X0dldHNlcnZieXBvcnQpOiBOZXcgcm91dGluZXMuCgkoSW5fQWRkcik6IEFkZCBhbGlnbm1lbnQgY2xhdXNlLgoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLXRyYXN5bS5hZHMsIGctdHJhY2ViLmFkczogVXBkYXRlIGxpc3Qgb2Ygc3VwcG9ydGVkIHRhcmdldHMKCUFkZCBub3RlIGFib3V0IHN5bWJvbGljIHRyYWNlYmFjawoKMjAwNy0wNi0wNiAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogaG9zdHBhcm0uYWRzIChOb3JtYWxpemVkX0NXRCk6IFVzZSB0aGUgaG9zdCBkaXJlY3Rvcnkgc2VwYXJhdG9yCglpbnN0ZWFkIG9mIHRoZSBoYXJkY29kZWQgZm9yd2FyZCBzbGFzaCB3aGljaCBpcyBub3QgdGhlIHByb3BlcgoJY2hhcmFjdGVyIG9uIFdpbmRvd3MgZm9yIGV4YW1wbGUuCgkoSmF2YV9WTSk6IFJlbW92ZWQuCgoyMDA3LTA2LTA2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBhLWNscmVmaS5hZGIsIGEtY2xyZWZpLmFkczogTmV3IGZpbGVzCgoJKiBpbXB1bml0LmFkYjogQWRkIHMtb3NfbGliIGluIHRoZSBsaXN0IG9mIHVzZXIgdmlzaWJsZSB1bml0cy4KCShOb25fSW1wX0ZpbGVfTmFtZXNfOTUpOiBBZGQgYS1jbHJlZmkgdG8gdGhpcyBsaXN0CglSZW1vdmUgb2Jzb2xldGUgcnVuLXRpbWUgZW50cmllcy4KCShOb25fSW1wX0ZpbGVfTmFtZXNfMDUpOiBBZGQgQWRhIDIwMDUgZW50cmllcyBmb3I6CgkgImEtZXhldGltIiAtLSBBZGEuRXhlY3V0aW9uX1RpbWUKCSAiYS1leHRpdGkiIC0tIEFkYS5FeGVjdXRpb25fVGltZS5UaW1lcnMKCgkqIG1saWItcHJqLmFkcywgbWxpYi1wcmouYWRiCgkoQnVpbGRfTGlicmFyeSk6IFVzZSB1bnRvdWNoZWQgb2JqZWN0IGRpciBhbmQgbGlicmFyeSBkaXIuIEF0IHRoZQoJc2FtZSB0aW1lIG1ha2VzIHN1cmUgdGhhdCB0aGUgY2hlY2tzIGFyZSBkb25lIHVzaW5nIHRoZSBjYW5vbmljYWwKCWZvcm0uIFJlbW92ZXMgaGFyZC1jb2RlZCBkaXJlY3Rvcnkgc2VwYXJhdG9yIGFuZCB1c2UgdGhlIHByb3BlciBob3N0CglvbmUgaW5zdGVhZC4KCShQcm9jZXNzX1Byb2plY3QpOiBEbyBub3QgbG9vayBpbiBvYmplY3QgZGlyZWN0b3J5IHRvIGNoZWNrIGlmIGxpYmduYXJsCglpcyBuZWVkZWQgZm9yIGEgbGlicmFyeSwgaWYgdGhlcmUgaXMgbm8gb2JqZWN0IGRpcmVjdG9yeS4KCShCdWlsZF9MaWJyYXJ5KTogU2NhbiB0aGUgQUxJIGZpbGVzIHRvIGRlY2lkZSBpZiBsaWJnbmFybCBpcyBuZWVkZWQgZm9yCglsaW5raW5nLgoJKEJ1aWxkX0xpYnJhcnkpOiBXaGVuIGludm9raW5nIGduYXRiaW5kLCB1c2UgYSByZXNwb25zZSBmaWxlIGlmIHRoZQoJdG90YWwgc2l6ZSBvZiB0aGUgYXJndW1lbnRzIGlzIHRvbyBsYXJnZS4KCgkqIE1ha2VmaWxlLnJ0bDogKGctc3R0c25lKTogTmV3IG9iamVjdCBmaWxlLgoJQWRkIGVudHJ5IGZvciBhLWNscmVmaSwgcy11dGZfMzIsIFN5c3RlbS5FeGNlcHRpb25zCgoJKiBNYWtlLWxhbmcuaW46IFJlbW92ZSBib2d1cyBkZXBlbmRlbmN5IG9mIHMtbWVtb3J5Lm8gb24gbWVtdHJhY2suby4KCShHTkFUX0FEQV9PQkpTLCBHTkFUQklORF9PQkpTKTogQWRkIHMtZXhjZXB0Lm8uCgkoR05BVEJJTkRfT0JKUyk6IEFkZCBuZXcgb2JqZWN0cyBhLWNscmVmaS5vIGFuZCBhLWNvbWxpbi5vCglDaGFuZ2UgZy1zdHJpbmcgdG8gcy1zdHJpbmcsIGctb3NfbGliIHRvIHMtb3NfbGliCglDaGFuZ2UgYWxsIGctdXRmXzMyIHJlZmVyZW5jZXMgdG8gcy11dGZfMzIKCjIwMDctMDYtMDYgIFRyaXN0YW4gR2luZ29sZCAgPGdpbmdvbGRAYWRhY29yZS5jb20+CgkgICAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGluaXQuYzogRG8gbm90IGFkanVzdCBJUCBvZiBhbiBpbXBvcnRlZCBWTVMgZXhjZXB0aW9uIG9mIGlhNjQuCglMSUIkU1RPUCBpcyBjYWxsZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCB0aGUgSVAgb2YgdGhlIGV4Y2VwdGlvbgoJaXMgdGhlIGluc3RydWN0aW9uIHJpZ2h0IGFmdGVyIHRoZSBjYWxsLgoJKF9fZ25hdF9hZGp1c3RfY29udGV4dF9mb3JfcmFpc2UsIEFJWCk6IEltcGxlbWVudC4KCShfX2duYXRfZXJyb3JfaGFuZGxlciwgQUlYKTogQWNjZXB0IFNJR0lORk8gcmVsYXRlZCBhcmd1bWVudHMgYW5kIGNhbGwKCSBhZGp1c3RfY29udGV4dF9mb3JfcmFpc2UgYmVmb3JlIFJhaXNlX0Zyb21fU2lnbmFsX0hhbmxlci4KCShfX2duYXRfaW5zdGFsbF9oYW5kbGVyLCBBSVgpOiBBZGQgU0FfU0lHSU5GTyB0byB0aGUgc2FfZmxhZ3MsIHRvIGVuc3VyZQoJc2lnaW5mbyBpcyBwYXNzZWQgdG8gdGhlIGhhbmRsZXIsIG5lY2Vzc2FyeSB0byBsZXQgdGhlIHpjeCBwcm9wYWdhdGlvbgoJZW5naW5lIHVud2luZCBwYXN0IGl0LgoKMjAwNy0wNi0wNiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGluaXRpYWxpemUuYyAoX19nbmF0X2luaXRpYWxpemUgZm9yIHZ4d29ya3MpOiAgVXBkYXRlIGRvY3VtZW50YXRpb24KCW9uIHRoZSBaQ1ggc3VwcG9ydCwgdXNpbmcgZGlmZmVyZW50IHNldHMgb2YgY3J0c3R1ZmYgb2JqZWN0cyB0aGFuIHdpdGgKCUdDQyAzLjQuCgoyMDA3LTA2LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGxheW91dC5hZHMsIGxheW91dC5hZGIgKEFkanVzdF9Fc2l6ZV9BbGlnbm1lbnQpOiBNb3ZlIHNwZWMgdG8gcGFja2FnZQoJc3BlYyBmcm9tIGJvZHkKCShMYXlvdXRfVHlwZSk6IEZpeCByZWNvbXB1dGF0aW9uIG9mIHNpemUgZnJvbSBhbGlnbm1lbnQuCgoyMDA3LTA2LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX0Fzc29jaWF0aW9ucyk6IERpYWdub3NlIHVzZSBvZiBhbiBvdGhlcnMKCWFzc29jaWF0aW9uIGluIGFuIGluc3RhbmNlLgoJKENvcHlfR2VuZXJpY19Ob2RlKTogSWYgdGhlIG5vZGUgaXMgYSBzdHJpbmcgbGl0ZXJhbCwgbm8gbmVlZCB0byBjb3B5CglpdHMgZGVzY2VuZGFudHMuCgkoSXNfR2VuZXJpY19Gb3JtYWwpOiBGb3IgYSBmb3JtYWwgc3VicHJvZ3JhbSwgdGhlIGRlY2xhcmF0aW9uIGlzIHRoZQoJZ3JhbmRwYXJlbnQgb2YgdGhlIGVudGl0eS4KCShBbmFseXplX0Zvcm1hbF9JbnRlcmZhY2VfVHlwZSk6IFRyYW5zZm9ybSBpbnRvIGEgZnVsbCB0eXBlIGRlY2xhcmF0aW9uLAoJdG8gc2ltcGxpZnkgaGFuZGxpbmcgb2YgZm9ybWFsIGludGVyZmFjZXMgdGhhdCBkZXJpdmUgZnJvbSBvdGhlciBmb3JtYWwKCWludGVyZmFjZXMuCgkoSW5zdGFudGlhdGVfU3VicHJvZ3JhbV9Cb2R5KTogVGhlIGRlZmluaW5nIHVuaXQgbmFtZSBvZiB0aGUgYm9keSBvZgoJdGhlIGluc3RhbmNlIHNob3VsZCBiZSBhIGRlZmluaW5nIGlkZW50aWZpZXIuCgkoSW5zdGFsbF9Gb3JtYWxfUGFja2FnZXMpOiBtYWtlIGdsb2JhbCB0byB0aGUgcGFja2FnZSwgZm9yIHVzZSBpbgoJaW5zdGFudGlhdGlvbnMgb2YgY2hpbGQgdW5pdHMuCgkoQW5hbHl6ZV9QYWNrYWdlX0luc3RhbnRpYXRpb24pOiBEbyBub3QgYXR0ZW1wdCB0byBzZXQgaW5mb3JtYXRpb24gb24gYW4KCWVuY2xvc2luZyBtYXN0ZXIgb2YgYW4gZW50cnkgd2hlbiBleHBhbnNpb24gaXMgZGlzYWJsZWQuCgkoSW5zdGFudGlhdGVfVHlwZSk6IElmIHRoZSBhY3R1YWwgaXMgYSB0YWdnZWQgc3luY2hyb25pemVkIHR5cGUgYW5kIHRoZQoJZ2VuZXJpYyBhbmNlc3RvciBpcyBhbiBpbnRlcmZhY2UsIGNyZWF0ZSBhIGdlbmVyaWMgYWN0dWFsIGZvciB0aGUKCWNvcnJlc3BvbmRpbmcgcmVjb3JkLgoJKEFuYWx5emVfRm9ybWFsX0Rlcml2ZWRfSW50ZXJmYWNlX1R5cGUpOiBSZXdyaXRlIGFzIGEgZGVyaXZlZCB0eXBlCglkZWNsYXJhdGlvbiwgdG8gZW5zdXJlIHRoYXQgdGhlIGludGVyZmFjZSBsaXN0IGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCgkoSW5saW5lX0luc3RhbmNlX0JvZHkpOiBJZiBlbmNsb3Npbmcgc2NvcGUgaXMgYW4gaW5zdGFuY2UgYm9keSwgcmVtb3ZlCglpdHMgZW50aXRpZXMgZnJvbSB2aXNpYmlpbGl0eSBhcyB3ZWxsLgoJKFByZV9BbmFseXplX0FjdHVhbHMpOiBpZiB0aGUgYWN0dWFsIGlzIGFuIGFsbG9jYXRvciB3aXRoICBjb25zdHJhaW50cwoJZ2l2ZW4gd2l0aCBhIG5hbWVkIGFzc29jaWF0aW9uLCBhbmFseXplIHRoZSBleHByZXNzaW9uIG9ubHksIG5vdCB0aGUKCWRpc2NyaW1pbmFudCBhc3NvY2lhdGlvbiBpdHNlbGYuCgkoUmVzZXRfRW50aXR5KTogSWYgdGhlIGFuYWx5c2lzIG9mIGEgc2VsZWN0ZWQgY29tcG9uZW50IGlzIHRyYW5zZm9ybWVkCglpbnRvIGFuIGV4cGFuZGVkIG5hbWUgaW4gdGhlIHByZWZpeCBvZiBhIGNhbGwgd2l0aCBwYXJhbWV0ZXJzLCBkbyBub3QKCXRyYW5zZm9ybSB0aGUgb3JpZ2luYWwgbm9kZSBpbnRvIGFuIGV4cGFuZGVkIG5hbWUsIHRvIHByZXZlbnQgdmlzaWJpbGl0eQoJZXJyb3JzIGluIHRoZSBjYXNlIG9mIG5lc3RlZCBnZW5lcmljcy4KCShDaGVja19Qcml2YXRlX1ZpZXcpOiBGb3IgYW4gYXJyYXkgdHlwZSwgY2hlY2sgd2hldGhlciB0aGUgaW5kZXggdHlwZXMKCW1heSBuZWVkIGV4Y2hhbmdpbmcuCgoyMDA3LTA2LTA2ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBsaWItd3JpdC5hZGI6IEhhbmRsZSBDb252ZW50aW9uX0NJTCBpbiBhZGRpdGlvbiB0byBDb252ZW50aW9uX0phdmEsCglzaW5jZSBib3RoIGFyZSBzZXBhcmF0ZWQuCglBZGQgc3VwcG9ydCBmb3IgaW1wb3J0ZWQgQ0lMIHBhY2thZ2VzLgoJQWRkIGZ1cnRoZXIgc3BlY2lhbCBoYW5kbGluZyBvZiAidmFsdWVfdHlwZSIgZm9yIENJTC4KCUFkZCBzcGVjaWFsIGhhbmRsaW5nIG9mIHByYWdtYSBJbXBvcnQgZm9yIENJTC4KCgkqIG1ha2UuYWRzLCBtYWtlLmFkYjogV2hlbiBzd2l0Y2ggLWVTIGlzIHVzZWQsIGRpcmVjdCBhbGwgb3V0cHV0cyB0bwoJc3RhbmRhcmQgb3V0cHV0IGluc3RlYWQgb2Ygc3RhbmRhcmQgZXJyb3IsIGV4Y2VwdCBlcnJvcnMuCgkoQWJzb2x1dGVfUGF0aCk6IFVzZSB1bnRvdWNoZWQgY2FzaW5nIGZvciB0aGUgcGFyZW50IGRpcmVjdG9yeS4KCShBZGRfTGlicmFyeV9TZWFyY2hfRGlyKTogVXNlIHRoZSB1bnRvdWNoZWQgZGlyZWN0b3J5IG5hbWUuCgkoQWRkX1NvdXJjZV9TZWFyY2hfRGlyKTogSWRlbS4KCShDaGFuZ2VfVG9fT2JqZWN0X0RpcmVjdG9yeSk6IFVwZGF0ZSBvdXRwdXQgdG8gdXNlIHByb3BlciBjYXNpbmcuCgkoQ3JlYXRlX0JpbmRlcl9NYXBwaW5nX0ZpbGUpOiBVc2UgdGhlIHVudG91Y2hlZCBmaWxlbmFtZSB0byBzZXQKCUFMSV9OYW1lLgoJKEduYXRtYWtlKTogVXNlIHVudG91Y2hlZCBsaWJyYXJ5IGFuZCBleGVjdXRhYmxlIGRpcmVjdG9yeSBuYW1lcy4KCShJbnNlcnRfUHJvamVjdF9Tb3VyY2VzKTogVXNlIHVudG91Y2hlZCBmaWxlbmFtZSBmb3Igc3BlYyBhbmQgYm9keS4KCShJc19Jbl9PYmplY3RfRGlyZWN0b3J5KTogVXNlIHVudG91Y2hlZCBvYmplY3QgZGlyZWN0b3J5LgoJKE1hcmtfRGlyZWN0b3J5KTogSWRlbS4KCShDb2xsZWN0X0FyZ3VtZW50c19BbmRfQ29tcGlsZSk6IEVuc3VyZSB0aGF0IEZ1bGxfU291cmNlX0ZpbGUgYWx3YXlzCgljb250YWlucyB0aGUgbm9uLWNhbm9uaWNhbCBmaWxlbmFtZSBpbiBhbGwgY2FzZXMuCgkoQ2hhbmdlX1RvX09iamVjdF9EaXJlY3RvcnkpOiBJbiB2ZXJib3NlIG1vZGUsIGRpc3BsYXkgdGhlIG5hbWUgb2YgdGhlCglvYmplY3QgZGlyZWN0b3J5IHdlJ3JlIGNoYW5naW5nIHRvLgoJKENvbXBpbGVfU291cmNlcyk6IE1ha2Ugc3VyZSwgd2hlbiBhIHByb2plY3QgZmlsZSBpcyB1c2VkLCB0byBjb21waWxlCgl0aGUgYm9keSBvZiB0aGUgdW5pdCwgd2hlbiB0aGVyZSBpcyBvbmUsIGV2ZW4gd2hlbiBvbmx5IHRoZSBzcGVjIGlzCglyZWNvcmRlZCBpbiBhbiBBTEkgZmlsZS4KCShHY2NfU3dpdGNoZXMsIEJpbmRlcl9Td2l0Y2hlcywgTGlua2VyX1N3aXRjaGVzKTogVGFibGVzIG1vdmVkIGZyb20gdGhlCglzcGVjIHRvIHRoZSBib2R5LgoJKFJlcG9ydF9Db21waWxhdGlvbl9GYWlsZWQpOiBOZXcgcHJvY2VkdXJlCgkoQmluZCwgRGlzcGxheV9Db21tYW5kcywgQ29tcGlsZV9Tb3VyY2VzLCBJbml0aWFsaXplLCBTY2FuX01ha2VfQXJnKToKCXByb2NlZHVyZXMgbW92ZWQgZnJvbSB0aGUgc3BlYyB0byB0aGUgYm9keS4KCShFeHRyYWN0X0ZhaWx1cmUpOiBSZW1vdmVkLCBub3QgdXNlZAoJUmVwbGFjZSBleHBsaWNpdCByYWlzZXMgb2YgZXhjZXB0aW9uIEJpbmRfRmFpbGVkIGFuZCBMaW5rX0ZhaWxlZCB3aXRoCgljYWxscyB0byBNYWtlX0ZhaWxlZCB3aXRoIHRoZSBwcm9wZXIgbWVzc2FnZS4KCVJlcGxhY2UgZXhwbGljaXQgcmFpc2VzIG9mIGV4Y2VwdGlvbiBDb21waWxhdGlvbl9GYWlsZWQgd2l0aCBjYWxscyB0bwoJcHJvY2VkdXJlIFJlcG9ydF9Db21waWxhdGlvbl9GYWlsZWQuCgkoSW5pdGlhbGl6ZSk6IENyZWF0ZSBtYXBwaW5nIGZpbGVzIHVuY29uZGl0aW9uYWxseSB3aGVuIHVzaW5nIHByb2plY3QKCWZpbGVzLgoKCSogc2VtX21lY2guYWRiOiAoTmFtZV9DSUwsIE5hbWVfQ0lMX0NvbnN0cnVjdG9yLCBDb252ZW50aW9uX0NJTCwKCVByYWdtYV9DSUxfQ29uc3RydWN0b3IpOiBOZXcgbmFtZXMuCgoJKiB0YXJncGFybS5hZHMsIHRhcmdwYXJtLmFkYgoJKENvbXBpbGVyX1N5c3RlbV9WZXJzaW9uKTogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgkoR2V0X1RhcmdldF9QYXJhbWV0ZXJzKTogUmVsYXggY2hlY2tzIG9uIHN5c3RlbS5hZHMgdmFsaWRpdHkuIEFkZAoJaGFuZGxpbmcgb2YgdHdvIG5ldyBzeXN0ZW0gZmxhZ3M6IEpWTSBhbmQgQ0xJLgoKMjAwNy0wNi0wNiAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCSAgICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCR05BVF9UQVJHRVRfUEFJUlMgZm9yIFZ4V29ya3MgNik6IEZvciB0aGUgUlRQIHJ1bgoJdGltZSwgdXNlIHRoZSBkZWZhdWx0IHMtaW50ZXJyIGJvZHkgdGhhdCBwcm92aWRlcyBpbnRlcnJ1cHQgc3VwcG9ydAoJYmFzZWQgb24gc2lnbmFscy4KCShMSUJHTkFUX1RBUkdFVF9QQUlSUyBmb3IgeDg2LWxpbnV4KTogVXNlIHNwZWNpYWxpemVkIHZlcnNpb25zIG9mCglhLWV4ZXRpbS5hZHtzLGJ9LCBhLWV4dGl0aS5hZHtzLGJ9LCBhLXJ0dGlldi5hZHtzLGJ9LCBzLW9zaW50ZS5hZHtzLGJ9LAoJZy1zb2Njb24uYWRzLCBhbmQgcy10YXByb3AuYWRiIGZvciB0aGUgbWFydGUgcnVuIHRpbWUuCgkoRVhUUkFfR05BVFJUTF9UQVNLSU5HX09CSlMgZm9yIHg4Ni1saW51eCk6IEV4ZWN1dGlvbiB0aW1lIGNsb2NrcyBhbmQKCXRpbWVycyBhcmUgc3VwcG9ydGVkIG9uIG1hcnRlLgoJKEVIX01FQ0hBTklTTSBmb3IgbWFydGUpOiBEbyBub3QgdXNlIFpDWC4KCShUSFJFQURTTElCIGZvciBtYXJ0ZSk6IFVzZSAtbG1hcnRlLgoJQWRkIG1saWItdGd0LXZtcy5vIHRvIHRoZSBsaXN0IG9mIG9iamVjdHMgZm9yIGduYXRtYWtlIGZvciBWTVMKCUFkZCBtbGliLXRndC1zcGVjaWZpYy5vIHRvIGduYXRtYWtlIG9iamVjdHMKCW1saWItdGd0LTxwbGF0Zm9ybXM+LmFkYiBpcyBub3cgdGhlIGJvZHkgb2YgTUxpYi5UZ3QuU3BlY2lmaWMsIG5vCglsb25nZXIgb2YgTUxpYi5UZ3QuCgkoTElCR05BVF9UQVJHRVRfUEFJUlMgZm9yIHZ4d29ya3MpOiBXaGVuIGJ1aWxkaW5nIGEgcnVuIHRpbWUgZm9yIFZ4V29ya3MKCTYsIGVpdGhlciBrZXJuZWwgb3IgcnRwLCB1c2UgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHMtb3NpbnRlLmFkcy4KCjIwMDctMDYtMDYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIG1rZGlyLmMgKF9fZ25hdF9ta2Rpcik6IEFkZCBzdXBwb3J0IGZvciBVVEYtOC4KCjIwMDctMDYtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi5hZHMsIG1saWIuYWRiIChCdWlsZF9MaWJyYXJ5KTogRG8gbm90IHVzZSBoYXJkLWNvZGVkIGRpcmVjdG9yeQoJc2VwYXJhdG9yLCB1c2UgaW5zdGVhZCB0aGUgcHJvcGVyIGhvc3QgZGlyZWN0b3J5IHNlcGFyYXRvci4KCShDb3B5X0FMSV9GaWxlcyk6IE1ha2Ugc3VyZSB0aGF0IGFuIGFscmVhZHkgZXhpc3RpbmcgQUxJIGZpbGUgaW4gdGhlCglBTEkgY29weSBkaXIgaXMgd3JpdGFibGUsIGJlZm9yZSBkb2luZyB0aGUgY29weS4KCgkqIG1saWItdXRsLmFkcywgbWxpYi11dGwuYWRiOiAKCShHY2MpOiBJZiBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nLCBwdXQgdGhlIGxpc3Qgb2Ygb2JqZWN0CglmaWxlcyBpbiBhIHJlc3BvbnNlIGZpbGUsIGlmIHRoaXMgaXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybS4KCShBcik6IElmIGludm9jYXRpb24gb2YgdGhlIGFyY2hpdmUgYnVpbGRlciBpcyBhbGxvd2VkIHRvIGJlIGRvbmUgaW4KCWNodW5rcyBhbmQgYnVpbGRpbmcgaXQgaW4gb25lIHNob3Qgd291bGQgZ28gYWJvdmUgYW4gT1MgZGVwZW5kZW50CglsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgb24gdGhlIGNvbW1hbmQgbGluZSwgYnVpbGQgdGhlIGFyY2hpdmUKCWluIGNodW5rcy4KCjIwMDctMDYtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogb3NpbnRlLWMuYWRzLCBvc2ludC1jLmFkYiAoU2V0X0xpYnJhcnlfSW5mb19OYW1lKTogRmFpbCBpZiBiYXNlIG5hbWUKCW9mIHNwZWNpZmllZCBvYmplY3QgZmlsZSBpcyBub3QgZXF1YWwgdG8gYmFzZSBuYW1lIG9mIHNvdXJjZS4KCjIwMDctMDYtMDYgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDMuYWRiIChQcm9jZXNzX0Z1bGxfVmlldyk6IFByb3BhZ2F0ZSB0aGUgQ1BQX0NsYXNzIGF0dHJpYnV0ZSB0bwoJdGhlIGZ1bGwgdHlwZSBkZWNsYXJhdGlvbi4KCShBbmFseXplX0NvbXBvbmVudF9EZWNsYXJhdGlvbik6IEFkZCBsb2NhbCB2YXJpYWJsZSBFIHRvIGNhcHR1cmUgdGhlCglpbml0aWFsaXphdGlvbiBleHByZXNzaW9uIG9mIHRoZSBkZWNsYXJhdGlvbi4gUmVwbGFjZSB0aGUgb2NjdXJlbmNlcyBvZgoJRXhwcmVzc2lvbiAoTikgd2l0aCBFLgoJKE9LX0Zvcl9MaW1pdGVkX0luaXRfSW5fMDUpOiBBbGxvdyBpbml0aWFsaXphdGlvbiBvZiBjbGFzcy13aWRlCglsaW1pdGVkIGludGVyZmFjZSBvYmplY3Qgd2l0aCBhIGZ1bmN0aW9uIGNhbGwuCgkoQXJyYXlfVHlwZV9EZWNsYXJhdGlvbik6IElmIHRoZSBkZWNsYXJhdGlvbiBsYWNrcyBzdWJ0eXBlIG1hcmtzIGZvcgoJaW5kaWNlcywgY3JlYXRlIGEgc2ltcGxlIGluZGV4IGxpc3QgdG8gcHJldmVudCBjYXNjYWRlZCBlcnJvcnMuCgkoSXNfTnVsbF9FeHRlbnNpb24pOiBJZ25vcmUgaW50ZXJuYWwgY29tcG9uZW50cyBjcmVhdGVkIGZvciBzZWNvbmRhcnkKCXRhZ3Mgd2hlbiBjaGVja2luZyB3aGV0aGVyIGEgcmVjb3JkIGV4dGVuc2lvbiBpcyBhIG51bGwgZXh0ZW5zaW9uLgoJKENoZWNrX0Fic3RyYWN0X0ludGVyZmFjZXMpOiBBZGQgbWlzc2luZyBzdXBwb3J0IGZvciBpbnRlcmZhY2Ugc3VidHlwZXMKCWFuZCBnZW5lcmljIGZvcm1hbHMuCgkoRGVyaXZlZF9UeXBlX0RlY2xhcmF0aW9uKTogQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgaW50ZXJmYWNlIHN1YnR5cGVzCglhbmQgZ2VuZXJpYyBmb3JtYWxzLgoJKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogSWYgYW4gaW5pdGlhbGl6YXRpb24gZXhwcmVzc2lvbiBpcwoJcHJlc2VudCwgdHJhdmVyc2UgaXRzIHN1YnRyZWUgYW5kIG1hcmsgYWxsIGFsbG9jYXRvcnMgYXMgc3RhdGljCgljb2V4dGVuc2lvbnMuCgkoQWRkX0ludGVyZmFjZV9UYWdfQ29tcG9uZW50KTogV2hlbiBsb29raW5nIGZvciBjb21wb25lbnRzIHRoYXQgbWF5IGJlCglzZWNvbmRhcnkgdGFncywgaWdub3JlIHByYWdtYXMgdGhhdCBjYW4gYXBwZWFyIHdpdGhpbiBhIHJlY29yZAoJZGVjbGFyYXRpb24uCgkoQ2hlY2tfQWJzdHJhY3RfT3ZlcnJpZGluZyk6IGFuIGluaGVyaXRlZCBmdW5jdGlvbiB0aGF0IGRpc3BhdGNoZXMgb24KCXJlc3VsdCBkb2VzIG5vdCBuZWVkIHRvIGJlIG92ZXJyaWRlbiBpZiB0aGUgY29udHJvbGxpbmcgdHlwZSBpcyBhIG51bGwKCWV4dGVuc2lvbi4KCShNZW50aW9uc19UKTogSGFuZGxlIHByb3Blcmx5IGEgJ2NsYXNzIGF0dHJpYnV0ZSBpbiBhbiBhbm9ueW1vdXMgYWNjZXNzCgljb21wb25lbnQgZGVjbGFyYXRpb24sIHdoZW4gdGhlIHByZWZpeCBpcyBhbiBleHBhbmRlZCBuYW1lLgoJKEluaGVyaXRfQ29tcG9uZW50KTogSWYgdGhlIGRlcml2YXRpb24gaXMgZm9yIGEgcHJpdmF0ZSBleHRlbnNpb24sCglpbmhlcml0ZWQgY29tcG9uZW50cyByZW1haW4gdmlzaWJsZSBhbmQgdGhlaXIgZWtpbmQgc2hvdWxkIG5vdCBiZSBzZXQKCXRvIFZvaWQuCgkoRmluZF9UeXBlX09mX09iamVjdCk6IEluIHRoZSBjYXNlIG9mIGFuIGFjY2VzcyBkZWZpbml0aW9uLCBhbHdheXMgc2V0CglJc19Mb2NhbF9Bbm9ueW1vdXNfQWNjZXNzLiBXZSB3ZXJlIHByZXZpb3VzbHkgbm90IG1hcmtpbmcgdGhlIGFub255bW91cwoJYWNjZXNzIHR5cGUgb2YgYSByZXR1cm4gb2JqZWN0IGFzIGEgbG9jYWwgYW5vbnltb3VzIHR5cGUuCgkoTWFrZV9JbmRleCk6IFVzZSBBbWJpZ3VvdXNfQ2hhcmFjdGVyIHRvIHJlcG9ydCBhbWJpZ3VpdHkgb24gYSBkaXNjcmV0ZQoJcmFuZ2Ugd2l0aCBjaGFyYWN0ZXIgbGl0ZXJhbCBib3VuZHMuCgkoQ29uc3RyYWluX0FycmF5KTogSW5pdGlhbGl6ZSB0aGUgUGFja2VkX0FycmF5X1R5cGUgZmllbGQgdG8gRW1wdHkuCgkoQWNjZXNzX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBJbmRpY2F0ZSB0aGF0IHRoZSB0eXBlIGRlY2xhcmF0aW9uCglkZXBlbmRzIG9uIGFuIGluY29tcGxldGUgdHlwZSBvbmx5IGlmIHRoZSBpbmNvbXBsZXRlIHR5cGUgaXMgZGVjbGFyZWQKCWluIGFuIG9wZW4gc2NvcGUuCgkoQW5hbHl6ZV9TdWJ0eXBlX0RlY2xhcmF0aW9uKTogSGFuZGxlIHByb3Blcmx5IHN1YnR5cGVzIG9mCglzeW5jaHJvbml6ZWQgdHlwZXMgdGhhdCBhcmUgdGFnZ2VkLCBhbmQgdGhhdCBtYXkgYXBwZWFyIGFzIGdlbmVyaWMKCWFjdHVhbHMuCgkoQWNjZXNzX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBBbiBhbm9ueW1vdXMgYWNjZXNzIHRvIHN1YnByb2dyYW0gY2FuCglhcHBlYXIgYXMgYW4gYWNjZXNzIGRpc2NyaW1pbmFudCBpbiBhIHByaXZhdGUgdHlwZSBkZWNsYXJhdGlvbi4KCShBZGRfSW50ZXJmYWNlX1RhZ19Db21wb25lbnRzKTogQ29tcGxldGUgZGVjb3JhdGlvbiBvZiB0aGUgY29tcG9uZW50Cgljb250YWluaW5nIHRoZSB0YWcgb2YgYSBzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGUgYW5kIHRoZSBjb21wb25lbnQKCWNvbnRhaW5pbmcgdGhlIG9mZnNldCB0byB0aGUgYmFzZSBvZiB0aGUgb2JqZWN0ICh0aGlzIGxhdHRlciBjb21wb25lbnQKCWlzIG9ubHkgZ2VuZXJhdGVkIHdoZW4gdGhlIHBhcmVudCB0eXBlIGhhcyBkaXNjcmltaW5hbnRzIC0tYXMgZG9jdW1lbnRlZAoJaW4gdGhpcyByb3V0aW5lKS4KCShJbmhlcml0X0NvbXBvbmVudHMpOiBVc2UgdGhlIG5ldyBkZWNvcmF0aW9uIG9mIHRoZSB0YWcgY29tcG9uZW50cyB0bwoJaW1wcm92ZSB0aGUgY29uZGl0aW9uIHRoYXQgYXZvaWRzIGluaGVyaXRpbmcgdGhlIGNvbXBvbmVudHMgYXNzb2NpYXRlZAoJd2l0aCBzZWNvbmRhcnkgdGFncyBvZiB0aGUgcGFyZW50LgoJKEJ1aWxkX0Rpc2NyaW1pbmFudGVkX1N1YnR5cGUpOiBJbmRpY2F0ZSB0byB0aGUgYmFja2VuZCB0aGF0IHRoZQoJc2l6ZSBvZiByZWNvcmQgdHlwZXMgYXNzb2NpYXRlZCB3aXRoIGRpc3BhdGNoIHRhYmxlcyBpcyBrbm93biBhdAoJY29tcGlsZSB0aW1lLgoJKEFuYWx5emVfU3VidHlwZV9EZWNsYXJhdGlvbik6IFByb3BhZ2F0ZSBJc19JbnRlcmZhY2UgZmxhZyB3aGVuIG5lZWRlZC4KCShBbmFseXplX0ludGVyZmFjZV9EZWNsYXJhdGlvbik6IENoYW5nZSBzZXR0aW5nIG9mIElzX0xpbWl0ZWRfSW50ZXJmYWNlCgl0byBpbmNsdWRlIHRhc2ssIHByb3RlY3RlZCwgYW5kIHN5bmNocm9uaXplZCBpbnRlcmZhY2VzIGFzIGxpbWl0ZWQKCWludGVyZmFjZXMuCgkoUHJvY2Vzc19EaXNjcmltaW5hbnRzKTogUmVtb3ZlIHRoZSBzZXR0aW5nIG9mCglJc19Mb2NhbF9Bbm9ueW1vdXNfQWNjZXNzIG9uIHRoZSB0eXBlIG9mIChhbm9ueW1vdXMpIGFjY2VzcwoJZGlzY3JpbWluYW50cyBvZiBub25saW1pdGVkIHR5cGVzLgoJKEFuYWx5emVfSW50ZXJmYWNlX1R5cGVfRGVjbGFyYXRpb24pOiBDb21wbGV0ZSB0aGUgZGVjb3JhdGlvbiBvZiB0aGUKCWNsYXNzLXdpZGUgZW50aXR5IGl0IGlzIGlzIGFscmVhZHkgcHJlc2VudC4gVGhpcyBzaXR1YXRpb24gb2NjdXJzIGlmCgl0aGUgbGltaXRlZC12aWV3IGhhcyBiZWVuIHByZXZpb3VzbHkgYnVpbHQuCgkoRW51bWVyYXRpb25fVHlwZV9EZWNsYXJhdGlvbik6IEluaXRpYWxpemUgcHJvcGVybHkgdGhlIEVudW1fUG9zX1RvX1JlcAoJZmllbGQuCgkoQWRkX0ludGVyZmFjZV9UYWdfQ29tcG9uZW50cy5BZGRfVGFnKTogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlCglSZWxhdGVkX0ludGVyZmFjZS4KCjIwMDctMDYtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9hZ2dyLmFkYiAoUmVzb2x2ZV9SZWNvcmRfQWdncmVnYXRlKTogSWdub3JlIGludGVybmFsIGNvbXBvbmVudHMKCW9mIHRoZSB0eXBlIHRoYXQgc3BlY2lmeSB0aGUgcG9zaXRpb24gb2YgaW50ZXJmYWNlIHRhZ3Mgd2hlbiB0aGUgdHlwZQoJaW5oZXJpdHMgZGlzY3JpbWluYXRlZCBhcnJheSBjb21wb25lbnRzIGZyb20gdGhlIHBhcmVudCB0eXBlLgoJSWYgYSBjb21wb25lbnQgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIGJveCwgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBhCglkZWZhdWx0IGV4cHJlc3Npb24gaW4gaXRzIGRlY2xhcmF0aW9uIGJlZm9yZSB1c2luZyBpdHMgZGVmYXVsdAoJaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlLgoJKFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZSk6IElmIGEgY29tcG9uZW50IGlzIGJveC1pbml0aWFsaXplZCwgYW5kIHRoZQoJY29tcG9uZW50IHR5cGUgaGFzIGEgZGlzY3JpbWluYW50cywgY3JlYXRlIGEgcGFydGlhbCBhZ2dyZWdhdGUgZm9yIGl0CglieSBjb3B5aW5nIHRoZSBkaXNjcmltaW5hbnRzIG9mIHRoZSBjb21wb25lbnQgc3VidHlwZS4KCVJlamVjdCBhdHRlbXB0IHRvIGluaXRpYWxpemUgYSBkaXNjcmltaW5hbnQgd2l0aCBhIGJveC4KCShBcnJheV9BZ2dyX1N1YnR5cGUpOiBJbmRpY2F0ZSB0byB0aGUgYmFja2VuZCB0aGF0IHRoZSBzaXplIG9mIGFycmF5cwoJYXNzb2NpYXRlZCB3aXRoIGRpc3BhdGNoIHRhYmxlcyBpcyBrbm93biBhdCBjb21waWxlIHRpbWUuCgkoR2V0X1ZhbHVlKTogSWYgYW4gYXNzb2NpYXRpb24gaW4gYSByZWNvcmQgYWdncmVnYXRlIGhhcyBhIGJveAoJYXNzb2NpYXRpb24sIGFuZCB0aGUgY29ycmVzcG9uZGluZyByZWNvcmQgY29tcG9uZW50IGhhcyBhIGRlZmF1bHQKCWV4cHJlc3Npb24sIGFsd2F5cyBjb3B5IHRoZSBkZWZhdWx0IGV4cHJlc3Npb24sIGV2ZW4gd2hlbiB0aGUKCWFzc29jaWF0aW9uIGhhcyBhIHNpbmdsZSBjaG9pY2UsIGluIG9yZGVyIHRvIGNyZWF0ZSBhIHByb3BlcgoJYXNzb2NpYXRpb24gZm9yIHRoZSBleHBhbmRlZCBhZ2dyZWdhdGUuCgoyMDA3LTA2LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBwYXItY2gxMi5hZGIgKFBfR2VuZXJpY19Bc3NvY2lhdGlvbnMpOiBUaGUgc291cmNlIHBvc2l0aW9uIG9mIGFuCglPdGhlcnMgYXNzb2NpYXRpb24gaXMgdGhhdCBvZiB0aGUgb3RoZXJzIGtleXdvcmQsIG5vdCB0aGF0IG9mIHRoZSB0b2tlbgoJdGhhdCBmb2xsb3dzIHRoZSBib3guCgkoUF9Gb3JtYWxfVHlwZV9EZWZpbml0aW9uKTogSGFuZGxlIGZvcm1hbCBhY2Nlc3MgdHlwZXMgdGhhdCBjYXJyeSBhCglub3QgbnVsbCBpbmRpY2F0b3IuCgoJKiBwYXItY2gzLmFkYiAoUF9Lbm93bl9EaXNjcmltaW5hbnRfUGFydF9PcHQsIFBfQ29tcG9uZW50X0l0ZW1zKTogSWYKCW11bHRpcGxlIGlkZW50aWZpZXIgYXJlIHByZXNlbnQsIHNhdmUgU2Nhbl9TdGF0ZSBiZWZvcmUgc2Nhbm5pbmcgdGhlCgljb2xvbiwgdG8gZW5zdXJlIHRoYXQgc2VwYXJhdGUgdHJlZXMgYXJlIGNvbnN0cnVjdGVkIGZvciBlYWNoCglkZWNsYXJhdGlvbi4KCShQX0lkZW50aWZpZXJfRGVjbGFyYXRpb25zKTogRm9yIG9iamVjdCBkZWNsYXJhdGlvbiwgc2V0IG5ldyBmbGFnCglIYXNfSW5pdF9FeHByZXNzaW9uIGlmIGluaXRpYWxpemF0aW9uIGV4cHJlc3Npb24gcHJlc2VudC4KCShQX051bGxfRXhjbHVzaW9uKTogUHJvcGVybHkgZGlhZ25vc2UgTk9UIE5VTEwgY29taW5nIGJlZm9yZSBOVUxMCglJbXByb3ZlIE5PVCBOVUxMIGVycm9yIG1lc3NhZ2VzCgoyMDA3LTA2LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHBhci1jaDQuYWRiOiAoUF9OYW1lKTogUmVjb3ZlciBmcm9tIGxpdGVyYWwgdXNlZCBhcyBuYW1lCgoyMDA3LTA2LTA2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByZXAuYWRzLCBwcmVwLmFkYiAoRXhwcmVzc2lvbik6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBDb21wbGVtZW50ZWQsCglkZWZhdWx0ZWQgdG8gRmFsc2UuCglJbiB0aGUgIm5vdCIgY2FzZSwgcmVjdXJzaXZlIGNhbGwgd2l0aCBDb21wbGVtZW50ZWQgc2V0IHRvIFRydWUuCglEbyBub3QgYWxsb3cgIm9yIiBvciAiYW5kIiBvcGVyYXRvcnMgd2hlbiBDb21wbGVtZW50ZWQgaXMgVHJ1ZS4KCjIwMDctMDYtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLmFkYiAoUHJvamVjdF9FbXB0eSk6IEdpdmVzIGRlZmF1bHQgdmFsdWUgZm9yIG5ldyBjb21wb25lbnQKCUxpYmduYXJsX05lZWRlZAoKCSogcHJqLWF0dHIuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHByai1lbnYuYWRzLCBwcmotZW52LmFkYiAoRm9yX0FsbF9PYmplY3RfRGlycyk6IFJlZ2lzdGVyIG9iamVjdAoJZGlyZWN0b3J5IHVzaW5nIHRoZSB1bnRvdWNoZWQgY2FzaW5nLgoJKEZvcl9BbGxfU291cmNlX0RpcnMpOiBJZGVtLgoKCSogcHJqLWV4dC5hZHMsIHByai1leHQuYWRiIChTZWFyY2hfRGlyZWN0b3JpZXMpOiBOZXcgdGFibGUgdG8gcmVjb3JkCglkaXJlY3RvcmllcyBzcGVjaWZpZWQgd2l0aCBzd2l0Y2hlcyAtYVAuCgkoQWRkX1NlYXJjaF9Qcm9qZWN0X0RpcmVjdG9yeSk6IE5ldyBwcm9jZWR1cmUKCShJbml0aWFsaXplX1Byb2plY3RfUGF0aCk6IFB1dCB0aGUgZGlyZWN0b3JpZXMgaW4gdGFibGUKCVNlYXJjaF9EaXJlY3RvcmllcyBpbiB0aGUgcHJvamVjdCBzZWFyY2ggcGF0aC4KCShJbml0aWFsaXplX1Byb2plY3RfUGF0aCk6IEZvciBWTVMsIHRyYW5zZm9ybSBpbnRvIGNhbm9uaWNhbCBmb3JtIHRoZQoJcHJvamVjdCBwYXRoLgoKMjAwNy0wNi0wNiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcmVzdHJpY3QuYWRzLCByZXN0cmljdC5hZGIgKE5vX0V4Y2VwdGlvbl9IYW5kbGVyc19TZXQpOiBPbmx5IHJldHVybgoJdHJ1ZSBpZiBjb25maWd1cmFibGUgcnVuLXRpbWUgb3IgTm9fUnVuX1RpbWUgaXMgc2V0LgoJKFNldF9SZXN0cmljdGlvbik6IEF2b2lkIHNldHRpbmcgcmVzdHJpY3Rpb24gTm9fRWxhYm9yYXRpb25fQ29kZSB3aGVuCglwcm9jZXNzaW5nIGFuIHVuaXQgd2hpY2ggaXMgbm90IHRoZSBvbmUgYmVpbmcgY29tcGlsZWQuCgoyMDA3LTA2LTA2ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLWFyaXQ2NC5hZGI6IFJlcGxhY2UgU3lzdGVtLlB1cmVfRXhjZXB0aW9ucyBieSBBZGEgMDUgc3ludGF4LgoJUmVwbGFjZSBVQyBieSBBZGEuVUMKCgkqIHMtYml0b3BzLmFkYjogR2V0IHJpZCBvZiBTeXN0ZW0uUHVyZV9FeGNlcHRpb25zLgoJUmVwbGFjZSBVQyBieSBBZGEuVUMKCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2NuZy5hZGI6IChDaGVja19FbmRfT2ZfTGluZSk6IERlYWwgd2l0aCB2ZXJ5IGxvbmcgbGluZXMKCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtLmFkcywgc2VtLmFkYiAoU2VtYW50aWNzKTogU2F2ZSBhbmQgcmVzdG9yZSBHbG9iYWxfRGlzY2FyZF9OYW1lcwoJUmVtb3ZlIG5vIGxvbmdlciB1c2VkIG5vZGVzLgoKMjAwNy0wNi0wNiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEwLmFkcywgc2VtX2NoMTAuYWRiIChBbmFseXplX0NvbXBpbGF0aW9uX1VuaXQpOiBEaXNhYmxlIGNoZWNrCglvbiBvYnNvbGVzY2VudCB3aXRoZWQgdW5pdCBpbiBjYXNlIG9mIGxpbWl0ZWQtd2l0aGVkIHVuaXRzLgoJKEFuYWx5emVfQ29tcGlsYXRpb25fVW5pdCk6IEFkZCBndWFyZCB0byBjb2RlIHRoYXQgcmVtb3ZlZCBhbgoJaW5zdGFudGlhdGlvbiBmcm9tIHZpc2liaWxpdHksIHRvIHByZXZlbnQgY29tcGlsZXIgYWJvcnRzIHdoZW4KCWluc3RhbnRpYXRpb24gaXMgYWJhbmRvbmVkIGVhcmx5IG9uLgoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IFJlY29nbml6ZSBhIGxpbWl0ZWQtd2l0aCBjbGF1c2Ugb24gdGhlCgljdXJyZW50IHVuaXQgYmVpbmcgYW5hbHl6ZWQsIGFuZCBEaXN0aW5ndWlzaCBsb2NhbCBpbmNvbXBsZXRlIHR5cGVzCglmcm9tIGxpbWl0ZWQgdmlld3Mgb2YgdHlwZXMgZGVjbGFyZWQgZWxzZXdoZXJlLgoJKEJ1aWxkX0xpbWl0ZWRfVmlld3MuRGVjb3JhdGVfVGFnZ2VkX1R5cGUpOiBBZGQgZG9jdW1lbnRhdGlvbgoJdG8gc3RhdGUgdGhhdCB0aGUgY2xhc3Mtd2lkZSBlbnRpdHkgaXMgc2hhcmVkIGJ5IHRoZSBsaW1pdGVkLXZpZXcKCWFuZCB0aGUgZnVsbC12aWV3LgoJKEFuYWx5emVfV2l0aF9DbGF1c2UpOiBJbXByb3ZlIHBsYWNlbWVudCBvZiBmbGFnIGZvciBjYXNlIG9mCgl1bmltcGxlbWVudGVkIHVuaXQuCgkoQW5hbHl6ZV9XaXRoX0NsYXVzZSk6IFJlY29nbml6ZSB1c2Ugb2YgR05BVC5FeGNlcHRpb25fVHJhY2VzIGluIGEKCW1hbm5lciBzaW1pbGFyIHRvIEdOQVQuQ3VycmVudF9FeGNlcHRpb24uIFRoaXMgaXMgYSB2aW9sYXRpb24gb2YKCXJlc3RyaWN0aW9uIChOb19FeGNlcHRpb25fUHJvcGFnYXRpb24pLCBhbmQgYWxzbyBpbmhpYml0cyB0aGUKCW9wdGltaXphdGlvbiBvZiBsb2NhbCByYWlzZSB0byBnb3RvLgoJKEFuYWx5emVfV2l0aF9DbGF1c2UpOiBDaGVjayBmb3IgTW9zdF9SZWNlbnRfRXhjZXB0aW9uIGJlaW5nIHdpdGgnZWQsCglhbmQgaWYgc28gc2V0IE1vc3RfUmVjZW50X0V4Y2VwdGlvbl9Vc2VkIGZsYWcgaW4gT3B0LCBhbmQgYWxzbyBjaGVjawoJZm9yIHZpb2xhdGlvbiBvZiByZXN0cmljdGlvbiBOb19FeGNlcHRpb25fUHJvcGFnYXRpb24uCgoyMDA3LTA2LTA2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMS5hZGIgKEFuYWx5emVfRXhjZXB0aW9uX0hhbmRsZXJzKTogQWRkIGJhcnJpZXIgdG8gYXZvaWQgdGhlCgl1c2Ugb2YgZW50aXR5IEV4Y2VwdGlvbl9PY2N1cnJlbmNlIGlmIGl0IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlCgl0YXJnZXQgcnVuLXRpbWUuCgoJKiBzZW1fY2g5LmFkYiAoQW5hbHl6ZV9Qcm90ZWN0ZWRfVHlwZSwgQW5hbHl6ZV9UYXNrX1R5cGUpOiBXaGVuCgljb25jdXJyZW50IHR5cGVzIGFyZSBkZWNsYXJlZCB3aXRoaW4gYW4gQWRhIDIwMDUgZ2VuZXJpYywgYnVpbGQgdGhlaXIKCWNvcnJlc3BvbmRpbmcgcmVjb3JkIHR5cGVzIHNpbmNlIHRoZXkgYXJlIG5lZWRlZCBmb3Igb3ZlcnJpZGluZy1yZWxhdGVkCglzZW1hbnRpYyBjaGVja3MuCgkoQW5hbHl6ZV9Qcm90ZWN0ZWRfVHlwZSk6IFJlYXJyYW5nZSBhbmQgc2ltcGxpZnkgY29kZSBmb3IgdGVzdGluZyB0aGF0IGEKCXByb3RlY3RlZCB0eXBlIGRvZXMgbm90IGltcGxlbWVudCBhIHRhc2sgaW50ZXJmYWNlIG9yIGEgbm9ubGltaXRlZAoJaW50ZXJmYWNlLgoJKEFuYWx5emVfVGFza19UeXBlKTogUmVhcnJhbmdlIGFuZCBzaW1wbGlmeSBjb2RlIGZvciB0ZXN0aW5nIHRoYXQgYSB0YXNrCgl0eXBlIGRvZXMgbm90IGltcGxlbWVudCBhIHByb3RlY3RlZCBpbnRlcmZhY2Ugb3IgYSBub25saW1pdGVkIGludGVyZmFjZS4KCShTaW5nbGVfVGFza19EZWNsYXJhdGlvbiwgU2luZ2xlX1Byb3RlY3RlZF9EZWNsYXJhdGlvbik6IHVzZSBvcmlnaW5hbAoJZW50aXR5IGZvciB2YXJpYWJsZSBkZWNsYXJhdGlvbiwgdG8gZW5zdXJlIHRoYXQgZGVidWdnaW5nIGluZm9ybWF0aW9uCglpcyBjb3JyZWN0eSBnZW5lcmF0ZWQuCgkoQW5hbHl6ZV9Qcm90ZWN0ZWRfVHlwZSwgQW5hbHl6ZV9UYXNrX1R5cGUpOiBEbyBub3QgY2FsbCBleHBhbmRlcgoJcm91dGluZXMgaWYgdGhlIGV4cGFuZGVyIGlzIG5vdCBhY3RpdmUuCgkoQW5hbHl6ZV9UYXNrX0JvZHkpOiBNYXJrIGFsbCBoYW5kbGVycyB0byBzdG9wIG9wdGltaXphdGlvbiBvZiBsb2NhbAoJcmFpc2UsIHNpbmNlIHNwZWNpYWwgdGhpbmdzIGhhcHBlbiBmb3IgdGFzayBleGNlcHRpb24gaGFuZGxlcnMuCgoJKiBzZW1fZGlzcC5hZGIgKENoZWNrX0NvbnRyb2xsaW5nX0Zvcm1hbHMpOiBBZGQgdHlwZSByZXRyaWV2YWwgZm9yCgljb25jdXJyZW50IHR5cGVzIGRlY2xhcmVkIHdpdGhpbiBhIGdlbmVyaWMuCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogRG8gbm90IGVtaXQgd2FybmluZyBhYm91dCBsYXRlIGludGVyZmFjZQoJb3BlcmF0aW9ucyBpbiB0aGUgY29udGV4dCBvZiBhbiBpbnN0YW5jZS4KCShDaGVja19EaXNwYXRjaGluZ19DYWxsKTogUmVtb3ZlIHJlc3RyaWN0aW9uIGFnYWluc3QgY2FsbGluZyBhCglkaXNwYXRjaGluZyBvcGVyYXRpb24gd2l0aCBhIGxpbWl0ZWQgY29udHJvbGxpbmcgcmVzdWx0LgoJKENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IFJlcGxhY2UgY2FsbHMgdG8gRmlsbF9EVF9FbnRyeSBhbmQKCVJlZ2lzdGVyX0ludGVyZmFjZV9EVF9FbnRyeSBieSBjYWxscyB0byBSZWdpc3Rlcl9QcmltaXRpdmUuCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfRm9ybWFscyk6IEhhbmRsZSBwcm9wZXJseSBhIGZ1bmN0aW9uIHdpdGggYQoJY29udHJvbGxpbmcgYWNjZXNzIHJlc3VsdC4KCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEzLmFkYiAoQW5hbHl6ZV9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UsIGNhc2UgU3RyZWFtX1NpemUpOgoJQ2hlY2sgZm9yIHJlc3RyaWN0aW9uIE5vX0ltcGxlbWVudGF0aW9uX0F0dHJpYnV0ZXMgaWYgaW4gQWRhIDk1IG1vZGUuCgkoU3RvcmFnZV9Qb29sKTogRG8gbm90IGNyYXNoIHdoZW4gUkVfU3RhY2tfQm91bmRlZF9Qb29sIGlzIG5vdCBhdmFpbGFibGUKCShBbmFseXplX0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZSBbRXh0ZXJuYWxfVGFnXSk6IEdlbmVyYXRlIGVycm9yCgltZXNzYWdlIHdoZW4gdXNpbmcgYSBWTSwgc2luY2UgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZC4KCShBbmFseXplX1JlY29yZF9SZXByZXNlbnRhdGlvbl9DbGF1c2UpOiBHaXZlIHVucmVwcGVkIGNvbXBvbmVudCB3YXJuaW5ncwoKCSogdXNhZ2UuYWRiOiBBZGQgbmV3IHdhcm5pbmcgZm9yIHJlbmFtaW5nIG9mIGZ1bmN0aW9uIHJldHVybiBvYmplY3RzCglJbmRpY2F0ZSB0aGF0IC1nbmF0d3AgYW5kIC1nbmF0d1AgY29uY2VybiBmcm9udC1lbmQgaW5saW5pbmcKCUFkZCBsaW5lIGZvciAtZ25hdHlnCglBZGQgdXNhZ2UgaW5mb3JtYXRpb24gZm9yIC1nbmF0dy5jL0MKCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDUuYWRiCgkoRmluZF9WYXIpOiBEbyBub3QgY29uc2lkZXIgZnVuY3Rpb24gY2FsbCBpbiB0ZXN0IGZvciBpbmZpbml0ZSBsb29wCgl3YXJuaW5nIGlmIHdhcm5pbmdzIHNldCBvZmYgZm9yIGZ1bmN0aW9uIGVudGl0eS4KCShPbmVfQm91bmQpOiBEbyBub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGZvciBhIGxvb3AgYm91bmQgaWYgaXQgaXMgYQoJY2hhcmFjdGVyIGxpdGVyYWwuCgkoQW5hbHl6ZV9Bc3NpZ25tZW50KTogVHJhdmVyc2UgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGFuZAoJbWFyayBhbGwgYWxsb2NhdG9ycyBhcyBzdGF0aWMgY29leHRlbnNpb25zLgoJKEFuYWx5emVfQXNzaWdubWVudCk6IEV4ZW1wdCBhc3NpZ25tZW50cyBpbnZvbHZpbmcgYSBkaXNwYXRjaGluZyBjYWxsCgl0byBhIGZ1bmN0aW9uIHdpdGggYSBjb250cm9sbGluZyBhY2Nlc3MgcmVzdWx0IGZyb20gdGhlIGNoZWNrIHJlcXVpcmluZwoJdGhlIHRhcmdldCB0byBiZSBjbGFzcy13aWRlLgoKMjAwNy0wNi0wNiAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX3Jlcy5hZHMsIHNlbV9yZXMuYWRiIChQcm9jZXNzX0FsbG9jYXRvcik6IERvIG5vdCBwcm9wYWdhdGUgdGhlCgljaGFpbiBvZiBjb2V4dGVuc2lvbnMgd2hlbiBhbiBhbGxvY2F0b3Igc2VydmVzIGFzIHRoZSByb290IG9mIHN1Y2ggYQoJY2hhaW4uCgkoUHJvcGFnYXRlX0NvZXh0ZW5zaW9ucyk6IFJlbW92ZSB0aGUgdGVzdCBmb3IgdGhlIHJvb3QgYmVpbmcgYW4KCWFsbG9jYXRvci4KCShSZXNvbHZlX0FsbG9jYXRvcik6IEFkZCBjb25kaXRpb24gdG8gZW5zdXJlIHRoYXQgYWxsIGZ1dHVyZSBkZWNvcmF0aW9uCglvY2N1cnMgb24gYW4gYWxsb2NhdG9yIG5vZGUuIEFkZCBwcm9jZXNzaW5nIGFuZCBjbGVhbnVwIGZvciBzdGF0aWMKCWNvZXh0ZW5zaW9ucy4KCShWYWxpZF9Db252ZXJzaW9uKTogSWYgdGhlIG9wZXJhbmQgdHlwZSBpcyB0aGUgbGltaXRlZCB2aWV3IG9mIGEKCWNsYXNzLXdpZGUgdHlwZSwgdXNlIHRoZSBub24tbGltaXRlZCB2aWV3IGlzIGF2YWlsYWJsZSB0byBkZXRlcm1pbmUKCWxlZ2FsaXR5IG9mIG9wZXJhdGlvbi4KCShBbWJpZ3VvdXNfQ2hhcmFjdGVyKTogbW92ZSB0byBzcGVjLCBmb3IgdXNlIGVsc2V3aGVyZS4KCShBbWJpZ3VvdXNfQ2hhcmFjdGVyKTogSGFuZGxlIFdpZGVfV2lkZV9DaGFyYWN0ZXIgaW4gQWRhIDIwMDUgbW9kZQoJKFJlc29sdmVfUmFuZ2UpOiBEaWFnbm9zZSBwcm9wZXJseSBhbiBhbWJpZ3VvdXMgcmFuZ2Ugd2hvc2UgYm91bmRzIGFyZQoJY2hhcmFjdGVyIGxpdGVyYWxzLgoJKFJlc29sdmVfQXJpdGhtZXRpY19PcCk6IENhbGwgQWN0aXZhdGVfRGl2aXNpb25fQ2hlY2sgaW5zdGVhZCBvZiBzZXR0aW5nCglEb19EaXZpc2lvbl9DaGVjayBmbGFnIGV4cGxpY2l0bHkuCgkoUmVzb2x2ZV9BY3R1YWxzKTogSWYgdGhlIGFjdHVhbCBpcyBvZiBhIHN5bmNocm9uaXplZCB0eXBlLCBhbmQgdGhlCglmb3JtYWwgaXMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVjb3JkIHR5cGUsIHRoaXMgaXMgYSBjYWxsIHRvIGEKCXByaW1pdGl2ZSBvcGVyYXRpb24gb2YgdGhlIHR5cGUsIHRoYXQgaXMgZGVjbGFyZWQgb3V0c2lkZSBvZiB0aGUgdHlwZTsKCXRoZSBhY3R1YWwgbXVzdCBiZSB1bmNoZWNrZWQtY29udmVydGVkIHRvIHRoZSB0eXBlIG9mIHRoZSBhY3R1YWwKCShSZXNvbHZlX0NhbGwpOiBLaWxsIGFsbCBjdXJyZW50IHZhbHVlcyBmb3IgYW55IHN1YnByb2dyYW0gY2FsbCBpZgoJZmxhZyBTdXBwcmVzc19WYWx1ZV9UcmFja2luZ19Pbl9DYWxsIGlzIHNldC4KCShSZXNvbHZlX1R5cGVfQ29udmVyc2lvbik6IEdlbmVyYXRlIGVycm9yIG1lc3NhZ2UgdGhlIHRoZSBvcGVyYW5kCglvciB0YXJnZXQgb2YgaW50ZXJmYWNlIGNvbnZlcnNpb25zIGNvbWUgZnJvbSBhIGxpbWl0ZWQgdmlldy4KCShDaGVja19JbmZpbml0ZV9SZWN1cnNpb24pOiBJZ25vcmUgZ2VuZXJhdGVkIGNhbGxzCgkoQ2hlY2tfQWxsb2NhdG9yX0Rpc2NyaW1fQWNjZXNzaWJpbGl0eSk6IE5ldyBwcm9jZWR1cmUgZm9yIGNoZWNraW5nCgl0aGF0IGFuIGV4cHJlc3Npb24gdGhhdCBjb25zdHJhaW5zIGFuIGFjY2VzcyBkaXNjcmltaW5hbnQgaW4gYW4KCWFsbG9jYXRvciBkb2VzIG5vdCBkZW5vdGUgYW4gb2JqZWN0IHdpdGggYSBkZWVwZXIgbGV2ZWwgdGhhbiB0aGUKCWFsbG9jYXRvcidzIGFjY2VzcyB0eXBlLgoJKFJlc29sdmVfQWxsb2NhdG9yKTogSW4gdGhlIGNhc2Ugb2YgYW4gYWxsb2NhdG9yIGluaXRpYWxpemVkIGJ5IGFuCglhZ2dyZWdhdGUgb2YgYSBkaXNjcmltaW5hdGVkIHR5cGUsIGNoZWNrIHRoYXQgYXNzb2NpYXRpb25zIGZvciBhbnkKCWFjY2VzcyBkaXNjcmltaW5hbnRzIHNhdGlzZnkgYWNjZXNzaWJpbGl0eSByZXF1aXJlbWVudHMgYnkgY2FsbGluZwoJQ2hlY2tfQWxsb2NhdG9yX0Rpc2NyaW1fQWNjZXNzaWJpbGl0eS4KCShSZXNvbHZlX0VxdWFsaXR5X09wKTogSGFuZGxlIGNvbXBhcmlzb25zIG9mIGFub255bW91cyBhY2Nlc3MgdG8KCXN1YnByb2dyYW0gdHlwZXMgaW4gdGhlIHNhbWUgZmFzaGlvbiBhcyBvdGhlciBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzLgoJKFJlc29sdmVfQ29uY2F0ZW5hdGlvbl9BcmcpOiBSZW1vdmUgaW5pdGlhbCBjaGFyYWN0ZXIgJ1wnIGluIGFuIGVycm9yCgltZXNzYWdlIHRoYXQgaXMgbm90IGEgY29udGludWF0aW9uIG1lc3NhZ2UuCgkoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBBZGQgbWlzc2luZyBzdXBwb3J0IGZvciBjb252ZXJzaW9uIHRvCglpbnRlcmZhY2UgdHlwZS4KCShSZXNvbHZlX0FjdHVhbHMpOiBJbnRyb2R1Y2UgYSB0cmFuc2llbnQgc2NvcGUgYXJvdW5kIHRoZSBjYWxsIGlmIGFuCglhY3R1YWwgaXMgYSBjYWxsIHRvIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGEgbGltaXRlZCB0eXBlLCBiZWNhdXNlIHRoZQoJcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgZmluYWxpemVkIGFmdGVyIHRoZSBjYWxsLgoJKFJlc29sdmVfQWN0dWFscyk6IElmIHRoZSBjYWxsIHdhcyBnaXZlbiBpbiBwcmVmaXggbm90YXRpb25zLCBjaGVjawoJd2hldGhlciBhbiBpbXBsaWNpdCAnQWNjZXNzIHJlZmVyZW5jZSBvciBpbXBsaWNpdCBkZXJlZmVyZW5jZSBtdXN0IGJlCglhZGRlZCB0byBtYWtlIHRoZSBhY3R1YWwgY29uZm9ybSB0byB0aGUgY29udHJvbGxpbmcgZm9ybWFsLgoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNy5hZGIgKENoZWNrX0Fub255bW91c19BY2Nlc3NfVHlwZXMpOiBGaXggZXJyb3IgZm9yIG51bGwgYm9keQoJKERlcml2ZV9Jbmhlcml0ZWRfUHJpdmF0ZV9TdWJwcm9ncmFtKTogQ29kZSBjbGVhbnVwLiBJbiBjYXNlIG9mIGV4cGxpY2l0CglvdmVycmlkaW5nIG9mIGFuIGluaGVyaXRlZCBwcml2YXRlIHN1YnByb2dyYW0gbm93IHRoZXJlIGlzIG5vIG5lZWQgdG8KCWluaGVyaXQgaXRzIGRpc3BhdGNoaW5nIHNsb3QgYW5kIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgZGlzcGF0Y2ggdGFibGUuCglTZXRfQWxsX0RUX1Bvc2l0aW9uIG5vdyBlbnN1cmVzIHRoYXQgdGhlIHNhbWUgc2xvdCBpcyBub3cgYXNzaWduZWQgdG8KCWJvdGggZW50aXRpZXMuIFRoaXMgaXMgcmVxdWlyZWQgdG8gc3RhdGljYWxseSBidWlsZCB0aGUgZGlzcGF0Y2ggdGFibGUuCgkoRGVjbGFyZV9Jbmhlcml0ZWRfUHJpdmF0ZV9TdWJwcm9ncmFtcyk6IFJld3JpdGVuIHRvIGF2b2lkIHRoZSBuZWVkCglvZiBjYWxsaW5nIFNldF9BbGxfRFRfUG9zaXRpb24gdG8gcmUtZXZhbHVhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZQoJZW50cmllcyBpbiB0aGUgZGlzcGF0Y2ggdGFibGUuIFN1Y2ggcmVldmFsdWF0aW9uIGlzIG5vdCBkZXNpcmVkIGlmCgl0aGUgdGFnZ2VkIHR5cGUgaXMgYWxyZWFkeSBmcm96ZW4uCgoyMDA3LTA2LTA2ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYiAoTWF5X0JlX0x2YWx1ZSk6IEEgcHJlZml4IG9mIGFuIGF0dHJpYnV0ZQoJcmVmZXJlbmNlIGFjdHMgYXMgYW4gbHZhbHVlIHdoZW4gdGhlIGF0dHJpYnV0ZSBuYW1lIG1vZGlmaWVzIHRoZSBwcmVmaXgKCShJc19Db2V4dGVuc2lvbl9Sb290KTogTmV3IHJvdXRpbmUuCgkoTWFya19TdGF0aWNfQ29leHRlbnNpb25zKTogTmV3IHJvdXRpbmUuCgkoVHlwZV9BY2Nlc3NfTGV2ZWwpOiBSZXZpc2UgY29kZSBmb3IgY2hlY2tpbmcgdGhlIGxldmVsIG9mIHRoZQoJYW5vbnltb3VzIGFjY2VzcyB0eXBlIG9mIGEgcmV0dXJuIG9iamVjdC4KCShTYWZlX1RvX0NhcHR1cmVfVmFsdWUpOiBOb3Qgc2FmZSB0byBjYXB0dXJlIGlmIEFkZHJlc3NfVGFrZW4KCShNYXRjaGVzX1ByZWZpeGVkX1ZpZXdfUHJvZmlsZSk6IFJlbW92ZSB0aGUgbm8gbG9uZ2VyIG5lY2Vzc2FyeQoJcmV0cmlldmFsIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRyb2xsaW5nIHJlY29yZCB0eXBlLgoJKEZpbmRfT3ZlcnJpZGRlbl9TeW5jaHJvbml6ZWRfUHJpbWl0aXZlKTogQ29kZSBjbGVhbnVwLiBBZGQgaGFuZGxpbmcgb2YKCWNvbmN1cnJlbnQgdHlwZXMgZGVjbGFyZWQgd2l0aGluIGEgZ2VuZXJpYyBhcyB3ZWxsIGFzIGNsYXNzIHdpZGUgdHlwZXMuCglFbWl0IGEgbW9kZSBpbmNvbXBhdGliaWxpdHkgZXJyb3Igd2hlbmV2ZXIgYSBwcm90ZWN0ZWQgZW50cnkgb3Igcm91dGluZQoJb3ZlcnJpZGUgYW4gaW50ZXJmYWNlIHJvdXRpbmUgd2hvc2UgZmlyc3QgcGFyYW1ldGVyIGlzIG5vdCBvZiBtb2RlCgkib3V0IiwgImluIG91dCIgb3IgYWNjZXNzIHRvIHZhcmlhYmxlLgoJKE92ZXJyaWRlc19TeW5jaHJvbml6ZWRfUHJpbWl0aXZlKTogUmVuYW1lIHRvCglGaW5kX092ZXJyaWRkZW5fU3luY2hyb25pemVkX1ByaW1pdGl2ZS4KCShDb2xsZWN0X0ludGVyZmFjZV9Db21wb25lbnRzKTogTmV3IHN1YnByb2dyYW0gdGhhdCBjb2xsZWN0cyBhbGwgdGhlCgljb21wb25lbnRzIG9mIGEgdGFnZ2VkIHJlY29yZCBjb250YWluaW5nIHRhZ3Mgb2Ygc2Vjb25kYXJ5IGRpc3BhdGNoCgl0YWJsZXMuCgkoQWRkX0dsb2JhbF9EZWNsYXJhdGlvbik6IE5ldyBwcm9jZWR1cmUKCShBYnN0cmFjdF9JbnRlcmZhY2VfTGlzdCk6IEhhbmRsZSBwcm9wZXJseSB0aGUgY2FzZSBvZiBhIHN1YnR5cGUgb2YgYQoJcHJpdmF0ZSBleHRlbnNpb24uCgkoVHlwZV9BY2Nlc3NfTGV2ZWwpOiBJbiB0aGUgY2FzZSBvZiBhIHR5cGUgd2hvc2UgcGFyZW50IHNjb3BlIGlzIGEKCXJldHVybiBzdGF0ZW1lbnQsIGNhbGwgVHlwZV9BY2Nlc3NfTGV2ZWwgcmVjdXJzaXZlbHkgb24gdGhlIGVuY2xvc2luZwoJZnVuY3Rpb24ncyByZXN1bHQgdHlwZSB0byBkZXRlcm1pbmUgdGhlIGxldmVsIG9mIHRoZSByZXR1cm4gb2JqZWN0J3MKCXR5cGUuCgkoQnVpbGRfRWxhYm9yYXRpb25fRW50aXR5KTogQnVpbGQgbmFtZSBvZiBlbGFib3JhdGlvbiBlbnRpdHkgZnJvbSB0aGUKCXNjb3BlIGNoYWluIG9mIHRoZSBlbnRpdHksIHJhdGhlciB0aGFuIHRoZSB1bml0IG5hbWUgb2YgdGhlIGZpbGUgbmFtZS4KCShDaGVja19OZXN0ZWRfQWNjZXNzKTogTmV3IHByb2NlZHVyZS4KCShIYXNfVXBfTGV2ZWxfQWNjZXNzLCBTZXRfSGFzX1VwX0xldmVsX0FjY2Vzcyk6IE5ldyBwcm9jZWR1cmVzLgoJKEZpbmRfRGlyZWN0X05hbWUsIE5vdGVfUG9zc2libGVfTW9kaWZpY2F0aW9uKTogVXNlIENoZWNrX05lc3RlZF9BY2Nlc3MuCgkoR2V0X1JlbmFtZWRfRW50aXR5KTogVXRpbGl0eSByb3V0aW5lIGZvciBwZXJmb3JtaW5nIGNvbW1vbiBvcGVyYXRpb24KCW9mIGNoYXNpbmcgdGhlIFJlbmFtZWRfRW50aXR5IGZpZWxkIG9mIGFuIGVudGl0eS4KCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2VsYWIuYWRiIChDaGVja19BX0NhbGwpOiBTcGVjaWFsaXplIGVsYWJvcmF0aW9uIHdhcm5pbmdzIG9uCgllbGFib3JhdGlvbiBtb2RlbAoJKENoZWNrX0FfQ2FsbCk6IEFkZCBjaGVjayBmb3IgZW50cnkgY2FsbCB3aGljaCB3YXMgY2F1c2luZyBibG93dXAKCjIwMDctMDYtMDYgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiByYWlzZS1nY2MuYyAoX19nbmF0X2VoX3BlcnNvbmFsaXR5KTogVHdlYWsgdGhlIHNpZ25hdHVyZSBhbmQgYWRkCglzcGVjaWFsIGNvZGUgb24gaWE2NC12bXMgdG8gaGFuZGxlIG1ham9yIGluY29tcGF0aWJpbGl0aWVzIGJldHdlZW4gdGhlCglHQ0MgdW53aW5kaW5nIEFCSSBhbmQgdGhlIFZNUyBDb25kaXRpb24gSGFuZGxpbmcgRmFjaWxpdHksIGJvdGggY2FsbGluZwoJdGhpcyByb3V0aW5lIHdpdGggYSB2ZXJ5IGRpZmZlcmVudCBzZXQgb2YgYXJndW1lbnRzIGFuZCBleHBlY3RhdGlvbnMgb24KCXRoZSByZXR1cm4gdmFsdWUuCgoyMDA3LTA2LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc29ja2V0LmMgKF9fZ25hdF9jbG9zZV9zaWduYWxsaW5nX2ZkKTogTmV3IGZ1bmN0aW9uLgoJKF9fZ25hdF9zYWZlX2dldGhvc3RieWFkZHIsIF9fZ25hdF9zYWZlX2dldGhvc3RieW5hbWUsCglfX2duYXRfc2FmZV9nZXRzZXJ2YnluYW1lLCBfX2duYXRfc2FmZV9nZXRzZXJ2Ynlwb3J0KToKCU5ldyBzdXBwb3J0aW5nIGZ1bmN0aW9ucyBmb3IgdGFzayBzYWZlIE5ldGRiIG9wZXJhdGlvbnMuCgoyMDA3LTA2LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBhLWV4Y2VwdC0yMDA1LmFkcywgYS1leGNlcHQtMjAwNS5hZGIKCShSYWlzZV9Gcm9tX0NvbnRyb2xsZWRfT3BlcmF0aW9uKTogTmV3IHByb2NlZHVyZSBpbgoJKHByaXZhdGUgcGFydCBvZikgQWRhLkV4Y2VwdGlvbnMgKHN0YW5kYXJkIHJ1bnRpbWUgdmVyc2lvbikuIFVzZWQgdG8KCXByb3ZpZGUgaW5mb3JtYXRpb25hbCBleGNlcHRpb24gbWVzc2FnZSB3aGVuIFByb2dyYW1fRXJyb3IgaXMgcmFpc2VkIGFzCglhIHJlc3VsdCBvZiBhbiBBZGp1c3Qgb3IgRmluYWxpemUgb3BlcmF0aW9uIHByb3BhZ2F0aW5nIGFuIGV4Y2VwdGlvbi4KCShSbXNnXzI4KTogRml4IGRlc2NyaXB0aW9uIGZvciBFLjQoMTgpIGNoZWNrLgoJKFJhaXNlX0N1cnJlbnRfRXhjZXApOiBDYWxsIERlYnVnX1JhaXNlX0V4Y2VwdGlvbiBqdXN0IGJlZm9yZQoJcHJvcGFnYXRpb24gc3RhcnRzLCB0byBsZXQgZGVidWdnZXJzIGtub3cgYWJvdXQgdGhlIGV2ZW50IGluIGEgcmVsaWFibGUKCWZhc2hpb24uCglUYWtlIHRoZSBhZGRyZXNzIG9mIEUgYW5kIGRlcmVmZXJlbmNlIHRvIG1ha2Ugc3VyZSBpdCBpcyBob21lZCBvbiBzdGFjawoJYW5kIHByZXZlbnQgdGhlIHN0b3JlcyBmcm9tIGJlaW5nIGRlbGV0ZWQsIG5lY2Vzc2FyeSBmb3IgcHJvcGVyCglkZWJ1Z2dlciBiZWhhdmlvciBvbiAiYnJlYWsgZXhjZXB0aW9uIiBoaXRzLgoJKExvY2FsX1JhaXNlKTogTW92ZWQgdG8gU3lzdGVtLkV4Y2VwdGlvbnMKCgkqIHMtZmluaW1wLmFkYiAoUmFpc2VfRnJvbV9GaW5hbGl6ZSk6IENvZGUgdG8gY29uc3RydWN0IGFuIGFwcHJvcHJpYXRlCglleGNlcHRpb24gbWVzc2FnZSBmcm9tIHRoZSBjdXJyZW50IG9jY3VycmVuY2UgYW5kIHJhaXNlIFByb2dyYW1fRXJyb3IKCWhhcyBiZWVuIG1vdmVkIHRvIEFkYS5FeGNlcHRpb25zLlJhaXNlX0Zyb21fQ29udHJvbGxlZF9PcGVyYXRpb24uCgoyMDA3LTA2LTA2ICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtdGFwcm9iLmFkYiAoVW5sb2NrKTogQ2hhbmdlIHRoZSBjZWlsaW5nIHByaW9yaXR5IG9mIHRoZSB1bmRlcmx5aW5nCglsb2NrLCBpZiBuZWVkZWQuCgoJKiBzLXRhcHJvcC5hZHMgKFNldF9DZWlsaW5nKTogQWRkIHRoaXMgcHJvY2VkdXJlIHRvIGNoYW5nZSB0aGUgY2VpbGluZwoJcHJpb3JpdHkgYXNzb2NpYXRlZCB0byBhIGxvY2suCgoJKiBzLXRwb2Jlbi5hZGIgKFtWdWxuZXJhYmxlX11Db21wbGV0ZV9UYXNrLCBMb2NrX0VudHJpZXMpOiBSZWxheAoJYXNzZXJ0aW9uIHRvIHRha2UgaW50byBhY2NvdW50IGNhc2Ugb2Ygbm8gYWJvcnQgcmVzdHJpY3Rpb24uCgkoSW5pdGlhbGl6ZV9Qcm90ZWN0aW9uX0VudHJpZXMpOiBBZGQgaW5pdGlhbGl6YXRpb24gZm9yIHRoZSBmaWVsZAoJTmV3X0NlaWxpbmcgYXNzb2NpYXRlZCB0byB0aGUgcHJvdGVjdGVkIG9iamVjdC4KCShVbmxvY2tfRW50cmllcyk6IENoYW5nZSB0aGUgY2VpbGluZyBwcmlvcml0eSBvZiB0aGUgdW5kZXJseWluZyBsb2NrLCBpZgoJbmVlZGVkLgoKCSogcy1zb2xpdGEuYWRiIChHZXRfQ3VycmVudF9FeGNlcCk6IE1vdmVkIGJhY2sgdG8gcy10YXNpbmkvcy10YXJlc3QsCglzaW5jZSB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHNldCBjb25zaXN0ZW50bHkgd2l0aCBVcGRhdGVfRXhjZXB0aW9uLgoKCSogcy10YXJlc3QuYWRiIChHZXRfQ3VycmVudF9FeGNlcCk6IE1vdmVkIGJhY2sgdG8gcy10YXNpbmkvcy10YXJlc3QsCglzaW5jZSB0aGlzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIHNldCBjb25zaXN0ZW50bHkgd2l0aCBVcGRhdGVfRXhjZXB0aW9uLgoKCSogcy10YXNraW4uYWRzOiBVcGRhdGUgY29tbWVudHMgb24KCUludGVycnVwdF9TZXJ2ZXJfQmxvY2tlZF9Pbl9FdmVudF9GbGFnLgoJKFVuYmluZF9IYW5kbGVyKTogRml4IGhhbmRsaW5nIG9mIHNlcnZlcl90YXNrIHdha2V1cAoJKFNlcnZlcl9UYXNrKTogU2V0IHNlbGYncyBzdGF0ZSBzbyB0aGF0IFVuYmluZF9IYW5kbGVyIGNhbiB0YWtlCglhcHByb3ByaWF0ZSBhY3Rpb25zLgoJKENvbW1vbl9BVENCKTogTm93IHVzZSBhIGNvbnN0YW50IGZyb20gU3lzdGVtLlBhcmFtZXRlcnMgdG8gZGV0ZXJtaW5lCgl0aGUgbWF4IHNpemUgb2YgdGhlIFRhc2tfSW1hZ2UgZmllbGQuCgoJKiBzLXRhc3N0YS5hZGIgKFRhc2tfV3JhcHBlcik6IE5vdyBwYXNzIHRoZSBvdmVyZmxvdyBndWFyZCB0byB0aGUKCUluaXRpYWxpemVfQW5hbHl6ZXIgZnVuY3Rpb24uCgkoW1Z1bG5lcmFibGVfXUNvbXBsZXRlX1Rhc2ssIExvY2tfRW50cmllcyk6IFJlbGF4IGFzc2VydGlvbiB0bwoJdGFrZSBpbnRvIGFjY291bnQgY2FzZSBvZiBubyBhYm9ydCByZXN0cmljdGlvbi4KCShbVnVsbmVyYWJsZV9dQ29tcGxldGVfTWFzdGVyKTogTW9kaWZ5IGFzc2VydGlvbi4KCgkqIHMtdGF0YWF0LmFkYiAoRmluYWxpemUpOiBVc2UgdGhlIG5lc3RhYmxlIHZlcnNpb25zIG9mCglEZWZlci9VbmRlZmVyX0Fib3J0LgoKCSogcy10cG9ib3AuYWRiIChQcm90ZWN0ZWRfRW50cnlfQ2FsbCk6IFJlbGF4IGFzc2VydGlvbi4KCgkqIHMtdHBvYm9wLmFkczogVXBkYXRlIGNvbW1lbnRzLgoKCSogcy10cG9zZW4uYWRiIChQcm90ZWN0ZWRfU2luZ2xlX0VudHJ5X0NhbGwpOiBDYWxsIExvY2tfRW50cnkgaW5zdGVhZAoJb2YgbG9ja2luZyB0aGUgb2JqZWN0IG1hbnVhbGx5LCB0byBhdm9pZCBpbmNvbnNpc3RlbmNpZXMgYmV0d2VlbgoJTG9jay9VbmxvY2tfRW50cnkgYXNzZXJ0aW9ucy4KCgkqIHMtaW50ZXJyLmFkcywgcy1pbnRlcnIuYWRiIChTZXJ2ZXJfVGFzayk6IEZpeCByYWNlIGNvbmRpdGlvbiB3aGVuCgl0ZXJtaW5hdGluZwoJYXBwbGljYXRpb24gYW5kIFN5c3RlbS5QYXJhbWV0ZXJzLk5vX0Fib3J0IGlzIFRydWUuCglVcGRhdGUgY29tbWVudHMgb24gSW50ZXJydXB0X1NlcnZlcl9CbG9ja2VkX09uX0V2ZW50X0ZsYWcuCgkoVW5iaW5kX0hhbmRsZXIpOiBGaXggaGFuZGxpbmcgb2Ygc2VydmVyX3Rhc2sgd2FrZXVwCgkoU2VydmVyX1Rhc2spOiBTZXQgc2VsZidzIHN0YXRlIHNvIHRoYXQgVW5iaW5kX0hhbmRsZXIgY2FuIHRha2UKCWFwcHJvcHJpYXRlIGFjdGlvbnMuCgoyMDA3LTA2LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogcy1maW5yb28uYWRzLCBzLWZpbnJvby5hZGIgKFJlYWQsIFdyaXRlKTogVXNlIG51bGwgcHJvY2VkdXJlCglkZWNsYXJhdGlvbnMgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBudWxsIGJvZHksIGZvciBjb25jaXNlbmVzcy4KCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2V2YWwuYWRiIChFdmFsX1JlbGF0aW9uYWxfT3ApOiBub3RoaW5nIHRvIGRvIGlmIGFuIG9wZXJhbmQgaXMgYW4KCWlsbGVnYWwgYWdncmVnYXRlIGFuZCB0aGUgdHlwZSBpcyBzdGlsbCBBbnlfQ29tcG9zaXRlLgoJKFN1YnR5cGVzX1N0YXRpY2FsbHlfTWF0Y2gpOiBGaXggcHJvYmxlbSBvZiBlbXB0eSBkaXNjcmltaW5hbnQgbGlzdAoKMjAwNy0wNi0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX3NtZW0uYWRiIChDaGVja19TaGFyZWRfVmFyKTogQ2hlY2sgZXhwbGljaXRseSBmb3IgYXMgdGFzayBvYmplY3QsCgl0byBwcmV2ZW50IHN1YnNlcXVlbnQgZXhwYW5zaW9uLgoKMjAwNy0wNi0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzaW5wdXQtbC5hZHMsIHNpbnB1dC1sLmFkYjogaW1wbGVtZW50IGEgbmV3IHByYWdtYSBOb19Cb2R5CgoyMDA3LTA2LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzcHJpbnQuYWRzLCBzcHJpbnQuYWRiIChTcHJpbnRfTm9kZV9BY3R1YWwpOiBPdXRwdXQgYWdncmVnYXRlIGZvcgoJZXhjZXB0aW9ucy4KCShXcml0ZV9JdHlwZSk6IEhhbmRsZSBjYXNlIG9mIHN0cmluZyBsaXRlcmFsIHN1YnR5cGUsIHdoaWNoCgljb21lcyB1cCBpbiB0aGlzIGNvbnRleHQuCgkoVXBkYXRlX0l0eXBlKTogd2hlbiBkZWJ1Z2dpbmcgZXhwYW5kZWQgY29kZSwgdXBkYXRlIHNsb2Mgb2YgaXR5cGVzCglhc3NvY2lhdGVkIHdpdGggZGVmaW5pbmdfaWRlbnRpZmllcnMgYW5kIHJhbmdlcywgZm9yIGdkYiB1c2UuCgkoU3ByaW50X05vZGVfQWN0dWFsKTogQWRkIHN0YXRpYyBrZXl3b3JkIHRvIG9iamVjdCBvciBleGNlcHRpb24KCWRlY2xhcmF0aW9uIG91dHB1dCBpZiBJc19TdGF0aWNhbGx5X0FsbG9jYXRlZCBpcyBUcnVlLgoJKFNwcmludF9FbmRfTGFiZWwpOiBTZXQgZW50aXR5IG9mIGVuZCBtYXJrZXIgZm9yIGEgc3VicHJvZ3JhbSwgcGFja2FnZSwKCW9yIHRhc2sgYm9keSwgc28gdGhhdCB0aGUgdHJlZSBjYXJyaWVzIHRoZSBwcm9wZXIgU2xvYyBpbmZvcm1hdGlvbiBmb3IKCWRlYnVnZ2luZyB1c2UuCgkoV3JpdGVfSW5kZW50KTogSW4gRHVtcF9Tb3VyY2VfVGV4dCBtb2RlLCBpZ25vcmUgaW1wbGljaXQgbGFiZWwgbm9kZXMKCjIwMDctMDYtMDYgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtc2Vjc3RhLmFkYiAoQ2h1bmspOiBFbnN1cmUgdGhpcyBvYmplY3QgaGFzIGEgc3RhdGljIHNpemUga25vd24gYXQKCWNvbXBpbGUgdGltZSwgdG8gYXZvaWQgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbgoJKEVsYWJvcmF0aW9uIGNvZGUpOiBPbmx5IHVzZSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gbmVlZGVkLgoKMjAwNy0wNi0wNiAgUXVlbnRpbiBPY2hlbSAgPG9jaGVtQGFkYWNvcmUuY29tPgoKCSogcy1zdGF1c2EuYWRzLCBzLXN0YXVzYS5hZGIgKEluaXRpYWxpemVfQW5hbHl6ZXIpOiBBZGRlZCBwYXJhbWV0ZXIKCSJPdmVyZmxvd19HdWFyZCIuCgkoU3RhY2tfQW5hbHl6ZXIpOiBBZGRlZCBmaWVsZCAiT3ZlcmZsb3dfR3VhcmQiCgkoVGFza19SZXN1bHQpOiBBZGRlZCBmaWVsZCAiT3ZlcmZsb3dfR3VhcmQiLgoJKEluZGV4X1N0cik6IE5ldyBjb25zdGFudC4KCShUYXNrX05hbWVfU3RyKTogTmV3IGNvbnN0YW50LgoJKEFjdHVhbF9TaXplX1N0cik6IE5ldyBjb25zdGFudC4KCShQYXR0ZXJuX0FycmF5X0VsZW1lbnRfU2l6ZSk6IE5ldyBjb25zdGFudC4KCShHZXRfVXNhZ2VfUmFuZ2UpOiBOZXcgc3VicHJvZ3JhbS4KCShPdXRwdXRfUmVzdWx0KTogQWRkZWQgcGFyYW1ldGVyIE1heF9TaXplX0xlbiBhbmQgTWF4X0FjdHVhbF9Vc2VfTGVuLgoJTm93IGFsaWduIHRoZSBvdXRwdXQuCglBZGRlZCBjb21tZW50cy4KCShJbml0aWFsaXplKTogQWRkZWQgdmFsdWUgZm9yIE92ZXJmbG93X0d1YXJkLgoJKEZpbGxfU3RhY2spOiBVc2UgY29uc3RhbnQgUGF0dGVybl9BcnJheV9FbGVtX1NpemUgd2hlbiByZWxldmFudC4KCVVwZGF0ZSB0aGUgdmFsdWUgb2YgdGhlIG92ZXJmbG93IGd1YXJkIGFjY29yZGluZyB0byB0aGUgYWN0dWFsCgliZWdpbm5pbmcgb2YgdGhlIHBhdHRlcm4gYXJyYXkuCgkoSW5pdGlhbGl6ZV9BbmFseXplcik6IEFkZGVkIHBhcmFtZXRlciBPdmVyZmxvd19HdWFyZC4KCVRha2UgdGhpcyBwYXJhbWV0ZXIgaW50byBhY2NvdW5kIHdoZW4gY29tcHV0aW5nIHRoZSBtYXggc2l6ZS4KCShDb21wdXRlX1Jlc3VsdCk6IFVzZSBjb25zdGFudCBQYXR0ZXJuX0FycmF5X0VsZW1fU2l6ZSB3aGVuIHJlbGV2YW50LgoJKFJlcG9ydF9SZXN1bHQpOiBSZW1vdmVkIGV4dHJhIHVzZWxlc3MgcHJvY2VkdXJlLgoJVXBkYXRlZCBjYWxsIHRvIE91dHB1dF9SZXN1bHQuCglNb3ZlZCBmdWxsIGNvbXB1dGF0aW9uIG9mIHRoZSBUYXNrX1Jlc3VsdCBoZXJlLgoKMjAwNy0wNi0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctc29jY29uLWRhcndpbi5hZHMsIGdlbi1zb2Njb24uYzogQWRkIG5ldyBjb25zdGFudAoJVGhyZWFkX0Jsb2NraW5nX0lPLCBhbHdheXMgVHJ1ZSBieSBkZWZhdWx0LCBzZXQgRmFsc2Ugb24gYSBwZXItcnVudGltZQoJYmFzaXMuCglBZGQgV2luZG93cy1zcGVjaWZpYyBjb25zdGFudHMKCUFkZCBuZXcgY29uc3RhbnQgTmVlZF9OZXRkYl9CdWZmZXIuCglBZGQgbmV3IG1hY3JvcyB0byBpbmRpY2F0ZSB3aGV0aGVyIGdldFhYWGJ5WVlZIGlzIHRocmVhZCBzYWZlIGFuZCwgaWYKCW5vdCwgd2hldGhlciB0byB1c2UgZ2V0WFhYYnlZWVlfci4KCgkqIGdzb2NrZXQuaDogQWRkIG5ldyBjb25zdGFudCBOZWVkX05ldGRiX0J1ZmZlci4KCUFkZCBuZXcgbWFjcm9zIHRvIGluZGljYXRlIHdoZXRoZXIgZ2V0WFhYYnlZWVkgaXMgdGhyZWFkIHNhZmUgYW5kLCBpZgoJbm90LCB3aGV0aGVyIHRvIHVzZSBnZXRYWFhieVlZWV9yLgoKMjAwNy0wNi0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHMtc3RvZWxlLmFkcywgcy1zdG9lbGUuYWRiOiBNb3ZlIGlubGluZV9hbHdheXMgc3VicHJvZ3JhbXMgZWFybGllcgoJdGhhbiB0aGVpciBmaXJzdCBjYWxsLgoJQWRkIHR5cGUgRHVtbXlfQ29tbXVuaWNhdGlvbl9CbG9jayB1c2VkIGluIHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBwcmUtCglkZWZpbmVkIGRpc3BhdGNoaW5nIHByaW1pdGl2ZSBfZGlzcF9hc3luY2hyb25vdXNfc2VsZWN0LgoJKFN0b3JhZ2VfRWxlbWVudCk6IFB1dCBQcmFnbWEgVW5pdmVyc2FsX0FsaWFzaW5nIG9uIGl0LgoKMjAwNy0wNi0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBhLWRpcnZhbC12bXMuYWRiLCBhLWRpcnZhbC5hZHMsIGEtZGlydmFsLmFkYiAoV2luZG93cyk6IE5ldyBCb29sZWFuCglmdW5jdGlvbi4KCgkqIGEtZGlydmFsLW1pbmd3LmFkYiAoSXNfVmFsaWRfUGF0aF9OYW1lKTogRm9yYmlkIGEgcGF0aCB3aXRoIGEgZHJpdmUKCWxldHRlciBpZiBpdCBpcyBub3QgZm9sbG93ZWQgYnkgYSAnLycgb3IgYSAnXCcuCgkoV2luZG93cyk6IE5ldyBCb29sZWFuIGZ1bmN0aW9uCgoJKiBhLWRpcmVjdC5hZHMsIGEtZGlyZWN0LmFkYjogUmVtb3ZlIHVubmVjZXNzYXJ5IGFuZCBtaXNwbGFjZWQgcHJhZ21hCglBZGEgMjAwNS4KCShDb250YWluaW5nX0RpcmVjdG9yeSk6IE9uIFdpbmRvd3MsIGtlZXAgYXQgbGVhc3Qgb25lICcvJyBvciAnXCcgYWZ0ZXIgYQoJZHJpdmUgbGV0dGVyLgoJKENvbnRhaW5pbmdfRGlyZWN0b3J5KTogUmFpc2UgVXNlX0Vycm9yIHdoZW4gdGhlIGRpcmVjdG9yeSBpcyBhIHJvb3QKCWRpcmVjdG9yeS4KCShFeHRlbnNpb24pOiBXaGVuIHJldHVybmluZyB0aGUgcmVzdWx0LCB1c2UgYSBjb252ZXJzaW9uIHRvIFJlc3VsdF9UeXBlLAoJbm90IGEgcXVhbGlmaWNhdGlvbi4KCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc3R5bGVzdy5hZHMsIHN0eWxlc3cuYWRiIChTZXRfR05BVF9TdHlsZV9DaGVjayk6IE5ldyBwcm9jZWR1cmUKCShTZXRfU3R5bGVfQ2hlY2tfT3B0aW9ucyk6IFJlY29nbml6ZSBuZXcgLWduYXR5ZyBzdHlsZSBzd2l0Y2gKCgkqIHN3aXRjaC1jLmFkYiAoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMsIGNhc2UgLWduYXRnKTogU2V0CglXYXJuX09uX05vbl9Mb2NhbF9FeGNlcHRpb24gdG8gRmFsc2UsIHRvIHR1cm4gb2ZmIHdhcm5pbmdzIGZvcgoJTm9fRXhjZXB0aW9uX1Byb3BhZ2F0aW9uIGluIFpGUCBydW50aW1lLgoJKFNjYW5fRnJvbnRfRW5kX1N3aXRjaGVzKTogRml4IGhhbmRsaW5nIG9mIC0tUlRTIHN3aXRjaCBmb3Igbm9uIEdDQwoJYmFjay1lbmRzLgoJKFNjYW5fRnJvbnRfRW5kX1N3aXRjaGVzKTogRm9yICdnJywgY2FsbCBTZXRfR05BVF9TdHlsZV9DaGVja3MKCjIwMDctMDYtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogc3dpdGNoLWIuYWRiIChTY2FuX0JpbmRlcl9Td2l0Y2hlcyk6IEFkZCBwcm9jZXNzaW5nIGZvciBuZXcKCXN3aXRjaGVzIC1SIGFuZCAtWgoKCSogc3dpdGNoLW0uYWRiIChOb3JtYWxpemVfQ29tcGlsZXJfU3dpdGNoZXMpOiBEbyBub3QgcmVjb3JkIHN3aXRjaCAtRQoJKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IFJlY29nbml6ZSBuZXcgc3dpdGNoIC1hUAoKMjAwNy0wNi0wNiAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBhZGFjb3JlLmNvbT4KCSAgICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogcy1zdGNob3Atdnh3b3Jrcy5hZGIgKFNldF9TdGFja19JbmZvKTogSW5zdGVhZCBvZiB0cnlpbmcgdG8gbWFwIHRoZQoJVnhXb3JrcyB0YXNrIGRlc2NyaXB0b3IgaW4gdGhlIEFkYSBydW4gdGltZSwgY2FsbCBhIEMgc3VicHJvZ3JhbQoJKF9fZ25hdF9nZXRfc3RhY2tfaW5mbykgdGhhdCBleHRyYWN0cyB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24uCgoJKiBzeXNkZXAuYzogQmFjayBvdXQgdGVtcG9yYXJ5IGx5bnhvcyB3b3JrYXJvdW5kLgoJKF9fZ25hdF9nZXRfc3RhY2tfaW5mbyk6IEFkZCB0aGlzIHByb2NlZHVyZSB0aGF0IHBhc3NlcyB0byB0aGUgQWRhIHJ1bgoJdGltZSB0aGUgc3RhY2sgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB0byB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrLgoJT25seSBWeFdvcmtzIHN5c3RlbXMgcmVxdWlyZSB0aGlzIGZ1bmN0aW9uLgoKMjAwNy0wNi0wNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyYWNlYmFrLmMgKEZSQU1FX09GRlNFVCk6IEFkZCBwYXJhbWV0ZXIgRlAuIE9uIFNQQVJDL1NvbGFyaXMsIGRvIG5vdAoJYWRkIHRoZSBzdGFjayBiaWFzIGlmIHRoZSBvZmZzZXQgaXMgY29tcHV0ZWQgZnJvbSBhIGZyYW1lIGFkZHJlc3MuCgkoX19nbmF0X2JhY2t0cmFjZSk6IEFkanVzdCBmb3IgYWJvdmUgY2hhbmdlLgoKMjAwNy0wNi0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHR5cGVzLmgsIHR5cGVzLmFkczogUmVuYW1lIFBFX0lsbGVnYWxfQ1dfQWN0dWFsX0VfNF8xOCB0bwoJUEVfTm9uX1RyYW5zcG9ydGFibGVfQWN0dWFsLgoJKEJ5X0Rlc2NyaXB0b3JfTGFzdCk6IE5ldyBjb25zdGFudC4KCShCeV9Db3B5X1JldHVybik6IExpa2V3aXNlLgoKMjAwNy0wNi0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiB2bXNfY29udi5hZGIgKFByb2Nlc3NfQXJndW1lbnQpOiBLZWVwIGFyZ3VtZW50cyBzdGFydGluZyB3aXRoICcrJyBhcwoJaXMuCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBlbnRyaWVzIGZvciAtZ25hdHcueCBhbmQgLWduYXR3LlgKCS9TVFlMRV9DSEVDS1M9R05BVDogQ2hhbmdlIG1lYW5pbmcgdG8gLWduYXR5ZwoJL0dOQVRfSU5URVJOQUw6IE5ldyBjb21waWxlciBxdWFsaWZpZXIgY29ycmVzcG9uZGluZyB0byAtZ25hdGcKCUFkZCBtaXNzaW5nIGNvbW1lbnQgZm9yIC9PUFRJTUlaRT1TUEFDRQoJQWRkIGVudHJ5IGZvciBPUFRJTUlaRT1TUEFDRQoJQWRkIG5ldyBxdWFsaWZpZXIgL0FMTF9QUk9KRUNUUyAoPSAtVSkgZm9yIEdOQVQgTElTVAoJQWRkIGRvY3VtZW50YXRpb24gZm9yIG5ldyBxdWFsaWZpZXJzIGNvcnJlc3BvbmRpbmcgdG8gLWduYXR3LmMvLkMKCjIwMDctMDYtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogeGduYXR1Z24uYWRiOiBBbGxvdyBkb3RzIHRvIGJlIHVzZWQgaW4gdWdfd29yZHMgKC1nbmF0dy5jIGFuZAoJLWduYXR3LkMpCgoJKiBnbmF0X3Vnbi50ZXhpOiBGaXggb3JkZXJpbmcgb2YgLWcgc3dpdGNoIGZvciBnbmF0bWFrZQoJRG9jdW1lbnQgZ25hdGJpbmQgc3dpdGNoIC1hCgkoY2FzZSBDb25zdHJ1Y3Rpb25zKTogRG9jdW1lbnQgdGhhdCB2YXJpYWJsZXMgZGVjbGFyYXRpb25zIGFyZSBhbGxvd2VkCglmb3IgcHJldmlvdXNseSBkZWNsYXJlZCB2YXJpYWJsZXMuCglGaXggZXh0ZXJuYWwgbGliIHByb2plY3QgZXhhbXBsZQoJLWduYXRnOiBJbmRpY2F0ZSBuZXcgVk1TIHF1YWxpZmllciAvR05BVF9JTlRFUk5BTAoJSW5kaWNhdGUgdGhhdCAiI2lmIG5vdCBYIG9yIFkgdGhlbiIgaXMgbm90IGFsbG93ZWQgaW4gaW5wdXQgZmlsZXMgdG8KCWduYXRwcmVwLgoJRG9jdW1lbnQgZ25hdHcueCBhbmQgZ25hdHcuWCB3YXJuaW5nIGZsYWdzCglNZW50aW9uIC1XaW5saW5lIHN3aXRjaCB0byBhY3RpdmF0ZSB3YXJuaW5ncyB3aGVuIGJhY2stZW5kIGlubGluaW5nIGlzCglpbmVmZmVjdGl2ZS4KCUFkZCBnbmF0Y2hlY2sgcnVsZSBkZXNjcmlwdGlvbnMKCURlc2NyaWJlIGhvdyB0byB1c2UgdGhlIEdOQVQgZHJpdmVyIHRvIGNhbGwgYSB0b29sIG9uIGEgY2xvc3VyZS4KCURlc2NyaWJlIGhvdyB0byBydW4gcHJvamVjdC13aWRlIGNoZWNrcyBvciBtZXRyaWNzLgoJRG9jdW1lbnQgZ25hdGJpbmQncyAtUiBvcHRpb24KCVVwZGF0ZWQgdG8gYWNjb3VudCBmb3IgQWRhIDIwMDUgc3VwcG9ydAoKCSogZ25hdF9ybS50ZXhpIChDYXNlIENvbnN0cnVjdGlvbik6IEFsbG93IHZhcmlhYmxlIGRlY2xhcmF0aW9ucyBmb3IKCXByZXZpb3VzbHkgZGVjbGFyZWQgdmFyaWFibGVzLgoJKFJlcHJlc2VudGF0aW9uIENsYXVzZXMgYW5kIFByYWdtYXMpOiBMaWZ0IHJlc3RyaWN0aW9uIG9uIGFsaWdubWVudAoJY2xhdXNlcyBmb3IgcmVjb3JkIHR5cGVzLgoJKEFkYS5DaGFyYWN0ZXJzLiopOiBGaXggdHlwbyBpbiByZWZlcmVuY2UgdG8gQS4zLjMoMjcpLgoJRG9jdW1lbnQgTm9fRXhjZXB0aW9uX1Byb3BhZ2F0aW9uIHJlc3RyaWN0aW9uCglEb2N1bWVudCBOb19Cb2R5IHByYWdtYQoJVXBkYXRlZCB0byBhY2NvdW50IGZvciBBZGEgMjAwNSBzdXBwb3J0OyBjb3JyZWN0ZWQgc29tZSB0eXBvcwoJKEltcGxlbWVudGF0aW9uIERlZmluZWQgUHJhZ21hcyk6IERvY3VtZW50IHByYWdtYSBVbml2ZXJzYWxfQWxpYXNpbmcuCgoJKiBnbmF0LXN0eWxlLnRleGk6IE1ha2UgaXQgY2xlYXIgdGhhdCB3ZSBuZXZlciB1c2UgbW9kZSBJTiBmb3IKCXByb2NlZHVyZXMgb3IgZnVuY3Rpb25zCgoJKiB1Z193b3JkczogQWRkIGVudHJpZXMgZm9yIC1nbmF0dy54IGFuZCAtZ25hdHcuWAoJQWRkIGVudHJpZXMgZm9yIC1nbmF0dy5jLy5DCgoyMDA3LTA2LTA2ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtYWtlZ3ByLmFkYiAoQWRkX0FyY2hpdmVfUGF0aCk6IFVzZSB1bnRvdWNoZWQgb2JqZWN0IGFuZCBsaWJyYXJ5CglkaXJzIGFuZCBsaWJyYXJ5IG5hbWUuCgkoQnVpbGRfR2xvYmFsX0FyY2hpdmUpOiBJZGVtLiBNaW5vciBjb2RlIGNsZWFuLXVwLiBSZW1vdmVzIGR1cGxpY2F0ZQoJY29tbWVudHMuCgkoQnVpbGRfTGlicmFyeSk6IElkZW0uCgkoQ29tcGlsZV9JbmRpdmlkdWFsX1NvdXJjZXMpOiBJZGVtLgoJKENvbXBpbGVfTGlua19XaXRoX0duYXRtYWtlKTogSWRlbS4KCShDb21waWxlX1NvdXJjZXMpOiBJZGVtLgoJKEdldF9JbXBvcnRlZF9EaXJlY3Rvcmllcyk6IElkZW0uCgkoTGlua19FeGVjdXRhYmxlcyk6IElkZW0uIFNhbWUgY2hhbmdlIGZvciB0aGUgZXhlY3V0YWJsZSBkaXIuCgkoQ2hlY2tfQ29tcGlsYXRpb25fTmVlZGVkKTogQ19Tb3VyY2VfUGF0aCBuZXcgdmFyaWFibGUgY29udGFpbmluZwoJdGhlIGNhbm9uaWNhbCBmb3JtIG9mIFNvdXJjZV9QYXRoIHRvIGNoZWNrIGFnYWluc3QgdGhlIHNvdXJjZSBuYW1lcwoJaW4gdGhlIGRlcGVuZGVuY3kgZmlsZS4KCShCdWlsZF9HbG9iYWxfQXJjaGl2ZSwgQ29tcGlsZV9JbmRpdmlkdWFsX1NvdXJjZXMsIENvbXBpbGVfU291cmNlcyk6IEluCgl2ZXJib3NlIG1vZGUsIGRpc3BsYXkgdGhlIG5hbWUgb2YgdGhlIG9iamVjdCBkaXJlY3Rvcnkgd2UncmUgY2hhbmdpbmcKCXRvLgoJKFNhdmVkX1N3aXRjaGVzKTogTmV3IG5hbWUgb2YgdGFibGUgWF9Td2l0Y2hlcwoJKFNjYW5fQXJnKTogUmVjb2duaXplIG5ldyBzd2l0Y2ggLWFQIGFuZCBzYXZlIGluIHRhYmxlIFNhdmVkX1N3aXRjaGVzCgkoVXNhZ2UpOiBOZXcgbGluZSBmb3Igc3dpdGNoIC1hUAoJKEdldF9JbXBvcnRlZF9EaXJlY3Rvcmllcy5BZGQpOiBNYWtlIHN1cmUgdGhhdCBBZGRfQXJnIGlzIFRydWUgYmVmb3JlCgl0ZXN0aW5nIGlmIGEgZGlyZWN0b3J5IHNob3VsZCBiZSBhZGRlZCB0byB0aGUgc2VhcmNoIHBhdGguCgoyMDA3LTA2LTA2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBhLWNpZGxsaS5hZHMsIGEtY2RsaWxpLmFkcywgYS1jb2hhbWEuYWRzLCBhLWNvaW52ZS5hZHMsIAoJYS1jb252ZWMuYWRzIChFbXB0eV9WZWN0b3IsIEVtcHR5X01hcCwgRW1wdHlfTGlzdCk6IE1vdmUgdGhpcyBvYmplY3QKCWRlY2xhcmF0aW9uIGFmdGVyIGZyZWV6aW5nIHBvaW50IG9mIGFsbCBpdHMgYXNzb2NpYXRlZCB0YWdnZWQgdHlwZXM7CglvdGhlcndpc2Ugc3VjaCB0eXBlcyBhcmUgZnJvemVuIHRvbyBlYXJseS4KCjIwMDctMDYtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS1yZWF0aW0uYWRiOiBEb2N1bWVudGF0aW9uIGFkZGl0aW9uCgoJKiBnLWNnaWRlYi5hZGI6IE1pbm9yIGNvZGUgcmVvcmdhbml6YXRpb24KCgkqIHRyZWVfaW8uYWRiLCB0cmVlcHIuYWRiLCBjc3RhbmQuYWRiLCBrcnVuY2guYWRiLCBwYXIuYWRiLAoJbWRsbC11dGwuYWRiLCBwYXItY2g1LmFkYiwgcGFyLXRjaGsuYWRiLCBzLWV4Y3RhYi5hZHMsIHMtbWVtb3J5LmFkcywKCXMtb3NwcmltLmFkcywgcy1yZXN0cmkuYWRzLCBzLXNvZmxpbi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIGRlYnVnLmFkcywgZGVidWcuYWRiIChHZXRfRGVidWdfRmxhZ19LKTogUmVtb3ZlIHVudXNlZCBvYnNvbGV0ZQoJZnVuY3Rpb24uICBDaGFuZ2UgbmFtZSBOZXdfU2NvcGUgdG8gUHVzaF9TY29wZQoJKEdldF9EZWJ1Z19GbGFnX0spOiBSZW1vdmUgdW51c2VkIG9ic29sZXRlIGZ1bmN0aW9uLgoKCSogZXhwX2NoOC5hZGIsIGlubGluZS5hZGIsIHNlbV9jaDguYWRzOiBDaGFuZ2UgbmFtZSBOZXdfU2NvcGUgdG8KCVB1c2hfU2NvcGUuCgoJKiBtYWtldXNnLmFkYjogVXBkYXRlIENvcHlyaWdodCBub3RpY2UKCUFkZCBsaW5lIGZvciBzd2l0Y2ggLWFQCgoJKiBtYWtldXNnLmFkYjogRml4IHdvcmRpbmcgb2Ygc29tZSB1c2FnZSBtZXNzYWdlcwoKCSogcy1hc3NlcnQuYWRiIChSYWlzZV9Bc3NlcnRfRmFpbHVyZSk6IEFkZCBjYWxsIHRvCglEZWJ1Z19SYWlzZV9Bc3NlcnRfRmFpbHVyZS4KCgkqIHMtdW5zdHlwLmFkcyAodHlwZSBQYWNrZWRfQnl0ZXMyKTogQ2hhbmdlIGFsaWdubWVudCB0byB1c2UgJ01pbgoJKDIsIFN0YW5kYXJkJ0FsaWdubWVudCkgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBBQU1QICh3aGVyZSBhbGlnbm1lbnQKCWlzIHJlc3RyaWN0ZWQgdG8gMSkuCgoJKiBzLXdjaGppcy5hZGI6IFJlbW92ZSB1c2Ugb2YgU3lzdGVtLlB1cmVfRXhjZXB0aW9ucwoKCSogdGJ1aWxkLmFkcywgdGJ1aWxkLmFkYiAoTWFrZV9JbXBsaWNpdF9FeGNlcHRpb25fSGFuZGxlcik6IFNldCB0aGUKCW5vZGUgbG9jYXRpb24gdG8gTm9fTG9jYXRpb24gd2hlbiB3ZSdyZSBub3QgZGVidWdnaW5nIHRoZSBleHBhbmRlZAoJY29kZS4KCjIwMDctMDUtMjIgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbWlzYy5jIChlbnVtZXJhdGVfbW9kZXMpOiBDb25zaWRlciBsb2cyX2IgdG8gYWx3YXlzIGJlIG9uZS4KCjIwMDctMDUtMTQgIFJhZmFlbCBBdmlsYSBkZSBFc3BpbmRvbGEgIDxlc3BpbmRvbGFAZ29vZ2xlLmNvbT4KCgkqIG1pc2MuYyAoTEFOR19IT09LU19VTlNJR05FRF9UWVBFKTogUmVtb3ZlLgoKMjAwNy0wNS0wMiAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZ25hdGNob3AuYWRiIChXcml0ZV9Tb3VyY2VfUmVmZXJlbmNlX1ByYWdtYSk6IENoYW5nZSBpbXBsZW1lbnRhdGlvbgoJdG8gdXNlIFN0cmVhbV9JTy5GaWxlX1R5cGUuIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgdXNlIG9mIHRoZSBVVEYtOAoJZW5jb2Rpbmcgc3VwcG9ydCBvZiBTdHJlYW1fSU8uCgkoV3JpdGVfVW5pdCk6IElkZW0uCgoJKiBhZGFpbnQuaCwgYWRhaW50LmMgKF9fZ25hdF9vc19maWxlbmFtZSk6IE5ldyByb3V0aW5lLiBSZXR1cm5zIHRoZQoJZmlsZW5hbWUgYW5kIGNvcnJlc3BvbmRpbmcgZW5jb2RpbmcgdG8gbWF0Y2ggdGhlIE9TIHJlcXVpcmVtZW50LgoJKF9fZ25hdF9maWxlX2V4aXN0cyk6IERvIG5vdCBjYWxsIF9fZ25hdF9zdGF0KCkgb24gV2luZG93cyBhcyB0aGlzCglyb3V0aW5lIHdpbGwgZmFpbCBvbiBzcGVjaWZpYyBkZXZpY2VzIGxpa2UgQ09OOiBBVVg6IC4uLgoKCVBSIGFkYS8yOTg1NjogQWRkIG1pc3NpbmcgYnJhY2VzCgoyMDA3LTA0LTIyICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCglQUiBhZGEvMzE2NjAKCSogYWRhLXRyZWUuaCAobGFuZ190cmVlX25vZGUpOiBGaXggdHlwbyBpbiBjaGFpbl9uZXh0LgoKMjAwNy0wNC0yMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9ib2R5KTogRG9uJ3QgY2FsbCB0YXJnZXQgZm9yIGRlc3RydWN0b3JzLAoJYXZvaWQgcmVkdW5kYW50IGNoZWNrIG9uIHN5bnRheCBlcnJvcnMuCgoyMDA3LTA0LTIxICBBbmRyZXcgUGluc2tpICA8YW5kcmV3X3BpbnNraUBwbGF5c3RhdGlvbi5zb255LmNvbT4KCgkqIGFkYS10cmVlLmggKGxhbmdfdHJlZV9ub2RlKTogVXNlIEdFTkVSSUNfTkVYVAoJaW5zdGVhZCBvZiBjaGVja2luZyBHSU1QTEVfU1RNVF9QIGluIGNoYWluX25leHQuCgoyMDA3LTA0LTE3ICBBbmRyZWFzIEtyZWJiZWwgIDxrcmViYmVsMUBkZS5pYm0uY29tPgoKCVBSIGFkYS8zMTU3NgoJKiBzeXN0ZW0tbGludXgtYWxwaGEuYWRzOiBEaXNhYmxlIGNvbnN0YW50IGNvbmRpdGlvbiB3YXJuaW5nIGZvciB0aGUKCURlZmF1bHRfQml0X09yZGVyIHZhcmlhYmxlLgoJKiBzeXN0ZW0tbGludXgtczM5MC5hZHM6IExpa2V3aXNlLgoJKiBzeXN0ZW0tbGludXgtczM5MHguYWRzOiBMaWtld2lzZS4KCSogc3lzdGVtLWxpbnV4LXNwYXJjLmFkczogTGlrZXdpc2UuCgoyMDA3LTA0LTA2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgTWF0dCBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJYS1jb3BybnUuYWRzLCBhLWNvaGF0YS5hZHMsIGEtY2h0Z29wLmFkcywgYS1jaHRnb3AuYWRiLCBhLWNnY2Fzby5hZHMsCglhLWNnYXJzby5hZHMsIGEtc2VjYWluLmFkcywgYS1zbGNhaW4uYWRzLCBhLXNoY2Fpbi5hZHMsIGEtY2h0Z2tlLmFkcywKCWEtY2h0Z2tlLmFkcywgYS1jb3BybnUuYWRzLCBhLWNvbnRhaS5hZHMsIGEtY2h0Z2tlLmFkcywgYS1jaHRna2UuYWRiLAoJYS1zdHdpaGEuYWRzLCBhLXN0cmhhcy5hZHMsIGEtbGZ6dGlvLmFkcywgYS1saXp0aW8uYWRzLCBhLWxsZnp0aS5hZHMsCglhLWxsaXp0aS5hZHMsIGEtc2Z6dGlvLmFkcywgYS1zaXp0aW8uYWRzLCBhLXNzaXp0aS5hZHMsIGEtc3R6Zml4LmFkcywKCWEtc3R6aGFzLmFkcywgYS1zenV6aGEuYWRzLCBhLXRpdW5pby5hZHMsIGEtd3d1bmlvLmFkcywgYS16dGNvaW8uYWRzLAoJYS16dGluaW8uYWRzLCBhLXp0dGVzdC5hZHMsIGEtenp1bmlvLmFkcywgYS1hc3RhY28uYWRzLCBhLWNoYXJhYy5hZHMsCglhLWNobGF0MS5hZHMsIGFkYS5hZHMsIGEtZHlucHJpLmFkcywgYS1mbHRlaW8uYWRzLCBhLWZ3dGVpby5hZHMsCglhLWludGVpby5hZHMsIGEtaW50bmFtLmFkcywgYS1pb2V4Y2UuYWRzLCBhLWl3dGVpby5hZHMsIGEtbGZ0ZWlvLmFkcywKCWEtbGZ3dGlvLmFkcywgYS1saXRlaW8uYWRzLCBhLWxpd3Rpby5hZHMsIGEtbGxmdGlvLmFkcywgYS1sbGZ3dGkuYWRzLAoJYS1sbGl0aW8uYWRzLCBhLWxsaXd0aS5hZHMsIGEtbmNlbGZ1LmFkcywgYS1uZ2NlZnUuYWRzLCBhLW5nZWxmdS5hZHMsCglhLW5sY2VmdS5hZHMsIGEtbmxjb3R5LmFkcywgYS1ubGVsZnUuYWRzLCBhLW5sbGNlZi5hZHMsIGEtbmxsY3R5LmFkcywKCWEtbmxsZWZ1LmFkcywgYS1uc2NlZnUuYWRzLCBhLW5zY290eS5hZHMsIGEtbnNlbGZ1LmFkcywgYS1udWNvdHkuYWRzLAoJYS1udWVsZnUuYWRzLCBhLW51bWVyaS5hZHMsIGEtc2Z0ZWlvLmFkcywgYS1zZnd0aW8uYWRzLCBhLXNpdGVpby5hZHMsCglhLXNpd3Rpby5hZHMsIGEtc3NpdGlvLmFkcywgYS1zc2l3dGkuYWRzLCBhLXN0b3Jpby5hZHMsIGEtc3RyZml4LmFkcywKCWEtc3RyaW5nLmFkcywgYS1zdHdpZmkuYWRzLCBhLXRpdGVzdC5hZHMsIGEtdW5jY29uLmFkcywgYS11bmNkZWEuYWRzLAoJYS13dGNvaW8uYWRzLCBhLXd0aW5pby5hZHMsIGEtd3R0ZXN0LmFkcywgY2FsZW5kYXIuYWRzLCBkaXJlY3Rpby5hZHMsCglpLWMuYWRzLCBpb2V4Y2VwdC5hZHMsIG1hY2hjb2RlLmFkcywgc2VxdWVuaW8uYWRzLCB0ZXh0X2lvLmFkcywKCXVuY2hjb252LmFkcywgdW5jaGRlYWwuYWRzLCBhLXdpZGNoYS5hZHMsIGEtemNoYXJhLmFkcywgYS1zdGJvaGEuYWRzLAoJYS1zdGZpaGEuYWRzLCBhLWNvdGVpby5hZHMsIGEtZW52dmFyLmFkcywgYS1sY3RlaW8uYWRzLCBhLWxsY3Rpby5hZHMsCglhLXNjdGVpby5hZHMsIGEtc3did2hhLmFkcywgYS1zd2Z3aGEuYWRzLCBhLXN6YnpoYS5hZHMsIGEtc3pmemhhLmFkcywKCWEtdGlib2lvLmFkcywgYS13d2JvaW8uYWRzLCBhLXp6Ym9pby5hZHMsIGEtZGlzcGF0LmFkcywgYS10Z2RpY28uYWRzLAoJZXhwYW5kZXIuYWRiLCBnLXNvY2tldC5hZHMsIHBhci1sYWJsLmFkYiwgc2lucHV0LWMuYWRiLCBzLXRhcmVzdC5hZHMsCglzLXN0Y2hvcC5hZHMsIGctZXhwZWN0LXZtcy5hZGIsIHMtdGFwcm9wLWx5bnhvcy5hZGIsCglzLXRhcHJvcC10cnU2NC5hZGIsIHMtdGFwcm9wLWlyaXguYWRiLAoJcy10YXByb3AtaHB1eC1kY2UuYWRiLCBzLXRyYWNlYi1ocHV4LmFkYiwKCXMtdGFwcm9wLWxpbnV4LmFkYiwgcy10YXByb3AtZHVtbXkuYWRiLCBzLW9zcHJpbS11bml4LmFkYiwKCXMtb3NwcmltLXNvbGFyaXMuYWRiLCBzLXRhcHJvcC1zb2xhcmlzLmFkYiwgcy10YXByb3Atdm1zLmFkYiwKCXMtb3NwcmltLW1pbmd3LmFkYiwgcy10YXByb3AtbWluZ3cuYWRiLCBzLW9zcHJpbS1wb3NpeC5hZGIsIAoJcy10YXByb3AtcG9zaXguYWRiLCBhLWV4ZXhwci1nY2MuYWRiLCBhLXN0c3Rpby5hZGIsIGEtc3RzdGlvLmFkcywgCglhLXRleHRpby5hZGIsIGEtdGV4dGlvLmFkcywgYS10aWRlYXUuYWRiLCBhLXRpZGVhdS5hZHMsIGEtd2l0ZWlvLmFkYiwgCglhLXdpdGVpby5hZHMsIGEtd3RkZWF1LmFkYiwgYS13dGRlYXUuYWRzLCBnLWNhbGVuZC5hZGIsIGctY2FsZW5kLmFkcywgCglnLWRpcm9wZS5hZGIsIGctZXhwZWN0LmFkcywgZ25hdGNob3AuYWRiLCBnLXNwaXBhdC5hZGIsIGctc3BpcGF0LmFkcywgCglzLWRpcmVpby5hZGIsIHMtZGlyZWlvLmFkcywgcy1mYXRnZW4uYWRiLCBzLWZhdGdlbi5hZHMsIHMtcGFyaW50LmFkYiwgCglzLXNlcXVpby5hZGIsIHMtc2VxdWlvLmFkcywgcy10YXByb3AuYWRzLCBzLXZhbGRlYy5hZGIsIHMtdmFsZGVjLmFkcywgCglzLXZhbGludC5hZGIsIHMtdmFsaW50LmFkcywgcy12YWxsbGQuYWRiLCBzLXZhbGxsZC5hZHMsIHMtdmFsbGxpLmFkYiwgCglzLXZhbGxsaS5hZHMsIHMtdmFsbGx1LmFkYiwgcy12YWxsbHUuYWRzLCBzLXZhbHJlYS5hZGIsIHMtdmFscmVhLmFkcywgCglzLXZhbHVucy5hZGIsIHMtdmFsdW5zLmFkcywgcy12YWx1dGkuYWRiLCBzLXZhbHV0aS5hZHMsIHhyZWZfbGliLmFkYiwgCglzLXN0Y2hvcC5hZGIsIGktdnh3b3JrLXg4Ni5hZHMsIGEtY3JidGdvLmFkcywgYS1jcmJ0Z28uYWRiLCAKCWEtY29vcnNlLmFkcywgYS1jb29yc2UuYWRiLCBhLWNvaGFtYS5hZHMsIGEtY29oYW1hLmFkYiwgYS1jaW9yc2UuYWRzLCAKCWEtY2lvcnNlLmFkYiwgYS1jaWhhbWEuYWRzLCBhLWNpaGFtYS5hZGIsIGEtY2h0Z29wLmFkcywgYS1jaHRnb3AuYWRzLCAKCWEtY29vcm11LmFkYiwgYS1jaW9ybXUuYWRiLCBhLWNpaGFzZS5hZGIsIGEtY2loYXNlLmFkcywgYS1jb2hhc2UuYWRiLCAKCWEtY29oYXNlLmFkcywgYS1zd3V3aGEuYWRzLCBhLWNpb3JtdS5hZHMsIGEtY29vcm11LmFkcywgYS1yYnRnc28uYWRzLAoJYS1zdHVuaGEuYWRzLCBhLWNpb3JtYS5hZGIsIGEtY29vcm1hLmFkYiwgYS16dGRlYXUuYWRiLCBhLXp0ZGVhdS5hZHMsIAoJYS16dGV4aW8uYWRiLCBhLXp0ZXhpby5hZHM6IEFkZGl0aW9uIG9mIG51bGwtZXhjbHVzaW9uIHRvIGFub255bW91cwoJYWNjZXNzIHR5cGVzLgoJVXBkYXRlIGRvY3VtZW50YXRpb24uCglNaW5vciByZXdvcmRpbmcuCgoyMDA3LTA0LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHN5c3RlbS1saW51eC1pYTY0LmFkcywgc3lzdGVtLWZyZWVic2QteDg2LmFkcywgc3lzdGVtLWx5bnhvcy1wcGMuYWRzLAoJc3lzdGVtLWx5bnhvcy14ODYuYWRzLCBzeXN0ZW0tbGludXgteDg2XzY0LmFkcywgc3lzdGVtLXRydTY0LmFkcywKCXN5c3RlbS12eHdvcmtzLXNwYXJjdjkuYWRzLCBzeXN0ZW0tc29sYXJpcy14ODYuYWRzLCBzeXN0ZW0taXJpeC1vMzIuYWRzLAoJc3lzdGVtLWlyaXgtbjMyLmFkcywgc3lzdGVtLWhwdXguYWRzLCBzeXN0ZW0tdnh3b3Jrcy1tNjhrLmFkcywKCXN5c3RlbS1saW51eC14ODYuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1taXBzLmFkcywgc3lzdGVtLWludGVyaXguYWRzLAoJc3lzdGVtLXNvbGFyaXMtc3BhcmMuYWRzLCBzeXN0ZW0tc29sYXJpcy1zcGFyY3Y5LmFkcywgc3lzdGVtLXZtcy5hZHMsCglzeXN0ZW0tbWluZ3cuYWRzLCBzeXN0ZW0tdm1zLXpjeC5hZHMsIHN5c3RlbS12eHdvcmtzLXBwYy5hZHMsCglzeXN0ZW0tdnh3b3Jrcy1hbHBoYS5hZHMsIHN5c3RlbS12bXNfNjQuYWRzLCBzeXN0ZW0tZGFyd2luLXBwYy5hZHMsCglzeXN0ZW0tdnh3b3Jrcy14ODYuYWRzLCBzeXN0ZW0tbGludXgtcHBjLmFkcywgc3lzdGVtLWxpbnV4LWhwcGEuYWRzLAogICAgICAgIHN5c3RlbS1ocHV4LWlhNjQuYWRzLCB0YXJncGFybS5hZGIsCgl0YXJncGFybS5hZHMgKEZ1bmN0aW9uc19SZXR1cm5fQnlfRFNQX09uX1RhcmdldCk6IFJlbW92ZWQKCgkqIHN5c3RlbS5hZHM6IE1vdmUgRnVuY3Rpb25zX1JldHVybl9CeV9EU1AgdG8gb2Jzb2xldGUgc2VjdGlvbiwKCWtlcHQgZm9yIGJvb3RzdHJhcCBwdXJwb3NlcyBvbmx5LgoKMjAwNy0wNC0wNiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy1vc2ludGUtbHlueG9zLTMuYWRzLCBzLW9zaW50ZS1ocHV4LmFkcywgcy1vc2ludGUtc29sYXJpcy1wb3NpeC5hZHMsCglzLW9zaW50ZS1mcmVlYnNkLmFkcywgcy1vc2ludGUtYWl4LmFkcywgcy1vc2ludGUtZGFyd2luLmFkcywKCXMtdGFwcm9wLXBvc2l4LmFkYiAoQ3JlYXRlX1Rhc2spOiBGaXggaGFuZGxpbmcgb2YgVGFza19JbmZvLgoJKFBUSFJFQURfU0NPUEVfUFJPQ0VTUywgUFRIUkVBRF9TQ09QRV9TWVNURU0pOiBOZXcgY29uc3RhbnRzLgoKMjAwNy0wNC0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLWV4Y2VwdC5hZGIsIGEtZXhjZXB0LmFkcywgYS1leGNlcHQtMjAwNS5hZHMsIGEtZXhjZXB0LTIwMDUuYWRiCgkoTG9jYWxfUmFpc2UpOiBOZXcgZHVtbXkgcHJvY2VkdXJlIGNhbGxlZCB3aGVuIGEgcmFpc2UgaXMgY29udmVydGVkCgl0byBhIGxvY2FsIGdvdG8uIFVzZWQgZm9yIGRlYnVnZ2VyIHRvIGRldGVjdCB0aGF0IHRoZSBleGNlcHRpb24KCWlzIHJhaXNlZC4KCgkqIGRlYnVnLmFkYjogRG9jdW1lbnQgbmV3IGQuZyBmbGFnIChleHBhbmQgbG9jYWwgcmFpc2Ugc3RhdGVtZW50cyB0bwoJZ290b3MgZXZlbiBpZiBwcmFnbWEgUmVzdHJpY3Rpb24gKE5vX0V4Y2VwdGlvbl9Qcm9wYWdhdGlvbikgaXMgbm90IHNldCkKCgkqIGV4cF9zZWwuYWRiOiBVc2UgTWFrZV9JbXBsaWNpdF9FeGNlcHRpb25fSGFuZGxlcgoKCSogZXhwX2NoMTEuYWRiIChFeHBhbmRfRXhjZXB0aW9uX0hhbmRsZXJzKTogVXNlIG5ldyBmbGFnIC1nbmF0dy54IHRvCglzdXBwcmVzcyB3YXJuaW5ncyBmb3IgdW51c2VkIGhhbmRsZXJzLgoJKFdhcm5fSWZfTm9fUHJvcGFnYXRpb24pOiAgVXNlIG5ldyBmbGFnIC1nbmF0dy54IHRvIHN1cHByZXNzCgl3YXJuaW5ncyBmb3IgcmFpc2Ugc3RhdGVtZW50cyBub3QgaGFuZGxlZCBsb2NhbGx5LgoJKEdldF9SVF9FeGNlcHRpb25fRW50aXR5KTogTmV3IGZ1bmN0aW9uCgkoR2V0X0xvY2FsX0NhbGxfRW50aXR5KTogTmV3IGZ1bmN0aW9uCgkoRmluZF9Mb2NhbF9IYW5kbGVyKTogTmV3IGZ1bmN0aW9uCgkoV2Fybl9JZl9Ob19Qcm9wYWdhdGlvbik6IE5ldyBwcm9jZWR1cmUKCShFeHBhbmRfQXRfRW5kX0hhbmRsZXIpOiBDYWxsIE1ha2VfSW1wbGljaXRfSGFuZGxlcgoJKEV4cGFuZF9FeGNlcHRpb25fSGFuZGxlcnMpOiBNYWpvciBhZGRpdGlvbnMgdG8gZGVhbCB3aXRoIGxvY2FsIGhhbmRsZXJzCgkoRXhwYW5kX05fUmFpc2VfQ29uc3RyYWludF9FcnJvciwgRXhwYW5kX05fUmFpc2VfUHJvZ3JhbV9FcnJvciwKCUV4cGFuZF9OX1JhaXNlX1N0b3JhZ2VfRXJyb3IsIChFeHBhbmRfTl9SYWlzZV9TdGF0ZW1lbnQpOiBBZGQgaGFuZGxpbmcKCWZvciBsb2NhbCByYWlzZQoKCSogZXhwX2NoMTEuYWRzIChHZXRfUlRfRXhjZXB0aW9uX0VudGl0eSk6IE5ldyBmdW5jdGlvbgoJKEdldF9Mb2NhbF9DYWxsX0VudGl0eSk6IE5ldyBmdW5jdGlvbgoKCSogZ25hdGJpbmQuYWRiIChSZXN0cmljdGlvbl9MaXN0KTogQWRkIE5vX0V4Y2VwdGlvbl9Qcm9wYWdhdGlvbiB0byBsaXN0CglvZiByZXN0cmljdGlvbnMgdGhhdCB0aGUgYmluZGVyIHdpbGwgbmV2ZXIgc3VnZ2VzdCBhZGRpbmcuCgoJKiBwYXItY2gxMS5hZGIgKFBfRXhjZXB0aW9uX0hhbmRsZXIpOiBTZXQgTG9jYWxfUmFpc2VfU3RhdGVtZW50cyBmaWVsZAoJdG8gTm9fRWxpc3QuCgoJKiByZXN0cmljdC5hZGIgKENoZWNrX1Jlc3RyaWN0ZWRfVW5pdCk6IEdOQVQuQ3VycmVudF9FeGNlcHRpb24gbWF5IG5vdAoJYmUgd2l0aCdlZCBpbiB0aGUgcHJlc2VuY2Ugb2YgcHJhZ21hIFJlc3RyaWN0aW9uCgkoTm9fRXhjZXB0aW9uX1Byb3BhZ2F0aW9uKS4KCgkqIHNlbS5hZGIgKEFuYWx5emUpOiBBZGQgZW50cmllcyBmb3IgTl9QdXNoIGFuZCBOX1BvcCBub2RlcwoKCSogc2VtX2NoMTEuYWRiIChBbmFseXplX0V4Y2VwdGlvbl9IYW5kbGVyKTogSWYgdGhlcmUgaXMgYSBjaG9pY2UKCXBhcmFtZXRlciwgdGhlbiB0aGUgaGFuZGxlciBpcyBub3QgYSBzdWl0YWJsZSB0YXJnZXQgZm9yIGEgbG9jYWwgcmFpc2UsCglhbmQgdGhpcyBpcyBhIHZpb2xhdGlvbiBvZiByZXN0cmljdGlvbiBOb19FeGNlcHRpb25fUHJvcGFnYXRpb24uCgkoQW5hbHl6ZV9IYW5kbGVkX1N0YXRlbWVudHMpOiBBbmFseXplIGNob2ljZSBwYXJhbWV0ZXJzIGluIGV4Y2VwdGlvbgoJaGFuZGxlcnMgYmVmb3JlIGFuYWx5emluZyBzdGF0ZW1lbnQgc2VxdWVuY2UgKG5lZWRlZCBmb3IgcHJvcGVyCglkZXRlY3Rpb24gb2YgbG9jYWwgcmFpc2Ugc3RhdGVtZW50cykuCgkoQW5hbHl6ZV9SYWlzZV9TdGF0ZW1lbnQpOiBSZXJhaXNlIHN0YXRlbWVudCBpcyBhIHZpb2xhdGlvbiBvZiB0aGUKCU5vX0V4Y2VwdGlvbl9Qcm9wYWdhdGlvbiByZXN0cmljdGlvbi4KCgkqIHMtcmlkZW50LmFkczogQWRkIG5ldyByZXN0cmljdGlvbiBOb19FeGNlcHRpb25fUHJvcGFnYXRpb24KCgkqIHRidWlsZC5hZHMsIHRidWlsZC5hZGIgKE1ha2VfSW1wbGljaXRfRXhjZXB0aW9uX0hhbmRsZXIpOiBOZXcKCWZ1bmN0aW9uLCBsaWtlIE1ha2VfRXhjZXB0aW9uX0hhbmRsZXIgYnV0IHNldHMgTG9jYWxfUmFpc2VfU3RhdGVtZW50cwoJdG8gTm9fTGlzdC4KCShBZGRfVW5pcXVlX1NlcmlhbF9OdW1iZXIpOiBEZWFsIHdpdGggY2FzZSB3aGVyZSB0aGlzIGlzIGNhbGxlZCBkdXJpbmcKCXByb2Nlc3Npbmcgb2YgY29uZmlndXJhdGlvbiBwcmFnbWFzLgoKMjAwNy0wNC0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBQYXQgUm9nZXJzICA8cm9nZXJzQGFkYWNvcmUuY29tPgoJICAgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGctc3RzaWZkLXNvY2tldHMuYWRiOiBOZXcgZmlsZS4KCgkqIGctc29jdGhpLmFkcywgZy1zb2NrZXQuYWRiLCBnLXNvY3RoaS12eHdvcmtzLmFkYiwKCWctc29jdGhpLXZ4d29ya3MuYWRzLCBnLXNvY3RoaS1taW5ndy5hZHMsIGctc29jdGhpLXZtcy5hZHMsCglnLXNvY3RoaS12bXMuYWRiOiBNb3ZlIHNpZ25hbGxpbmcKCWZkIG1hbmFnZW1lbnQgdG8gYSBuZXN0ZWQgcGFja2FnZSwgc28gdGhhdCB0aGV5IGNhbiBjb252ZW5pZW50bHkgYmUKCW1vdmVkIHRvIGEgc3VidW5pdCB0aGF0IGlzIHNoYXJlZCBhY3Jvc3MgV2luZG93cywgVk1TLCBhbmQgVnhXb3JrcwoJKEFkYSBpbXBsZW1lbnRhdGlvbikgb3IgY29tcGxldGVkIHdpdGggaW1wb3J0ZWQgYm9kaWVzIGZyb20gc29ja2V0LmMKCShVTklYIGNhc2UpLgoJKFJlYWRfU2lnbmFsbGluZ19GZCwgV3JpdGVfU2lnbmFsbGluZ19GZCwgQ3JlYXRlX1NpZ25hbGxpbmdfRmRzKTogTmV3CglzdWJwcm9ncmFtcy4KCShDaGVja19TZWxlY3Rvcik6IFVzZSBSZWFkX1NpZ25hbGxpbmdfRmQgdG8gcmVhZCBhbmQgZGlzY2FyZCBkYXRhIGZyb20KCXRoZSBzaWduYWxsaW5nIGZpbGUgZGVzY3JpcHRvci4KCShBYm9ydF9TZWxlY3Rvcik6IFVzZSBXcml0ZV9TaWduYWxsaW5nX0ZkIHRvIHdyaXRlIGR1bW15IGRhdGEgdG8gdGhlCglzaWduYWxsaW5nIGZpbGUgZGVzY3JpcHRvci4KCShDcmVhdGVfU2VsZWN0b3IpOiBVc2UgbmV3IEMtaW1wb3J0ZWQgc3VicHJvZ3JhbSBDcmVhdGVfU2lnbmFsbGluZ19GZHMKCWluc3RlYWQgb2YgY3JlYXRpbmcgYSBwYWlyIG9mIHNvY2tldHMgZm9yIHNpZ25hbGxpbmcgaGVyZS4KCgkqIGctc29jdGhpLmFkYjogRGl0dG8uCglTZXQgdGhlIHJ1bnRpbWUgcHJvY2VzcyB0byBpZ25vcmUgU0lHUElQRXMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAoJbmVpdGhlciBTT19OT1NJR1BJUEUgbm9yIE1TR19OT1NJR05BTCBmdW5jdGlvbmFsaXR5LgoKCSogZy1zb2N0aGktbWluZ3cuYWRiOiBEaXR0by4KCShXU19WZXJzaW9uKTogVXNlIFdpbmRvd3MgMi4yLgoJVXNlIFdpbnNvY2sgMi4yIChpbnN0ZWFkIG9mIDEuMSkgZm9yIHRoZSBHTkFULlNvY2tldCBBUEkuCgoJKiBnLXNvbGlvcC1taW5ndy5hZHM6IExpbmsgd2l0aCB3czJfMzIgZm9yIFdpbmRvd3MgMi54IHN1cHBvcnQuCglVc2UgV2luc29jayAyLjIgKGluc3RlYWQgb2YgMS4xKSBmb3IgdGhlIEdOQVQuU29ja2V0IEFQSS4KCgkqIE1ha2VmaWxlLmluOiBOZXcgbGliZ25hdCBwYWlyIGctc3RzaWZkLmFkYjxnLXN0c2lmZC1zb2NrZXRzLmFkYi4KCWFkZGVkIEdOQVQgYnl0ZSBzd2FwcGluZyBmYWNpbGl0eQoJVXBkYXRlIEZyZWVCU0QgVEhSRUFEU0xJQiBmcm9tIC1sY19yIHRvIC1scHRocmVhZCwgZm9yIEZyZWVCU0QgNi4KCgkqIGctYnl0c3dhLmFkYiwgZy1ieXRzd2EteDg2LmFkYiwgZy1ieXRzd2EuYWRzOiBOZXcgZmlsZXMuCgoJKiBzb2NrZXQuYyAoX19nbmF0X3JlYWRfc2lnbmFsbGluZ19mZCwgX19nbmF0X3dyaXRlX2NvbnRyb2xsaW5nX2ZkKToKCU5ldyBzdWJwcm9ncmFtcy4KCShfX2duYXRfY3JlYXRlX3NpZ25hbGxpbmdfZmRzKTogTmV3IHN1YnByb2dyYW0uCglTZXQgdGhlIHJ1bnRpbWUgcHJvY2VzcyB0byBpZ25vcmUgU0lHUElQRXMgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAoJbmVpdGhlciBTT19OT1NJR1BJUEUgbm9yIE1TR19OT1NJR05BTCBmdW5jdGlvbmFsaXR5LgoKMjAwNy0wNC0wNiAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGEtY2FsZW5kLXZtcy5hZHMsIGEtY2FsZW5kLmFkcywgYS1jYWxlbmQuYWRiLCBhLWNhbGVuZC12bXMuYWRiOgoJTmV3IHZlcnNpb24gb2YgQWRhLkNhbGVuZGFyIHdoaWNoIHN1cHBvcnRzIHRoZSBuZXcgdXBwZXIgYm91bmQgb2YgQWRhCgl0aW1lICgyMzk5LTEyLTMxIDg2XzM5OS45OTk5OTk5OTkpLgoJVGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoZSBwYWNrYWdlOgoJIC0gTmV3IHJlcHJlc2VudGF0aW9uIG9mIHRpbWUgYXMgY291bnQgb2YgbmFub3NlY29uZHMgc2luY2UgdGhlIHN0YXJ0IG9mCgkgICBBZGEgdGltZSAoMTkwMS0xLTEgMC4wKS4KCSAtIFRhcmdldCBpbmRlcGVuZGVudCBTcGxpdCBhbmQgVGltZV9PZiByb3V0aW5lcyB3aGljaCBzZXJ2aWNlIGJvdGgKCSAgIEFkYSA5NSBhbmQgQWRhIDIwMDUgY29kZS4KCSAtIFRhcmdldCBpbmRlcGVuZGVudCBpbnRlcmZhY2UgdG8gdGhlIEFkYSAyMDA1IGNoaWxkcmVuIG9mIENhbGVuZGFyLgoJIC0gSW50ZWdyYXRlZCBsZWFwIHNlY29uZHMgaW50byBBZGEgOTUgYW5kIEFkYSAyMDA1IG1vZGUuCgkgLSBIYW5kbGluZyBvZiBub24tbGVhcCBjZW50ZW5pYWwgeWVhcnMuCgkgLSBVcGRhdGVkIGNsb2NrIGZ1bmN0aW9uLgoJIC0gVXBkYXRlZCBhcml0aG1ldGljIGFuZCBjb21wYXJpc29uIG9wZXJhdG9ycy4KCgkqIGEtY2FsZGVsLmFkYiAoVG9fRHVyYXRpb24pOiBBZGQgY2FsbCB0byB0YXJnZXQgaW5kZXBlbmRlbnQgcm91dGluZSBpbgoJQWRhLkNhbGVuZGFyIHRvIGhhbmRsZSB0aGUgY29udmVyc2lvbiBvZiB0aW1lIHRvIGR1cmF0aW9uLgoKCSogc3lzZGVwLmMgKF9fZ25hdF9sb2NhbHRpbWVfdHpvZmYpOiBUZXN0IHRpbWV6b25lIGJlZm9yZSBzZXR0aW5nIG9mZgoJKFVUQyBPZmZzZXQpLgoJSWYgdGltZXpvbmUgaXMgb2J2aW91c2x5IGluY29ycmVjdCAob3V0c2lkZSBvZiAtMTQgaG91cnMgLi4gMTQgaG91cnMpLAoJc2V0IG9mZiB0byAwLgoJKF9fZ25hdF9sb2NhbHRpbWVfdHpvZmYgZm9yIEx5bnggYW5kIFZ4V29ya3MpOiBFdmVuIHRob3VnaCB0aGVzZQoJdGFyZ2V0cyBkbyBub3QgaGF2ZSBhIG5hdHVyYWwgdGltZSB6b25lLCBHTVQgaXMgdXNlZCBhcyBhIGRlZmF1bHQuCgkoX19nbmF0X2dldF90YXNrX29wdGlvbnMpOiBOZXcuCgoJKiBhLWRpcmVjdC5hZGIgKE1vZGlmaWNhdGlvbl9UaW1lKTogQWRkIHdpdGggYW5kIHVzZSBjbGF1c2VzIGZvcgoJQWRhLkNhbGVuZGFyIGFuZCBBZGEuCglDYWxlbmRhci5Gb3JtYXR0aW5nLiBSZW1vdmUgd2l0aCBjbGF1c2UgZm9yIEFkYS5VbmNoZWNrZWRfQ29udmVyc2lvbgoJc2luY2UgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4KCShEdXJhdGlvbl9Ub19UaW1lKTogUmVtb3ZlZC4KCShPU19UaW1lX1RvX0xvbmdfSW50ZWdlcik6IFJlbW92ZWQuCgkoTW9kaWZpY2F0aW9uX1RpbWUpOiBSZXdyaXR0ZW4gdG8gdXNlIEFkYS5DYWxlbmRhciBhbmQgQWRhLkNhbGVuZGFyLgoJRm9ybWF0dGluZyBUaW1lX09mIHJvdXRpbmVzIHdoaWNoIGF1dG9tYXRpY2FsbHkgaGFuZGxlIHRpbWUgem9uZXMsCglidWZmZXIgcGVyaW9kcyBhbmQgbGVhcCBzZWNvbmRzLgoKCSogYS1jYWxhcmkuYWRzLCBhLWNhbGFyaS5hZGIgKCIrIiwgIi0iLCBEaWZmZXJlbmNlKTogQWRkIGNhbGxzIHRvCgl0YXJnZXQgaW5kZXBlbmRlbnQgcm91dGluZXMgaW4gQWRhLkNhbGVuZGFyLgoKCSogYS1jYWxmb3IuYWRzLCBhLWNhbGZvci5hZGI6IAoJQ29kZSBjbGVhbnVwIGFuZCBhZGRpdGlvbiBvZiB2YWxpZGl0eSBjaGVja3MgaW4gdmFyaW91cyByb3V0aW5lcy4KCShEYXlfT2ZfV2VlaywgU3BsaXQsIFRpbWVfT2YpOiBBZGQgY2FsbCB0byB0YXJnZXQgaW5kZXBlbmRlbnQgcm91dGluZSBpbgoJQWRhLkNhbGVuZGFyLgoKCSogYS1jYXRpem8uYWRzLCBhLWNhdGl6by5hZGIgKFVUQ19UaW1lX09mZnNldCk6IEFkZCBjYWxsIHRvIHRhcmdldAoJaW5kZXBlbmRlbnQgcm91dGluZSBpbiBBZGEuQ2FsZW5kYXIuCgoyMDA3LTA0LTA2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogYWRhaW50LmM6IAoJKGNvbnZlcnRfYWRkcmVzc2VzKTogQWRqdXN0IHByb3RvdHlwZSBhbmQgZHVtbXkgZGVmaW5pdGlvbiB0byBleHBlY3QgYW4KCSBleHRyYSBmaWxlX25hbWUgYXJndW1lbnQuCgoJKiBnbWVtLmMgKF9fZ25hdF9jb252ZXJ0X2FkZHJlc3Nlcyk6IFdyYXBwZXIgdG8gY29udmVydF9hZGRyZXNzZXMsCglmaWxsaW5nIHRoZSBub3cgZXhwZWN0ZWQgZmlsZV9uYW1lIGFyZ3VtZW50IHdpdGggdGhlIGFwcHJvcHJpYXRlCglhcmd2WzBdIGV4cGFuc2lvbi4KCShfX2duYXRfZ21lbV9hMmxfaW5pdGlhbGl6ZSwgX19nbmF0X2dtZW1fcmVhZF9uZXh0X2ZyYW1lKTogVXNlIGl0LgoJKHRyYWNlYmspOiBBcnJheSBvZiB2b2lkICogaW5zdGVhZCBvZiBjaGFyICosIGNvcnJlc3BvbmRpbmcgdG8gd2hhdAoJIGNvbnZlcnRfYWRkcmVzc2VzIGV4cGVjdHMuCgkoZXhlbmFtZSk6IE5ldyBzdGF0aWMgZ2xvYmFsLCB0byBob2xkIHRoZSBleGVjdXRhYmxlIGZpbGUgbmFtZSB0byBiZQoJdXNlZCBpbiBhbGwgY29udmVydF9hZGRyZXNzZXMgaW52b2NhdGlvbnMuCgkoZ21lbV9yZWFkX2JhY2t0cmFjZSwgX19nbmF0X2dtZW1fc3ltYm9saWMpOiBBY2NvdW50IGZvciB0cmFjZWJrIHR5cGUKCWNoYW5nZS4KCShfX2duYXRfZ21lbV9hMmxfaW5pdGlhbGl6ZSk6IFJlc29sdmUgZXhlbmFtZS4KCShfX2duYXRfY29udmVydF9hZGRyZXNzZXMpOiBVc2UgZXhlbmFtZSBhcyB0aGUgY29udmVydF9hZGRyZXNzZXMKCWZpbGVfbmFtZSBhcmd1bWVudC4KCgkqIGctdHJhc3ltLmFkYiAoU3ltYm9saWNfVHJhY2ViYWNrKTogQWRqdXN0IHNpZ25hdHVyZSBvZiBpbXBvcnRlZAoJImNvbnZlcnRfYWRkcmVzc2VzIiwgbm93IGV4cGVjdGluZyBhIGZpbGVuYW1lIGFyZ3VtZW50LiBJbXBvcnQgdGhlCgluZWNlc3NhcnkgZW50aXRpZXMgdG8gY29tcHV0ZSB0aGUgZmlsZW5hbWUgdG8gdXNlIGFuZCBwYXNzIGl0IHRvCgljb252ZXJ0X2FkZHJlc3Nlcy4KCjIwMDctMDQtMDYgIE1hdHQgR2luZ2VsbCAgPGdpbmdlbGxAYWRhY29yZS5jb20+CgoJKiBzeXN0ZW0tYWl4LmFkczogQmFjayBvdXQgcHJldmlvdXMgY2hhbmdlLgoJKEZ1bmN0aW9uc19SZXR1cm5fQnlfRFNQKTogUmVtb3ZlZAoKMjAwNy0wNC0wNiAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogcy1vc3ByaW0tbWluZ3cuYWRiIChUaW1lZF9EZWxheSk6IFVzZSB0aGUgcmlnaHQgY2xvY2sgKHN0YW5kYXJkIG9uZQoJb3IgdGhlIG1vbm90b25pYyB1c2VkIGJ5IEFkYS5SZWFsX1RpbWUpIHRvIGNvbXB1dGUgdGhlIHNsZWVwIGR1cmF0aW9uCglvbiBXaW5kb3dzLgoKMjAwNy0wNC0wNiAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLXZ4d29ya3MuYWRzLCBzLW9zaW50ZS12eHdvcmtzLmFkYiAoVlhfRlBfVEFTSyk6IFJlbW92ZSB0aGlzCglmdW5jdGlvbi4gSXRzIHZhbHVlIGNoYW5nZXMgaW4gZGlmZmVyZW50IFZ4V29ya3MgdmVyc2lvbnMsIGFuZCBpdCBpcwoJbm93IGhhbmRsZWQgYnkgdGhlIGZ1bmN0aW9uIF9fZ25hdF9nZXRfdGFza19vcHRpb25zLgoKCSogcy10YXByb3Atdnh3b3Jrcy5hZGIgKENyZWF0ZV9UYXNrKTogQ2FsbCB0aGUgZnVuY3Rpb24KCV9fZ25hdF9nZXRfdGFza19vcHRpb25zIHRvIGdldCB0aGUgcmVxdWlyZWQgb3B0aW9ucyBmb3IgY3JlYXRpbmcgYSB0YXNrLgoKMjAwNy0wNC0wNiAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBhZGFpbnQuYzogUmVwbGFjZSBhbGwgb2NjdXJlbmNlcyBvZiBTMldTIHRvIFMyV1NVIChVbmljb2RlKSB3aGVuCglkZWFsaW5nIHdpdGggZmlsZW5hbWUuCgkoX19nbmF0X2ZvcGVuKTogQ2FsbCB0aGUgcHJvcGVyIG1hY3JvICg4Yml0cyBvciBVVEY4KSB0byBjb252ZXJ0IHRoZQoJZmlsZW5hbWUgZnJvbSBhIHN0YW5kYXJkIHN0cmluZyB0byBhIHdpZGUtc3RyaW5nIGRlcGVuZGluZyBvbiB0aGUKCWVuY29kaW5nIHZhbHVlLgoJKF9fZ25hdF9mcmVvcGVuKTogSWRlbS4KCShfX2duYXRfY3VycmVudF90aW1lKTogTmV3IGZ1bmN0aW9uICh3cmFwcGVyIGZvciB0aW1lKDMpIHN0YW5kYXJkIEMKCWZ1bmN0aW9uKS4KCgkqIGctb3NfbGliLmFkcyAoQ3VycmVudF9UaW1lKTogTmV3IGZ1bmN0aW9uLiBSZXR1cm5zIHRoZSBjdXJyZW50CglzeXN0ZW0gdGltZSBhcyBhbiBPU19UaW1lIHZhbHVlLgoKCSogcy1vc3ByaW0uYWRzIChDbG9jayk6IEFkZCBtb3JlIHByZWNpc2UgZGVmaW5pdGlvbiBvZiBVTklYIGVwb2NoLgoJKE1vbm90b25pY19DbG9jayk6IFNhbWUuCgoyMDA3LTA0LTA2ICBRdWVudGluIE9jaGVtICA8b2NoZW1AYWRhY29yZS5jb20+CgoJKiBhbGkuYWRzLCBhbGkuYWRiIChHZXRfTmF0KTogUmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBmaWxlIGN1cnNvciBpcwoJbm90IG9uIGEgbmF0dXJhbC4KCShTY2FuX0FMSSk6IENhbmNlbCB0aGUgeHJlZiBsaW5lIGlmIHRoZXJlIGhhcyBiZWVuIGEgcmVhZGluZyBBTEkgZXJyb3IuCgoyMDA3LTA0LTA2ICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogYS1yZXRpZGUuYWRiOiBBZGQgZWxhYm9yYXRpb24gY29kZSB0byBlbnN1cmUgdGhhdCB0aGUgdGFza2luZyBydW4KCXRpbWUgaXMgaW5pdGlhbGl6ZWQgd2hlbiB1c2luZyBkZWxheSBvcGVyYXRpb25zIGV2ZW4gd2hlbiBubyB0YXNrIGlzCgljcmVhdGVkLgoKMjAwNy0wNC0wNiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogYS10YWdzLmFkcywgYS10YWdzLmFkYiAoT2JqZWN0X1NwZWNpZmljX0RhdGEpOiBSZW1vdmUKCWNvbXBvbmVudCBOdW1fUHJpbV9PcHMuCgkoU2V0X051bV9QcmltX09wcyk6IFJlbW92ZWQuCglSZW1vdmUgYWxsIHRoZSBhc3NlcnRpb25zIGJlY2F1c2UgYWxsIHRoZSByb3V0aW5lcyBvZiB0aGlzCglwYWNrYWdlIGFyZSBpbmxpbmUgYWx3YXlzLgoJKEdldF9PZmZzZXRfSW5kZXgpOiBBZGQgc3VwcG9ydCB0byBwcmltYXJ5IGRpc3BhdGNoIHRhYmxlcy4KCU1vdmUgdGhlIGRvY3VtZW50YXRpb24gYWJvdXQgdGhlIGRpc3BhdGNoIHRhYmxlIHRvIGEtdGFncy5hZHMKCShTZXRfRXh0ZXJuYWxfVGFnKTogUmVtb3ZlZAoJKEluaGVyaXRfVFNEKTogUmVtb3ZlZC4KCShJbnRlcmZhY2VfRGF0YV9FbGVtZW50LCBJbnRlcmZhY2VzX0FycmF5LCBJbnRlcmZhY2VfRGF0YSk6IERlY2xhcmF0aW9ucwoJbW92ZWQgdG8gYS10YWdzLmFkcwoJKERpc3BsYWNlLCBJV19NZW1iZXJzaGlwLCBJbmhlcml0X1RTRCwgSW50ZXJmYWNlX0FuY2VzdG9yX1RhZ3MsCglSZWdpc3Rlcl9JbnRlcmZhY2VfVGFnLCBTZXRfT2Zmc2V0X1RvX1RvcCk6IFVwZGF0ZSBhbGwgdGhlIG9jY3VycmVuY2VzCglvZiB0aGUgVFNEIGZpZWxkICJUYWJsZSIgYmVjYXVzZSB0aGlzIGZpZWxkIGhhcyBiZWVuIHJlbmFtZWQgdG8KCSJJZmFjZXNfVGFibGUiLgoJKEluaGVyaXRfQ1BQX0RUKTogUmVtb3ZlZC4KCShLX1R5cGVpbmZvLCBLX09mZnNldF9Ub19Ub3AsIEtfVGFnZ2VkX0tpbmQsIEtfU2lnbmF0dXJlLAoJQ3N0cmluZywgVGFnX1RhYmxlLCBUeXBlX1NwZWNpZmljX0RhdGEsIERpc3BhdGNoX1RhYmxlKTogVGhlc2UKCWRlY2xhcmF0aW9ucyBoYXZlIGJlZW4gbW92ZWQgdG8gYS10YWdzLmFkcwoJKENoZWNrX1NpemUpOiBSZW1vdmVkLgoJKEV4cGFuZGVkX05hbWUpOiBVcGRhdGVkIHRvIGdldCBhY2Nlc3MgdG8gdGhlIG5ldyBmaWVsZCBvZiBUU0QKCWNvbnRhaW5pbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIGV4cGFuZGVkIG5hbWUuCgkoR2V0X0FjY2Vzc19MZXZlbC9TZXRfQWNjZXNzX0xldmVsKTogUmVtb3ZlZC4KCShHZXRfUHJlZGVmaW5lZF9QcmltX09wX0FkZHJlc3MpOiBSZW1vdmVkLgoJKFNldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyk6IFJlbW92ZWQuCgkoR2V0X1ByaW1fT3BfQWRkcmVzcy9TZXRfUHJpbV9PcF9BZGRyZXNzKTogUmVtb3ZlZC4KCShHZXRfUmVtb3RlbHlfQ2FsbGFibGUvU2V0X1JlbW90ZWx5X0NhbGxhYmxlKTogUmVtb3ZlZC4KCShTZXRfRXhwYW5kZWRfTmFtZSk6IFJlbW92ZWQuCgkoSW5oZXJpdF9EVCk6IFJlbW92ZWQuCgkoSW5oZXJpdF9DUFBfRFQpOiBSZW1vdmVkLgoJKFNldF9SQ19PZmZzZXQpOiBSZW1vdmVkLgoJKFNldF9UU0QpOiBSZW1vdmVkLgoJKEJhc2VfQWRkcmVzcyk6IE5ldyBmdW5jdGlvbiB0aGF0IGRpc3BsYWNlcyAidGhpcyIgdG8gcG9pbnQgdG8gdGhlIGJhc2UKCW9mIHRoZSBvYmplY3QgKHRoYXQgaXMsIHRvIHBvaW50IHRvIHRoZSBwcmltYXJ5IHRhZyBvZiB0aGUgb2JqZWN0KS4KCjIwMDctMDQtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfY2gzLmFkcywgZXhwX2NoMy5hZGIgKEFuYWx5emVfTl9GdWxsX1R5cGVfRGVjbGFyYXRpb24pOiBGb3IgYW4KCWFub255bW91cyBhY2Nlc3MgY29tcG9uZW50LCBkbyBub3QgY3JlYXRlIGEgbWFzdGVyX2lkIGlmIHR5cGUgYWxyZWFkeQoJaGFzIG9uZSwgYXMgbWF5IGhhcHBlbiBpZiB0aGUgdHlwZSBpcyBhIHN1YmNvbXBvbmVudCBvZiBhIHBhY2tlZCBhcnJheQoJdHlwZS4KCShCdWlsZF9Jbml0X1Byb2NlZHVyZSwgQ29tcG9uZW50X05lZWRzX1NpbXBsZV9Jbml0aWFsaXphdGlvbiwKCUluaXRpYWxpemVfVGFnKTogUmVtb3ZlIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbGQgQ1BQIHByYWdtYXMuCglDUFBfVmlydHVhbCBhbmQgQ1BQX1Z0YWJsZSBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KCShCdWlsZF9PZmZzZXRfVG9fVG9wX0ludGVybmFsKTogQWRkIHN1cHBvcnQgZm9yIGNvbmN1cnJlbnQgcmVjb3JkIHR5cGVzCgkoQnVpbGRfT2Zmc2V0X1RvX1RvcF9GdW5jdGlvbnMpOiBBZGQgc3VwcG9ydCBmb3IgY29uY3VycmVudCByZWNvcmQgdHlwZXMKCShGcmVlemVfUmVjb3JkX1R5cGUpOiBSZW1vdmUgY2FsbCB0bwoJSW5pdF9QcmVkZWZpbmVkX0ludGVyZmFjZV9QcmltaXRpdmVzLgoJKEluaXRfU2Vjb25kYXJ5X1RhZ3MuSW5pdGlhbGl6ZV9UYWcpOiBOZXcgc3VicHJvZ3JhbSBjb250YWluaW5nIGFsbCB0aGUKCWNvZGUgcmVxdWlyZWQgdG8gaW5pdGlhbGl6ZSB0aGUgdGFncyBvZiB0aGUgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlcy4KCVRoaXMgbGVhdmVzIHRoZSBhbGdvcml0bSBtb3JlIGNsZWFyLgoJKEluaXRfU2Vjb25kYXJ5X1RhZ3MpOiBBZGQgc3VwcG9ydCBmb3IgY29uY3VycmVudCByZWNvcmQgdHlwZXMKCShNYWtlX1ByZWRlZmluZWRfUHJpbWl0aXZlX1NwZWNzKTogQ29kZSBjbGVhbnVwLgoJKFByZWRlZmluZWRfUHJpbWl0aXZlX0JvZGllcyk6IENvZGUgY2xlYW51cC4KCShCdWlsZF9NYXN0ZXJfUmVuYW1pbmcpOiBOZXcgbG9jYWwgc3VicHJvZ3JhbS4KCShFeHBhbmRfTl9GdWxsX1R5cGVfRGVjbGFyYXRpb24pOiBCdWlsZCB0aGUgbWFzdGVyX2lkIGFzc29jaWF0ZWQgd2l0aAoJYW5vbnltb3VzIGFjY2VzcyB0byB0YXNrIHR5cGUgY29tcG9uZW50cy4KCShFeHBhbmRfTl9TdWJ0eXBlX0luZGljYXRpb24pOiBUaGUgYm91bmRzIG9mIGEgcmFuZ2UgY29uc3RyYWludCBpbiBhCglzdWJ0eXBlIGluZGljYXRpb24gYXJlIHJlc29sdmVkIGR1cmluZyBhbmFseXNpcywgYW5kIG11c3Qgbm90IGJlIGRvbmUKCWhlcmUuCgkoU3RyZWFtX09wZXJhdGlvbl9PSyk6IENoZWNrIFJlc3RyaWN0aW9uX0FjdGl2ZSBiZWZvcmUgUlRFX0F2YWlsYWJsZS4KCjIwMDctMDQtMDYgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fVHlwZV9Db252ZXJzaW9uKTogUmVtb3ZlIHNwZWNpYWwgcHJvY2Vzc2luZwoJZm9yIGNvbnZlcnNpb24gb2YgYSBGbG9hdF9UeXBlJ1RydW5jYXRpb24gdG8gaW50ZWdlci4KCgkqIGV4cF9hdHRyLmFkYiAoSXNfSW5saW5lX0Zsb2F0aW5nX1BvaW50X0F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbiB0bwoJY2hlY2sgaWYgYSBub2RlIGlzIGFuIGF0dHJpYnV0ZSB0aGF0IGNhbiBiZSBoYW5kbGVkIGRpcmVjdGx5IGJ5IHRoZQoJYmFjayBlbmQuCgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSk6IFN1cHByZXNzIGV4cGFuc2lvbiBvZiBmbG9hdGluZy1wb2ludAoJYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBoYW5kbGVkIGRpcmVjdGx5IGJ5IHRoZSBiYWNrIGVuZC4KCShFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlLCBjYXNlICdBY2Nlc3MgYW5kICdVbmNoZWNrZWRfQWNjZXNzKToKCXVzZSBuZXcgcHJlZGljYXRlIElzX0FjY2Vzc19Qcm90ZWN0ZWRfU3VicHJvZ3JhbV9UeXBlLgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UsIGNhc2UgJ1dyaXRlKTogVGhlIHJlZmVyZW5jZSBpcyBsZWdhbCBmb3IKCWFuZCBVbmNoZWNrZWRfVW5pb24gaWYgaXQgaXMgZ2VuZXJhdGVkIGFzIHBhcnQgb2YgdGhlIGRlZmF1bHQgIE91dHB1dAoJcHJvY2VkdXJlIGZvciBhIHR5cGUgd2l0aCBkZWZhdWx0IGRpc2NyaW1pbmFudHMuCgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSk6IEF2b2lkIHRoZSBleHBhbnNpb24gb2YgZGlzcGF0Y2hpbmcgY2FsbHMKCWlmIHdlIGFyZSBjb21waWxpbmcgdW5kZXIgcmVzdHJpY3Rpb24gTm9fRGlzcGF0Y2hpbmdfQ2FsbHMuCgkoQ29uc3RyYWluZWQpOiBVc2UgVW5kZXJseWluZ19UeXBlLCBpbiBjYXNlIHRoZSB0eXBlIGlzIHByaXZhdGUgd2l0aG91dAoJZGlzY3JpbWluYW50cywgYnV0IHRoZSBmdWxsIHR5cGUgaGFzIGRpc2NyaW1pbmFudHMuCgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSk6IFJlcGxhY2UgY2FsbCB0byBHZXRfQWNjZXNzX0xldmVsIGJ5CgljYWxsIHRvIEJ1aWxkX0dldF9BY2Nlc3NfTGV2ZWwuCgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSk6IFRoZSB1c2Ugb2YgJ0FkZHJlc3Mgd2l0aCBjbGFzcy13aWRlCglpbnRlcmZhY2Ugb2JqZWN0cyByZXF1aXJlcyBhIGNhbGwgdG8gdGhlIHJ1bi10aW1lIHN1YnByb2dyYW0gdGhhdAoJcmV0dXJucyB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBvYmplY3QuCgkoVmFsaWRfQ29udmVyc2lvbik6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSBvbiBpbGxlZ2FsIGF0dGVtcHQgdG8gc3RvcmUKCWFuIGFub255bW91cyBhY2Nlc3MgdG8gc3VicHJvZ3JhbSB2YWx1ZSBpbnRvIGEgcmVjb3JkIGNvbXBvbmVudC4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0VxdWFsaXR5X09wKTogRGV0ZWN0IGFtYmlndWl0eSBmb3IgIlgnQWNjZXNzID0KCW51bGwiLgoJKFNpbXBsaWZ5X1R5cGVfQ29udmVyc2lvbik6IE5ldyBwcm9jZWR1cmUgdGhhdCBwZXJmb3JtcyBzaW1wbGlmaWNhdGlvbgoJb2YgSW50X1R5cGUgKEZsb2F0X1R5cGUnVHJ1bmNhdGlvbiAoWCkpLgoJKFJlc29sdmVfVHlwZV9Db252ZXJzaW9uKTogQ2FsbCBhYm92ZSBwcm9jZWR1cmUgYWZ0ZXIgcmVzb2x2aW5nIG9wZXJhbmQKCWFuZCBiZWZvcmUgcGVyZm9ybWluZyBjaGVja3MuIFRoaXMgcmVwbGFjZXMgdGhlIGV4aXN0aW5nIGluZWZmZWN0aXZlCgljb2RlIGluIEV4cF9DaDQuCgkoU2V0X1N0cmluZ19MaXRlcmFsX1N1YnR5cGUpOiBXaGVuIGNyZWF0aW5nIHRoZSBpbnRlcm5hbCBzdGF0aWMgbG93ZXIKCWJvdW5kIHN1YnR5cGUgZm9yIGEgc3RyaW5nIGxpdGVyYWwsIHVzZSBhIG5ld2x5IGNyZWF0ZWQgY29weSBvZiB0aGUKCXN1YnRyZWUgcmVwcmVzZW50aW5nIHRoZSBsb3dlciBib3VuZC4KCShSZXNvbHZlX0NhbGwpOiBFeGNsdWRlIGJ1aWxkLWluLXBsYWNlIGZ1bmN0aW9uIGNhbGxzIGZyb20gdHJhbnNpZW50CglzY29wZSB0cmVhdG1lbnQuIFVwZGF0ZSBjb21tZW50cyB0byBkZXNjcmliZSB0aGlzIGV4Y2VwdGlvbi4KCShSZXNvbHZlX0VxdWFsaXR5X09wKTogSW4gY2FzZSBvZiBkaXNwYXRjaGluZyBjYWxsIGNoZWNrIHZpb2xhdGlvbiBvZgoJcmVzdHJpY3Rpb24gTm9fRGlzcGF0Y2hpbmdfQ2FsbHMuCgkoUmVzb2x2ZV9DYWxsKTogSWYgdGhlIGNhbGwgcmV0dXJucyBhbiBhcnJheSwgdGhlIGNvbnRleHQgaW1wb3NlcyB0aGUKCWNvbXBvbmVudCB0eXBlIG9mIHRoZSBhcnJheSwgYW5kIHRoZSBmdW5jdGlvbiBoYXMgb25lIG5vbi1kZWZhdWx0ZWQKCXBhcmFtZXRlciwgcmV3cml0ZSB0aGUgY2FsbCBhcyB0aGUgaW5kZXhpbmcgb2YgYSBjYWxsIHdpdGggYSBzaW5nbGUKCXBhcmFtZXRlciwgdG8gaGFuZGxlIGFuIEFkYSAyMDA1IHN5bnRhY3RpYyBhbWJpZ3VpdHkgZm9yIGNhbGxzIHdyaXR0ZW4KCWluIHByZWZpeCBmb3JtLgoJKFJlc29sdmVfQWN0dWFscyk6IElmIGFuIGFjdHVhbCBpcyBhbiBhbGxvY2F0b3IgZm9yIGFuIGFjY2VzcyBwYXJhbWV0ZXIsCgl0aGUgbWFzdGVyIG9mIHRoZSBjcmVhdGVkIG9iamVjdCBpcyB0aGUgaW5uZXJtb3N0IGVuY2xvc2luZyBzdGF0ZW1lbnQuCgkoUmVtb3ZlX0NvbnZlcnNpb25zKTogRm9yIGEgYmluYXJ5IG9wZXJhdG9yLCBjaGVjayBpZiB0eXBlIG9mIHNlY29uZAoJZm9ybWFsIGlzIG51bWVyaWMsIHRvIGNoZWNrIGlmIGFuIGFic3RyYWN0IGludGVycHJldGF0aW9uIGlzIHByZXNlbnQKCWluIHRoZSBjYXNlIG9mIGV4cG9uZW50aWF0aW9uIGFzIHdlbGwuCgoyMDA3LTA0LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogYXRyZWUuaCwgYXRyZWUuYWRzLCBhdHJlZS5hZGIgKENvcHlfTm9kZV9XaXRoX1JlcGxhY2VtZW50KTogV2hlbgoJY29weWluZyBhIHBhcmFtZXRlciBsaXN0IGluIGEgY2FsbCwgc2V0IHByb3Blcmx5IHRoZSBGaXJzdF9OYW1lZF9Gb3JtYWwKCWFuZCBOZXh0X05hbWVkX0Zvcm1hbCBmaWVsZHMgaW4gdGhlIG5ldyBsaXN0IGFuZCBpbiB0aGUgZW5jbG9zaW5nIGNhbGwuCgkoV2F0Y2hfTm9kZSxOZXdfTm9kZV9CcmVha3BvaW50LE5ld19Ob2RlX0RlYnVnZ2luZ19PdXRwdXQpOiBTaG9ydGVuCgluYW1lcywgdG8gZWFzZSB0eXBpbmcgaW4gdGhlIGRlYnVnZ2VyLiBJbXByb3ZlIGNvbW1lbnRzLgoJKFdhdGNoX05vZGUpOiBOZXcgdmFyaWFibGUsIGludGVuZGVkIHRvIGJlIHNldCBpbiB0aGUgZGVidWdnZXIuCgkoTmV3X05vZGVfQnJlYWtwb2ludCk6IE5ldyBkby1ub3RoaW5nIHByb2NlZHVyZSB0byBzZXQgYSBicmVha3BvaW50IG9uLAoJY2FsbGVkIHdoZW4gdGhlIHdhdGNoZWQgbm9kZSBpcyBjcmVhdGVkLgoJKE5ld19Ob2RlX0RlYnVnZ2luZ19PdXRwdXQpOiBDb21iaW5lZCB2ZXJzaW9uIG9mIGxvY2FsIHByb2NlZHVyZXMKCU5ld19Ob2RlX0RlYnVnZ2luZ19PdXRwdXQgYW5kIE5ld19FbnRpdHlfRGVidWdnaW5nX091dHB1dCwgbm93IGdsb2JhbCwKCXdpdGggYSBwYXJhbWV0ZXIgc28gdGhhdCBjb25kaXRpb25hbCBicmVha3BvaW50cyBsaWtlICJpZiBOb2RlID0gMTIzNDUiCgl3b3JrLgoJKE5ld19Ob2RlLCBOZXdfRW50aXR5KTogQ2FsbCB0aGUgZ2xvYmFsIE5ld19Ob2RlX0RlYnVnZ2luZ19PdXRwdXQuCglBZGQgRWxpc3QxIGZ1bmN0aW9uCgoyMDA3LTA0LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBjaGVja3MuYWRzLCBjaGVja3MuYWRiIChTZWxlY3RlZF9SYW5nZV9DaGVja3MpOiBObyByYW5nZSBjaGVjayBpcwoJcmVxdWlyZWQgZm9yIGEgY29udmVyc2lvbiBiZXR3ZWVuIHR3byBhY2Nlc3MtdG8tdW5jb25zdHJhaW5lZC1hcnJheQoJdHlwZXMuCgkoRXhwcl9Lbm93bl9WYWxpZCk6IFZhbGlkaXR5IGNoZWNrcyBkbyBub3QgYXBwbHkgdG8gZGlzY3JpbWluYW50cywgYnV0Cgl0byBkaXNjcmltaW5hbnQgY29uc3RyYWludHMgb24gZGlzY3JpbWluYW50IG9iamVjdHMuIFRoaXMgcnVsZSBtdXN0CglhcHBseSBhcyB3ZWxsIHRvIGRpc2NyaW1pbmFudHMgb2YgcHJvdGVjdGVkIHR5cGVzIGluIHByaXZhdGUgY29tcG9uZW50cy4KCShOdWxsX0V4Y2x1c2lvbl9TdGF0aWNfQ2hlY2tzKTogSWYgTm9fSW5pdGlhbGl6YXRpb24gaXMgc2V0IG9uIGFuCglvYmplY3Qgb2YgYSBudWxsLWV4Y2x1ZGluZyBhY2Nlc3MgdHlwZSB0aGVuIGRvbid0IHJlcXVpcmUgdGhlCgl0aGUgb2JqZWN0IGRlY2xhcmF0aW9uIHRvIGhhdmUgYW4gZXhwcmVzc2lvbiBhbmQgZG9uJ3QgZW1pdCBhCglydW4tdGltZSBjaGVjay4KCjIwMDctMDQtMDYgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCSAgICBFcmljIEJvdGNhem91IDxib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGduYXR2c24uYWRzLCBjb21wZXJyLmFkYiAoR2V0X0duYXRfYnVpbGRfVHlwZSk6IFJlbmFtZWQgQnVpbGRfVHlwZQoJYW5kIG1hZGUgY29uc3RhbnQuCgoJKiBjb21wZXJyLmFkcywgY29tcGVyci5hZGIgKENvbXBpbGVyX0Fib3J0KTogQWRkIHRoaXJkIHBhcmFtZXRlcgoJRmFsbGJhY2tfTG9jLiBVc2UgaXQgYXMgdGhlIHNsb2MgaW5mbyB3aGVuIEN1cnJlbnRfRXJyb3JfTm9kZSBkb2Vzbid0CgljYXJyeSBhbnkuCgoJKiBmZS5oIChDb21waWxlcl9BYm9ydCk6IEFkZCB0aGlyZCBwYXJhbWV0ZXIuCgoJKiBtaXNjLmMgKGludGVybmFsX2Vycm9yX2Z1bmN0aW9uKTogQnVpbGQgdGhpcmQgYXJndW1lbnQgZnJvbSBjdXJyZW50CglpbnB1dCBsb2NhdGlvbiBhbmQgcGFzcyBpdCB0byBDb21waWxlcl9BYm9ydC4KCjIwMDctMDQtMDYgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGNzdGFuZC5hZGIgKENyZWF0ZV9TdGFuZGFyZCk6IFdoZW4gdGhlIHRhcmdldCdzIHN0b3JhZ2UgdW5pdCBzaXplIGlzCglncmVhdGVyIHRoYW4gYSBieXRlLCBzZXQgSGFzX05vbl9TdGFuZGFyZF9SZXAgYW5kIEhhc19QcmFnbWFfUGFjayBvbgoJU3RhbmRhcmRfU3RyaW5nLgoKMjAwNy0wNC0wNiAgTmljb2xhcyBSb2NoZSAgPHJvY2hlQGFkYWNvcmUuY29tPgoKCSogY3N0cmVhbXMuYyAoX19nbmF0X2Z1bGxfbmFtZSk6IEZpeCBpc3N1ZXMgb24gVnhXb3JrcyA2LnggZm9yIHdoaWNoCglhYnNvbHV0ZSBwYXRoIGNhbiBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybTogZGV2aWNlOi9hL2IuIEluIHRoaXMgY2FzZQoJJy8nIHNob3VsZCBiZSBpbnNlcnRlZCBiZXR3ZWVuIHRoZSBwYXRoIGFuZCB0aGUgZmlsZW5hbWUuCgoyMDA3LTA0LTA2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgPGJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxFX0NvbnN0YW50PjogQXNzb2NpYXRlIGFuIGV4dGVybmFsCglWQVJfREVDTCB0byBhIENPTlNUX0RFQ0wgd2UgbWFrZSBmb3IgYSBwdWJsaWMgY29uc3RhbnQgd2hlbiB3ZSBrbm93IHRoZQoJY29ycmVzcG9uZGluZyBkZWZpbml0aW9uIGhhcyBjcmVhdGVkIHRoZSBzbyBtYWRlIHZpc2libGUgdmFyaWFibGUuCglIYW5kbGUgYW5vbnltb3VzIGFjY2VzcyB0byBwcm90ZWN0ZWQgc3VicHJvZ3JhbS4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogRG8gbm90IG1ha2UgdGhlIHVuZGVybHlpbmcgdHlwZSBvZiBhbgoJb2JqZWN0IHdpdGggYW4gYWRkcmVzcyBjbGF1c2Ugdm9sYXRpbGUuICBSZS1lbmFibGUgb3JpZ2luYWwgZml4LgoJPEVfU3VicHJvZ3JhbV9UeXBlPjogU2V0IFRZUEVfUkVGX0NBTl9BTElBU19BTEwgb24gdGhlIHJlZmVyZW5jZSB0eXBlCgl0b28uCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9DbGFzc19XaWRlX1R5cGU+OiBSZXRyaWV2ZSB0aGUgVFlQRV9ERUNMCglhc3NvY2lhdGVkIHdpdGggZWl0aGVyIHRoZSBFcXVpdmFsZW50IG9yIFJvb3QgdHlwZSwgaW5zdGVhZCBvZiB0aGUKCW5ha2VkIHR5cGUgbm9kZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpOiBNYW51YWxseSBtYXJrIHRoZSB0b3Agb2YgdGhlIERFQ0xfRklFTERfT0ZGU0VUCglzdWJ0cmVlIGZvciBldmVyeSBmaWVsZCBvZiBhIGdsb2JhbCByZWNvcmQgdHlwZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1JlY29yZF9TdWJ0eXBlPjogSWYgdGhlIHN1YnR5cGUgaGFzCglkaXNjcmltaW5hbnRzLCBpbnZva2UgYWdhaW4gdmFyaWFibGVfc2l6ZSBvbiBpdHMgbmV3bHkgY29tcHV0ZWQgc2l6ZXMuCgoyMDA3LTA0LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYjogKEZpcnN0X0NvbXBvbmVudF9Pcl9EaXNjcmltaW5hbnQpOiBOZXcgZnVuY3Rpb24KCShOZXh0X0NvbXBvbmVudF9Pcl9EaXNjcmltaW5hbnQpOiBOZXcgZnVuY3Rpb24gYW5kIHByb2NlZHVyZQoJKEZpcnN0X0luZGV4LCBGaXJzdF9MaXRlcmFsLCBNYXN0ZXJfSWQsCglTZXRfRmlyc3RfSW5kZXgsIFNldF9GaXJzdF9MaXRlcmFsLCBTZXRfTWFzdGVyX0lkKToKCUFkZCBtaXNzaW5nIEVraW5kIGFzc2VydGlvbnMuCgkoSXNfQWNjZXNzX1Byb3RlY3RlZF9TdWJwcm9ncmFtX1R5cGUpOiBOZXcgcHJlZGljYXRlLgoJKEhhc19SQUNXKTogTmV3IGVudGl0eSBmbGFnLCBzZXQgb24gcGFja2FnZSBlbnRpdGllcyB0byBpbmRpY2F0ZSB0aGF0Cgl0aGUgcGFja2FnZSBjb250YWlucyB0aGUgZGVjbGFyYXRpb24gb2YgYSByZW1vdGUgYWNjZWNzcy10by1jbGFzc3dpZGUKCXR5cGUuCgkoRV9SZXR1cm5fU3RhdGVtZW50KTogVGhpcyBub2RlIHR5cGUgaGFzIHRoZSBGaW5hbGl6YXRpb25fQ2hhaW5fRW50aXR5CglhdHRyaWJ1dGUsIGluIGNhc2UgdGhlIHJlc3VsdCB0eXBlIGhhcyBjb250cm9sbGVkIHBhcnRzLgoJKFJlcXVpcmVzX092ZXJyaWRpbmcpOiBBZGQgdGhpcyBuZXcgZmxhZywgYmVjYXVzZSAicmVxdWlyZXMKCW92ZXJyaWRpbmciIGlzIHN1YnRseSBkaWZmZXJlbnQgZnJvbSAiaXMgYWJzdHJhY3QiIChzZWUgQUktMjI4KS4KCShJc19BYnN0cmFjdCk6IFNwbGl0IElzX0Fic3RyYWN0IGZsYWcgaW50byBJc19BYnN0cmFjdF9TdWJwcm9ncmFtIGFuZAoJSXNfQWJzdHJhY3RfVHlwZS4gTWFrZSBzdXJlIHRoZXNlIGFyZSBjYWxsZWQgb25seSB3aGVuIGFwcHJvcHJpYXRlLgoJKEhhc19QcmFnbWFfVW5yZWZlcmVuY2VkX09iamVjdHMpOiBOZXcgZmxhZwoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9OX0Fzc2lnbm1lbnRfU3RhdGVtZW50KTogSWYgdGhlIGxlZnQtaGFuZCBzaWRlIGlzCgljbGFzcy13aWRlLCB0aGUgdGFnIG9mIHRoZSByaWdodC1oYW5kIHNpZGUgbXVzdCBiZSBhbiBleGFjdCBtYXRjaCwgbm90CglhbiBhbmNlc3RvciBvZiB0aGF0IG9mIHRoZSBvYmplY3Qgb24gbGVmdC1oYW5kIHNpZGUuCgkoTW92ZV9BY3RpdmF0aW9uX0NoYWluKTogTmV3IHByb2NlZHVyZSB0byBjcmVhdGUgdGhlIGNhbGwgdG8KCVN5c3RlbS5UYXNraW5nLlN0YWdlcy5Nb3ZlX0FjdGl2YXRpb25fQ2hhaW4uCgkoRXhwYW5kX05fRXh0ZW5kZWRfUmV0dXJuX1N0YXRlbWVudCk6IEdlbmVyYXRlIGNvZGUgdG8gY2FsbAoJU3lzdGVtLkZpbmFsaXphdGlvbl9JbXBsZW1lbnRhdGlvbi5Nb3ZlX0ZpbmFsX0xpc3QgYXQgdGhlIGVuZCBvZiBhCglyZXR1cm4gc3RhdGVtZW50IGlmIHRoZSBmdW5jdGlvbidzIHJlc3VsdCB0eXBlIGhhcyBjb250cm9sbGVkIHBhcnRzLgoJTW92ZSBhc3NlcnRzIHRvIEJ1aWxkX0luX1BsYWNlX0Zvcm1hbC4KCShNb3ZlX0ZpbmFsX0xpc3QpOiBOZXcgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBjYWxsIHN0YXRlbWVudC4KCShFeHBhbmRfTl9Bc3NpZ25tZW50X1N0YXRlbWVudCk6IEluIGNhc2Ugb2YgYXNzaWdubWVudCB0byBhIGNsYXNzLXdpZGUKCXRhZ2dlZCB0eXBlLCByZXBsYWNlIGdlbmVyYXRpb24gb2YgY2FsbCB0byB0aGUgcnVuLXRpbWUgc3VicHJvZ3JhbQoJQ1dfTWVtYmVyc2hpcCBieSBjYWxsIHRvIEJ1aWxkX0NXX01lbWJlcnNoaXAuCgkoRXhwYW5kX05fUmV0dXJuX1N0YXRlbWVudCk6IFJlcGxhY2UgZ2VuZXJhdGlvbiBvZiBjYWxsIHRvIHRoZSBydW4tdGltZQoJc3VicHJvZ3JhbSBHZXRfQWNjZXNzX0xldmVsIGJ5IGNhbGwgdG8gQnVpbGRfR2V0X0FjY2Vzc19MZXZlbC4KCShFeHBhbmRfTl9TaW1wbGVfRnVuY3Rpb25fUmV0dXJuKTogUmVwbGFjZSBnZW5lcmF0aW9uIG9mIGNhbGwgdG8gdGhlCglydW4tdGltZSBzdWJwcm9ncmFtIEdldF9BY2Nlc3NfTGV2ZWwgYnkgY2FsbCB0byBCdWlsZF9HZXRfQWNjZXNzX0xldmVsLgoKCSogZXhwX2NoNi5hZHMsIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IFVzZSBuZXcgcHJlZGljYXRlCglJc19BY2Nlc3NfUHJvdGVjdGVkX1N1YnByb2dyYW1fVHlwZSwgdG8gaGFuZGxlIGJvdGggbmFtZWQgYW5kIGFub255bW91cwoJYWNjZXNzIHRvIHByb3RlY3RlZCBvcGVyYXRpb25zLgoJKEFkZF9UYXNrX0FjdHVhbHNfVG9fQnVpbGRfSW5fUGxhY2VfQ2FsbCk6IE5ldyBwcm9jZWR1cmUgdG8gYWRkIHRoZQoJbWFzdGVyIGFuZCBjaGFpbiBhY3R1YWwgcGFyYW1ldGVycyB0byBhIGJ1aWxkLWluLXBsYWNlIGZ1bmN0aW9uIGNhbGwKCWludm9sdmluZyB0YXNrcy4KCShCSVBfRm9ybWFsX1N1ZmZpeCk6IEFkZCBuZXcgZW51bWVyYXRpb24gbGl0ZXJhbHMgdG8gY29tcGxldGUgdGhlIGNhc2UKCXN0YXRlbWVudC4KCShNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fQWxsb2NhdG9yLAoJTWFrZV9CdWlsZF9Jbl9QbGFjZV9DYWxsX0luX0Fub255bW91c19Db250ZXh0LAoJTWFrZV9CdWlsZF9Jbl9QbGFjZV9DYWxsX0luX0Fzc2lnbm1lbnQsCglNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fT2JqZWN0X0RlY2xhcmF0aW9uKTogQ2FsbAoJQWRkX1Rhc2tfQWN0dWFsc19Ub19CdWlsZF9Jbl9QbGFjZV9DYWxsIHdpdGggdGhlIGFwcHJvcHJpYXRlIG1hc3Rlci4KCShFeHBhbmRfSW5saW5lZF9DYWxsKTogSWYgdGhlIHN1YnByb2dyYW0gaXMgYSBudWxsIHByb2NlZHVyZSwgb3IgYQoJc3R1YmJlZCBwcm9jZWR1cmUgd2l0aCBhIG51bGwgYm9keSwgcmVwbGFjZSB0aGUgY2FsbCB3aXRoIGEgbnVsbAoJc3RhdGVtZW50IHdpdGhvdXQgdXNpbmcgdGhlIGZ1bGwgaW5saW5pbmcgbWFjaGluZXJ5LCBmb3IgZWZmaWNpZW5jeQoJYW5kIHRvIGF2b2lkIGludmFsaWQgdmFsdWVzIGluIHNvdXJjZSBmaWxlIHRhYmxlIGVudHJpZXMuCgoJKiBleHBfY2g4LmFkYiAoRXhwYW5kX05fT2JqZWN0X1JlbmFtaW5nX0RlY2xhcmF0aW9uKTogQWRkIHN1cHBvcnQgZm9yCglyZW5hbWluZ3Mgb2YgY2FsbHMgdG8gYnVpbGQtaW4tcGxhY2UgZnVuY3Rpb25zLgoKCSogcnRzZmluZC5hZGIgKFJURV9SZWNvcmRfQ29tcG9uZW50X0F2YWlsYWJsZSk6IE5ldyBzdWJwcm9ncmFtIHRoYXQKCXByb3ZpZGVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIFJURV9BdmFpbGFibGUgdG8gcmVjb3JkIGNvbXBvbmVudHMuCgkoUlRVX0VudGl0eSk6IFRoZSBmdW5jdGlvbiBFbnRpdHkgaGFzIGJlZW4gcmVuYW1lZCB0byBSVFVfRW50aXR5Cgl0byBhdm9pZCB1bmRlc2lyZWQgb3ZlcmxvYWRpbmcuCgkoRW50aXR5KTogTmV3IHN1YnByb2dyYW0gdGhhdCByZXR1cm5zIHRoZSBlbnRpdHkgZm9yIHRoZSByZWZlcmVuZWQKCXVuaXQuIElmIHRoaXMgdW5pdCBoYXMgbm90IGJlZW4gbG9hZGVkLCBpdCByZXR1cm5zIEVtcHR5LgoJKFJFX0FjdGl2YXRpb25fQ2hhaW5fQWNjZXNzLCBSRV9Nb3ZlX0FjdGl2YXRpb25fQ2hhaW4pOiBOZXcgZW50aXRpZXMuCglSZW1vdmUgbm8gbG9uZ2VyIHVzZWQgZW50aXRpZXMuCgkoUkVfRmluYWxpemFibGVfUHRyX1B0ciwgUkVfTW92ZV9GaW5hbF9MaXN0KTogTmV3IGVudGl0aWVzLgoJKFJFX1R5cGVfU3BlY2lmaWNfRGF0YSk6IE5ldyBlbnRpdHkuCgkoUkVfTW92ZV9BbnlfVmFsdWUpOiBOZXcgZW50aXR5LgoJKFJFX1RBX0EsIFJFX0dldF9BbnlfVHlwZSk6IE5ldyBlbnRpdGllcy4KCShSRV9BY2Nlc3NfTGV2ZWwsIFJFX0Rpc3BhdGNoX1RhYmxlLCBFX0RlZmF1bHRfUHJpbV9PcF9Db3VudCwKCSBSRV9Qcmltc19QdHIsIFJFX1JDX09mZnNldCwgUkVfUmVtb3RlbHlfQ2FsbGFibGUsCgkgUkVfRFRfVHlwZWluZm9fUHRyX1NpemUsIFJFX0NzdHJpbmdfUHRyLCBSRV9EVF9FeHBhbmRlZF9OYW1lKTogQWRkZWQuCgkoRW50aXR5KTogTmV3IHN1YnByb2dyYW0gdGhhdCByZXR1cm5zIHRoZSBlbnRpdHkgZm9yIHRoZSByZWZlcmVuZWQKCXVuaXQuIElmIHRoaXMgdW5pdCBoYXMgbm90IGJlZW4gbG9hZGVkLCBpdCByZXR1cm5zIEVtcHR5LgoJKFJURSk6IEFkZGl0aW9uIG9mIGEgbmV3IGZvcm1hbCB0aGF0IGV4dGVuZHMgdGhlIHNlYXJjaCB0byB0aGUgc2NvcGVzCglvZiB0aGUgcmVjb3JkIHR5cGVzIGZvdW5kIGluIHRoZSBjaGFpbiBvZiB0aGUgcGFja2FnZS4KCgkqIHNlbV9jaDYuYWRzLCBzZW1fY2g2LmFkYiAoQ2hlY2tfT3ZlcnJpZGluZ19JbmRpY2F0b3IpOiBQcmludAoJImFic3RyYWN0IHN1YnByb2dyYW1zIG11c3QgYmUgdmlzaWJsZSIgbWVzc2FnZSwgd2hldGhlciBvciBub3QgdGhlIHR5cGUKCWlzIGFuIGludGVyZmFjZTsgdGhhdCBpcywgcmVtb3ZlIHRoZSBzcGVjaWFsIGNhc2UgZm9yIGludGVyZmFjZSB0eXBlcy4KCShBbmFseXplX0Z1bmN0aW9uX1JldHVybik6IFJlbW92ZSBlcnJvciBtZXNzYWdlICJyZXR1cm4gb2YgdGFzayBvYmplY3RzCglpcyBub3QgeWV0IGltcGxlbWVudGVkIiBiZWNhdXNlIHRoaXMgaXMgbm93IGltcGxlbWVudGVkLgoJKENyZWF0ZV9FeHRyYV9Gb3JtYWxzKTogQWRkIHRoZSBleHRyYSBtYXN0ZXIgYW5kIGFjdGl2YXRpb24gY2hhaW4KCWZvcm1hbHMgaW4gY2FzZSB0aGUgcmVzdWx0IHR5cGUgaGFzIHRhc2tzLgoJUmVtb3ZlIGVycm9yIG1lc3NhZ2UgInJldHVybiBvZiBsaW1pdGVkIGNvbnRyb2xsZWQgb2JqZWN0cyBpcyBub3QgeWV0CglpbXBsZW1lbnRlZCIuCgkoQ3JlYXRlX0V4dHJhX0Zvcm1hbHMpOiBBZGQgdGhlIGV4dHJhIGNhbGxlcidzIGZpbmFsaXphdGlvbiBsaXN0IGZvcm1hbAoJaW4gY2FzZSB0aGUgcmVzdWx0IHR5cGUgaGFzIGNvbnRyb2xsZWQgcGFydHMuCgkoUHJvY2Vzc19Gb3JtYWxzKTogSW4gY2FzZSBvZiBhY2Nlc3MgZm9ybWFsIHR5cGVzIHRoZXJlIGlzIG5vIG5lZWQKCXRvIGNvbnRpbnVlIHdpdGggdGhlIGFuYWx5c2lzIG9mIHRoZSBmb3JtYWxzIGlmIHdlIGFscmVhZHkgbm90aWZpZWQKCWVycm9ycy4KCShDaGVja19PdmVycmlkaW5nX0luZGljYXRvcik6IEFkZCBjb2RlIHRvIGNoZWNrIG92ZXJyaWRpbmcgb2YgcHJlZGVmaW5lZAoJb3BlcmF0b3JzLgoJKENyZWF0ZV9FeHRyYV9Gb3JtYWxzKTogUHJldmVudCBjcmVhdGlvbiBvZiB1c2VsZXNzIEV4dHJhX0NvbnN0cmFpbmVkCglmbGFncyBmb3IgZm9ybWFscyB0aGF0IGRvIG5vdCByZXF1aXJlIHRoZW0sLgoJKEVudGVyX092ZXJsb2FkZWRfRW50aXR5KTogRG8gbm90IGdpdmUgLWduYXR3aCB3YXJuaW5nIG1lc3NhZ2UgdW5sZXNzCgloaWRkZW4gZW50aXR5IGlzIHVzZSB2aXNpYmxlIG9yIGRpcmVjdGx5IHZpc2libGUuCgkoQW5hbHl6ZV9BYnN0cmFjdF9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uLEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5LAoJQW5hbHl6ZV9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uLEFuYWx5emVfU3VicHJvZ3JhbV9TcGVjaWZpY2F0aW9uLAoJQ2hlY2tfQ29udmVudGlvbnMsQ2hlY2tfRGVsYXllZF9TdWJwcm9ncmFtLE1ha2VfSW5lcXVhbGl0eV9PcGVyYXRvciwKCU5ld19PdmVybG9hZGVkX0VudGl0eSk6IFNwbGl0IElzX0Fic3RyYWN0IGZsYWcgaW50bwoJSXNfQWJzdHJhY3RfU3VicHJvZ3JhbSBhbmQgSXNfQWJzdHJhY3RfVHlwZS4KCgkqIHMtZmluaW1wLmFkcywgcy1maW5pbXAuYWRiIChNb3ZlX0ZpbmFsX0xpc3QpOiBOZXcgcHJvY2VkdXJlIHRvIG1vdmUKCWEgcmV0dXJuIHN0YXRlbWVudCdzIGZpbmFsaXphdGlvbiBsaXN0IHRvIHRoZSBjYWxsZXIncyBsaXN0LCB1c2VkIGZvcgoJYnVpbGQtaW4tcGxhY2UgZnVuY3Rpb25zIHdpdGggcmVzdWx0IHR5cGUgd2l0aCBjb250cm9sbGVkIHBhcnRzLgoJUmVtb3ZlIG5vIGxvbmdlciB1c2VkIGVudGl0aWVzLgoKCSogcy10YXNraW4uYWRzIChBY3RpdmF0aW9uX0NoYWluKTogUmVtb3ZlIHByYWdtYSBWb2xhdGlsZS4gSXQgaXMgbm8KCWxvbmdlciBuZWVkZWQsIGJlY2F1c2UgdGhlIGZ1bGwgdHlwZSBpcyBub3cgbGltaXRlZCwgYW5kIHRoZXJlZm9yZSBhCglwYXNzLWJ5LXJlZmVyZW5jZSB0eXBlLgoJKEZvcmVpZ25fVGFza19MZXZlbCk6IE5ldyBjb25zdGFudC4KCgkqIHMtdGFzc3RhLmFkcywgcy10YXNzdGEuYWRiIChNb3ZlX0FjdGl2YXRpb25fQ2hhaW4pOiBOZXcgcHJvY2VkdXJlIHRvCgltb3ZlIHRhc2tzIGZyb20gdGhlIGFjdGl2YXRpb24gY2hhaW4gYmVsb25naW5nIHRvIGEgcmV0dXJuIHN0YXRlbWVudCB0bwoJdGhlIG9uZSBwYXNzZWQgaW4gYnkgdGhlIGNhbGxlciwgYW5kIHVwZGF0ZSB0aGUgbWFzdGVyIHRvIHRoZSBvbmUKCXBhc3NlZCBpbiBieSB0aGUgY2FsbGVyLgoJKFZ1bG5lcmFibGVfQ29tcGxldGVfTWFzdGVyLCBDaGVja19VbmFjdGl2YXRlZF9UYXNrcyk6IENoZWNrIHRoZSBtYXN0ZXIKCW9mIHVuYWN0aXZhdGVkIHRhc2tzLCBzbyB3ZSBkb24ndCBraWxsIHRoZSBvbmVzIHRoYXQgYXJlIGJlaW5nIHJldHVybmVkCglieSBhIGJ1aWxkLWluLXBsYWNlIGZ1bmN0aW9uLgoJKENyZWF0ZV9UYXNrKTogSWdub3JlIEFJLTI4MCBmb3IgZm9yZWlnbiB0aHJlYWRzLgoKMjAwNy0wNC0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBlcnJvdXQuYWRiIChVbndpbmRfSW50ZXJuYWxfVHlwZSk6IFVzZSBwcmVkaWNhdGUKCUlzX0FjY2Vzc19fUHJvdGVjdGVkX1N1YnByb2dyYW1fVHlwZS4KCgkqIGZyZWV6ZS5hZGIgKFNpemVfS25vd24pOiBVc2UgRmlyc3QvTmV4dF9Db21wb25lbnRfT3JfRGlzY3JpbWluYW50CgkoRnJlZXplX0VudGl0eSwgcGFja2VkIGFycmF5IGNhc2UpOiBEbyBub3Qgb3ZlcnJpZGUgZXhwbGljaXRseSBzZXQKCWFsaWdubWVudCBhbmQgc2l6ZSBjbGF1c2VzLgoJKEZyZWV6ZV9FbnRpdHkpOiAgQW4gZW50aXR5IGRlY2xhcmVkIGluIGFuIG91dGVyIHNjb3BlIGNhbiBiZSBmcm96ZW4gaWYKCXRoZSBlbmNsb3Npbmcgc3VicHJvZ3JhbSBpcyBhIGNoaWxkIHVuaXQgYm9keSB0aGF0IGFjdHMgYXMgYSBzcGVjLgoJKEZyZWV6ZV9FbnRpdHkpOiBVc2UgbmV3IHByZWRpY2F0ZSBJc19BY2Nlc3NfUHJvdGVjdGVkX1N1YnByb2dyYW1fVHlwZS4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBOZXcgQWRhIDIwMDUgcHJvY2Vzc2luZyBmb3IgcmV2ZXJzZSBiaXQgb3JkZXIKCVJlbW92ZSBhbGwgY29kZSBmb3IgRFNQIG9wdGlvbgoKCSogbGF5b3V0LmFkYiAoTGF5b3V0X1JlY29yZF9UeXBlKTogVXNlIEZpcnN0LwoJTmV4dF9Db21wb25lbnRfT3JfRGlzY3JpbWluYW50CgkoTGF5b3V0X1R5cGUpOiBVc2UgbmV3IHByZWRpY2F0ZSBJc19BY2Nlc3NfUHJvdGVjdGVkX1N1YnByb2dyYW1fVHlwZSwKCXRvIGhhbmRsZSBwcm9wZXJseSB0aGUgYW5vbnltb3VzIGFjY2VzcyBjYXNlLgoKCSogc2VtX2F0dHIuYWRiIChCdWlsZF9BY2Nlc3NfT2JqZWN0X1R5cGUpOiBVc2UgRV9BY2Nlc3NfQXR0cmlidXRlX1R5cGUKCWZvciBhbGwgYWNjZXNzIGF0dHJpYnV0ZXMsIGJlY2F1c2Ugb3ZlcmxvYWQgcmVzb2x1dGlvbiBzaG91bGQgd29yayB0aGUKCXNhbWUgZm9yICdBY2Nlc3MsICdVbmNoZWNrZWRfQWNjZXNzLCBhbmQgJ1VucmVzdHJpY3RlZF9BY2Nlc3MuIFRoaXMKCWNhdXNlcyB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIGFtYmlndW91cyAiWCdBY2Nlc3MgPSBZJ0FjY2VzcyIgYW5kCgkiWCdVbnJlc3RyaWN0ZWRfQWNjZXNzID0gWSdBY2Nlc3MiIGFuZCBzbyBmb3J0aCB0byBtYXRjaC4KCShSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSAnQWNjZXNzKTogUmVtb3ZlIHVzZSBvZiBPcmlnaW5hbF9BY2Nlc3NfVHlwZSwKCW5vdyB0aGF0IGFub255bW91cyBhY2Nlc3MgdG8gcHJvdGVjdGVkIG9wZXJhdGlvbnMgaGF2ZSB0aGVpciBvd24ga2luZC4KCShSZXNvbHZlX0F0dHJpYnV0ZSk6IEluIGNhc2Ugb2YgZGlzcGF0Y2hpbmcgY2FsbCBjaGVjayB0aGUgdmlvbGF0aW9uIG9mCglyZXN0cmljdGlvbiBOb19EaXNwYXRjaGluZ19DYWxscy4KCShDaGVja19BcnJheV9UeXBlKTogQ2hlY2sgbmV3IC1nbmF0eUEgYXJyYXkgaW5kZXggc3R5bGUgb3B0aW9uCgoJKiBzZW1fY2gzLmFkcywgc2VtX2NoMy5hZGIgKERlcml2ZWRfVHlwZV9EZWNsYXJhdGlvbik6IFJlamVjdCBhbgoJYXR0ZW1wdCB0byBkZXJpdmUgZnJvbSBhIHN5bmNocm9uaXplZCB0YWdnZWQgdHlwZS4KCShBbmFseXplX1R5cGVfRGVjbGFyYXRpb24pOiBJZiB0aGVyZSBpcyBhIGluY29tcGxldGUgdGFnZ2VkIHZpZXcgb2YgdGhlCgl0eXBlLCBpbmhlcml0IHRoZSBjbGFzcy13aWRlIHR5cGUgYWxyZWFkeSBjcmVhdGVkLCBiZWNhdXNlIGl0IG1heQoJYWxyZWFkeSBoYXZlIGJlZW4gdXNlZCBpbiBhIHNlbGYtcmVmZXJlbnRpYWwgYW5vbnltb3VzIGFjY2VzcyBjb21wb25lbnQuCgkoTWVudGlvbnNfVCk6IFJlY29nbml6ZSBzZWxmLXJlZmVyZW50aWFsIGFub255bW91cyBhY2Nlc3MgY29tcG9uZW50cwoJdGhhdCB1c2UgKGEgc3VidHlwZSBvZikgdGhlIGNsYXNzLXdpZGUgdHlwZSBvZiB0aGUgZW5jbG9zaW5nIHR5cGUuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IEFkZCBlYXJsaWVyIHNldHRpbmcgb2YgSXNfVGFnZ2VkX1R5cGUuIFBhc3MKCURlcml2ZWRfVHlwZSBmb3IgUHJldiBmb3JtYWwgb24gY2FsbCB0bwoJQ2hlY2tfQW5vbnltb3VzX0FjY2Vzc19Db21wb25lbnRzIHJhdGhlciB0aGFuIEVtcHR5LgoJKE1ha2VfSW5jb21wbGV0ZV9UeXBlX0RlY2xhcmF0aW9uKTogQWRkIHRlc3QgZm9yIGNhc2Ugd2hlcmUgdGhlIHR5cGUgaGFzCglhIHJlY29yZCBleHRlbnNpb24gaW4gZGVjaWRpbmcgd2hldGhlciB0byBjcmVhdGUgYSBjbGFzcy13aWRlIHR5cGUsCglyYXRoZXIgdGhhbiBqdXN0IGNoZWNraW5nIFRhZ2dlZF9QcmVzZW50LgoJKFJlcGxhY2VfQW5vbnltb3VzX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfU3VicHJvZ3JhbSk6IFByb2NlZHVyZSBhcHBsaWVzCgl0byBzdGFuZC1hbG9uZSBvYmplY3QgZGVjbGFyYXRpb25zIGFzIHdlbGwgYXMgY29tcG9uZW50IGRlY2xhcmF0aW9ucy4KCShBcnJheV9UeXBlX0RlY2xhcmF0aW9uKTogSW5pdGlhbGl6ZSBQYWNrZWRfQXJyYXlfVHlwZSB0byBFbXB0eSwgdG8KCXByZXZlbnQgYWNjaWRlbnRhbCBvdmVyd3JpdGluZyB3aGVuIGVuY2xvc2luZyBwYWNrYWdlIGFwcGVhcnMgaW4KCWEgbGltaXRlZF93aXRoX2NsYXVzZS4KCShBcnJheV9UeXBlX0RlY2xhcmF0aW9uKTogSWYgdGhlIGNvbXBvbmVudCB0eXBlIGlzIGFuIGFub255bW91cyBhY2Nlc3MsCgl0aGUgYXNzb2NpYXRlZF9ub2RlIGZvciB0aGUgaXR5cGUgaXMgdGhlIHR5cGUgZGVjbGFyYXRpb24gaXRzZWxmLgoJKEFkZF9JbnRlcmZhY2VfVGFnX0NvbXBvbmVudHMpOiBNb2RpZmllZCB0byBzdXBwb3J0IGNvbmN1cnJlbnQKCXR5cGVzIHdpdGggYWJzdHJhY3QgaW50ZXJmYWNlcy4KCShDaGVja19BYnN0cmFjdF9JbnRlcmZhY2VzKTogTmV3IHN1YnByb2dyYW0gdGhhdCB2ZXJpZmllcyB0aGUgQVJNCglydWxlcyAzLjkuNCAoMTUvMiksIDkuMSAoOS5kLzIpIGFuZCA5LjQgKDExLmQvMikuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IEFkZCBjYWxsIHRvIEFuYWx5emVfSW50ZXJmYWNlX0RlY2xhcmF0aW9uCgl0byBjb21wbGV0ZSB0aGUgZGVjb3JhdGlvbiBvZiBzeW5jaHJvbml6ZWQgaW50ZXJmYWNlIHR5cGVzLiBBZGQgYWxzbwoJYSBjYWxsIHRvIENoZWNrX0Fic3RyYWN0X0ludGVyZmFjZXMgdG8gdmVyaWZ5IHRoZSBBUk0gcnVsZXMuCgkoRGVyaXZlX0ludGVyZmFjZV9TdWJwcm9ncmFtcyk6IE1vZGlmaWVkIHRvIHN1cHBvcnQgY29uY3VycmVudCB0eXBlcwoJd2l0aCBhYnN0cmFjdCBpbnRlcmZhY2VzLgoJKEFuYWx5emVfU3VidHlwZV9JbmRpY2F0aW9uKTogUmVzb2x2ZSB0aGUgcmFuZ2Ugd2l0aCB0aGUgZ2l2ZW4gc3VidHlwZQoJbWFyaywgcmF0aGVyIHRoYW4gZGVsYXlpbmcgdGhlIGZ1bGwgcmVzb2x1dGlvbiBkZXBlbmRpbmcgb24gY29udGV4dC4KCShBbmFseXplX0NvbXBvbmVudF9EZWNsYXJhdGlvbixBbmFseXplX0ludGVyZmFjZV9EZWNsYXJhdGlvbiwKCUFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uLEFuYWx5emVfU3VidHlwZV9EZWNsYXJhdGlvbiwKCUFycmF5X1R5cGVfRGVjbGFyYXRpb24sQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSwKCUJ1aWxkX0Rpc2NyaW1pbmF0ZWRfU3VidHlwZSxDaGVja19BYnN0cmFjdF9PdmVycmlkaW5nLENoZWNrX0NvbXBsZXRpb24sCglEZXJpdmVfSW50ZXJmYWNlX1N1YnByb2dyYW1zLERlcml2ZV9TdWJwcm9ncmFtLE1ha2VfQ2xhc3NfV2lkZV9UeXBlLAoJUHJvY2Vzc19GdWxsX1ZpZXcsUmVjb3JkX1R5cGVfRGVjbGFyYXRpb24pOiBTcGxpdCBJc19BYnN0cmFjdCBmbGFnIGludG8KCUlzX0Fic3RyYWN0X1N1YnByb2dyYW0gYW5kIElzX0Fic3RyYWN0X1R5cGUuIE1ha2Ugc3VyZSB0aGVzZSBhcmUKCWNhbGxlZCBvbmx5IHdoZW4gYXBwcm9wcmlhdGUuCgkoQ29weV9BbmRfU3dhcCk6IENvcHkgSGFzX1VucmVmZXJlbmNlZF9PYmplY3RzIGZsYWcgZnJvbSBmdWxsIHR5cGUKCXRvIHByaXZhdGUgdHlwZS4KCShBbmFseXplX1N1YnR5cGVfRGVjbGFyYXRpb24pOiBGb3IgYW4gYWNjZXNzIHN1YnR5cGUgZGVjbGFyYXRpb24sIGNyZWF0ZQoJYW4gaXR5cGUgcmVmZXJlbmNlIGZvciB0aGUgYW5vbnltb3VzIGRlc2lnbmF0ZWQgc3VidHlwZSwgdG8gcHJldmVudAoJc2NvcGUgYW5vbm1hbGllcyBpbiBnaWdpLgoJKEJ1aWxkX0l0eXBlX1JlZmVyZW5jZSk6IE5ldyB1dGlsaXR5LCB0byBzaW1wbGlmeSBjb25zdHJ1Y3Rpb24gb2Ygc3VjaAoJcmVmZXJlbmNlcy4KCjIwMDctMDQtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZXJydXRpbC5hZGIgKEluaXRpYWxpemUpOiBJbml0aWFsaXplIHdhcm5pbmdzIHRhYmxlLCBpZiBhbGwgd2FybmluZ3MKCWFyZSBzdXBwcmVzc2VkLCBzdXBwbHkgYW4gaW5pdGlhbCBkdW1teSBlbnRyeSBjb3ZlcmluZyBhbGwgcG9zc2libGUKCXNvdXJjZSBsb2NhdGlvbnMuCgoJKiBtYWtlLmFkYiAoU2Nhbl9NYWtlX0FyZyk6IFJlamVjdCBvcHRpb25zIHRoYXQgc2hvdWxkIHN0YXJ0IHdpdGggIi0tIgoJYW5kIHN0YXJ0IHdpdGggb25seSBvbmUsIHN1Y2ggYXMgIi1SVFM9bm9uZSIuCgkoQ29sbGVjdF9Bcmd1bWVudHMpOiBEbyBub3QgY2hlY2sgZm9yIHNvdXJjZXMgb3V0c2lkZSBvZiBwcm9qZWN0cy4KCURvIG5vdCBjb2xsZWN0IGFyZ3VtZW50cyBpZiBwcm9qZWN0IGlzIGV4dGVybmFsbHkgYnVpbHQuCgkoQ29tcGlsZV9Tb3VyY2VzKTogRG8gbm90aGluZywgbm90IGV2ZW4gY2hlY2sgaWYgdGhlIHNvdXJjZSBpcyB1cCB0bwoJZGF0ZSwgaWYgaXRzIHByb2plY3QgaXMgZXh0ZXJuYWxseSBidWlsdC4KCShDb21waWxlKTogV2hlbiBjb21waWxpbmcgYSBwcmVkZWZpbmVkIHNvdXJjZSwgYWRkIC1nbmF0cGcKCWFzIHRoZSBzZWNvbmQgc3dpdGNoLCBhZnRlciAtYy4KCShDb21waWxlX1NvdXJjZXMpOiBBbGxvdyBjb21waWxhdGlvbiBvZiBBbm5leCBKIHJlbmFtZXMgd2l0aG91dCAtYQoJKElzX0luX09iamVjdF9EaXJlY3RvcnkpOiBDaGVjayBpZiB0aGUgQUxJIGZpbGUgaXMgaW4gdGhlIG9iamVjdAoJZXZlbiBpZiB0aGVyZSBpcyBubyBwcm9qZWN0IGV4dGVuc2lvbi4KCShDcmVhdGVfQmluZGVyX01hcHBpbmdfRmlsZSk6IE9ubHkgcHV0IGEgdW5pdCBpbiB0aGUgbWFwcGluZyBmaWxlIGZvcgoJZ25hdGJpbmQgaWYgdGhlIEFMSSBmaWxlIGVmZmVjdGl2ZWx5IGV4aXN0cy4KCShJbml0aWFsaXplKTogQWRkIHRoZSBkaXJlY3Rvcnkgd2hlcmUgZ25hdG1ha2UgaXMgaW52b2tlZCBpbiBmcm9udCBvZgoJdGhlIHBhdGggaWYgaXQgaXMgaW52b2tlZCBmcm9tIGEgYmluIGRpcmVjdG9yeSwgZXZlbiB3aXRob3V0IGRpcmVjdG9yeQoJaW5mb3JtYXRpb24sIHNvIHRoYXQgdGhlIGNvcnJlY3QgR05BVCB0b29scyB3aWxsIGJlIHVzZWQgd2hlbiBzcGF3bmVkCgl3aXRob3V0IGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4KCgkqIG1ha2V1c2cuYWRiOiBDaGFuZ2Ugc3dpdGNoIC1TIHRvIC1lUwoJQWRkIGxpbmVzIGZvciBuZXcgc3dpdGNoZXMgLXdlLCAtd24gYW5kIC13cwoJQWRkIGxpbmUgZm9yIG5ldyBzd2l0Y2ggLXAKCgkqIHByai1wcm9jLmFkYiAoUHJvY2Vzcyk6IFNldCBTdWNjZXNzIHRvIEZhbHNlIHdoZW4gV2FybmluZ19Nb2RlIGlzCglUcmVhdF9Bc19FcnJvciBhbmQgdGhlcmUgYXJlIHdhcm5pbmdzLgoKCSogc3dpdGNoLW0uYWRzLCBzd2l0Y2gtbS5hZGIgKE5vcm1hbGl6ZV9Db21waWxlcl9Td2l0Y2hlcyk6IERvIG5vdCBza2lwCgktZ25hdHd3IENoYW5nZSBnbmF0bWFrZSBzd2l0Y2ggLVMgdG8gLWVTCgkoU2Nhbl9NYWtlX1N3aXRjaGVzKTogQ29kZSByZW9yZ2FuaXNhdGlvbi4gUHJvY2VzcyBzZXBhcmF0ZWx5IG11bHRpCgljaGFyYWN0ZXIgc3dpdGNoZXMgYW5kIHNpbmdsZSBjaGFyYWN0ZXIgc3dpdGNoZXMuCgkoU2Nhbl9NYWtlX1N3aXRjaGVzKTogTmV3IEJvb2xlYW4gb3V0IHBhcmFtZXRlciBTdWNjZXNzLiBTZXQgU3VjY2VzcyB0bwoJRmFsc2Ugd2hlbiBzd2l0Y2ggaXMgbm90IHJlY29nbml6ZWQgYnkgZ25hdG1ha2UuCgkoU2Nhbl9NYWtlX1N3aXRjaGVzKTogU2V0IFNldHVwX1Byb2plY3RzIFRydWUgd2hlbiAtcCBvcgoJLS1jcmVhdGUtbWlzc2luZy1kaXJzIGlzIHNwZWNpZmllZC4KCgkqIGZuYW1lLmFkYiAoSXNfUHJlZGVmaW5lZF9GaWxlX05hbWUpOiBSZXR1cm4gVHJ1ZSBmb3IgYW5uZXggSgoJcmVuYW1pbmdzIENhbGVuZGFyLCBNYWNoaW5lX0NvZGUsIFVuY2hlY2tlZF9Db252ZXJzaW9uIGFuZAoJVW5jaGVja2VkX0RlYWxsb2NhdGlvbiBvbmx5IHdoZW4gUmVuYW1pbmdzX0luY2x1ZGVkIGlzIFRydWUuCgoJKiBwYXIuYWRiOiBBbGxvdyBsaWJyYXJ5IHVuaXRzIENhbGVuZGFyLCBNYWNoaW5lX0NvZGUsCglVbmNoZWNrZWRfQ29udmVyc2lvbiBhbmQgVW5jaGVja2VkX0RlYWxsb2NhdGlvbiB0byBiZSByZWNvbXBpbGVkIGV2ZW4KCXdoZW4gLWduYXRnIGlzIG5vdCBzcGVjaWZpZWQuCgkoUF9JbnRlcmZhY2VfVHlwZV9EZWZpbml0aW9uKTogUmVtb3ZlIHRoZSBmb3JtYWwgSXNfU3luY2hyb25pemVkIGJlY2F1c2UKCXRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYWx3YXlzIGEgcmVjb3JkX2RlZmluaXRpb25fbm9kZSBpbiBjYXNlCglvZiBzeW5jaHJvbml6ZWQgaW50ZXJmYWNlIHR5cGVzLgoJKFNJU19FbnRyeV9BY3RpdmUpOiBJbml0aWFsaXplIGdsb2JhbCB2YXJpYWJsZSB0byBGYWxzZQoJKFBfTnVsbF9FeGNsdXNpb24pOiBGb3IgQUktNDQ3OiBBZGQgcGFyYW1ldGVyIEFsbG93X0Fub255bW91c19Jbl85NSB0bwoJaW5kaWNhdGUgY2FzZXMgd2hlcmUgQUktNDQ3IHNheXMgIm5vdCBudWxsIiBpcyBsZWdhbC4KCgkqIG1ha2V1dGwuYWRzLCBtYWtldXRpbC5hZGIgKEV4ZWN1dGFibGVfUHJlZml4X1BhdGgpOiBOZXcgZnVuY3Rpb24KCgkqIG1ha2VncHIuYWRiIChDaGVja19Db21waWxhdGlvbl9OZWVkZWQpOiBUYWtlIGludG8gYWNjb3VudCBkZXBlbmRlbmN5CglmaWxlcyB3aXRoIHdpdGggc2V2ZXJhbCBsaW5lcyBzdGFydGluZyB3aXRoIHRoZSBvYmplY3QgZmlsZWIgbmFtZS4KCShTY2FuX0FyZyk6IFNldCBTZXR1cF9Qcm9qZWN0cyBUcnVlIHdoZW4gLXAgb3IgLS1jcmVhdGUtbWlzc2luZy1kaXJzCglpcyBzcGVjaWZpZWQuCgkoSW5pdGlhbGl6ZSk6IEFkZCB0aGUgZGlyZWN0b3J5IHdoZXJlIGdwcm1ha2UgaXMgaW52b2tlZCBpbiBmcm9udCBvZiB0aGUKCXBhdGgsIGlmIGl0IGlzIGludm9rZWQgZnJvbSBhIGJpbiBkaXJlY3Rvcnkgb3Igd2l0aCBkaXJlY3RvcnkKCWluZm9ybWF0aW9uLCBzbyB0aGF0IHRoZSBjb3JyZWN0IEdOQVQgdG9vbHMgd2lsbCBiZSB1c2VkIHdoZW4gaW52b2tlZAoJZGlyZWN0bHkuCgkoQ2hlY2tfQ29tcGlsYXRpb25fTmVlZGVkKTogUHJvY2VzcyBjb3JyZWN0bHkgYmFja3NsYXNoZXMgb24gV2luZG93cy4KCgkqIHZtc19kYXRhLmFkczogVXBkYXRlIHN3aXRjaGVzL3F1YWxpZmllcnMKCjIwMDctMDQtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZXhwX2FnZ3IuYWRiOgoJSWYgdGhlIGFycmF5IGNvbXBvbmVudCBpcyBhIGRpc2NyaW1pbmF0ZWQgcmVjb3JkLCB0aGUgYXJyYXkgYWdncmVnYXRlCglpcyBub24tc3RhdGljIGV2ZW4gaWYgdGhlIGNvbXBvbmVudCBpcyBnaXZlbiBieSBhbiBhZ2dyZWdhdGUgd2l0aAoJc3RhdGljIGNvbXBvbmVudHMuCgkoRXhwYW5kX1JlY29yZF9BZ2dyZWdhdGUpOiBVc2UgRmlyc3QvTmV4dF9Db21wb25lbnRfT3JfRGlzY3JpbWluYW50CgkoQ29udmVydF9BZ2dyX0luX0FsbG9jYXRvcik6IElmIHRoZSBhbGxvY2F0b3IgaXMgZm9yIGFuIGFjY2VzcwoJZGlzY3JpbWluYW50IGFuZCB0aGUgdHlwZSBpcyBjb250cm9sbGVkLiBkbyBub3QgcGxhY2Ugb24gYSBmaW5hbGl6YXRpb24KCWxpc3QgYXQgdGhpcyBwb2ludC4gVGhlIHByb3BlciBsaXN0IHdpbGwgYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZQoJZW5jbG9zaW5nIG9iamVjdC4KCShCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogSWYgYWdncmVnYXRlIGhhcyBib3gtaW5pdGlhbGl6ZWQgY29tcG9uZW50cywKCWluaXRpYWxpemUgcmVjb3JkIGNvbnRyb2xsZXIgaWYgbmVlZGVkLCBiZWZvcmUgdGhlIGNvbXBvbmVudHMsIHRvIGVuc3VyZQoJdGhhdCB0aGV5IGFyZSBwcm9wZXJseSBmaW5hbGl6ZWQuCgkoQnVpbGRfUmVjb3JkX0FnZ3JfQ29kZSk6IEZvciB0aGUgY2FzZSBvZiBhbiBhcnJheSBjb21wb25lbnQgdGhhdCBoYXMgYQoJY29ycmVzcG9uZGluZyBhcnJheSBhZ2dyZWdhdGUgaW4gdGhlIHJlY29yZCBhZ2dyZWdhdGUsIHBlcmZvcm0gc2xpZGluZwoJaWYgcmVxdWlyZWQuCgoyMDA3LTA0LTA2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDEzLmFkYiAoRXhwYW5kX0V4dGVybmFsX1RhZ19EZWZpbml0aW9uKTogUmVwbGFjZSBjYWxsIHRvIHRoZQoJcnVuLXRpbWUgc3VicHJvZ3JhbSBTZXRfRXh0ZXJuYWxfVGFnIGJ5IGNhbGwgdG8gQnVpbGRfU2V0X0V4dGVybmFsX1RhZy4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBEb24ndCBwZXJmb3JtIGEgcnVuLXRpbWUKCWFjY2Vzc2liaWxpdHkgb24gY2xhc3Mtd2lkZSBhbGxvY2F0b3JzIGlmIHRoZSBhbGxvY2F0b3Igb2NjdXJzIGF0IHRoZQoJc2FtZSBzY29wZSBsZXZlbCBhcyB0aGUgYWxsb2NhdG9yJ3MgdHlwZS4gVGhlIGNoZWNrIGlzIGd1YXJhbnRlZWQgdG8KCXN1Y2NlZWQgaW4gdGhhdCBjYXNlLCBldmVuIHdoZW4gdGhlIGV4cHJlc3Npb24gb3JpZ2luYXRlcyBmcm9tIGEKCXBhcmFtZXRlciBvZiB0aGUgY29udGFpbmluZyBzdWJwcm9ncmFtLgoJKEV4cGFuZF9OX09wX0VxKTogRG8gbm90aGluZyBpbiBjYXNlIG9mIGRpc3BhdGNoaW5nIGNhbGwgaWYgY29tcGlsaW5nCgl1bmRlciBOb19EaXNwYXRjaGluZ19DYWxscyByZXN0cmljdGlvbi4gRHVyaW5nIHRoZSBzZW1hbnRpYyBhbmFseXNpcwoJd2UgYWxyZWFkeSBub3RpZmllZCBzdWNoIHZpb2xhdGlvbi4KCShUYWdnZWRfTWVtYmVyc2hpcCk6IENvbnN0YW50IGZvbGRpbmcuIFRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sKCXRoZSB0YWcgYXQgcnVuLXRpbWUgaWYgdGhlIHR5cGUgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaXMgbm9uCgljbGFzcy13aWRlIGFic3RyYWN0LgoJUmVwbGFjZSBjYWxsIHRvIElzX0FuY2VzdG9yIGJ5IGNhbGwgdG8gSXNfUGFyZW50Cgl0byBzdXBwb3J0IGNvbmN1cnJlbnQgdHlwZXMgd2l0aCBpbnRlcmZhY2UgdHlwZXMuCgkoRXhwYW5kX05fQWxsb2NhdG9yKTogQWRkIGFuIGFzc2VydGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGdlbmVyYXRpb24KCW9mIHRoZSBtYXN0ZXJfaWQuCgkoRXhwYW5kX05fU2xpY2UpOiBEbyBub3QgZW5hYmxlIHJhbmdlIGNoZWNrIHRvIG5vZGVzIGFzc29jaWF0ZWQKCXdpdGggdGhlIGZyb250ZW5kIGV4cGFuc2lvbiBvZiB0aGUgZGlzcGF0Y2ggdGFibGUuCgkoSXNfTG9jYWxfQWNjZXNzX0Rpc2NyaW1pbmFudCk6IFN1YnNpZGlhcnkgZnVuY3Rpb24gdG8KCUV4cGFuZF9OX0FsbG9jYXRvci4KCShUYWdnZWRfTWVtYmVyc2hpcCk6IFJlcGxhY2UgZ2VuZXJhdGlvbiBvZiBjYWxsIHRvIHRoZSBydW4tdGltZQoJc3VicHJvZ3JhbSBDV19NZW1iZXJzaGlwIGJ5IGNhbGwgdG8gQnVpbGRfQ1dfTWVtYmVyc2hpcC4KCShFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBSZXBsYWNlIGdlbmVyYXRpb24gb2YgY2FsbCB0byB0aGUKCXJ1bi10aW1lIHN1YnByb2dyYW0gR2V0X0FjY2Vzc19MZXZlbCBieSBjYWxsIHRvIEJ1aWxkX0dldF9BY2Nlc3NfTGV2ZWwuCgoJKiBleHBfZGlzcC5hZHMsIGV4cF9kaXNwLmFkYiAoTWFrZV9EVCk6IENvZGUgcmVvcmdhbml6YXRpb24gdG8KCWluaXRpYWxpemUgbW9zdCB0aGUgVFNEIGNvbXBvbmVudHMgYnkgbWVhbnMgb2YgYW4gYWdncmVnYXRlLgoJTW9kaWZ5IHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIFRTRAoJYmVjYXVzZSB3ZSBub3cgZXhwYW5kIGNvZGUgdGhhdCBoYXMgYSBoaWdoZXIgbGV2ZWwgb2YgYWJzdHJhY3Rpb24uCglUaGUgVFNEIGhhcyBhIGRpc2NyaW1pbmFudCBjb250YWluaW5nIHRoZSBJbmhlcml0YW5jZSBEZXB0aCBMZXZlbCwKCXZhbHVlIHRoYXQgaXMgdXNlZCBpbiB0aGUgbWVtYmVyc2hpcCB0ZXN0IGJ1dCBhbHNvIHRvIGZpeCB0aGUgc2l6ZQoJb2YgdGhlIHRhYmxlIG9mIGFuY2VzdG9ycy4KCShFeHBhbmRfSW50ZXJmYWNlX0NvbnZlcnNpb24pOiBJbnNlcnQgZnVuY3Rpb24gYm9keSBhdCB0aGUgY2xvc2VzdCBwbGFjZQoJdG8gdGhlIGNvbnZlcnNpb24gZXhwcmVzc2lvbiwgdG8gcHJldmVudCBhY2Nlc3MtYmVmb3JlLWVsYWJvcmF0aW9uCgllcnJvcnMgaW4gdGhlIGJhY2tlbmQuCglDb2RlIGltcHJvdmVkIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgZGlzcGF0Y2ggdGFibGUgaWYKCWNvbXBpbGluZyB1bmRlciByZXN0cmljdGlvbiBOb19EaXNwYXRjaGluZ19DYWxscyBwbHVzIGNvZGUgY2xlYW51cC4KCUNvZGUgcmVvcmdhbml6YXRpb24gcGx1cyByZW1vdmFsIG9mIGNhbGxzIHRvIFNldF9OdW1fUHJpbV9PcHMKCShNYWtlX1NlY29uZGFyeV9EVCk6IFJlbW92ZSBjYWxsIHRvIFNldF9OdW1fUHJpbV9PcHMuCgkoRXhwYW5kX0Rpc3BhdGNoaW5nX0NhbGwpOiBNaW5vciBjb2RlIHJlb3JnYW5pemF0aW9uIHBsdXMgYWRkaXRpb24gb2YKCWNvZGUgdG8gcmV0dXJuIGltbWVkaWF0ZWx5IGlmIGNvbXBpbGluZyB1bmRlciBOb19EaXNwYXRjaGluZ19DYWxscwoJcmVzdHJpY3Rpb24uCgkoU2V0X0FsbF9EVF9Qb3NpdGlvbik6IFJlbW92ZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb2xkIENQUCBwcmFnbWFzLgoJQ1BQX1ZpcnR1YWwgYW5kIENQUF9WdGFibGUgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQuCgkoRXhwYW5kX0ludGVyZmFjZV9Db252ZXJzaW9uKTogQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgaW50ZXJmYWNlIHR5cGUKCWRlcml2YXRpb25zLgoJKEV4cGFuZF9JbnRlcmZhY2VfQWN0dWFscyk6IFJlcGxhY2UgY2FsbHMgdG8gSXNfQW5jZXN0b3IgYnkgY2FsbHMgdG8KCUlzX1BhcmVudCB0byBzdXBwb3J0IGNvbmN1cnJlbnQgdHlwZXMgd2l0aCBpbnRlcmZhY2VzLgoJKEluaXRfUHJlZGVmaW5lZF9JbnRlcmZhY2VfUHJpbWl0aXZlcyk6IFJlbW92ZWQuCgkoTWFrZV9TZWNvbmRhcnlfRFQpOiBNb2RpZmllZCB0byBzdXBwb3J0IGNvbmN1cnJlbnQgcmVjb3JkIHR5cGVzLgoJKFNldF9BbGxfRFRfUG9zaXRpb24pOiBNb2RpZmllZCB0byBzdXBwb3J0IGNvbmN1cnJlbnQgcmVjb3JkIHR5cGVzLgoJKEFkYV9BY3Rpb25zLCBBY3Rpb25fSXNfUHJvYywgQWN0aW9uX05iX0FyZyk6IFJlbW92ZSBlbnRyaWVzIGFzc29jaWF0ZWQKCXdpdGggR2V0X0V4dGVybmFsX1RhZywgSW5oZXJpdF9UU0QsIFNldF9FeHRlcm5hbF9UYWcuCgkoQWRhX0FjdGlvbnMsIEFjdGlvbl9Jc19Qcm9jLCBBY3Rpb25fTmJfQXJnKTogUmVtb3ZlIGVudHJ5IGFzc29jaWF0ZWQKCXdpdGggQ1dfTWVtYmVyc2hpcC4KCShBZGFfQWN0aW9ucywgQWN0aW9uX0lzX1Byb2MsIEFjdGlvbl9OYl9BcmcpOiBSZW1vdmUgZW50cmllcyBhc3NvY2lhdGVkCgl3aXRoIEdldF9BY2Nlc3NfTGV2ZWwsIEdldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcywKCUdldF9QcmltX09wX0FkZHJlc3MgR2V0X1JDX09mZnNldCwgR2V0X1JlbW90ZWx5X0NhbGxhYmxlLCBJbmhlcml0X0RULAoJU2V0X0FjY2Vzc19MZXZlbCwgU2V0X0V4cGFuZGVkX05hbWUsIFNldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcywKCVNldF9QcmltX09wX0FkZHJlc3MsIFNldF9SQ19PZmZzZXQsIFNldF9SZW1vdGVseV9DYWxsYWJsZSwgU2V0X1RTRC4KCShFeHBhbmRfRGlzcGF0Y2hpbmdfQ2FsbCk6IFJlcGxhY2UgZ2VuZXJhdGlvbiBvZiBjYWxsIHRvIHRoZSBydW4tdGltZQoJc3VicHJvZ3JhbXMgR2V0X1ByZWRlZmluZWRfUHJpbV9PcF9BZGRyZXNzIGFuZCBHZXRfUHJpbV9PcF9BZGRyZXNzIGJ5CgljYWxscyB0byBCdWlsZF9HZXRfUHJlZGVmaW5lZF9QcmltX09wX0FkZHJlc3MsIGFuZCBCdWlsZF9HZXRfUHJpbV9PcF8KCUFkZHJlc3MuCgkoRmlsbF9EVF9FbnRyeSwgRmlsbF9TZWNvbmRhcnlfRFRfRW50cnkpOiBSZXBsYWNlIGdlbmVyYXRpb24gb2YgY2FsbCB0bwoJdGhlIHJ1bi10aW1lIHN1YnByb2dyYW1zIFNldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyBhbmQgU2V0X1ByaW1fCglPcF9BZGRyZXNzIGJ5IGNhbGxzIHRvIEJ1aWxkX1NldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcywgYW5kCglCdWlsZF9TZXRfUHJpbV9PcF9BZGRyZXNzLgoJKEdldF9SZW1vdGVseV9DYWxsYWJsZSk6IFN1YnByb2dyYW0gcmVtb3ZlZC4KCShJbml0X1ByZWRlZmluZWRfSW50ZXJmYWNlX1ByaW1pdGl2ZXMpOiBSZXBsYWNlIGdlbmVyYXRpb24gb2YgY2FsbCB0bwoJdGhlIHJ1bi10aW1lIHN1YnByb2dyYW1zIEluaGVyaXRfRFQgYnkgY2FsbCB0byBCdWlsZF9Jbmhlcml0X1ByZWRlZmluZWRfCglQcmltcy4KCgkqIHNlbV9lbGFiLmFkYiAoU2V0X0VsYWJvcmF0aW9uX0NvbnN0cmFpbnQpOiBSZXBsYWNlIHRoZSBjYWxsIHRvCglGaXJzdCAoUGFyYW1ldGVyX0Fzc29jaWF0aW9ucyAoKSkgd2l0aCB0aGUgY2FsbCB0byBGaXJzdF9BY3R1YWwgdGhhdAoJcmV0dXJucyBhbiBhY3R1YWwgcGFyYW1ldGVyIGV4cHJlc3Npb24gZm9yIGJvdGggbmFtZWQgYW5kIHBvc2l0aW9uYWwKCWFzc29jaWF0aW9ucy4KCgkqIHNlbV9kaXNwLmFkYiAoQ2hlY2tfRGlzcGF0Y2hpbmdfQ2FsbCk6IEluIGNhc2Ugb2YgZGlzcGF0Y2hpbmcgY2FsbAoJY2hlY2sgdmlvbGF0aW9uIG9mIHJlc3RyaWN0aW9uIE5vX0Rpc3BhdGNoaW5nX0NhbGxzLgoJKENoZWNrX0NvbnRyb2xsaW5nX1R5cGUpOiBBIGZvcm1hbCBvZiBhIHRhZ2dlZCBpbmNvbXBsZXRlIHR5cGUgaXMgYQoJY29udHJvbGxpbmcgYXJndW1lbnQuCgoJKiBleHBfdXRpbC5hZHMsIGV4cF91dGlsLmFkYiAoVHlwZV9NYXlfSGF2ZV9CaXRfQWxpZ25lZF9Db21wb25lbnRzKTogVXNlCglGaXJzdC9OZXh0X0NvbXBvbmVudF9Pcl9EaXNjcmltaW5hbnQKCShJbnNlcnRfQWN0aW9ucyk6IEFkZCBlbnRyaWVzIGZvciBuZXcgTl9QdXNoIGFuZCBOX1BvcCBub2RlcwoJKEZpbmRfSW1wbGVtZW50ZWRfSW50ZXJmYWNlKTogUmVtb3ZlZC4gQWxsIHRoZSBjYWxscyB0byB0aGlzIHN1YnByb2dyYW0KCXNwZWNpZnkgQW55X0xpbWl0ZWRfSW50ZXJmYWNlLCBhbmQgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFscmVhZHkKCXByb3ZpZGVkIGJ5IHRoZSBmdW5jdGlvbiBIYXNfQWJzdHJhY3RfSW50ZXJmYWNlcy4KCShGaW5kX0ludGVyZmFjZSwgRmluZF9JbnRlcmZhY2VfVGFnLCBGaW5kX0ludGVyZmFjZV9BRFQpOiBNb2RpZmllZCB0bwoJc3VwcG9ydCBjb25jdXJyZW50IHR5cGVzIGltcGxlbWVudGluZyBpbnRlcmZhY2VzLgoJKEZpbmRfSW1wbGVtZW50ZWRfSW50ZXJmYWNlKTogUmVtb3ZlZC4gQWxsIHRoZSBjYWxscyB0byB0aGlzIHN1YnByb2dyYW0KCXNwZWNpZnkga2luZCBBbnlfTGltaXRlZF9JbnRlcmZhY2UsIGFuZCB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgYWxyZWFkeQoJcHJvdmlkZWQgYnkgdGhlIGZ1bmN0aW9uIEhhc19BYnN0cmFjdF9JbnRlcmZhY2VzLgoJKFJlbW92ZV9TaWRlX0VmZmVjdHMpOiByZXBsYWNlIENvbnRyb2xsZWRfVHlwZSBieQoJQ1dfT3JfQ29udHJvbGxlZF9UeXBlIHdoZW5ldmVyIHRoZSBpc3N1ZSBpcyByZWxhdGVkIHRvCgl1c2luZyBvciBub3QgdGhlIHNlY29uZGFyeSBzdGFjay4KCgkqIHBhci1jaDEyLmFkYiAoUF9Gb3JtYWxfVHlwZV9EZWZpbml0aW9uKTogVXBkYXRlIGNhbGxzIHRvCglQX0ludGVyZmFjZV9UeXBlX0RlZmluaXRpb24gdG8gZnVsZmlsbCB0aGUgbmV3IGludGVyZmFjZSAodGhlIGZvcm1hbAoJSXNfU3luY2hyb25pemVkIGlzIG5vIGxvbmdlciByZXF1aXJlZCkuCgoJKiBNYWtlLWxhbmcuaW4gKEdOQVRfQURBX09CSlMpOiBBZGRpdGlvbiBvZiBleHBfYXRhZy5vCglVcGRhdGUgZGVwZW5kZW5jaWVzLgoKCSogZXhwX2F0YWcuYWRzLCBleHBfYXRhZy5hZGI6IE5ldyBmaWxlCgoyMDA3LTA0LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoJICAgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDcuYWRzLCBleHBfY2g3LmFkYiAoRmluZF9GaW5hbF9MaXN0KTogSWYgdGhlIGFjY2VzcyB0eXBlIGlzCglhbm9ueW1vdXMsIHVzZSBmaW5hbGl6YXRpb24gbGlzdCBvZiBlbmNsb3NpbmcgZHluYW1pYyBzY29wZS4KCShFeHBhbmRfTl9QYWNrYWdlX0RlY2xhcmF0aW9uKTogRm9yIGEgbGlicmFyeSBwYWNrYWdlIGRlY2xhcmF0aW9uCgl3aXRob3V0IGEgY29ycmVzcG9uZGluZyBib2R5LCBnZW5lcmF0ZSBSQUNXIHN1YnByb2dyYW0gYm9kaWVzIGluIHRoZQoJc3BlYyAoanVzdCBhcyB3ZSBkbyBmb3IgdGhlIHRhc2sgYWN0aXZhdGlvbiBjYWxsKS4KCShDb252ZXJ0X1ZpZXcpOiBTcGxpdCBJc19BYnN0cmFjdCBmbGFnIGludG8gSXNfQWJzdHJhY3RfU3VicHJvZ3JhbSBhbmQKCUlzX0Fic3RyYWN0X1R5cGUuIE1ha2Ugc3VyZSB0aGVzZSBhcmUgY2FsbGVkIG9ubHkgd2hlbiBhcHByb3ByaWF0ZS4KCVJlbW92ZSBhbGwgY29kZSBmb3IgRFNQIG9wdGlvbgoJKENXX09yX0NvbnRyb2xsZWRfVHlwZSk6IG5ldyBzdWJwcm9ncmFtLgoKMjAwNy0wNC0wNiAgRXJpYyBCb3RjYXpvdSA8Ym90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDkuYWRzLCBleHBfY2g5LmFkYiAoRmFtaWx5X09mZnNldCk6IEFkZCBuZXcgJ0NhcCcgYm9vbGVhbgoJcGFyYW1ldGVyLiBJZiBpdCBpcyBzZXQgdG8gdHJ1ZSwgcmV0dXJuIGEgcmVzdWx0IGNhcHBlZCBhY2NvcmRpbmcgdG8KCXRoZSBnbG9iYWwgdXBwZXIgYm91bmQgZm9yIHRoZSBpbmRleCBvZiBhbiBlbnRyeSBmYW1pbHkuCgkoRmFtaWx5X1NpemUpOiBBZGQgbmV3ICdDYXAnIGJvb2xlYW4gcGFyYW1ldGVyLiBQYXNzIGl0IHRvIEZhbWlseV9PZmZzZXQKCShCdWlsZF9GaW5kX0JvZHlfSW5kZXgpOiBBZGp1c3QgZm9yIGFib3ZlIGNoYW5nZS4KCShFbnRyeV9JbmRleF9FeHByZXNzaW9uKTogTGlrZXdpc2UuCgkoSXNfUG90ZW50aWFsbHlfTGFyZ2VfRmFtaWx5KTogTmV3IGZ1bmN0aW9uIGV4dHJhY3RlZCBmcm9tLi4uCgkoQ29sbGVjdF9FbnRyeV9GYW1pbGllcyk6IC4uLmhlcmUuIENhbGwgaXQgdG8gZGV0ZWN0IHdoZXRoZXIgdGhlIGZhbWlseQoJaXMgcG90ZW50aWFsbHkgbGFyZ2UuCgkoQnVpbGRfRW50cnlfQ291bnRfRXhwcmVzc2lvbik6IElmIHRoZSBmYW1pbHkgaXMgcG90ZW50aWFsbHkgbGFyZ2UsIGNhbGwKCUZhbWlseV9TaXplIHdpdGggJ0NhcCcgc2V0IHRvIHRydWUuCgkoRXhwYW5kX05fUHJvdGVjdGVkX1R5cGVfRGVjbGFyYXRpb24sIEV4cGFuZF9OX1Byb3RlY3RlZF9Cb2R5KTogR2VuZXJhdGUKCWEgcHJvdGVjdGVkIHZlcnNpb24gb2YgYW4gb3BlcmF0aW9uIGRlY2xhcmVkIGluIHRoZSBwcml2YXRlIHBhcnQgb2YKCWEgcHJvdGVjdGVkIG9iamVjdCwgYmVjYXVzZSB0aGV5IG1heSBiZSBpbnZva2VkIHRocm91Z2ggYSBjYWxsYmFjay4KCShTZXRfUHJpdmFscyk6IElmIHRoZSB0eXBlIG9mIGEgcHJpdmF0ZSBjb21wb25lbnQgaXMgYW4gYW5vbnltb3VzIGFjY2VzcwoJdHlwZSwgZG8gbm90IGNyZWF0ZSBhIG5ldyBpdHlwZSBmb3IgZWFjaCBwcm90ZWN0ZWQgYm9keS4KCUlmIHRoZSBib2R5IG9mIGEgcHJvdGVjdGVkIG9wZXJhdGlvbiBjcmVhdGVzCgljb250cm9sbGVkIHR5cGVzIChpbmNsdWRpbmcgYWxsb2NhdG9ycyBmb3IgY2xhc3Mtd2lkZXR5cGVzKSwgdGhlCglib2R5IG9mIHRoZSBjb3JyZXNwb25kaW5nIHByb3RlY3RlZCBzdWJwcm9ncmFtIG11c3QgaW5jbHVkZSBhCglmaW5hbGl6YXRpb24gbGlzdC4KCShCdWlsZF9BY3RpdmF0aW9uX0NoYWluX0VudGl0eSk6IEJ1aWxkIHRoZSBjaGFpbiBlbnRpdHkgZm9yIGV4dGVuZGVkCglyZXR1cm4gc3RhdGVtZW50cy4KCShUeXBlX0NvbmZvcm1hbnRfUGFyYW1ldGVycyk6IFVzZSBjb21tb24gcHJlZGljYXRlIENvbmZvcm1pbmdfVHlwZXMKCXRvIGRldGVybWluZSB3aGV0aGVyIG9wZXJhdGlvbiBvdmVycmlkZXMgYW4gaW5oZXJpdGVkIHByaW1pdGl2ZS4KCShCdWlsZF9XcmFwcGVyX1NwZWMpOiBBZGQgY29kZSB0byBleGFtaW5lIHRoZSBwYXJlbnRzIHdoaWxlIGxvb2tpbmcKCWZvciBhIHBvc3NpYmxlIG92ZXJyaWRpbmcgY2FuZGlkYXRlLgoJKEJ1aWxkX1NpbXBsZV9FbnRyeV9DYWxsKTogU2V0IE5vX0luaXRpYWxpemF0aW9uIG9uIHRoZSBvYmplY3QgdXNlZCB0bwoJaG9sZCBhbiBhY3R1YWwgcGFyYW1ldGVyIHZhbHVlIHNpbmNlIGl0cyBpbml0aWFsaXphdGlvbiBpcyBzZXBhcmF0ZWQKCWZyb20gdGhlIHRoZSBkZWNsYXJhdGlvbi4gUHJldmVudHMgZXJyb3JzIG9uIG51bGwtZXhjbHVkaW5nIGFjY2VzcwoJZm9ybWFscy4KCjIwMDctMDQtMDYgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZHMsIGV4cF9kaXN0LmFkYiAoQnVpbGRfVG9fQW55X0NhbGwsIEJ1aWxkX0Zyb21fQW55X0NhbGwpOgoJRG8gYW4gVW5jaGVja2VkX0NvbnZlcnNpb24gdG8gaGFuZGxlIHRoZSBwYXNzYWdlIGZyb20gdGhlIFVuZGVybHlpbmcKCVR5cGUgdG8gdGhlIEJhc2UgVHlwZSB3aGVuIGNhbGxpbmcgQnVpbGRfVG9fQW55X0NhbGwgYW5kCglCdWlsZF9Gcm9tX0FueV9DYWxsLgoJKEJ1aWxkX0FjdHVhbF9PYmplY3RfRGVjbGFyYXRpb24pOiBTZXQgT2JqZWN0J3MgRWtpbmQgdG8gRV9WYXJpYWJsZSBvcgoJRV9Db25zdGFudCwgZGVwZW5kaW5nIHVwb24gVmFyaWFibGUgZm9ybWFsLgoJKEdBUkxJQ19TdXBwb3J0LkJ1aWxkX1N1YnByb2dyYW1fUmVjZWl2aW5nX1N0dWJzLAoJUG9seU9SQl9TdXBwb3J0LkJ1aWxkX1N1YnByb2dyYW1fUmVjZWl2aW5nX1N0dWJzKTogRm9yIGEgZm9ybWFsCglwYXJhbWV0ZXIgdGhhdCByZXF1aXJlcyBhbiBleHRyYSBjb25zdHJhaW5lZCBwYXJhbWV0ZXIsIGRlY2xhcmUKCXRlbXBvcmFyeSBmb3IgYWN0dWFsIGFzIGEgdmFyaWFibGUsIG5vdCBhIGNvbnN0YW50LgoJKEFkZF9SQUNXX1ByaW1pdGl2ZV9EZWNsYXJhdGlvbnNfQW5kX0JvZGllcyk6IEdlbmVyYXRlIGJvZGllcyBvbmx5IHdoZW4KCXRoZSB1bml0IGJlaW5nIGNvbXBpbGVkIGlzIHRoZSBvbmUgdGhhdCBjb250YWlucyB0aGUgc3R1YiB0eXBlLgoJQ2hhbmdlIHByaW1pdGl2ZSBvcGVyYXRpb24gbmFtZSBmb3IgdGhlIFJBQ1cgYXNzb2NpYXRlZCB3aXRoIGEgUkFTCglmcm9tIENhbGwgdG8gX0NhbGwgc28gaXQgY2Fubm90IGNsYXNoIHdpdGggYW55IGxlZ2FsIGlkZW50aWZpZXIuCgkoUG9seU9SQl9TdXBwb3J0LkFkZF9SQUNXX1dyaXRlX0F0dHJpYnV0ZSk6IFJlbW92ZSB1bnVzZWQgY29uc3RhbnQKCUlzX1JBUy4KCShBcHBlbmRfUkFDV19Cb2RpZXMpOiBOZXcgc3VicHJvZ3JhbS4KCShFeHBhbmRfUmVjZWl2aW5nX1N0dWJzX0JvZGllcyk6IFBhc3MgYSAnU3RtdHMnIGxpc3QgdG8KCUFkZF9SZWNlaXZpbmdfU3R1YnNfVG9fRGVjbGFyYXRpb25zIGZ1bmN0aW9ucy4KCVdoZW4gZXhwYW5kaW5nIGEgcGFja2FnZSBib2R5LCB0aGlzIGxpc3QgY29ycmVzcG9uZCB0byB0aGUKCXN0YXRlbWVudHMgaW4gdGhlIEhTUyBhdCB0aGUgZW5kIG9mIHRoZSBwYWNha2dlLgoJV2hlbiBleHBhbmRpbmcgYSBwYWNrYWdlIHNwZWMsIHRoaXMgbGlzdCBjb3JyZXNwb25kIHRvIHRoZQoJc3BlYyBkZWNsYXJhdGlvbnMuCgkoQWRkX1JlY2VpdmluZ19TdHVic19Ub19EZWNsYXJhdGlvbnMpOiBBcHBlbmQgdGhlIGZ1bmN0aW9uCglyZWdpc3RlcmluZyB0aGUgcmVjZWl2aW5nIHN0dWJzIGF0IHRoZSBlbmQgb2YgdGhlICdTdG10cycgbGlzdC4KCShSQ0lfUGFja2FnZV9Mb2NhdG9yKTogUGFzcyB0aGUgbmV3IFZlcnNpb24gZ2VuZXJpYyBmb3JtYWwgd2hlbgoJaW5zdGFudGlhdGluZyBhIFJDSV9Mb2NhdG9yIHBhY2thZ2UuCgkoQnVpbGRfRnJvbV9BbnlfRnVuY3Rpb24pOiBUbyBjb21wdXRlIHRoZSBIaWdoIGJvdW5kIGZvciBhbgoJdW5jb25zdHJhaW5lZCBhcnJheSBhY3R1YWwsIHdlIGFkZCB0aGUgTG93IGJvdW5kIHdpdGggdGhlIGxlbmd0aC4KCVRodXMgd2UgbXVzdCBjb252ZXJ0IHRoZSBsb3cgYm91bmQgYW5kIHRoZSBsZW5ndGggdG8gYW4gYXBwcm9wcmlhdGUKCXR5cGUgYmVmb3JlIGRvaW5nIHRoZSBzdW0uCgkoQnVpbGRfU3VicHJvZ3JhbV9SZWNlaXZpbmdfU3R1YnMsIFBvbHlPUkIpOgoJICogUmV0cmlldmUgdGhlIGV4dHJhIGZvcm1hbHMgcGFyYW1ldGVycyBhdCB0aGUKCSAgIGVuZCBvZiB0aGUgcGFyYW1ldGVyIHN0cmVhbS4KCSAqIFVzZSBNb3ZlX0FueV9WYWx1ZSB0byB3cml0ZSBiYWNrIG91dCBwYXJhbWV0ZXJzCgkgICBhZnRlciBleGVjdXRpbmcgdGhlIHJlcXVlc3QgYXMgaXQgaXMgbW9yZSBlZmZpY2llbnQKCSAgIHRoYW4gQ29weV9BbnlfVmFsdWUuCgkgKiBCdWlsZCB0aGUgYW55IGNvbnRhaW5pbmcgRXh0cmEgRm9ybWFscyB3aXRoIHRoZQoJICAgYXBwcm9wcmlhdGUgdHlwZWNvZGUuCgkoUG9seU9SQl9TdXBwb3J0LkhlbHBlcnMuQXBwZW5kX1JlY29yZF9UcmF2ZXJzYWwpOiBOb3RoaW5nIHRvIGRvIGZvciBhbgoJZW1wdHkgQ29tcG9uZW50X0xpc3QuCgkoQnVpbGRfQWN0dWFsX09iamVjdF9EZWNsYXJhdGlvbik6IE5ldyBzdWJwcm9ncmFtLiBCdWlsZCBhbmQgaW5zZXJ0IGludG8KCXRoZSB0cmVlIHRoZSBkZWNsYXJhdGlvbiBmb3IgYW4gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGFjdHVhbCBwYXJhbWV0ZXIKCWluIHNlcnZlci1zaWRlIHN0dWJzLgoJKEdBUkxJQ19TdXBwb3J0LkJ1aWxkX1N1YnByb2dyYW1fUmVjZWl2aW5nX1N0dWJzLAoJUG9seU9SQl9TdXBwb3J0LkJ1aWxkX1N1YnByb2dyYW1fUmVjZWl2aW5nX1N0dWJzKToKCVVzZSBCdWlsZF9BY3R1YWxfT2JqZWN0X0RlY2xhcmF0aW9uIHRvIHByZXBhcmUgdGhlIGFjdHVhbHMuCgkoQWRkX1BhcmFtZXRlcl9Ub19OVkxpc3QpOiBTZXQgdGhlIHBhcmFtZXRlciBtb2RlIHRvIEluIGZvcgoJRXh0cmEgQ29uc3RyYWluZWQgUGFyYW1ldGVycy4KCShCdWlsZF9HZW5lcmFsX0NhbGxpbmdfU3R1YnMpOiBTZXQgdGhlIHBhcmFtZXRlciB0eXBlIHRvIGJvb2xlYW4gZm9yCglFeHRyYSBDb25zdHJhaW5lZCBwYXJhbWV0ZXJzLgoJKEJ1aWxkX1RvX0FueV9GdW5jdGlvbiwgQnVpbGRfRnJvbV9BbnlfRnVuY3Rpb24sCglCdWlsdF9UeXBlQ29kZV9GdW5jdGlvbik6IFdoZW4gVHlwIGlzIGltcGxpY2l0LCBjYWxsIHRoZSBjb3JyZWN0CglmdW5jdGlvbiB3aXRoIHRoZSBmaXJzdCBub3QgaW1wbGljaXQgcGFyZW50IHR5cGUuCgkoVENfUmVjX0FkZF9Qcm9jZXNzX0VsZW1lbnQsIEZBX1JlY19BZGRfUHJvY2Vzc19FbGVtZW50LAoJKEZBX0FyeV9BZGRfUHJvY2Vzc19FbGVtZW50KTogV2hlbiBEYXR1bSBpcyBhbiBBbnksIHdlIGNhbm5vdCBpbmZlciB0aGUKCXR5cGVjb2RlIGZyb20gdGhlIEV0eXBlLiBUaGVyZWZvcmUgd2UgcmV0cmlldmUgdGhlIGNvcnJlY3QgdHlwZWNvZGUKCXdpdGggYSBjYWxsIHRvIEdldF9BbnlfVHlwZS4KCShDb3B5X1NwZWNpZmljYXRpb24pOiBEbyBjb250cm9sbGluZyBmb3JtYWwgdHlwZSBzdWJzdGl0dXRpb24gYmFzZWQgb24KCUlzX0NvbnRyb2xsaW5nX0Zvcm1hbCBmbGFnLCBpbnN0ZWFkIG9mIGNhbGxlci1wcm92aWRlZCBvYmplY3QgdHlwZS4KCShCdWlsZF9TdWJwcm9ncmFtX0NhbGxpbmdfU3R1YnMpOiBXaGVuIHJldHJpZXZlaW5nIHRoZSBvcmlnaW5hbCBzcGVjIGZvcgoJYSBSQUNXIHByaW1pdGl2ZSBvcGVyYXRpb24sIHdlIG1pZ2h0IGdldCBhIHN1YnByb2dyYW0gZGVjbGFyYXRpb24gZm9yIGFuCglhbmNlc3RvciBvZiB0aGUgUkFDVyBkZXNpZ25hdGVkIHR5cGUgKG5vdCBmb3IgdGhlIGRlc2lnbmF0ZWQgdHlwZQoJaXRzZWxmKSwgaW4gdGhlIGNhc2Ugd2hlcmUgdGhpcyBvcGVyYXRpb24gaXMgaW5oZXJpdGVkLiBJbiB0aGlzIGNhc2Ugd2UKCWhhdmUgbm8gZWFzeSBtZWFucyBvZiBkZXRlcm1pbmluZyB0aGUgb3JpZ2luYWwgdGFnZ2VkIHR5cGUgZm9yIHdoaWNoCgl0aGUgcHJpbWl0aXZlIHdhcyBkZWNsYXJlZCwgc28gaW5zdGVhZCB3ZSBub3cgcmVseSBvbgoJQ29weV9TcGVjaWZpY2F0aW9uIHRvIHVzZSB0aGUgSXNfQ29udHJvbGxpbmdfRm9ybWFsIGZsYWcgdG8gZGV0ZXJtaW5lCgl3aGljaCBmb3JtYWxzIHJlcXVpcmUgdHlwZSBzdWJzdGl0dXRpb24uCgoyMDA3LTA0LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfaW50ci5hZGIgKEV4cGFuZF9FeGNlcHRpb25fQ2FsbCk6IENhbGxzIHRvIHN1YnByb2dyYW1zIGluCglHTkFULkN1cnJlbnRfRXhjZXB0aW9uIGFyZSBub3QgYWxsb3dlZCBpZiBwcmFnbWEgUmVzdHJpY3Rpb25zCgkoTm9fRXhjZXB0aW9uX1Byb3BhZ2F0aW9uKSBpcyBzZXQgYW5kIGluIGFueSBjYXNlIG1ha2UgdGhlIGFzc29jaWF0ZWQKCWhhbmRsZXIgdW5zdWl0YWJsZSBhcyBhIHRhcmdldCBmb3IgYSBsb2NhbCByYWlzZSBzdGF0ZW1lbnQuCgkoRXhwYW5kX0Rpc3BhdGNoaW5nX0NvbnN0cnVjdG9yX0NhbGwpOiBSZXBsYWNlIGdlbmVyYXRpb24gb2YgY2FsbCB0byB0aGUKCXJ1bi10aW1lIHN1YnByb2dyYW0gQ1dfTWVtYmVyc2hpcCBieSBjYWxsIHRvIEJ1aWxkX0NXX01lbWJlcnNoaXAuCgkoRXhwYW5kX0Rpc3BhdGNoaW5nX0NvbnN0cnVjdG9yX0NhbGwpOiBJZiB0aGUgZGlzcGF0Y2hpbmcgdGFnIGlzIGdpdmVuCglieSBhIGZ1bmN0aW9uIGNhbGwsIGEgdGVtcG9yYXJ5IG11c3QgYmUgY3JlYXRlZCBiZWZvcmUgZXhwYW5kaW5nIHRoZQoJQ29uc3RydWN0b3JfQ2FsbCBpdHNlbGYsIHRvIHByZXZlbnQgb3V0LW9mLW9yZGVyIGVsYWJvcmF0aW9uIGluIHRoZQoJYmFjay1lbmQgd2hlbiBzdGFjayBjaGVja2luZyBpcyBlbmFibGVkLi4KCjIwMDctMDQtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9wYWtkLmFkYiAoRXhwYW5kX1BhY2tlZF9Cb29sZWFuX09wZXJhdG9yKTogVGhlIGJvdW5kcyBvZiB0aGUKCXJlc3VsdCBhcmUgdGhlIGJvdW5kcyBvZiB0aGUgbGVmdCBvcGVyYW5kLCBub3QgdGhlIHJpZ2h0LgoKMjAwNy0wNC0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX3N0cm0uYWRiCgkoQnVpbGRfTXV0YWJsZV9SZWNvcmRfV3JpdGVfUHJvY2VkdXJlKTogRm9yIGFuIFVuY2hlY2tlZF9VbmlvbiB0eXBlLCB1c2UKCSBkaXNjcmltaW5hbnQgZGVmYXVsdHMuCgkoQnVpbGRfUmVjb3JkX09yX0VsZW1lbnRhcnlfT3V0cHV0X1Byb2NlZHVyZSk6IERpdHRvLgoJKE1ha2VfQ29tcG9uZW50X0xpc3RfQXR0cmlidXRlcyk6IERpdHRvLgoKMjAwNy0wNC0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIHNlbV9hZ2dyLmFkYiAoUmVzb2x2ZV9SZWNvcmRfQWdncmVnYXRlKTogSW4gc2VtYW50aWNzLW9ubHkgbW9kZSB0cmVhdAoJYW4gYXNzb2NpYXRpb24gd2l0aCBhIGJveCBhcyBwcm92aWRpbmcgYSB2YWx1ZSBldmVuIHRob3VnaCB0aGUKCWluaXRpYWxpemF0aW9uIHByb2NlZHVyZSBmb3IgdGhlIHR5cGUgaXMgbm90IGF2YWlsYWJsZS4KCShSZXNvbHZlX1JlY29yZF9BZ2dyZWdhdGUpOiBDaGVjayB0aGF0IGEgY2hvaWNlIG9mIGFuIGFzc29jaWF0aW9uIHdpdGggYQoJYm94IGNvcnJlc3BvbmRzIHRvIGEgY29tcG9uZW50IG9mIHRoZSB0eXBlLgoJKFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZSk6IFNwbGl0IElzX0Fic3RyYWN0IGZsYWcgaW50bwoJSXNfQWJzdHJhY3RfU3VicHJvZ3JhbSBhbmQgSXNfQWJzdHJhY3RfVHlwZS4KCgkqIGV4cF90c3MuYWRiIChCYXNlX0luaXRfUHJvYyk6IFVzZSBJc19UeXBlIGluc3RlYWQgb2YgVHlwZV9LaW5kIGZvcgoJYXNzZXJ0LgoKCSogaW5saW5lLmFkYiAoQWRkX0lubGluZWRfQm9keSk6IFNwbGl0IElzX0Fic3RyYWN0IGZsYWcgaW50bwoJSXNfQWJzdHJhY3RfU3VicHJvZ3JhbSBhbmQgSXNfQWJzdHJhY3RfVHlwZS4gTWFrZSBzdXJlIHRoZXNlIGFyZQoJY2FsbGVkIG9ubHkgd2hlbiBhcHByb3ByaWF0ZS4KCjIwMDctMDQtMDYgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBnLWFsbGV2ZS5hZHMgKExvdyBMZXZlbCBWZWN0b3IgdHlwZSBkZWZpbml0aW9ucyk6IE1hcCBlYWNoIHRvIHRoZQoJYXNzb2NpYXRlZCB2ZWN0b3IgdmlldyBpbnN0ZWFkIG9mIGFsbCB0byB0aGUgdW5zaWduZWQgY2hhciB2aWV3LgoKCSogZy1hbHRjb24uYWRiIChHZW5lcmljX0NvbnZlcnNpb25zKTogTmV3IGludGVybmFsIGdlbmVyaWMgcGFja2FnZSwKCW9mZmVyaW5nIGZhY2lsaXRpZXMgZm9yIGFsbCB0aGUgVmVjdG9yL1ZpZXcgY29udmVyc2lvbiByb3V0aW5lcwoJaW1wbGVtZW50ZWQgYnkgdGhpcyB1bml0LgoJKFRvX1ZpZXcvVG9fVmVjdG9yIC0gYWxsIHZlcnNpb25zKTogUmVpbXBsZW1lbnRlZCBpbiBhIHN5c3RlbWF0aWMKCW1hbm5lciwgdXNpbmcgdGhlIGludGVybmFsIEdlbmVyaWNfQ29udmVyc2lvbnMgZmFjaWxpdGllcy4KCjIwMDctMDQtMDYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGctYXJyc3BsLmFkYiAoRnJlZSkgW0VsZW1lbnRfQWNjZXNzXTogTmV3IHJvdXRpbmUgdG8gZnJlZSB0aGUgc291cmNlCglzdHJpbmcuCgkoQ3JlYXRlKTogRnJlZSB0aGUgc291cmNlIHN0cmluZyBiZWZvcmUgc3RvcmluZyB0aGUgbmV3IG9uZS4KCjIwMDctMDQtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZy1kZWJwb28uYWRiIChWYWxpZGl0eSk6IE5ldyBwYWNrYWdlIHdpdGggYSBjb21wbGV0ZSBuZXcKCWltcGxlbWVudGF0aW9uIG9mIHN1YnByb2dyYW1zIElzX1ZhbGlkIGFuZCBTZXRfVmFsaWQuCgkoSXNfVmFsaWQpOiBNb3ZlIHRvIGxvY2FsIHBhY2thZ2UgVmFsaWRpdHkKCShTZXRfVmFsaWQpOiBNb3ZlIHRvIGxvY2FsIHBhY2thZ2UgVmFsaWRpdHkKCjIwMDctMDQtMDYgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGctZXhwZWN0LmFkYiAoR2V0X0NvbW1hbmRfT3V0cHV0KTogV2hlbiBleHBhbmRpbmcgdGhlIG91dHB1dCBidWZmZXIKCXdlIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgaXMgZW5vdWdoIHBsYWNlIGZvciB0aGUgbmV3IGRhdGEgd2UgYXJlIGdvaW5nCgl0byBjb3B5IGluLgoKMjAwNy0wNC0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctbWQ1LmFkcywgZy1tZDUuYWRiIChEaWdlc3QpOiBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBwYWRkaW5nCgljb21wdXRhdGlvbi4KCjIwMDctMDQtMDYgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBnbmF0Y21kLmFkYiAoQl9TdGFydCk6IEFkZCBwcmVmaXggb2YgYmluZGVyIGdlbmVyYXRlZCBmaWxlLgoJKFN0YWNrX1N0cmluZyk6IEFkZCB0aGlzIFN0cmluZyB0aGF0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBTdGFjawoJcGFja2FnZSBpbiB0aGUgcHJvamVjdCBmaWxlLgoJKFBhY2thZ2VzX1RvX0NoZWNrX0J5X1N0YWNrKTogQWRkIHRoaXMgbGlzdCB0aGF0IGNvbnRhaW5zIHRoZSBwYWNrYWdlcwoJdG8gYmUgY2hlY2tlZCBieSBnbmF0c3RhY2ssIHdoaWNoIGFyZSB0aGUgbmFtaW5nIGFuZCB0aGUgc3RhY2sgcGFja2FnZXMuCgkoQ2hlY2tfRmlsZXMpOiBJZiBubyAuY2kgZmlsZXMgd2VyZSBzcGVjaWZpZWQgZm9yIGduYXRzdGFjayB3ZSBhZGQgYWxsCgl0aGUgLmNpIGZpbGVzIGJlbG9uZ2luZyB0byB0aGUgcHJvamVjdHMsIGluY2x1ZGluZyBiaW5kZXIgZ2VuZXJhdGVkCglmaWxlcy4KCShOb25fVk1TX1VzYWdlKTogRG9jdW1lbnQgdGhhdCBnbmF0c3RhY2sgYWNjZXB0IHByb2plY3QgZmlsZSBzd2l0Y2hlcy4KCShHTkFUQ21kKTogVXBkYXRlIHRoZSBCX1N0YXJ0IHZhcmlhYmxlIGlmIHdlIGFyZSBpbiBhIFZNUyBlbnZpcm9ubWVudC4KCUFkZCBnbmF0c3RhY2sgdG8gdGhlIGxpc3Qgb2YgY29tbWFuZHMgdGhhdCB1c2UgcHJvamVjdCBmaWxlIHJlbGF0ZWQKCXN3aXRjaGVzLCBhbmQgZ2V0IHRoZSBzaW5nbGUgYXR0cmlidXRlIFN3aXRjaGVzIGZyb20gdGhlIHN0YWNrIHBhY2thZ2UKCWluIGEgcHJvamVjdCBmaWxlIHdoZW4gY2FsbGluZyBnbmF0c3RhY2suIFBhcnNlIHRoZSAtVSBmbGFnIGZvcgoJcHJvY2Vzc2luZyBmaWxlcyBiZWxvbmdpbmcgdG8gYWxsIHByb2plY3RzIGluIHRoZSBwcm9qZWN0IHRyZWUuCglSZW1vdmUgYWxsIHByb2Nlc3NpbmcgZm9yIGNvbW1hbmQgU2V0dXAKCgkqIHByai1hdHRyLmFkYjogQWRkIG5ldyBwYWNrYWdlIFN0YWNrIHdpdGggc2luZ2xlIGF0dHJpYnV0ZSBTd2l0Y2hlcwoKCSogdm1zX2NvbnYuYWRzIChDb21tYW5kX1R5cGUpOiBBZGQgY29tbWFuZCBTdGFjay4KCU1vdmUgdG8gYm9keSBkZWNsYXJhdGlvbnMgdGhhdCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5OiB0eXBlcyBJdGVtX0lkLAoJVHJhbnNsYXRpb25fVHlwZSwgSXRlbV9QdHIsIEl0ZW0gYW5kIGl0cyBzdWJ0eXBlcy4KCgkqIHZtc19jb252LmFkYjogKEluaXRpYWxpemUpOiBBZGQgZGF0YSBmb3IgbmV3IGNvbW1hbmQgU3RhY2suCglBZGQgZGVjbGFyYXRpb25zIG1vdmVkIGZyb20gdGhlIHNwZWM6IHR5cGVzIEl0ZW1fSWQsIFRyYW5zbGF0aW9uX1R5cGUsCglJdGVtX1B0ciwgSXRlbSBhbmQgaXRzIHN1YnR5cGVzLgoJKENhcmdzX0J1ZmZlcik6IE5ldyB0YWJsZQoJKENhcmdzKTogTmV3IEJvb2xlYW4gZ2xvYmFsIHZhcmlhYmxlCgkoUHJvY2Vzc19CdWZmZXIpOiBOZXcgcHJvY2VkdXJlIHRvIGNyZWF0ZSBhcmd1bWVudHMKCShQbGFjZSk6IFB1dCBjaGFyYWN0ZXIgaW4gdGFibGUgQnVmZmVyIG9yIENhcmdzX0J1ZmZlciBkZXBlbmRpbmcgb24gdGhlCgkgdmFsdWUgb2YgQ2FyZ3MuCgkoUHJvY2Vzc19Bcmd1bWVudCk6IFNldCBDYXJncyB3aGVuIHByb2Nlc3NpbmcgcXVhbGlmaWVycyBmb3IgR05BVAoJQ09NUElMRQoJKFZNU19Db252ZXJzaW9uKTogQ2FsbCBQcm9jZXNzX0J1ZmZlciBmb3IgdGFibGUgQnVmZmVyIGFuZCwgaWYgaXQgaXMgbm90CgllbXB0eSwgZm9yIHRhYmxlIENhcmdzX0J1ZmZlci4KCShJbml0aWFsaXplKTogUmVtb3ZlIGNvbXBvbmVudCBTZXR1cCBpbiBDb21tYW5kX0xpc3QKCjIwMDctMDQtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZ3ByZXAuYWRiIChQcm9jZXNzX0ZpbGVzLlByb2Nlc3NfT25lX0ZpbGUpOiBVc2UgZnVsbCBmaWxlIG5hbWUgd2hlbgoJaXNzdWluZyBwcmFnbWEgU291cmNlX1JlZmVyZW5jZS4KCjIwMDctMDQtMDYgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWRhY29yZS5jb20+CgoJKiBnLXJlZ3BhdC5hZGIgKFBhcnNlX1Bvc2l4X0NoYXJhY3Rlcl9DbGFzcyk6IEZpeCBoYW5kbGluZyBvZgoJW1s6eGRpZ2l0Ol1dIGNoYXJhY3RlciBjbGFzcy4KCUFsc28gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gYW4gaW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MgaXMgdXNlZC4KCjIwMDctMDQtMDYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGktY3N0cmVhLmFkczogKGZvcGVuKTogQWRkIGVuY29kaW5nIHBhcmFtZXRlci4KCShmcmVvcGVuKTogSWRlbS4KCUNoYW5nZSByZWZlcmVuY2UgZnJvbSBhLXN5c2RlcC5jIHRvIHN5c2RlcC5jIGluIGNvbW1lbnQuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCVRoaXMgc2V0IG9mIHBhdGNoIGFkZCBzdXBwb3J0IGZvciB0aGUgZW5jb2RpbmcgZm9ybSBwYXJhbWV0ZXIuCgoJKiBtaW5ndzMyLmggKFMyV1NVKTogTmV3IG1hY3JvIHRvIGNvbnZlcnQgZnJvbSBhIHN0cmluZyB0byBhCgl3aWRlLXN0cmluZyB1c2luZyB0aGUgVVRGLTggZW5jb2RpbmcuIFRoZSBTMldTIG1hY3JvIHN1cHBvcnRzIG5vdyBvbmx5CglzdGFuZGFyZCA4Yml0cyBlbmNvZGluZy4KCShXUzJTVSk6IEFzIGFib3ZlIGJ1dCBjb252ZXJ0aW5nIGZyb20gd2lkZS1zcmluZyB0byBzdHJpbmcuCglUaGlzIGlzIG5lZWRlZCBhcyBpdCBpcyBuZWNlc3NhcnkgdG8gaGF2ZSBhY2Nlc3MgdG8gYm90aCB2ZXJzaW9ucyBpbiB0aGUKCXJ1bnRpbWUgZm9yIHRoZSBmb3JtIHBhcmFtZXRlciBlbmNvZGluZyBzdXBwb3J0LgoJVGhpcyBzZXQgb2YgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIHRoZSBlbmNvZGluZyBmb3JtIHBhcmFtZXRlci4KCShTMldTKTogSW1wcm92ZSBpbXBsZW1lbnRhdGlvbiB0byBoYW5kbGUgY2FzZXMgd2hlcmUgdGhlIGZpbGVuYW1lIGlzIG5vdAoJVVRGLTggZW5jb2RlZC4gSW4gdGhpcyBjYXNlIHdlIGRlZmF1bHQgdG8gdXNpbmcgdGhlIGN1cnJlbnQgY29kZSBwYWdlCglmb3IgdGhlIGNvbnZlcnNpb24uCgoJKiBzLWNydGwtdm1zNjQuYWRzLCBzLWNydGwuYWRzIChGaWxlbmFtZV9FbmNvZGluZyk6IE5ldyBlbnVtZXJhdGlvbgoJdHlwZSAoVVRGOCwgQVNDSUlfOGJpdHMpLiBUaGlzIGVudW1lcmF0aW9uIGhhcyBhIHJlcCBjbGF1c2UgdG8gbWF0Y2gKCXRoZSBjb25zdGFudHMgZGVmaW5lZCBpbiBhZGFpbnQuaC4KCShmb3Blbik6IEFkZCBlbmNvZGluZyBwYXJhbWV0ZXIuCgkoZnJlb3Blbik6IElkZW0uCgoJKiBzLWZpY29ibC5hZHMgKEFGQ0IpOiBBZGQgRW5jb2RpbmcgZmllbGQgdG8gcmVjb3JkIHRoZSBmaWxlbmFtZQoJZW5jb2RpbmcuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgUmVzZXQgcm91dGluZSAoZnJlb3BlbiBsb3cgbGV2ZWwtY2FsbCkuCgoJKiBzLWZpbGVpby5hZGIgKE9wZW4pOiBEZWNvZGUgZW5jb2RpbmcgZm9ybSBwYXJhbWV0ZXIgYW5kIHNldCB0aGUKCWNvcnJlc3BvbmRpbmcgZW5jb2RpbmcgdmFsdWUgaW50byBBRkNCIHN0cnVjdHVyZS4KCShSZXNldCk6IFBhc3MgdGhlIGVuY29kaW5nIHZhbHVlIHRvIGZyZW9wZW4uCgkoQ2xvc2UpOiBNb3ZlIHRoZSBjYWxsIHRvIExvY2tfVGFzayB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwcm9jZWR1cmUuCgoyMDA3LTA0LTA2ICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogaS1mb3J0cmEuYWRzOiBBZGQgRG91YmxlX0NvbXBsZXggdHlwZS4KCgkqIGltcHVuaXQuYWRiOiAoSXNfS25vd25fVW5pdCk6IE5ldyBmdW5jdGlvbgoJQWRkIEduYXQuQnl0ZV9Td2FwcGluZwoJQWRkIEdOQVQuU0hBMQoJQWRkIG5ldyBBZGEgMjAwNSB1bml0cwoJQWRhLk51bWVyaWNzLkdlbmVyaWNfQ29tcGxleF9BcnJheXMsIEFkYS5OdW1lcmljcy5HZW5lcmljX1JlYWxfQXJyYXlzLAoJQWRhLk51bWVyaWNzLkNvbXBsZXhfQXJyYXlzLCBBZGEuTnVtZXJpY3MuUmVhbF9BcnJheXMsCglBZGEuTnVtZXJpY3MuTG9uZ19Db21wbGV4X0FycmF5cywgQWRhLk51bWVyaWNzLkxvbmdfTG9uZ19Db21wbGV4X0FycmF5cywKCUFkYS5OdW1lcmljcy5Mb25nX0xvbmdfUmVhbF9BcnJheXMgYW5kIEFkYS5OdW1lcmljcy5Mb25nX1JlYWxfQXJyYXlzCgoJKiBpbXB1bml0LmFkcyAoSXNfS25vd25fVW5pdCk6IE5ldyBmdW5jdGlvbgoKCSogYS1uZ2NvYXIuYWRiLCBhLW5nY29hci5hZHMsIGEtbmdyZWFyLmFkYiwKCWEtbmdyZWFyLmFkcywgYS1ubGNvYXIuYWRzLCBhLW5sbGNhci5hZHMsIGEtbmxscmFyLmFkcywgYS1ubHJlYXIuYWRzLAoJYS1udWNvYXIuYWRzLCBhLW51cmVhci5hZHMsIGctYnl0c3dhLmFkYiwgZy1ieXRzd2EteDg2LmFkYiwKCWctYnl0c3dhLmFkcywgZy1zaGExLmFkYiwgZy1zaGExLmFkcywgaS1mb3JibGEuYWRzLCBpLWZvcmxhcC5hZHMsCglzLWdlYXJvcC5hZGIsIHMtZ2Vhcm9wLmFkcywgcy1nZWNvYmwuYWRiLCBzLWdlY29ibC5hZHMsIHMtZ2Vjb2xhLmFkYiwKCXMtZ2Vjb2xhLmFkcywgcy1nZXJlYmwuYWRiLCBzLWdlcmVibC5hZHMsIHMtZ2VyZWxhLmFkYiwgcy1nZXJlbGEuYWRzOgoJTmV3IGZpbGVzLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgZy1ieXRzd2EsIGctc2hhMSwgYS1menRlaW8gYW5kIGEtaXp0ZWlvCgoJKiBhLWZ6dGVpby5hZHMsIGEtaXp0ZWlvLmFkczogTmV3IEFkYSAyMDA1IHJ1bi10aW1lIHVuaXRzLgoKMjAwNy0wNC0wNiAgRXJpYyBCb3RjYXpvdSA8Ym90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogaW5pdC5jOiBSZXVzZSBQQS9IUC1VWCBjb2RlIGZvciBJQS02NC9IUC1VWCwgZXhjZXB0CglfX2duYXRfYWRqdXN0X2NvbnRleHRfZm9yX3JhaXNlLgoJKF9fZ25hdF9pbml0X2Zsb2F0KTogb24geDg2IHZ4d29ya3MgNS54IGFuZCA2LngsIHdlIHVzZSB0aGUgc2FtZQoJaW1wbGVtZW50YXRpb24gb2YgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBhcyBuYXRpdmUgeDg2IHRhcmdldHMuCglTbyB0aGUgRlBVIHNob3VsZCBiZSBpbml0aWFsaXplZCBpbiB0aGUgc2FtZSB3YXkgdXNpbmcgZmluaXQuIEZpeAoJZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucyBhY2N1cmFjeSBpc3N1ZXMuCgkoX19nbmF0X2luc3RhbGxfaGFuZGxlciwgY2FzZSBGcmVlQlNEKTogVXNlIHByb3BlciB0eXBlIGZvciBzYV9zaWdhY3Rpb24KCW1lbWJlciBpbiBzdHJ1Y3Qgc2lnYWN0aW9uLCBzbyBhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBpbmNvbXBhdGlibGUKCXBvaW50ZXIgdHlwZXMuCgoyMDA3LTA0LTA2IFNlcmd1ZWkgUnliaW4gPHJ5YmluQGFkYWNvcmUuY29tPgoKCSogbGliLmFkcywgbGliLmFkYiAoVHJlZV9SZWFkKTogUmVsZWFzZSB0aGUgbWVtb3J5IG9jY3VwaWVkIGJ5IHRoZQoJc3dpdGNoZXMgZnJvbSBwcmV2aW91c2x5IGxvYWRlZCB0cmVlCgoyMDA3LTA0LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogbGliLXdyaXQuYWRiIChXcml0ZV9XaXRoX0xpbmVzKTogRmFjdG9yIGR1cGxpY2F0ZWQgY29kZSBiZXR3ZWVuIHRoZQoJY2FzZXMgd2hlcmUgYSBnaXZlbiBkZXBlbmRlbmN5IGhhcyBhIGJvZHkgb3Igbm90LgoJKFdyaXRlX1dpdGhfRmlsZV9OYW1lcyk6IE5ldyBzdWJwcm9ncmFtLCBjb21tb24gY29kZSBmb3IgdGhlIHR3byBjYXNlcwoJYWJvdmUuCgoyMDA3LTA0LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogbGliLXhyZWYuYWRzLCBsaWIteHJlZi5hZGI6IAoJTW9kaWZ5IHRoZSBsb29wIHRoYXQgY29sbGVjdHMgdHlwZSByZWZlcmVuY2VzLCB0byBpbmNsdWRlIGludGVyZmFjZQoJdHlwZXMgdGhhdCB0aGUgdHlwZSBpbXBsZW1lbnRzLiBMaXN0IGVhY2ggb2YgdGhlc2UgaW50ZXJmYWNlcyB3aGVuCglidWlsZGluZyB0aGUgZW50cnkgZm9yIHRoZSB0eXBlLgoJKEdlbmVyYXRlX0RlZmluaXRpb24pOiBJbml0aWFsaXplIGNvbXBvbmVudCBEZWYgYW5kIFR5cCBvZiBuZXcgZW50cnkKCWluIHRhYmxlIFhyZWZzLCB0byBhdm9pZCB0byBoYXZlIHRoZXNlIGNvbXBvbmVudHMgdW5pdGlhbGl6ZWQuCgkoT3V0cHV0X1JlZmVyZW5jZXMpOiBTcGxpdCBJc19BYnN0cmFjdCBmbGFnIGludG8KCUlzX0Fic3RyYWN0X1N1YnByb2dyYW0gYW5kIElzX0Fic3RyYWN0X1R5cGUuCgkoR2VuZXJhdGVfUmVmZXJlbmNlKTogQWRkIGJhcnJpZXIgdG8gZG8gbm90IGdlbmVyYXRlIHRoZSB3YXJuaW5nCglhc3NvY2lhdGVkIHdpdGggQWRhIDIwMDUgZW50aXRpZXMgd2l0aCBlbnRpdGllcyBnZW5lcmF0ZWQgYnkgdGhlCglleHBhbmRlci4KCjIwMDctMDQtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRfcm0udGV4aSwgZ25hdF91Z24udGV4aTogQWRkIC1nbmF0eWwgZG9jdW1lbnRhdGlvbgoJVXBkYXRlICdFeGNlcHRpb24gSGFuZGxpbmcgQ29udHJvbCcgY2hhcHRlciB3aGljaCB3YXMgb3V0ZGF0ZWQuCglNaW5vciBmaXggdG8gZG9jdW1lbnRhdGlvbiBvZiAtZ25hdHdxCglSZW1vdmUgc2VjdGlvbiAiQWRhcHRpbmcgdGhlIFJ1biBUaW1lIHRvIGEgTmV3IEMrKyBDb21waWxlciIgYmVjYXVzZQoJaXQgaXMgbm93IG9ic29sZXRlLgoJQWRkIHBhc3NhZ2Ugb24gbmVlZCBvZiAtbm9zdGFydC1maWxlcyBpbiBzb21lIG5vbi1hZGEtbWFpbiBjYXNlcy4KCURvY3VtZW50IG5ldyBzd2l0Y2ggLWVTICgvU1RBTkRBUkRfT1VUUFVUX0ZPUl9DT01NQU5EUykgZm9yIGduYXRtYWtlCglVcGRhdGUgZG9jdW1lbnRhdGlvbiBhYm91dCBJbnRlcmZhY2luZyB3aXRoIEMrKwoJQWRkIGRvY3VtZW50YXRpb24gZm9yIG5ldyBnbmF0bWFrZSBzd2l0Y2ggLXAKCUFkZCBtaXNzaW5nIHByb3RvY29sIHBhcnQgaW4gVVJMcy4KCURvY3VtZW50IC1nbmF0eUEKCURvY3VtZW50IHByYWdtYSBDb21waWxlX1RpbWVfRXJyb3IKCUFkZCBkb2N1bWVudGF0aW9uIGZvciBPYmplY3RfU2l6ZSBpbmRpY2F0aW5nIHRoYXQgc3RhbmQgYWxvbmUKCW9iamVjdHMgY2FuIGhhdmUgYSBsYXJnZXIgc2l6ZSBpbiBzb21lIGNhc2VzLgoJQWRkIG5vZGUgZm9yIEdOQVQuQnl0ZV9Td2FwcGluZywgR05BVC5TSEExCglVcGRhdGUgcmVmZXJlbmNlIHRvIHRoZSBSYXZlbnNjYXIgcHJvZmlsZS4KCURvY3VtZW50IHByYWdtYSBVbnJlZmVyZW5jZWRfT2JqZWN0cwoKCSogZ25hdC1zdHlsZS50ZXhpOiBGaXggdHlwbwoKMjAwNy0wNC0wNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtbGliLmFkYiAoQnVpbGRpbmdfTGlicmFyeSk6IE9ubHkgb3V0cHV0ICJidWlsZGluZyBhIGxpYnJhcnkuLi4iIGluCgl2ZXJib3NlIG1vZGUKCgkqIG1saWItcHJqLmFkYiAoQnVpbGRfTGlicmFyeSk6IE9ubHkgb3V0cHV0IGxpc3RzIG9mIG9iamVjdCBhbmQgQUxJCglmaWxlcyBpbiB2ZXJib3NlIG1vZGUuCgoJKiBtbGliLXV0bC5hZGIgKEFyKTogT25seSBvdXRwdXQgdGhlIGZpcnN0IG9iamVjdCBmaWxlcyB3aGVuIG5vdCBpbgoJdmVyYm9zZSBtb2RlLgoJKEdjYyk6IERvIG5vdCBkaXNwbGF5IGFsbCB0aGUgb2JqZWN0IGZpbGVzIGlmIG5vdCBpbiB2ZXJib3NlIG1vZGUsIG9ubHkKCXRoZSBmaXJzdCBvbmUuCgoyMDA3LTA0LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIG5hbWV0LmFkcywgbmFtZXQuYWRiICh3bik6IEltcHJvdmUgdGhpcyBkZWJ1Z2dpbmcgcm91dGluZS4gQ2FsbGluZwoJaXQgbm8gbG9uZ2VyIGRlc3Ryb3lzIHRoZSBjb250ZW50cyBvZiBOYW1lX0J1ZmZlciBvciBOYW1lX0xlbiBhbmQKCW5vbi1zdGFuZGFyZCBhbmQgaW52YWxpZCBuYW1lcyBhcmUgaGFuZGxlZCBiZXR0ZXIuCgkoR2V0X0RlY29kZWRfTmFtZV9TdHJpbmcpOiBJbXByb3ZlIHBlcmZvcm1hbmNlIGJ5IHVzaW5nCglOYW1lX0hhc19Ob19FbmNvZGluZ3MgZmxhZyBpbiB0aGUgbmFtZSB0YWJsZS4KCShJc19WYWxpZF9OYW1lKTogTmV3IGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGEgTmFtZV9JZCBpcyB2YWxpZC4KCVVzZWQgZm9yIGRlYnVnZ2luZyBwcmludG91dHMuCgoyMDA3LTA0LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoMy5hZGI6IChQX1R5cGVfRGVjbGFyYXRpb24pOiBTZXQgVHlwZV9Ub2tlbl9Mb2NhdGlvbgoJKFBfSW50ZXJmYWNlX1R5cGVfRGVmaW5pdGlvbik6IFJlbW92ZSB0aGUgZm9ybWFsIElzX1N5bmNocm9uaXplZCBiZWNhdXNlCgl0aGVyZSBpcyBubyBuZWVkIHRvIGdlbmVyYXRlIGFsd2F5cyBhIHJlY29yZF9kZWZpbml0aW9uX25vZGUgaW4gY2FzZQoJb2Ygc3luY2hyb25pemVkIGludGVyZmFjZSB0eXBlcy4KCShQX1R5cGVfRGVjbGFyYXRpb24pOiBVcGRhdGUgY2FsbHMgdG8gUF9JbnRlcmZhY2VfVHlwZV9EZWZpbml0aW9uLgoJKFBfTnVsbF9FeGNsdXNpb24pOiBGb3IgQUktNDQ3OiBSZW1vdmUgd2FybmluZ3MgYWJvdXQgIm5vdCBudWxsIiBiZWluZwoJaWxsZWdhbCBpbiBBZGEgOTUsIGluIGNhc2VzIHdoZXJlIGl0IGlzIGxlZ2FsLiBDaGFuZ2UgdGhlIHdhcm5pbmdzIHRvCgllcnJvcnMgaW4gb3RoZXIgY2FzZXMuIERvbid0IGdpdmUgdGhlIGVycm9yIHVubGVzcyB0aGUgIm5vdCBudWxsIgoJcGFyc2VzIHByb3Blcmx5LiBDb3JyZWN0IHRoZSBzb3VyY2UgcG9zaXRpb24gYXQgd2hpY2ggdGhlIGVycm9yIG9jY3Vycy4KCShQX0tub3duX0Rpc2NyaW1pbmFudF9QYXJ0X09wdCk6IFBhc3MgQWxsb3dfQW5vbnltb3VzX0luXzk1ID0+IFRydWUgdG8KCVBfTnVsbF9FeGNsdXNpb24sIHRvIHN1cHByZXNzICJub3QgbnVsbCIgd2FybmluZ3MuCgkoUF9JZGVudGlmaWVyX0RlY2xhcmF0aW9ucyk6IENvZGUgY2xlYW51cC4gUmVtb3ZlZCB1bnJlcXVpcmVkIGxhYmVsIGFuZAoJYXNzb2NpYXRlZCBnb3RvIHN0YXRlbWVudHMuCgoJKiBwYXItZW5kaC5hZGIgKFBvcF9FbmRfQ29udGV4dCk6IEFsbG93IG1vcmUgZmxleGliaWxpdHkgaW4gcGxhY2VtZW50CglvZiBFTkQgUkVDT1JECgoJKiBzY2Fucy5hZHMgKFR5cGVfVG9rZW5fTG9jYXRpb24pOiBOZXcgZmxhZwoKCSogcGFyLWNoNi5hZGIgKFBfTW9kZSk6IENoZWNrIHNwZWNpZmljYWxseSBmb3IgY2FzZSBvZiBJTiBBQ0NFU1MKCShQX0Zvcm1hbF9QYXJ0KTogUGFzcyBBbGxvd19Bbm9ueW1vdXNfSW5fOTUgPT4gVHJ1ZSB0bwoJUF9OdWxsX0V4Y2x1c2lvbiwgdG8gc3VwcHJlc3MgIm5vdCBudWxsIiB3YXJuaW5ncy4KCjIwMDctMDQtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwYXItcHJhZy5hZGIgKFByYWcpOiBBZGQgZHVtbXkgZW50cnkgZm9yIHByYWdtYSBDb21waWxlX1RpbWVfRXJyb3IKCShFeHRlbnNpb25zX0FsbG93ZWQpOiBObyBsb25nZXIgc2V0cyBBZGFfVmVyc2lvbgoJRW50cnkgZm9yIHByYWdtYSBVbnJlZmVyZW5jZWRfT2JqZWN0cwoKCSogc2VtX3ByYWcuYWRiIChBbmFseXplX1ByYWdtYSwgY2FzZSBQcmlvcml0eSk6IEZvcmNlIHdpdGggb2YKCXN5c3RlbS50YXNraW5nIGlmIHByYWdtYSBwcmlvcml0eSB1c2VkIGluIGEgcHJvY2VkdXJlCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgV2FybmluZyk6IEhhbmRsZSBkb3Qgd2FybmluZyBzd2l0Y2hlcwoJKFByb2Nlc3NfQ29tcGlsZV9UaW1lX1dhcm5pbmdfT3JfRXJyb3IpOiBOZXcgcHJvY2VkdXJlCgkoQW5hbHl6ZV9QcmFnbWEpOiBBZGQgcHJvY2Vzc2luZyBmb3IgQ29tcGlsZV9UaW1lX0Vycm9yCglBZGQgc3VwcG9ydCBmb3IgZXh0cmEgYXJndW1lbnRzIEV4dGVybmFsX05hbWUgYW5kIExpbmtfTmFtZS4KCVJlbW92ZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCBwcmFnbWFzIENQUF9WaXJ0dWFsIGFuZCBDUFBfVnRhYmxlLgoJKFByb2Nlc3NfSW1wb3J0X09yX0ludGVyZmFjZSk6IEFkZCBzdXBwb3J0IGZvciB0aGUgdXNlIG9mIHByYWdtYSBJbXBvcnQKCXdpdGggdGFnZ2VkIHR5cGVzLgoJKEV4dGVuc2lvbnNfQWxsb3dlZCk6IE5vIGxvbmdlciBhZmZlY3RzIEFkYV9WZXJzaW9uCgkoQW5hbHl6ZV9QcmFnbWEpOiBTcGxpdCBJc19BYnN0cmFjdCBmbGFnIGludG8gSXNfQWJzdHJhY3RfU3VicHJvZ3JhbSBhbmQKCUlzX0Fic3RyYWN0X1R5cGUuIE1ha2Ugc3VyZSB0aGVzZSBhcmUgY2FsbGVkIG9ubHkgd2hlbiBhcHByb3ByaWF0ZS4KCUFkZCBwcm9jZXNzaW5nIGZvciBwcmFnbWEgVW5yZWZlcmVuY2VkX09iamVjdHMKCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgZW50cnkgZm9yIHByYWdtYQoJQ29tcGlsZV9UaW1lX0Vycm9yCglBZGQgbmV3IHN0YW5kYXJkIG5hbWUgTWluaW11bV9CaW5kZXJfT3B0aW9ucyBmb3IgbmV3IGdwcm1ha2UKCUFkZCBuZXcgc3RhbmRhcmQgbmFtZXMgZm9yIGdwcm1ha2U6IEFyY2hpdmVfU3VmZml4LAoJTGlicmFyeV9BdXRvX0luaXRfU3VwcG9ydGVkLCBMaWJyYXJ5X01ham9yX01pbm9yX0lkX1N1cHBvcnRlZCwKCUxpYnJhcnlfU3VwcG9ydCwgTGlicmFyeV9WZXJzaW9uX09wdGlvbnMsCglTaGFyZWRfTGlicmFyeV9NaW5pbXVtX09wdGlvbnMsCglTaGFyZWRfTGlicmFyeV9QcmVmaXgsIFNoYXJlZF9MaWJyYXJ5X1N1ZmZpeCwgU3ltYm9saWNfTGlua19TdXBwb3J0ZWQuCglDaGFuZ2UgTmFtZV9DYWxsIHRvIE5hbWVfdUNhbGwgc28gdGhhdCBpdCBjYW5ub3QgY2xhc2ggd2l0aCBhIGxlZ2FsCglzdWJwcm9ncmFtIG5hbWUuCglBZGQgbmV3IHN0YW5kYXJkIG5hbWVzIE1hcHBpbmdfU3BlY19TdWZmaXggYW5kIE1hcHBpbmdfQm9keV9TdWZmaXgKCUFwcGVuZCBDX1BsdXNfUGx1cyB0byBjb252ZW50aW9uIGlkZW50aWZpZXJzIGFzIHN5bm9ueW0gZm9yIENQUAoJQWRkIG5ldyBzdGFuZGFyZCBuYW1lcyBTdGFjayBhbmQgQnVpbGRlcl9Td2l0Y2hlcwoJQWRkIG5ldyBzdGFuZGFyZCBuYW1lczogQ29tcGlsZXJfTWluaW11bV9PcHRpb25zLCBHbG9iYWxfQ29uZmlnX0ZpbGUsCglMaWJyYXJ5X0J1aWxkZXIsIExvY2FsX0NvbmZpZ19GaWxlLCBPYmplY3RzX1BhdGgsIE9iamVjdHNfUGF0aF9GaWxlLAoJUnVuX1BhdGhfT3B0aW9uLCBUb29sY2hhaW5fVmVyc2lvbi4KCUVudHJ5IGZvciBwcmFnbWEgVW5yZWZlcmVuY2VkX09iamVjdHMKCgkqIHN3aXRjaC1jLmFkYiAoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMpOiBTdG9yZSBjb3JyZWN0IC1nbmF0ZUQKCXN3aXRjaGVzLCB3aXRob3V0IHJlcGV0aXRpb24gb2YgImVEIi4gTWFrZSBzdXJlIHRoYXQgbGFzdCBjaGFyYWN0ZXIgb2YKCS1nbmF0ZXA9IHN3aXRjaCBpcyBub3QgdGFrZW4gYXMgLWduYXQgc3dpdGNoIGNoYXJhY3Rlci4KCUNvbXBsZXRlIHJld3JpdGUgb2YgY2lyY3VpdCBmb3IgaGFuZGxpbmcgc2F2aW5nIGNvbXBpbGF0aW9uIG9wdGlvbnMKCU9jY2FzaW9uZWQgYnkgbmVlZCB0byBzdXBwb3J0IGRvdCBzd2l0Y2hzIGZvciAtZ25hdHcsIGJ1dCBjbGVhbnMgdXAKCXRoaW5ncyBpbiBnZW5lcmFsLgoJLWduYXRYIGRvZXMgbm90IGFmZmVjdCBBZGFfVmVyc2lvbgoJSW5jbHVkZSAtZ25hdHlBIGluIC1nbmF0ZyBzdHlsZSBzd2l0Y2hlcwoKCSogc2VtX3dhcm4uYWRzLCBzZW1fd2Fybi5hZGIgKE91dHB1dF9VbnJlZmVyZW5jZWRfTWVzc2FnZXMpOiBFeGNsdWRlCgl3YXJuaW5ncyBvbiByZXR1cm4gb2JqZWN0cy4KCShXYXJuX09uX1VzZWxlc3NfQXNzaWdubWVudCk6IEV4Y2x1ZGUgd2FybmluZ3Mgb24gcmV0dXJuIG9iamVjdHMKCShTZXRfRG90X1dhcm5pbmdfU3dpdGNoKTogTmV3IHByb2NlZHVyZQoJKENoZWNrX1JlZmVyZW5jZXMpOiBBZGQgbWlzc2luZyBjYXNlIG9mIHRlc3QgZm9yCglIYXNfUHJhZ21hX1VucmVmZXJlbmNlZF9PYmplY3RzCgkoT3V0cHV0X1VucmVmZXJlbmNlZF9NZXNzYWdlcyk6IEltcGxlbWVudCBlZmZlY3Qgb2YgbmV3IHByYWdtYQoJVW5yZWZlcmVuY2VkX09iamVjdHMsIHJlbW92ZSBzcGVjaWFsIGNhc2luZyBvZiBsaW1pdGVkIGNvbnRyb2xsZWQKCXZhcmlhYmxlcy4KCjIwMDctMDQtMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLWV4dC5hZGIgKEluaXRpYWxpemVfUHJvamVjdF9QYXRoKTogTmV3IHByb2NlZHVyZSB0aGF0IGluaXRpYWxpemUKCXRoZSBkZWZhdWx0IHByb2plY3QgcGF0aCwgaW5pdGlhbGx5IGRvbmUgZHVyaW5nIGVsYWJvcmF0aW9uIG9mIHRoZQoJcGFja2FnZS4KCUlmIHRoZSBwcmVmaXggcmV0dXJuZWQgYnkgU2RlZmF1bHQgaXMgbnVsbCwgZ2V0IHRoZSBwcmVmaXggZnJvbSBhIGNhbGwKCXRvIEV4ZWN1dGFibGVfUHJlZml4X1BhdGguCgkoUHJvamVjdF9QYXRoKTogQ2FsbCBJbml0aWFsaXplX1Byb2plY3RfUGF0aCBpZiBDdXJyZW50X1Byb2plY3RfUGF0aCBpcwoJbnVsbC4KCgkqIHByai1ubXNjLmFkYiAoR2V0X1BhdGhfTmFtZXNfQW5kX1JlY29yZF9Tb3VyY2VzKTogVXNlIHRoZSBub24KCWNhbm9uaWNhbCBkaXJlY3RvcnkgbmFtZSB0byBvcGVuIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBmaWxlcyBhcmUKCXJldHJpZXZlZC4KCShSZWNvcmRfT3RoZXJfU291cmNlcyk6IElkZW0uCgkoTG9jYXRlX0RpcmVjdG9yeSk6IEFkZCB0aGUgcG9zc2liaWxpdHkgdG8gY3JlYXRlIGF1dG9tYXRpY2FsbHkgbWlzc2luZwoJZGlyZWN0b3JpZXMgd2hlbiBTZXR1cF9Qcm9qZWN0cyBpcyBUcnVlLgoJQ2FsbCBMb2NhdGVfRGlyZWN0b3J5IHNvIHRoYXQgdGhlIGRpcmVjdG9yeSB3aWxsIGJlIGNyZWF0ZWQgd2hlbgoJU2V0dXBfUHJvamVjdHMgaXMgVHJ1ZSwgZm9yIG9iamVjdCBkaXIsIGxpYnJhcnkgZGlyLCBsaWJyYXJ5IEFMSSBkaXIsCglsaWJyYXJ5IHNvdXJjZSBjb3B5IGRpciBhbmQgZXhlYyBkaXIuCgoJKiBwcmotcHAuYWRiIChNYXhfTGluZV9MZW5ndGgpOiBTZXQgdG8gMjU1IGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIKCXZlcnNpb25zIG9mIEdOQVQuCgoyMDA3LTA0LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEzLmFkcywgc2VtX2NoMTMuYWRiIChBZGp1c3RfUmVjb3JkX0Zvcl9SZXZlcnNlX0JpdF9PcmRlcik6CglVc2UgRmlyc3QvTmV4dF9Db21wb25lbnRfT3JfRGlzY3JpbWluYW50CgkoQW5hbHl6ZV9SZWNvcmRfUmVwcmVzZW50YXRpb25fQ2xhdXNlKToKCVVzZSBGaXJzdC9OZXh0X0NvbXBvbmVudF9Pcl9EaXNjcmltaW5hbnQKCShDaGVja19Db21wb25lbnRfT3ZlcmxhcCk6IFVzZSBGaXJzdC9OZXh0X0NvbXBvbmVudF9Pcl9EaXNjcmltaW5hbnQKCShBbmFseXplX0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZSwgY2FzZSBWYWx1ZV9TaXplKTogUmVqZWN0CglkZWZpbml0aW9uIGlmIHR5cGUgaXMgdW5jb25zdHJhaW5lZC4KCShBZGp1c3RfUmVjb3JkX0Zvcl9SZXZlcnNlX0JpdF9PcmRlcik6IE5ldyBwcm9jZWR1cmUKCShBbmFseXplX0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZSk6IFNwbGl0IElzX0Fic3RyYWN0IGZsYWcgaW50bwoJSXNfQWJzdHJhY3RfU3VicHJvZ3JhbSBhbmQgSXNfQWJzdHJhY3RfVHlwZS4KCShBZGp1c3RfUmVjb3JkX0Zvcl9SZXZlcnNlX0JpdF9PcmRlcik6IE5ldyBwcm9jZWR1cmUKCgkqIHJlcGluZm8uYWRiIChMaXN0X1JlY29yZF9JbmZvKTogVXNlIEZpcnN0LwoJTmV4dF9Db21wb25lbnRfT3JfRGlzY3JpbWluYW50LgoKCSogc3R5bGUuYWRzLCBzdHlsZWctYy5hZGIsIHN0eWxlZy1jLmFkcyAoQ2hlY2tfQXJyYXlfQXR0cmlidXRlX0luZGV4KToKCU5ldyBwcm9jZWR1cmUuCgoJKiBzdHlsZXN3LmFkcywgc3R5bGVzdy5hZGI6IFJlY29nbml6ZSBuZXcgLWduYXR5QSBzdHlsZSBzd2l0Y2gKCUluY2x1ZGUgLWduYXR5QSBpbiBkZWZhdWx0IHN3aXRjaGVzCgoJKiBvcHQuYWRzOiAoV2Fybl9Pbl9Ob25fTG9jYWxfRXhjZXB0aW9uKTogTmV3IGZsYWcKCShXYXJuX09uX1JldmVyc2VfQml0X09yZGVyKTogTmV3IGZsYWcKCShFeHRlbnNpb25zX0FsbG93ZWQpOiBVcGRhdGUgdGhlIGRvY3VtZW50YXRpb24uCgkoV2Fybl9Pbl9RdWVzdGlvbmFibGVfTWlzc2luZ19QYXJlbnMpOiBOb3cgb24gYnkgZGVmYXVsdAoKCSogdXNhZ2UuYWRiOiBBZGQgZG9jdW1lbnRhdGlvbiBvZiAtZ25hdHcueC9YIHN3aXRjaGVzCglEb2N1bWVudCBuZXcgLWduYXR5QSBzdHlsZSBzd2l0Y2gKCS1nbmF0cSB3YXJuaW5ncyBhcmUgb24gYnkgZGVmYXVsdAoKMjAwNy0wNC0wNiAgRWQgRmFsaXMgIDxmYWxpc0BhZGFjb3JlLmNvbT4KCgkqIHMtY2FydW44LmFkYiwgcy1jYXJzaTguYWRiIChDb21wYXJlX0FycmF5Xz84KTogbW9kaWZ5IHNvIHRoYXQgbGFzdAoJZnVsbCB3b3JkIGlzIG5vIGxvbmdlciBjb21wYXJlZCB0d2ljZS4KCjIwMDctMDQtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoSW5zdGFsbF9MaW1pdGVkX0NvbnRleHRfQ2xhdXNlcy4KCUV4cGFuZF9MaW1pdGVkX1dpdGhfQ2xhdXNlKTogVXNlIGEgbmV3IGNvcHkgb2Ygc2VsZWN0b3IgbmFtZSBpbiB0aGUKCWNhbGwgdG8gTWFrZV9XaXRoX0NsYXVzZS4gVGhpcyBmaXhlcyB0aGUgdHJlZSBzdHJ1Y3R1cmUgZm9yIEFTSVMKCXB1cnBvc2VzLiBOb3RoaW5nIGlzIGNoYW5nZWQgaW4gdGhlIGNvbXBpbGVyIGJlaGF2aW91ci4KCShQcm9jZXNzX0JvZHlfQ2xhdXNlcyk6IEhhbmRsZSBwcm9wZXJseSB1c2UgY2xhdXNlcyB3aG9zZSBwcmVmaXggaXMKCWEgcGFja2FnZSByZW5hbWluZy4KCShJbnN0YWxsX0xpbWl0ZWRfV2l0aF9DbGF1c2VzKTogRG8gbm90IGluc3RhbGwgbm9uLWxpbWl0ZWQgdmlldyB3aGVuIGl0CglpcyBzdGlsbCBpbmNvbXBsZXRlLgoKMjAwNy0wNC0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoQ2hlY2tfR2VuZXJpY19BY3R1YWxzKTogVXNlIGZpcnN0IHN1YnR5cGUgb2YgYWN0dWFsCgl3aGVuIGNhcHR1cmluZyBzaXplIGluZm9ybWF0aW9uLCBpbnN0ZWFkIG9mIGJhc2UgdHlwZSwgd2hpY2ggZm9yIGEKCWZvcm1hbCBhcnJheSB0eXBlIHdpbGwgYmUgdGhlIHVuY29uc3RyYWluZWQgdHlwZS4KCShBbmFseXplX0Zvcm1hbF9PYmplY3RfRGVjbGFyYXRpb24pOiBBZGQgY2hlY2sgZm9yIGlsbGVnYWwgZGVmYXVsdAoJZXhwcmVzc2lvbnMgZm9yIGEgZm9ybWFsIGluIG9iamVjdCBvZiBhIGxpbWl0ZWQgdHlwZS4KCShJbnN0YW50aWF0ZV9PYmplY3QpOiBEaXR0by4KCShDaGVja19Gb3JtYWxfUGFja2FnZV9JbnN0YW5jZSk6IFNraXAgZW50aXRpZXMgdGhhdCBhcmUgZm9ybWFsIG9iamVjdHMsCgliZWNhdXNlIHRoZXkgd2VyZSBkZWZhdWx0ZWQgaW4gdGhlIGZvcm1hbCBwYWNrYWdlIGFuZCBubyBjaGVjayBhcHBsaWVzCgl0byB0aGVtLgoJKENoZWNrX0Zvcm1hbF9QYWNrYWdlX0luc3RhbmNlKTogRXh0ZW5kIGNvbmZvcm1hbmNlIGNoZWNrIHRvIG90aGVyCglkaXNjcmV0ZSB0eXBlcyBiZXlvbmQgSW50ZWdlci4KCShQcm9jZXNzX0RlZmF1bHQpOiBDb3B5IGRpcmVjdGx5IHRoZSB1bm1hdGNoZWQgZm9ybWFsLiBBIGdlbmVyaWMgY29weQoJaGFzIGFscmVhZHkgYmVlbiBwZXJmb3JtZWQgaW4gQW5hbHl6ZV9Gb3JtYWxfUGFja2FnZS4KCShBbmFseXplX0Fzc29jaWF0aW9ucyk6IElmIGEgZm9ybWFsIHN1YnByb2dyYW0gaGFzIG5vIG1hdGNoLCBjaGVjayBmb3IKCXBhcnRpYWwgcGFyYW1ldHJpemF0aW9uIGJlZm9yZSBsb29raW5nIGZvciBhIGRlZmF1bHQsIHRvIHByZXZlbnQKCXNwdXJpb3VzIGVycm9ycy4KCShBbmFseXplX1BhY2thZ2VfSW5zdGFudGlhdGlvbiwgQW5hbHl6ZV9TdWJwcm9ncmFtX0luc3RhbnRpYXRpb24pOiBEbwoJbm90IHNldCB0aGUgaW5zdGFudGlhdGlvbiBlbnZpcm9ubWVudCBiZWZvcmUgYW5hbHl6aW5nIHRoZSBhY3R1YWxzLgoJRml4ZXMgcmVncmVzc2lvbiBvbiA4NTE1LTAwMyB3aXRoIGltcGxlbWVudGF0aW9uIG9mIEFJLTEzMy4KCVNldF9JbnN0YW5jZV9FbnYgY2hlY2tzIHdoZXRoZXIgdGhlIGdlbmVyaWMgdW5pdCBpcyBhIHByZWRlZmluZWQKCXVuaXQsIGluIHdoaWNoIGNhc2UgdGhlIGluc3RhbmNlIG11c3QgYmUgYW5hbHl6ZWQgd2l0aCB0aGUgbGF0ZXN0IEFkYQoJbW9kZS4gVGhpcyBzZXR0aW5nIG11c3QgdGFrZSBwbGFjZSBhZnRlciBhbmFseXNpcyBvZiB0aGUgYWN0dWFscywKCWJlY2F1c2UgdGhlIGFjdHVhbHMgbXVzdCBiZSBhbmFseXplZCBhbmQgZnJvemVuIGluIHRoZSBBZGEgbW9kZSBleHRhbnQKCW91dHNpZGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFudGlhdGlvbi4KCShTYXZlX0VudiwgUmVzdG9yZV9FbnYpOiBQcmVzZXJ2ZSBhbmQgcmVzdG9yZSB0aGUgY29uZmlndXJhdGlvbgoJcGFyYW1ldGVycyBzbyB0aGF0IHByZWRlZmluZWQgdW5pdHMgY2FuIGJlIGNvbXBpbGVkIGluIHRoZSBwcm9wZXIgQWRhCgltb2RlLgoJKEFuYWx5emVfRm9ybWFsX09iamVjdF9EZWNsYXJhdGlvbixBbmFseXplX0Zvcm1hbF9TdWJwcm9ncmFtLAoJSW5zdGFudGlhdGVfVHlwZSk6IFNwbGl0IElzX0Fic3RyYWN0IGZsYWcgaW50byBJc19BYnN0cmFjdF9TdWJwcm9ncmFtCglhbmQgSXNfQWJzdHJhY3RfVHlwZS4KCShBbmFseXplX0Zvcm1hbF9QYWNrYWdlKTogRm9yIGJldHRlciBlcnJvciByZWNvdmVyeSwgQWRkIGV4Y2VwdGlvbgoJaGFuZGxlciB0byBjYXRjaCBJbnN0YW50aW9uX0Vycm9yLCB3aGljaCBjYW4gYmUgcmFpc2VkIGluCglBbmFseXplX0Fzc29jaWF0aW9ucwoKMjAwNy0wNC0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoVHJ5X1ByaW1pdGl2ZV9PcGVyYXRpb24pOiBUaGUgY2FsbCBpcyBsZWdhbCBpZiB0aGUKCXByZWZpeCB0eXBlIGlzIGEgZGlzY3JpbWluYXRlZCBzdWJ0eXBlIG9mIHRoZSB0eXBlIG9mIHRoZSBmb3JtYWwuCgkoQW5hbHl6ZV9BbGxvY2F0b3IpOiBDb2xsZWN0IGFsbCBjb2V4dGVuc2lvbnMgcmVnYXJkbGVzcyBvZiB0aGUgY29udGV4dC4KCVdoZXRoZXIgdGhleSBjYW4gYmUgYWxsb2NhdGVkIHN0YXRpY2FsbHkgaXMgZGV0ZXJtaW5lZCBpbiBleHBfY2g0LgoJKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogSWYgdGhlIHByZWZpeCBpcyBhIGxpbWl0ZWQgdmlldyBhbmQgdGhlCglub24tbGltaXRlZCB2aWV3IGlzIGF2YWlsYWJsZSwgdXNlIHRoZSBub24tbGltaXRlZCBvbmUuCgkoT3BlcmF0b3JfQ2hlY2spOiBGb3IgIlgnQWNjZXNzID0gWSdBY2Nlc3MiICh3aGljaCBpcyBhbWJpZ3VvdXMsIGFuZAoJdGhlcmVmb3JlIGlsbGVnYWwpLCBzdWdnZXN0IGEgcXVhbGlmaWVkIGV4cHJlc3Npb24gcmF0aGVyIHRoYW4gYSB0eXBlCgljb252ZXJzaW9uLCBiZWNhdXNlIGEgdHlwZSBjb252ZXJzaW9uIHdvdWxkIGJlIGlsbGVnYWwgaW4gdGhpcyBjb250ZXh0LgoJKEFuYXl6ZV9BbGxvY2F0b3IpOiBUcmFjZSByZWN1cnNpdmVseSBhbGwgbmVzdGVkIGFsbG9jYXRvcnMgc28gdGhhdCBhbGwKCWNvZXh0ZW5zaW9ucyBhcmUgb24gdGhlIGNvcnJlc3BvbmRpbmcgbGlzdCBmb3IgdGhlIHJvb3QuIERvIG5vIG1hcmsKCWNvZXh0ZW5zaW9ucyBpZiB0aGUgcm9vdCBhbGxvY2F0b3IgaXMgd2l0aGluIGEgZGVjbGFyYXRpb24gZm9yIGEgc3RhY2stCglhbGxvY2F0ZWQgb2JqZWN0LCBiZWNhdXNlIHRoZSBhY2Nlc3MgZGlzY3JpbWluYW50cyB3aWxsIGJlIGFsbG9jYXRlZCBvbgoJdGhlIHN0YWNrIGFzIHdlbGwuCgkoQW5hbHl6ZV9DYWxsKTogUmVtb3ZlIHJlc3RyaWN0aW9uIG9uIGNhbGxzIHRvIGxpbWl0ZWQgZnVuY3Rpb25zIGZvciB0aGUKCWNhc2VzIG9mIGdlbmVyaWMgYWN0dWFscyBmb3IgZm9ybWFsIG9iamVjdHMsIGRlZmF1bHRzIGZvciBmb3JtYWwgb2JqZWN0cwoJYW5kIGRlZmF1bHRzIGZvciByZWNvcmQgY29tcG9uZW50cy4KCShBbmFseXplX0FsbG9jYXRvcik6IEJlZm9yZSBhbmFseXNpcywgY2hhaW4gY29leHRlbnNpb25zIG9uIHRoZSBwcm9wZXIKCWVsZW1lbnQgbGlzdC4gVGhlaXIgZXhwYW5zaW9uIGlzIGRlbGF5ZWQgdW50aWwgdGhlIGVuY2xvc2luZyBhbGxvY2F0b3IKCWlzIHByb2Nlc3NlZCBhbmQgaXRzIGZpbmFsaXphdGlvbiBsaXN0IGNvbnN0cnVjdGVkLgoJKFRyeV9QcmltaXRpdmVfT3BlcmF0aW9uKTogSWYgdGhlIHByZWZpeCBpcyBhIGNvbmN1cnJlbnQgdHlwZSwgbG9va3MKCWZvciBhbiBvcGVyYXRpb24gd2l0aCB0aGUgZ2l2ZW4gbmFtZSBhbW9uZyB0aGUgcHJpbWl0aXZlIG9wZXJhdGlvbnMgb2YKCXRoZSBjb3JyZXNwb25kaW5nIHJlY29yZCB0eXBlLgoJKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogSWYgdGhlIHByZWZpeCBpcyBhIHRhc2sgdHlwZSB0aGF0CglpbXBsZW1lbnRzIGFuIGludGVyZmFjZSwgYW5kIHRoZXJlIGlzIG5vIGVudHJ5IHdpdGggdGhlIGdpdmVuIG5hbWUsCgljaGVjayB3aGV0aGVyIHRoZXJlIGlzIGFub3RoZXIgcHJpbWl0aXZlIG9wZXJhdGlvbiAoZS5nLiBhIGZ1bmN0aW9uKQoJd2l0aCB0aGF0IG5hbWUuCgkoVHJ5X09iamVjdF9PcGVyYXRpb24sIEFuYWx5emVfT25lX0NhbGwsIFRyeV9JbmRleGVkX0NhbGwpOiBIYW5kbGUKCXByb3Blcmx5IHRoZSBpbmRleGluZyBvZiBhIGZ1bmN0aW9uIGNhbGwgd3JpdHRlbiBpbiBwcmVmaXggZm9ybSwgd2hlcmUKCXRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGFycmF5IHR5cGUsIGFuZCBhbGwgcGFyYW1ldGVycyBvZiB0aGUgZnVuY3Rpb24KCWV4Y2VwdCB0aGUgZmlyc3QgaGF2ZSBkZWZhdWx0cy4KCShBbmFseXplX0VxdWFsaXR5X09wKTogSWYgdGhpcyBpcyBhIGNhbGwgdG8gYW4gaW1wbGljaXQgaW5lcXVhbGl0eSwga2VlcAoJdGhlIG9yaWdpbmFsIG9wZXJhbmRzLCByYXRoZXIgdGhhbiByZWxvY2F0aW5nIHRoZW0sIGZvciBlZmZpY2llbmN5IGFuZAoJdG8gd29yayBwcm9wZXJseSB3aGVuIGFuIG9wZXJhbmQgaXMgb3ZlcmxvYWRlZC4KCShBbmFseXplX0FsbG9jYXRvcixPcGVyYXRvcl9DaGVjayxSZW1vdmVfQWJzdHJhY3RfT3BlcmF0aW9ucyk6IFNwbGl0CglJc19BYnN0cmFjdCBmbGFnIGludG8gSXNfQWJzdHJhY3RfU3VicHJvZ3JhbSBhbmQgSXNfQWJzdHJhY3RfVHlwZS4KCShBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IElmIHRoZSBwcmVmaXggaXMgYSBwcml2YXRlIGV4dGVuc2lvbiwgb25seQoJc2NhbiB0aGUgdmlzaWJsZSBjb21wb25lbnRzLCBub3QgdGhvc2Ugb2YgdGhlIGZ1bGwgdmlldy4KCShUcnlfUHJpbWl0aXZlX09wZXJhdGlvbik6IElmIHRoZSBvcGVyYXRpb24gaXMgYSBwcm9jZWR1cmUsIGNvbGxlY3QgYWxsCglwb3NzaWJsZSBpbnRlcnByZXRhdGlvbnMsIGFzIGZvciBhIGZ1bmN0aW9uLCBiZWNhdXNlIGluIHRoZSBwcmVzZW5jZSBvZgoJY2xhc3N3aWRlIHBhcmFtZXRlcnMgc2V2ZXJhbCBwcmltaXRpdmUgb3BlcmF0aW9ucyBvZiB0aGUgdHlwZSBjYW4gbWF0Y2gKCXRoZSBnaXZlbiBhcmd1bWVudHMuCgoyMDA3LTA0LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g1LmFkYiAoQW5hbHl6ZV9Bc3NpZ25tZW50KTogUmVqZWN0IGEgcmlnaHQtaGFuZCBzaWRlIHRoYXQgaXMgYQoJdGFnLWluZGV0ZXJtaW5hdGUgY2FsbCB0byBhbiBhYnN0cmFjdCBmdW5jdGlvbiwgd2hlbiB0aGUgbGVmdC1oYW5kIHNpZGUKCWlzIG5vdCBjbGFzc3dpZGUuCgkoQW5hbHl6ZV9Mb29wX1N0YXRlbWVudCk6IEltcHJvdmUgZGV0ZWN0aW9uIG9mIGluZmluaXRlIGxvb3BzCgoyMDA3LTA0LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDcuYWRzLCBzZW1fY2g3LmFkYiAoSW5zcGVjdF9EZWZlcnJlZF9Db25zdGFudF9Db21wbGV0aW9uKTogTW92ZQoJb3V0IG9mIEFuYWx5emVfUGFja2FnZV9EZWNsYXJhdGlvbiwgYmVjYXVzZSBwcm9jZXNzaW5nIG11c3QgYmUgYXBwbGllZAoJdG8gcGFja2FnZSBib2RpZXMgYXMgd2VsbCwgZm9yIGRlZmVycmVkIGNvbnN0YW50cyBjb21wbGV0ZWQgYnkgcHJhZ21hcy4KCShBbmFseXplX1BhY2thZ2VfRGVjbGFyYXRpb24pOiBXaGVuIHRoZSBwYWNrYWdlIGRlY2xhcmF0aW9uIGJlaW5nCglhbmFseXplZCBkb2VzIG5vdCByZXF1aXJlIGFuIGV4cGxpY2l0IGJvZHksIGNhbGwgQ2hlY2tfQ29tcGxldGlvbi4KCShNYXlfTmVlZF9JbXBsaWNpdF9Cb2R5KTogQW4gaW1wbGljaXQgYm9keSBpcyByZXF1aXJlZCB3aGVuIGEgcGFja2FnZQoJc3BlYyBjb250YWlucyB0aGUgZGVjbGFyYXRpb24gb2YgYSByZW1vdGUgYWNjZXNzLXRvLWNsYXNzd2lkZSB0eXBlLgoJKEFuYWx5emVfUGFja2FnZV9Cb2R5KTogSWYgdGhlIHBhY2thZ2UgY29udGFpbnMgUkFDV3MsIGFwcGVuZCB0aGUKCXBlbmRpbmcgc3VicHJvZ3JhbSBib2RpZXMgZ2VuZXJhdGVkIGJ5IGV4cF9kaXN0IGF0IHRoZSBlbmQgb2YgdGhlIGJvZHkuCgkoTmV3X1ByaXZhdGVfVHlwZSxVbml0X1JlcXVpcmVzX0JvZHkpOiBTcGxpdCBJc19BYnN0cmFjdCBmbGFnIGludG8KCUlzX0Fic3RyYWN0X1N1YnByb2dyYW0gYW5kIElzX0Fic3RyYWN0X1R5cGUuCgkoUHJlc2VydmVfRnVsbF9BdHRyaWJ1dGVzKTogVGhlIGZ1bGwgZW50aXR5IGxpc3QgaXMgbm90IGFuIGF0dHJpYnV0ZQoJdGhhdCBtdXN0IGJlIHByZXNlcnZlZCBmcm9tIGZ1bGwgdG8gcGFydGlhbCB2aWV3LgoKICAgICAgICAqIHNlbV9kaXN0LmFkYiAoQWRkX1JBU19EZXJlZmVyZW5jZV9UU1MpOgogICAgICAgIENoYW5nZSBwcmltaXRpdmUgbmFtZSB0byBfQ2FsbCBzbyBpdCBjYW5ub3QgY2xhc2ggd2l0aCBhbnkgbGVnYWwKICAgICAgICBpZGVudGlmaWVyLCBhbmQgYmUgc3BlY2lhbC1jYXNlZCBpbiBDaGVja19Db21wbGV0aW9uLgogICAgICAgIE1hcmsgdGhlIGZ1bGwgdmlldyBvZiB0aGUgZGVzaWduYXRlZCB0eXBlIGZvciB0aGUgUkFDVyBhc3NvY2lhdGVkIHdpdGgKICAgICAgICBhIFJBUyBhcyBDb21lc19Gcm9tX1NvdXJjZSB0byBnZXQgcHJvcGVyIHZpZXcgc3dpdGNoaW5nIHdoZW4gaW5zdGFsbGluZwogICAgICAgIHByaXZhdGUgZGVjbGFyYXRpb25zLgogICAgICAgIFByb3ZpdGUgYSBwbGFjZWhvbGRlciBuZXN0ZWQgcGFja2FnZSBib2R5IGFsb25nIHdpdGggdGhlIG5lc3RlZCBzcGVjCiAgICAgICAgdG8gaGF2ZSBhIHBsYWNlIGZvciBBcHBlbmRfUkFDV19Cb2RpZXMgdG8gZ2VuZXJhdGUgdGhlIGNhbGxpbmcgc3R1YnMKICAgICAgICBhbmQgc3RyZWFtIGF0dHJpYnV0ZXMuCgoyMDA3LTA0LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g4LmFkYiAoSGFzX0NvbXBvbmVudHMpOiBJZiB0aGUgYXJndW1lbnQgaXMgYW4gaW5jb21wbGV0ZSB0eXBlCgl0aGF0IGlzIGEgbGltaXRlZCB2aWV3LCBjaGVjayB0aGUgbm9uLWxpbWl0ZWQgdmlldyBpZiBhdmFpbGFibGUuCgkoVW5kZWZpbmVkKTogUmVmaW5lIGVycm9yIG1lc3NhZ2UgZm9yIG1pc3Npbmcgd2l0aCBvZiBUZXh0X0lPCgkoRmluZF9FeHBhbmRlZF9OYW1lKTogVXNlIElzX0tub3duX1VuaXQgZm9yIG1vcmUgYWNjdXJhdGUgZXJyb3IgbWVzc2FnZQoJdG8gZGlzdGluZ3Vpc2ggcmVhbCBtaXNzaW5nIHdpdGggY2FzZXMuCglGaXggZm9ybWF0IG9mIGFsbCBtaXNzaW5nIHdpdGggbWVzc2FnZXMKCShBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBFbWl0IHByb3BlciBlcnJvciBtZXNzYWdlIG9uIGlsbGVnYWwKCXJlbmFtaW5nIGFzIGJvZHkgd2hlbiByZW5hbWVkIGVudGl0eSBpcyBhYnN0cmFjdC4KCjIwMDctMDQtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fdHlwZS5hZHMsIHNlbV90eXBlLmFkYiAoSGFzX0Fic3RyYWN0X0ludGVycHJldGF0aW9uKTogTWFrZQoJcHJlZGljYXRlIHJlY3Vyc2l2ZSwgdG8gaGFuZGxlIGNvbXBsZXggZXhwcmVzc2lvbnMgb24gbGl0ZXJhbHMgd2hvc2UKCXNwdXJpb3VzIGFtYmlndWl0eSBjb21lcyBmcm9tIHRoZSBhYnN0cmFjdCBpbnRlcnByZXRhdGlvbiBvZiBzb21lCglzdWJleHByZXNzaW9uLgoJKEludGVyZmFjZV9QcmVzZW50X0luX0FuY2VzdG9yKTogQWRkIHN1cHBvcnQgdG8gY29uY3VycmVudCByZWNvcmQKCXR5cGVzLgoJKEFkZF9PbmVfSW50ZXJwLERpc2FtYmlndWF0ZSk6IFNwbGl0IElzX0Fic3RyYWN0IGZsYWcgaW50bwoJSXNfQWJzdHJhY3RfU3VicHJvZ3JhbSBhbmQgSXNfQWJzdHJhY3RfVHlwZS4KCjIwMDctMDQtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYiAoT2JqZWN0X0FjY2Vzc19MZXZlbCk6IElmIHRoZSBvYmplY3QgaXMgYQoJZGVyZWZlcmVuY2Ugb2YgYSBsb2NhbCBvYmplY3QgUiBjcmVhdGVkIGFzIGEgcmVmZXJlbmNlIHRvIGFub3RoZXIKCW9iamVjdCBPLCB1c2UgdGhlIGFjY2VzcyBsZXZlbCBvZiBPLgoJKE1hdGNoZXNfUHJlZml4ZWRfVmlld19Qcm9maWxlKTogVXNlIGNvbW1vbiBwcmVkaWNhdGUgQ29uZm9ybWluZ19UeXBlcywKCXJhdGhlciB0aGFuIGxvY2FsIFNhbWVfRm9ybWFsX1R5cGUsIHRvIGNoZWNrIHdoZXRoZXIgcHJvdGVjdGVkIG9wZXJhdGlvbgoJb3ZlcnJpZGVzIGFuIGluaGVyaXRlZCBvbmUuCgkoU2FtZV9Gb3JtYWxfVHlwZSk6IE5ldyBwcmVkaWNhdGUsIHVzZWQgd2hlbiBtYXRjaGluZyBzaWduYXR1cmVzIG9mCglvdmVycmlkaW5nIHN5bmNocm9uaXplZCBvcGVyYXRpb25zLCB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBhIGZvcm1hbAoJaGFzIGEgdHlwZSB0aGF0IGlzIGEgZ2VuZXJpYyBhY3R1YWwuCgkoSXNfQWxpYXNlZF9WaWV3KTogUmVwbGFjZSBjaGVjayBvbiBFX1Rhc2tfVHlwZSBhbmQgRV9Qcm90ZWN0ZWRfVHlwZSBieQoJcHJlZGljYXRlIElzX0NvbmN1cnJlbnRfVHlwZS4gVGhpcyBlbnN1cmVzIHN1cHBvcnRpbiBjYXNlIG9mIHN1YnR5cGVzLgoJKE5lZWRzX09uZV9BY3R1YWwpOiBOZXcgcHJlZGljYXRlLCBmb3IgQWRhIDIwMDUgdXNlLCB0byByZXNvbHZlCglzeW50YWN0aWMgYW1iaWd1aXRpZXMgaW52b2x2aW5nIGluZGV4aW5nIG9mIGZ1bmN0aW9uIGNhbGxzIHRoYXQgcmV0dXJuCglhcnJheXMuCgkoQWJzdHJhY3RfSW50ZXJmYWNlX0xpc3QpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IHJldHVybnMgdGhlIGxpc3Qgb2YKCWFic3RyYWN0IGludGVyZmFjZXMgYXNzb2NpYXRlZCB3aXRoIGEgY29uY3VycmVudCB0eXBlIG9yIGEKCWNvbmN1cnJlbnQgcmVjb3JkIHR5cGUuCgkoSW50ZXJmYWNlX1ByZXNlbnRfSW5fUGFyZW50KTogTmV3IHN1YnByb2dyYW0gdXNlZCB0byBjaGVjayBpZiBhCglnaXZlbiB0eXBlIG9yIHNvbWUgb2YgaXRzIHBhcmVudHMgaW1wbGVtZW50IGEgZ2l2ZW4gaW50ZXJmYWNlLgoJKENvbGxlY3RfQWJzdHJhY3RfSW50ZXJmYWNlcyk6IEFkZCBzdXBwb3J0IGZvciBjb25jdXJyZW50IHR5cGVzCgl3aXRoIGludGVyZmFjZSB0eXBlcy4KCShIYXNfQWJzdHJhY3RfSW50ZXJmYWNlcyk6IEFkZCBzdXBwb3J0IGZvciBjb25jdXJyZW50IHR5cGVzIHdpdGgKCWludGVyZmFjZSB0eXBlcy4KCShJc19QYXJlbnQpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IGRldGVybWluZXMgd2hldGhlciBFMSBpcyBhIHBhcmVudAoJb2YgRTIuIEZvciBhIGNvbmN1cnJlbnQgdHlwZSBpdHMgcGFyZW50IGlzIHRoZSBmaXJzdCBlbGVtZW50IG9mIGl0cwoJbGlzdCBvZiBpbnRlcmZhY2UgdHlwZXM7IGZvciBvdGhlciB0eXBlcyB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZQoJc2FtZSByZXN1bHQgdGhhbiBJc19BbmNlc3Rvci4KCShFbmNsb3NpbmdfU3VicHJvZ3JhbSk6IEFkZCB0ZXN0IGZvciBOX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQuCgkoQ29sbGVjdF9TeW5jaHJvbml6ZWRfSW50ZXJmYWNlcyk6IFJlbW92ZWQgYmVjYXVzZSB0aGUgc3VicHJvZ3JhbQoJQ29sbGVjdF9BYnN0cmFjdF9JbnRlcmZhY2VzIHByb3ZpZGVzIHRoaXMgZnVuY3Rpb25hbGl0eS4KCShDb2xsZWN0X0Fic3RyYWN0X0ludGVyZmFjZXMpOiBNaW5vciB1cGRhdGUgdG8gZ2l2ZSBzdXBwb3J0IHRvCgljb25jdXJyZW50IHR5cGVzIGFuZCB0aHVzIGF2b2lkIHVuZGVzaXJlZCBjb2RlIGR1cGxpY2F0aW9uLgoJKEdldF9TdWJwcm9ncmFtX0VudGl0eSk6IEhhbmRsZSBlbnRyeSBjYWxscy4KCShNYXlfQmVfTHZhbHVlKTogSW5jbHVkZSBhY3R1YWxzIHRoYXQgYXBwZWFyIGFzIGluLW91dCBwYXJhbWV0ZXJzIGluCgllbnRyeSBjYWxscy4KCShFbnRlcl9OYW1lKTogRG8gbm90IGdpdmUgLWduYXR3aCBoaWRpbmcgd2FybmluZyBmb3IgcmVjb3JkIGNvbXBvbmVudAoJZW50aXRpZXMsIHRoZXkgbmV2ZXIgcmVzdWx0IGluIGhpZGluZy4KCjIwMDctMDQtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiIChDb2V4dGVuc2lvbnMpOiBOZXcgZWxlbWVudCBsaXN0IGZvciBhbGxvY2F0b3JzLAoJdG8gY2hhaW4gbmVzdGVkIGNvbXBvbmVudHMgdGhhdCBhcmUgYWxsb2NhdG9ycyBmb3IgYWNjZXNzIGRpc2NyaW1pbmFudHMKCW9mIHRoZSBlbmNsb3Npbmcgb2JqZWN0LgoJQWRkIE5fUHVzaCBhbmQgTl9Qb3Agbm9kZXMKCU5ldyBmaWVsZCBFeGNlcHRpb25fTGFiZWwgYWRkZWQKCShMb2NhbF9SYWlzZV9TdGF0ZW1lbnRzKTogTmV3IGZpZWxkIGluIE5fRXhjZXB0aW9uX0hhbmRsZXJfTm9kZQoJKExvY2FsX1JhaXNlX05vdF9PSyk6IE5ldyBmbGFnIGluIE5fRXhjZXB0aW9uX0hhbmRsZXJfTm9kZQoJKElzX0NvZXh0ZW5zaW9uKTogTmV3IGZsYWcgZm9yIGFsbG9jYXRvcnMsIHRvIG1hcmsgYWxsb2NhdG9ycyB0aGF0Cgljb3JyZXNwb25kIHRvIGFjY2VzcyBkaXNjcmltaW5hbnRzIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBvYmplY3RzLgoJKE5fQmxvY2tfU3RhdGVtZW50KTogRG9jdW1lbnQgdGhlIGZhY3QgdGhhdCB0aGUgY29ycmVzcG9uZGluZyBlbnRpdHkKCWNhbiBiZSBhbiBFX1JldHVybl9TdGF0ZW1lbnQuCgkoSXNfQ29leHRlbnNpb24pOiBOZXcgZmxhZyBmb3IgYWxsb2NhdG9ycy4KCVJlbW92ZSBhbGwgY29kZSBmb3IgRFNQIG9wdGlvbgoKCSogc3ByaW50LmFkcywgc3ByaW50LmFkYjogRGlzcGxheSBiYXNpYyBpbmZvcm1hdGlvbiBmb3IgY2xhc3Nfd2lkZQoJc3VidHlwZXMuIEFkZCBoYW5kbGluZyBvZiBOX1B1c2ggYW5kIE5fUG9wIG5vZGVzCgoyMDA3LTA0LTA2ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXRwb2JvcC5hZGIgKEV4Y2VwdGlvbmFsX0NvbXBsZXRlX0VudHJ5X0JvZHkpOiBVbmRlZmVyIGFib3J0aW9uCgliZWZvcmUgcHJvcGFnYXRpbmcgZXhjZXB0aW9uLgoKMjAwNy0wNC0wNiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIHRyYWNlYmFrLmMgKFBDX0FESlVTVCAtIGlhNjQpOiAtNCBpbnN0ZWFkIG9mIC0xNiwgZXhwZWN0ZWQgdG8geWllbGQKCWFuIGFkZHJlc3MgYWx3YXlzIHdpdGhpbiB0aGUgY2FsbCBpbnN0cnVjdGlvbiBmcm9tIGEgcmV0dXJuIGFkZHJlc3MuCgoyMDA3LTA0LTA2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgPGJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJhbnMuYyAoY2FsbF90b19nbnUpIDxUWVBFX1JFVFVSTlNfQllfVEFSR0VUX1BUUl9QPjogUmV0dXJuIGFuCglleHByZXNzaW9uIHdpdGggYSBDT01QT1VORF9FWFBSIGluY2x1ZGluZyB0aGUgY2FsbCBpbnN0ZWFkIG9mIGVtaXR0aW5nCgl0aGUgY2FsbCBkaXJlY3RseSBoZXJlLgoJKGduYXRfdG9fZ251KSA8Tl9TbGljZT46IERvIG5vdCByZXR1cm4gYSBub24tY29uc3RhbnQgbG93IGJvdW5kIGlmIHRoZQoJaGlnaCBib3VuZCBpcyBjb25zdGFudCBhbmQgdGhlIHNsaWNlIGlzIGVtcHR5LiAgVGlkeS4KCSh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX09wX05vdCk6IEhhbmRsZSBwcm9wZXJseSB0aGUgY2FzZSB3aGVyZSB0aGUKCW9wZXJhdGlvbiBhcHBsaWVzIHRvIGEgcHJpdmF0ZSB0eXBlIHdob3NlIGZ1bGwgdmlldyBpcyBhIG1vZHVsYXIgdHlwZS4KCShDYXNlX1N0YXRlbWVudF9Ub19nbnUpOiBJZiBhbiBhbHRlcm5hdGl2ZSBpcyBhbiBFX0NvbnN0YW50IHdpdGggYW4KCUFkZHJlc3NfQ2xhdXNlLCB1c2UgdGhlIGFzc29jaWF0ZWQgRXhwcmVzc2lvbiBhcyB0aGUgR05BVCB0cmVlCglyZXByZXNlbnRpbmcgdGhlIGNob2ljZSB2YWx1ZSB0byBlbnN1cmUgdGhlIGNvcnJlc3BvbmRpbmcgR0NDIHRyZWUgaXMKCW9mIHRoZSBwcm9wZXIga2luZC4KCShtYXliZV9zdGFiaWxpemVfcmVmZXJlbmNlKTogU3RhYmlsaXplIENPTVBPVU5EX0VYUFJzIGFzIGEgd2hvbGUKCWluc3RlYWQgb2YganVzdCB0aGUgb3BlcmFuZHMsIGFzIHRoZSBiYXNlIEdDQyBzdGFiaWxpemVfcmVmZXJlbmNlIGRvZXMuCgk8Q0FMTF9FWFBSPjogTmV3IGNhc2UuIERpcmVjdGx5IHN0YWJpbGl6ZSB0aGUgY2FsbCBpZiBhbiBsdmFsdWUgaXMgbm90CglyZXF1ZXN0ZWQ7IG90aGVyd2lzZSBmYWlsLgoJKGFkZHJlc3NhYmxlX3ApIDxDT01QT05FTlRfUkVGPjogRG8gbm90IHRlc3QgREVDTF9OT05BRERSRVNTQUJMRV9QLgoKMjAwNy0wNC0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHVpbnRwLmFkcywgdWludHAuYWRiIChVSV9EaXZfUmVtKTogTmV3IHN1YnByb2dyYW0sIGV4dGVuZGluZyBwcmV2aW91cwoJaW1wbGVtZW50YXRpb24gb2YgVUlfRGl2LgoJKFVJX0Rpdik6IFJlaW1wbGVtZW50IGFzIGEgY2FsbCB0byBVSV9EaXZfUmVtLgoJKFVJX1JlbSk6IFRha2UgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgVUlfRGl2X1JlbSBwcm92aWRlcyB0aGUKCXJlbWFpbmRlciwgYXZvaWRpbmcgdGhlIGNvc3Qgb2YgYSBtdWx0aXBsaWNhdGlvbiBhbmQgYSBzdWJ0cmFjdGlvbi4KCShVSV9Nb2R1bGFyX0ludmVyc2UpOiBUYWtlIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0IFVJX0Rpdl9SZW0KCXByb3ZpZGVzIGJvdGggcXVvdGllbnQgYW5kIHJlbWFpbmRlciBpbiBhIHNpbmdsZSBjb21wdXRhdGlvbi4KCShVSV9Nb2R1bGFyX0V4cG9uZW50aWF0aW9uLCBVSV9Nb2R1bGFyX0ludmVyc2UpOiBOZXcgbW9kdWxhciBhcml0aG1ldGljCglmdW5jdGlvbnMgZm9yIHVpbnQuCgkoVUlfTW9kdWxhcl9JbnZlcnNlKTogQWRkIGEgbm90ZSB0aGF0IHRoZSBiZWhhdmlvdXIgb2YgdGhpcyBzdWJwcm9ncmFtCglpcyB1bmRlZmluZWQgaWYgdGhlIGdpdmVuIG4gaXMgbm90IGludmVyc2libGUuCgoyMDA3LTA0LTA2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdXRpbHMyLmMgKGtub3duX2FsaWdubWVudCk6IEhhbmRsZSBDT01QT1VORF9FWFBSLCBDT05EX0VYUFIgYW5kCglCSVRfQU5EX0VYUFIuIEhhbmRsZSBhbHNvIFZJRVdfQ09OVkVSVF9FWFBSLCBhcyB0aGUgb3RoZXIgY29udmVyc2lvbgoJb3Bjb2Rlcy4KCjIwMDctMDQtMDYgIEVyaWMgQm90Y2F6b3UgPGJvdGNhem91QGFkYWNvcmUuY29tPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiB1dGlscy5jICh1cGRhdGVfcG9pbnRlcl90byk6IE1ha2UgYSBjb3B5IG9mIHRoZSBjb3VwbGUgb2YgRklFTERfREVDTHMKCXdoZW4gdXBkYXRpbmcgdGhlIGNvbnRlbnRzIG9mIHRoZSBvbGQgcG9pbnRlciB0byBhbiB1bmNvbnN0cmFpbmVkIGFycmF5LgoJKGVuZF9zdWJwcm9nX2JvZHkpOiBTZXQgZXJyb3JfZ25hdF9ub2RlIHRvIEVtcHR5LgoJKHdyaXRlX3JlY29yZF90eXBlX2RlYnVnX2luZm8pOiBEbyBub3QgYmUgdW5kdWx5IHNwYXJpbmcgd2l0aCBvdXIgYnl0ZXMuCgkodW5jaGVja2VkX2NvbnZlcnQpOiBGb3Igc3VidHlwZSB0byBiYXNlIHR5cGUgY29udmVyc2lvbnMsIHJlcXVpcmUgdGhhdAoJdGhlIHNvdXJjZSBiZSBhIHN1YnR5cGUgaWYgaXQgaXMgYW4gaW50ZWdlciB0eXBlLgoJKGJ1aWx0aW5fZGVjbHMpOiBOZXcgZ2xvYmFsLCB2ZWN0b3Igb2YgYXZhaWxhYmxlIGJ1aWx0aW4gZnVuY3Rpb25zLgoJKGduYXRfcHVzaGRlY2wpOiBBZGQgZ2xvYmFsIGJ1aWx0aW4gZnVuY3Rpb24gZGVjbGFyYXRpb24gbm9kZXMgdG8gdGhlCglidWlsdGluX2RlY2xzIGxpc3QuCgkoZ25hdF9pbnN0YWxsX2J1aWx0aW5zKTogQWRqdXN0IGNvbW1lbnRzLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBTZXQgREVDTF9CVUlMVElOX0NMQVNTIGFuZCBERUNMX0ZVTkNUSU9OX0NPREUgYmVmb3JlCgljYWxsaW5nIGduYXRfcHVzaGRlY2wsIHNvIHRoYXQgaXQga25vd3Mgd2hlbiBpdCBoYW5kZWQgYSBidWlsdGluCglmdW5jdGlvbiBkZWNsYXJhdGlvbiBub2RlLgoJKGJ1aWx0aW5fZGVjbF9mb3IpOiBTZWFyY2ggdGhlIGJ1aWx0aW5fZGVjbHMgbGlzdC4KCjIwMDctMDQtMDYgIEVyaWMgQm90Y2F6b3UgPGJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogcy1zdGNob3Atdnh3b3Jrcy5hZGI6IAoJKFN0YWNrX0NoZWNrKTogUmFpc2UgU3RvcmFnZV9FcnJvciBpZiB0aGUgYXJndW1lbnQgaGFzIHdyYXBwZWQgYXJvdW5kLgoKMjAwNy0wNC0wNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYS1kaXJvcm8uYWRzOiBJbnNlcnRlZCB0aGUgcHJhZ21hIFVuaW1wbGVtZW50ZWRfVW5pdAoKCSogYmluZGdlbi5hZGIgKEdlbl9PdXRwdXRfRmlsZV9BZGEpOiBHZW5lcmF0ZSBwcmFnbWEgQWRhXzk1IGF0IHN0YXJ0CglvZiBmaWxlcwoJQWRkIG1lbnRpb24gb2YgLVNldiAoc2V0IGluaXRpYWxpemVfc2NhbGFycyBvcHRpb24gZnJvbSBlbnZpcm9ubWVudAoJdmFyaWFibGUgYXQgcnVuIHRpbWUpIGluIGduYXRiaW5kIHVzYWdlIG1lc3NhZ2UuCgoJKiBlbGlzdHMuYWRzLCBlbGlzdHMuYWRiOiAoQXBwZW5kX1VuaXF1ZV9FbG10KTogTmV3IHByb2NlZHVyZQoKCSogZm5hbWUtdWYuYWRzOiBNaW5vciBjb21tZW50IGZpeAoKCSogb3NpbnQuYWRzOiBDaGFuZ2UgcHJhZ21hIEVsYWJvcmF0ZSB0byBFbGFib3JhdGVfQWxsCgoJKiBwYXItbG9hZC5hZGI6IEFkZCBkb2N1bWVudGF0aW9uLgoKCSogc2VtX2NhdC5hZHMsIHNlbV9jYXQuYWRiOiBNaW5vciBjb2RlIHJlb3JnYW5pemF0aW9uCgoJKiBzLXBhcmludC5hZHMgKFJDSV9Mb2NhdG9yKSA6IEFkZCAnVmVyc2lvbicgZ2VuZXJpYyBmb3JtYWwKCgkqIHMtc2Vjc3RhLmFkczogRXh0cmEgY29tbWVudHMKCgkqIHMtc29mbGluLmFkczogTWlub3IgY29tbWVudCBmaXhlcwoKCSogcy1zdHJhdHQuYWRzIChCbG9ja19TdHJlYW1fT3BzX09LKTogUmVtb3ZlZC4KCgkqIHMtd2NoY29uLmFkczogTWlub3IgY29tbWVudCBhZGRpdGlvbgoKCSogdHJlZXByLmFkYjogTWlub3IgY2hhbmdlIGluIG1lc3NhZ2UKCShQcmludF9OYW1lLFByaW50X05vZGUpOiBNYWtlIHRoZXNlIGRlYnVnIHByaW50b3V0cyBtb3JlIHJvYnVzdDogcHJpbnQKCSJubyBzdWNoLi4uIiBpbnN0ZWFkIG9mIGNyYXNoaW5nIG9uIGJhZCBpbnB1dC4KCjIwMDctMDMtMzAgIFJhZmFlbCBBdmlsYSBkZSBFc3BpbmRvbGEgIDxlc3BpbmRvbGFAZ29vZ2xlLmNvbT4KCgkqIHRyYW5zLmMgKEF0dHJpYnV0ZV90b19nbnUpOiBVc2UgZ2V0X3NpZ25lZF9vcl91bnNpZ25lZF90eXBlCglpbnN0ZWFkIG9mIGduYXRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUuCgkqIHV0aWxzLmMgKGduYXRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBSZW1vdmUuCgkqIG1pc2MuYyAoTEFOR19IT09LU19TSUdORURfT1JfVU5TSUdORURfVFlQRSk6IFJlbW92ZQoJKiBnaWdpLmggKGduYXRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBSZW1vdmUKCjIwMDctMDMtMDkgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogY3VpbnRwLmMgKFVJX1RvX2dudSk6IFVzZSBmb2xkX2J1aWxkTiBjYWxscyBpbnN0ZWFkIG9mIGNhbGxpbmcKCWZvbGQgd2l0aCB0aGUgcmVzdWx0IG9mIGJ1aWxkTi4KCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpOiBMaWtld2lzZS4KCSogdHJhbnMuYyAoQXR0cmlidXRlX3RvX2dudSwgZ25hdF90b19nbnUsIGVtaXRfY2hlY2spOiBMaWtld2lzZS4KCSogdXRpbHMuYyAoZmluaXNoX3JlY29yZF90eXBlLCBtZXJnZV9zaXplcywgbWF4X3NpemUsIGNvbnZlcnQpOgoJTGlrZXdpc2UuCgkqIHV0aWxzMi5jIChnbmF0X3RydXRodmFsdWVfY29udmVyc2lvbiwgY29tcGFyZV9hcnJheXMsCglub25iaW5hcnlfbW9kdWxhcl9vcGVyYXRpb24sIGJ1aWxkX2JpbmFyeV9vcCwgYnVpbGRfdW5hcnlfb3AsCglidWlsZF9jb25kX2V4cHIpOiBMaWtld2lzZS4KCgkqIHV0aWxzLmMgKGNvbnZlcnQpOiBVc2UgZm9sZF9idWlsZDEgd2hlbiBjYXN0aW5nIHZhbHVlcyB0byB2b2lkLgoJKiB1dGlsczIuYyAoZ25hdF90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBVc2UgYnVpbGRfaW50X2NzdCBhbmQKCWZvbGRfY29udmVydCBpbnN0ZWFkIG9mIGNvbnZlcnQgd2hlbiBhcHByb3ByaWF0ZS4KCjIwMDctMDMtMDEgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluOiBBZGQgaW5zdGFsbC1wZGYgdGFyZ2V0IGFzIGNvcGllZCBmcm9tCglhdXRvbWFrZSB2MS4xMCBydWxlcy4KCjIwMDctMDItMjggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKGRvYy9nbmF0X3Vnbl91bncudGV4aSk6IERlcGVuZCBvbgoJJChnY2NfZG9jZGlyKS9pbmNsdWRlL2djYy1jb21tb24udGV4aSBhbmQgZ2NjLXZlcnMudGV4aS4KCShkb2MvZ25hdC1zdHlsZS5pbmZvKTogTGlrZXdpc2UuCgoyMDA3LTAyLTI2ICBCcm9va3MgTW9zZXMgIDxicm9va3MubW9zZXNAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGduYXQtc3R5bGUudGV4aTogU3RhbmRhcmRpemUgdGl0bGUgcGFnZS4KCSogZ25hdF9ybS50ZXhpOiBMaWtld2lzZS4KCSogZ25hdF91Z24udGV4aTogTGlrZXdpc2UuCgoyMDA3LTAyLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChhbm5vdGF0ZV92YWx1ZSk6IEFkanVzdCBmb3IgcmVmYWN0b3Jpbmcgb2YgdHJlZV9tYXAKCWhpZXJhcmNoeS4KCjIwMDctMDItMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGFubm90YXRlX3ZhbHVlKTogQWRqdXN0IGZvciByZWZhY3RvcmluZyBvZiB0cmVlX21hcAoJaGllcmFyY2h5LgoKMjAwNy0wMi0yMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xODgxOQoJKiBzZW1fY2gzLmFkYiAoQ3JlYXRlX0NvbnN0cmFpbmVkX0NvbXBvbmVudHMpOiBmb3IgYSBzdWJ0eXBlIG9mIGFuCgl1bnRhZ2dlZCBkZXJpdmVkIHR5cGUsIGFkZCBoaWRkZW4gY29tcG9uZW50cyB0byBrZWVwIGRpc2NyaW1pbmFudAoJbGF5b3V0IGNvbnNpc3RlbnQsIHdoZW4gYSBnaXZlbiBkaXNjcmltaW5hbnQgb2YgdGhlIGRlcml2ZWQgdHlwZQoJY29uc3RyYWludHMgc2V2ZXJhbCBkaXNjcmltaW5hbnRzIG9mIHRoZSBwYXJlbnQgdHlwZS4KCjIwMDctMDItMTYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgU2FuZHJhIExvb3NlbW9yZSAgPHNhbmRyYUBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJhbnMuYyAoY2FsbF90b19nbnUpOiAgVXNlIGJ1aWxkX2NhbGxfbGlzdCBpbnN0ZWFkIG9mIGJ1aWxkMyB0bwoJYnVpbGQgdGhlIGNhbGwgZXhwcmVzc2lvbi4KCShnbmF0X3N0YWJpbGl6ZV9yZWZlcmVuY2VfMSk6IEhhbmRsZSB0Y2NfdmxfZXhwLgoJKiB1dGlscy5jIChtYXhfc2l6ZSkgPHRjY19leGNlcHRpb25hbD46IERlbGV0ZS4KCTx0Y2NfdmxfZXhwPjogTmV3IGNhc2UuCgk8dGNjX2V4cHJlc3Npb24+OiBEZWxldGUgQ0FMTF9FWFBSIHN1YmNhc2UuCgkoYnVpbGRfZ2xvYmFsX2NkdG9yKTogVXNlIGJ1aWxkX2NhbGxfbmFyeSBpbnN0ZWFkIG9mIGJ1aWxkMy4KCSogdXRpbHMyLmMgKGJ1aWxkX2NhbGxfMV9leHByKTogTGlrZXdpc2UuCgkoYnVpbGRfY2FsbF8yX2V4cHIpOiBMaWtld2lzZS4KCShidWlsZF9jYWxsXzBfZXhwcik6IExpa2V3aXNlLgoJKGJ1aWxkX2NhbGxfYWxsb2NfZGVhbGxvYyk6IExpa2V3aXNlLgoKMjAwNy0wMi0wNyAgQW5kcmVhcyBLcmViYmVsICA8a3JlYmJlbDFAZGUuaWJtLmNvbT4KCgkqIHJhaXNlLWdjYy5jIChnZXRfcmVnaW9uX2Rlc2NyaXB0aW9uX2ZvciwgZ2V0X2NhbGxfc2l0ZV9hY3Rpb25fZm9yLAoJZ2V0X2FjdGlvbl9kZXNjcmlwdGlvbl9mb3IpOiBSZXBsYWNlIF9VbndpbmRfV29yZCB3aXRoIF91bGViMTI4X3QgCglhbmQgX1Vud2luZF9TV29yZCB3aXRoIF9zbGViMTI4X3QuCgoyMDA3LTAyLTA2ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogTWFrZS1sYW5nLmluIChhZGEvZGVjbC5vKTogQWRkIGd0LWFkYS1kZWNsLmggZGVwZW5kZW5jeS4KCSogZGVjbC5jOiBJbmNsdWRlIGd0LWFkYS1kZWNsLmguCgkoYW5ub3RhdGVfdmFsdWVfY2FjaGUpOiBOZXcuCgkoYW5ub3RhdGVfdmFsdWUpOiBVc2UgaXQgaW5zdGVhZCBvZiBUUkVFX0NPTVBMRVhJVFkuCgoyMDA3LTAyLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pc2MuYywgdXRpbHMyLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNy0wMS0yNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSk6IFVzZSBUUkVFX09WRVJGTE9XIGluc3RlYWQgb2YKCVRSRUVfQ09OU1RBTlRfT1ZFUkZMT1cuCgkoYWxsb2NhdGFibGVfc2l6ZV9wLCBhbm5vdGF0ZV92YWx1ZSk6IExpa2V3aXNlLgoJKiB0cmFucy5jIChnbmF0X3RvX2dudSk6IExpa2V3aXNlLgoJKiB1dGlscy5jICh1bmNoZWNrZWRfY29udmVydCk6IExpa2V3aXNlLgoJKiB1dGlsczIuYyAoYnVpbGRfc2ltcGxlX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCjIwMDctMDEtMjMgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCglQUiBib290c3RyYXAvMzA1NDEKCSogTWFrZS1sYW5nLmluOiBSZXBsYWNlIGludm9jYXRpb25zIG9mIGduYXRtYWtlIHdpdGggJChHTkFUTUFLRSkuCgkoZ25hdGJvb3QyKTogUGFzcyBzdGFnZWQgR05BVE1BS0UgaW5zdGVhZCBvZiBTVEFHRV9QUkVGSVguCgkoZ25hdGJvb3QzKTogTGlrZXdpc2UuCgkoR05BVEJJTkQpOiBEbyBub3QgZGVmaW5lLgoJKiBNYWtlZmlsZS5pbiAoR05BVEJJTkQpOiBEbyBub3QgZGVmaW5lLgoKMjAwNy0wMS0wOCAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogY3VpbnRwLmMgKGJ1aWxkX2NzdF9mcm9tX2ludCk6IFVzZSBidWlsdF9pbnRfY3N0X3R5cGUuCgkqIHRyYW5zLmMgKGduYXRfdG9fZ251KTogTGlrZXdpc2UuCgoyMDA2LTEyLTA3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZXBsYWNlIENST1NTX0NPTVBJTEUgd2l0aCBDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFLgoJKiBhZGFpbnQuYzogTGlrZXdpc2UuCgoyMDA2LTEyLTA1ICBBbGR5IEhlcm5hbmRleiAgPGFsZHloQHJlZGhhdC5jb20+CgoJTWVyZ2UgZnJvbSBnaW1wbGUtdHVwbGVzLWJyYW5jaDoKCTIwMDYtMTEtMDIgIEFsZHkgSGVybmFuZGV6ICA8YWxkeWhAcmVkaGF0LmNvbT4KCgkqIGFkYS10cmVlLmggKGxhbmdfdHJlZV9ub2RlKTogSGFuZGxlIGdpbXBsZSB0dXBsZXMuCgkqIHRyYW5zLmMgKGduYXRfZ2ltcGxpZnlfZXhwcik6IFJlcGxhY2UgTU9ESUZZX0VYUFIgd2l0aAoJR0lNUExFX01PRElGWV9TVE1ULgoKMjAwNi0xMi0wMiAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiwgbWluZ3czMi5oLCB0cmFucy5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogZ25hdF9ybS50ZXhpLCBnbmF0X3Vnbi50ZXhpOiBGb2xsb3cgc3BlbGxpbmcgY29udmVudGlvbnMuCglGaXggdHlwb3MuCgoyMDA2LTExLTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yNzkzNgoJKiB0cmFucy5jIChhZGRfZGVjbF9leHByKTogRG8gbm90IGR5bmFtaWNhbGx5IGVsYWJvcmF0ZSBwYWRkZWQgb2JqZWN0cwoJaWYgdGhlIGluaXRpYWxpemVyIHRha2VzIGludG8gYWNjb3VudCB0aGUgcGFkZGluZy4KCjIwMDYtMTEtMTEgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyYW5zLmMgKG1heWJlX3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBSZW1vdmUgaGFuZGxpbmcgb2YKCUZJWF9DRUlMX0VYUFIsIEZJWF9GTE9PUl9FWFBSIGFuZCBGSVhfUk9VTkRfRVhQUi4KCjIwMDYtMTEtMDUgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjk3MDcKCSogcy1vc2ludGUtbGludXgtYWxwaGEuYWRzLCBzLW9zaW50ZS1saW51eC1ocHBhLmFkcwoJKFRvX1RhcmdldF9Qcmlvcml0eSk6IE5ldyBmdW5jdGlvbi4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS10YXN0ZXIuYWRiLCBzLXRyYWVudC12bXMuYWRiLCBhLWVsY2hoYS5hZHMsIGEtZWxjaGhhLmFkYiwKCWEtZXhjdHJhLmFkYiwgYWxpLXV0aWwuYWRiLCBleHBfZGlzcC5hZHMsIHMtc3RhbGliLmFkcywgcy10cmFlbnQuYWRiLAoJcy1hZGRvcGUuYWRzLCBzLWFkZG9wZS5hZGIsIGEtcmJ0Z3NvLmFkYiwgYS1jcmJsdHIuYWRzLCBhLWNvcHJudS5hZGIsCglhLWNnY2Fzby5hZGIsIGEtY2dhcnNvLmFkYiwgYS1jZ2Fhc28uYWRiLCBhLWNvb3JtdS5hZGIsIGEtY2lvcm11LmFkYiwKCWEtcmJ0Z3NvLmFkcywgYS1zdHVuaGEuYWRiLCBhLXN0dW5oYS5hZGIsIGEtY2lvcm1hLmFkYiwgYS1jb29ybWEuYWRiLAoJYS1zZWNhaW4uYWRiLCBhLXNsY2Fpbi5hZGIsIGEtc2hjYWluLmFkYiwgYS1zdHdpaGEuYWRiLCBhLXN0d2loYS5hZGIsCglhLXN0cmhhcy5hZGIsIGEtc3RyaGFzLmFkYiwgYS1zdHpoYXMuYWRiLCBhLXN0emhhcy5hZGIsIGEtc3p1emhhLmFkYiwKCWEtY2hhY29uLmFkYiwgYS1jaGFjb24uYWRiLCBhLWNoYWNvbi5hZHMsIGEtc3Rib2hhLmFkYiwgYS1zd2J3aGEuYWRiLAoJYS1zemJ6aGEuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuIEZpeCBoZWFkZXIuCgoJKiBhLW51bWF1eC14ODYuYWRiOiBBZGQgcGFyZW50aGVzZXMgZm9yIHVzZSBvZiB1bmFyeSBtaW51cwoJKiBhLW5nY2VmdS5hZGI6IFN1cHBseSBtaXNzaW5nIHBhcmVudGhlc2VzIGZvciB1bmFyeSBtaW51cwoJKiBhLW5nY290eS5hZGI6IEFkZCBwYXJlbnMgZm9yIHVzZSBvZiB1bmFyeSBtaW51cwoJKiBhLW5nZWxmdS5hZGI6IEFkZCBtaXNzaW5nIHBhcmVucyBmb3IgdW5hcnkgbWludXMKCSogYS10aWZpaW8uYWRiOiBBZGQgcGFyZW50aGVzZXMgZm9yIHVzZXMgb2YgdW5hcnkgbWludXMKCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9VbmFyeV9PcCk6IEFkZCB3YXJuaW5nIGZvciB1c2Ugb2YgdW5hcnkgbWludXMKCXdpdGggbXVsdGlwbHlpbmcgb3BlcmF0b3IuCgkoRXhwZWN0ZWRfVHlwZV9Jc19BbnlfUmVhbCk6IE5ldyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZnJvbSB0aGUgUGFyZW50Cglwb2ludGVyIHdoZXRoZXIgdGhlIGNvbnRleHQgZXhwZWN0cyAiYW55IHJlYWwgdHlwZSIuCgkoUmVzb2x2ZV9Bcml0aG1ldGljX09wKTogRG8gbm90IGdpdmUgYW4gZXJyb3Igb24gY2FsbHMgdG8gdGhlCgl1bml2ZXJzYWxfZml4ZWQgIioiIGFuZCAiLyIgb3BlcmF0b3JzIHdoZW4gdGhleSBhcmUgdXNlZCBpbiBhIGNvbnRleHQKCXRoYXQgZXhwZWN0cyBhbnkgcmVhbCB0eXBlLiBBbHNvIHNldCB0aGUgdHlwZSBvZiB0aGUgbm9kZSB0bwoJVW5pdmVyc2FsX1JlYWwgaW4gdGhpcyBjYXNlLCBiZWNhdXNlIGRvd25zdHJlYW0gcHJvY2Vzc2luZyByZXF1aXJlcyBpdAoJKG1haW5seSBzdGF0aWMgZXhwcmVzc2lvbiBldmFsdWF0aW9uKS4KCVJld29yZCBzb21lIGNvbnRpbnVhdGlvbiBtZXNzYWdlcwoJQWRkIHNvbWUgXFwgc2VxdWVuY2VzIHRvIGNvbnRpbnVhdGlvbiBtZXNzYWdlcwoJKFJlc29sdmVfQ2FsbCk6IFJlZmluZSBpbmZpbml0ZSByZWN1cnNpb24gY2FzZS4gVGhlIHRlc3QgaGFzIGJlZW4KCXNoYXJwZW5lZCB0byBlbGltaW5hdGUgc29tZSBmYWxzZSBwb3NpdGl2ZXMuCglDaGVjayBmb3IgQ3VycmVudF9UYXNrIHVzYWdlIG5vdyBpbmNsdWRlcyBlbnRyeSBiYXJyaWVyLCBhbmQgaXMgbm93IGEKCXdhcm5pbmcsIG5vdCBhbiBlcnJvci4KCShSZXNvbHZlKTogSWYgdGhlIGNhbGwgaXMgYW1iaWd1b3VzLCBpbmRpY2F0ZSB3aGV0aGVyIGFuIGludGVycHJldGF0aW9uCglpcyBhbiBpbmhlcml0ZWQgb3BlcmF0aW9uLgoJKENoZWNrX0FnZ3IpOiBXaGVuIHJlc29sdmluZyBhZ2dyZWdhdGVzLCBza2lwIGFzc29jaWF0aW9ucyB3aXRoIGEgYm94LAoJd2hpY2ggYXJlIHByaW9yaSBjb3JyZWN0LCBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSBhbiBhY3R1YWwgZGVmYXVsdAoJZXhwcmVzc2lvbiBpbiB0aGUgY291cnNlIG9mIGV4cGFuc2lvbi4KCShSZXNvbHZlX1R5cGVfQ29udmVyc2lvbik6IEFkZCBtaXNzaW5nIHN1cHBvcnQgZm9yIGNvbnZlcnNpb24gZnJvbQoJYSBjbGFzcy13aWRlIGludGVyZmFjZSB0byBhIHRhZ2dlZCB0eXBlLiBNaW5vciBjb2RlIGNsZWFudXAuCgkoVmFsaWRfVGFnZ2VkX0NvbnZlcmlvbik6IEFkZCBzdXBwb3J0IGZvciBhYnN0YWN0IGludGVyZmFjZSB0eXBlCgljb252ZXJzaW9ucy4KCShSZXNvbHZlX1NlbGVjdGVkX0NvbXBvbmVudCk6IENhbGwgR2VuZXJhdGVfUmVmZXJlbmNlIGhlcmUgcmF0aGVyIHRoYW4KCWR1cmluZyBhbmFseXNpcywgYW5kIHVzZSBNYXlfQmVfTHZhbHVlIHRvIGRpc3Rpbmd1aXNoIHJlYWQvd3JpdGUuCgkoVmFsaWRfQXJyYXlfQ29udmVyc2lvbik6IE5ldyBwcm9jZWR1cmUsIGFic3RyYWN0ZWQgZnJvbQoJVmFsaWRfQ29udmVyc2lvbiwgdG8gaW5jb3Jwb3JhdGUgYWNjZXNzaWJpbGl0eSBjaGVja3MgZm9yIGFycmF5cyBvZgoJYW5vbnltb3VzIGFjY2VzcyB0eXBlcy4KCShWYWxpZF9Db252ZXJzaW9uKTogRm9yIGEgY29udmVyc2lvbiB0byBhIG51bWVyaWMgdHlwZSBvY2N1cnJpbmcgaW4gYW4KCWluc3RhbmNlIG9yIGlubGluZWQgYm9keSwgbm8gbmVlZCB0byBjaGVjayB0aGF0IHRoZSBvcGVyYW5kIHR5cGUgaXMKCW51bWVyaWMsIHNpbmNlIHRoaXMgaGFzIGJlZW4gY2hlY2tlZCBkdXJpbmcgYW5hbHlzaXMgb2YgdGhlIHRlbXBsYXRlLgoJUmVtb3ZlIGxlZ2FjeSB0ZXN0IGZvciBzY29wZSBuYW1lIFVuY2hlY2tlZF9Db252ZXJzaW9uLgoKCSogc2VtX3Jlcy5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogYS1leGNlcHQuYWRiLCBhLWV4Y2VwdC0yMDA1LmFkYjogVHVybiBvZmYgc3VicHJvZ3JhbSBvcmRlcmluZwoJKFBFX0N1cnJlbnRfVGFza19Jbl9FbnRyeV9Cb2R5KTogTmV3IGV4Y2VwdGlvbiBjb2RlCgkoU0VfUmVzdHJpY3Rpb25fVmlvbGF0aW9uKTogUmVtb3ZlZCwgbm90IHVzZWQKCgkqIGEtZXhjZXB0LmFkczogIFVwZGF0ZSBjb21tZW50cy4KCgkqIHR5cGVzLmgsIHR5cGVzLmFkczogQWRkIGRlZmluaXRpb24gZm9yIFZhbGlkaXR5X0NoZWNrCgkoUEVfQ3VycmVudF9UYXNrX0luX0VudHJ5X0JvZHkpOiBOZXcgZXhjZXB0aW9uIGNvZGUKCShTRV9SZXN0cmljdGlvbl9WaW9sYXRpb24pOiBSZW1vdmVkLCBub3QgdXNlZAoKMjAwNi0xMC0zMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctc29jdGhpLXZ4d29ya3MuYWRiIChDX0dldGhvc3RieW5hbWUpOiBGaXggd3JvbmcgdGVzdCBmb3IgcmV0dXJuZWQKCWVycm9yIHN0YXR1cy4KCjIwMDYtMTAtMzEgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIGEtY2FsZW5kLXZtcy5hZGIgKExlYXBfU2VjX09wcyk6IFRlbXAgYm9keSBmb3IgcGFja2FnZSBpbiBwcml2YXRlCglwYXJ0IG9mIEFkYS5DYWxlbmRhcjogYWxsIHN1YnByb2dyYW0gcmFpc2UgVW5pbXBsZW1lbnRlZC4KCShTcGxpdF9XX09mZnNldCk6IFRlbXAgZnVuY3Rpb24gYm9keSwgcmFpc2luZyBVbmltcGxlbWVudGVkCgoJKiBhLWNhbGVuZC5hZHMsIGEtY2FsZW5kLXZtcy5hZHM6IAoJQWRkIGltcG9ydGVkIHZhcmlhYmxlIEludmFsaWRfVFpfT2Zmc2V0IHVzZWQgdG8gZGVzaWduYXRlIHRhcmdldHMgdW5hYmxlCgl0byBzdXBwb3J0IHRpbWUgem9uZXMuCgkoVW5pbXBsZW1lbnRlZCk6IFRlbXBvcmFyeSBmdW5jdGlvbiByYWlzZWQgYnkgdGhlIGJvZHkgb2YgbmV3CglzdWJwcm9ncmFtcyBiZWxvdy4KCShMZWFwX1NlY19PcHMpOiBOZXcgcGFja2FnZSBpbiB0aGUgcHJpdmF0ZSBwYXJ0IG9mIEFkYS5DYWxlbmRhci4gVGhpcwoJdW5pdCBwcm92aWRlcyBoYW5kbGluZyBvZiBsZWFwIHNlY29uZHMgYW5kIGlzIHVzZWQgYnkgdGhlIG5ldyBBZGEgMjAwNQoJcGFja2FnZXMgQWRhLkNhbGVuZGFyLkFyaXRobWV0aWMgYW5kIEFkYS5DYWxlbmRhci5Gb3JtYXR0aW5nLgoJKFNwbGl0X1dfT2Zmc2V0KTogSWRlbnRpY2FsIHNwZWMgdG8gdGhhdCBvZiBBZGEuQ2FsZW5kYXIuU3BsaXQuIFRoaXMKCXZlcnNpb24gcmV0dXJucyBhbiBleHRyYSB2YWx1ZSB3aGljaCBpcyB0aGUgb2Zmc2V0IHRvIFVUQy4KCgkqIGEtY2FsZW5kLmFkYiAoU3BsaXRfV19PZmZzZXQpOiBBZGQgY2FsbCB0byBsb2NhbHRpbWVfdHpvZmYuCgkoTGVhcF9TZWNfT3BzKTogTmV3IGJvZHkgZm9yIHBhY2thZ2UgaW4gcHJpdmF0ZSBwYXJ0IG9mIEFkYS5DYWxlbmRhci4KCShTcGxpdF9XX09mZnNldCk6IE5ldyBmdW5jdGlvbiBib2R5LgoJKFRpbWVfT2YpOiBXaGVuIGEgZGF0ZSBpcyBjbG9zZSB0byBVTklYIGVwb2NoLCBjb21wdXRlIHRoZSB0aW1lIGZvcgoJdGhhdCBkYXRlIHBsdXMgb25lIGRheSAodGhhdCBhbW91bnQgaXMgbGF0ZXIgc3Vic3RyYWN0ZWQgYWZ0ZXIKCWV4ZWN1dGluZyBta3RpbWUpIHNvIHRoZXJlIGFyZSBubyBwcm9ibGVtcyB3aXRoIHRpbWUgem9uZSBhZGp1c3RtZW50cy4KCgkqIGEtY2FsZW5kLW1pbmd3LmFkYjogUmVtb3ZlIFdpbmRvd3Mgc3BlY2lmaWMgdmVyc2lvbiBubyBsb25nZXIgbmVlZGVkLgoKCSogYS1jYWxhcmkuYWRzLCBhLWNhbGFyaS5hZGIsIGEtY2FsZm9yLmFkcywgYS1jYWxmb3IuYWRiLAoJYS1jYXRpem8uYWRzLCBhLWNhdGl6by5hZGI6IE5ldyBmaWxlcy4KCgkqIGltcHVuaXQuYWRiOiBBZGQgbmV3IEFkYSAyMDA1IGVudHJpZXMKCgkqIHN5c2RlcC5jOiBBZGQgZXh0ZXJuYWwgdmFyaWFibGUgX19nbmF0X2ludmFsaWRfdHpfb2Zmc2V0LgoJUmVuYW1lIGFsbCBvY2N1cmVuY2VzIG9mICJfX2duYXRfbG9jYWx0aW1lX3IiIHRvCgkiX19nbmF0X2xvY2FsdGltZV90em9mZiIuCgkoX19nbmF0X2xvY2FsdGltZV90em9mZiBmb3IgV2luZG93cyk6IEFkZCBsb2dpYyB0byByZXRyaWV2ZSB0aGUgdGltZQoJem9uZSBkYXRhIGFuZCBjYWxjdWxhdGUgdGhlIEdNVCBvZmZzZXQuCgkoX19nbmF0X2xvY2FsdGltZV90em9mZiBmb3IgRGFyd2luLCBGcmVlIEJTRCwgTGludXgsIEx5bnggYW5kIFRydTY0KToKCVVzZSB0aGUgZmllbGQgInRtX2dtdG9mZiIgdG8gZXh0cmFjdCB0aGUgR01UIG9mZnNldC4KCShfX2duYXRfbG9jYWx0aW1lX3R6b2ZmIGZvciBBSVgsIEhQVVgsIFNHSSBJcml4IGFuZCBTdW4gU29sYXJpcyk6IFVzZQoJdGhlIGV4dGVybmFsIHZhcmlhYmxlICJ0aW1lem9uZSIgdG8gY2FsY3VsYXRlIHRoZSBHTVQgb2Zmc2V0LgoKMjAwNi0xMC0zMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoJICAgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLW9zaW50ZS1wb3NpeC5hZGIsIHMtb3NpbnRlLWxpbnV4LmFkcywgcy1vc2ludGUtZnJlZWJzZC5hZGIsIAoJcy1vc2ludGUtZnJlZWJzZC5hZHMsIHMtb3NpbnRlLXNvbGFyaXMtcG9zaXguYWRzLCBzLW9zaW50ZS1ocHV4LmFkcywgCglzLW9zaW50ZS1kYXJ3aW4uYWRiLCBzLW9zaW50ZS1kYXJ3aW4uYWRzLCBzLW9zaW50ZS1seW54b3MtMy5hZHMsCglzLW9zaW50ZS1seW54b3MtMy5hZGIgKFRvX1RhcmdldF9Qcmlvcml0eSk6IE5ldyBmdW5jdGlvbiBtYXBzIGZyb20KCVN5c3RlbS5BbnlfUHJpb3JpdHkgdG8gYSBQT1NJWCBwcmlvcml0eSBvbiB0aGUgdGFyZ2V0LgoKCSogc3lzdGVtLWxpbnV4LWlhNjQuYWRzOiAKCUV4dGVuZCByYW5nZSBvZiBQcmlvcml0eSB0eXBlcyBvbiBMaW51eCB0byB1c2UgdGhlIHdob2xlIHJhbmdlIG1hZGUKCWF2YWlsYWJsZSBieSB0aGUgc3lzdGVtLgoKCSogcy1vc2ludGUtYWl4LmFkYiwgcy1vc2ludGUtYWl4LmFkcyAoVG9fVGFyZ2V0X1ByaW9yaXR5KTogTmV3CglmdW5jdGlvbiBtYXBzIGZyb20gU3lzdGVtLkFueV9Qcmlvcml0eSB0byBhIFBPU0lYIHByaW9yaXR5IG9uIHRoZQoJdGFyZ2V0LgoJKFBUSFJFQURfUFJJT19QUk9URUNUKTogU2V0IHJlYWwgdmFsdWUuCgkoUFRIUkVBRF9QUklPX0lOSEVSSVQpOiBOb3cgYSBmdW5jdGlvbi4KCShTSUdDUFVGQUlMKTogTmV3IHNpZ25hbC4KCShSZXNlcnZlZCk6IEFkZCBTSUdBTFJNMSwgU0lHV0FJVElORywgU0lHQ1BVRkFJTCwgc2luY2UgdGhlc2Ugc2lnbmFscwoJYXJlIGRvY3VtZW50ZWQgYXMgcmVzZXJ2ZWQgYnkgdGhlIE9TLgoKCSogc3lzdGVtLWFpeC5hZHM6IFVzZSB0aGUgZnVsbCByYW5nZSBvZiBwcmlvcml0aWVzIHByb3ZpZGVkIGJ5IHRoZQoJc3lzdGVtIG9uIEFJWC4KCgkqIHMtdGFwcm9wLXBvc2l4LmFkYjogQ2FsbCBuZXcgZnVuY3Rpb24gVG9fVGFyZ2V0X1ByaW9yaXR5LgoJKFNldF9Qcmlvcml0eSk6IFRha2UgaW50byBhY2NvdW50IFRhc2tfRGlzcGF0Y2hpbmdfUG9saWN5IGFuZAoJUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcgcHJhZ21hcyB3aGVuIGRldGVybWluaW5nIGlmIFJvdW5kIFJvYmluCgltdXN0IGJlIHVzZWQgZm9yIHNjaGVkdWxpbmcgdGhlIHRhc2suCgoJKiBzeXN0ZW0tbGludXgteDg2XzY0LmFkcywgc3lzdGVtLWxpbnV4LXg4Ni5hZHMsIAoJc3lzdGVtLWxpbnV4LXBwYy5hZHM6IEV4dGVuZCByYW5nZSBvZiBQcmlvcml0eSB0eXBlcyBvbiBMaW51eCB0byB1c2UKCXRoZSB3aG9sZSByYW5nZSBtYWRlIGF2YWlsYWJsZSBieSB0aGUgc3lzdGVtLgoKCSogcy10YXByb3Atdm1zLmFkYiwgcy10YXByb3AtbWluZ3cuYWRiLCBzLXRhcHJvcC1pcml4LmFkYiwgCglzLXRhcHJvcC10cnU2NC5hZGIsIHMtdGFwcm9wLWxpbnV4LmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLCAKCXMtdGFwcm9wLWx5bnhvcy5hZGIgKEZpbmFsaXplX1RDQik6IGludmFsaWRhdGUgdGhlIHN0YWNrLWNoZWNrIGNhY2hlCgl3aGVuIGRlYWxsb2NhdGluZyB0aGUgVENCIGluIG9yZGVyIHRvIGF2b2lkIHBvdGVudGlhbCByZWZlcmVuY2VzIHRvCglkZWFsbG9jYXRlZCBkYXRhLgoJKFNldF9Qcmlvcml0eSk6IFRha2UgaW50byBhY2NvdW50IFRhc2tfRGlzcGF0Y2hpbmdfUG9saWN5IGFuZAoJUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcgcHJhZ21hcyB3aGVuIGRldGVybWluaW5nIGlmIFJvdW5kIFJvYmluCglvciBGSUZPIHdpdGhpbiBwcmlvcml0aWVzIG11c3QgYmUgdXNlZCBmb3Igc2NoZWR1bGluZyB0aGUgdGFzay4KCgkqIHMtdGFwcm9wLXZ4d29ya3MuYWRiIChFbnRlcl9UYXNrKTogU3RvcmUgdGhlIHVzZXItbGV2ZWwgdGFzayBpZCBpbgoJdGhlIFRocmVhZCBmaWVsZCAodG8gYmUgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBydW4tdGltZSBzeXN0ZW0pIGFuZCB0aGUKCWtlcm5lbC1sZXZlbCB0YXNrIGlkIGluIHRoZSBMV1AgZmllbGQgKHRvIGJlIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKS4KCShDcmVhdGVfVGFzayk6IFJlb3JnYW5pemUgdG8gdW5pZnkgdGhlIGNhbGxzIHRvIHRhc2tTcGF3biBpbnRvIGEgc2luZ2xlCglpbnN0YW5jZSwgYW5kIHByb3BhZ2F0ZSB0aGUgY3VycmVudCB0YXNrIG9wdGlvbnMgdG8gdGhlIHNwYXduZWQgdGFzay4KCShTZXRfUHJpb3JpdHkpOiBUYWtlIGludG8gYWNjb3VudCBQcmlvcml0eV9TcGVjaWZpY19EaXNwYXRjaGluZyBwcmFnbWFzLgoJKEluaXRpYWxpemUpOiBTZXQgUm91bmQgUm9iaW4gZGlzcGF0Y2hpbmcgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBwcmFnbWEKCWlzIGluIGVmZmVjdC4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc3lzdGVtLXZtc182NC5hZHMsIHN5c3RlbS1kYXJ3aW4tcHBjLmFkcywgc3lzdGVtLXZ4d29ya3MteDg2LmFkcywgCglzeXN0ZW0tbGludXgtaHBwYS5hZHMsIHN5c3RlbS1ocHV4LWlhNjQuYWRzLCAKCXN5c3RlbS1seW54b3MtcHBjLmFkcywgc3lzdGVtLWx5bnhvcy14ODYuYWRzLCBzeXN0ZW0tdHJ1NjQuYWRzLCAKCXN5c3RlbS12eHdvcmtzLXNwYXJjdjkuYWRzLCBzeXN0ZW0tc29sYXJpcy14ODYuYWRzLCAKCXN5c3RlbS1pcml4LW8zMi5hZHMsIHN5c3RlbS1pcml4LW4zMi5hZHMsIHN5c3RlbS1ocHV4LmFkcywgCglzeXN0ZW0tdnh3b3Jrcy1tNjhrLmFkcywgc3lzdGVtLXZ4d29ya3MtbWlwcy5hZHMsIHN5c3RlbS1pbnRlcml4LmFkcywgCglzeXN0ZW0tc29sYXJpcy1zcGFyYy5hZHMsIHN5c3RlbS1zb2xhcmlzLXNwYXJjdjkuYWRzLCBzeXN0ZW0tdm1zLmFkcywgCglzeXN0ZW0tbWluZ3cuYWRzLCBzeXN0ZW0tdm1zLXpjeC5hZHMsIHN5c3RlbS12eHdvcmtzLXBwYy5hZHMsIAoJc3lzdGVtLXZ4d29ya3MtYWxwaGEuYWRzLCBzeXN0ZW0uYWRzOiBBZGQgcHJhZ21hIFdhcm5pbmdzKE9mZiwKCURlZmF1bHRfQml0X09yZGVyKSB0byBraWxsIGNvbnN0YW50IGNvbmRpdGlvbiB3YXJuaW5ncyBmb3IgcmVmZXJlbmNlcwoJdG8gdGhpcyBzd2l0Y2guCgoyMDA2LTEwLTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogbWxpYi10Z3QtbHlueG9zLmFkYiwgbWxpYi10Z3QtbWluZ3cuYWRiLCBtbGliLXRndC10cnU2NC5hZGIsCgltbGliLXRndC1haXguYWRiLCBtbGliLXRndC1pcml4LmFkYiwgbWxpYi10Z3QtaHB1eC5hZGIsCgltbGliLXRndC1saW51eC5hZGIsIG1saWItdGd0LXNvbGFyaXMuYWRiOiBVc2UgQXBwZW5kX1RvLCBpbnN0ZWFkIG9mCglFeHRfVG8sIHdoZW4gYnVpbGRpbmcgdGhlIGxpYnJhcnkgZmlsZSBuYW1lCgoJKiBtbGliLXRndC12eHdvcmtzLmFkYjogZGl0dG8uCgkoR2V0X1RhcmdldF9TdWZmaXgpOiBBZGQgc3VwcG9ydCBmb3IgeDg2IHRhcmdldHMuCgoJKiBtbGliLWZpbC5hZHMsIG1saWItZmlsLmFkYjogKEFwcGVuZF9Ubyk6IE5ldyBmdW5jdGlvbgoKCSogbWxpYi10Z3QtZGFyd2luLmFkYjogCglVc2UgQXBwZW5kX1RvLCBpbnN0ZWFkIG9mIEV4dF9Ubywgd2hlbiBidWlsZGluZyB0aGUgbGlicmFyeSBmaWxlIG5hbWUKCShGbGF0X05hbWVzcGFjZSk6IE5ldyBnbG9iYWwgdmFyaWFibGUuCgkoTm9fU2hhcmVkX0xpYmdjY19Td2l0Y2gpOiBSZW5hbWUgdG8gTm9fU2hhcmVkX0xpYmdjY19PcHRpb25zLgoJKFNoYXJlZF9MaWJnY2NfU3dpdGNoKTogUmVuYW1lIHRvIFdpdGhfU2hhcmVkX0xpYmdjY19PcHRpb25zLgoJKExpbmtfU2hhcmVkX0xpYmdjYyk6IERlbGV0ZS4KCShCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBBZGp1c3QgZm9yIGFib3ZlIGNoYW5nZXMuCglVc2UgT3B0IHBhY2thZ2UuCgkoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogUGFzcyAtc2hhcmVkLWxpYmdjYyBpZiBHQ0MgNCBvciBsYXRlci4KCjIwMDYtMTAtMzEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvcC1zb2xhcmlzLmFkYjogKFRpbWVfU2xpY2VfVmFsKTogQ2hhbmdlIHR5cGUgdG8gSW50ZWdlci4KCShJbml0aWFsaXplKTogQWRkIHR5cGUgY29udmVyc2lvbnMgcmVxdWlyZWQgYnkgYWJvdmUgY2hhbmdlLgoKMjAwNi0xMC0zMSAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLXZ4d29ya3MuYWRzLCBzLW9zaW50ZS12eHdvcmtzLmFkYjogCgkoZ2V0cGlkKTogTmV3IGJvZHkgZm9yIHRoaXMgZnVuY3Rpb24gdGhhdCB1c2VzIHRoZSB1bmRlcmx5aW5nIHRhc2tJZFNlbGYKCWZ1bmN0aW9uIGZvciBWeFdvcmtzIDUgYW5kIFZ4V29ya3MgNiBpbiBrZXJuZWwgbW9kZS4KCSh1bnNpZ25lZF9pbnQpOiBOZXcgdHlwZSwgbW9kdWxhciB0byBhbGxvdyBsb2dpY2FsIGJpdCBvcGVyYXRpb25zLgoJKHRhc2tPcHRpb25zR2V0KTogTmV3IGltcG9ydGVkIGZ1bmN0aW9uLgoKCSogcy10YXNwcmktdnh3b3Jrcy5hZHMgKFByaXZhdGVfRGF0YSk6IENoYW5nZSB0aGUgdHlwZSBmb3IgdGhlIExXUAoJZmllbGQgdG8gYmUgY29tcGxpYW50IHdpdGggdGhlIHR5cGUgdXNlZCBieSB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpbmcKCXN5c3RlbSBwcmltaXRpdmUuCgoyMDA2LTEwLTMxICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5jIChfX2duYXRfZ2V0X2xpYnJhcmllc19mcm9tX3JlZ2lzdHJ5KTogQ2FsbCBleHBsaWNpdGx5IHRoZQoJQVNDSUkgdmVyc2lvbiBvZiB0aGUgcmVnaXN0cnkgQVBJLiBUaGlzIGlzIG5lZWRlZCBhcyB0aGUgR05BVCBydW50aW1lCglpcyBub3cgVU5JQ09ERSBieSBkZWZhdWx0LgoJSW5jbHVkZSB2ZXJzaW9uLmguCgkoZ2V0X2djY192ZXJzaW9uKTogRG8gbm90IGhhcmRjb2RlIHRoZSByZXR1cm4gdmFsdWUuCgkoX19nbmF0X2ZpbGVfdGltZV9uYW1lKTogT24gV2luZG93cyBwcm9wZXJseSBzZXQgdGhlIGRlZmF1bHQgcmV0dXJuZWQKCXZhbHVlIHRvIC0xIHdoaWNoIGNvcnJlc3BvbmRzIHRvIEludmFsaWRfVGltZS4KCShfX2duYXRfZm9wZW4pOiBOZXcgcm91dGluZS4gQSBzaW1wbGUgd3JhcHBlciBvbiBhbGwgcGxhdGVmb3JtcwoJIGV4Y2VwdCBvbiBXaW5kb3dzIHdoZXJlIGl0IGRvZXMgY29udmVyc2lvbiBmb3IgdW5pY29kZSBzdXBwb3J0LgoJKF9fZ25hdF9mcmVvcGVuKTogSWRlbS4KCShfX2duYXRfbG9jYXRlX2V4ZWNfb25fcGF0aCk6IElmIGVudmlyb25tZW50IHZhcmlhYmxlIFBBVEggZG9lcyBub3QKCWV4aXN0LCByZXR1cm4gYSBOVUxMIHBvaW50ZXIKCgkqIGFkYWludC5oOiAoX19nbmF0X2ZvcGVuKTogRGVjbGFyZS4KCShfX2duYXRfZnJlb3Blbik6IExpa2V3aXNlLgoKCSogbWluZ3czMi5oIChfdGZyZW9wZW4pOiBEZWZpbmUgdGhpcyBtYWNybyBoZXJlIGZvciBvbGRlciBNaW5nVwoJdmVyc2lvbi4KCUFjdGl2YXRlIHRoZSB1bmljb2RlIHN1cHBvcnQgb24gcGxhdGZvcm1zIHVzaW5nIGEgTWluZ1cgcnVudGltZQoJdmVyc2lvbiAzLjkgb3IgbmV3ZXIuCgoJKiBzLWNydGwuYWRzIChmb3Blbik6IElzIG5vdyBhbiBpbXBvcnQgdG8gdGhlIHdyYXBwZXIgX19nbmF0X2ZyZW9wZW4uCglUaGlzIGlzIG5lZWRlZCBmb3IgcHJvcGVyIHVuaWNvZGUgc3VwcG9ydCBvbiBXaW5kb3dzLgoJKGZyZW9wZW4pOiBJZGVtLgoKMjAwNi0xMC0zMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSAgICBOaWNvbGFzIFNldHRvbiAgPHNldHRvbkBhZGFjb3JlLmNvbT4KCSAgICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGdpZ2kuaDogKHRyZWVfY29kZV9mb3JfcmVjb3JkX3R5cGUpOiBEZWNsYXJlLgoJKGFkZF9nbG9iYWxfcmVuYW1pbmdfcG9pbnRlcik6IFJlbmFtZSB0byByZWNvcmRfZ2xvYmFsX3JlbmFtaW5nX3BvaW50ZXIuCgkoZ2V0X2dsb2JhbF9yZW5hbWluZ19wb2ludGVycyk6IFJlbmFtZSB0bwoJaW52YWxpZGF0ZV9nbG9iYWxfcmVuYW1pbmdfcG9pbnRlcnMuCgkoc3RhdGljX2N0b3JzKTogRGVsZXRlLgoJKHN0YXRpY19kdG9ycyk6IExpa2V3aXNlLgoJKGduYXRfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IERlY2xhcmUuCgkoY3JlYXRlX3Zhcl9kZWNsKTogQWRqdXN0IGRlc2NyaXB0aXZlIGNvbW1lbnQgdG8gaW5kaWNhdGUgdGhhdCB0aGUKCXN1YnByb2dyYW0gbWF5IHJldHVybiBhIENPTlNUX0RFQ0wgbm9kZS4KCShjcmVhdGVfdHJ1ZV92YXJfZGVjbCk6IERlY2xhcmUgbmV3IGZ1bmN0aW9uLCBzaW1pbGFyIHRvCgljcmVhdGVfdmFyX2RlY2wgYnV0IGZvcmNpbmcgdGhlIGNyZWF0aW9uIG9mIGEgVkFSX0RFQ0wgbm9kZS4KCShnZXRfZ2xvYmFsX3JlbmFtaW5nX3BvaW50ZXJzKTogRGVjbGFyZS4KCShhZGRfZ2xvYmFsX3JlbmFtaW5nX3BvaW50ZXIpOiBMaWtld2lzZS4KCgkqIGFkYS10cmVlLmggKERFQ0xfUkVBRE9OTFlfT05DRV9FTEFCKTogTmV3IG1hY3JvLgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxjYXNlIEVfRnVuY3Rpb24+OiBEb24ndCBjb3B5IHRoZSB0eXBlCgl0cmVlIGJlZm9yZSBzZXR0aW5nIFRSRUVfQUREUkVTU0FCTEUgZm9yIGJ5LXJlZmVyZW5jZSByZXR1cm4gbWVjaGFuaXNtCglwcm9jZXNzaW5nLgoJKGduYXRfdG9fZ251X2VudGl0eSk6IFJlbW92ZSBGcm9tX1dpdGhfVHlwZSBmcm9tIGNvbXB1dGF0aW9uIGZvcgoJaW1wb3J0ZWRfcC4KCTxFX0FjY2Vzc19UeXBlPjogVXNlIHRoZSBOb25fTGltaXRlZF9WaWV3IGFzIHRoZSBmdWxsIHZpZXcgb2YgdGhlCglkZXNpZ25hdGVkIHR5cGUgaWYgdGhlIHBvaW50ZXIgY29tZXMgZnJvbSBhIGxpbWl0ZWRfd2l0aCBjbGF1c2UuICBNYWtlCglpbmNvbXBsZXRlIGRlc2lnbmF0ZWQgdHlwZSBpZiBpdCBpcyBpbiB0aGUgbWFpbiB1bml0IGFuZCBoYXMgYSBmcmVlemUKCW5vZGUuCgk8RV9JbmNvbXBsZXRlX1R5cGU+OiBSZXdvcmsgdG8gdHJlYXQgTm9uX0xpbWl0ZWRfVmlldywgRnVsbF9WaWV3LCBhbmQKCVVuZGVybHlpbmdfRnVsbF9WaWV3IHNpbWlsYXJseS4gIFJldHVybiBlYXJsaWVyIGlmIHRoZSBmdWxsIHZpZXcgYWxyZWFkeQoJaGFzIGFuIGFzc29jaWF0ZWQgdHJlZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1JlY29yZF9UeXBlPjogUmVzdG9yZSBjb21tZW50LgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfUmVjb3JkX1R5cGU+OiBEbyBub3QgdXNlIGEgZHVtbXkgdHlwZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogU2V0IFRZUEVfUkVGX0NBTl9BTElBU19BTEwgb24gdGhlCglyZWZlcmVuY2UgdHlwZSBidWlsdCBmb3Igb2JqZWN0cyB3aXRoIGFuIGFkZHJlc3MgY2xhdXNlLgoJVXNlIGNyZWF0ZV90cnVlX3Zhcl9kZWNsIHdpdGggY29uc3RfZmxhZyBzZXQgZm9yCglERUNMX0NPTlNUX0NPUlJFU1BPTkRJTkdfVkFScywgZW5zdXJpbmcgYSBWQVJfREVDTCBpcyBjcmVhdGVkIHdpdGgKCVRSRUVfUkVBRE9OTFkgc2V0LgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0VudW1lcmF0aW9uX1R5cGUpOiBTZXQgVFlQRV9OQU1FCglmb3IgQ2hhcmFjdGVyIGFuZCBXaWRlX0NoYXJhY3RlciB0eXBlcy4gVGhpcyBpbmZvIGlzIHJlYWQgYnkgdGhlCglkd2FyZi0yIHdyaXRlciwgYW5kIGlzIG5lZWRlZCB0byBiZSBhYmxlIHRvIHVzZSB0aGUgY29tbWFuZCAicHR5cGUKCWNoYXJhY3RlciIgaW4gdGhlIGRlYnVnZ2VyLgoJKGduYXRfdG9fZ251X2VudGl0eSk6IFdoZW4gZ2VuZXJhdGluZyBhIHR5cGUgcmVwcmVzZW50aW5nCglhIENoYXJhY3RlciBvciBXaWRlX0NoYXJhY3RlciB0eXBlLCBzZXQgdGhlIGZsYWcgVFlQRV9TVFJJTkdfRkxBRywKCXNvIHRoYXQgZGVidWcgd3JpdGVycyBjYW4gZGlzdGluZ3Vpc2ggaXQgZnJvbSBvcmRpbmFyeSBpbnRlZ2Vycy4KCShlbGFib3JhdGVfZXhwcmVzc2lvbl8xKTogVGVzdCB0aGUgREVDTF9SRUFET05MWV9PTkNFX0VMQUIgZmxhZyBpbgoJYWRkaXRpb24gdG8gVFJFRV9SRUFET05MWSB0byBhc3NlcnQgdGhlIGNvbnN0YW50bmVzcyBvZiB2YXJpYWJsZXMgZm9yCgllbGFib3JhdGlvbiBwdXJwb3Nlcy4KCShnbmF0X3RvX2dudV9lbnRpdHksIHN1YnByb2dyYW0gY2FzZXMpOiBDaGFuZ2UgbG9vcHMgb24gZm9ybWFsCglwYXJhbWV0ZXJzIHRvIGNhbGwgbmV3IEVpbmZvIGZ1bmN0aW9uIEZpcnN0X0Zvcm1hbF9XaXRoX0V4dHJhcy4KCShnbmF0X3RvX2dudV9lbnRpdHkpOiBJbiB0eXBlX2Fubm90YXRlIG1vZGUsIHJlcGxhY2UgYSBkaXNjcmltaW5hbnQgb2YgYQoJcHJvdGVjdGVkIHR5cGUgd2l0aCBpdHMgY29ycmVzcG9uZGluZyBkaXNjcmltaW5hbnQsIHRvIG9idGFpbiBhIHVzYWJsZQoJZGVjbGFyYXRpb24KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX0FjY2Vzc19Qcm90ZWN0ZWRfU3VicHJvZ3JhbV9UeXBlPjogQmUgcHJlcGFyZWQKCWZvciBhIG11bHRpcGxlIGVsYWJvcmF0aW9uIG9mIHRoZSAiZXF1aXZhbGVudCIgdHlwZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpOiBBZGp1c3QgZm9yIHJlbmFtaW5nIG9mIGFkZF9nbG9iYWxfcmVuYW1pbmdfcG9pbnRlcgoJaW50byByZWNvcmRfZ2xvYmFsX3JlbmFtaW5nX3BvaW50ZXIuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9BcnJheV9UeXBlPjogRG8gbm90IGZvcmNlCglUWVBFX05PTkFMSUFTRURfQ09NUE9ORU5UIHRvIDAgaWYgdGhlIGVsZW1lbnQgdHlwZSBpcyBhbiBhZ2dyZWdhdGUuCgk8RV9BcnJheV9TdWJ0eXBlPjogTGlrZXdpc2UuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9JbmNvbXBsZXRlX1N1YnR5cGU+OiBBZGQgc3VwcG9ydCBmb3IgcmVndWxhcgoJaW5jb21wbGV0ZSBzdWJ0eXBlcyBhbmQgaW5jb21wbGV0ZSBzdWJ0eXBlcyBvZiBpbmNvbXBsZXRlIHR5cGVzIHZpc2libGUKCXRocm91Z2ggYSBsaW1pdGVkIHdpdGggY2xhdXNlLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfQXJyYXlfU3VidHlwZT46IFRha2UgaW50byBhY2NvdW50IHRoZSBib3VuZHMgb2YKCXRoZSBiYXNlIGluZGV4IHR5cGUgZm9yIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGFycmF5IG9ubHkgaWYgdGhleSBhcmUKCWNvbnN0YW50LgoJKGduYXRfdG9fZ251X2VudGl0eSwgcmVuYW1pbmcgb2JqZWN0IGNhc2UpOiBEbyBub3Qgd3JhcCB1cCB0aGUKCWV4cHJlc3Npb24gaW50byBhIFNBVkVfRVhQUiBpZiBzdGFiaWxpemF0aW9uIGZhaWxlZC4KCgkqIHV0aWxzLmMgKGNyZWF0ZV9zdWJwcm9nX2RlY2wpOiBUdXJuIFRSRUVfQUREUkVTU0FCTEUgb24gdGhlIHR5cGUgb2YKCWEgcmVzdWx0IGRlY2wgaW50byBERUNMX0JZX1JFRkVSRU5DRSBvbiB0aGlzIGRlY2wsIG5vdyB3aGF0IGlzIGV4cGVjdGVkCglieSBsb3dlciBsZXZlbCBjb21waWxhdGlvbiBwYXNzZXMuCgkoZ25hdF9nZW5lcmljaXplKTogTmV3IGZ1bmN0aW9uLCBsb3dlcmluZyBhIGZ1bmN0aW9uIGJvZHkgdG8gR0VORVJJQy4KCVR1cm4gdGhlIHR5cGUgb2YgUkVTVUxUX0RFQ0wgaW50byBhIHJlYWwgcmVmZXJlbmNlIHR5cGUgaWYgdGhlIGRlY2wKCWhhcyBiZWVuIG1hcmtlZCBERUNMX0JZX1JFRkVSRU5DRSwgYW5kIGFkanVzdCByZWZlcmVuY2VzIHRvIHRoZSBsYXR0ZXIKCWFjY29yZGluZ2x5LgoJKGduYXRfZ2VuZXJpY2l6ZV9yKTogTmV3IGZ1bmN0aW9uLiBUcmVlIHdhbGtpbmcgY2FsbGJhY2sgZm9yCglnbmF0X2dlbmVyaWNpemUuCgkoY29udmVydF9mcm9tX3JlZmVyZW5jZSwgaXNfYnlyZWZfcmVzdWx0KTogTmV3IGZ1bmN0aW9ucy4gSGVscGVycyBmb3IKCWduYXRfZ2VuZXJpY2l6ZV9yLgoJKGNyZWF0ZV90eXBlX2RlY2wpOiBDYWxsIGduYXRfcHVzaGRlY2wgYmVmb3JlIGNhbGxpbmcKCXJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbiwgdG8gbWFrZSBzdXJlIHRoYXQgZmllbGQgVFlQRV9OQU1FIG9mCgl0eXBlX2RlY2wgaXMgcHJvcGVybHkgc2V0IGJlZm9yZSBjYWxsaW5nIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbiB3cml0ZXJzLgoJKHdyaXRlX3JlY29yZF90eXBlX2RlYnVnX2luZm8pOiBUaGUgaGV1cmlzdGljcyB3aGljaCBjb21wdXRlIHRoZQoJYWxpZ25tZW50IG9mIGEgZmllbGQgaW4gYSB2YXJpYW50IHJlY29yZCBtaWdodCBub3QgYmUgYWNjdXJhdGUuIEFkZCBhCglzYWZldHkgdGVzdCB0byBtYWtlIHN1cmUgbm8gYWxpZ25tZW50IGlzIHNldCB0byBhIHNtYWxsZXIgdmFsdWUgdGhhbgoJdGhlIGFsaWdubWVudCBvZiB0aGUgZmllbGQgdHlwZS4KCShtYWtlX2R1bW15X3R5cGUpOiBVc2UgdGhlIE5vbl9MaW1pdGVkX1ZpZXcgYXMgdGhlIHVuZGVybHlpbmcgdHlwZSBpZgoJdGhlIHR5cGUgY29tZXMgZnJvbSBhIGxpbWl0ZWRfd2l0aCBjbGF1c2UuIERvIG5vdCBsb29wIG9uIHRoZSBmdWxsIHZpZXcuCgkoR0VUX0dOVV9UUkVFLCBTRVRfR05VX1RSRUUsIFBSRVNFTlRfR05VX1RSRUUpOiBOZXcgbWFjcm9zLgoJKGR1bW15X25vZGVfdGFibGUpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLCBtb3ZlZCBmcm9tIGRlY2wuYy4KCShHRVRfRFVNTVlfTk9ERSwgU0VUX0RVTU1ZX05PREUsIFBSRVNFTlRfRFVNTVlfTk9ERSk6IE5ldyBtYWNyb3MuCgkoc2F2ZV9nbnVfdHJlZSk6IFVzZSBhYm92ZSBtYWNyb3MuCgkoZ2V0X2dudV90cmVlKTogTGlrZXdpc2UuCgkocHJlc2VudF9nbnVfdHJlZSk6IExpa2V3aXNlLgoJKGluaXRfZHVtbXlfdHlwZSk6IE5ldyBmdW5jdGlvbiwgbW92ZWQgZnJvbSBkZWNsLmMuIFVzZSBhYm92ZSBtYWNyb3MuCgkobWFrZV9kdW1teV90eXBlKTogTGlrZXdpc2UuCgkodHJlZV9jb2RlX2Zvcl9yZWNvcmRfdHlwZSk6IE5ldyBmdW5jdGlvbiBleHRyYWN0ZWQgZnJvbSBtYWtlX2R1bW15X3R5cGUKCShpbml0X2dpZ2lfZGVjbHMpOiBTZXQgREVDTF9JU19NQUxMT0Mgb24gZ25hdF9tYWxsb2MuCgkoc3RhdGljX2N0b3JzKTogQ2hhbmdlIGl0IHRvIGEgdmVjdG9yLCBtYWtlIHN0YXRpYy4KCShzdGF0aWNfZHRvcnMpOiBMaWtld2lzZS4KCShlbmRfc3VicHJvZ19ib2R5KTogQWRqdXN0IGZvciBhYm92ZSBjaGFuZ2UuCgkoYnVpbGRfZ2xvYmFsX2NkdG9yKTogTW92ZWQgZnJvbSB0cmFucy5jLgoJKGduYXRfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IEVtaXQgZ2xvYmFsIGNvbnN0cnVjdG9yIGFuZAoJZGVzdHJ1Y3RvciwgYW5kIGNhbGwgY2dyYXBoX29wdGltaXplIGJlZm9yZSBlbWl0dGluZyBkZWJ1ZyBpbmZvIGZvcgoJZ2xvYmFsIGRlY2xhcmF0aW9ucy4KCShnbG9iYWxfZGVjbHMpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGduYXRfcHVzaGRlY2wpOiBTdG9yZSB0aGUgZ2xvYmFsIGRlY2xhcmF0aW9ucyBpbiBnbG9iYWxfZGVjbHMsIGZvcgoJbGF0ZXIgdXNlLgoJKGduYXRfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucyk6IEVtaXQgZGVidWcgaW5mb3JtYXRpb24gZm9yIGdsb2JhbAoJIGRlY2xhcmF0aW9ucy4KCShjcmVhdGVfdmFyX2RlY2xfMSk6IEZvcm1lciBjcmVhdGVfdmFyX2RlY2wsIHdpdGggYW4gZXh0cmEgYXJndW1lbnQgdG8KCSBzdGF0ZSB3aGV0aGVyIHRoZSBjcmVhdGlvbiBvZiBhIENPTlNUX0RFQ0wgaXMgYWxsb3dlZC4KCShjcmVhdGVfdmFyX2RlY2wpOiBCZWhhdmlvciB1bmNoYW5nZWQuIE5vdyBhIHdyYXBwZXIgYXJvdW5kCgljcmVhdGVfdmFyX2RlY2xfMSBhbGxvd2luZyBDT05TVF9ERUNMIGNyZWF0aW9uLgoJKGNyZWF0ZV90cnVlX3Zhcl9kZWNsKTogTmV3IGZ1bmN0aW9uLCBzaW1pbGFyIHRvIGNyZWF0ZV92YXJfZGVjbCBidXQKCWZvcmNpbmcgdGhlIGNyZWF0aW9uIG9mIGEgVkFSX0RFQ0wgbm9kZSAoQ09OU1RfREVDTCBub3QgYWxsb3dlZCkuCgkoY3JlYXRlX2ZpZWxkX2RlY2wpOiBEbyBub3QgYWx3YXlzIG1hcmsgdGhlIGZpZWxkIGFzIGFkZHJlc3NhYmxlCglpZiBpdHMgdHlwZSBpcyBhbiBhZ2dyZWdhdGUuCgkoZ2xvYmFsX3JlbmFtaW5nX3BvaW50ZXJzKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShhZGRfZ2xvYmFsX3JlbmFtaW5nX3BvaW50ZXIpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2dsb2JhbF9yZW5hbWluZ19wb2ludGVycyk6IExpa2V3aXNlLgoKCSogbWlzYy5jIChnbmF0X2R3YXJmX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoTEFOR19IT09LU19EV0FSRl9OQU1FKTogRGVmaW5lIHRvIGduYXRfZHdhcmZfbmFtZS4KCShnbmF0X3Bvc3Rfb3B0aW9ucyk6IEFkZCBjb21tZW50IGFib3V0IHN0cnVjdHVyYWwgYWxpYXMgYW5hbHlzaXMuCgkoZ25hdF9wYXJzZV9maWxlKTogRG8gbm90IGNhbGwgY2dyYXBoX29wdGltaXplIGhlcmUuCgkoTEFOR19IT09LU19XUklURV9HTE9CQUxTKTogRGVmaW5lIHRvIGduYXRfd3JpdGVfZ2xvYmFsX2RlY2xhcmF0aW9ucy4KCgkqIHRyYW5zLmMgKHByb2Nlc3NfZnJlZXplX2VudGl0eSk6IERvbid0IGFib3J0IGlmIHdlIGFscmVhZHkgaGF2ZSBhCglub24gZHVtbXkgR0NDIHRyZWUgZm9yIGEgQ29uY3VycmVudF9SZWNvcmRfVHlwZSwgYXMgaXQgbWlnaHQKCWxlZ2l0aW1hdGVseSBoYXZlIGJlZW4gZWxhYm9yYXRlZCB3aGlsZSBwcm9jZXNzaW5nIHRoZSBhc3NvY2lhdGVkCglDb25jdXJyZW50X1R5cGUgcHJpb3IgdG8gdGhpcyBleHBsaWNpdCBmcmVlemUgbm9kZS4KCShJZGVudGlmaWVyX3RvX2dudSk6IERvIG5vdCBtYWtlIGEgdmFyaWFibGUgcmVmZXJlbmNlZCBpbiBhIFNKTEoKCWV4Y2VwdGlvbiBoYW5kbGVyIHZvbGF0aWxlIGlmIGl0IGlzIG9mIHZhcmlhYmxlIHNpemUuCgkocHJvY2Vzc190eXBlKTogUmVtb3ZlIGJ5cGFzcyBmb3IgdHlwZXMgY29taW5nIGZyb20gYSBsaW1pdGVkX3dpdGgKCWNsYXVzZS4KCShjYWxsX3RvX2dudSk6IFdoZW4gcHJvY2Vzc2luZyB0aGUgY29weS1vdXQgb2YgYSBOX1R5cGVfQ29udmVyc2lvbiBHTkFUCglhY3R1YWwsIGNvbnZlcnQgdGhlIGNvcnJlc3BvbmRpbmcgZ251X2FjdHVhbCB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbgoJdHlwZSB3aGVuIG5lY2Vzc2FyeS4KCShhZGRfZGVjbF9leHByKTogU2V0IHRoZSBERUNMX1JFQURPTkxZX09OQ0VfRUxBQiBmbGFnIG9uIHZhcmlhYmxlcwoJb3JpZ2luYWxseSBUUkVFX1JFQURPTkxZIGJ1dCB3aG9zZSBlbGFib3JhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkCglzdGF0aWNhbGx5LgoJUGFydCBvZiBmaXggZm9yIEY1MDQtMDIxLgoJKHRyZWVfdHJhbnNmb3JtLCBzdWJwcm9ncmFtIGNhc2VzKTogQ2hhbmdlIGxvb3BzIG9uIGZvcm1hbCBwYXJhbWV0ZXJzIHRvCgljYWxsIG5ldyBFaW5mbyBmdW5jdGlvbiBGaXJzdF9Gb3JtYWxfV2l0aF9FeHRyYXMuCgkoZ25hdF90b19nbnUpIDxOX09wX1NoaWZ0X1JpZ2h0X0FyaXRobWV0aWM+OiBJZ25vcmUgY29uc3RhbnQgb3ZlcmZsb3cKCXN0ZW1taW5nIGZyb20gdHlwZSBjb252ZXJzaW9uIGZvciB0aGUgbGhzLgoJKEF0dHJpYnV0ZV90b19nbnUpIDxBdHRyX0FsaWdubWVudD46IEFsc28gZGl2aWRlIHRoZSBhbGlnbm1lbnQgYnkgdGhlCgludW1iZXIgb2YgYml0cyBwZXIgdW5pdCBmb3IgY29tcG9uZW50cyBvZiByZWNvcmRzLgoJKGduYXRfdG9fZ251KSA8Tl9Db2RlX1N0YXRlbWVudD46IE1hcmsgb3BlcmFuZHMgYWRkcmVzc2FibGUgaWYgbmVlZGVkLgoJKEhhbmRsZWRfU2VxdWVuY2VfT2ZfU3RhdGVtZW50c190b19nbnUpOiBSZWdpc3RlciB0aGUgY2xlYW51cCBhc3NvY2lhdGVkCgl3aXRoIEF0X0VuZF9Qcm9jIGFmdGVyIHRoZSBTSkxKIEVIIGNsZWFudXAuCgkoQ29tcGlsYXRpb25fVW5pdF90b19nbnUpOiBDYWxsIGVsYWJvcmF0ZV9hbGxfZW50aXRpZXMgb25seSBvbiB0aGUgbWFpbgoJY29tcGlsYXRpb24gdW5pdC4KCShlbGFib3JhdGVfYWxsX2VudGl0aWVzKTogRG8gbm90IHJldGVzdCB0eXBlX2Fubm90YXRlX29ubHkuCgkodHJlZV90cmFuc2Zvcm0pIDxOX0Fic3RyYWN0X1N1YnByb2dyYW1fRGVjbGFyYXRpb24+OiBQcm9jZXNzIHRoZQoJcmVzdWx0IHR5cGUgb2YgYW4gYWJzdHJhY3Qgc3VicHJvZ3JhbSwgd2hpY2ggbWF5IGJlIGFuIGl0eXBlIGFzc29jaWF0ZWQKCXdpdGggYW4gYW5vbnltb3VzIGFjY2VzcyByZXN1bHQgKHJlbGF0ZWQgdG8gQUktMzE4LTAyKS4KCShidWlsZF9nbG9iYWxfY2R0b3IpOiBNb3ZlIHRvIHV0aWxzLmMuCgkoQ2FzZV9TdGF0ZW1lbnRfdG9fZ251KTogQXZvaWQgYWRkaW5nIHRoZSBjaG9pY2Ugb2YgYSB3aGVuIHN0YXRlbWVudCBpZgoJdGhpcyBjaG9pY2UgaXMgbm90IGEgbnVsbCB0cmVlIG5vciBhbiBpbnRlZ2VyIGNvbnN0YW50LgoJKGdpZ2kpOiBSdW4gdW5zaGFyZV9zYXZlX2V4cHIgdmlhIHdhbGtfdHJlZV93aXRob3V0X2R1cGxpY2F0ZXMKCW9uIHRoZSBib2R5IG9mIGVsYWJvcmF0aW9uIHJvdXRpbmVzIGluc3RlYWQgb2YgbWFya191bnZpc2l0ZWQuCgkoYWRkX3N0bXQpOiBEbyBub3QgbWFyayB0aGUgdHJlZS4KCShhZGRfZGVjbF9leHByKTogVHdlYWsgY29tbWVudC4KCShtYXJrX3VudmlzaXRlZCk6IERlbGV0ZS4KCSh1bnNoYXJlX3NhdmVfZXhwcik6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoY2FsbF90b19nbnUpOiBJc3N1ZSBhbiBlcnJvciB3aGVuIG1ha2luZyBhIHRlbXBvcmFyeSBhcm91bmQgYQoJcHJvY2VkdXJlIGNhbGwgYmVjYXVzZSBvZiBub24tYWRkcmVzc2FibGUgYWN0dWFsIHBhcmFtZXRlciBpZiB0aGUKCXR5cGUgb2YgdGhlIGZvcm1hbCBpcyBieV9yZWZlcmVuY2UuCgkoQ29tcGlsYXRpb25fVW5pdF90b19nbnUpOiBJbnZhbGlkYXRlIHRoZSBnbG9iYWwgcmVuYW1pbmcgcG9pbnRlcnMKCWFmdGVyIGJ1aWxkaW5nIHRoZSBlbGFib3JhdGlvbiByb3V0aW5lLgoKMjAwNi0xMC0zMSAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogYS1maWxpY28uYWRiIChGaW5hbGl6ZShMaXN0X0NvbnRyb2xsZXIpKTogTWFyayB0aGUgZmluYWxpemF0aW9uIGxpc3QKCWFzIGZpbmFsaXphdGlvbi1zdGFydGVkLCBzbyB3ZSBjYW4gcmFpc2UgUHJvZ3JhbV9FcnJvciBvbiAnbmV3Jy4KCgkqIHMtZmluaW1wLmFkYjogUmFpc2UgUHJvZ3JhbV9FcnJvciBvbiAnbmV3JyBpZiBmaW5hbGl6YXRpb24gb2YgdGhlCgljb2xsZWN0aW9uIGhhcyBhbHJlYWR5IHN0YXJ0ZWQuCgoJKiBzLWZpbmltcC5hZHMgKENvbGxlY3Rpb25fRmluYWxpemF0aW9uX1N0YXJ0ZWQpOiBBZGRlZCBuZXcgc3BlY2lhbAoJZmxhZyB2YWx1ZSBmb3IgaW5kaWNhdGluZyB0aGF0IGEgY29sbGVjdGlvbidzIGZpbmFsaXphdGlvbiBoYXMgc3RhcnRlZC4KCgkqIHMtdGFzc3RhLmFkYiAoQ3JlYXRlX1Rhc2spOiBSYWlzZSBQcm9ncmFtX0Vycm9yIG9uIGFuIGF0dGVtcHQgdG8KCWNyZWF0ZSBhIHRhc2sgd2hvc2UgbWFzdGVyIGhhcyBhbHJlYWR5IHdhaXRlZCBmb3IgZGVwZW5kZW50IHRhc2tzLgoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBsaWIuYWRiLCBsaWIuYWRzOiAoSW5fUHJlZGVmaW5lZF9Vbml0KTogTmV3IGZ1bmN0aW9ucwoKCSogYS1maW5hbGkuYWRzLCBhLW5nY290eS5hZHMsIGEtc3RyYm91LmFkcywgYS1zdHJlYW0uYWRzLCBhLXN0cm1hcC5hZHMsIAoJYS1zdHJ1bmIuYWRzLCBhLXN0d2liby5hZHMsIGEtc3R3aW1hLmFkcywgYS1zdHdpdW4uYWRzLCBhLXRhc2lkZS5hZHMsIAoJYS1jb29yc2UuYWRzLCBhLWNvbnZlYy5hZHMsIGEtY29pbnZlLmFkcywgYS1jb2hhbWEuYWRzLCBhLWNpb3JzZS5hZHMsIAoJYS1jaWhhbWEuYWRzLCBhLWNpaGFzZS5hZHMsIGEtY29oYXNlLmFkcywgYS1jaW9ybWEuYWRzLCBhLWNvb3JtYS5hZHMsIAoJYS1jaW9ybXUuYWRzLCBhLWNvb3JtdS5hZHMsIGEtc3R6Ym91LmFkcywgYS1zdHptYXAuYWRzLCBhLXN0enVuYi5hZHMsIAoJYS1leGNlcHQtMjAwNS5hZHM6IEFkZCBwcmFnbWEgUHJlZWxhYm9yYWJsZV9XYXJuaW5nCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogYS1kaXNwYXQuYWRzLCBhLWRpc3BhdC5hZGIsIGEtZGlyb3JvLmFkcywgYS1kaXJvcm8uYWRiOiBOZXcgZmlsZXMuCgoJKiBhbGkuYWRiIChHZXRfTmFtZSk6IFByb3Blcmx5IGhhbmRsZSBzY2FubmluZyBvZiB3aWRlIGNoYXJhY3RlciBuYW1lcwoJZW5jb2RlZCB3aXRoIGJyYWNrZXRzIG5vdGF0aW9uLgoJKEtub3duX0FMSV9MaW5lcyk6IEFkZCBTIGxpbmVzIHRvIHRoaXMgbGlzdC4KCShTY2FuX0FMSSk6IEFjcXVpcmUgUyAocHJpb3JpdHkgc3BlY2lmaWMgZGlzcGF0Y2hpbmcpIGxpbmVzLgoJTmV3IGZsYWcgRWxhYm9yYXRlX0FsbF9EZXNpcmFibGUgaW4gdW5pdCB0YWJsZQoKCSogYWxpLmFkcyAoUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcpOiBBZGQgdGhpcyByYW5nZSBvZgoJaWRlbnRpZmllcnMgdG8gYmUgdXNlZCBmb3IgUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcgdGFibGUgZW50cmllcy4KCShBTElzX1JlY29yZCk6IEFkZCBGaXJzdF9TcGVjaWZpY19EaXNwYXRjaGluZyBhbmQKCUxhc3RfU3BlY2lmaWNfRGlzcGF0Y2hpbmcgdGhhdCBwb2ludCB0byB0aGUgZmlyc3QgYW5kIGxhc3QgZW50cmllcwoJcmVzcGVjdGl2ZWx5IGluIHRoZSBwcmlvcml0eSBzcGVjaWZpYyBkaXNwYXRjaGluZyB0YWJsZSBmb3IgdGhpcyB1bml0LgoJKFNwZWNpZmljX0Rpc3BhdGNoaW5nKTogQWRkIHRoaXMgdGFibGUgZm9yIHN0b3JpbmcgZWFjaCBTIChwcmlvcml0eQoJc3BlY2lmaWMgZGlzcGF0Y2hpbmcpIGxpbmUgZW5jb3VudGVyZWQgaW4gdGhlIGlucHV0IEFMSSBmaWxlLgoJTmV3IGZsYWcgRWxhYm9yYXRlX0FsbF9EZXNpcmFibGUgaW4gdW5pdCB0YWJsZQoKCSogYmNoZWNrLmFkYjogKENoZWNrX0NvbmZpZ3VyYXRpb25fQ29uc2lzdGVuY3kpOiBBZGQgY2FsbCB0bwoJQ2hlY2tfQ29uc2lzdGVudF9EaXNwYXRjaGluZ19Qb2xpY3kuCgkoQ2hlY2tfQ29uc2lzdGVudF9EaXNwYXRjaGluZ19Qb2xpY3kpOiBBZGQgdGhpcyBwcm9jZWR1cmUgaW4gY2hhcmdlIG9mCgl2ZXJpZnlpbmcgdGhhdCB0aGUgdXNlIG9mIFByaW9yaXR5X1NwZWNpZmljX0Rpc3BhdGNoaW5nLAoJVGFza19EaXNwYXRjaGluZ19Qb2xpY3ksIGFuZCBMb2NraW5nX1BvbGljeSBpcyBjb25zaXN0ZW50IGFjcm9zcyB0aGUKCXBhcnRpdGlvbi4KCgkqIGJpbmRnZW4uYWRiOiAoUHVibGljX1ZlcnNpb25fV2FybmluZyk6IGZ1bmN0aW9uIHJlbW92ZWQuCgkoU2V0X1BTRF9QcmFnbWFfVGFibGUpOiBBZGQgdGhpcyBwcm9jZWR1cmUgaW4gY2hhcmdlIG9mIGdldHRpbmcgdGhlCglyZXF1aXJlZCBpbmZvcm1hdGlvbiBmcm9tIEFMSSBmaWxlcyBpbiBvcmRlciB0byBpbml0aWFsaXplIHRoZSB0YWJsZQoJY29udGFpbmluZyB0aGUgc3BlY2lmaWMgZGlzcGF0Y2hpbmcgcG9saWN5LgoJKEdlbl9BZGFpbml0X0FkYSk6IEdlbmVyYXRlIHRoZSB2YXJpYWJsZXMgcmVxdWlyZWQgZm9yIHByaW9yaXR5IHNwZWNpZmljCglkaXNwYXRjaGluZyBlbnRyaWVzIChfX2dsX3ByaW9yaXR5X3NwZWNpZmljX2Rpc3BhdGNoaW5nIGFuZAoJX19nbF9udW1fc3BlY2lmaWNfZGlzcGF0Y2hpbmcpLgoJKEdlbl9BZGFpbml0X0MpOiBHZW5lcmF0ZSB0aGUgdmFyaWFibGVzIHJlcXVpcmVkIGZvciBwcmlvcml0eSBzcGVjaWZpYwoJZGlzcGF0Y2hpbmcgZW50cmllcyAoX19nbF9wcmlvcml0eV9zcGVjaWZpY19kaXNwYXRjaGluZyBhbmQKCV9fZ2xfbnVtX3NwZWNpZmljX2Rpc3BhdGNoaW5nKS4KCShHZW5fT3V0cHV0X0ZpbGUpOiBBY3F1aXJlIHNldHRpbmdzIGZvciBQcmlvcml0eV9TcGVjaWZpY19EaXNwYXRjaGluZwoJcHJhZ21hIGVudHJpZXMuCgkoR2VuX1Jlc3RyaWN0aW9uc19TdHJpbmdfMSwgR2VuX1Jlc3RyaWN0aW9uc19TdHJpbmdfMik6IFJlbW92ZWQuCgkoR2VuX1Jlc3RyaWN0aW9uc19BZGEsIEdlbl9SZXN0cmljdGlvbnNfQywgU2V0X0Jvb2xlYW4pOiBOZXcgcHJvY2VkdXJlcy4KCShUYWJfVG8pOiBSZW1vdmVkLgoJKEdlbl9PdXRwdXRfRmlsZV9BZGEvX0MpOiBTZXQgZGlyZWN0bHkgX19nbF94eHggdmFyaWFibGVzIGluc3RlYWQgb2YKCWEgY2FsbCB0byBnbmF0X3NldF9nbG9iYWxzLgoJR2VuZXJhdGUgYSBzdHJpbmcgY29udGFpbmluZyBzZXR0aW5ncyBmcm9tCglQcmlvcml0eV9TcGVjaWZpY19EaXNwYXRjaGluZyBwcmFnbWEgZW50cmllcy4KCShHZW5fT2JqZWN0X0ZpbGVzX09wdGlvbnMpOiBEbyBub3QgaW5jbHVkZSB0aGUgcnVudGltZSBsaWJyYXJpZXMgd2hlbgoJcHJhZ21hIE5vX1J1bl9UaW1lIGlzIHNwZWNpZmllZC4KCgkqIGluaXQuYyAoX19nbmF0X2luc3RhbGxfaGFuZGxlciwgY2FzZSBGcmVlQlNEKTogVXNlIFNBX1NJR0lORk8sIGZvcgoJY29uc2lzdGVuY3kgd2l0aCBzLWludG1hbi1wb3NpeC5hZGIuCgkoX19nbmF0X2Vycm9yX2hhbmRsZXIsIGNhc2UgRnJlZUJTRCk6IEFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlCgloYW5kbGVyIGlzIGluc3RhbGxlZCB3aXRoIFNBX1NJR0lORk8uCgkoX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSwgRnJlZUJTRCBjYXNlKTogTmV3IGZ1bmN0aW9uIGZvcgoJRnJlZUJTRCBaQ1ggc3VwcG9ydCwgY29waWVkIGZyb20gTGludXggdmVyc2lvbi4KCUFkZCBNYVJURS1zcGVjaWZpYyBkZWZpbml0aW9ucyBmb3IgdGhlIGxpbnV4IHRhcmdldC4gUmVkZWZpbmUgc2lnYWN0aW9uLAoJc2lnZmlsbHNldCwgYW5kIHNpZ2VtcHR5c2V0IHNvIHRoZSByb3V0aW5lcyBkZWZpbmVkIGJ5IE1hUlRFLgoJKF9fZ2xfcHJpb3JpdHlfc3BlY2lmaWNfZGlzcGF0Y2hpbmcpOiBBZGQgdGhpcyB2YXJpYWJsZSB0aGF0IHN0b3JlcyB0aGUKCXN0cmluZyBjb250YWluaW5nIHByaW9yaXR5IHNwZWNpZmljIGRpc3BhdGNoaW5nIHBvbGljaWVzIGluIHRoZQoJcGFydGl0aW9uLgoJKF9fZ2xfbnVtX3NwZWNpZmljX2Rpc3BhdGNoaW5nKTogQWRkIHRoaXMgdmFyaWFibGUgdGhhdCBpbmRpY2F0ZXMgdGhlCgloaWdoZXN0IHByaW9yaXR5IGZvciB3aGljaCBhIHByaW9yaXR5IHNwZWNpZmljIGRpc3BhdGNoaW5nIHByYWdtYQoJYXBwbGllcy4KCShfX2duYXRfZ2V0X3NwZWNpZmljX2Rpc3BhdGNoaW5nKTogQWRkIHRoaXMgcm91dGluZSB0aGF0IHJldHVybnMgdGhlCglwcmlvcml0eSBzcGVjaWZpYyBkaXNwYXRjaGluZyBwb2xpY3ksIGFzIHNldCBieSBhCglQcmlvcml0eV9TcGVjaWZpY19EaXNwYXRjaGluZyBwcmFnbWEgYXBwZWFyaW5nIGFueXdoZXJlIGluIHRoZSBjdXJyZW50CglwYXJ0aXRpb24uIFRoZSBpbnB1dCBhcmd1bWVudCBpcyB0aGUgcHJpb3JpdHkgbnVtYmVyLCBhbmQgdGhlIHJlc3VsdAoJaXMgdGhlIHVwcGVyIGNhc2UgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBwb2xpY3kgbmFtZS4KCShfX2duYXRfc2V0X2dsb2JhbHMpOiBOb3cgYSBkdW1teSBmdW5jdGlvbi4KCShfX2duYXRfaGFuZGxlX3Ztc19jb25kaXRpb24pOiBGZWVkIGFkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSB3aXRoCgltZWNoYXJncyBpbnN0ZWFkIG9mIHNpZ2FyZ3MsIGFzIHRoZSBsYXR0ZXIgY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZQoJZm9ybWVyIGFuZCBzaWdhcmdzIGlzIG5vdCB3aGF0IHdlIHdhbnQgb24gaWE2NC4KCShfX2duYXRfYWRqdXN0X2NvbnRleHRfZm9yX3JhaXNlLCBhbHBoYS12bXMpOiBGZXRjaCBzaWdhcmdzIGZyb20gdGhlCgltZWNoYXJncyBhcmd1bWVudC4KCShfX2duYXRfYWRqdXN0X2NvbnRleHRfZm9yX3JhaXNlLCBpYTY0LXZtcyk6IE5ldyBmdW5jdGlvbi4KCSh0YXNraW5nX2Vycm9yKTogUmVtb3ZlIHVudXNlZCBzeW1ib2wuCgkoX2Fib3J0X3NpZ25hbCk6IE1vdmUgdGhpcyBzeW1ib2wgdG8gdGhlIElSSVggc3BlY2lmaWMgcGFydCBzaW5jZSB0aGlzCglpcyB0aGUgb25seSB0YXJnZXQgdGhhdCB1c2VzIHRoaXMgZGVmaW5pdGlvbi4KCShDaGVja19BYm9ydF9TdGF0dXMpOiBNb3ZlIHRoaXMgc3ltYm9sIHRvIHRoZSBJUklYIHNwZWNpZmljIHBhcnQgc2luY2UKCXRoaXMgaXMgdGhlIG9ubHkgdGFyZ2V0IHRoYXQgdXNlcyB0aGlzIGRlZmluaXRpb24uCgkoTG9ja19UYXNrKTogUmVtb3ZlIHVudXNlZCBzeW1ib2wuCgkoVW5sb2NrX1Rhc2spOiBSZW1vdmUgdW51c2VkIHN5bWJvbC4KCgkqIGxpYi13cml0LmFkYiAoV3JpdGVfQUxJKTogT3V0cHV0IG5ldyBTIGxpbmVzIGZvcgoJUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcgcHJhZ21hcy4KCUltcGxlbWVudCBuZXcgZmxhZyBCRCBmb3IgZWxhYm9yYXRlIGJvZHkgZGVzaXJhYmxlCgoJKiBsaWItd3JpdC5hZHM6IERvY3VtZW50IFMgbGluZXMgZm9yIFByaW9yaXR5IFNwZWNpZmljIERpc3BhdGNoaW5nLgoJKFNwZWNpZmljX0Rpc3BhdGNoaW5nKTogQWRkIHRoaXMgdGFibGUgZm9yIHN0b3JpbmcgdGhlIGVudHJpZXMKCWNvcnJlc3BvbmRpbmcgdG8gUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcgcHJhZ21hcy4KCURvY3VtZW50IG5ldyBCRCBmbGFnIGZvciBlbGFib3JhdGUgYm9keSBkZXNpcmFibGUKCgkqIHBhci1wcmFnLmFkYiAoUHJhZyk6IEFkZCBQcmlvcml0eV9TcGVjaWZpY19EaXNwYXRjaGluZyB0byB0aGUgbGlzdAoJb2Yga25vd24gcHJhZ21hcy4KCjIwMDYtMTAtMzEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZHMsIGEtdGFncy5hZGI6IAoJKFByZWRlZmluZWRfRFQpOiBOZXcgZnVuY3Rpb24gdGhhdCBpbXByb3ZlcyByZWFkYWJpbGl0eSBvZiB0aGUgY29kZS4KCShHZXRfUHJlZGVmaW5lZF9QcmltX09wX0FkZHJlc3MsIFNldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcywKCUluaGVyaXRfRFQpOiBVc2UgdGhlIG5ldyBmdW5jdGlvbiBQcmVkZWZpbmVkX0RUIHRvIGltcHJvdmUgY29kZQoJcmVhZGFiaWxpdHkuCgkoUmVnaXN0ZXJfSW50ZXJmYWNlX1RhZyk6IFVwZGF0ZSBhc3NlcnRpb24uCgkoU2V0X0ludGVyZmFjZV9UYWJsZSk6IFVwZGF0ZSBhc3NlcnRpb24uCgkoSW50ZXJmYWNlX0FuY2VzdG9yX1RhZ3MpOiBOZXcgc3VicHJvZ3JhbSByZXF1aXJlZCB0byBpbXBsZW1lbnQgQUktNDA1OgoJZGV0ZXJtaW5pbmcgcHJvZ2VuaXRvciBpbnRlcmZhY2VzIGluIFRhZ3MuCgkoSW5oZXJpdF9DUFBfRFQpOiBOZXcgc3VicHJvZ3JhbS4KCgkqIGV4cF9kaXNwLmFkYiAoRXhwYW5kX0ludGVyZmFjZV9UaHVuayk6IFN1cHByZXNzIGNoZWNrcyBkdXJpbmcgdGhlCglhbmFseXNpcyBvZiB0aGUgdGh1bmsgY29kZS4KCShFeHBhbmRfSW50ZXJmYWNlX0NvbnZlcnNpb24pOiBIYW5kbGUgcnVuLXRpbWUgY29udmVyc2lvbiBvZgoJYWNjZXNzIHRvIGNsYXNzIHdpZGUgdHlwZXMuCgkoRXhwYW5kX0Rpc3BhdGNoaW5nX0NhbGwpOiBXaGVuIGdlbmVyYXRpbmcgdGhlIHByb2ZpbGUgZm9yIHRoZQoJc3VicHJvZ3JhbSBpdHlwZSBmb3IgYSBkaXNwYXRjaGluZyBvcGVyYXRpb24sIHByb3Blcmx5IHRlcm1pbmF0ZSB0aGUKCWZvcm1hbCBwYXJhbWV0ZXJzIGNoYWluZCBsaXN0IChzZXQgdGhlIE5leHRfRW50aXR5IG9mIHRoZSBsYXN0IGZvcm1hbAoJdG8gRW1wdHkpLgoJKENvbGxlY3RfQWxsX0ludGVyZmFjZXMpOiBSZW1vdmVkLiBUaGlzIHJvdXRpbmUgaGFzIGJlZW4gbW92ZWQgdG8KCXNlbV91dGlsIGFuZCByZW5hbWVkIGFzIENvbGxlY3RfQWxsX0Fic3RyYWN0X0ludGVyZmFjZXMuCgkoU2V0X0FsbF9EVF9Qb3NpdGlvbik6IEhpZGRlbiBlbnRpdGllcyBhc3NvY2lhdGVkIHdpdGggYWJzdHJhY3QKCWludGVyZmFjZSBwcmltaXRpdmVzIGFyZSBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIHRoZSBjaGVjayBmb3IKCTMuOS4zKDEwKTsgdGhpcyBjaGVjayBpcyBkb25lIHdpdGggdGhlIGFsaWFzZWQgZW50aXR5LgoJKE1ha2VfRFQsIFNldF9BbGxfRFRfUG9zaXRpb24pOiBFbmFibGUgZnVsbCBBQkkgY29tcGF0aWJpbGl0eSBmb3IKCWludGVyZmFjaW5nIHdpdGggQ1BQIGJ5IGRlZmF1bHQuCgkoRXhwYW5kX0ludGVyZmFjZV9Db252ZXJzaW9uKTogQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3Igc3RhdGljIGNvbnZlcnNpb24KCWZyb20gYW4gaW50ZXJmYWNlIHRvIGEgdGFnZ2VkIHR5cGUuCgkoQ29sbGVjdF9BbGxfSW50ZXJmYWNlcyk6IEFkZCBuZXcgb3V0IGZvcm1hbCBjb250YWluaW5nIHRoZSBsaXN0IG9mCglhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZXMgdG8gY2xlYW51cCB0aGUgc3VicHJvZ3JhbSBNYWtlX0RULgoJKE1ha2VfRFQpOiBVcGRhdGUgdGhlIGNvZGUgdG8gZ2VuZXJhdGUgdGhlIHRhYmxlIG9mIGludGVyZmFjZXMgaW4gY2FzZQoJb2YgYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzLgoJKElzX1ByZWRlZmluZWRfRGlzcGF0Y2hpbmdfQWxpYXMpOiBOZXcgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYKCWEgcHJpbWl0aXZlIGlzIG5vdCBhIHByZWRlZmluZWQgZGlzcGF0Y2hpbmcgcHJpbWl0aXZlIGJ1dCBpdCBpcyBhbgoJYWxpYXMgb2YgYSBwcmVkZWZpbmVkIGRpc3BhdGNoaW5nIHByaW1pdGl2ZS4KCShNYWtlX0RUKTogSWYgdGhlIGFuY2VzdG9yIG9mIHRoZSB0eXBlIGlzIGEgQ1BQX0NsYXNzIGFuZCB3ZSBhcmUKCWNvbXBpbGluZyB1bmRlciBmdWxsIEFCSSBjb21wYXRpYmlsaXR5IG1vZGUgd2UgYXZvaWQgdGhlIGdlbmVyYXRpb24gb2YKCWNhbGxzIHRvIHJ1bi10aW1lIHNlcnZpY2VzIHRoYXQgZmlsbCB0aGUgZGlzcGF0Y2ggdGFibGVzIGJlY2F1c2UgdW5kZXIKCXRoaXMgbW9kZSB3ZSBjdXJyZW50bHkgaW5oZXJpdCB0aGUgZGlzcGF0Y2ggdGFibGVzIGluIHRoZSBJUCBzdWJwcm9ncmFtLgoJKFdyaXRlX0RUKTogRW1pdCBhbiAiaXMgbnVsbCIgaW5kaWNhdGlvbiBmb3IgYSBudWxsIHByb2NlZHVyZSBwcmltaXRpdmUuCgkoRXhwYW5kX0ludGVyZmFjZV9Db252ZXJzaW9uKTogVXNlIGFuIGFkZHJlc3MgYXMgdGhlIHR5cGUgb2YgdGhlIGZvcm1hbAoJb2YgdGhlIGludGVybmFsbHkgYnVpbHQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBjYXNlIGluIHdoaWNoIHRoZQoJdGFyZ2V0IHR5cGUgaXMgYW4gYWNjZXNzIHR5cGUuCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGJpbmRlLmFkYiAoQmV0dGVyX0Nob2ljZSwgV29yc2VfQ2hvaWNlKTogSW1wbGVtZW50IG5ldyBwcmVmZXJlbmNlcy4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYmluZHVzZy5hZHMsIGJpbmR1c2cuYWRiOgoJQ2hhbmdlIHRvIHBhY2thZ2UgYW5kIHJlbmFtZSBwcm9jZWR1cmUgYXMgRGlzcGxheSwgd2hpY2gKCW5vdyBlbnN1cmVzIHRoYXQgaXQgb25seSBvdXRwdXRzIHVzYWdlIGluZm9ybWF0aW9uIG9uY2UuCgoyMDA2LTEwLTMxICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogY2FsLmM6IFVzZSB0aGUgaGVhZGVyIHN5cy90aW1lLmggZm9yIFZ4V29ya3MgNi4yIG9yIGdyZWF0ZXIgd2hlbgoJdXNpbmcgUlRQcy4KCgkqIG1rZGlyLmM6IFVzZSBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIG1rZGlyIGZvciBWeFdvcmtzIDYuMiBvciBncmVhdGVyCgl3aGVuIHVzaW5nIFJUUHMuCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiB0cmVlcHIuYWRiOiBVc2UgbmV3IHN1YnR5cGUgTl9NZW1iZXJzaGlwX1Rlc3QKCgkqIGNoZWNrcy5hZHMsIGNoZWNrcy5hZGI6IEFkZCBkZWZpbml0aW9uIGZvciBWYWxpZGl0eV9DaGVjawoJKFJhbmdlX09yX1ZhbGlkaXR5X0NoZWNrc19TdXBwcmVzc2VkKTogTmV3IGZ1bmN0aW9uCgkoRW5zdXJlX1ZhbGlkKTogVGVzdCBWYWxpZGl0eV9DaGVjayBzdXBwcmVzc2VkCgkoSW5zZXJ0X1ZhbGlkX0NoZWNrKTogVGVzdCBWYWxpZGl0eV9DaGVjayBzdXBwcmVzc2VkCgkoSW5zZXJ0X1ZhbGlkX0NoZWNrKTogUHJlc2VydmUgRG9fUmFuZ2VfQ2hlY2sgZmxhZwoJKFZhbGlkaXR5X0NoZWNrX1JhbmdlKTogTmV3IHByb2NlZHVyZQoJKEV4cHJfS25vd25fVmFsaWQpOiBSZXN1bHQgb2YgbWVtYmVyc2hpcCB0ZXN0IGlzIGFsd2F5cyB2YWxpZAoJKFNlbGVjdGVkX1JhbmdlX0NoZWNrcyk6IFJhbmdlIGNoZWNrcyBjYW5ub3QgYmUgYXBwbGllZCB0byBkaXNjcmltaW5hbnRzCglieSB0aGVtc2VsdmVzLiBEaXNhYmxpbmcgdGhvc2UgY2hlY2tzIG11c3QgYWxzbyBiZSBkb25lIGZvciB0YXNrIHR5cGVzLAoJd2hlcmUgZGlzY3JpbWluYW50cyBtYXkgYmUgdXNlZCBmb3IgdGhlIGJvdW5kcyBvZiBlbnRyeSBmYW1pbGllcy4KCShBcHBseV9BZGRyZXNzX0NsYXVzZV9DaGVjayk6IFJlbW92ZSBzaWRlLWVmZmVjdHMgaWYgYWRkcmVzcyBleHByZXNzaW9uCglpcyBub24tc3RhdGljIGFuZCBpcyBub3QgdGhlIG5hbWUgb2YgYSBkZWNsYXJlZCBjb25zdGFudC4KCShOdWxsX0V4Y2x1c2lvbl9TdGF0aWNfQ2hlY2tzKTogRXh0ZW5kIHRvIGhhbmRsZSBGdW5jdGlvbl9TcGVjaWZpY2F0aW9uLgoJQ29kZSBjbGVhbnVwIGFuZCBuZXcgZXJyb3IgbWVzc2FnZXMuCgkoRW5hYmxlX1JhbmdlX0NoZWNrKTogVGVzdCBmb3Igc29tZSBjYXNlcyBvZiBzdXBwcmVzc2VkIGNoZWNrcwoJKEdlbmVyYXRlX0luZGV4X0NoZWNrcyk6IFN1cHByZXNzIGluZGV4IGNoZWNrcyBpZiBpbmRleCBjaGVja3MgYXJlCglzdXBwcmVzc2VkIGZvciBhcnJheSBvYmplY3Qgb3IgYXJyYXkgdHlwZS4KCShBcHBseV9TZWxlY3RlZF9MZW5ndGhfQ2hlY2tzKTogR2l2ZSB3YXJuaW5nIGZvciBjb21waWxlLXRpbWUgZGV0ZWN0ZWQKCWxlbmd0aCBjaGVjayBmYWlsdXJlLCBldmVuIGlmIGNoZWNrcyBhcmUgb2ZmLgoJKEVuc3VyZV9WYWxpZCk6IERvIG5vdCBnZW5lcmF0ZSBhIGNoZWNrIG9uIGFuIGluZGV4ZWQgY29tcG9uZW50IHdob3NlCglwcmVmaXggaXMgYSBwYWNrZWQgYm9vbGVhbiBhcnJheS4KCSogY2hlY2tzLmFkYjogKEFsaWdubWVudF9DaGVja3NfU3VwcHJlc3NlZCk6IE5ldyBmdW5jdGlvbgoJKEFwcGx5X0FkZHJlc3NfQ2xhdXNlX0NoZWNrKTogTmV3IHByb2NlZHVyZSwgdGhpcyBpcyBhIGNvbXBsZXRlbHkKCXJld3JpdHRlbiByZXBsYWNlbWVudCBmb3IgQXBwbHlfQWxpZ25tZW50X0NoZWNrCgkoR2V0X0VfTGVuZ3RoL0dldF9FX0ZpcnN0X09yX0xhc3QpOiBBZGQgbWlzc2luZyBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0Cgl3ZSByZXF1ZXN0IGEgZGlzY3JpbWluYWwgdmFsdWUgb25seSBpbiBjYXNlIG9mIGRpc2NyaW1pbmFudHMuCgkoQXBwbHlfRGlzY3JpbWluYW50X0NoZWNrKTogRm9yIEFkYV8wNSwgb25seSBjYWxsIEdldF9BY3R1YWxfU3VidHlwZSBmb3IKCWFzc2lnbm1lbnRzIHdoZXJlIHRoZSB0YXJnZXQgc3VidHlwZSBpcyB1bmNvbnN0cmFpbmVkIGFuZCB0aGUgdGFyZ2V0CglvYmplY3QgaXMgYSBwYXJhbWV0ZXIgb3IgZGVyZWZlcmVuY2UgKG90aGVyIGFsaWFzZWQgY2FzZXMgYXJlIGtub3duCgl0byBiZSB1bmNvbnN0cmFpbmVkKS4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogY2xlYW4uYWRiLCBnbmF0bmFtZS5hZGIsIGduYXRzeW0uYWRiLCBwcmVwLmFkYiwgcHJlcC5hZHMsCglwcmVwY29tcC5hZGIsIHByai5hZHMsIHByai1zdHJ0LmFkYiwgc2VtX21hcHMuYWRzLAoJdm1zX2NvbnYuYWRiOiBGaXggYmFkIHRhYmxlIGluY3JlbWVudCB2YWx1ZXMgKG11Y2ggdG9vIHNtYWxsKQoKCSogdGFibGUuYWRiIChSZWFsbG9jKTogTWFrZSBzdXJlIHdlIGdldCBhdCBsZWFzdCBzb21lIG5ldyBlbGVtZW50cwoJRGVmZW5kcyBhZ2FpbnN0IHNpbGx5IHNtYWxsIHZhbHVlcyBmb3IgdGFibGUgaW5jcmVtZW50CgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogZWluZm8uYWRzLCBlaW5mby5hZGIgKE9ic29sZXNjZW50X1dhcm5pbmcpOiBOb3cgZGVmaW5lZCBvbiBhbGwKCWVudGl0aWVzLiBNb3ZlIG90aGVyIGZpZWxkcyBhcm91bmQgdG8gbWFrZSB0aGlzIHBvc3NpYmxlCgkoSXNfRGVyaXZlZF9UeXBlKTogQWRkIG1pc3NpbmcgY2FsbCB0byBJc19UeXBlLgoJKEV4dHJhX0Zvcm1hbHMpOiBOZXcgZnVuY3Rpb24gZm9yIHN1YnByb2dyYW1zLCBlbnRyaWVzLCBzdWJwcm9ncmFtCgl0eXBlcy4KCShTZXRfRXh0cmFfRm9ybWFscyk6IE5ldyBwcm9jZWR1cmUgZm9yIHN1YnByb2dyYW1zLCBlbnRyaWVzLCBzdWJwIHR5cGVzLgoJKEZpcnN0X0Zvcm1hbF9XaXRoX0V4dHJhcyk6IE5ldyBmdW5jdGlvbiBmb3Igc3VicHJvZ3MsIGVudHJpZXMsIHN1YnAKCXR5cGVzLgoJKFdyaXRlX0ZpZWxkMjhfTmFtZSk6IE5ldyBwcm9jZWR1cmUgZm9yIG5vZGUgZGlzcGxheSBvZiAiRXh0cmFfRm9ybWFscyIuCglBZGQgbm9kZSBpbmZvcm1hdGlvbiBmb3IgRV9SZXR1cm5fU3RhdGVtZW50LgoJKEVsYWJvcmF0ZV9Cb2R5X0Rlc2lyYWJsZSk6IE5ldyBmbGFnCgkoSXNfUmV0dXJuX0J5X1JlZmVyZW5jZV9UeXBlKTogUmVuYW1lIElzX1JldHVybl9CeV9SZWZlcmVuY2VfVHlwZQoJdG8gYmUgSXNfSW5oZXJlbnRseV9MaW1pdGVkX1R5cGUsIGJlY2F1c2UgcmV0dXJuLWJ5LXJlZmVyZW5jZSBoYXMKCW5vIG1lYW5pbmcgaW4gQWRhIDIwMDUuCgkoRV9SZXR1cm5fU3RhdGVtZW50KTogTmV3IGVudGl0eSBraW5kLgoJKFJldHVybl9BcHBsaWVzX1RvKTogRmllbGQgb2YgRV9SZXR1cm5fU3RhdGVtZW50LgoJKElzX1JldHVybl9PYmplY3QpOiBOZXcgZmxhZyBpbiBvYmplY3QgZW50aXRpZXMuCgkoSXNfRHluYW1pY19TY29wZSk6IE1ha2UgaXQgVHJ1ZSBmb3IgRV9SZXR1cm5fU3RhdGVtZW50LgoJKE11c3RfSGF2ZV9QcmVlbGFiX0luaXQpOiBOZXcgZmxhZwoJKEtub3duX1RvX0hhdmVfUHJlZWxhYl9Jbml0KTogTmV3IGZsYWcKCShJc19Gb3JtYWxfT2JqZWN0KTogTW92ZSBmcm9tIFNlbV9DaDggYm9keSB0byBFaW5mbwoJKElzX1Zpc2libGVfRm9ybWFsKTogTmV3IGZsYWcgb24gZW50aXRpZXMgaW4gZm9ybWFsIHBhY2thZ2VzLgoJKExvd19Cb3VuZF9Lbm93bik6IE5ldyBmbGFnCgkoTm9uX0xpbWl0ZWRfVmlldywgU2V0X05vbl9MaW1pdGVkX1ZpZXcpOiBBZGQgbWVtYmVyc2hpcCB0ZXN0IGFnYWlucwoJSW5jb21wbGV0ZV9LaW5kLgoJKFdyaXRlX0ZpZWxkMTdfTmFtZSk6IENvcnJlY3Qgc3BlbGxpbmcgb2YgTm9uX0xpbWl0ZWRfVmlldy4gQWRkIG5hbWUKCW91dHB1dCB3aGVuIElkIGlzIGFuIGluY29tcGxldGUgc3VidHlwZS4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXJyb3V0LmFkcywgZXJyb3V0LmFkYiAoRmluYWxpemUpOiBJbXBsZW1lbnQgc3dpdGNoIC1nbmF0ZC5tCglBdm9pZCBhYmJyZXZpYXRpb24gQ3JlYXQKCShGaW5hbGl6ZSk6IExpc3QgYWxsIHNvdXJjZXMgaW4gZXh0ZW5kZWQgbWFpbCBzb3VyY2UgaWYgLWduYXRsCglzd2l0Y2ggaXMgYWN0aXZlLgoJU3VwcHJlc3MgY29weXJpZ2h0IG5vdGljZSB0byBmaWxlIGluIC1nbmF0bD1mIG1vZGUgaWYgLWduYXRkNyBzZXQKCShGaW5hbGl6ZSk6IEltcGxlbWVudCBuZXcgLWduYXRsPXh4eCBzd2l0Y2ggdG8gb3V0cHV0IGxpc3RpbmcgdG8gZmlsZQoJKFNldF9TcGVjaWZpY19XYXJuaW5nX09uKTogTmV3IHByb2NlZHVyZQoJKFNldF9TcGVjaWZpY19XYXJuaW5nX09mZik6IE5ldyBwcm9jZWR1cmUKCUFkZCBpbXBsZW1lbnRhdGlvbiBvZiBuZXcgaW5zZXJ0aW9uIFxcCgkoRXJyb3JfTXNnX0ludGVybmFsKTogQWRkIGhhbmRsaW5nIGZvciBFcnJvcl9Nc2dfTGluZV9MZW5ndGgKCShVbndpbmRfSW50ZXJuYWxfVHlwZSk6IEltcHJvdmUgcmVwb3J0IG9uIGFub255bW91cyBhY2Nlc3NfdG9fc3VicHJvZ3JhbQoJdHlwZXMuCgkoRXJyb3JfTXNnX0ludGVybmFsKTogTWFrZSBzdXJlIHRoYXQgd2Ugc2V0IExhc3RfS2lsbGVkIHRvCglUcnVlIHdoZW4gYSBtZXNzYWdlIGZyb20gYW5vdGhlciBwYWNrYWdlIGlzIHN1cHByZXNzZWQuCglJbXBsZW1lbnQgaW5zZXJ0aW9uIGNoYXJhY3RlciB+IChpbnNlcnQgc3RyaW5nKQoJKEZpcnN0X05vZGUpOiBNaW5vciBhZGp1c3RtZW50cyB0byBnZXQgYmV0dGVyIHBsYWNlbWVudC4KCgkqIGZyb250ZW5kLmFkYjogCglJbXBsZW1lbnQgbmV3IC1nbmF0bD14eHggc3dpdGNoIHRvIG91dHB1dCBsaXN0aW5nIHRvIGZpbGUKCgkqIGduYXQxZHJ2LmFkYjogCglJbXBsZW1lbnQgbmV3IC1nbmF0bD14eHggc3dpdGNoIHRvIG91dHB1dCBsaXN0aW5nIHRvIGZpbGUKCgkqIG9wdC5hZHM6IChXYXJuX09uX1F1ZXN0aW9uYWJsZV9NaXNzaW5nX1BhcmVuKTogTmV3IHN3aXRjaAoJKENvbW1hbmRzX1RvX1N0ZG91dCk6IE5ldyBmbGFnCglJbXBsZW1lbnQgbmV3IC1nbmF0bD14eHggc3dpdGNoIHRvIG91dHB1dCBsaXN0aW5nIHRvIGZpbGUKCU5ldyBzd2l0Y2ggRHVtcF9Tb3VyY2VfVGV4dAoJKFdhcm5fT25fRGVsZXRlZF9Db2RlKTogTmV3IHdhcm5pbmcgZmxhZyBmb3IgLWduYXR3dAoJRGVmaW5lIEVycm9yX01zZ19MaW5lX0xlbmd0aAoJKFdhcm5fT25fQXNzdW1lZF9Mb3dfQm91bmQpOiBOZXcgc3dpdGNoCgoJKiBvc2ludC5hZHMsIG9zaW50LmFkYgoJKE5vcm1hbGl6ZV9EaXJlY3RvcnlfTmFtZSk6IEZpeCBidWcuCglJbXBsZW1lbnQgbmV3IC1nbmF0bD14eHggc3dpdGNoIHRvIG91dHB1dCBsaXN0aW5nIHRvIGZpbGUKCShDb25jYXQpOiBSZW1vdmVkLCByZXBsYWNlZCBieSByZWFsIGNvbmNhdGVuYXRpb24KCU1ha2UgdXNlIG9mIGNvbmNhdGVuYXRpb24gbm93IGFsbG93ZWQgaW4gY29tcGlsZXIKCShFeGVjdXRhYmxlX1ByZWZpeC5HZXRfSW5zdGFsbF9EaXIpOiBGaXJzdCBnZXQgdGhlIGZ1bGwgcGF0aCwgc28gdGhhdAoJd2UgZmluZCB0aGUgJ2xpYicgb3IgJ2JpbicgZGlyZWN0b3J5IGV2ZW4gd2hlbiB0aGUgdG9vbCBoYXMgYmVlbgoJaW52b2tlZCB3aXRoIGEgcmVsYXRpdmUgcGF0aC4KCShFeGVjdXRhYmxlX05hbWUpOiBOZXcgZnVuY3Rpb24gdGFraW5nIHN0cmluZyBwYXJhbWV0ZXJzLgoKCSogb3NpbnQtYy5hZHMsIG9zaW50LWMuYWRiOiAKCUltcGxlbWVudCBuZXcgLWduYXRsPXh4eCBzd2l0Y2ggdG8gb3V0cHV0IGxpc3RpbmcgdG8gZmlsZQoKCSogc2lucHV0LWQuYWRiOiBDaGFuZ2UgbmFtZSBDcmVhdF9EZWJ1Z19GaWxlIHRvIENyZWF0ZV9EZWJ1Z19GaWxlCgoJKiBzd2l0Y2gtYy5hZGI6IAoJSW1wbGVtZW50IG5ldyAtZ25hdGw9eHh4IHN3aXRjaCB0byBvdXRwdXQgbGlzdGluZyB0byBmaWxlCglSZWNvZ25pemUgbmV3IC1nbmF0TCBzd2l0Y2gKCShubyBsb25nZXIga2VlcCBpbiBvbGQgd2FybmluZyBhYm91dCBvbGQgc3R5bGUgdXNhZ2UpCglVc2UgY29uY2F0ZW5hdGlvbiB0byBzaW1wbGlmeSBjb2RlCglSZWNvZ25pemUgLWduYXRqbm4gc3dpdGNoCgkoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMpOiBDbGVhbiB1cCBoYW5kbGluZyBvZiAtZ25hdFcKCShTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IEluY2x1ZGUgV2Fybl9Pbl9Bc3N1bWVkX0xvd19Cb3VuZCBmb3IgLWduYXRnCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGVycm91dGMuYWRzLCBlcnJvdXRjLmFkYiAoU2V0X1NwZWNpZmljX1dhcm5pbmdfT24pOiBOZXcgcHJvY2VkdXJlCgkoU2V0X1NwZWNpZmljX1dhcm5pbmdfT2ZmKTogTmV3IHByb2NlZHVyZQoJKFdhcm5pbmdfU3BlY2lmaWNhbGx5X1N1cHByZXNzZWQpOiBOZXcgZnVuY3Rpb24KCShWYWxpZGF0ZV9TcGVjaWZpY19XYXJuaW5ncyk6IE5ldyBwcm9jZWR1cmUKCShPdXRwdXRfTXNnX1RleHQpOiBDb21wbGV0ZSByZXdyaXRlIHRvIHN1cHBvcnQgLWduYXRqbm4KCgkqIGVycl92YXJzLmFkczogSW1wbGVtZW50IGluc2VydGlvbiBjaGFyYWN0ZXIgfiAoaW5zZXJ0IHN0cmluZykKCjIwMDYtMTAtMzEgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfYWdnci5hZGIgKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpOiBGb3IgZXh0ZW5zaW9uIGFnZ3JlZ2F0ZXMsIGlmCgl0aGUgcGFyZW50IHBhcnQgaXMgYSBidWlsZC1pbi1wbGFjZSBmdW5jdGlvbiBjYWxsLCBnZW5lcmF0ZSBhc3NpZ25tZW50cy4KCShFeHBhbmRfUmVjb3JkX0FnZ3JlZ2F0ZSk6IENhbGwgQ29udmVydF9Ub19Bc3NpZ25tZW50cyBpZiBhbnkgY29tcG9uZW50cwoJYXJlIGJ1aWxkLWluLXBsYWNlIGZ1bmN0aW9uIGNhbGxzLgoJKFJlcGxhY2VfU2VsZl9SZWZlcmVuY2UpOiBOZXcgc3Vic2lkaWFyeSBvZgoJTWFrZV9PS19Bc3NpZ25tZW50X1N0YXRlbWVudCwgdG8gcmVwbGFjZSBhbiBhY2Nlc3MgYXR0cmlidXRlIHRoYXQgaXMgYQoJc2VsZi1yZWZlcmVuY2UgaW50byBhbiBhY2Nlc3MgdG8gdGhlIGFwcHJvcHJpYXRlIGNvbXBvbmVudCBvZiB0aGUKCXRhcmdldCBvYmplY3QuIEdlbmVyYWxpemVzIHByZXZpb3VzIG1lY2hhbmlzbSB0byBoYW5kbGUgc2VsZi1yZWZlcmVuY2VzCgluZXN0ZWQgYXQgYW55IGxldmVsLgoJKElzX1NlbGZfUmVmZXJlbnRpYWxfSW5pdCk6IFJlbW92ZSwgbm90IG5lZWRlZC4KCShJc19TZWxmX1JlZmVyZW50aWFsX0luaXQpOiBOZXcgcHJlZGljYXRlIHRvIHNpbXBsaWZ5IGhhbmRsaW5nIG9mIHNlbGYKCXJlZmVyZW50aWFsIGNvbXBvbmVudHMgaW4gcmVjb3JkIGFnZ3JlZ2F0ZXMuCgkoSGFzX0RlZmF1bHRfSW5pdF9Db21wcywgTWFrZV9PS19Bc3NpZ25tZW50X1N0YXRlbWVudCk6IEFkZCBndWFyZCB0bwoJY2hlY2sgZm9yIHByZXNlbmNlIG9mIGVudGl0eSBiZWZvcmUgY2hlY2tpbmcgZm9yIHNlbGYtcmVmZXJlbmNlLgoJKEhhc19EZWZhdWx0X0luaXRfQ29tcHMpOiBSZXR1cm4gVHJ1ZSBpZiBhIGNvbXBvbmVudCBhc3NvY2lhdGlvbiBpcyBhCglzZWxmLXJlZmVyZW5jZSB0byB0aGUgZW5jbG9zaW5nIHR5cGUsIHdoaWNoIGNhbiBvbmx5IGNvbWUgZnJvbSBhCglkZWZhdWx0IGluaXRpYWxpemF0aW9uLgoJKE1ha2VfT0tfQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBJZiB0aGUgZXhwcmVzc2lvbiBpcyBvZiB0aGUgZm9ybQoJVHlwJ0FjYywgd2hlcmUgQWNjIGlzIGFuIGFjY2VzcyBhdHRyaWJ1dGUsIHRoZSBleHByZXNzaW9uIGNvbWVzIGZyb20gYQoJZGVmYXVsdCBpbml0aWFsaXplZCBzZWxmLXJlZmVyZW50aWFsIGNvbXBvbmVudC4KCShCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogSWYgdGhlIHR5cGUgb2YgdGhlIGFnZ3JlZ2F0ZSBpcyBhIHRhZ2dlZCB0eXBlCgl0aGF0IGhhcyBiZWVuIGRlcml2ZWQgZnJvbSBzZXZlcmFsIGFic3RyYWN0IGludGVyZmFjZXMgd2UgbXVzdCBhbHNvCglpbml0aWFsaXplIHRoZSB0YWdzIG9mIHRoZSBzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGVzLgoKMjAwNi0xMC0zMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX2F0dHIuYWRiOiAKCShFeHBhbmRfQWNjZXNzX1RvX1Byb3RlY3RlZF9PcCk6IElmIHRoZSBjb250ZXh0IGluZGljYXRlcyB0aGF0IGFuIGFjY2VzcwoJdG8gYSBsb2NhbCBvcGVyYXRpb24gbWF5IGJlIHRyYW5zZmVyZWQgb3V0c2lkZSBvZiB0aGUgb2JqZWN0LCBjcmVhdGUgYW4KCWFjY2VzcyB0byB0aGUgd3JhcHBlciBvcGVyYXRpb24gdGhhdCBtdXN0IGJlIHVzZWQgaW4gYW4gZXh0ZXJuYWwgY2FsbC4KCShFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlLCBjYXNlIEF0dHJpYnV0ZV9WYWxpZCk6IEZvciB0aGUgQUFNUAoJdGFyZ2V0LCBwYXNzIHRoZSBWYWxpZCBhdHRyaWJ1dGUgYXBwbGllZCB0byBhIGZsb2F0aW5nLXBvaW50IHByZWZpeCBvbgoJdG8gdGhlIGJhY2sgZW5kIHdpdGhvdXQgZXhwYW5zaW9uLgoJKFN0b3JhZ2VfU2l6ZSk6IFVzZSB0aGUgbmV3IHJ1bi10aW1lIGZ1bmN0aW9uIFN0b3JhZ2VfU2l6ZSB0byByZXRyaWV2ZQoJdGhlIGFsbG9jYXRlZCBzdG9yYWdlIHdoZW4gaXQgaXMgc3BlY2lmaWVkIGJ5IGEgcGVyLW9iamVjdCBleHByZXNzaW9uLgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBBZGQgY2FzZSBmb3IgQXR0cmlidXRlX1N0dWJfVHlwZS4KCU5vdGhpbmcgdG8gZG8gaGVyZSwgdGhlIGF0dHJpYnV0ZSBoYXMgYmVlbiByZXdyaXR0ZW4gZHVyaW5nIHNlbWFudGljCglhbmFseXNpcy4KCShFeHBhbmRfQXR0cmlidXRlX1JlZmVyZW5jZSk6IEhhbmRsZSBleHBhbnNpb24gb2YgdGhlIG5ldyBQcmlvcml0eQoJYXR0cmlidXRlCgkoRmluZF9GYXRfSW5mbyk6IEhhbmRsZSBjYXNlIG9mIHVuaXZlcnNhbCByZWFsCgkoRXhwYW5kX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfT3ApOiBGaXggdXNlIG9mIGFjY2VzcyB0byBwcm90ZWN0ZWQKCXN1YnByb2dyYW0gZnJvbSBpbnNpZGUgdGhlIGJvZHkgb2YgYSBwcm90ZWN0ZWQgZW50cnkuCgkoRXhwYW5kX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfT3ApOiBDb21tb24gcHJvY2VkdXJlIGZvciB0aGUgZXhwYW5zaW9uIG9mCgknQWNjZXNzIGFuZCAnVW5yZXN0cmljdGVkX0FjY2VzcywgdG8gdHJhbnNmb3JtIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlCglpbnRvIGEgZmF0IHBvaW50ZXIuCgkoSXNfQ29uc3RyYWluZWRfQWxpYXNlZF9WaWV3KTogTmV3IHByZWRpY2F0ZSB0byBoZWxwIGRldGVybWluZSB3aGV0aGVyIGEKCXN1YmNvbXBvbmVudCdzIGVuY2xvc2luZyB2YXJpYWJsZSBpcyBhbGlhc2VkIHdpdGggYSBjb25zdHJhaW5lZCBzdWJ0eXBlLgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UsIGNhc2UgQXR0cmlidXRlX0NvbnN0cmFpbmVkKTogRm9yIEFkYV8wNSwKCXRlc3QgSXNfQ29uc3RyYWluZWRfQWxpYXNlZF9WaWV3IHJhdGhlciB0aGFuIElzX0FsaWFzZWRfVmlldywgYmVjYXVzZQoJYW4gYWxpYXNlZCBwcmVmaXggbXVzdCBiZSBrbm93biB0byBiZSBjb25zdHJhaW5lZCBpbiBvcmRlciB0byB1c2UgVHJ1ZQoJZm9yIHRoZSBhdHRyaWJ1dGUgdmFsdWUsIGFuZCBub3cgaXQncyBwb3NzaWJsZSBmb3Igc29tZSBhbGlhc2VkIHZpZXdzCgl0byBiZSB1bmNvbnN0cmFpbmVkLgoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfY2gyLmFkYjogQ2hhbmdlIElzX0x2YWx1ZSB0byBNYXlfQmVfTHZhbHVlCgkoRXhwYW5kX0VudGl0eV9SZWZlcmVuY2UpOiBDb3JyZWN0IGVycm9yIG9mIG5vdCBoYW5kbGluZyBzdWJwcm9ncmFtCglmb3JtYWxzIGluIGN1cnJlbnRfdmFsdWUgcHJvY2Vzc2luZy4KCjIwMDYtMTAtMzEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoMy5hZHMsIGV4cF9jaDMuYWRiIChFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBEbyBub3QKCXJlZ2lzdGVyIGluIHRoZSBmaW5hbCBsaXN0IG9iamVjdHMgY29udGFpbmluZyBjbGFzcy13aWRlIGludGVyZmFjZXM7CglvdGhlcndpc2Ugd2UgaW5jb3JyZWN0bHkgcmVnaXN0ZXIgdGhlIHRhZyBvZiB0aGUgaW50ZXJmYWNlIGluIHRoZSBmaW5hbAoJbGlzdC4KCShNYWtlX0NvbnRyb2xsaW5nX0Z1bmN0aW9uX1dyYXBwZXJzKTogQWRkIG1pc3NpbmcgYmFycmllciB0byBkbyBub3QKCWdlbmVyYXRlIHRoZSB3cmFwcGVyIGlmIHRoZSBwYXJlbnQgcHJpbWl0aXZlIGlzIGFic3RyYWN0LiBUaGlzIGlzCglyZXF1aXJlZCB0byByZXBvcnQgdGhlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZS4KCShFeHBhbmRfTl9TdWJ0eXBlX0luZGljYXRpb24pOiBEbyB2YWxpZGl0eSBjaGVja3Mgb24gcmFuZ2UKCShDbGVhbl9UYXNrX05hbWVzKTogSWYgYW4gaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlIGluY2x1ZGVzIGEgY2FsbCB0bwoJaW5pdGlhbGl6ZSBhIHRhc2sgKHN1Yiljb21wb25lbnQsIGluZGljYXRlIHRoYXQgdGhlIHByb2NlZHVyZSB3aWxsIHVzZQoJdGhlIHNlY29uZGFyeSBzdGFjay4KCShCdWlsZF9Jbml0X1Byb2NlZHVyZSwgSW5pdF9TZWNvbmRhcnlfVGFncyk6IEVuYWJsZSBmdWxsIEFCSQoJY29tcGF0aWJpbGl0eSBmb3IgaW50ZXJmYWNpbmcgd2l0aCBDUFAgYnkgZGVmYXVsdC4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBPbmx5IGJ1aWxkIGFuIEFkanVzdCBjYWxsIHdoZW4gdGhlCglvYmplY3QncyB0eXBlIGlzIGEgbm9ubGltaXRlZCBjb250cm9sbGVkIHR5cGUuCgkqIGV4cF9jaDMuYWRiOiBBZGQgd2l0aCBhbmQgdXNlIG9mIEV4cF9DaDYuCgkoRXhwYW5kX05fT2JqZWN0X0RlY2xhcmF0aW9uKTogQ2hlY2sgZm9yIG9iamVjdCBpbml0aWFsaXphdGlvbiB0aGF0IGlzIGEKCWNhbGwgdG8gYnVpbGQtaW4tcGxhY2UgZnVuY3Rpb24gYW5kIGFwcGx5IE1ha2VfQnVpbGRfSW5fUGxhY2VfQ2FsbF9Jbl8KCU9iamVjdF9EZWNsYXJhdGlvbiB0byB0aGUgY2FsbC4KCShGcmVlemVfVHlwZSk6IFdoZW4gdGhlIGRlc2lnbmF0ZWQgdHlwZSBvZiBhbiBSQUNXIHdhcyBub3QgZnJvemVuIGF0IHRoZQoJcG9pbnQgd2hlcmUgdGhlIFJBQ1cgd2FzIGRlY2xhcmVkLCB2YWxpZGF0ZSB0aGUgcHJpbWl0aXZlIG9wZXJhdGlvbnMKCXdpdGggcmVzcGVjdCB0byBFLjIuMigxNCkgd2hlbiBpdCBmaW5hbGx5IGlzIGZyb3plbi4KCShCdWlsZF9Jbml0aWFsaXphdGlvbl9DYWxsLEV4cGFuZF9SZWNvcmRfQ29udHJvbGxlcik6IFJlbmFtZQoJSXNfUmV0dXJuX0J5X1JlZmVyZW5jZV9UeXBlIHRvIGJlIElzX0luaGVyZW50bHlfTGltaXRlZF9UeXBlLCBiZWNhdXNlCglyZXR1cm4tYnktcmVmZXJlbmNlIGhhcyBubyBtZWFuaW5nIGluIEFkYSAyMDA1LgoJKEluaXRfU2Vjb25kYXJ5X1RhZ3MpOiBBZGQgbWlzc2luZyBjYWxsIHRvIFNldF9PZmZzZXRfVG9fVG9wCgl0byByZWdpc3RlciB0YWcgb2YgdGhlIGltbWVkaWF0ZSBhbmNlc3RvciBpbnRlcmZhY2VzIGluIHRoZQoJcnVuLXRpbWUgc3RydWN0dXJlLgoJKEluaXRfU2Vjb25kYXJ5X1RhZ3MpOiBNb3ZlZCB0byB0aGUgc3BlY2lmaWNhdGlvbiB0byBhbGxvdyB0aGUKCWluaXRpYWxpemF0aW9uIG9mIGV4dGVuc2lvbiBhZ2dyZWdhdGVzIHdpdGggYWJzdHJhY3QgaW50ZXJmYWNlcy4KCShCdWlsZF9NYXN0ZXJfUmVuYW1pbmcpOiBNYWtlIHB1YmxpYywgZm9yIHVzZSBieSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKCXdob3NlIHJldHVybiB0eXBlIGlzIGFuIGFub255bW91cyBhY2Nlc3MgdHlwZS4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBSZXBsYWNlIGNhbGwgdG8gSW5zZXJ0X0xpc3RfQmVmb3JlIGJ5IGNhbGwgdG8KCUluc2VydF9MaXN0X0JlZm9yZV9BbmRfQW5hbHl6ZSBhZnRlciB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgc3BlY3MKCWFzc29jaWF0ZWQgd2l0aCBudWxsIHByb2NlZHVyZXMuCgkoRXhwYW5kX1RhZ2dlZF9Sb290KTogVXBkYXRlIGRvY3VtZW50YXRpb24gaW4gaXRzIHNwZWNpZmljYXRpb24uCgkoSW5pdF9TZWNvbmRhcnlfVGFncyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKEJ1aWxkX0luaXRfUHJvY2VkdXJlKTogSWYgd2UgYXJlIGNvbXBpbGluZyB1bmRlciBDUFAgZnVsbCBBQkkgY29tcGEtCgl0aWJpbGl0eSBtb2RlIGFuZCB0aGUgaW1tZWRpYXRlIGFuY2VzdG9yIGlzIGEgQ1BQX1ByYWdtYSB0YWdnZWQgdHlwZQoJdGhlbiBnZW5lcmF0ZSBjb2RlIHRvIGluaGVyaXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBkaXNwYXRjaCB0YWJsZQoJZGlyZWN0bHkgZnJvbSB0aGUgYW5jZXN0b3IuCgkoRXhwYW5kX1JlY29yZF9Db250cm9sbGVyKTogSW5zZXJ0IGNvbnRyb2xsZXIgY29tcG9uZW50IGFmdGVyIHRhZ3Mgb2YKCWltcGxlbWVudGVkIGludGVyZmFjZXMuCgkoRnJlZXplX1JlY29yZF9UeXBlKTogQ2FsbCBuZXcgcHJvY2VkdXJlIE1ha2VfTnVsbF9Qcm9jZWR1cmVfU3BlY3MgdG8KCWNyZWF0ZSBudWxsIHByb2NlZHVyZSBvdmVycmlkaW5ncyB3aGVuIG51bGwgcHJvY2VkdXJlcyBhcmUgaW5oZXJpdGVkCglmcm9tIGludGVyZmFjZXMuCgkoTWFrZV9OdWxsX1Byb2NlZHVyZV9TcGVjcyk6IE5ldyBwcm9jZWR1cmUgdG8gZ2VuZXJhdGUgbnVsbCBwcm9jZWR1cmUKCWRlY2xhcmF0aW9ucyBmb3Igb3ZlcnJpZGluZyBudWxsIHByaW1pdGl2ZXMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlcy4KCShJc19OdWxsX0ludGVyZmFjZV9Qcm9jZWR1cmUpOiBOZXcgZnVuY3Rpb24gaW4KCU1ha2VfTnVsbF9Qcm9jZWR1cmVfU3BlY3MuCgkoTWFrZV9QcmVkZWZpbmVkX1ByaW1pdGl2ZV9TcGVjcy9QcmVkZWZpbmVkX1ByaW1pdGl2ZV9Cb2RpZXMpOiBJZiB0aGUKCWltbWVkaWF0ZSBhbmNlc3RvciBvZiBhIHRhZ2dlZCB0eXBlIGlzIGFuIGFic3RyYWN0IGludGVyZmFjZSB0eXBlIHdlCgltdXN0IGdlbmVyYXRlIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBwcmVkZWZpbmVkIHByaW1pdGl2ZXMgYXNzb2NpYXRlZAoJd2l0aCBjb250cm9sbGVkIHR5cGVzIChiZWNhdXNlIHRoZSBkaXNwYXRjaCB0YWJsZSBvZiB0aGUgYW5jZXN0b3IgaXMKCW51bGwgYW5kIGhlbmNlIHRoZXNlIGVudHJpZXMgY2Fubm90IGJlIGluaGVyaXRlZCkuIFRoaXMgaXMgcmVxdWlyZWQgdG8KCWVsYWJvcmF0ZSB3ZWxsIHRoZSBkaXNwYXRjaCB0YWJsZS4KCjIwMDYtMTAtMzEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9UeXBlX0NvbnZlcnNpb24pOiBIYW5kbGUgbWlzc2luZyBpbnRlcmZhY2UgdHlwZQoJY29udmVyc2lvbi4KCShFeHBhbmRfTl9Jbik6IERvIHZhbGlkaXR5IGNoZWNrcyBvbiByYW5nZQoJKEV4cGFuZF9TZWxlY3RlZF9Db21wb25lbnQpOiBVc2UgdXBkYXRlZCBmb3Igb2YgRGVub3Rlc19EaXNjcmltaW5hbnQuCgkoRXhwYW5kX05fQWxsb2NhdG9yKTogRm9yICJuZXcgVCIsIGlmIHRoZSBvYmplY3QgaXMgY29uc3RyYWluZWQgYnkKCWRpc2NyaW1pbmFudCBkZWZhdWx0cywgYWxsb2NhdGUgdGhlIHJpZ2h0IGFtb3VudCBvZiBtZW1vcnksIHJhdGhlciB0aGFuCgl0aGUgbWF4aW11bSBmb3IgdHlwZSBULgoJKEV4cGFuZF9BbGxvY2F0b3JfRXhwcmVzc2lvbik6IFN1cHByZXNzIHRoZSBjYWxsIHRvIFJlbW92ZV9TaWRlX0VmZmVjdHMKCXdoZW4gdGhlIGFsbG9jYXRvciBpcyBpbml0aWFsaXplZCBieSBhIGJ1aWxkLWluLXBsYWNlIGNhbGwsIHNpbmNlIHRoZQoJYWxsb2NhdG9yIGlzIGFscmVhZHkgcmV3cml0dGVuIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbiByZXN1bHQsCglhbmQgdGhpcyBwcmV2ZW50cyBhbiB1bndhbnRlZCBkdXBsaWNhdGlvbiBvZiB0aGUgZnVuY3Rpb24gY2FsbC4KCUFkZCB3aXRoIGFuZCB1c2Ugb2YgRXhwX0NoNi4KCShFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3NzaW9uKTogQ2hlY2sgZm9yIGFuIGFsbG9jYXRvciB3aG9zZSBleHByZXNzaW9uCglpcyBhIGNhbGwgdG8gYnVpbGQtaW4tcGxhY2UgZnVuY3Rpb24gYW5kIGFwcGx5CglNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fQWxsb2NhdG9yIHRvIHRoZSBjYWxsIChmb3IgYm90aCB0YWdnZWQgYW5kCgl1bnRhZ2dlZCBkZXNpZ25hdGVkIHR5cGVzKS4KCShFeHBhbmRfTl9VbmNoZWNrZWRfVHlwZV9Db252ZXJzaW9uKTogRG8gbm90IGRvIGludGVnZXIgbGl0ZXJhbAoJb3B0aW1pemF0aW9uIGlmIHNvdXJjZSBvciB0YXJnZXQgaXMgYmlhc2VkLgoJKEV4cGFuZF9OX0FsbG9jYXRvcik6IEFkZCBjb21tZW50cyBmb3IgY2FzZSBvZiBhbiBhbGxvY2F0b3Igd2l0aGluIGEKCWZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBhbm9ueW1vdXMgYWNjZXNzIHR5cGUgZGVzaWduYXRpbmcgdGFza3MuCgkoRXhwYW5kX05fQWxsb2NhdG9yKTogYXBwbHkgZGlzY3JpbWluYW50IGNoZWNrcyBmb3IgYWNjZXNzCglkaXNjcmltaW5hbnRzIG9mIGFub255bW91cyBhY2Nlc3MgdHlwZXMgKEFJLTQwMiwgQUktNDE2KQoKMjAwNi0xMC0zMSAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2g1LmFkcyAoRXhwYW5kX05fRXh0ZW5kZWRfUmV0dXJuX1N0YXRlbWVudCk6IE5ldyBwcm9jZWR1cmUuCgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX05fTG9vcF9TdGF0ZW1lbnQpOiBEbyB2YWxpZGl0eSBjaGVja3Mgb24gcmFuZ2UKCShFeHBhbmRfTl9Bc3NpZ25tZW50X1N0YXRlbWVudCk6IENhbGwKCU1ha2VfQnVpbGRfSW5fUGxhY2VfQ2FsbF9Jbl9Bc3NpZ25tZW50IGlmIHRoZSByaWdodC1oYW5kIHNpZGUgaXMgYQoJYnVpbGQtaW4tcGxhY2UgZnVuY3Rpb24gY2FsbC4gQ3VycmVudGx5LCB0aGlzIGNhbiBoYXBwZW4gb25seSBmb3IKCWFzc2lnbm1lbnRzIHRoYXQgY29tZSBmcm9tIGFnZ3JlZ2F0ZXMuCglBZGQgLWduYXRkLmwgLS1Vc2UgQWRhIDk1IHNlbWFudGljcyBmb3IgbGltaXRlZCBmdW5jdGlvbiByZXR1cm5zLAoJaW4gb3JkZXIgdG8gYWxsZXZpYXRlIHRoZSB1cHdhcmQgY29tcGF0aWJpbGl0eSBpbnRyb2R1Y2VkIGJ5IEFJLTMxOC4KCShFeHBhbmRfTl9FeHRlbmRlZF9SZXR1cm5fU3RhdGVtZW50KTogQWRkIHN1cHBvcnQgZm9yIGhhbmRsaW5nIHRoZQoJcmV0dXJuIG9iamVjdCBhcyBhIGJ1aWxkLWluLXBsYWNlIHJlc3VsdC4KCShFeHBhbmRfTm9uX0Z1bmN0aW9uX1JldHVybik6IEltcGxlbWVudCBzaW1wbGUgcmV0dXJuIHN0YXRlbWVudHMgbmVzdGVkCgl3aXRoaW4gYW4gZXh0ZW5kZWQgcmV0dXJuLgoJKEVuYWJsZV9OZXdfUmV0dXJuX1Byb2Nlc3NpbmcpOiBUdXJuIG9uIHRoZSBuZXcgcHJvY2Vzc2luZyBvZiByZXR1cm4KCXN0YXRlbWVudHMuCgkoRXhwYW5kX05vbl9GdW5jdGlvbl9SZXR1cm4pOiBGb3IgYSByZXR1cm4gd2l0aGluIGFuIGV4dGVuZGVkIHJldHVybiwKCWRvbid0IHJhaXNlIFByb2dyYW1fRXJyb3IsIGJlY2F1c2UgU2VtX0NoNiBub3cgZ2l2ZXMgYSB3YXJuaW5nLgoJKEV4cGFuZF9OX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQpOiBJbXBsZW1lbnQgQUktMzE4CgkoRXhwYW5kX1NpbXBsZV9GdW5jdGlvbl9SZXR1cm4pOiBEaXR0by4KCShFeHBhbmRfTl9JZl9TdGF0ZW1lbnQpOiBIYW5kbGUgbmV3IC1nbmF0d3Qgd2FybmluZwoJKEV4cGFuZF9OX0Nhc2VfU3RhdGVtZW50KTogSGFuZGxlIG5ldyAtZ25hdHd0IHdhcm5pbmcKCShFeHBhbmRfTl9Bc3NpZ25tZW50KTogSGFuZGxlIGFzc2lnbm1lbnQgdG8gdGhlIFByaW9yaXR5IGF0dHJpYnV0ZSBvZgoJYSBwcm90ZWN0ZWQgb2JqZWN0LgoJKEV4cGFuZF9OX0Fzc2lnbm1lbnRfU3RhdGVtZW50KTogSW1wbGVtZW50IC1nbmF0VmUvRSB0byBjb250cm9sCgl2YWxpZGl0eSBjaGVja2luZyBvZiBhc3NpZ25tZW50cyB0byBlbGVtZW50YXJ5IHJlY29yZCBjb21wb25lbnRzLgoJKEV4cGFuZF9OX1JldHVybl9TdGF0ZW1lbnQpOiByZXR1cm4gQ2xhc3MgV2lkZSB0eXBlcyBvbiB0aGUgc2Vjb25kYXJ5CglzdGFjayBpbmRlcGVuZGFudGx5IG9mIHRoZWlyIGNvbnRyb2xsZWQgc3RhdHVzIHNpbmNlIHdpdGggSElFIHJ1bnRpbWVzLAoJY2xhc3Mgd2lkZSB0eXBlcyBhcmUgbm90IHBvdGVudGlhbGx5IGNvbnRyb2xsZWQgYW55bW9yZS4KCgkqIGV4cGFuZGVyLmFkYiAoRXhwYW5kKTogQWRkIGNhc2UgZm9yIG5ldyBOX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQKCW5vZGUga2luZC4KCgkqIGV4cF9jaDExLmFkYiAoRXhwYW5kX05fSGFuZGxlZF9TZXF1ZW5jZV9PZl9TdGF0ZW1lbnRzKTogQXZvaWQKCUV4cGFuZF9DbGVhbnVwX0FjdGlvbnMgaW4gY2FzZSBvZiBOX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQsIGJlY2F1c2UKCWl0IGV4cGVjdHMgYSBibG9jaywgcHJvY2VkdXJlLCBvciB0YXNrLiBUaGUgcmV0dXJuIHN0YXRlbWVudCB3aWxsIGdldAoJdHVybmVkIGludG8gYSBibG9jaywgYW5kIEV4cGFuZF9DbGVhbnVwX0FjdGlvbnMgd2lsbCBoYXBwZW4gdGhlbi4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNi5hZHMsIGV4cF9jaDYuYWRiOiBVc2UgbmV3IFZhbGlkaXR5X0NoZWNrIHN1cHByZXNzaW9uCgljYXBhYmlsaXR5LgoJKEV4cGFuZF9JbmxpbmVkX0NhbGwpOiBUYWdnZWQgdHlwZXMgYXJlIGJ5LXJlZmVyZW5jZSB0eXBlcywgYW5kCgl0aGVyZWZvcmUgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgcmVuYW1pbmcgZGVjbGFyYXRpb24gaW4gdGhlIGV4cGFuZGVkCglib2R5LCBhcyBpcyBkb25lIGZvciBsaW1pdGVkIHR5cGVzLgoJKEV4cGFuZF9DYWxsKTogSWYgdGhpcyBpcyBhIGNhbGwgdG8gYSBmdW5jdGlvbiB3aXRoIGRpc3BhdGNoaW5nIGFjY2VzcwoJcmVzdWx0LCBwcm9wYWdhdGUgdGFnIGZyb20gY29udGV4dC4KCShGcmVlemVfU3VicHJvZ3JhbSk6IEVuYWJsZSBmdWxsIEFCSSBjb21wYXRpYmlsaXR5IGZvciBpbnRlcmZhY2luZyB3aXRoCglDUFAgYnkgZGVmYXVsdC4KCShNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fQXNzaWdubWVudCk6IE5ldyBwcm9jZWR1cmUgdG8gZG8KCWJ1aWxkLWluLXBsYWNlIHdoZW4gdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGlzIGEKCWJ1aWxkLWluLXBsYWNlIGZ1bmN0aW9uIGNhbGwuCgkoTWFrZV9CdWlsZF9Jbl9QbGFjZV9DYWxsX0luX0FsbG9jYXRvcik6IEFwcGx5IGFuIHVuY2hlY2tlZCBjb252ZXJzaW9uCglvZiB0aGUgZXhwbGljaXQgZGVyZWZlcmVuY2Ugb2YgdGhlIGFsbG9jYXRvciB0byB0aGUgcmVzdWx0IHN1YnR5cGUgb2YKCXRoZSBidWlsZC1pbi1wbGFjZSBmdW5jdGlvbi4gVGhpcyBpcyBuZWVkZWQgdG8gc2F0aXNmeSB0eXBlIGNoZWNraW5nCglpbiBjYXNlcyB3aGVyZSB0aGUgY2FsbGVyJ3MgcmV0dXJuIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGFuIGFsbG9jYXRvciBmb3IKCWEgY2xhc3Mtd2lkZSBhY2Nlc3MgdHlwZSBhbmQgdGhlIHR5cGUgbmFtZWQgaW4gdGhlIGFsbG9jYXRvciBpcyBhCglzcGVjaWZpYyB0eXBlLgoJKE1ha2VfQnVpbGRfSW5fUGxhY2VfQ2FsbF9Jbl9PYmplY3RfRGVjbGFyYXRpb24pOiBBcHBseSBhbiB1bmNoZWNrZWQKCWNvbnZlcnNpb24gb2YgdGhlIHJlZmVyZW5jZSB0byB0aGUgZGVjbGFyZWQgb2JqZWN0IHRvIHRoZSByZXN1bHQgc3VidHlwZQoJb2YgdGhlIGJ1aWxkLWluLXBsYWNlIGZ1bmN0aW9uLiBUaGlzIGlzIG5lZWRlZCB0byBzYXRpc2Z5IHR5cGUgY2hlY2tpbmcKCWluIGNhc2VzIHdoZXJlIHRoZSBkZWNsYXJlZCBvYmplY3QgaGFzIGEgY2xhc3Mtd2lkZSB0eXBlLiBBbHNvLCBpbiB0aGUKCWNsYXNzLXdpZGUgY2FzZSwgY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QgZW50aXR5IHRvIHRoZSBzcGVjaWZpYwoJcmVzdWx0IHN1YnR5cGUgb2YgdGhlIGZ1bmN0aW9uLCB0byBhdm9pZCBwYXNzaW5nIGEgY2xhc3Mtd2lkZSBvYmplY3QKCXdpdGhvdXQgZXhwbGljaXQgaW5pdGlhbGl6YXRpb24gdG8gdGhlIGJhY2sgZW5kLgoJKFJlZ2lzdGVyX0ludGVyZmFjZV9EVF9FbnRyeSk6IE1vdmVkIG91dHNpZGUgdGhlIGJvZHkgb2YKCUZyZWV6ZV9TdWJwcm9ncmFtIGJlY2F1c2UgdGhpcyByb3V0aW5lIGlzIG5vdyBwdWJsaWM7IGl0IGlzIGNhbGxlZCBmcm9tCglDaGVja19EaXNwYXRjaGluZ19PdmVycmlkaW5nIHRvIGhhbmRsZSBsYXRlIG92ZXJyaWRpbmcgb2YgYWJzdHJhY3QKCWludGVyZmFjZSBwcmltaXRpdmVzLgoJKEFkZF9BY2Nlc3NfQWN0dWFsX1RvX0J1aWxkX0luX1BsYWNlX0NhbGwpOiBOZXcgdXRpbGl0eSBwcm9jZWR1cmUgZm9yCglhZGRpbmcgYW4gaW1wbGljaXQgYWNjZXNzIGFjdHVhbCBvbiBhIGNhbGwgdG8gYSBidWlsZC1pbi1wbGFjZSBmdW5jdGlvbi4KCShFeHBhbmRfQWN0dWFscyk6IFRlc3QgZm9yIGFuIGFjdHVhbCBwYXJhbWV0ZXIgdGhhdCBpcyBhIGNhbGwgdG8gYQoJYnVpbGQtaW4tcGxhY2UgZnVuY3Rpb24gYW5kIGFwcGx5CglNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fQW5vbnltb3VzX0NvbnRleHQgdG8gdGhlIGNhbGwuCgkoSXNfQnVpbGRfSW5fUGxhY2VfRnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4KCWVudGl0eSBpcyBhIGZ1bmN0aW9uIHdob3NlIGNhbGxzIHNob3VsZCBiZSBoYW5kbGVkIGFzIGJ1aWxkLWluLXBsYWNlLgoJKElzX0J1aWxkX0luX1BsYWNlX0Z1bmN0aW9uX0NhbGwpOiBOZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4KCWV4cHJlc3Npb24gaXMgYSBmdW5jdGlvbiBjYWxsIHRoYXQgc2hvdWxkIGhhbmRsZWQgYXMgYnVpbGQtaW4tcGxhY2UuCgkoTWFrZV9CdWlsZF9Jbl9QbGFjZV9DYWxsX0luX0FsbG9jYXRvcik6IE5ldyBwcm9jZWR1cmUgZm9yIGhhbmRsaW5nCgljYWxscyB0byBidWlsZC1pbi1wbGFjZSBmdW5jdGlvbnMgYXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIGFuIGFsbG9jYXRvci4KCShNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fQW5vbnltb3VzX0NvbnRleHQpOiBOZXcgcHJvY2VkdXJlIGZvcgoJaGFuZGxpbmcgY2FsbHMgdG8gYnVpbGQtaW4tcGxhY2UgZnVuY3Rpb25zIGluIGNvbnRleHRzIHRoYXQgZG8gbm90CglpbnZvbHZlIGluaXQgb2YgYSBzZXBhcmF0ZSBvYmplY3QgKGZvciBleGFtcGxlLCBhY3R1YWxzIG9mIHN1YnByb2dyYW0KCWNhbGxzKS4KCShNYWtlX0J1aWxkX0luX1BsYWNlX0NhbGxfSW5fT2JqZWN0X0RlY2xhcmF0aW9uKTogTmV3IHByb2NlZHVyZSBmb3IKCWhhbmRsaW5nIGNhbGxzIHRvIGJ1aWxkLWluLXBsYWNlIGZ1bmN0aW9ucyBhcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYW4KCW9iamVjdCBkZWNsYXJhdGlvbi4KCShEZXRlY3RfSW5maW5pdGVfUmVjdXJzaW9uKTogQWRkIGV4cGxpY2l0IHBhcmFtZXRlciBQcm9jZXNzIHRvCglpbnN0YW50aWF0aW9uIG9mIFRyYXZlcnNlX0JvZHkgdG8gYXZvaWQgdW5yZWZlcmVuY2VkIHdhcm5pbmcuCgkoQ2hlY2tfT3ZlcnJpZGluZ19Jbmhlcml0ZWRfSW50ZXJmYWNlcyk6IFJlbW92ZWQuCgkoUmVnaXN0ZXJfSW50ZXJmYWNlX0RUX0VudHJ5KTogQ29kZSBjbGVhbnVwLgoJKFJlZ2lzdGVyX1ByZWRlZmluZWRfRFRfRW50cnkpOiBDb2RlIGNsZWFudXAuCgkoRXhwYW5kX0lubGluZWRfQ2FsbC5SZXdyaXRlX1Byb2NlZHVyZV9DYWxsKTogRG8gbm90IG9taXQgYmxvY2sgYXJvdW5kCglpbmxpbmVkIHN0YXRlbWVudHMgaWYgd2l0aGluIGEgdHJhbnNpZW50IHNjb3BlLgoJKEV4cGFuZF9JbmxpbmVkX0NhbGwuUHJvY2Vzc19Gb3JtYWxzKTogV2hlbiByZXBsYWNpbmcgb2NjdXJyZW5jZXMgb2YKCWZvcm1hbCBwYXJhbWV0ZXJzIHdpdGggb2NjdXJyZW5jZXMgb2YgYWN0dWFscyBpbiBpbmxpbmVkIGJvZHksIGVzdGFibGlzaAoJdmlzaWJpbGl0eSBvbiB0aGUgcHJvcGVyIHZpZXcgb2YgdGhlIGFjdHVhbCdzIHN1YnR5cGUgZm9yIHRoZSBib2R5J3MKCWNvbnRleHQuCgkoRnJlZXplX1N1YnByb2dyYW0pOiBEbyBub3RoaW5nIGlmIHdlIGFyZSBjb21waWxpbmcgdW5kZXIgZnVsbCBBQkkKCWNvbXBhdGliaWxpdHkgbW9kZSBhbmQgd2UgaGF2ZSBhbiBpbXBvcnRlZCBDUFAgc3VicHJvZ3JhbSBiZWNhdXNlCglmb3Igbm93IHdlIGFzc3VtZSB0aGF0IGltcG9ydGVkIENQUCBwcmltaXRpdmVzIGNvcnJlc3BvbmQgd2l0aAoJb2JqZWN0cyB3aG9zZSBjb25zdHJ1Y3RvciBpcyBpbiB0aGUgQ1BQIHNpZGUgKGFuZCB0aGVyZWZvcmUgd2UKCWRvbid0IG5lZWQgdG8gZ2VuZXJhdGUgY29kZSB0byByZWdpc3RlciB0aGVtIGluIHRoZSBkaXNwYXRjaCB0YWJsZSkuCgkoRXhwYW5kX0FjdHVhbHMpOiBJbnRyb2R1Y2UgY29weSBvZiBhY3R1YWwsIG9ubHkgaWYgaXQgbWlnaHQgYmUgYSBiaXQtCglhbGlnbmVkIHNlbGVjdGVkIGNvbXBvbmVudC4KCShBZGRfQ2FsbF9CeV9Db3B5X05vZGUpOiBBZGQgbWlzc2luZyBjb2RlIHRvIGhhbmRsZSB0aGUgY2FzZSBpbiB3aGljaAoJdGhlIGFjdHVhbCBvZiBhbiBpbi1tb2RlIHBhcmFtZXRlciBpcyBhIHR5cGUgY29udmVyc2lvbi4KCShFeHBhbmRfQWN0dWFscyk6IElmIHRoZSBjYWxsIGRvZXMgbm90IGNvbWUgZnJvbSBzb3VyY2UgYW5kIHRoZSBhY3R1YWwKCWlzIHBvdGVudGlhbGx5IG1pc2FsaWduZWQsIGxldCBnaWdpIGhhbmRsZSBpdCByYXRoZXIgdGhhbiByZWplY3RpbmcgdGhlCgkoRXhwYW5kX05fU3VicHJvZ3JhbV9Cb2R5LCBGcmVlemVfU3VicHJvZ3JhbSk6IHNldCBzdWJwcm9ncmFtcyByZXR1cm5pbmcKCUNsYXNzIFdpZGUgdHlwZXMgYXMgcmV0dXJuaW5nIGJ5IHJlZmVyZW5jZSBpbmRlcGVuZGFudGx5IG9mIHRoZWlyCgljb250cm9sbGVkIHN0YXR1cyBzaW5jZSB3aXRoIEhJRSBydW50aW1lcyBjbGFzcyB3aWRlIHR5cGVzIGFyZSBub3QKCXBvdGVudGlhbGx5IGNvbnRyb2xsZWQgYW55bW9yZS4KCjIwMDYtMTAtMzEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDkuYWRiIChVcGRhdGVfUHJpdmFsX1R5cGVzKTogU2ltcGxpZnkgY29kZSBmb3IgZW50aXR5CglyZWZlcmVuY2VzIHRoYXQgYXJlIHByaXZhdGUgY29tcG9uZW50cyBvZiB0aGUgcHJvdGVjdGVkIG9iamVjdC4KCShCdWlsZF9CYXJyaWVyX0Z1bmN0aW9uKTogU2V0IGZsYWcgSXNfRW50cnlfQmFycmllcl9GdW5jdGlvbgoJKFVwZGF0ZV9Qcml2YWxfU3VidHlwZXMpOiBBZGQgZXhwbGljaXQgUHJvY2VzcyBhcmd1bWVudCB0byBUcmF2ZXJzZV9Qcm9jCglpbnN0YW50aWF0aW9uIHRvIGRlYWwgd2l0aCB3YXJuaW5ncy4KCShJbml0aWFsaXplX1Byb3RlY3Rpb24pOiBJZiBleHByZXNzaW9uIGZvciBwcmlvcml0eSBpcyBub24tc3RhdGljLCB1c2UKCVN5c3RlbV9Qcmlvcml0eSBhcyBpdHMgZXhwZWN0ZWQgdHlwZSwgaW4gY2FzZSB0aGUgZXhwcmVzc2lvbiBoYXMgbm90CgliZWVuIGFuYWx5emVkIHlldC4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX2RidWcuYWRzLCBleHBfZGJ1Zy5hZGIgKEdldF9FeHRlcm5hbF9OYW1lKTogQWRkIG1pc3NpbmcKCWluaXRpYWxpemF0aW9uIG9mIEhvbW9ueW1fTGVuLgoJKEZ1bGx5X1F1YWxpZnlfTmFtZSk6IFJlbW92ZSBrbHVkZ2UgdG8gZWxpbWluYXRlIGFub255bW91cyBibG9jawoJbmFtZXMgZnJvbSBmdWxseSBxdWFsaWZpZWQgbmFtZS4gRml4ZXMgcHJvYmxlbSBvZiBkdXBsaWNhdGUKCWV4dGVybmFsIG5hbWVzIGRpZmZlcmluZyBvbmx5IGluIHRoZSBwcmVzZW5jZSBvZiBzdWNoIGEgYmxvY2sgbmFtZS4KCjIwMDYtMTAtMzEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgUGFibG8gT2xpdmVpcmEgIDxvbGl2ZWlyYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoR2V0X1N1YnByb2dyYW1fSWRzKTogVGhpcyBmdW5jdGlvbiB3aWxsIG5vIG1vcmUgYXNzaWduCglzdWJwcm9ncmFtIElkcywgZXZlbiBpZiB0aGV5IGFyZSBub3QgeWV0IGFzc2lnbmVkLgoJKEJ1aWxkX1N1YnByb2dyYW1fSWQpOiBJdCBpcyBub3cgdGhpcyBmdW5jdGlvbiB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mCgljYWxsaW5nIEFzc2lnbl9TdWJwcm9ncmFtX0lkcyBpZiBuZWNlc3NhcnkuCgkoQWRkX1JlY2VpdmluZ19TdHVic19Ub19EZWNsYXJhdGlvbnMpOiBDaGVja2luZyB0aGUgc3VicHJvZ3JhbXMgaWRzCglzaG91bGQgYmUgZG9uZSBvbmx5IG9uY2UgdGhleSBhcmUgYXNzaWduZWQuCgkoQnVpbGRfRnJvbV9BbnlfRnVuY3Rpb24sIGNhc2Ugb2YgdGFnZ2VkIHR5cGVzKTogQWRkIG1pc3NpbmcgY2FsbCB0bwoJQWxsb2NhdGVfQnVmZmVyLgoJKENvcnJlc3BvbmRpbmdfU3R1Yl9UeXBlKTogTmV3IHN1YnByb2dyYW0uIFJldHVybnMgdGhlIGFzc29jaWF0ZWQgc3R1YgoJdHlwZSBmb3IgYW4gUkFDVyB0eXBlLgoJKEFkZF9SQUNXX0ZlYXR1cmVzKTogV2hlbiBwcm9jZXNzaW5nIGFuIFJBQ1cgZGVjbGFyYXRpb24gZm9yIHdoaWNoIHRoZQoJZGVzaWduYXRlZCB0eXBlIGlzIGFscmVhZHkgZnJvemVuLCBlbmZvcmNlIEUuMi4yKDE0KSBydWxlcyBpbW1lZGlhdGVseS4KCShHQVJMSUNfU3VwcG9ydC5CdWlsZF9TdWJwcm9ncmFtX1JlY2VpdmluZ19TdHVicyk6IERvIG5vdCBwZXJmb3JtIGFueQoJc3BlY2lhbCByZW9yZGVyaW5nIG9mIGNvbnRyb2xsaW5nIGZvcm1hbHMuCgoJKiBleHBfZGlzdC5hZHMgKENvcnJlc3BvbmRpbmdfU3R1Yl9UeXBlKTogTmV3IHN1YnByb2dyYW0uIFJldHVybnMgdGhlCglhc3NvY2lhdGVkIHN0dWIgdHlwZSBmb3IgYW4gUkFDVyB0eXBlLgoKMjAwNi0xMC0zMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2ZpeGQuYWRiIChSb3VuZGVkX1Jlc3VsdF9TZXQpOiBGb3IgbXVsdGlwbGljYXRpb24gYW5kIGRpdmlzaW9uIG9mCglmaXhlZC1wb2ludCBvcGVyYXRpb25zIGluIGFuIGludGVnZXIgY29udGV4dCwgaS5lLiBhcyBvcGVyYW5kcyBvZiBhCgljb252ZXJzaW9uIHRvIGFuIGludGVnZXIgdHlwZSwgaW5kaWNhdGUgdGhhdCByZXN1bHQgbXVzdCBiZSByb3VuZGVkLgoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfaW1ndi5hZGIgKEV4cGFuZF9JbWFnZV9BdHRyaWJ1dGUpOiBGb3IgV2lkZV9bV2lkZV9dQ2hhcmFjdGVyCgljYXNlcywgcGFzcyB0aGUgZW5jb2RpbmcgbWV0aG9kLCBzaW5jZSBpdCBpcyBub3cgcmVxdWlyZWQgYnkgdGhlIHJ1bgoJdGltZS4KCgkqIHMtdmFsd2NoLmFkcywgcy12YWx3Y2guYWRiIChWYWx1ZV9XaWRlX1dpZGVfQ2hhcmFjdGVyKTogQXZvaWQKCWFzc3VtcHRpb24gdGhhdCBTdHInRmlyc3QgPSAxLgoJKFZhbHVlX1dpZGVfQ2hhcmFjdGVyKTogVGFrZXMgRU0gKGVuY29kaW5nIG1ldGhvZCkgcGFyYW1ldGVyIGFuZCBwYXNzZXMKCWl0IG9uIHRvIHRoZSBWYWx1ZV9XaWRlX1dpZGVfQ2hhcmFjdGVyIGNhbGwuCgkoVmFsdWVfV2lkZV9XaWRlX0NoYXJhY3Rlcik6IFRha2VzIEVNIChlbmNvZGluZyBtZXRob2QpIHBhcmFtZXRlciBhbmQKCXByb3Blcmx5IGhhbmRsZXMgYSBzdHJpbmcgb2YgdGhlIGZvcm0gcXVvdGUtZW5jb2RlZF93aWRlX2NoYXItcXVvdGUuCgoJKiBzLXdjaGNudi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNi0xMC0zMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2ludHIuYWRiIChFeHBhbmRfRGlzcGF0Y2hpbmdfQ29uc3RydWN0b3JfQ2FsbCk6IEFkZCBtaXNzaW5nCglydW4tdGltZSBtZW1iZXJzaGlwIHRlc3QgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnN0cnVjdGVkIG9iamVjdAoJaW1wbGVtZW50cyB0aGUgdGFyZ2V0IGFic3RyYWN0IGludGVyZmFjZS4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX3ByYWcuYWRiIChFeHBhbmRfUHJhZ21hX0NvbW1vbl9PYmplY3QpOiBVc2UgYSBzaW5nbGUKCU1hY2hpbmVfQXR0cmlidXRlIHByYWdtYSBpbnRlcm5hbGx5IHRvIGltcGxlbWVudCB0aGUgdXNlciBwcmFnbWEuCglBZGQgcHJvY2Vzc2luZyBmb3IgcHJhZ21hIEludGVyZmFjZSBzbyB0aGF0IGl0IGlzIG5vdyBjb21wbGV0ZWx5CgllcXVpdmFsZW50IHRvIHByYWdtYSBJbXBvcnQuCgoJKiBzZW1fcHJhZy5hZGIgKEFuYWx5emVfUHJhZ21hLCBjYXNlIE9ic29sZXNjZW50KTogRXh0ZW5kIHRoaXMgcHJhZ21hCglzbyB0aGF0IGl0IGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBlbnRpdGllcywgaW5jbHVkaW5nIHJlY29yZCBjb21wb25lbnRzCglhbmQgZW51bWVyYXRpb24gbGl0ZXJhbHMuCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcpOiBDaGVjayB3aGV0aGVyCglwcmlvcml0eSByYW5nZXMgYXJlIGNvcnJlY3QsIHZlcmlmeSBjb21wYXRpYmlsaXR5IGFnYWluc3QgdGFzawoJZGlzcGF0Y2hpbmcgYW5kIGxvY2tpbmcgcG9saWNpZXMsIGFuZCBpZiBldmVyeXRoaW5nIGlzIGNvcnJlY3QgYW4gZW50cnkKCWlzIGFkZGVkIHRvIHRoZSB0YWJsZSBjb250YWluaW5nIHByaW9yaXR5IHNwZWNpZmljIGRpc3BhdGNoaW5nIGVudHJpZXMKCWZvciB0aGlzIGNvbXBpbGF0aW9uIHVuaXQuCgkoRGVsYXlfQ29uZmlnX1ByYWdtYV9BbmFseXplKTogRGVsYXkgcHJvY2Vzc2luZwoJUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcgcHJhZ21hcyBiZWNhdXNlIHdoZW4gcHJvY2Vzc2luZyB0aGUKCXByYWdtYSB3ZSBuZWVkIHRvIGFjY2VzcyBydW4tdGltZSBkYXRhLCBzdWNoIGFzIHRoZSByYW5nZSBvZgoJU3lzdGVtLkFueV9Qcmlvcml0eS4KCShTaWdfRmxhZ3MpOiBBZGQgUHJhZ21hX1ByaW9yaXR5X1NwZWNpZmljX0Rpc3BhdGNoaW5nLgoJQWxsb3cgcHJhZ21hIFVucmVmZXJlbmNlZCBhcyBhIGNvbnRleHQgaXRlbQoJQWRkIHByYWdtYSBQcmVlbGFib3JhYmxlX0luaXRpYWxpemF0aW9uCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgSW50ZXJmYWNlKTogSW50ZXJmYWNlIGlzIGV4dGVuZGVkIHNvIHRoYXQgaXQgaXMKCW5vdyBzeW50YWN0aWNhbGx5IGFuZCBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBJbXBvcnQuCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgQ29tcGlsZV9UaW1lX1dhcm5pbmcpOiBGaXggZXJyb3Igb2YgYmxvd3VwcyBvbgoJaW5zZXJ0aW9uIGNoYXJhY3RlcnMuCglBZGQgaGFuZGxpbmcgZm9yIFByYWdtYV9XaWRlX0NoYXJhY3Rlcl9FbmNvZGluZwoJKFByb2Nlc3NfUmVzdHJpY3Rpb25zX1Jlc3RyaWN0aW9uX1dhcm5pbmdzKTogRW5zdXJlIHRoYXQgYSB3YXJuaW5nCgluZXZlciBzdXBlcmNlZGVzIGEgcmVhbCByZXN0cmljdGlvbiwgYW5kIHRoYXQgYSByZWFsIHJlc3RyaWN0aW9uCglhbHdheXMgc3VwZXJjZWRlcyBhIHdhcm5pbmcuCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgQXNzZXJ0KTogU2V0IExvd19Cb3VuZF9Lbm93biBpZiBhc3NlcnQgaXMgb2YKCWFwcHJvcHJpYXRlIGZvcm0uCgoyMDA2LTEwLTMxICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNy5hZGIgKEJ1aWxkX0FycmF5X0RlZXBfUHJvY3MsIEJ1aWxkX1JlY29yZF9EZWVwX1Byb2NzLAoJTWFrZV9EZWVwX1JlY29yZF9Cb2R5KTogUmVuYW1lIElzX1JldHVybl9CeV9SZWZlcmVuY2VfVHlwZSB0byBiZQoJSXNfSW5oZXJlbnRseV9MaW1pdGVkX1R5cGUsIGJlY2F1c2UgcmV0dXJuLWJ5LXJlZmVyZW5jZSBoYXMgbm8gbWVhbmluZwoJaW4gQWRhIDIwMDUuCgkoRmluZF9Ob2RlX1RvX0JlX1dyYXBwZWQpOiBVc2UgbmV3IG1ldGhvZCBvZiBkZXRlcm1pbmluZyB0aGUgcmVzdWx0Cgl0eXBlIG9mIHRoZSBmdW5jdGlvbiBjb250YWluaW5nIGEgcmV0dXJuIHN0YXRlbWVudCwgYmVjYXVzZSB0aGUKCVJldHVybl9UeXBlIGZpZWxkIHdhcyByZW1vdmVkLiBXZSBub3cgdXNlIHRoZSBSZXR1cm5fQXBwbGllc19UbyBmaWVsZC4KCgkqIGV4cF91dGlsLmFkcywgZXhwX3V0aWwuYWRiOiBVc2UgbmV3IHN1YnR5cGUgTl9NZW1iZXJzaGlwX1Rlc3QKCShCdWlsZF9UYXNrX0ltYWdlX0RlY2wpOiBJZiBwcm9jZWR1cmUgaXMgbm90IGNhbGxlZCBmcm9tIGFuCglpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUsIGluZGljYXRlIHRoYXQgZnVuY3Rpb24gdGhhdCBidWlsZHMgdGFzayBuYW1lCgl1c2VzIHRoZSBzZWMuIHN0YWNrLiBPdGhlcndpc2UgdGhlIGVuY2xvc2luZyBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUKCXdpbGwgY2FycnkgdGhlIGluZGljYXRpb24uCgkoSW5zZXJ0X0FjdGlvbnMpOiBSZW1vdmUgTl9SZXR1cm5fT2JqZWN0X0RlY2xhcmF0aW9uLiBXZSBub3cgdXNlCglOX09iamVjdF9EZWNsYXJhdGlvbiBpbnN0ZWFkLgoJKEtpbGxfRGVhZF9Db2RlKTogTmV3IGludGVyZmFjZSB0byBpbXBsZW1lbnQgLWduYXR3dCB3YXJuaW5nIGZvcgoJY29uZGl0aW9uYWwgZGVhZCBjb2RlIGtpbGxlZCwgYW5kIGNoYW5nZSBpbXBsZW1lbnRhdGlvbiBhY2NvcmRpbmdseS4KCShJbnNlcnRfQWN0aW9ucyk6IEFkZCBOX1JldHVybl9PYmplY3RfRGVjbGFyYXRpb24gY2FzZS4KCUNvcnJlY3QgY29tbWVudCB0byBtZW50aW9uIE5fRXh0ZW5zaW9uX0FnZ3JlZ2F0ZSBub2RlLgoJKFNldF9DdXJyZW50X1ZhbHVlX0NvbmRpdGlvbik6IENhbGwgU2FmZV9Ub19DYXB0dXJlX1ZhbHVlIHRvIGF2b2lkIGJhZAoJYXR0ZW1wdHMgdG8gc2F2ZSBpbmZvcm1hdGlvbiBmb3IgZ2xvYmFsIHZhcmlhYmxlcyB3aGljaCBjYW5ub3QgYmUKCXNhZmVseSB0cmFja2VkLgoJKEdldF9DdXJyZW50X1ZhbHVlX0NvbmRpdGlvbik6IEhhbmRsZSBjb25kaXRpb25zIHRoZSBvdGhlciB3YXkgcm91bmQKCShjb25zdGFudCBvbiBsZWZ0KS4gQWxzbyBoYW5kbGUgcmlnaHQgb3BlcmFuZCBvZiBBTkQgYW5kIEFORCBUSEVOCgkoU2V0X0N1cnJlbnRfVmFsdWVfQ29uZGl0aW9uKTogQ29ycmVzcG9uZGluZyBjaGFuZ2VzCgkoQXBwZW5kX0ZyZWV6ZV9BY3Rpb24pOiBSZW1vdmUgdW5uZWNlc3NhcnkgaW5pdGlhbGl6YXRpb24gb2YgRm5vZGUuCgkoR2V0X0N1cnJlbnRfVmFsdWVfQ29uZGl0aW9uKTogSGFuZGxlIHNpbXBsZSBib29sZWFuIG9wZXJhbmRzCgkoR2V0X0N1cnJlbnRfVmFsdWVfQ29uZGl0aW9uKTogSGFuZGxlIGxlZnQgb3BlcmFuZCBvZiBBTkQgb3IgQU5EIFRIRU4KCShHZXRfQ3VycmVudF9WYWx1ZV9Db25kaXRpb24pOiBJZiB0aGUgdmFyaWFibGUgcmVmZXJlbmNlIGlzIHdpdGhpbiBhbgoJaWYtc3RhdGVtZW50LCBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIGxpc3Qgb2YgdGhlbl9zdGF0bWVudHMsIGFuZCBkb2VzCglub3QgY29tZSBmcm9tIHNvdXJjZSwgdHJlYXQgaXQgYXMgYmVpbmcgYXQgdW5rbm93biBsb2NhdGlvbi4KCShHZXRfQ3VycmVudF9WYWx1ZV9Db25kaXRpb24pOiBFbmhhbmNlIHRvIGFsbG93IHdoaWxlIHN0YXRlbWVudHMgdG8gYmUKCXByb2Nlc3NlZCBhcyB3ZWxsIGFzIGlmIHN0YXRlbWVudHMuCgkoTmV3X0NsYXNzX1dpZGVfU3VidHlwZSk6IFRoZSBlbnRpdHkgZm9yIGEgY2xhc3Mtd2lkZSBzdWJ0eXBlIGRvZXMgbm90Cgljb21lIGZyb20gc291cmNlLgoJKE9LX1RvX0RvX0NvbnN0YW50X1JlcGxhY2VtZW50KTogQWxsb3cgY29uc3RhbnQgcmVwbGFjZW1lbnQgd2l0aGluIGJvZHkKCW9mIGxvb3AuIFRoaXMgaXMgc2FmZSBub3cgdGhhdCB3ZSBmaXhlZCBLaWxsX0N1cnJlbnRfVmFsdWVzLgoJKE9LX1RvX0RvX0NvbnN0YW50X1JlcGxhY2VtZW50KTogQ2hlY2sgd2hldGhlciBjdXJyZW50IHNjb3BlIGlzCglTdGFuZGFyZCwgYmVmb3JlIGV4YW1pbmluZyBvdXRlciBzY29wZXMuCgoyMDA2LTEwLTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGtydW5jaC5hZHMsIGtydW5jaC5hZGIgKEtydW5jaCk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBWTVNfT25fVGFyZ2V0LgoJV2hlbiBUcnVlLCBhcHBseSBWTVMgdHJlYXRtZW50IHRvIGNoaWxkcmVuIG9mIHBhY2thZ2VzIEEsIEcsIEkgYW5kIFMuCglGb3IgRjMyMC0wMTYKCgkqIGZuYW1lLXVmLmFkYiAoR2V0X0ZpbGVfTmFtZSk6IENhbGwgS3J1bmNoIHdpdGggT3BlblZNU19Pbl9UYXJnZXQKCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGZyZWV6ZS5hZGI6IEFkZCBoYW5kbGluZyBvZiBMYXN0X0Fzc2lnbm1lbnQgZmllbGQKCShXYXJuX092ZXJsYXkpOiBTdXBwbHkgbWlzc2luZyBjb250aW51YXRpb24gbWFya3MgaW4gZXJyb3IgbXNncwoJKEZyZWV6ZV9FbnRpdHkpOiBBZGQgY2hlY2sgZm9yIFByZWVsYWJvcmFibGVfSW5pdGlhbGl6YXRpb24KCgkqIGctY29tbGluLmFkYjogQWRkIFdhcm5pbmdzIChPZmYpIHRvIHByZXZlbnQgbmV3IHdhcm5pbmcKCgkqIGctZXhwZWN0LmFkYjogQWRkIFdhcm5pbmdzIChPZmYpIHRvIHByZXZlbnQgbmV3IHdhcm5pbmcKCgkqIGxpYi14cmVmLmFkYjogQWRkIGhhbmRsaW5nIG9mIExhc3RfQXNzaWdubWVudCBmaWVsZAoJKEdlbmVyYXRlX1JlZmVyZW5jZSk6IENlbnRyYWxpemUgaGFuZGxpbmcgb2YgcHJhZ21hIE9ic29sZXNjZW50IGhlcmUKCShHZW5lcmF0ZV9SZWZlcmVuY2UpOiBBY2NlcHQgYW4gaW1wbGljaXQgcmVmZXJlbmNlIGdlbmVyYXRlZCBmb3IgYQoJZGVmYXVsdCBpbiBhbiBpbnN0YW5jZS4KCShHZW5lcmF0ZV9SZWZlcmVuY2UpOiBBY2NlcHQgYSByZWZlcmVuY2UgZm9yIGEgbm9kZSB0aGF0IGlzIG5vdCBpbiB0aGUKCW1haW4gdW5pdCwgaWYgaXQgaXMgdGhlIGdlbmVyaWMgYm9keSBjb3JyZXNwb25kaW5nIHRvIGFuIHN1YnByb2dyYW0KCWluc3RhbnRpYXRpb24uCgoJKiB4cmVmX2xpYi5hZGI6IEFkZCBwcmFnbWEgV2FybmluZ3MgKE9mZikgdG8gYXZvaWQgbmV3IHdhcm5pbmdzCgoJKiBzZW1fd2Fybi5hZHMsIHNlbV93YXJuLmFkYiAoU2V0X1dhcm5pbmdfU3dpdGNoKTogQWRkIHByb2Nlc3NpbmcgZm9yCgktZ25hdHdxL1EuCgkoV2Fybl9Pbl9Vc2VsZXNzX0Fzc2lnbm1lbnQpOiBTdXBwcmVzcyB3YXJuaW5nIGlmIGVuY2xvc2luZyBpbm5lcgoJZXhjZXB0aW9uIGhhbmRsZXIuCgkoT3V0cHV0X09ic29sZXNjZW50X0VudGl0eV9XYXJuaW5ncyk6IFJld3JpdGUgdG8gYXZvaWQgYW55IG1lc3NhZ2VzIG9uCgl1c2UgY2xhdXNlcywgdG8gYXZvaWQgbWVzc2FnZXMgb24gcGFja2FnZXMgdXNlZCB0byBxdWFsaWZ5LCBhbmQgYWxzbwoJdG8gYXZvaWQgbWVzc2FnZXMgZnJvbSBvYnNvbGVzY2VudCB1bml0cy4KCShXYXJuX09uX1VzZWxlc3NfQXNzaWdubWVudHMpOiBEb24ndCBnZW5lcmF0ZSBtZXNzYWdlcyBmb3IgaW1wb3J0ZWQKCWFuZCBleHBvcnRlZCB2YXJpYWJsZXMuCgkoV2Fybl9Pbl9Vc2VsZXNzX0Fzc2lnbm1lbnRzKTogTmV3IHByb2NlZHVyZQoJKE91dHB1dF9PYnNvbGVzY2VudF9FbnRpdHlfV2FybmluZ3MpOiBOZXcgcHJvY2VkdXJlCgkoQ2hlY2tfQ29kZV9TdGF0ZW1lbnQpOiBOZXcgcHJvY2VkdXJlCgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYiAoSGFzX1N0YXRpY19EaXNjcmltaW5hbnRzKTogTmV3IGZsYWcKCUNoYW5nZSBuYW1lIElzX0FkYV8yMDA1IHRvIElzX0FkYV8yMDA1X09ubHkKCShMYXN0X0Fzc2lnbm1lbnQpOiBOZXcgZmllbGQgZm9yIHVzZWxlc3MgYXNzaWdubWVudCB3YXJuaW5nCgoyMDA2LTEwLTMxICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogZy1hbGxldmUuYWRiIChsdngsIHN0dngpOiBDZWlsLVJvdW5kIHRoZSBFZmZlY3RpdmUgQWRkcmVzcyB0byB0aGUKCWNsb3Nlc3QgbXVsdGlwbGUgb2YgVkVDVE9SX0FMSUdOTUVOVCBhbmQgbm90IHRoZSBjbG9zZXN0IG11bHRpcGxlIG9mIDE2LgoKMjAwNi0xMC0zMSAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGctYXdrLmFkYiAoRGVmYXVsdF9TZXNzaW9uLCBDdXJyZW50X1Nlc3Npb24pOiBDb21waWxlIHRoaXMgZmlsZSBpbgoJQWRhIDk1IG1vZGUsIGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIG5ldyBydWxlcyBmb3IgQUktMzE4LgoKCSogZy1hd2suYWRzOiBVc2Ugb3ZlcmxvYWRlZCBzdWJwcm9ncmFtcyBpbiBldmVyeSBjYXNlIHdoZXJlIHdlIHVzZWQgdG8KCWhhdmUgYSBkZWZhdWx0IG9mIEN1cnJlbnRfU2Vzc2lvbi4gVGhpcyBtYWtlcyB0aGUgY29kZSBjbG9zZXIgdG8gYmUKCWNvcnJlY3QgZm9yIGJvdGggQWRhIDk1IGFuZCAyMDA1LgoKCSogZy1tb3JlZXguYWRiIChPY2N1cnJlbmNlKTogVHVybiBvZmYgd2FybmluZ3MgZm9yIGlsbGVnYWwtaW4tQWRhLTIwMDUKCWNvZGUsIHJlbHlpbmcgb24gdGhlIGZhY3QgdGhhdCB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIGEgd2FybmluZwoJaW5zdGVhZCBvZiBhbiBlcnJvciBpbiAtZ25hdGcgbW9kZS4KCgkqIGxpYi14cmVmLmFkcyAoWHJlZl9FbnRpdHlfTGV0dGVycyk6IEFkZCBlbnRyeSBmb3IgbmV3CglFX1JldHVybl9TdGF0ZW1lbnQgZW50aXR5IGtpbmQuCglBZGQgYW4gZW50cnkgZm9yIEVfSW5jb21wbGV0ZV9TdWJ0eXBlIGluIFhyZWZfRW50aXR5X0xldHRlcnMuCgoJKiBwYXIuYWRiIChQX0ludGVyZmFjZV9UeXBlX0RlZmluaXRpb24pOiBBZGRpdGlvbiBvZiBvbmUgZm9ybWFsIHRvCglyZXBvcnQgYW4gZXJyb3IgaWYgdGhlIHJlc2VydmVkIHdvcmQgYWJzdHJhY3QgaGFzIGJlZW4gcHJldmlvdXNseSBmb3VuZC4KCShTU19FbmRfVHlwZSk6IEFkZCBFX1JldHVybiBmb3IgbmV3IGV4dGVuZGVkX3JldHVybl9zdGF0ZW1lbnQgc3ludGF4LgoKCSogcGFyLWNoNC5hZGIgKFBfQWdncmVnYXRlX09yX1BhcmVuX0V4cHIpOiBJbXByb3ZlIG1lc3NhZ2UgZm9yCglwYXJlbnRoZXNpemVkIHJhbmdlIGF0dHJpYnV0ZSB1c2FnZQoJKFBfRXhwcmVzc2lvbl9Ob19SaWdodF9QYXJlbik6IEFkZCBtaXNzaW5nIGNvbW1lbnQgYWJvdXQgZXJyb3IgcmVjb3ZlcnkuCgoJKiBwYXItY2g2LmFkYiAoUF9SZXR1cm5fT2JqZWN0X0RlY2xhcmF0aW9uKTogQUktMzE4OiBBbGxvdyAiY29uc3RhbnQiCglpbiB0aGUgc3ludGF4IGZvciBleHRlbmRlZF9yZXR1cm5fc3RhdGVtZW50LiBUaGlzIGlzIG5vdCBpbiB0aGUgbGF0ZXN0CglSTSwgYnV0IHRoZSBBUkcgaXMgZXhwZWN0ZWQgdG8gaXNzdWUgYW4gQUkgYWxsb3dpbmcgdGhpcy4KCShQX1JldHVybl9TdWJ0eXBlX0luZGljYXRpb24sUF9SZXR1cm5fU3VidHlwZV9JbmRpY2F0aW9uKTogUmVtb3ZlCglOX1JldHVybl9PYmplY3RfRGVjbGFyYXRpb24uIFdlIG5vdyB1c2UgTl9PYmplY3RfRGVjbGFyYXRpb24gaW5zdGVhZC4KCShQX1JldHVybl9PYmplY3RfRGVjbGFyYXRpb24sIFBfUmV0dXJuX1N1YnR5cGVfSW5kaWNhdGlvbiwKCVBfUmV0dXJuX1N0YXRlbWVudCk6IFBhcnNlIHRoZSBuZXcgc3ludGF4IGZvciBleHRlbmRlZF9yZXR1cm5fc3RhdGVtZW50LgoKCSogcGFyLWVuZGguYWRiIChDaGVja19FbmQsIE91dHB1dF9FbmRfRGVsZXRlZCwgT3V0cHV0X0VuZF9FeHBlY3RlZCwKCU91dHB1dF9FbmRfTWlzc2luZyk6IEFkZCBlcnJvci1yZWNvdmVyeSBjb2RlIGZvciB0aGUgbmV3CglleHRlbmRlZF9yZXR1cm5fc3RhdGVtZW50IHN5bnRheDsgdGhhdCBpcywgdGhlIG5ldyBFX1JldHVybiBlbnRyeSBvbgoJdGhlIHNjb3BlIHN0YWNrLgoKCSogcy1hdXhkZWMtdm1zXzY0LmFkcywgcy1hdXhkZWMuYWRzIChBU1RfSGFuZGxlcik6IENoYW5nZSB0eXBlIGZyb20KCWxpbWl0ZWQgdG8gbm9ubGltaXRlZCwgYmVjYXVzZSBvdGhlcndpc2Ugd2UgdmlvbGF0ZSB0aGUgbmV3IEFkYSAyMDA1CglydWxlcyBhYm91dCByZXR1cm5pbmcgbGltaXRlZCB0eXBlcyBpbiBmdW5jdGlvbiBDcmVhdGVfQVNUX0hhbmRsZXIgaW4KCXMtYXN0aGFuLmFkYi4KCgkqIHNlbS5hZGIgKEFuYWx5emUpOiBBZGQgY2FzZXMgZm9yIG5ldyBub2RlIGtpbmRzCglOX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQgYW5kIE5fUmV0dXJuX09iamVjdF9EZWNsYXJhdGlvbi4KCgkqIHNlbV9hZ2dyLmFkYiAoQWdncmVnYXRlX0NvbnN0cmFpbnRfQ2hlY2tzKTogVmVyaWZ5IHRoYXQgY29tcG9uZW50Cgl0eXBlIGlzIGluIHRoZSBzYW1lIGNhdGVnb3J5IGFzIHR5cGUgb2YgY29udGV4dCBiZWZvcmUgYXBwbHlpbmcgY2hlY2ssCgl0byBwcmV2ZW50IGFub21hbGllcyBpbiBpbnN0YW50aWF0aW9ucy4KCShSZXNvbHZlX0FnZ3JlZ2F0ZSk6IFJlbW92ZSB0ZXN0IGZvciBsaW1pdGVkIGNvbXBvbmVudHMgaW4gYWdncmVnYXRlcy4KCUl0J3MgdW5uZWNlc3NhcnkgaW4gQWRhIDk1LCBiZWNhdXNlIGlmIGl0IGhhcyBsaW1pdGVkIGNvbXBvbmVudHMsIHRoZW4KCWl0IG11c3QgYmUgbGltaXRlZC4gSXQncyB3cm9uZyBpbiBBZGEgMjAwNSwgYmVjYXVzZSBsaW1pdGVkIGFnZ3JlZ2F0ZXMKCWFyZSBub3cgYWxsb3dlZC4KCShSZXNvbHZlX1JlY29yZF9BZ2dyZWdhdGUpOiBNb3ZlIGNoZWNrIGZvciBsaW1pdGVkIHR5cGVzIGxhdGVyLCBiZWNhdXNlCglPS19Gb3JfTGltaXRlZF9Jbml0IHJlcXVpcmVzIGl0cyBhcmd1bWVudCB0byBoYXZlIGJlZW4gcmVzb2x2ZWQuCgkoR2V0X1ZhbHVlKTogV2hlbiBjb3B5aW5nIHRoZSBjb21wb25lbnQgZGVmYXVsdCBleHByZXNzaW9uIGZvciBhCglkZWZhdWx0ZWQgYXNzb2NpYXRpb24gaW4gYW4gYWdncmVnYXRlLCB1c2UgdGhlIHNsb2Mgb2YgdGhlIGFnZ3JlZ2F0ZQoJYW5kIG5vdCB0aGF0IG9mIHRoZSBvcmlnaW5hbCBleHByZXNzaW9uLCB0byBwcmV2ZW50IHNwdXJpb3VzCgllbGFib3JhdGlvbiBlcnJvcnMsIHdoZW4gdGhlIGV4cHJlc3Npb24gaW5jbHVkZXMgZnVuY3Rpb24gY2FsbHMuCgkoQ2hlY2tfTm9uX0xpbWl0ZWRfVHlwZSk6IENvcnJlY3QgY29kZSBmb3IgQUktMjg3LCBleHRlbnNpb24gYWdncmVnYXRlcwoJd2VyZSBtaXNzaW5nLiBXZSBhbHNvIGRpZG4ndCBoYW5kbGUgcXVhbGlmaWVkIGV4cHJlc3Npb25zLiBOb3cgYWxzbwoJYWxsb3cgZnVuY3Rpb24gY2FsbHMuIFVzZSBuZXcgY29tbW9uIHJvdXRpbmUgT0tfRm9yX0xpbWl0ZWRfSW5pdC4KCShSZXNvbHZlX0V4dGVuc2lvbl9BZ2dyZWdhdGUpOiBNaW5vciBmaXggdG8gYmFkIGVycm9yIG1lc3NhZ2UgKHN0YXJ0ZWQKCXdpdGggc3BhY2UgY2FuIHVwcGVyIGNhc2UgbGV0dGVyKS4KCgkqIHNlbV9jaDMuYWRzLCBzZW1fY2gzLmFkYiAoQ3JlYXRlX0NvbnN0cmFpbmVkX0NvbXBvbmVudHMpOiBTZXQKCUhhc19TdGF0aWNfRGlzY3JpbWluYW50cyBmbGFnCgkoUmVjb3JkX1R5cGVfRGVjbGFyYXRpb24pOiBEaWFnbm9zZSBhbiBhdHRlbXB0IHRvIGRlY2xhcmUgYW4gaW50ZXJmYWNlCgl0eXBlIHdpdGggZGlzY3JpbWluYW50cy4KCShQcm9jZXNzX1JhbmdlX0V4cHJfSW5fRGVjbCk6IERvIHZhbGlkaXR5IGNoZWNrcyBvbiByYW5nZQoJKEJ1aWxkX0Rpc2NyaW1pbmFudF9Db25zdHJhaW50cyk6IFVzZSB1cGRhdGVkIGZvcm0gb2YKCURlbm90ZXNfRGlzY3JpbWluYW50LgoJKFByb2Nlc3NfU3VidHlwZSk6IElmIHRoZSBzdWJ0eXBlIGlzIGEgcHJpdmF0ZSBzdWJ0eXBlIHdob3NlIGZ1bGwgdmlldwoJaXMgYSBjb25jdXJyZW50IHN1YnR5cGUsIGludHJvZHVjZSBhbiBpdHlwZSByZWZlcmVuY2UgdG8gcHJldmVudCBzY29wZQoJYW5vbWFsaWVzIGluIGdpZ2kuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSwgQ29sbGVjdF9JbnRlcmZhY2VfUHJpbWl0aXZlcywKCVJlY29yZF9UeXBlX0RlY2xhcmF0aW9uKTogIFRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBzdWJwcm9ncmFtcwoJQ29sbGVjdF9BYnN0cmFjdF9JbnRlcmZhY2VzIGFuZCBDb2xsZWN0X0FsbF9BYnN0cmFjdF9JbnRlcmZhY2VzCglpcyBub3cgcGVyZm9ybWVkIGJ5IGEgc2luZ2xlIHJvdXRpbmUuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IElmIHRoZSB0eXBlIGRlZmluaXRpb24gaW5jbHVkZXMgYW4gZXhwbGljaXQKCWluZGljYXRpb24gb2YgbGltaXRlZG5lc3MsIHRoZW4gdGhlIHR5cGUgbXVzdCBiZSBtYXJrZWQgYXMgbGltaXRlZCBoZXJlCgl0byBlbnN1cmUgdGhhdCBhbnkgYWNjZXNzIGRpc2NyaW1pbmFudHMgd2lsbCBub3QgYmUgdHJlYXRlZCBhcyBoYXZpbmcKCWEgbG9jYWwgYW5vbnltb3VzIGFjY2VzcyB0eXBlLgoJKENoZWNrX0Fic3RyYWN0X092ZXJyaWRpbmcpOiBJc3N1ZSBhIGRldGFpbGVkIGVycm9yIG1lc3NhZ2Ugd2hlbiBhbgoJYWJzdHJhY3Qgc3VicHJvZ3JhbSB3YXMgbm90IG92ZXJyaWRkZW4gZHVlIHRvIGluY29ycmVjdCBtb2RlIG9mIGl0cwoJZmlyc3QgcGFyYW1ldGVyLgoJKEFuYWx5emVfUHJpdmF0ZV9FeHRlbnNpb25fRGVjbGFyYXRpb24pOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGFuYWx5c2lzIG9mCglzeW5jaHJvbml6ZWQgcHJpdmF0ZSBleHRlbnNpb24gZGVjbGFyYXRpb25zLiBWZXJpZnkgdGhhdCB0aGUgYW5jZXN0b3IgaXMKCWEgbGltaXRlZCBvciBzeW5jaHJvbml6ZWQgaW50ZXJmYWNlIG9yIGluIHRoZSBnZW5lcmljIGNhc2UsIHRoZSBhbmNlc3RvcgoJaXMgYSB0YWdnZWQgbGltaXRlZCB0eXBlIG9yIHN5bmNocm9uaXplZCBpbnRlcmZhY2UgYW5kIGFsbCBwcm9nZW5pdG9ycwoJYXJlIGVpdGhlciBsaW1pdGVkIG9yIHN5bmNocm9uaXplZCBpbnRlcmZhY2VzLgoJRGVyaXZlZF9UeXBlX0RlY2xhcmF0aW9uKTogQ2hlY2sgZm9yIHByZXNlbmNlIG9mIHByaXZhdGUgZXh0ZW5zaW9uIHdoZW4KCWRlYWxpbmcgd2l0aCBzeW5jaHJvbml6ZWQgZm9ybWFsIGRlcml2ZWQgdHlwZXMuCglQcm9jZXNzX0Z1bGxfVmlldyk6IEVuY2hhbmNlIHRoZSBjaGVjayBkb25lIG9uIHRoZSB1c2FnZSBvZiAibGltaXRlZCIgYnkKCXRlc3Rpbmcgd2hldGhlciB0aGUgcHJpdmF0ZSB2aWV3IGlzIHN5bmNocm9uaXplZC4KCVZlcmlmeSB0aGF0IGEgc3luY2hyb25pemVkIHByaXZhdGUgdmlldyBpcyBjb21wbGV0ZWQgYnkgYSBwcm90ZWN0ZWQgb3IKCXRhc2sgdHlwZS4KCShPS19Gb3JfTGltaXRlZF9Jbml0X0luXzA1KTogTmV3IGZ1bmN0aW9uLgoJKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogTW92ZSBjaGVjayBmb3IgbGltaXRlZCB0eXBlcyBsYXRlciwKCWJlY2F1c2UgT0tfRm9yX0xpbWl0ZWRfSW5pdCByZXF1aXJlcyBpdHMgYXJndW1lbnQgdG8gaGF2ZSBiZWVuIHJlc29sdmVkLgoJQWRkIC1nbmF0ZC5sIC0tVXNlIEFkYSA5NSBzZW1hbnRpY3MgZm9yIGxpbWl0ZWQgZnVuY3Rpb24gcmV0dXJucywKCWluIG9yZGVyIHRvIGFsbGV2aWF0ZSB0aGUgdXB3YXJkIGNvbXBhdGliaWxpdHkgaW50cm9kdWNlZCBieSBBSS0zMTguCgkoQ29uc3RyYWluX0NvcnJlc3BvbmRpbmdfUmVjb3JkKTogSWYgdGhlIGNvbnN0cmFpbnQgaXMgZm9yIGEgY29tcG9uZW50CglzdWJ0eXBlLCBtYXJrIHRoZSBpdHlwZSBhcyBmcm96ZW4sIHRvIGF2b2lkIG91dC1vZi1zY29wZSByZWZlcmVuY2VzIHRvCglkaXNjcmltaW5hbnRzIGluIHRoZSBiYWNrLWVuZC4KCShDb2xsZWN0X0ltcGxlbWVudGVkX0ludGVyZmFjZXMpOiBQcm90ZWN0IHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtIG9mCgl0aGlzIHN1YnByb2dyYW0gYWdhaW5zdCB3cm9uZyBzb3VyY2VzLgoJKEdldF9EaXNjcl9WYWx1ZSwgSXNfRGlzY3JpbWluYW50KTogSGFuZGxlIHByb3Blcmx5IHJlZmVyZW5jZXMgdG8gYQoJZGlzY3JpbWluYW50IG9mIGxpbWl0ZWQgdHlwZSBjb21wbGV0ZWQgd2l0aCBhIHByb3RlY3RlZCB0eXBlLCB3aGVuIHRoZQoJZGlzY3JpbWluYW50IGlzIHVzZWQgdG8gY29uc3RyYWluIGEgcHJpdmF0ZSBjb21wb25lbnQgb2YgdGhlIHR5cGUsIGFuZAoJZXhwYW5zaW9uIGlzIGRpc2FibGVkLgoJKEZpbmRfVHlwZV9PZl9PYmplY3QpOiBEbyBub3QgdHJlYXQgYSByZXR1cm4gc3VidHlwZSB0aGF0IGlzIGFuCglhbm9ueW1vdXMgc3VidHlwZSBhcyBhIGxvY2FsX2Fub255bW91c190eXBlLCBiZWNhdXNlIGl0cyBhY2Nlc3NpYmlsaXR5CglsZXZlbCBpcyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGVuY2xvc2luZyBmdW5jdGlvbi4KCShDaGVja19Jbml0aWFsaXphdGlvbik6IEluIC1nbmF0ZyBtb2RlLCB0dXJuIHRoZSBlcnJvciAiY2Fubm90Cglpbml0aWFsaXplIGVudGl0aWVzIG9mIGxpbWl0ZWQgdHlwZSIgaW50byBhIHdhcm5pbmcuCgkoT0tfRm9yX0xpbWl0ZWRfSW5pdCk6IFJldHVybiB0cnVlIGZvciBnZW5lcmF0ZWQgbm9kZXMsIHNpbmNlIGl0Cglzb21ldGltZXMgdmlvbGF0ZXMgdGhlIGxlZ2FsaXR5IHJ1bGVzLgoJKE1ha2VfSW5jb21wbGV0ZV9EZWNsYXJhdGlvbik6IElmIHRoZSB0eXBlIGZvciB3aGljaCBhbiBpbmNvbXBsZXRlCglkZWNsYXJhdGlvbiBpcyBjcmVhdGVkIGhhcHBlbnMgdG8gYmUgdGhlIGN1cnJlbnRseSB2aXNpYmxlIGVudGl0eSwKCXByZXNlcnZlIHRoZSBob21vbnltIGNoYWluIHdoZW4gcmVtb3ZpbmcgaXQgZnJvbSB2aXNpYmlsaXR5LgoJKENoZWNrX0NvbnZlbnRpb25zKTogQWRkIHN1cHBvcnQgZm9yIEFkYSAyMDA1IChBSS00MzApOiBDb252ZW50aW9ucyBvZgoJaW5oZXJpdGVkIHN1YnByb2dyYW1zLgoJKEFjY2Vzc19EZWZpbml0aW9uKTogSWYgdGhpcyBpcyBhbiBhY2Nlc3MgdG8gZnVuY3Rpb24gdGhhdCBpcyB0aGUgcmV0dXJuCgl0eXBlIG9mIGFuIGFjY2Vzc190b19mdW5jdGlvbiBkZWZpbml0aW9uLCBjb250ZXh0IGlzIGEgdHlwZSBkZWNsYXJhdGlvbgoJYW5kIHRoZSBzY29wZSBvZiB0aGUgYW5vbnltb3VzIHR5cGUgaXMgdGhlIGN1cnJlbnQgb25lLgoJKEFuYWx5emVfU3VidHlwZV9EZWNsYXJhdGlvbik6IEFkZCB0aGUgZGVmaW5pbmcgaWRlbnRpZmllciBvZiBhIHJlZ3VsYXIKCWluY29tcGxldGUgc3VidHlwZSB0byB0aGUgc2V0IG9mIHByaXZhdGUgZGVwZW5kZW50cyBvZiB0aGUgb3JpZ2luYWwKCWluY29tcGxldGUgdHlwZS4KCShDb25zdHJhaW5fRGlzY3JpbWluYXRlZF9UeXBlKTogRW1pdCBhbiBlcnJvciBtZXNzYWdlIHdoZW5ldmVyIGFuCglpbmNvbXBsZXRlIHN1YnR5cGUgaXMgYmVpbmcgY29uc3RyYWluZWQuCgkoUHJvY2Vzc19JbmNvbXBsZXRlX0RlcGVuZGVudHMpOiBUcmFuc2Zvcm0gYW4gaW5jb21wbGV0ZSBzdWJ0eXBlIGludG8gYQoJY29ycmVzcG9uZGluZyBzdWJ0eXBlIG9mIHRoZSBmdWxsIHZpZXcgb2YgdGhlIG9yaWdpbmFsIGluY29tcGxldGUgdHlwZS4KCShDaGVja19JbmNvbXBsZXRlKTogUHJvcGVybHkgZGV0ZWN0IGludmFsaWQgdXNhZ2Ugb2YgaW5jb21wbGV0ZSB0eXBlcwoJYW5kIHN1YnR5cGVzLgoKMjAwNi0xMC0zMSAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGctY2F0aWlvLmFkcywgZy1jYXRpaW8uYWRiIChWYWx1ZSk6IE5ldyBmdW5jdGlvbi4KCUdpdmVuIGFuIGlucHV0IFN0cmluZywgdHJ5IGFuZCBwYXJzZSBhIHZhbGlkIFRpbWUgdmFsdWUuCgoyMDA2LTEwLTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGctZGVicG9vLmFkYiAoSXNfVmFsaWQpOiBDb3JyZWN0bHkgY29tcHV0ZSBPZmZzZXQgdXNpbmcKCUludGVnZXJfQWRkcmVzcyBhcml0aG1ldGljLCBhcyBpbiBTZXRfVmFsaWQuCgoyMDA2LTEwLTMxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnbmF0Y21kLmFkYiAoUHJvY2Vzc19MaW5rKTogVXNlIE9zaW50LkV4ZWN1dGFibGVfTmFtZSBpbnN0ZWFkIG9mCgloYW5kbGluZyBleGVjdXRhYmxlIGV4dGVuc2lvbiBtYW51YWxseSBhbmQgZHVwbGljYXRpbmcgY29kZS4KCgkqIG1ha2UuYWRiOiBJbXBsZW1lbnQgbmV3IC1TIHN3aXRjaAoJKEduYXRtYWtlKTogVXNlIG5ldyBmdW5jdGlvbiBPc2ludC5FeGVjdXRhYmxlX05hbWUgaW5zdGVhZAoJb2YgaGFuZGxpbmcgZXhlY3V0YWJsZSBleHRlbnNpb24gbWFudWFsbHkuCgoJKiBwcmotdXRpbC5hZGIgKEV4ZWN1dGFibGVfT2YpOiBNYWtlIHN1cmUgdGhhdCBpZiBhbiBFeGVjdXRhYmxlX1N1ZmZpeAoJaXMgc3BlY2lmaWVkLCB0aGUgZXhlY3V0YWJsZSBuYW1lIGVuZHMgd2l0aCB0aGlzIHN1ZmZpeC4KCVRha2UgYWR2YW50YWdlIG9mIE9zaW50LkV4ZWN1dGFibGVfTmFtZSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGNvZGUuCgoJKiBzd2l0Y2gtbS5hZGI6IFJlY29nbml6ZSBuZXcgZ25hdG1ha2UgLVMgc3dpdGNoCgoJKiB0YXJncGFybS5hZHMsIHRhcmdwYXJtLmFkYiAoRXhlY3V0YWJsZV9FeHRlbnNpb25fT25fVGFyZ2V0KTogTmV3Cgl2YXJpYWJsZS4KCShHZXRfVGFyZ2V0X1BhcmFtZXRlcnMpOiBTZXQgRXhlY3V0YWJsZV9FeHRlbnNpb25fT25fVGFyZ2V0IGlmCglhdmFpbGFibGUuCgoJKiBtYWtldXNnLmFkYjogQWRkIGxpbmUgZm9yIGduYXRtYWtlIC1TIHN3aXRjaAoKMjAwNi0xMC0zMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBnbmF0bGluay5hZGIgKEduYXRsaW5rKTogSWYgZ2NjIGlzIG5vdCBjYWxsZWQgd2l0aCAtc2hhcmVkLWxpYmdjYywKCWNhbGwgaXQgd2l0aCAtc3RhdGljLWxpYmdjYywgYXMgdGhlcmUgYXJlIHNvbWUgcGxhdGZvcm1zLCBzdWNoIGFzCglEYXJ3aW4sIHdoZXJlIG9uZSBvZiB0aGVzZSB0d28gc3dpdGNoZXMgaXMgY29tcHVsc29yeSB0byBsaW5rLgoKMjAwNi0xMC0zMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBnbmF0bHMuYWRiOiBUYWtlIGludG8gYWNjb3VudCBHUFJfUFJPSkVDVF9QQVRILCB3aGVuIGl0IGlzIGRlZmluZWQsCglpbnN0ZWFkIG9mIEFEQV9QUk9KRUNUX1BBVEgsIGZvciB0aGUgcHJvamVjdCBwYXRoLgoJKEduYXRscyk6IFdoZW4gZGlzcGxheWluZyB0aGUgcHJvamVjdCBwYXRoIGRpcmVjdG9yaWVzLCB1c2UgaG9zdCBkaXIKCXNwZWNzLgoKCSogcHJqLWV4dC5hZGIgKFByai5FeHQgZWxhYm9yYXRpb24pOiBPbiBWTVMsIG9ubHkgZXhwYW5kIHJlbGF0aXZlIHBhdGgKCW5hbWVzIGluIHRoZSBwcm9qZWN0IHBhdGgsIGFzIGFic29sdXRlIHBhdGhzIG1heSBjb3JyZXNwb25kIHRvCgltdWx0aS12YWx1ZWQgVk1TIGxvZ2ljYWwgbmFtZXMuCgoyMDA2LTEwLTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGctb3NfbGliLmFkcywgZy1vc19saWIuYWRiIChMb2NhdGVfRXhlY19Pbl9QYXRoKTogQWx3YXlzIHJldHVybiBhbgoJYWJzb2x1dGUgcGF0aCBuYW1lLgoJKExvY2F0ZV9SZWd1bGFyX0ZpbGUpOiBEaXR0bwoJKENoYW5nZV9EaXIpOiBSZW1vdmUsIG5vIGxvbmdlciB1c2VkCgkoTm9ybWFsaXplX1BhdGhuYW1lKTogRG8gbm90IHVzZSBDaGFuZ2VfRGlyIHRvIGdldCB0aGUgZHJpdmUgbGV0dGVyCglvbiBXaW5kb3dzLiBHZXQgaXQgY2FsbGluZyBHZXRfQ3VycmVudF9EaXIuCgkoT3BlblZNUyk6IFJlbW92ZSBpbXBvcnRlZCBib29sZWFuLCBubyBsb25nZXIgbmVlZGVkLgoJKE5vcm1hbGl6ZV9QYXRobmFtZSlbVk1TXTogRG8gbm90IHJlc29sdmUgZGlyZWN0b3J5IG5hbWVzLgoJKFBpZF9Ub19JbnRlZ2VyKTogTmV3IGZ1bmN0aW9uIHRvIGNvbnZlcnQgYSBQcm9jZXNzX0lkIHRvICBJbnRlZ2VyCgoyMDA2LTEwLTMxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZy1zb2NrZXQuYWRzLCBnLXNvY2tldC5hZGIgKENsb3NlX1NlbGVjdG9yKTogT25jZSB0aGUgc2lnbmFsbGluZwoJc29ja2V0cyBhcmUgY2xvc2VkLCByZXNldCB0aGUgUl9TaWdfU29ja2V0IGFuZCBXX1NpZ19Tb2NrZXQgY29tcG9uZW50cwoJdG8gTm9fU29ja2V0LgoJKFNlbGVjdG9yX1R5cGUpOiBBZGQgZGVmYXVsdCB2YWx1ZSBvZiBOb19Tb2NrZXQgZm9yIFJfU2lnX1NvY2tldCBhbmQKCVdfU2lnX1NvY2tldC4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1zcGVjaGUuYWRzLCBnLXNwZWNoZS5hZGI6IEFkZCBzcGVjaWFsIGNhc2UgdG8gcmVjb2duaXplIG1pc3NwZWxsaW5nCglpbml0aWFsIGxldHRlciBvIGFzIGEgemVyby4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1zcGlwYXQuYWRiIChTX1RvX1BFKTogUmVtb3ZlIGluY29ycmVjdCB1c2Ugb2YgMCBpbnN0ZWFkIG9mIFN0cidGaXJzdAoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBsYXlvdXQuYWRiIChMYXlvdXRfUmVjb3JkX1R5cGUpOiBEZWFsIHdpdGggbm9uLXN0YXRpYyBzdWJ0eXBlcyBvZgoJdmFyaWFudCByZWNvcmRzCgkoTGF5b3V0X1ZhcmlhbnRfUmVjb3JkKTogUmV0cmlldmUgdGhlIGRpc2NyaW1pbmFudHMgZnJvbSB0aGUgZW50aXR5CglyYXRoZXIgdGhhbiBmcm9tIHRoZSB0eXBlIGRlZmluaXRpb24sIGJlY2F1c2UgaW4gdGhlIGNhc2Ugb2YgYSBmdWxsCgl0eXBlIGZvciBhIHByaXZhdGUgdHlwZSB3ZSBuZWVkIHRvIHRha2UgdGhlIGRpc2NyaW1pbmFudHMgZnJvbSB0aGUKCXBhcnRpYWwgdmlldy4KCShMYXlvdXRfQ29tcG9uZW50X0xpc3QpOiBXaGVuIGFwcGx5aW5nIHRoZSBNYXggb3BlcmF0b3IgdG8gdmFyaWFudHMgd2l0aAoJYSBub25zdGF0aWMgc2l6ZSwgY2hlY2sgd2hldGhlciBlaXRoZXIgb3BlcmFuZCBpcyBzdGF0aWMgYW5kIHNjYWxlIHRoYXQKCW9wZXJhbmQgZnJvbSBiaXRzIHRvIHN0b3JhZ2UgdW5pdHMgYmVmb3JlIGFwcGx5aW5nIE1heC4KCShMYXlvdXRfVHlwZSk6IEluIFZNUywgaWYgYSBDLWNvbnZlbnRpb24gYWNjZXNzIHR5cGUgaGFzIG5vIGV4cGxpY2l0CglzaXplIGNsYXVzZSAoYW5kIGRvZXMgbm90IGluaGVyaXQgb25lIGluIHRoZSBjYXNlIG9mIGEgZGVyaXZlZCB0eXBlKSwKCXRoZW4gdGhlIHNpemUgaXMgcmVzZXQgdG8gMzIgZnJvbSA2NC4KCjIwMDYtMTAtMzEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbGliLWxvYWQuYWRiIChMb2FkX1VuaXQpOiBTa2lwIHRoZSB0ZXN0IGZvciBhIHVuaXQgbm90IGZvdW5kIHdoZW4KCWl0cyBmaWxlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkLCBhY2NvcmRpbmcgdG8gdGhlIHVuaXQgYmVpbmcgbG9hZGVkLAoJbm90IHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIE11bHRpcGxlX1VuaXRfSW5kZXguCgoyMDA2LTEwLTMxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogTWFrZWZpbGUuaW46IFNldCBFSCBtZWNoYW5pc20gdG8gWkNYIGZvciBGcmVlQlNELgoJKE5PX1JFT1JERVJfQURBRkxBR1MpOiBOZXcgdmFyIGRlZmluZWQgdG8gLWZuby10b3BsZXZlbC1yZW9yZGVyIGlmCglwb3NzaWJsZS4KCShhLWV4Y2VwdC5vKTogUGFzcyBpdCB0byB0aGUgY29tcGlsZXIuCgkoZ25hdGxpYi1zaGFyZWQtdm1zKTogUmVtb3ZlZCAtbm9zdGFydGZpbGVzIHN3aXRjaCBpbiBsaW5rIHN0ZXAuCgkoTElCR05BVF9UQVJHRVRfUEFJUlMgZm9yIFdpbmRvd3MpOiBBdm9pZCB0aGUgdXNlIG9mIHRoZSBzcGVjaWZpYwoJYS1jYWxlbmQtbWluZ3cuYWRiIHZlcnNpb24uCgoJKiBNYWtlZmlsZS5ydGw6IEFkZGVkIHMtZHNhc2VyLgoJQWRkIG9iamVjdCBlbnRyaWVzIGZvciBBZGEuQ2FsZW5kYXIuW0FyaXRobWV0aWMvRm9ybWF0dGluZy9UaW1lX1pvbmVzXQoJKEdOQVRSVExfVEFTS0lOR19PQkpTKTogQWRkIEFkYS5EaXNwYXRjaGluZyBhbmQKCUFkYS5EaXNwYXRjaGluZy5Sb3VuZF9Sb2Jpbi4KCUFkZGVkIG5ldyB1bml0IEFkYS5Db250YWluZXJzLlJlc3RyaWN0ZWRfQm91bmRlZF9Eb3VibHlfTGlua2VkX0xpc3RzCgoJKiBNYWtlLWxhbmcuaW46IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBndC1hZGEtZGVjbC5oLgoJQWRkIGNvbmNhdGVuYXRpb24gKHMtc3Ryb3BzL3Mtc29wY28zL3Mtc29wY280L3Mtc29wY281KSB0byBjb21waWxlcgoJc291cmNlcy4KCUFkZCBkZXBlbmRlbmN5IG9uIGFkYS9zLXJlc3RyaS5vIGZvciBHTkFUMSBhbmQgR05BVEJJTkQgb2JqZWN0cy4KCVVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoJKiBzeXN0ZW0tZnJlZWJzZC14ODYuYWRzOiBNYWtlIFpDWCB0aGUgZGVmYXVsdCBFSCBtZWNoYW5pc20gZm9yIEZyZWVCU0QKCjIwMDYtMTAtMzEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi11dGwuYWRiIChJbml0aWFsaXplZCk6IFJlbW92ZSwgbm8gbG9uZ2VyIHVzZWQKCShJbml0aWFsaXplKTogUmVtb3ZlLCBubyBsb25nZXIgdXNlZAoJKEFyKTogSWYgQXJfRXhlYyBpcyBudWxsLCBnZXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBhcmNoaXZlIGJ1aWxkZXIgYW5kLAoJaWYgdGhlcmUgaXMgb25lLCB0aGUgYXJjaGl2ZSBpbmRleGVyLiBGYWlsIGlmIHRoZSBhcmNoaXZlIGJ1aWxkZXIgY2Fubm90CgliZSBmb3VuZC4KCShHY2MpOiBJZiB0aGUgZHJpdmVyIHBhdGggaXMgdW5rbm93biwgZ2V0IGl0LiBGYWlsIGlmIHRoZSBkcml2ZXIgY2Fubm90CgliZSBmb3VuZC4KCjIwMDYtMTAtMzEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEwLmFkcywgc2VtX2NoMTAuYWRiIChDaGVja19SZWR1bmRhbnRfV2l0aHMsCglQcm9jZXNzX0JvZHlfQ2xhdXNlcyk6IElmIHRoZSBjb250ZXh0IG9mIGEgYm9keSBpbmNsdWRlcyBhIHVzZSBjbGF1c2UKCWZvciBQLlEgdGhlbiBhIHdpdGhfY2xhdXNlIGZvciBQIGluIHRoZSBzYW1lIGJvZHkgaXMgbm90IHJlZHVuZGFudCwKCWV2ZW4gaWYgdGhlIHNwZWMgYWxzbyBoYXMgYSB3aXRoX2NsYXVzZSBvbiBQLgoJQWRkIG1pc3NpbmcgY29udGludWF0aW9uIG1hcmsgdG8gZXJyb3IgbXNnCgkoQnVpbGRfTGltaXRlZF9WaWV3cyk6IEEgbGltaXRlZCB2aWV3IG9mIGEgdHlwZSBpcyB0YWdnZWQgaWYgaXRzCglkZWNsYXJhdGlvbiBpbmNsdWRlcyBhIHJlY29yZCBleHRlbnNpb24uCgkoQW5hbHl6ZV9Qcm9wZXJfQm9keSk6IFNldCBDb3JyZXNwb25kaW5nX1N0dWIgZmllbGQgaW4gTl9TdWJ1bml0Cglub2RlLCBldmVuIGlmIHRoZSBzdWJ1bml0IGhhcyBlcnJvcnMuIFRoaXMgYXZvaWRzIG1hbGZ1bmN0aW9uIGJ5CglMaWIuQ2hlY2tfU2FtZV9FeHRlbmRlZF9Vbml0IGluIHRoZSBwcmVzZW5jZSBvZiBzeW50YXggZXJyb3JzLgoJKEFuYWx5emVfQ29tcGlsYXRpb25fVW5pdCk6IEFkZCBjaXJjdWl0IHRvIG1ha2Ugc3VyZSB3ZSBnZXQgcHJvcGVyCglnZW5lcmF0aW9uIG9mIG9ic29sZXNjZW50IG1lc3NhZ2VzIGZvciB3aXRoIHN0YXRlbWVudHMgKGNhbm5vdCBkbwoJdGhpcyB0b28gZWFybHksIG9yIHdlIGNhbm5vdCBpbXBsZW1lbnQgYXZvaWRpbmcgdGhlIG1lc3NhZ2VzIGluIHRoZQoJY2FzZSBvZiBvYnNvbGVzY2VudCB1bml0cyB3aXRoaW5nIG9ic29sZXNjZW50IHVuaXRzKS4KCShJbnN0YWxsX1NpYmxpbmdzKTogSWYgdGhlIHdpdGhfY2xhdXNlIGlzIG9uIGEgcmVtb3RlIGRlc2NlbmRhbnQgb2YKCWFuIGFuY2VzdG9yIG9mIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIGZpbmQgd2hldGhlciB0aGVyZSBpcwoJYSBzaWJsaW5nIGNoaWxkIHVuaXQgdGhhdCBpcyBpbW1lZGlhdGVseSB2aXNpYmxlLgoJKFJlbW92ZV9Qcml2YXRlX1dpdGhfQ2xhdXNlcyk6IE5ldyBwcm9jZWR1cmUsIGludm9rZWQgYWZ0ZXIgY29tcGxldGluZwoJdGhlIGFuYWx5c2lzIG9mIHRoZSBwcml2YXRlIHBhcnQgb2YgYSBuZXN0ZWQgcGFja2FnZSwgdG8gcmVtb3ZlIGZyb20KCXZpc2liaWxpdHkgdGhlIHByaXZhdGUgd2l0aF9jbGF1c2VzIG9mIHRoZSBlbmNsb3NpbmcgcGFja2FnZQoJZGVjbGFyYXRpb24uCgkoQW5hbHl6ZV9XaXRoX0NsYXVzZSk6IFJlbW92ZSBDaGVja19PYnNvbGVzY2VudCBjYWxsLCB0aGlzIGNoZWNraW5nIGlzCglub3cgY2VudHJhbGl6ZWQgaW4gR2VuZXJhdGVfUmVmZXJlbmNlLgoJKEluc3RhbGxfTGltaXRlZF9Db250ZXh0X0NsYXVzZXMpOiBSZW1vdmUgc3VwZXJmbHVvdXMgZXJyb3IKCW1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHVubGltaXRlZCB2aWV3IHZpc2libGUgdGhyb3VnaCB1c2UKCWFuZCByZW5hbWluZ3MuIEluIGFkZGl0aW9uLCBhdCB0aGUgcG9pbnQgaW4gd2hpY2ggdGhlIGVycm9yCglpcyByZXBvcnRlZCwgd2UgYWRkIHRoZSBiYWNrc2xhc2ggdG8gdGhlIHRleHQgb2YgdGhlIGVycm9yCgl0byBlbnN1cmUgdGhhdCBpdCBpcyByZXBvcnRlZCBhcyBhIHNpbmdsZSBlcnJvciBtZXNzYWdlLgoJVXNlIG5ldyAvLyBpbnNlcnRpb24gZm9yIHNvbWUgY29udGludWF0aW9uIG1lc3NhZ2VzCgkoRXhwYW5kX0xpbWl0ZWRfV2l0aF9DbGF1c2UpOiBVc2UgY29weSBvZiBuYW1lIHJhdGhlciB0aGFuIG5hbWUgaXRzZWxmLAoJdG8gY3JlYXRlIGltcGxpY2l0IHdpdGhfY2xhdXNlIGZvciBwYXJlbnQgdW5pdCBtZW50aW9uZWQgaW4gb3JpZ2luYWwKCWxpbWl0ZWRfd2l0aF9jbGF1c2UuCgkoSW5zdGFsbF9MaW1pdGVkX1dpdGhfVW5pdCk6IFNldCBlbnRpdHkgb2YgcGFyZW50IGlkZW50aWZpZXJzIGlmIHRoZQoJdW5pdCBpcyBhIGNoaWxkIHVuaXQuIEZvciBBU0lTIHF1ZXJpZXMuCgkoQW5hbHl6ZV9TdWJ1bml0KTogSWYgdGhlIHN1YnVuaXQgYXBwZWFycyB3aXRoaW4gYSBjaGlsZCB1bml0LCBtYWtlIGFsbAoJYW5jZXN0b3IgY2hpbGQgdW5pdHMgZGlyZWN0bHkgdmlzaWJsZSBhZ2Fpbi4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoMTAuYWRiIChQX0NvbnRleHRfQ2xhdXNlKTogTWlub3IgZXJyb3IgbWVzc2FnZSBmaXgKCjIwMDYtMTAtMzEgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoMTIuYWRiOiBHcmFtbWFyIHVwZGF0ZSBhbmQgY2xlYW51cC4KCShQX0Zvcm1hbF9UeXBlX0RlZmluaXRpb24sIFBfRm9ybWFsX0Rlcml2ZWRfVHlwZV9EZWZpbml0aW9uKTogQWRkCglzdXBwb3J0IGZvciBzeW5jaHJvbml6ZWQgZGVyaXZlZCB0eXBlIGRlZmluaXRpb25zLgoJQWRkIHRoZSBuZXcgYWN0dWFsIEFic3RyYWN0X1ByZXNlbnQgdG8gZXZlcnkgY2FsbCB0bwoJUF9JbnRlcmZhY2VfVHlwZV9EZWZpbml0aW9uLgoJKFBfRm9ybWFsX09iamVjdF9EZWNsYXJhdGlvbnMpOiBVcGRhdGUgZ3JhbW1hciBydWxlcy4gSGFuZGxlIHBhcnNpbmcgb2YKCWEgZm9ybWFsIG9iamVjdCBkZWNsYXJhdGlvbiB3aXRoIGFuIGFjY2VzcyBkZWZpbml0aW9uIG9yIGEgc3VidHlwZSBtYXJrCgl3aXRoIGEgbnVsbCBleGNsdXNpb24uCgkoUF9HZW5lcmljX0Fzc29jaWF0aW9uKTogSGFuZGxlIGFzc29jaWF0aW9uIHdpdGggYm94LCBhbmQgb3RoZXJzX2Nob2ljZQoJd2l0aCBib3gsIHRvIHN1cHBvcnQgQWRhIDIwMDUgcGFydGlhbGx5IHBhcmFtZXRyaXplZCBmb3JtYWwgcGFja2FnZXMuCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBwYXItY2gzLmFkYiAoUF9SYW5nZV9Pcl9TdWJ0eXBlX01hcmspOiBDaGVjayBmb3IgYmFkIHBhcmVudGhlc2VzCgkoUF9UeXBlX0RlY2xhcmF0aW9uKTogUmVtb3ZlIGJhcnJpZXIgYWdhaW5zdCB0aGUgcmVzZXJ2ZWQgd29yZCAibGltaXRlZCIKCWFmdGVyICJhYnN0cmFjdCIgdG8gZ2l2ZSBzdXBwb3J0IHRvIHRoZSBuZXcgc3ludGF4IG9mIEFBUk0gMy40ICgyLzIpLgoJKFBfVHlwZV9EZWNsYXJhdGlvbik6IE1pbm9yIGNvZGUgY2xlYW51cC4gQWRkIHN1cHBvcnQgZm9yIHN5bmNocm9uaXplZAoJcHJpdmF0ZSBleHRlbnNpb25zLgoJKFBfVHlwZV9EZWNsYXJhdGlvbik6IEFkZCB0aGUgbmV3IGFjdHVhbCBBYnN0cmFjdF9QcmVzZW50IHRvIGV2ZXJ5IGNhbGwKCXRvIFBfSW50ZXJmYWNlX1R5cGVfRGVmaW5pdGlvbi4KCShQX0ludGVyZmFjZV9UeXBlX0RlZmluaXRpb24pOiBBZGRpdGlvbiBvZiBvbmUgZm9ybWFsIHRvIHJlcG9ydCBhbiBlcnJvcgoJaWYgdGhlIHJlc2VydmVkIHdvcmQgYWJzdHJhY3QgaGFzIGJlZW4gcHJldmlvdXNseSBmb3VuZC4KCShQX0lkZW50aWZpZXJfRGVjbGFyYXRpb25zKTogVXBkYXRlIGdyYW1tYXIgcnVsZXMuIEhhbmRsZSBwYXJzaW5nIG9mIGFuCglvYmplY3QgcmVuYW1pbmcgZGVjbGFyYXRpb24gd2l0aCBhbiBhY2Nlc3MgZGVmaW5pdGlvbiBvciBzdWJ0eXBlIG1hcmsKCXdpdGggYSBwb3NzaWJsZSBudWxsIGV4Y2x1c2lvbi4KCgkqIHBhci1jaDkuYWRiOiBNaW5vciBlcnJvciBtc2cgZml4CgoJKiBwYXItbG9hZC5hZGI6IEFkZCBtaXNzaW5nIGNvbnRpbnVhdGlvbiBtYXJrIHRvIGVycm9yIG1zZwoKCSogcGFyLXRjaGsuYWRiOiAoV3JvbmdfVG9rZW4pOiBDb2RlIGNsZWFudXAsIHVzZSBjb25jYXRlbmF0aW9uCgoyMDA2LTEwLTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai1kZWN0LmFkYiAoUGFyc2VfQXR0cmlidXRlX0RlY2xhcmF0aW9uKTogRG8gbm90IGlzc3VlIHdhcm5pbmcgZm9yCgl1bmtub3duIGF0dHJpYnV0ZSBpbiB1bmtub3duIHBhY2thZ2Ugb3IgaW4gcGFja2FnZSB0aGF0IGRvZXMgbm90IG5lZWQKCXRvIGJlIGNoZWNrZWQuCgkoUGFyc2VfUGFja2FnZV9EZWNsYXJhdGlvbik6IERvIG5vdCBpc3N1ZSB3YXJuaW5nIGZvciB1bmtub3duIHBhY2thZ2UgaW4KCXF1aWV0IG91dHB1dC4KCjIwMDYtMTAtMzEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLW1ha3IuYWRiIChQYWNrYWdlc19Ub19DaGVja19CeV9HbmF0bmFtZSk6IE5ldyBnbG9iYWwgY29uc3RhbnQKCShNYWtlKTogQ2FsbCBQYXJzZSB3aXRoIFBhY2thZ2VzX1RvX0NoZWNrX0J5X0duYXRuYW1lIGZvciBwYXJhbWV0ZXIKCVBhY2thZ2VzX1RvX0NoZWNrLgoKMjAwNi0xMC0zMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmotbm1zYy5hZGIgKENoZWNrX0FkYV9OYW1lKTogRm9yIGNoaWxkcmVuIG9mIHBhY2thZ2UgQSwgRywgSSBhbmQgUwoJb24gVk1TLCBjaGFuZ2UgIl9fIiB0byAnLicgYmVmb3JlIGNoZWNraW5nIHRoZSBuYW1lLgoJKFJlY29yZF9BZGFfU291cmNlKTogQWx3YXlzIGFkZCB0aGUgc291cmNlIGZpbGUgbmFtZSBpbiB0aGUgbGlzdCBvZgoJb2Ygc291cmNlcywgZXZlbiBpZiBpdCBpcyBub3QgdGhlIGZpcnN0IHRpbWUsIGFzIGl0IGlzIGZvciBhbm90aGVyCglzb3VyY2UgaW5kZXguCgkoR2V0X1VuaXQpOiBSZXBsYWNlIGJvdGggJ18nIChhZnRlciAnYScsICdnJywgJ2knIG9yICdzJykgd2l0aCBhIHNpbmdsZQoJZG90LCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBvbmx5IHRoZSBmaXJzdCAnXycuCgoJKiBwcmotcGFydC5hZGIgKFBhcnNlKTogQ29udmVydCBwcm9qZWN0IGZpbGUgcGF0aCB0byBjYW5vbmljYWwgZm9ybQoKCSogcHJqLXByb2MuYWRiIChSZWN1cnNpdmVfUHJvY2Vzcyk6IE1ha2Ugc3VyZSB0aGF0LCB3aGVuIGEgcHJvamVjdCBpcwoJZXh0ZW5kZWQsIHRoZSBwcm9qZWN0IGlkIG9mIHRoZSBwcm9qZWN0IGV4dGVuZGluZyBpdCBpcyByZWNvcmRlZCBpbiBpdHMKCWRhdGEsIGV2ZW4gd2hlbiBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCBhcyBhbiBpbXBvcnRlZCBwcm9qZWN0LgoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiByZXBpbmZvLmFkYiAoTGlzdF9FbnRpdGllcyk6IERvbid0IGxpc3QgZW50aXRpZXMgZnJvbSByZW5hbWluZwoJZGVjbGFyYXRpb25zLgoKMjAwNi0xMC0zMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcmVzdHJpY3QuYWRzLCByZXN0cmljdC5hZGIgKFJlc3RyaWN0aW9uX0FjdGl2ZSk6IE5vdyByZXR1cm5zIEZhbHNlIGlmCglvbmx5IGEgcmVzdHJpY3Rpb24gd2FybmluZyBpcyBhY3RpdmUgZm9yIHRoZSBnaXZlbiByZXN0cmljdGlvbi4gVGhpcyBpcwoJZGVzaXJhYmxlIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gbW9kaWZ5IGNvZGUgaW4gdGhlIGNhc2Ugd2hlcmUgb25seQoJYSB3YXJuaW5nIGlzIHNldC4KCShTZXRfUHJvZmlsZV9SZXN0cmljdGlvbnMpOiBNYWtlIHN1cmUgdGhhdCBhIFByb2ZpbGVfV2FybmluZ3MgbmV2ZXIKCWNhdXNlcyBvdmVycmlkaW5nIG9mIHJlYWwgcmVzdHJpY3Rpb25zLgoJVGFrZSBhZHZhbnRhZ2Ugb2YgbmV3IE5vX1Jlc3RyaWN0aW9ucyBjb25zdGFudC4KCgkqIHJhaXNlLmg6IChfX2duYXRfc2V0X2dsb2JhbHMpOiBDaGFuZ2UgcHJvZmlsZS4KCjIwMDYtMTAtMzEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHJ0c2ZpbmQuYWRiOiBSZW1vdmUgcy1wb2xpbnQgZnJvbSBjb21tZW50IGFzIGl0IGV4aXN0cyBubyBtb3JlLgoKCSogcnRzZmluZC5hZHM6IAoJTW92ZSBlbnRpdHkgUkVfR2V0X0FjdGl2ZV9QYXJ0aXRpb25fSWQgdG8gcGFja2FnZSBTeXN0ZW0uRFNBX1NlcnZpY2VzLgoJTW92ZSBhbGwgdGhlIGVudGl0aWVzIGluIG9ic29sZXRlIHBhY2thZ2UgU3lzdGVtLlBvbHlPUkJfSW50ZXJmYWNlIHRvCglTeXN0ZW0uUGFydGl0aW9uX0ludGVyZmFjZS4KCShSRV9TdG9yYWdlX1NpemUpOiBOZXcgZnVuY3Rpb24gaW4gU3lzdGVtLlRhc2tpbmcuCgkoUkVfR2V0X0NlaWxpbmcpOiBOZXcgZW50aXR5LgoJKFJFX1NldF9DZWlsaW5nKTogTmV3IGVudGl0eS4KCShST19QRV9HZXRfQ2VpbGluZyk6IE5ldyBlbnRpdHkuCgkoUk9fUkVfU2V0X0NlaWxpbmcpOiBOZXcgZW50aXR5LgoJKEluaGVyaXRfQ1BQX0RUKTogTmV3IGVudGl0eQoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzY25nLmFkYiAoU2NhbiwgY2FzZSBvZiBudW1lcmljIGxpdGVyYWwpOiBCZXR0ZXIgbXNnIGZvciBpZGVudGlmaWVyCglzdGFydGluZyB3aXRoIGEgZGlnaXQuCgoyMDA2LTEwLTMxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogc2VtX2F0dHIuYWRzLCBzZW1fYXR0ci5hZGIgKEFuYWx5emVfQWNjZXNzX0F0dHJpYnV0ZSk6IERpYWdub3NlCglwcm9wZXJseSBhbiBhdHRlbXB0IHRvIGFwcGx5IFVuY2hlY2tlZF9BY2Nlc3MgdG8gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLgoJKE9LX1NlbGZfUmVmZXJlbmNlKTogTmV3IHN1YnByb2dyYW0gdG8gY2hlY2sgdGhlIGxlZ2FsaXR5IG9mIGFuIGFjY2VzcwoJYXR0cmlidXRlIHdob3NlIHByZWZpeCBpcyB0aGUgdHlwZSBvZiBhbiBlbmNsb3NpbmcgYWdncmVnYXRlLgoJR2VuZXJhbGl6ZXMgcHJldmlvdXMgbWVjaGFuaXNtIHRvIGhhbmRsZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBuZXN0ZWQKCWFyYml0cmFyaWx5IGRlZXAgd2l0aGluIHRoZSBhZ2dyZWdhdGUuCgkoQW5hbHl6ZV9BY2Nlc3NfQXR0cmlidXRlKTogQW4gYWNjZXNzIGF0dHJpYnV0ZSB3aG9zZSBwcmVmaXggaXMgYSB0eXBlCgljYW4gYXBwZWFyIGluIGFuIGFnZ3JlZ2F0ZSBpZiB0aGlzIGlzIGEgZGVmYXVsdC1pbml0aWFsaXplZCBhZ2dyZWdhdGUKCWZvciBhIHNlbGYtcmVmZXJlbnRpYWwgdHlwZS4KCShSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSBBY2Nlc3MpOiBEaXR0by4KCUFkZCBzdXBwb3J0IGZvciBuZXcgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBhdHRyaWJ1dGUgU3R1Yl9UeXBlLgoJKEV2YWxfQXR0cmlidXRlLCBjYXNlIEF0dHJpYnV0ZV9TdHViX1R5cGUpOiBOZXcgY2FzZS4KCShBbmFseXplX0F0dHJpYnV0ZSwgY2FzZSBBdHRyaWJ1dGVfU3R1Yl9UeXBlKTogTmV3IGNhc2UuCgkoU3RyZWFtX0F0dHJpYnV0ZV9BdmFpbGFibGUpOiBJbXBsZW1lbnQgdXNpbmcgbmV3IHN1YnByb2dyYW0gZnJvbQoJc2VtX2NhdCwgSGFzX1N0cmVhbV9BdHRyaWJ1dGVfRGVmaW5pdGlvbiwgaW5zdGVhZCBvZiBpbmNvcnJlY3QKCUhhc19TcGVjaWZpZWRfU3RyZWFtX0F0dHJpYnV0ZSBmbGFnLgoJRGlzYWxsb3cgU3RvcmFnZV9TaXplIGFuZCBTdG9yYWdlX1Bvb2wgZm9yIGFjY2VzcyB0byBzdWJwcm9ncmFtCgkoUmVzb2x2ZV9BdHRyaWJ1dGUsIGNhc2UgJ0FjY2VzcyBldCBhbCk6IFRha2UgaW50byBhY2NvdW50IGFub255bW91cwoJYWNjZXNzIHR5cGVzIG9mIHJldHVybiBzdWJ0eXBlcyBpbiBleHRlbmRlZCByZXR1cm4gc3RhdGVtZW50cy4gUmVtb3ZlCglhY2Nlc3NpYmlsaXR5IGNoZWNrcyBvbiBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzIHdoZW4gVW5jaGVja2VkX0FjY2VzcyBpcwoJdXNlZC4KCShBbmFseXplX0F0dHJpYnV0ZSk6IEFkZCBzdXBwb3J0IGZvciB0aGUgdXNlIG9mICdDbGFzcyB0byBjb252ZXJ0CglhIGNsYXNzLXdpZGUgaW50ZXJmYWNlIHRvIGEgdGFnZ2VkIHR5cGUuCglBZGQgc3VwcG9ydCBmb3IgdGhlIGF0dHJpYnV0ZSBQcmlvcml0eS4KCShSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSBBdHRyaWJ1dGVfQWNjZXNzKTogRm9yIEFkYV8wNSwgYWRkIHRlc3QgZm9yCgl3aGV0aGVyIHRoZSBkZXNpZ25hdGVkIHR5cGUgaXMgZGlzY3JpbWluYXRlZCB3aXRoIGEgY29uc3RyYWluZWQgcGFydGlhbAoJdmlldyBhbmQgcmVxdWlyZSBzdGF0aWMgbWF0Y2hpbmcgaW4gdGhhdCBjYXNlLgoJQWRkIGxvY2FsIHZhcmlhYmxlIERlc19CdHlwLiBUaGUgRGVzaWduYXRlZF9UeXBlCglvZiBhbiBhY2Nlc3MgdG8gaW5jb21wbGV0ZSBzdWJ0eXBlIGlzIGVpdGhlciBpdHMgbm9uLWxpbWl0ZWQgdmlldyBpZgoJY29taW5nIGZyb20gYSBsaW1pdGVkIHdpdGggb3IgaXRzIGV0eXBlIGlmIHJlZ3VsYXIgaW5jb21wbGV0ZSBzdWJ0eXBlLgoKCSogc2VtX2NhdC5hZHMsIHNlbV9jYXQuYWRiIChWYWxpZGF0ZV9SZW1vdGVfQWNjZXNzX1RvX0NsYXNzX1dpZGVfVHlwZSk6CglGaXggcHJlZGljYXRlIHRvIGlkZW50aWZ5IGFuZCBhbGxvdyBjYXNlcyBvZiAoZXhwYW5kZXItZ2VuZXJhdGVkKQoJcmVmZXJlbmNlcyB0byB0YWcgb2YgZGVzaWduYXRlZCBvYmplY3Qgb2YgYSBSQUNXLgoJKFZhbGlkYXRlX1N0YXRpY19PYmplY3RfTmFtZSk6IEluIEFkYSAyMDA1LCBhIGZvcm1hbCBvYmplY3QgaXMKCW5vbi1zdGF0aWMsIGFuZCB0aGVyZWZvcmUgY2Fubm90IGFwcGVhciBhcyBhIHByaW1hcnkgaW4gYSBwcmVlbGFib3JhYmxlCglwYWNrYWdlLgoJKEhhc19TdHJlYW1fQXR0cmlidXRlX0RlZmluaXRpb24pOiBOZXcgc3VicHJvZ3JhbSwgYWJzdHJhY3RlZCBmcm9tCglIYXNfUmVhZF9Xcml0ZV9BdHRyaWJ1dGVzLgoJKEhhc19SZWFkX1dyaXRlX0F0dHJpYnV0ZXMpOiBSZWltcGxlbWVudCBpbiB0ZXJtZXMgb2YKCUhhc19TdHJlYW1fQXR0cmlidXRlX0RlZmluaXRpb24uCgkoTWlzc2luZ19SZWFkX1dyaXRlX0F0dHJpYnV0ZXMpOiBXaGVuIGNoZWNraW5nIGNvbXBvbmVudCB0eXBlcyBpbiBhCglyZWNvcmQsIHVuY29uZGl0aW9uYWxseSBjYWxsIE1pc3NpbmdfUmVhZF9Xcml0ZV9BdHRyaWJ1dGVzIHJlY3Vyc2l2ZWx5CgkocmVtb3ZlIGd1YXJkIGNoZWNraW5nIGZvciBJc19SZWNvcmRfVHlwZSAvIElzX0FjY2Vzc19UeXBlKS4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTEuYWRiIChBbmFseXplX0hhbmRsZWRfU3RhdGVtZW50cyk6IE1vdmUgZmluYWwgdGVzdCBmb3IKCXVzZWxlc3MgYXNzaWdubWVudHMgaGVyZSBhbmQgY29uZGl0aW9uYWxpemUgaXQgb24gYWJzZW5jZSBvZiBleGNlcHRpb24KCWhhbmRsZXJzLgoJKEFuYWx5emVfRXhjZXB0aW9uX0hhbmRsZXJzKTogU21hbGwgY29kZSByZW9yZ2FuaXphdGlvbiBvZiBlcnJvcgoJZGV0ZWN0aW9uIGNvZGUsIGZvciBuZXcgaGFuZGxpbmcgb2YgZm9ybWFsIHBhY2thZ2VzLgoKMjAwNi0xMC0zMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMi5hZHMsIHNlbV9jaDEyLmFkYiAoU2F2ZV9SZWZlcmVuY2VzKTogSWYgbm9kZSBpcyBhbiBvcGVyYXRvcgoJdGhhdCBoYXMgYmVlbiBjb25zdGFudC1mb2xkZWQsIHByZXNlcnZlIGluZm9ybWF0aW9uIG9mIG9yaWdpbmFsIHRyZWUsCglmb3IgQVNJUyB1c2VzLgoJKEFuYWx5emVfRm9ybWFsX0Rlcml2ZWRfVHlwZSk6IFNldCB0aGUgbGltaXRlZCBwcmVzZW50IGZsYWcgb2YgdGhlIG5ld2x5CglnZW5lcmF0ZWQgcHJpdmF0ZSBleHRlbnNpb24gZGVjbGFyYXRpb24gaWYgdGhlIGZvcm1hbCBkZXJpdmVkIHR5cGUgaXMKCXN5bmNocm9uaXplZC4gQ2Fycnkgc3luY2hyb25pemVkIHByZXNlbnQgb3ZlciB0byB0aGUgZ2VuZXJhdGVkIHByaXZhdGUKCWV4dGVuc2lvbi4KCShWYWxpZGF0ZV9EZXJpdmVkX1R5cGVfSW5zdGFuY2UpOiBFbnN1cmUgdGhhdCB0aGUgYWN0dWFsIG9mIGEKCXN5bmNocm9uaXplZCBmb3JtYWwgZGVyaXZlZCB0eXBlIGlzIGEgc3luY2hyb25pemVkIHRhZ2dlZCB0eXBlLgoJKEluc3RhbnRpYXRlX0Zvcm1hbF9QYWNrYWdlKTogV2hlbiBjcmVhdGluZyB0aGUgaW5zdGFudGlhdGlvbiB1c2VkIHRvCgl2YWxpZGF0ZSB0aGUgYWN0dWFsIHBhY2thZ2Ugb2YgYSBmb3JtYWwgZGVjbGFyZWQgd2l0aG91dCBhIGJveCwgY2hlY2sKCXdoZXRoZXIgdGhlIGZvcm1hbCBpdHNlbGYgZGVwZW5kcyBvbiBhIHByaW9yIGFjdHVhbC4KCShJbnN0YW50aWF0ZV9Gb3JtYWxfU3VicHJvZ3JhbSk6IENyZWF0ZSBuZXcgZW50aXRpZXMgZm9yIHRoZSBkZWZpbmluZwoJaWRlbnRpZmllcnMgb2YgdGhlIGZvcm1hbHMgaW4gdGhlIHJlbmFtaW5nIGRlY2xhcmF0aW9uLCBmb3IgQVNJUyB1c2UuCgkoSW5zdGFudGlhdGVfRm9ybWFsX1N1YnByb2dyYW0sIEluc3RhbnRpYXRlX0Zvcm1hbF9UeXBlKTogV2hlbiBjcmVhdGluZwoJYSByZW5hbWluZyBkZWNsYXJhdGlvbiBvciBhIHN1YnR5cGUgZGVjbGFyYXRpb24gZm9yIGFuIGFjdHVhbCBpbiBhbgoJaW5zdGFuY2UsIGNhcHR1cmUgbG9jYXRpb24gaW5mb3JtYXRpb24gb2YgZGVjbGFyYXRpb24gaW4gZ2VuZXJpYywgZm9yCglBU0lTIHVzZS4KCShJbnN0YW50aWF0ZV9Gb3JtYWxfUGFja2FnZSk6IEFkZCBjb21tZW50cyBvbiBuZWVkZWQgYWRkaXRpb25hbCB0ZXN0cy4KCUFJLTMxNyAocGFydGlhbCBwYXJhbWV0cml6YXRpb24pIGlzIGZ1bGx5IGltcGxlbWVudGVkLgoJKFZhbGlkYXRlX1ByaXZhdGVfVHlwZV9JbnN0YW5jZSk6IEFkZCBjaGVjayBmb3IgYWN0dWFsIHdoaWNoCgltdXN0IGhhdmUgcHJlZWxhYm9yYWJsZSBpbml0aWFsaXphdGlvbgoJVXNlIG5ldyAvLyBpbnNlcnRpb24gZm9yIHNvbWUgY29udGludWF0aW9uIG1lc3NhZ2VzCgkoQW5hbHl6ZV9Gb3JtYWxfT2JqZWN0X0RlY2xhcmF0aW9uKTogQ2hhbmdlIHVzYWdlIG9mIEV4cHJlc3Npb24gdG8KCURlZmF1bHRfRXhwcmVzc2lvbi4gQWRkIHR5cGUgcmV0cmlldmFsIHdoZW4gdGhlIGRlY2xhcmF0aW9uIGhhcyBhbgoJYWNjZXNzIGRlZmluaXRpb24uIFVwZGF0ZSBwcmVtYXR1cmUgdXNhZ2Ugb2YgaW5jb21wbGV0ZSB0eXBlIGNoZWNrLgoJKENoZWNrX0FjY2Vzc19EZWZpbml0aW9uKTogTmV3IHN1YnNpZGlhcnkgcm91dGluZS4gQ2hlY2sgd2hldGhlciB0aGUKCWN1cnJlbnQgY29tcGlsYXRpb24gdmVyc2lvbiBpcyBBZGEgMDUgYW5kIHRoZSBzdXBwbGllZCBub2RlIGhhcyBhbgoJYWNjZXNzIGRlZmluaXRpb24uCgkoSW5zdGFudGlhdGUgb2JqZWN0KTogQWxwaGFiZXRpemUgbG9jYWwgdmFyaWFibGVzLiBIYW5kbGUgdGhlIGNyZWF0aW9uCglvZiBuZXcgcmVuYW1pbmcgZGVjbGFyYXRpb25zIHdpdGggcmVzcGVjdCB0byB0aGUga2luZCBvZiBkZWZpbml0aW9uCgl1c2VkIC0gZWl0aGVyIGFuIGFjY2VzcyBkZWZpbml0aW9uIG9yIGEgc3VidHlwZSBtYXJrLiBHdWFyZCBhZ2FpbnN0Cgl1bm5lY2Vzc2FyeSBlcnJvciBtZXNzYWdlIGluIHRoZSBjb250ZXh0IG9mIGFub255bW91cyBhY2Nlc3MgdHlwZXMgYWZ0ZXIKCXRoZXkgaGF2ZSBiZWVuIHJlc29sdmVkLiBBZGQgY2hlY2sgZm9yIHJlcXVpcmVkIG51bGwgZXhjbHVzaW9uIGluIGEKCWZvcm1hbCBvYmplY3QgZGVjbGFyYXRpb24uCgkoU3dpdGNoX1ZpZXcpOiBBIHByaXZhdGUgc3VidHlwZSBvZiBhIG5vbi1wcml2YXRlIHR5cGUgbmVlZHMgdG8gYmUKCXN3aXRjaGVkICh0aGUgYmFzZSB0eXBlIGNhbiBoYXZlIGJlZW4gc3dpdGNoZWQgd2l0aG91dCBpdHMgcHJpdmF0ZQoJZGVwZW5kZW50cyBiZWNhdXNlIG9mIHRoZSBsYXN0IGJyYW5jaCBvZiBDaGVja19Qcml2YXRlX1ZpZXcuCgkoQ2hlY2tfUHJpdmF0ZV9WaWV3KTogRG8gbm90IHJlY29tcHV0ZSBCYXNlX1R5cGUgKFQpLCBpbnN0ZWFkIHVzZSBjYWNoZWQKCXZhbHVlIGZyb20gQlQuCgkoSW5zdGFudGlhdGVfVHlwZSk6IEVtaXQgYW4gZXJyb3IgbWVzc2FnZSB3aGVuZXZlciBhIGNsYXNzLXdpZGUgdHlwZSBvZgoJYSB0YWdnZWQgaW5jb21wbGV0ZSB0eXBlIGlzIHVzZWQgYXMgYSBnZW5lcmljIGFjdHVhbC4KCShGaW5kX0FjdHVhbF9UeXBlKTogRXh0ZW5kIHJvdXRpbmUgdG8gaGFuZGxlIGEgY29tcG9uZW50IHR5cGUgaW4gYSBjaGlsZAoJdW5pdCB0aGF0IGlzIGltcG9ydGVkIGZyb20gYSBmb3JtYWwgcGFja2FnZSBpbiBhIHBhcmVudC4KCShWYWxpZGF0ZV9EZXJpdmVkX1R5cGVfSW5zdGFuY2UpOiBDaGVjayB0aGF0IGFuYWx5emVkIGZvcm1hbCBhbmQgYWN0dWFsCglhZ3JlZSBvbiBjb25zdHJhaW5lZG5lc3MsIHJhdGhlciB0aGFuIGNoZWNraW5nIGFnYWluc3QgdWx0aW1hdGUgYW5jZXN0b3IKCShJbnN0YW50aWF0ZV9TdWJwcm9ncmFtX0JvZHkpOiBDcmVhdGUgYSBjcm9zcy1yZWZlcmVuY2UgbGluayB0byB0aGUKCWdlbmVyaWMgYm9keSwgZm9yIG5hdmlnYXRpb24gcHVycG9zZXMuCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTMuYWRiOiBTdG9yYWdlIHBvb2wgY2Fubm90IGJlIGdpdmVuIGZvciBhY2Nlc3MgdG8gc3VicHJvZ3JhbQoJdHlwZS4KCShOZXdfU3RyZWFtX1N1YnByb2dyYW0pOiBXaGVuIHByb2Nlc3NpbmcgYW4gYXR0cmlidXRlIGRlZmluaXRpb24gY2xhdXNlCglmb3IgYSBzdHJlYW0tb3JpZW50ZWQgc3VicHJvZ3JhbSwgcmVjb3JkIGFuIGVudGl0eSBub2RlIG9jY3VycmluZyBhdAoJdGhlIHBvaW50IG9mIGNsYXVzZSB0byB1c2UgZm9yIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBjbGF1c2UsCglhcyBkZWZpbmVkIGJ5IDguMygyMykgYXMgYW1lbmRlZCBieSBBSS0xOTUuCgkoTmV3X1N0cmVhbV9TdWJwcm9ncmFtKTogTmV3IHByb2NlZHVyZSwgZmFjdG9yaW5nIGJlaGF2aW91ciBmcm9tIGJvdGgKCSBOZXdfU3RyZWFtX0Z1bmN0aW9uIGFuZCBOZXdfU3RyZWFtX1Byb2NlZHVyZS4KCShOZXdfU3RyZWFtX0Z1bmN0aW9uLCBOZXdfU3RyZWFtX1Byb2NlZHVyZSk6IFJlbW92ZWQuCgkoQW5hbHl6ZV9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UsIGNhc2UgQWRkcmVzcyk6IENoZWNrIG5ldwoJQWxpZ25tZW50X0NoZWNrIGNoZWNrCgoyMDA2LTEwLTMxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNC5hZGIgKFRyeV9QcmltaXRpdmVfT3BlcmF0aW9uKTogQ29kZSBjbGVhbnVwIHRvIGVuc3VyZSB0aGF0IHdlCglnZW5lcmF0ZSB0aGUgc2FtZSBlcnJvcnMgY29tcGlsaW5nIHVuZGVyIC1nbmF0Yy4KCShUcnlfT2JqZWN0X09wZXJhdGlvbik6IElmIG5vIGNhbmRpZGF0ZSBpbnRlcnByZXRhdGlvbiBzdWNjZWVkcywgYnV0Cgl0aGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJpbWl0aXZlIG9wZXJhdGlvbiB3aXRoIHRoZSByaWdodCBuYW1lLCByZXBvcnQKCWVycm9yIGluIGNhbGwgcmF0aGVyIHRoYW4gb24gYSBtYWxmb3JtZWQgc2VsZWN0ZWQgY29tcG9uZW50LgoJKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogSWYgdGhlIHByZWZpeCBpcyBhbiBpbmNvbXBsZXRlIHR5cGUgZnJvbQoJYSBsaW1pdGVkIHZpZXcsIGFuZCB0aGUgZnVsbCB2aWV3IGlzIGF2YWlsYWJsZSwgdXNlIHRoZSBmdWxsIHZpZXcgdG8KCWRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBwcmVmaXhlZCBjYWxsIHRvIGEgcHJpbWl0aXZlIG9wZXJhdGlvbi4KCShPcGVyYXRvcl9DaGVjayk6IFZlcmlmeSB0aGF0IGEgY2FuZGlkYXRlIGludGVycHJldGF0aW9uIGlzIGEgYmluYXJ5CglvcGVyYXRpb24gYmVmb3JlIGNoZWNraW5nIHRoZSB0eXBlIG9mIGl0cyBzZWNvbmQgZm9ybWFsLgoJKEFuYWx5emVfQ2FsbCk6IEFkZCBhZGRpdGlvbmFsIHdhcm5pbmdzIGZvciBmdW5jdGlvbiBjYWxsIGNvbnRleHRzIG5vdAoJeWV0IHN1cHBvcnRlZC4KCShBbmFseXplX0FsbG9jYXRvcik6IE1vdmUgdGhlIGNoZWNrIGZvciAiaW5pdGlhbGl6YXRpb24gbm90IGFsbG93ZWQgZm9yCglsaW1pdGVkIHR5cGVzIiBhZnRlciBhbmFseXppbmcgdGhlIGV4cHJlc3Npb24uIFRoaXMgaXMgbmVjZXNzYXJ5LAoJYmVjYXVzZSBPS19Gb3JfTGltaXRlZF9Jbml0IGxvb2tzIGF0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGV4cHJlc3Npb24uCglCZWZvcmUgYW5hbHlzaXMsIHdlIGRvbid0IG5lY2Vzc2FyaWx5IGtub3cgd2hhdCBzb3J0IG9mIGV4cHJlc3Npb24gaXQKCWlzLiBGb3IgZXhhbXBsZSwgd2UgZG9uJ3Qga25vdyB3aGV0aGVyIEYoWCkgaXMgYSBmdW5jdGlvbiBjYWxsIG9yIGFuCglpbmRleGVkIGNvbXBvbmVudDsgdGhlIGZvcm1lciBpcyBsZWdhbCBpbiBBZGEgMjAwNTsgdGhlIGxhdHRlciBpcyBub3QuCgkoQW5hbHl6ZV9BbGxvY2F0b3IpOiBDb3JyZWN0IGNvZGUgZm9yIEFJLTI4NyAtLSBleHRlbnNpb24gYWdncmVnYXRlcwoJd2VyZSBtaXNzaW5nLiBXZSBhbHNvIGRpZG4ndCBoYW5kbGUgcXVhbGlmaWVkIGV4cHJlc3Npb25zLiBOb3cgYWxzbwoJYWxsb3cgZnVuY3Rpb24gY2FsbHMuIFVzZSBuZXcgY29tbW9uIHJvdXRpbmUgT0tfRm9yX0xpbWl0ZWRfSW5pdC4KCShBbmFseXplX1R5cGVfQ29udmVyc2lvbik6IERvIG5vdCBwZXJmb3JtIHNvbWUgbGVnYWxpdHkgY2hlY2tzIGluIGFuCglpbnN0YW5jZSwgYmVjYXVzZSB0aGUgZXJyb3IgbWVzc2FnZSB3aWxsIGJlIHJlZHVuZGFudCBvciBzcHVyaW91cy4KCShBbmFseXplX092ZXJsb2FkZWRfU2VsZWN0ZWRfQ29tcG9uZW50KTogRG8gbm90IGRvIHN0eWxlIGNoZWNrIHdoZW4KCXNldHRpbmcgYW4gZW50aXR5LCBzaW5jZSB3ZSBkbyBub3Qga25vdyBpdCBpcyB0aGUgcmlnaHQgZW50aXR5IHlldC4KCShBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IE1vdmUgR2VuZXJhdGVfUmVmZXJlbmNlIGNhbGwgdG8gU2VtX1JlcwoJKEFuYWx5emVfT3ZlcmxvYWRlZF9TZWxlY3RlZF9Db21wb25lbnQpOiBTYW1lIGNoYW5nZQoJKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogUmVtb3ZlIHVubmVjZXNzYXJ5IHByZWZpeCB0eXBlIHJldHJpZXZhbAoJc2luY2UgcmVndWxhciBpbmNvbXBsZXRlIHN1YnR5cGVzIGFyZSB0cmFuc2Zvcm1lZCBpbnRvIGNvcnJlc3BvbmRpbmcKCXN1YnR5cGVzIG9mIHRoZWlyIGZ1bGwgdmlld3MuCgkoQ29tcGxldGVfT2JqZWN0X09wZXJhdGlvbik6IFRyZWF0IG5hbWUgb2YgdHJhbnNmb3JtZWQgc3VicHJvZ3JhbSBjYWxsCglhcyBjb21pbmcgZnJvbSBzb3VyY2UsIGZvciBicm93c2luZyBwdXJwb3Nlcy4KCShUcnlfUHJpbWl0aXZlX09wZXJhdGlvbik6IElmIGZvcm1hbCBpcyBhbiBhY2Nlc3MgcGFyYW1ldGVyLCBjb21wYXJlCgl3aXRoIGJhc2UgdHlwZSBvZiBvYmplY3QgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgYSBwcmltaXRpdmUKCW9wZXJhdGlvbi4KCShPcGVyYXRvcl9DaGVjayk6IElmIG5vIGludGVycHJldGF0aW9uIG9mIHRoZSBvcGVyYXRvciBtYXRjaGVzLCBjaGVjawoJd2hldGhlciBhIHVzZSBjbGF1c2Ugb24gYW55IGNhbmRpZGF0ZSBtaWdodCBtYWtlIHRoZSBvcGVyYXRpb24gbGVnYWwuCgkoVHJ5X0NsYXNzX1dpZGVfT3BlcmF0aW9uKTogQ2hlY2sgd2hldGhlciB0aGUgZmlyc3QgcGFyYW1ldGVyIGlzIGFuCglhY2Nlc3MgdHlwZSB3aG9zZSBkZXNpZ25hdGVkIHR5cGUgaXMgY2xhc3Mtd2lkZS4KCjIwMDYtMTAtMzEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g1LmFkcywgc2VtX2NoNS5hZGIgKEFuYWx5emVfTG9vcF9TdGF0ZW1lbnQpOiBBZGQgY2lyY3VpdCB0bwoJd2FybiBvbiBpbmZpbml0ZSBsb29wcy4KCUFkZCBcXCB0byBzb21lIGNvbnRpbnVhdGlvbiBtZXNzYWdlcwoJKEFuYWx5emVfQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBDYWxsIFdhcm5fT25fVXNlbGVzc19Bc3NpZ25tZW50CgkoUHJvY2Vzc19Cb3VuZHMpOiBJZiB0aGUgYm91bmRzIGFyZSBpbnRlZ2VyIGxpdGVyYWxzIHRoYXQgcmVzdWx0IGZyb20KCWNvbnN0YW50LWZvbGRpbmcsIGFuZCB0aGV5IGNhcnJ5IGEgdXNlci1kZWZpbmVkIHR5cGUsIHByZXNlcnZlIHRoYXQgdHlwZQoJcmF0aGVyIHRoYW4gdHJlYXRpbmcgdGhpcyBhcyBhbiBpbnRlZ2VyIHJhbmdlLgoJKEFuYWx5emVfRXhpdF9TdGF0ZW1lbnQpOiBUZXN0IGZvciBFX1JldHVybl9TdGF0ZW1lbnQgaW4gbGVnYWxpdHkgY2hlY2suCgkoQW5hbHl6ZV9Hb3RvX1N0YXRlbWVudCk6IFRlc3QgZm9yIEVfUmV0dXJuX1N0YXRlZW1udCBpbiBsZWdhbGl0eSBjaGVjay4KCShBbmFseXplX0Fzc2lnbm1lbnRfU3RhdGVtZW50KTogQWRkIGNhbGwgdG8gQ2hlY2tfRWxhYl9Bc3NpZ24gZm9yCglsZWZ0IGhhbmQgc2lkZSBvZiBhc3NpZ25tZW50LgoJKEFuYWx5emVfQXNzaWdubWVudCk6IEFkZCBzdXBvcnQgdG8gbWFuYWdlIGFzc2lnbWVudHMgdG8gdGhlIGF0dHJpYnV0ZQoJcHJpb3JpdHkgb2YgYSBwcm90ZWN0ZWQgb2JqZWN0LgoJKENoZWNrX1Bvc3NpYmxlX0N1cnJlbnRfVmFsdWVfQ29uZGl0aW9uKTogQWxsb3cgZnVsbHkgcXVhbGlmaWVkIG5hbWVzCglub3QganVzdCBpZGVudGlmaWVycy4KCShDaGVja19Qb3NzaWJsZV9DdXJyZW50X1ZhbHVlX0NvbmRpdGlvbik6IEFjcXVpcmUgbGVmdCBvcGVyYW5kIG9mIEFORAoJb3IgQU5EIFRIRU4gZm9yIHBvc3NpYmxlIHRyYWNraW5nLgoJKEFuYWx5emVfSXRlcmF0aW9uX1NjaGVtZSk6IENoZWNrIGZvciBzZXR0aW5nIEN1cnJlbnRfVmFsdWUgZm9yIHRoZQoJY2FzZSBvZiB3aGlsZSBsb29wcyBzbyB3ZSBjYW4gdHJhY2sgdmFsdWVzIGluIHRoZSBsb29wIGJvZHkuCgoyMDA2LTEwLTMxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g2LmFkcywgc2VtX2NoNi5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IEEgbnVsbAoJcHJvY2VkdXJlIGNhbm5vdCBiZSBhIHByb3RlY3RlZCBvcGVyYXRpb24gKGl0IGlzIGEgYmFzaWNfZGVjbGFyYXRpb24sCglub3QgYSBzdWJwcm9ncmFtX2RlY2xhcmF0aW9uKS4KCShDaGVja19PdmVycmlkaW5nX0luZGljYXRvcik6IFJlbmFtZSBmb3JtYWwgRG9lc19PdmVycmlkZSB0byBPdmVycmlkZGVuXwoJU3VicC4gQWRkIGxvZ2ljIGZvciBlbnRyeSBwcm9jZXNzaW5nLgoJKENoZWNrX1N5bmNocm9uaXplZF9PdmVycmlkaW5nKTogTmV3IHByb2NlZHVyZSBpbiBOZXdfT3ZlcmxvYWRlZF9FbnRpdHkuCglEZXRlcm1pbmUgd2hldGhlciBhbiBlbnRyeSBvciBzdWJwcm9ncmFtIG9mIGEgcHJvdGVjdGVkIG9yIHRhc2sgdHlwZQoJb3ZlcnJpZGUgYW4gaW5oZXJpdGVkIHByaW1pdGl2ZSBvZiBhbiBpbXBsZW1lbnRlZCBpbnRlcmZhY2UuCgkoTmV3X092ZXJsb2FkZWRfRW50aXR5KTogQWRkIGNhbGxzIHRvIENoZWNrX1N5bmNocm9uaXplZF9PdmVycmlkaW5nLgoJVXBkYXRlIHRoZSBhY3R1YWwgdXNlZCBpbiBjYWxscyB0byBDaGVja19PdmVycmlkaW5nX0luZGljYXRvci4KCShBbmFseXplX0dlbmVyaWNfU3VicHJvZ3JhbV9Cb2R5KTogSWYgdGhlIHN1YnByb2dyYW0gaXMgYSBjaGlsZCB1bml0LAoJZ2VuZXJhdGUgdGhlIHByb3BlciByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCB1bml0LCBmb3IgY3Jvc3MtcmVmZXJlbmNlLgoJKEFuYWx5emVfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IFByb3RlY3QgSXNfQ29udHJvbGxpbmdfRm9ybWFsIHdpdGgKCUlzX0Zvcm1hbC4KCUFkZCAtZ25hdGQubCAtLVVzZSBBZGEgOTUgc2VtYW50aWNzIGZvciBsaW1pdGVkIGZ1bmN0aW9uIHJldHVybnMsCgkoQWRkX0V4dHJhX0Zvcm1hbCk6IFJldmlzZSBwcm9jZWR1cmUgdG8gYWxsb3cgcGFzc2luZyBpbiBhc3NvY2lhdGVkCgllbnRpdHksIHNjb3BlLCBhbmQgbmFtZSBzdWZmaXgsIGFuZCBoYW5kbGUgc2V0dGluZyBvZiB0aGUgbmV3CglFeHRyYV9Gb3JtYWxzIGZpZWxkLgoJKENyZWF0ZV9FeHRyYV9Gb3JtYWxzKTogQ2hhbmdlIGV4aXN0aW5nIGNhbGxzIHRvIEFkZF9FeHRyYV9Gb3JtYWwgdG8KCXBhc3MgbmV3IHBhcmFtZXRlcnMuIEFkZCBzdXBwb3J0IGZvciBhZGRpbmcgdGhlIG5ldyBleHRyYSBhY2Nlc3MgZm9ybWFsCglmb3IgZnVuY3Rpb25zIHdob3NlIGNhbGxzIGFyZSB0cmVhdGVkIGFzIGJ1aWxkLWluLXBsYWNlLgoJKEFuYWx5emVfQV9SZXR1cm5fU3RhdGVtZW50KTogQ29ycmVjdCBjYXNpbmcgaW4gZXJyb3IgbWVzc2FnZS4KCU1vdmUgUG9wX1Njb3BlIHRvIGFmdGVyIEFuYWx5emVfRnVuY3Rpb25fUmV0dXJuLCBiZWNhdXNlIGFuIGV4dGVuZGVkCglyZXR1cm4gc3RhdGVtZW50IHJlYWxseSBpcyBhIGZ1bGwtZmxlZGdlZCBzY29wZS4gT3RoZXJ3aXNlLCB2aXNpYmlsaXR5Cglkb2Vzbid0IHdvcmsgcmlnaHQuIENvcnJlY3QgdXNlIG9mICJcIiBmb3IgY29udGludWF0aW9uIG1lc3NhZ2VzLgoJKEFuYWx5emVfRnVuY3Rpb25fUmV0dXJuKTogQ2FsbCBBbmFseXplIG9uIHRoZSBPYmpfRGVjbCwgcmF0aGVyIHRoYW4KCWV2aWxseSB0cnlpbmcgdG8gY2FsbCBBbmFseXplX09iamVjdF9EZWNsYXJhdGlvbiBkaXJlY3RseS4gT3RoZXJ3aXNlLAoJdGhlIG5vZGUgZG9lc24ndCBnZXQgcHJvcGVybHkgbWFya2VkIGFzIGFuYWx5emVkLgoJKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogSWYgc3VicHJvZ3JhbSBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucwoJYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlIHRoYXQgZGVub3RlcyBhIHRhc2ssIGJ1aWxkIGEgTWFzdGVyIEVudGl0eQoJZm9yIGl0LgoJKEFuYWx5emVfUmV0dXJuX1R5cGUpOiBBZGQgY2FsbCB0byBOdWxsX0V4Y2x1c2lvbl9TdGF0aWNfQ2hlY2tzLiBWZXJpZnkKCXByb3BlciB1c2FnZSBvZiBudWxsIGV4Y2x1c2lvbiBpbiBhIHJlc3VsdCBkZWZpbml0aW9uLgoJKFByb2Nlc3NfRm9ybWFscyk6IENvZGUgY2xlYW51cCBhbmQgbmV3IGVycm9yIG1lc3NhZ2UuCgkoUHJvY2Vzc19Gb3JtYWxzKTogRGV0ZWN0IGluY29ycmVjdCBhcHBsaWNhdGlvbiBvZiBudWxsIGV4Y2x1c2lvbiB0bwoJbm9uLWFjY2VzcyB0eXBlcy4KCShDb25mb3JtaW5nX1R5cGVzKTogSGFuZGxlIGNvbmZvcm1hbmNlIGJldHdlZW4gW3N1Yl10eXBlcyBhbmQgaXR5cGVzCgkgZ2VuZXJhdGVkIGZvciBlbnRpdGllcyB0aGF0IGhhdmUgbnVsbCBleGNsdXNpb25zIGFwcGxpZWQgdG8gdGhlbS4KCShNYXliZV9QcmltaXRpdmVfT3BlcmF0aW9uKTogQWRkIGFuIGFkZGl0aW9uYWwgdHlwZSByZXRyaWV2YWwgd2hlbiB0aGUKCSBiYXNlIHR5cGUgaXMgYW4gYWNjZXNzIHN1YnR5cGUuIFRoaXMgY2FzZSBhcnJpc2VzIHdpdGggbnVsbCBleGNsdXNpb25zLgoJKE5ld19PdmVybG9hZGVkX0VudGl0eSk6IERvIG5vdCByZW1vdmUgdGhlIG92ZXJyaWRlbiBlbnRpdHkgZnJvbSB0aGUKCWhvbW9ueW0gY2hhaW4gaWYgaXQgY29ycmVzcG9uZHMgd2l0aCBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgcHJpbWl0aXZlLgoJKFByb2Nlc3NfRm9ybWFscyk6IFJlcGxhY2UgbWVtYmVyc2hpcCB0ZXN0IGFnYWlucyBJbmNvbXBsZXRlX0tpbmQgd2l0aCBhCgljYWxsIHRvIHRoZSBzeW50aGVzaXplZCBwcmVkaWNhdGUgSXNfSW5jb21wbGV0ZV9UeXBlLgoJKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogQ2hlY2sgd3JvbmcgcGxhY2VtZW50IG9mIGFic3RyYWN0IGludGVyZmFjZQoJcHJpbWl0aXZlcy4KCShBbmFseXplX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBDaGVjayB0aGF0IGFic3RyYWN0IGludGVyZmFjZQoJcHJpbWl0aXZlcyBhcmUgYWJzdHJhY3Qgb3IgbnVsbC4KCShBbmFseXplX1N1YnByb2dyYW1fU3BlY2lmaWNhdGlvbik6IFJlbW92ZSBwcmV2aW91cyBjaGVjayBmb3IgYWJzdHJhY3QKCWludGVyZmFjZXMgYmVjYXVzZSBpdCB3YXMgbm90IGNvbXBsZXRlLgoJKEhhc19JbnRlcmZhY2VfRm9ybWFscyk6IFJlbW92ZWQuCgoyMDA2LTEwLTMxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNy5hZGIgKENoZWNrX0Fub255bW91c19BY2Nlc3NfVHlwZXMpOiBOZXcgcHJvY2VkdXJlLCBzdWJzaWRpYXJ5CglvZiBBbmFseXplX1BhY2thZ2VfQm9keSwgdG8gY3JlYXRlIEl0eXBlIHJlZmVyZW5jZXMgZm9yIGFub255bW91cwoJYWNjZXNzIHR5cGVzIGNyZWF0ZWQgaW4gdGhlIHBhY2thZ2UgZGVjbGFyYXRpb24sIHdob3NlIGRlc2lnbmF0ZWQgdHlwZXMKCW1heSBoYXZlIG9ubHkgYSBsaW1pdGVkIHZpZXcuCgkoQW5hbHl6ZV9QYWNrYWdlX1NwZWNpZmljYXRpb24pOiBGb3IgdGhlIHByaXZhdGUgcGFydCBvZiBhIG5lc3RlZAoJcGFja2FnZSwgaW5zdGFsbCBwcml2YXRlX3dpdGhfY2xhdXNlcyBvZiBlbmNsb3NpbmcgY29tcGlsYXRpb24gdW5pdCBpZgoJd2UgYXJlIGluIGl0cyB2aXNpYmxlIHBhcnQuCgkoRGVjbGFyZV9Jbmhlcml0ZWRfUHJpdmF0ZV9TdWJwcm9ncmFtcyk6IENvbXBsZXRlIGJhcnJpZXIKCXRvIGVuc3VyZSB0aGF0IHRoZSBwcmltaXRpdmUgb3BlcmF0aW9uIGhhcyBhbiBhbGlhcyB0byBzb21lIHBhcmVudAoJcHJpbWl0aXZlLiBUaGlzIGlzIG5vdyByZXF1aXJlZCBiZWNhdXNlLCBhZnRlciB0aGUgY2hhbmdlcyBkb25lIGZvciB0aGUKCWltcGxlbWVudGF0aW9uIG9mIGFic3RyYWN0IGludGVyZmFjZXMsIHRoZSBjb250ZW50cyBvZiB0aGUgbGlzdCBvZgoJcHJpbWl0aXZlcyBoYXMgZW50aXRpZXMgd2hvc2UgYWxpYXMgYXR0cmlidXRlIHJlZmVyZW5jZXMgZW50aXRpZXMgb2YKCXN1Y2ggbGlzdCBvZiBwcmltaXRpdmVzLgoJKEFuYWx5emVfUGFja2FnZV9TcGVjaWZpY2F0aW9uKTogU2ltcGxpZnkgY29kZSB0aGF0IGhhbmRsZXMgcGFyZW50IHVuaXRzCglvZiBpbnN0YW5jZXMgYW5kIGZvcm1hbCBwYWNrYWdlcy4KCShVbmluc3RhbGxfRGVjbGFyYXRpb25zKTogQ2hlY2sgdGhlIGNvbnZlbnRpb24gY29uc2lzdGVuY3kgYW1vbmcKCXByaW1pdGl2ZSBvdmVycmlkaW5nIG9wZXJhdGlvbnMgb2YgYSB0YWdnZWQgcmVjb3JkIHR5cGUuCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g4LmFkYjogTWlub3IgZXJyb3IgbXNnIHJld29yZGluZwoJKFVuZGVmaW5lZCk6IFdoZW4gY2hlY2tpbmcgZm9yIG1pc3NwZWxsaW5ncywgaW52ZXJ0IGFyZ3VtZW50cyAodG8gZ2V0CglleHBlY3RlZCBhbmQgZm91bmQgc2V0IHJpZ2h0KQoJKEFuYWx5emVfU3VicHJvZ3JhbV9SZW5hbWluZyk6IFByb3BhZ2F0ZSBJc19QdXJlLCBJc19QcmVlbGFib3JhdGVkCgkoQW5hbHl6ZV9HZW5lcmljX1JlbmFtaW5nKTogU2FtZSBmaXgKCShVc2VfT25lX1BhY2thZ2UpOiBEbyBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhlIGludGVybmFsIGVudGl0aWVzIG9mCglhYnN0cmFjdCBpbnRlcmZhY2VzIGR1cmluZyB0aGUgYW5hbHlzaXMgb2YgZW50aXRpZXMgdGhhdCBhcmUgbWFya2VkCglhcyBwb3RlbnRpYWxseSB1c2UtdmlzaWJsZS4KCShGaW5kX1R5cGUpOiBIYW5kbGUgdGhlIGNhc2Ugb2YgYW4gYXR0cmlidXRlIHJlZmVyZW5jZSBmb3IKCWltcGxlbWVudGF0aW9uIGRlZmluZWQgYXR0cmlidXRlIFN0dWJfVHlwZSAoc2ltcGx5IGxldCB0aGUgYW5hbHlzaXMgb2YKCXRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlIHJld3JpdGUgaXQpLgoJKFVzZV9PbmVfVHlwZSwgRW5kX1VzZV9UeXBlKTogUmVqZWN0IGEgcmVmZXJlbmNlIHRvIGEgbGltaXRlZCB2aWV3IG9mIGEKCXR5cGUgdGhhdCBhcHBlYXJzIGluIGEgVXNlX1R5cGUgY2xhdXNlLgoJKEFuYWx5emVfT2JqZWN0X1JlbmFtaW5nKTogQWRkIHN1cHBvcnQgZm9yIHJlbmFtaW5nIG9mIHRoZSBQcmlvcml0eQoJYXR0cmlidXRlLgoJKEZpbmRfVHlwZSk6IEluIEFkYSAyMDA1LCBhIHRhc2sgdHlwZSBjYW4gYmUgdXNlZCB3aXRoaW4gaXRzIG93biBib2R5LAoJd2hlbiBpdCBhcHBlYXJzIGluIGFuIGFjY2VzcyBkZWZpbml0aW9uLgoJKEFuYWx5emVfT2JqZWN0X1JlbmFtaW5nKTogUmVtb3ZlIHdhcm5pbmcgb24gbnVsbF9leGNsdXNpb24uCgkoQW5hbHl6ZV9PYmplY3RfUmVuYW1pbmcpOiBJbnRyb2R1Y2UgY2hlY2tzIGZvciByZXF1aXJlZCBudWxsIGV4Y2x1c2lvbgoJIGluIGEgZm9ybWFsIG9iamVjdCBkZWNsYXJhdGlvbiBvciBpbiBhIHN1YnR5cGUgZGVjbGFyYXRpb24uCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX1JlbmFtaW5nKTogQWRkIGNhbGwgdG8gQ2hlY2tfTnVsbF9FeGNsdXNpb24uCgkoQ2hlY2tfTnVsbF9FeGNsdXNpb24pOiBOZXcgbG9jYWwgcm91dGluZSB0bwoJQW5hbHl6ZV9TdWJwcm9ncmFtX1JlbmFtaW5nLiBDaGVjayB3aGV0aGVyIHRoZSBmb3JtYWxzIGFuZCByZXR1cm4KCXByb2ZpbGUgb2YgYSByZW5hbWVkIHN1YnByb2dyYW0gaGF2ZSByZXF1aXJlZCBudWxsIGV4Y2x1c2lvbnMgd2hlbgoJdGhlaXIgY291bnRlcnBhcnRzIG9mIHRoZSByZW5hbWluZyBhbHJlYWR5IGltcG9zZSB0aGVtLgoJKEluX0dlbmVyaWNfU2NvcGUpOiBOZXcgbG9jYWwgcm91dGluZSB0byBBbmFseXplX09iamVjdF9SZW5hbWluZy4KCURldGVybWluZSB3aGV0aGVyIGFuIGVudGl0eSBpcyBpbnNpZGUgYSBnZW5lcmljIHNjb3BlLgoJKEluX09wZW5fU2NvcGUpOiBGaXJzdCBwYXNzIG9mIGRvY3VtZW50YXRpb24gdXBkYXRlLgoJKEZpbmRfRXhwYW5kZWRfTmFtZSk6IEFkZCBzdXBwb3J0IGZvciBzaGFkb3cgZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoCglsaW1pdGVkIHdpdGhlZCBwYWNrYWdlcy4gVGhpcyBpcyByZXF1aXJlZCB0byBoYW5kbGUgbmVzdGVkIHBhY2thZ2VzLgoJKEFuYWx5emVfUGFja2FnZV9SZW5hbWluZyk6IFJlbW92ZSB0aGUgcmVzdHJpY3Rpb24gaW1wb3NlZCBieSBBSS0yMTcKCXRoYXQgbWFrZXMgYSByZW5hbWluZyBvZiBhIGxpbWl0ZWQgd2l0aGVkIHBhY2thZ2UgaWxsZWdhbC4KCjIwMDYtMTAtMzEgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoOS5hZGIgKEFuYWx5emVfUHJvdGVjdGVkX0RlZmluaXRpb24pOiBSZW1vdmUgY2FsbCB0bwoJQ2hlY2tfT3ZlcnJpZGluZ19JbmRpY2F0b3IuCgkoQW5hbHl6ZV9UYXNrX0RlZmluaXRpb24pOiBEaXR0by4KCShBbmFseXplX1Byb3RlY3RlZF9UeXBlLCBBbmFseXplX1Rhc2tfVHlwZSk6IENvZGUgY2xlYW51cC4KCShDaGVja19PdmVycmlkaW5nX0luZGljYXRvcik6IFRvIGZpbmQgb3ZlcnJpZGRlbiBpbnRlcmZhY2Ugb3BlcmF0aW9uLAoJZXhhbWluZSBvbmx5IGhvbW9ueW1zIHRoYXQgaGF2ZSBhbiBleHBsaWNpdCBzdWJwcm9ncmFtIGRlY2xhcmF0aW9uLCBub3QKCWluaGVyaXRlZCBvcGVyYXRpb25zIGNyZWF0ZWQgYnkgYW4gdW5yZWxhdGVkIHR5cGUgZGVyaXZhdGlvbi4KCShDaGVja19PdmVycmlkaW5nX0luZGljYXRvcik6IFdoZW4gY2hlY2tpbmcgZm9yIHRoZSBwcmVzZW5jZSBvZiAibnVsbCIKCWluIGEgcHJvY2VkdXJlLCBlbnN1cmUgdGhhdCB0aGUgcXVlcmllZCBub2RlIGlzIGEgcHJvY2VkdXJlCglzcGVjaWZpY2F0aW9uLgoJKE1hdGNoZXNfUHJlZml4ZWRfVmlld19Qcm9maWxlKTogQWRkIG1lY2hhbmlzbSB0byByZXRyaWV2ZSB0aGUgcGFyYW1ldGVyCgl0eXBlIHdoZW4gdGhlIGZvcm1hbCBpcyBhbiBhY2Nlc3MgdG8gdmFyaWFibGUuCgkoQW5hbHl6ZV9Qcm90ZWN0ZWRfVHlwZSk6IEFkZCBjaGVjayBmb3IgUHJlZWxhYm9yYWJsZV9Jbml0aWFsaXphdGlvbgoJKEFuYWx5emVfVGFza19UeXBlKTogU2FtZSBhZGRpdGlvbgoJKEFuYWx5emVfRW50cnlfRGVjbGFyYXRpb24pOiBDYWxsIEdlbmVyYXRlX1JlZmVyZW5jZV9Ub19Gb3JtYWxzLCB0bwoJcHJvdmlkZSBuYXZpZ2F0aW9uIGNhcGFiaWxpdGllcyBmb3IgZW50cmllcy4KCjIwMDYtMTAtMzEgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzZW1fZGlzcC5hZGIgKENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IERvIG5vdCBmbGFnIHN1YnByb2dyYW1zCglpbmhlcml0ZWQgZnJvbSBhbiBpbnRlcmZhY2UgYW5jZXN0b3IgYnkgYW5vdGhlciBpbnRlcmZhY2UgaW4gdGhlCgljb250ZXh0IG9mIGFuIGluc3RhbmNlIGFzICdsYXRlJy4KCShJc19UYWdfSW5kZXRlcm1pbmF0ZSwgUHJvcGFnYXRlX1RhZyk6IEhhbmRsZSBwcm9wZXJseSB0aGUgZGVyZWZlcmVuY2UKCW9mIGEgY2FsbCB0byBhIGZ1bmN0aW9uIHRoYXQgZGlzcGF0Y2hlcyBvbiBhY2Nlc3MgcmVzdWx0LgoJKENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IEluIGNhc2Ugb2YgbGF0ZSBvdmVycmlkaW5nIG9mIGEgcHJpbWl0aXZlCgl0aGF0IGNvdmVycyBhYnN0cmFjdCBpbnRlcmZhY2Ugc3VicHJvZ3JhbXMgd2UgcmVnaXN0ZXIgaXQgaW4gYWxsIHRoZQoJc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlcyBhc3NvY2lhdGVkIHdpdGggYWJzdHJhY3QgaW50ZXJmYWNlcy4KCShDaGVja19EaXNwYXRjaGluZ19DYWxsKTogQWRkIGNoZWNrIHRoYXQgYSBkaXNwYXRjaGluZyBjYWxsIGlzIG5vdCBtYWRlCgl0byBhIGZ1bmN0aW9uIHdpdGggYSBjb250cm9sbGluZyByZXN1bHQgb2YgYSBsaW1pdGVkIHR5cGUuIFRoaXMgaXMgYQoJY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXN0cmljdGlvbi4KCShDaGVja19Db250cm9sbGluZ19Gb3JtYWwpOiBSZW1vdmUgYm9ndXMgY2hlY2tzIGZvciBFLjIuMigxNCkuCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogRG8gbm8gZW1pdCBhIHdhcm5pbmcgaWYgdGhlIGNvbnRyb2xsaW5nCglhcmd1bWVudCBpcyBhbiBpbnRlcmZhY2UgdHlwZSB0aGF0IGlzIGEgZ2VuZXJpYyBmb3JtYWwuCgkoSXNfSW50ZXJmYWNlX1N1YnByb2dyYW0pOiBSZW1vdmVkLgoJKENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IElmIHRoZSBzdWJwcm9ncmFtIGlzIG5vdCBhIGRpc3BhdGNoaW5nCglvcGVyYXRpb24sIGNoZWNrIHRoZSBmb3JtYWxzIHRvIGhhbmRsZSB0aGUgY2FzZSBpbiB3aGljaCBpdCBpcwoJYXNzb2NpYXRlZCB3aXRoIGFuIGFic3RyYWN0IGludGVyZmFjZSB0eXBlLgoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2VsYWIuYWRzLCBzZW1fZWxhYi5hZGIgKENoZWNrX0VsYWJfQXNzaWduKTogTmV3IHByb2NlZHVyZQoJQWRkIG5ldyBjYWxscyB0byB0aGlzIHByb2NlZHVyZSBkdXJpbmcgdHJhdmVyc2FsCgkoQWN0aXZhdGVfRWxhYm9yYXRlX0FsbF9EZXNpcmFibGUpOiBEbyBub3Qgc2V0IGVsYWJvcmF0aW9uIGZsYWcgb24KCWFub3RoZXIgdW5pdCBpZiBleHBhbnNpb24gaXMgZGlzYWJsZWQuCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9ldmFsLmFkYiAoQ29tcGlsZV9UaW1lX0NvbXBhcmUpOiBNYWtlIHVzZSBvZiBpbmZvcm1hdGlvbiBmcm9tCglDdXJyZW50X1ZhbHVlIGluIHRoZSBjb25kaXRpb25hbCBjYXNlLCB0byBldmFsdWF0ZSBhZGRpdGlvbmFsCgljb21wYXJpc29ucyBhdCBjb21waWxlIHRpbWUuCgoyMDA2LTEwLTMxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fdHlwZS5hZGIgKEFkZF9PbmVfSW50ZXJwKTogSWYgbm9kZSBpcyBhbiBpbmRpcmVjdCBjYWxsLCBwcmVzZXJ2ZQoJc3VicHJvZ3JhbSB0eXBlIHRvIHByb3ZpZGUgYmV0dGVyIGRpYWdub3N0aWNzIGluIGNhc2Ugb2YgYW1iaWd1aXR5LgoJKENvdmVycyk6IEhhbmRsZSBjb3ZlcmFnZSBvZiBmb3JtYWwgYW5kIGFjdHVhbCBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzIGluCgl0aGUgY29udGV4dCBvZiBnZW5lcmljIGluc3RhbnRpYXRpb24uCgkoQ292ZXJzL0ludGVyZmFjZV9QcmVzZW50X0luX0FuY2VzdG9ycyk6IFVzZSB0aGUgYmFzZSB0eXBlIHRvIG1hbmFnZQoJYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzOyB0aGlzIGlzIHJlcXVpcmVkIHRvIGhhbmRsZSBjb25jdXJyZW50IHR5cGVzCgl3aXRoIGRpc2NyaW1pbmFudHMgYW5kIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcy4KCShDb3ZlcnMpOiBJbmNsdWRlIHR5cGUgY292ZXJhZ2Ugb2YgYm90aCByZWd1bGFyIGluY29tcGxldGUgc3VidHlwZXMgYW5kCglpbmNvbXBsZXRlIHN1YnR5cGVzIG9mIGluY29tcGxldGUgdHlwZSB2aXNpYmxlcyB0aHJvdWdoIGEgbGltaXRlZCB3aXRoCgljbGF1c2UuCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV91dGlsLmFkcywgc2VtX3V0aWwuYWRiIChFbnRlcl9OYW1lKTogRXhjbHVkZSAtZ25hdHdoIHdhcm5pbmcKCW1lc3NhZ2VzIGZvciBlbnRpdGllcyBpbiBwYWNrYWdlcyB3aGljaCBhcmUgbm90IHVzZWQuCgkoQ29sbGVjdF9TeW5jaHJvbml6ZWRfSW50ZXJmYWNlcyk6IE5ldyBwcm9jZWR1cmUuCgkoT3ZlcnJpZGVzX1N5bmNocm9uaXplZF9QcmltaXRpdmUpOiBOZXcgZnVuY3Rpb24uCgkoRGVub3Rlc19EaXNjcmltaW5hbnQpOiBFeHRlbmQgcHJlZGljYXRlIHRvIGFwcGx5IHRvIHRhc2sgdHlwZXMuCglBZGQgbWlzc2luZyBjb250aW51YXRpb24gbWFya3MgaW4gZXJyb3IgbXNncwoJKFVucXVhbGlmeSk6IE5ldyBmdW5jdGlvbiBmb3IgcmVtb3ZpbmcgemVybyBvciBtb3JlIGxldmVscyBvZgoJcXVhbGlmaWNhdGlvbiBmcm9tIGFuIGV4cHJlc3Npb24uIFRoZXJlIGFyZSBudW1lcm91cyBwbGFjZXMgd2hlcmUgdGhpcwoJb3VnaHQgdG8gYmUgdXNlZCwgYnV0IHdlIGN1cnJlbnRseSBvbmx5IGRlYWwgcHJvcGVybHkgd2l0aCB6ZXJvIG9yIG9uZQoJbGV2ZWwuCgkoSW5fSW5zdGFuY2UpOyBUaGUgYW5hbHlzaXMgb2YgdGhlIGFjdHVhbHMgaW4gdGhlIGluc3RhbnRpYXRpb24gb2YgYQoJY2hpbGQgdW5pdCBpcyBub3Qgd2l0aGluIGFuIGluc3RhbnRpYXRpb24sIGV2ZW4gdGhvdWdoIHRoZSBwYXJlbnQKCWluc3RhbmNlIGlzIG9uIHRoZSBzY29wZSBzdGFjay4KCShTYWZlX1RvX0NhcHR1cmVfVmFsdWUpOiBFeGNsdWRlIHRoZSBjYXNlIG9mIHZhcmlhYmxlcyB0aGF0IGFyZQoJcmVuYW1pbmdzLgoJKENoZWNrX09ic29sZXNjZW50KTogUmVtb3ZlZAoJKElzX0FsaWFzZWRfVmlldyk6IEEgcmVmZXJlbmNlIHRvIGFuIGVuY2xvc2luZyBpbnN0YW5jZSBpbiBhbiBhZ2dyZWdhdGUKCWlzIGFuIGFsaWFzZWQgdmlldywgZXZlbiB3aGVuIHJld3JpdHRlbiBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdGFyZ2V0CglvYmplY3QgaW4gYW4gYXNzaWdubWVudC4KCShHZXRfU3VicHJvZ3JhbV9FbnRpdHkpOiBOZXcgZnVuY3Rpb24KCShLbm93bl9Ub19CZV9Bc3NpZ25lZCk6IE5ldyBmdW5jdGlvbgoJKFR5cGVfQWNjZXNzX0xldmVsKTogQ29tcHV0ZSBwcm9wZXJseSB0aGUgYWNjZXNzIGxldmVsIG9mIGEgcmV0dXJuCglzdWJ0eXBlIHRoYXQgaXMgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlLgoJKEV4cGxhaW5fTGltaXRlZF9UeXBlKTogQ29ycmVjdCB1c2Ugb2YgIlwiIGZvciBjb250aW51YXRpb24gbWVzc2FnZXMuCgkoSXNfVHJhbnNmZXIpOiBUaGUgbmV3IGV4dGVuZGVkX3JldHVybl9zdGF0ZW1lbnQgY2F1c2VzIGEgdHJhbnNmZXIgb2YKCWNvbnRyb2wuCgkoSGFzX1ByZWVsYWJvcmFibGVfSW5pdGlhbGl6YXRpb24pOiBOZXcgZnVuY3Rpb24KCShIYXNfTnVsbF9FeGNsdXNpb24pOiBOZXcgZnVuY3Rpb24uIEdpdmVuIGEgbm9kZSBOLCBkZXRlcm1pbmUgd2hldGhlciBpdAoJaGFzIGEgbnVsbCBleGNsdXNpb24gZGVwZW5kaW5nIG9uIGl0cyBOa2luZC4KCUNoYW5nZSBJc19MdmFsdWUgdG8gTWF5X0JlX0x2YWx1ZQoJKE1heV9CZV9MdmFsdWUpOiBFeHRlbnNpdmUgYWRkaXRpb25hbCBjb2RlIHRvIGRlYWwgd2l0aCBzdWJwcm9ncmFtCglhcmd1bWVudHMgKElOIHBhcmFtZXRlcnMgYXJlIG5vdCBMdmFsdWVzLCBJTiBPVVQgcGFyYW1ldGVycyBhcmUpLgoJKFNhZmVfVG9fQ2FwdHVyZV9WYWx1ZSk6IEV4dGVuZCBmdW5jdGlvbmFsaXR5IHNvIGl0IGNhbiBiZSB1c2VkIGZvcgoJdGhlIGN1cnJlbnQgdmFsdWUgY29uZGl0aW9uIGNhc2UuCgkoSGFzX0NvbXBhdGlibGVfQWxpZ25tZW50KTogTmV3IGZ1bmN0aW9uCgkoSXNfRGVwZW5kZW50X0NvbXBvbmVudF9PZl9NdXRhYmxlX09iamVjdCk6IFJldmlzZSB0aGUgdGVzdHMgZm9yIG11dGFibGUKCW9iamVjdHMgdG8gaGFuZGxlIHRoZSBBZGEgMjAwNSBjYXNlLCB3aGVyZSBhbGlhc2VkbmVzcyBubyBsb25nZXIgaW1wbGllcwoJdGhhdCB0aGUgb2JqZWN0IGlzIGNvbnN0cmFpbmVkLiBJbiBwYXJ0aWN1bGFyLCBmb3IgZGVyZWZlcmVuY2VkIG5hbWVzLAoJdGhlIGRlc2lnbmF0ZWQgb2JqZWN0IG11c3QgYmUgYXNzdW1lZCB0byBiZSB1bmNvbnN0cmFpbmVkLgoJKEtpbGxfQ3VycmVudF9WYWx1ZXMpOiBQcm9wZXJseSBkZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgd2UgZW5jb3VudGVyCglhIGxvb3AgaW4gdGhlIHNjb3BlIGNoYWluLgoJKFNhZmVfVG9fQ2FwdHVyZV9WYWx1ZSk6IERvIG5vdCBsZXQgYSBsb29wIHN0b3AgdXMgZnJvbSBjYXB0dXJpbmcKCWEgdmFsdWUuCgkoQ29tcGlsZV9UaW1lX0NvbnN0cmFpbnRfRXJyb3IpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgaW4gZXJyb3IgY2FzZQoKCSogZXhwX2NoMTMuYWRiIChFeHBhbmRfTl9GcmVlemVfRW50aXR5KTogUmVtb3ZlIHRoZSBmcmVlemluZyBub2RlCglhc3NvY2lhdGVkIHdpdGggZW50aXRpZXMgb2YgYWJzdHJhY3QgaW50ZXJmYWNlIHByaW1pdGl2ZXMuCglDYWxsIEFwcGx5X0FkZHJlc3NfQ2xhdXNlX0NoZWNrIGluc3RlYWQgb2YgQXBwbHlfQWxpZ25tZW50X0NoZWNrCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLXRydTY0LmFkYjogCglNYXJrIEFzbSBzdGF0ZW1lbnRzIFZvbGF0aWxlIHRvIHByZXZlbnQgd2FybmluZ3MgKHNlZW1zIGEKCXJlYXNvbmFibGUgY2hhbmdlIGFueXdheSkKCUZpeGVzIG5ldyB3YXJuaW5ncwoKCSogcy1tYXN0b3AtaXJpeC5hZGI6IEFkZCBWb2xhdGlsZSB0byBBc20gc3RhdGVtZW50cwoJU3VwcHJlc3NlcyB3YXJuaW5nLCBhbmQgc2VlbXMgYXBwcm9wcmlhdGUgaW4gYW55IGNhc2UKCgkqIHMtb3NpbnRlLXZtcy5hZGI6IEFkZCBWb2xhdGlsZSB0byBBc20gc3RhdGVtZW50CgoJKiBzLXZhZmxvcC12bXMtYWxwaGEuYWRiOiBBZGQgVm9sYXRpbGUgdG8gQXNtIHN0YXRlbWVudHMKCgkqIGV4cF9jb2RlLmFkcywgZXhwX2NvZGUuYWRiIChBc21fSW5wdXRfVmFsdWUpOiBOb3RlIHRoYXQgRXJyb3IgY2FuIGJlCglyZXR1cm5lZC4KCUFkZCBjYWxsIHRvIENoZWNrX0NvZGVfU3RhdGVtZW50CgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogc2luZm8uYWRzLCBzaW5mby5hZGIgKFNldF9TeW5jaHJvbml6ZWRfUHJlc2VudCwKCVN5bmNocm9uaXplZF9QcmVzZW50KTogQWRkIEZvcm1hbF9EZXJpdmVkX1R5cGVfRGVmaW5pdGlvbiBhbmQKCVByaXZhdGVfRXh0ZW5zaW9uX0RlY2xhcmF0aW9uIHRvIHRoZSBsaXN0IG9mIGFzc2VydGlvbnMuCgkoSXNfRW50cnlfQmFycmllcl9GdW5jdGlvbik6IE5ldyBmbGFnCgkoSGFzX1NlbGZfUmVmZXJlbmNlKTogTmV3IGZsYWcgb24gYWdncmVnYXRlcywgdG8gaW5kaWNhdGUgdGhhdCB0aGV5Cgljb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZSBlbmNsb3NpbmcgdHlwZSwgaW5zZXJ0ZWQgdGhyb3VnaCBhIGRlZmF1bHQKCWluaXRpYWxpemF0aW9uLgoJKE5leHRfUmVwX0l0ZW0pOiBNb3ZlIGZyb20gTm9kZTQgdG8gTm9kZTUuCgkoRW50aXR5KTogQWRkIHRoaXMgZmllbGQgZm9yIE5fQXR0cmlidXRlX0RlZmluaXRpb25fQ2xhdXNlLgoJKENvbWVzX0Zyb21fRXh0ZW5kZWRfUmV0dXJuX1N0YXRlbWVudCk6IE5ldyBmbGFnIG9uIE5fUmV0dXJuX1N0YXRlbWVudAoJKE5fUmV0dXJuX09iamVjdF9EZWNsYXJhdGlvbik6IFJlbW92ZSB0aGlzIG5vZGUga2luZC4gV2Ugbm93IHVzZQoJTl9PYmplY3RfRGVjbGFyYXRpb24gaW5zdGVhZC4KCShBY3R1YWxfRGVzaWduYXRlZF9TdWJ0eXBlKTogTW92ZSB0byBhIGRpZmZlcmVudCBwbGFjZSB0byBtYWtlIHJvb20gaW4KCU5fRXh0ZW5kZWRfUmV0dXJuX1N0YXRlbWVudC4KCShQcm9jZWR1cmVfVG9fQ2FsbCk6IE1vdmUgdG8gYSBkaWZmZXJlbnQgcGxhY2UgdG8gbWFrZSByb29tIGluCglOX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQuCgkoUmV0dXJuX1R5cGUpOiBSZW1vdmVkIHRoaXMgZmllbGQgdG8gbWFrZSByb29tIGluIHJldHVybiBzdGF0ZW1lbnRzCgkoYm90aCBraW5kcykuCgkoUmV0dXJuX1N0YXRlbWVudF9FbnRpdHkpOiBOZXcgZmllbGQgaW4gcmV0dXJuIHN0YXRlbWVudHMsIGluIHBhcnQgdG8KCXJlcGxhY2UgUmV0dXJuX1R5cGUsIGFuZCBpbiBwYXJ0IHRvIHN1cHBvcnQgdGhlIGZhY3QgdGhhdCByZXR1cm4KCXN0YXRlbWVudHMgYXJlIG5vdyBwdXNoZWQgb24gdGhlIHNjb3BlIHN0YWNrIGR1cmluZyBzZW1hbnRpYyBhbmFseXNpcy4KCShSZXR1cm5fT2JqZWN0X0RlY2xhcmF0aW9ucyk6IE5ldyBmaWVsZCB0byBzdXBwb3J0IGV4dGVuZGVkIHJldHVybgoJc3RhdGVtZW50cy4KCShOX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQpOiBOZXcgbm9kZSBmb3IgZXh0ZW5kZWRfcmV0dXJuX3N0YXRlbWVudAoJbm9udGVybWluYWwuCgkoTl9SZXR1cm5fT2JqZWN0X0RlY2xhcmF0aW9uKTogTmV3IG5vZGUgZm9yIHBhcnQgb2YKCWV4dGVuZGVkX3JldHVybl9zdGF0ZW1lbnQgbm9udGVybWluYWwuIE5lZWRlZCBiZWNhdXNlIGFsbCB0aGUgbmVjZXNzYXJ5CglmaWVsZHMgd29uJ3QgZml0IGluIE5fRXh0ZW5kZWRfUmV0dXJuX1N0YXRlbWVudC4KCUdlbmVyaWNfYXNzb2NpYXRpb25zIG5vdyBjYXJyeSB0aGUgQm94X1ByZXNlbnQgZmxhZywgdG8gaW5kaWNhdGUgYQoJZGVmYXVsdCBmb3IgYW4gYWN0dWFsIGluIGEgcGFydGlhbGx5IHBhcmFtZXRyaXplZCBmb3JtYWwgcGFja2FnZS4KCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgZGVmaW5pdGlvbiBmb3IgVmFsaWRpdHlfQ2hlY2sKCShQcmVzZXRfTmFtZXMpOiBBZGQgZW50cmllcyBmb3IgUHJpb3JpdHlfU3BlY2lmaWNfRGlzcGF0Y2hpbmcgcHJhZ21hCglhbmQgZm9yIHRoZSBuZXcgcHJlZGVmaW5lZCBkaXNwYXRjaGluZyBwb2xpY2llczogRURGX0Fjcm9zc19Qcmlvcml0aWVzLAoJTm9uX1ByZWVtcHRpdmVfV2l0aGluX1ByaW9yaXRpZXMsIGFuZCBSb3VuZF9Sb2Jpbl9XaXRoaW5fUHJpb3JpdGllcy4KCUludHJvZHVjZSBuZXcgbmFtZSBTdHViX1R5cGUgZm9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgYXR0cmlidXRlLgoJQWRkIHByYWdtYSBQcmVlbGFib3JhYmxlX0luaXRpYWxpemF0aW9uCglBZGQgZW50cnkgZm9yIFByaW9yaXR5IGF0dHJpYnV0ZS4KCUFkZCBQcmFnbWFfV2lkZV9DaGFyYWN0ZXJfRW5jb2RpbmcKCShHZXRfQ29udmVudGlvbl9OYW1lKTogR2l2ZW4gYSBjb252ZW50aW9uIGlkLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlCgljb3JyZXNwb25kaW5nIG5hbWUgaWQgZnJvbSB0aGUgbmFtZXMgdGFibGUuCgoyMDA2LTEwLTMxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogc3ByaW50LmFkYiAoU3ByaW50X05vZGVfQWN0dWFsLCBjYXNlIFBhcmFtZXRlcl9TcGVjaWZpY2F0aW9uKTogRG8gbm90CglwcmludCBudWxsIGV4Y2x1c2lvbiB0d2ljZSBpbiB0aGUgY2FzZSBvZiBhbiBhY2Nlc3MgZGVmaW5pdGlvbiwKCUltcGxlbWVudCBuZXcgLWduYXRMIHN3aXRjaAoJUmVtb3ZlIE5fUmV0dXJuX09iamVjdF9EZWNsYXJhdGlvbi4gV2Ugbm93IHVzZQoJTl9PYmplY3RfRGVjbGFyYXRpb24gaW5zdGVhZC4gSW1wbGVtZW50IHRoZSBjYXNlIGZvcgoJTl9FeHRlbmRlZF9SZXR1cm5fU3RhdGVtZW50LiBBbHBoYWJldGl6ZSB0aGUgY2FzZXMuCglBZGQgY2FzZXMgZm9yIG5ldyBub2RlcyBOX0V4dGVuZGVkX1JldHVybl9TdGF0ZW1lbnQgYW5kCglOX1JldHVybl9PYmplY3RfRGVjbGFyYXRpb24uIFRoZSBjb2RlIGlzIG5vdCB5ZXQgd3JpdHRlbi4KCVVwZGF0ZSB0aGUgb3V0cHV0IGZvciBOX0Zvcm1hbF9PYmplY3RfRGVjbGFyYXRpb24KCWFuZCBOX09iamVjdF9SZW5hbWluZ19EZWNsYXJhdGlvbi4KCShXcml0ZV9JdHlwZSk6IEFjY291bnQgZm9yIHRoZSBjYXNlIG9mIGEgbW9kdWxhciBpbnRlZ2VyIHN1YnR5cGUgd2hvc2UKCWJhc2UgdHlwZSBpcyBwcml2YXRlLgoKMjAwNi0xMC0zMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy1yZXN0cmkuYWRzLCBzLXJlc3RyaS5hZGI6IE1hcmsgdGhpcyBwYWNrYWdlIGFzIFByZWVsYWJvcmF0ZS4KCVJlbW92ZSBlbGFib3JhdGlvbiBjb2RlLCBub3cgZG9uZSBpbiB0aGUgYmluZGVyLgoKCSogcy1yaWRlbnQuYWRzOiBNYWtlIHRoaXMgdW5pdCBQcmVlbGFib3JhdGUuCgkoTm9fUmVzdHJpY3Rpb25zKTogTmV3IGNvbnN0YW50IHVzZWQgdG8gY2xlYW4gdXAgY29kZSBhbmQgZm9sbG93CglwcmVlbGFib3JhdGUgY29uc3RyYWludHMuCgoJKiBzLXN0YWxpYi5hZGI6IAoJQWRkIFN5c3RlbS5SZXN0cmljdGlvbnMgZGVwZW5kZW5jZSwgcmVmZXJlbmNlZCBkaXJlY3RseSBmcm9tIHRoZQoJYmluZGVyIGdlbmVyYXRlZCBmaWxlLgoKMjAwNi0xMC0zMSAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogcy1zY2F2YWwuYWRiIChJbml0aWFsaXplKTogQWRkIG5ldyBCb29sZWFuIGZsYWcgQUZsb2F0IHRoYXQgaXMgc2V0CglUcnVlIHdoZW4gQUFNUCBleHRlbmRlZCBmbG9hdGluZy1wb2ludCBpcyBpbiB1c2UgKDQ4LWJpdCkuIENoYW5nZSB0eXBlCglCeXRlTEYgdG8gQnl0ZUxMRiwgYWRkIG5ldyBhcnJheSB0eXBlIEJ5dGVMRiBhbmQgY29uZGl0aW9uIHRoZSBzaXplIG9mCgl0aGUgdHdvIGJ5dGUgYXJyYXkgdHlwZXMgb24gQUZsb2F0LiBDaGFuZ2UgdHlwZSBvZiBJVl9JbGYgb3ZlcmxheQoJdmFyaWFibGUgZnJvbSBCeXRlOCB0byBCeXRlTEYuIEFkZCBhcHByb3ByaWF0ZSBpbml0aWFsaXphdGlvbnMgb2YKCWZsb2F0aW5nLXBvaW50IG92ZXJsYXlzIGZvciBBQU1QIGNhc2VzLgoKMjAwNi0xMC0zMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogcy10cG9iZW4uYWRzLCBzLXRwb2Jlbi5hZGIsIHMtdGFwcm9iLmFkcywgcy10YXByb2IuYWRiCgkoR2V0X0NlaWxpbmcpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IHJldHVybnMKCXRoZSBjZWlsaW5nIHByaW9yaXR5IG9mIHRoZSBwcm90ZWN0ZWQgb2JqZWN0LgoJKFNldF9DZWlsaW5nKTogTmV3IHN1YnByb2dyYW0gdGhhdCBzZXRzIHRoZSBuZXcgY2VpbGluZyBwcmlvcml0eSBvZgoJdGhlIHByb3RlY3RlZCBvYmplY3QuCgoJKiBzLXRhcmVzdC5hZGI6IChDcmVhdGVfUmVzdHJpY3RlZF9UYXNrKTogRml4IHBvdGVudGlhbCBDRS4KCgkqIHMtdGFza2luLmFkcywgcy10YXNraW4uYWRiOiAoU3RvcmFnZV9TaXplKTogTmV3IGZ1bmN0aW9uLgoKMjAwNi0xMC0zMSAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHMtdHBvYm9wLmFkYiAoUmVxdWV1ZV9DYWxsKTogSW50cm9kdWNlIGEgZGlzcGF0Y2hpbmcgcG9pbnQgd2hlbgoJcmVxdWV1aW5nIHRvIHRoZSBzYW1lIHByb3RlY3RlZCBvYmplY3QgdG8gZ2l2ZSBoaWdoZXIgcHJpb3JpdHkgdGFza3MKCXRoZSBvcHBvcnR1bml0eSB0byBleGVjdXRlLgoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiB3aWRlY2hhci5hZGIgKElzX1N0YXJ0X09mX1dpZGVfQ2hhcik6IEluIGNhc2Ugb2YgYnJhY2tldHMgZW5jb2RpbmcsCglhZGQgbW9yZSBwcmVjaXNlIGNoZWNrIGZvciB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlIHRoYXQgZm9sbG93cyAnWycgdG8KCWF2b2lkIHBvc3NpYmxlIGNvbmZ1c2lvbiBpbiBjYXNlIGlmICdbJyBpcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYQoJc3RyaW5nIGxpdGVyYWxzLgoJKFNjYW5fV2lkZSk6IEFsd2F5cyBhbGxvdyBicmFja2V0cyBlbmNvZGluZwoKMjAwNi0xMC0zMSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIHMtc3RjaG9wLmFkczogbWFrZSB0aGlzIHVuaXQgcHJlZWxhYm9yYXRlLiBUaGlzIGlzIGRlc2lyYWJsZSBpbgoJZ2VuZXJhbCBhbmQgbWFkZSBtYW5kYXRvcnkgYnkgdGhlIHVzZSBvZiB0aGlzIHVuaXQgYnkgcy10YXByb3Agd2hpY2gKCWlzIGl0c2VsZiBwcmVlbGFib3JhdGUuCgoJKiBzLXN0Y2hvcC12eHdvcmtzLmFkYiAoU2V0X1N0YWNrX0luZm8sIFRhc2tfRGVzY3JpcHRvciB0eXBlKTogQWRkCglUZF9FdmVudHMgY29tcG9uZW50LgoKMjAwNi0xMC0zMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBhLWRpcnZhbC12bXMuYWRiIChJbnZhbGlkX0NoYXJhY3Rlcik6IFNwZWNpZnkgdGhhdCBkaWdpdHMgYXJlIGFsbG93ZWQKCWluIGZpbGUgbmFtZXMuCgoyMDA2LTEwLTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGEtZGlyZWN0LmFkcywgYS1kaXJlY3QuYWRiIChTZWFyY2gpOiBOZXcgcHJvY2VkdXJlIGluIEFkYSAyMDA1CgoyMDA2LTEwLTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2VncHIuYWRiIChDaGVja19Db21waWxhdGlvbl9OZWVkZWQpOiBUYWtlIGludG8gYWNjb3VudCBwYXRoIG5hbWVzCgl3aXRoIHNwYWNlcy4KCShDaGVja19Db21waWxhdGlvbl9OZWVkZWQpOiBXaGVuIGNoZWNraW5nIGEgQyBvciBDKysgc291cmNlLCBkbyBub3QKCXJlc29sdmUgc3ltYm9saWMgbGlua3MuCgkoRGlzcGxheV9Db21tYW5kKTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyIEVsbGlwc2UsIGRlZmF1bHRlZCB0byBGYWxzZS4KCVdoZW4gbm90IGluIHZlcmJvc2UgbW9kZSBhbmQgRWxsaXBzZSBpcyBUcnVlLCBkaXNwbGF5ICIuLi4iIGZvciB0aGUKCWZpcnN0IGFyZ3VtZW50IHdpdGggRGlzcGxheSBzZXQgdG8gRmFsc2UuCgkoQnVpbGRfR2xvYmFsX0FyY2hpdmUpOiBBbHdheXMgc2V0IERpc3BsYXkgVHJ1ZSBmb3IgdGhlIGZpcnN0IG9iamVjdAoJZmlsZS4gQ2FsbCBEaXNwbGF5X0NvbW1hbmQgd2l0aCBFbGxpcHNlIHNldCB0byBUcnVlLgoKMjAwNi0xMC0zMSAgTWF0dCBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLWNyYnRnby5hZHM6IENvbW1lbnRlZCBlYWNoIHN1YnByb2dyYW0KCgkqIGEtY3JidGdvLmFkYjogQWRkZWQgcmVmZXJlbmNlIHRvIGJvb2sgZnJvbSB3aGljaCBhbGdvcml0aG1zIHdlcmUKCWFkYXB0ZWQuCgoJKiBhLWNyYnRnay5hZHMsIGEtY3JidGdrLmFkYiAoR2VuZXJpY19JbnNlcnRfUG9zdCk6IHBhc3MgZmxhZyB0bwoJaW5kaWNhdGUgd2hpY2ggY2hpbGQuCgkoR2VuZXJpY19Db25kaXRpb25hbF9JbnNlcnQpOiBjaGFuZ2VkIHBhcmFtZXRlciBuYW1lIGZyb20gIlN1Y2Nlc3MiIHRvCgkiSW5zZXJ0ZWQiLgoJKEdlbmVyaWNfVW5jb25kaXRpb25hbF9JbnNlcnRfV2l0aF9IaW50KTogaW1wcm92ZWQgYWxnb3JpdGhtCgoJKiBhLWNvb3JzZS5hZGIgKFJlcGxhY2VfRWxlbWVudCk6IGNoYW5nZWQgcGFyYW1ldGVyIG5hbWUgaW4gY2FsbCB0bwoJY29uZGl0aW9uYWwgaW5zZXJ0IG9wZXJhdGlvbi4KCgkqIGEtY29udmVjLmFkYiwgYS1jb2ludmUuYWRiIChJbnNlcnQpOiByZW1vdmVkIG9ic29sZXRlIGNvbW1lbnQKCgkqIGEtY29oYW1hLmFkYiAoSXRlcmF0ZSk6IG1hbmlwdWxhdGUgYnVzeS1iaXQgaGVyZSwgaW5zdGVhZCBvZiBpbgoJR2VuZXJpY19JdGVyYXRpb24KCgkqIGEtY2lvcnNlLmFkYiAoUmVwbGFjZV9FbGVtZW50KTogY2hhbmdlZCBwYXJhbWV0ZXIgbmFtZSBpbiBjYWxsIHRvCgljb25kaXRpb25hbCBpbnNlcnQgb3BlcmF0aW9uLgoKCSogYS1jaWhhbWEuYWRiIChJdGVyYXRlKTogbWFuaXB1bGF0ZSBidXN5LWJpdCBoZXJlLCBpbnN0ZWFkIG9mIGluCglHZW5lcmljX0l0ZXJhdGlvbi4KCgkqIGEtY2lkbGxpLmFkcywgYS1jaWRsbGkuYWRiIChTcGxpY2UpOiBQb3NpdGlvbiBwYXJhbSBpcyBub3cgbW9kZSBpbgoJaW5zdGVhZCBvZiBtb2RlIGlub3V0LgoKCSogYS1jaHRnb3AuYWRiIChBZGp1c3QpOiBtb2RpZmllZCBjb21tZW50cyB0byByZWZsZWN0IGN1cnJlbnQgQUktMzAyCglkcmFmdAoJKEdlbmVyaWNfUmVhZCk6IHByZXNlcnZlIGV4aXN0aW5nIGJ1Y2tldHMgYXJyYXkgaWYgcG9zc2libGUKCShHZW5lcmljX1dyaXRlKTogZG9uJ3Qgc2VuZCBidWNrZXRzIGFycmF5IGxlbmd0aCBhbnltb3JlCgoJKiBhLWNkbGlsaS5hZHMsIGEtY2RsaWxpLmFkYiAoU3BsaWNlKTogUG9zaXRpb24gcGFyYW0gaXMgbm93IG1vZGUgaW4KCWluc3RlYWQgb2YgbW9kZSBpbm91dC4KCgkqIGEtY2loYXNlLmFkYiAoRGlmZmVyZW5jZSk6IGl0ZXJhdGUgb3ZlciBzbWFsbGVyIG9mIFRndCBhbmQgU3JjIHNldHMKCShJdGVyYXRlKTogbWFuaXB1bGF0ZSBidXN5LWJpdCBoZXJlLCBpbnN0ZWFkIG9mIGluIEdlbmVyaWNfSXRlcmF0aW9uCgoJKiBhLWNvaGFzZS5hZGIgKERpZmZlcmVuY2UpOiBpdGVyYXRlIG92ZXIgc21hbGxlciBvZiBUZ3QgYW5kIFNyYyBzZXRzCgkoSXRlcmF0ZSk6IG1hbmlwdWxhdGUgYnVzeS1iaXQgaGVyZSwgaW5zdGVhZCBvZiBpbiBHZW5lcmljX0l0ZXJhdGlvbgoJKFJlcGxhY2VfRWxlbWVudCk6IGxvY2FsIG9wZXJhdGlvbiBpcyBub3cgYW4gaW5zdGFudGlhdGlvbgoKCSogYS1jaHRna2UuYWRzLCBhLWNodGdrZS5hZGIgKEdlbmVyaWNfQ29uZGl0aW9uYWxfSW5zZXJ0KTogbWFudWFsbHkKCWNoZWNrIGN1cnJlbnQgbGVuZ3RoLgoJKEdlbmVyaWNfUmVwbGFjZV9FbGVtZW50KTogbmV3IG9wZXJhdGlvbgoKMjAwNi0xMC0zMSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIGctdHJhc3ltLXZtcy1hbHBoYS5hZGI6IER1bW15X1VzZXJfQWN0X1Byb2M6IE5ldyBmdW5jdGlvbi4KCUNhbGwgVEJLJFNZTUJPTElaRSB3aXRob3V0IG9taXR0aW5nIHBhcmFtZXRlcnMuCgoyMDA2LTEwLTMxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHN5bWJvbHMtcHJvY2Vzc2luZy12bXMtaWE2NC5hZGIsCglzeW1ib2xzLXByb2Nlc3Npbmctdm1zLWFscGhhLmFkYiAoUHJvY2Vzcyk6IERvIG5vdCBpbmNsdWRlIHN5bWJvbHMKCXRoYXQgY29tZSBmcm9tIGdlbmVyaWMgaW5zdGFudGlhdGlvbnMgaW4gYm9kaWVzLgoKMjAwNi0xMC0zMSAgUGF0IFJvZ2VycyAgPHJvZ2Vyc0BhZGFjb3JlLmNvbT4KCgkqIGEtcnR0aWV2LmFkcywgYS1ydHRpZXYuYWRiOiAKCVRoaXMgaXMgYSBzaWduaWZpY2FudCByZWRlc2lnbiBwcmltYXJpbHkgZm9yIHRoZSBzYWtlIG9mIGF1dG9tYXRpYwoJdGltZXIgdGFzayB0ZXJtaW5hdGlvbiBidXQgYWxzbyB0byBmaXggYSBkZXNpZ24gZmxhdy4KCVRoZXJlZm9yZSB3ZSBhcmUgbm93IHVzaW5nIGFuIFJUUyBsb2NrLCBpbnN0ZWFkIG9mIGEgcHJvdGVjdGVkCglvYmplY3QsIHRvIHByb3ZpZGUgbXV0dWFsIGV4Y2x1c2lvbiB0byB0aGUgcXVldWUgb2YgcGVuZGluZyBldmVudHMKCWFuZCB0aGUgdHlwZSBUaW1pbmdfRXZlbnQgaXMgbm8gbG9uZ2VyIGEgcHJvdGVjdGVkIHR5cGUuCgoyMDA2LTEwLTMxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgkgICAgQmVuIEJyb3Nnb2wgIDxicm9zZ29sQGFkYWNvcmUuY29tPgoKCSogZGVidWcuYWRiOiAgVXBkYXRlIGZsYWdzIGRvY3VtZW50YXRpb24KCgkqIGduYXRfdWduLnRleGk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBuZXcgLWduYXR3cSBzd2l0Y2gKCUNsZWFuIHVwIGRvY3VtZW50YXRpb24gZm9yIHNldmVyYWwgb3RoZXIgd2FybmluZyBzd2l0Y2hlcwoJQ2xhcmlmeSBob3cgdGFzayBzdGFjayBzaXplIGNhbiBiZSBzcGVjaWZpZWQgd2l0aCB2YXJpb3VzCgl2ZXJzaW9ucyBvZiBXaW5kb3dzLgoJQWRkIG5vdGUgdGhhdCAtZ25hdFZvIGluY2x1ZGVzIHJhbmdlcyBpbmNsdWRpbmcgbG9vcHMKCUFkZCBkb2N1bWVudGF0aW9uIGZvciAtZ25hdEwgc3dpdGNoCglBZGQgbm90ZSBvbiBlbGFib3JhdGlvbiB3YXJuaW5nIGZvciBpbml0aWFsaXppbmcgdmFyaWFibGVzCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgbmV3IC1nbmF0d3Qgd2FybmluZyBzd2l0Y2gKCURvY3VtZW50IG5ldyBmb3JtIG9mIHByYWdtYSBXYXJuaW5ncyAoT258T2ZmLCBzdHJpbmcpCglBZGQgY29tbWVudCBvbiB1c2Ugb2YgcHJhZ21hIFdhcm5pbmdzIHRvIGNvbnRyb2wgd2FybmluZ3MKCUFkZCBkb2N1bWVudGF0aW9uIGZvciAtZ25hdGpubiBzd2l0Y2gKCU1vZGlmeSBzZWN0aW9uIG9uIGludGVyZmFjaW5nIHdpdGggQyBmb3IgVk1TIDY0LWJpdC4KCUFkZCBkb2MgZm9yIC1nbmF0VmUvRQoJQWRkIGRvY3VtZW50YXRpb24gb2YgbmV3IHdhcm5pbmcgZmxhZ3MgLWduYXR3dy8tZ25hdHdXCglBZGQgd2FybmluZ3MgYWJvdXQgYWRkcmVzcyBjbGF1c2Ugb3ZlcmxheXMgdG8gbGlzdCBvZiB3YXJuaW5ncwoJKEV4Y2VwdGlvbiBIYW5kbGluZyBDb250cm9sKTogRG9jdW1lbnQgdGhhdCB0aGUgb3B0aW9uIC0tUlRTIG11c3QgYmUKCXVzZWQgY29uc2lzdGVudGx5IGZvciBnY2MgYW5kIGduYXRiaW5kLgoJQ2xhcmlmeSB0aGF0IGlubGluaW5nIGlzIG5vdCBhbHdheXMgcG9zc2libGUKCVVwZGF0ZSBkb2N1bWVudGF0aW9uIG9uIHByYWdtYSBVbmNoZWNrZWRfVW5pb24uCgoJKiBnbmF0X3JtLnRleGk6IAoJQWRkIGRvY3VtZW50YXRpb24gZm9yIG5ldyBleHRlbmRlZCB2ZXJzaW9uIG9mIHByYWdtYSBPYnNvbGVzY2VudAoJQWRkIGRvY3VtZW50YXRpb24gZm9yIGltcGxlbWVudGF0aW9uIGRlZmluZWQgYXR0cmlidXRlICdTdHViX1R5cGUuCglBZGQgbm90ZSBvbiB1c2Ugb2YgVm9sYXRpbGUgaW4gYXNtIHN0YXRlbWVudHMKCUFkZCBkb2N1bWVudGF0aW9uIG9uIHVzZSBvZiBwcmFnbWEgVW5yZWZlcmVuY2VkIGluIGNvbnRleHQgY2xhdXNlCglEb2N1bWVudCBuZXcgZm9ybSBvZiBwcmFnbWEgV2FybmluZ3MgKE9ufE9mZiwgcGF0dGVybikKCURvY3VtZW50IHByYWdtYSBXaWRlX0NoYXJhY3Rlcl9FbmNvZGluZwoJQWRkIG5vdGUgdGhhdCBwcmFnbWEgUmVzdHJpY3Rpb25zIChOb19FbGFib3JhdGlvbl9Db2RlKSBpcyBvbmx5IGZ1bGx5CgllbmZvcmNlZCBpZiBjb2RlIGdlbmVyYXRpb24gaXMgYWN0aXZlLgoJQWRkIHNlY3Rpb24gb24gcHJhZ21hIFN1cHByZXNzIHRvIGRvY3VtZW50IEdOQVQgc3BlY2lmaWMgY2hlY2sKCUFsaWdubWVudF9DaGVjawoJQ2xhcmlmeSBkaWZmZXJlbmNlIGJldHdlZW4gTm9fRGlzcGF0Y2hpbmdfQ2FsbHMgJiBOb19EaXNwYXRjaC4KCUFkZCBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgUmVzdHJpY3Rpb25zIChOb19FbGFib3JhdGlvbl9Db2RlKQoKCSogZ25hdC1zdHlsZS50ZXhpOiAKCUFkZCBjb21tZW50cyBvbiBsYXlvdXQgb2Ygc3VicHJvZ3JhbSBsb2NhbCB2YXJpYWJsZXMgaW4gdGhlCglwcmVzZW5jZSBvZiBuZXN0ZWQgc3VicHJvZ3JhbXMuCgoJKiB1Z193b3JkczogUmVzeW5jLgoKCSogZWxpc3RzLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCglOb2RlIHJldHVybnMgTm9kZV9Pcl9FbnRpdHlfSWQgKGRvYyBjaGFuZ2Ugb25seSkKCgkqIHhnbmF0dWduLmFkYjogUmVwbGFjZSBBQ0FERU1JQ0VESVRJT04gd2l0aCBHUExFRElUSU9OCgoJKiBnLWFycnNwbC5hZHMgKENyZWF0ZSk6IFVwZGF0ZSBjb21tZW50cy4KCgkqIHNlbS5hZHM6IEFkZCBkZXRhaWxzIG9uIHRoZSBoYW5kbGluZyBvZiB0aGUgc2NvcGUgc3RhY2suCgoJKiB1c2FnZS5hZGI6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoKCSogdmFsaWRzdy5hZHMsIHZhbGlkc3cuYWRiOiAKCUFkZCBkZWZpbml0aW9uIG9mIFZhbGlkaXR5X0NoZWNrX0NvbXBvbmVudHMgYW5kIGltcGxlbWVudCAtZ25hdFZlL0UKCgkqIHZtc19kYXRhLmFkczogQWRkIG1pc3NpbmcgVk1TIHF1YWxpZmllcnMuCgoJKiBzLWFkZG9wZS5hZHM6IEFkZCBkb2N1bWVudGF0aW9uIG9uIG92ZXJmbG93IGFuZCBkaXZpZGUgYnkgemVybwoKMjAwNi0xMC0zMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBmbWFwLmFkYjogUHV0IHJvdXRpbmVzIGluIGFscGhhIG9yZGVyCgoJKiBnLWJvdW1haS5hZHM6IFJlbW92ZSByZWR1bmRhbnQgJ2luJyBrZXl3b3JkcwoKCSogZy1jZ2kuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGctY2dpLmFkczogUmVtb3ZlIHJlZHVuZGFudCAnaW4nIGtleXdvcmRzCgoJKiBnZXRfdGFyZy5hZGI6IFB1dCByb3V0aW5lcyBpbiBhbHBoYSBvcmRlcgoKCSogcHJqLWF0dHIuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHMtYXRhY2NvLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzY24uYWRiOiBQdXQgcm91dGluZXMgaW4gYWxwaGEgb3JkZXIKCgkqIHNpbnB1dC1sLmFkYjogTWlub3IgY29tbWVudCBmaXgKCgkqIHNpbnB1dC1wLmFkYjogTWlub3IgY29tbWVudCBmaXgKCgkqIHMtbWFjY29kLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzLW1lbW9yeS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcy1odGFibGUuYWRiOiBGaXggdHlwbyBpbiBjb21tZW50LgoKCSogcy1zZWNzdGEuYWRiOiBNaW5vciBjb21tZW50IHVwZGF0ZS4KCgkqIHMtc29mbGluLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzLXN0b2VsZS5hZHM6IAoJQWRkIGNvbW1lbnQgYWJvdXQgb2RkIHF1YWxpZmljYXRpb24gaW4gU3RvcmFnZV9PZmZzZXQgZGVjbGFyYXRpb24KCgkqIHMtc3RyeGRyLmFkYjogCglSZW1vdmUgdW5uZWNlc3NhcnkgJ2luJyBrZXl3b3JkcyBmb3IgZm9ybWFsIHBhcmFtZXRlcnMuCgoJKiB0cmVlcHJzLmFkdDogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiB1cmVhbHAuYWRiOiBQdXQgcm91dGluZXMgaW4gYWxwaGEgb3JkZXIKCgkqIHMtd2NoY29uLmFkcywgcy13Y2hjb24uYWRiIChHZXRfV0NfRW5jb2RpbmdfTWV0aG9kKTogTmV3IHZlcnNpb24KCXRha2luZyBzdHJpbmcuCgoJKiBzLWFzdGhhbi12bXMtYWxwaGEuYWRiOiBSZW1vdmUgcmVkdW5kYW50ICdpbicga2V5d29yZHMKCgkqIGctdHJhc3ltLXZtcy1pYTY0LmFkYjogUmVtb3ZlIHJlZHVuZGFudCAnaW4nIGtleXdvcmRzCgoJKiBlbnYuYyAoX19nbmF0X3Vuc2V0ZW52KTogVW5zZXRlbnYgaXMgdW5hdmFpbGFibGUgb24gTHlueE9TLCBzbwoJd29ya2Fyb3VuZCBhcyBvbiBvdGhlciBwbGF0Zm9ybXMuCgoJKiBnLWVhY29kdS12bXMuYWRiOiBSZW1vdmUgcmVkdW5kYW50ICdpbicga2V5d29yZHMKCSogZy1leHBlY3Qtdm1zLmFkYjogUmVtb3ZlIHJlZHVuZGFudCAnaW4nIGtleXdvcmRzCgoJKiBnbmF0ZGxsLmFkYiAoQWRkX0ZpbGVzX0Zyb21fTGlzdCk6IEhhbmRsZSBOYW1lX0Vycm9yIGFuZCByZXBvcnQgYQoJY2xlYXIgZXJyb3IgbWVzc2FnZSBpZiB0aGUgbGlzdC1vZi1maWxlcyBmaWxlIGNhbm5vdCBiZSBvcGVuZWQuCgoJKiBnLXRocmVhZC5hZGIgKFVucmVnaXN0ZXJfVGhyZWFkX0lkKTogQWRkIHVzZSB0eXBlIFRocmVhZF9JZCBzbyB0aGUKCWVxdWFsaXR5IG9wZXJhdG9yIGlzIGFsd2F5cyB2aXNpYmxlLgoKCSogbGFuZy5vcHQ6IFdvdmVybGVuZ3RoLXN0cmluZ3M6IE5ldyBvcHRpb24uCgoJKiBubWFrZS5hZHQ6IAoJVXBkYXRlIGNvcHlyaWdodCwgc2luY2Ugbm1ha2UuYWRzIGFuZCBubWFrZS5hZGIgaGF2ZSBjaGFuZ2VkLgoKCSogb3NpbnQtYi5hZHMsIG9zaW50LWIuYWRiIChUaW1lX0Zyb21fTGFzdF9CaW5kKTogcmVtb3ZlZCBmdW5jdGlvbiAuCgkoQmluZGVyX091dHB1dF9UaW1lX1N0YW1wc19TZXQpOiByZW1vdmVkLgoJKE9sZF9CaW5kZXJfT3V0cHV0X1RpbWVfU3RhbXApOiBpZGVtLgoJKE5ld19CaW5kZXJfT3V0cHV0X1RpbWVfU3RhbXApOiBpZGVtLgoJKFJlY29yZGluZ19UaW1lX0Zyb21fTGFzdF9CaW5kKTogaWRlbS4KCShSZWNvcmRpbmdfVGltZV9Gcm9tX0xhc3RfQmluZCk6IE1ha2UgY29uc3RhbnQuCgoJKiBvdXRwdXQuYWRzLCBvdXRwdXQuYWRiIChXcml0ZV9TdHIpOiBBbGxvdyBMRiBjaGFyYWN0ZXJzCgkoV3JpdGVfU3BhY2VzKTogTmV3IHByb2NlZHVyZQoKCSogcHJlcGNvbXAuYWRiIChQcmVwcm9jX0RhdGFfVGFibGUpOiBDaGFuZ2UgSW5jcmVtZW50IGZyb20gNSUgdG8gMTAwJQoKCSogaW5saW5lLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzLWFzdGhhbi12bXMtYWxwaGEuYWRiOiBSZW1vdmUgcmVkdW5kYW50ICdpbicga2V5d29yZHMKCgkqIHMtbWFzdG9wLXZtcy5hZGI6IFJlbW92ZSByZWR1bmRhbnQgJ2luJyBrZXl3b3JkcwoKCSogcy1vc3ByaW0tdm1zLmFkYjogUmVtb3ZlIHJlZHVuZGFudCAnaW4nIGtleXdvcmRzCgoJKiBzLXRyYWZvci1kZWZhdWx0LmFkYjogUmVtb3ZlIHJlZHVuZGFudCAnaW4nIGtleXdvcmRzCgoJKiA5ZHJwYy5hZGI6IFJlbW92ZSByZWR1bmRhbnQgJ2luJyBrZXl3b3JkcwoKCSogcy1vc2ludGUtbWluZ3cuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHMtaW5tYW9wLXBvc2l4LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBhLWRpcmVpby5hZHM6IFJlbW92ZSBxdW90ZXMgZnJvbSBDb21waWxlX1RpbWVfV2FybmluZyBtZXNzYWdlCgoJKiBhLWV4ZXhkYS5hZGI6IE1pbm9yIGNvZGUgcmVvcmdhbml6YXRpb24KCgkqIGEtZmlsaWNvLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBhLWZpbmFsaS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogYS1udWRpcmEuYWRzOiBSZW1vdmUgcXVvdGUgZnJvbSBDb21waWxlX1RpbWVfV2FybmluZyBtZXNzYWdlCgoJKiBhLW51bWVyaS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogYS1zZXF1aW8uYWRzOiBSZW1vdmUgcXVvdGVzIGZyb20gQ29tcGlsZV9UaW1lX1dhcm5pbmcgbWVzc2FnZQoKCSogZXhwX3Bha2QuYWRzOiBGaXggb2Jzb2xldGUgY29tbWVudAoKCSogYS16dGVuYXUuYWRiLCBhLXp0ZW5pby5hZGIsIGEtd3RlbmF1LmFkYiwgYS10aWVuYXUuYWRiLAoJYS13dGVuaW8uYWRiIChQdXQpOiBBdm9pZCBhc3N1bWluZyBsb3cgYm91bmQgb2Ygc3RyaW5nIGlzIDEuCglQcm9iYWJseSBub3QgYSBidWcsIGJ1dCBjZXJ0YWlubHkgbmVhdGVyIGFuZCBtb3JlIGVmZmljaWVudC4KCgkqIGEtdGllbmlvLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBjb21wZXJyLmFkYiAoQ29tcGlsZXJfQWJvcnQpOiBDYWxsIENhbmNlbF9TcGVjaWFsX091dHB1dCBhdCBzdGFydAoJQXZvaWQgYXNzdW1pbmcgbG93IGJvdW5kIG9mIHN0cmluZyBpcyAxLgoKCSogZ25hdGJpbmQuYWRiOiBDaGFuZ2UgQmluZHVzZyB0byBwYWNrYWdlIGFuZCByZW5hbWUgcHJvY2VkdXJlIGFzCglEaXNwbGF5LCB3aGljaCBub3cgZW5zdXJlcyB0aGF0IGl0IG9ubHkgb3V0cHV0cyB1c2FnZSBpbmZvcm1hdGlvbiBvbmNlLgoJKFNjYW5fQmluZF9BcmcpOiBBdm9pZCBhc3N1bWluZyBsb3cgYm91bmQgb2Ygc3RyaW5nIGlzIDEuCgoJKiBnLXBlaGFnZS5hZGIgKEJ1aWxkX0lkZW50aWNhbF9LZXlzZXRzKTogUmVwbGFjZSB1c2Ugb2YgMSBieQoJVGFibGUnRmlyc3QuCgoJKiBnLXJlZ3BhdC5hZGIgKEluc2VydF9PcGVyYXRvcik6IEFkZCBwcmFnbWEgV2FybmluZ3MgKE9mZikgdG8ga2lsbAoJd2FybmluZy4KCShNYXRjaCk6IEFkZCBwcmFnbWEgQXNzZXJ0IHRvIGVuc3VyZSB0aGF0IE1hdGNoZXMnRmlyc3QgaXMgemVybwoKCSogZy1yZWdwYXQuYWRzIChNYXRjaCk6IERvY3VtZW50IHRoYXQgTWF0Y2hlcyBsb3dlciBib3VuZCBtdXN0IGJlIHplcm8KCgkqIG1ha2V1dGwuYWRiIChJc19FeHRlcm5hbF9Bc3NpZ25tZW50KTogQWRkIHByYWdtYSBBc3NlcnQncyB0byBjaGVjawoJZG9jdW1lbnRlZCBwcmVjb25kaXRpb25zIChhbHNvIGtpbGxzIHdhcm5pbmdzIGFib3V0IGJhZCBpbmRleGVzKS4KCgkqIG1kbGwuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBBdm9pZCBhc3N1bXB0aW9uIHRoYXQgQWZpbGVzJ0ZpcnN0CglpcyAxLgoJKEJ1aWxkX0ltcG9ydF9MaWJyYXJ5KTogRGl0dG87CgoJKiBtZGxsLXV0bC5hZGI6IChHbmF0YmluZCk6IEF2b2lkIGFzc3VtcHRpb24gdGhhdCBBbGlzJ0ZpcnN0ID0gMQoKCSogcnRzZmluZC5hZGIgKFJURV9FcnJvcl9Nc2cpOiBBdm9pZCBhc3N1bWluZyBsb3cgYm91bmQgb2Ygc3RyaW5nIGlzIDEuCgoJKiBzZW1fY2FzZS5hZGIgKEFuYWx5emVfQ2hvaWNlcyk6IEFkZCBwcmFnbWEgQXNzZXJ0IHRvIGNoZWNrIHRoYXQKCWxvd2VyIGJvdW5kIG9mIGNob2ljZSB0YWJsZSBpcyAxLgoKCSogc2VtX2Nhc2UuYWRzIChBbmFseXplX0Nob2ljZXMpOiBEb2N1bWVudCB0aGF0IGxvd2VyIGJvdW5kIG9mCglDaG9pY2VfVGFibGUgaXMgMS4KCgkqIHMtaW1nZGVjLmFkYiAoU2V0X0RlY2ltYWxfRGlnaXRzKTogQXZvaWQgYXNzdW1pbmcgbG93IGJvdW5kIG9mCglzdHJpbmcgaXMgMS4KCgkqIHVpbnRwLmFkYiAoSW5pdF9PcGVyYW5kKTogRG9jdW1lbnQgdGhhdCBsb3cgYm91bmQgb2YgVmVjIGlzIGFsd2F5cyAxLAoJYW5kIGFkZCBhcHByb3ByaWF0ZSBBc3NlcnQgcHJhZ21hIHRvIHN1cHByZXNzIHdhcm5pbmdzLgoKCSogYXRyZWUuaCwgYXRyZWUuYWRzLCBhdHJlZS5hZGIKCUNoYW5nZSBFbGlzdDI0IHRvIEVsaXN0MjUKCUFkZCBkZWZpbml0aW9ucyBvZiBGaWVsZDI4IGFuZCBOb2RlMjgKCShUcmF2ZXJzZV9GaWVsZCk6IFVzZSBuZXcgc3ludGFjdGljIHBhcmVudCB0YWJsZSBpbiBzaW5mby4KCgkqIGNzdGFuZC5hZGI6IENoYW5nZSBuYW1lIElzX0FkYV8yMDA1IHRvIElzX0FkYV8yMDA1X09ubHkKCgkqIGl0eXBlcy5hZGI6IENoYW5nZSBuYW1lIElzX0FkYV8yMDA1IHRvIElzX0FkYV8yMDA1X09ubHkKCgkqIGV4cF90c3MuYWRiOiBQdXQgcm91dGluZXMgaW4gYWxwaGEgb3JkZXIKCgkqIGZlLmg6IFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb25zLgoKMjAwNi0xMC0yMyBSYWZhZWwgQXZpbGEgZGUgRXNwaW5kb2xhICA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiB1dGlscy5jIChidWlsdGluX2Z1bmN0aW9uKTogUmVuYW1lIHRvIGduYXRfYnVpbHRpbl9mdW5jdGlvbi4KCU1vdmUgY29tbW9uIGNvZGUgdG8gYWRkX2J1aWx0aW5fZnVuY3Rpb24uCgkqIG1pc2MuYyAoTEFOR19IT09LU19CVUlMVElOX0ZVTkNUSU9OKTogRGVmaW5lIGFzCglnbmF0X2J1aWx0aW5fZnVuY3Rpb24uCgkqIGdpZ2kuaCAoYnVpbHRpbl9mdW5jdGlvbik6IFJlbmFtZSB0byBnbmF0X2J1aWx0aW5fZnVuY3Rpb24uCglDaGFuZ2UgdGhlIHNpZ25hdHVyZS4KCjIwMDYtMTAtMTYgIEJyb29rcyBNb3NlcyAgPGJtb3Nlc0BzdGFuZm9yZC5lZHU+CgoJKiBNYWtlZmlsZS5pbjogQWRkIFRFWEkyUERGIGRlZmluaXRpb24uCgkqIE1ha2UtbGFuZy5pbjogQWRkICJhZGEucGRmIiB0YXJnZXQuCgoyMDA2LTEwLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYywgdXRpbHMuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIHV0aWxzLmM6IEZpeCBhIHR5cG8uCgoyMDA2LTA5LTI4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1Byb2NlZHVyZT46IERvIG5vdCBzZXQgImNvbnN0IiBmbGFnCglvbiAicHVyZSIgQWRhIHN1YnByb2dyYW1zIGlmIFNKTEogZXhjZXB0aW9ucyBhcmUgdXNlZC4KCSogdHJhbnMuYyAoSGFuZGxlZF9TZXF1ZW5jZV9PZl9TdGF0ZW1lbnRzX3RvX2dudSk6IFNldCBUUkVFX05PX1dBUk5JTkcKCW9uIHRoZSBkZWNsYXJhdGlvbiBub2RlIG9mIEpNUEJVRl9TQVZFLgoJKiB1dGlscy5jIChpbml0X2dpZ2lfZGVjbHMpOiBTZXQgREVDTF9JU19QVVJFIG9uIHRoZSBkZWNsYXJhdGlvbiBub2RlcwoJb2YgR2V0X0ptcGJ1Zl9BZGRyZXNzX1NvZnQgYW5kIEdldF9HTkFUX0V4Y2VwdGlvbi4KCSogdXRpbHMyLmMgKGJ1aWxkX2NhbGxfMF9leHByKTogRG8gbm90IHNldCBUUkVFX1NJREVfRUZGRUNUUy4KCjIwMDYtMDgtMjAgIExhdXJlbnQgR1VFUkJZICA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8yODcxNgoJZy1zb2NrZXQuYWRiIChCaW5kX1NvY2tldCk6IENhbGwgU2V0X0FkZHJlc3MuCgoyMDA2LTA5LTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xNTgwMgoJKiBkZWNsLmMgKHNhbWVfZGlzY3JpbWluYW50X3ApOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfUmVjb3JkX1R5cGU+OiBXaGVuIHRoZXJlIGlzIGEgcGFyZW50CglzdWJ0eXBlIGFuZCB3ZSBoYXZlIGRpc2NyaW1pbmFudHMsIGZpeCB1cCB0aGUgQ09NUE9ORU5UX1JFRnMKCWZvciB0aGUgZGlzY3JpbWluYW50cyB0byBtYWtlIHRoZW0gcmVmZXJlbmNlIHRoZSBjb3JyZXNwb25kaW5nCglmaWVsZHMgb2YgdGhlIHBhcmVudCBzdWJ0eXBlIGFmdGVyIGl0IGhhcyBiZWVuIGJ1aWx0LgoKMjAwNi0wOS0xNSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgYWRhLzE4ODE3CgkqIHV0aWxzLmMgKG1heF9zaXplKTogUGVyZm9ybSBjb25zdGFudCBmb2xkaW5nIG9mIChBID8gQiA6IEMpIC0gRAoJaW50byBBID8gQiAtIEQgOiBDIC0gRCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBzaXplIG9mIGEgTUlOVVNfRVhQUi4KCjIwMDYtMDktMTMgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJUFIgYWRhLzI5MDI1CgkqIHRyYW5zLmMgKGduYXRfZ2ltcGxpZnlfZXhwcikgPEFERFJfRVhQUj46IFdoZW4gdGFraW5nIHRoZSBhZGRyZXNzCglvZiBhIFNBVkVfRVhQUiwganVzdCBtYWtlIHRoZSBvcGVyYW5kIGFkZHJlc3NhYmxlL25vdC1yZWFkb25seSBhbmQKCWxldCB0aGUgY29tbW9uIGdpbXBsaWZpZXIgY29kZSBtYWtlIGFuZCBwcm9wYWdhdGUgYSB0ZW1wb3JhcnkgY29weS4KCShjYWxsX3RvX2dudSk6IENsYXJpZnkgdGhlIHVzZSBvZiBTQVZFX0VYUFIgZm9yIG5vdCBhZGRyZXNzYWJsZQoJb3V0L2luLW91dCBhY3R1YWxzIGFuZCBkZWZlciBzZXR0aW5nIHRoZSBhZGRyZXNzYWJsZS9yZWFkb25seSBiaXRzCgl0byB0aGUgZ2ltcGxpZmllci4KCjIwMDYtMDktMTMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgYWRhLzI4NTkxCgkqIGRlY2wuYyAoY29tcG9uZW50c190b19yZWNvcmQpOiBEZWZlciBlbWl0dGluZyBkZWJ1ZyBpbmZvIGZvciB0aGUKCXJlY29yZCB0eXBlIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFyaWFudCB1bnRpbCBhZnRlciB3ZSBhcmUgc3VyZSB0bwoJYWN0dWFsbHkgdXNlIGl0LgoKMjAwNi0wOS0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjE5NTIKCSogZ2lnaS5oIChnbmF0X2ludGVybmFsX2F0dHJpYnV0ZV90YWJsZSk6IERlY2xhcmUuCgkqIG1pc2MuYyAoTEFOR19IT09LU19BVFRSSUJVVEVfVEFCTEUpOiBEZWZpbmUgdG8gYWJvdmUuCgkqIHV0aWxzLmMgKGduYXRfaW50ZXJuYWxfYXR0cmlidXRlX3RhYmxlKTogTmV3IGdsb2JhbCB2YXJpYWJsZS4KCShidWlsdGluX2Z1bmN0aW9uKTogQWx3YXlzIGNhbGwgZGVjbF9hdHRyaWJ1dGVzIG9uIHRoZSBidWlsdGluLgoJKGhhbmRsZV9jb25zdF9hdHRyaWJ1dGUpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGhhbmRsZV9ub3Rocm93X2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoKMjAwNi0wNy0yOCAgVm9sa2VyIFJlaWNoZWx0ICA8cmVpY2hlbHRAaWdwbS5yd3RoLWFhY2hlbi5kZT4KCgkqIE1ha2UtbGFuZy5pbjogVXNlICQoSEVBREVSX0gpIGluc3RlYWQgb2YgaGVhZGVyLmggaW4gZGVwZW5kZW5jaWVzLgoKMjAwNi0wNi0yMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIG1pc2MuYyAoZ25hdF90eXBlX21heF9zaXplKTogTG9vayBhdCBUWVBFX0FEQV9TSVpFIGlmIHdlIGhhdmUKCW5vdCBiZWVuIGFibGUgdG8gZ2V0IGEgY29uc3RhbnQgdXBwZXIgYm91bmQgZnJvbSBUWVBFX1NJWkVfVU5JVC4KCjIwMDYtMDYtMjAgIEphbWVzIEEuIE1vcnJpc29uICA8cGh5dGhvbkBnY2MuZ251Lm9yZz4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xODY5MgoJKiBNYWtlLWxhbmcuaW46IEFkZCBjaGVjay1nbmF0IHRvIGxhbmdfY2hlY2tzLiAgUmVuYW1lIGV4aXN0aW5nCgljaGVjay1nbmF0IGludG8gY2hlY2stYWNhdHMuCgoyMDA2LTA2LTE3ICBLYXJsIEJlcnJ5ICA8a2FybEBnbnUub3JnPgoKCSogZ25hdC1zdHlsZS50ZXhpIChAZGlyY2F0ZWdvcnkpOiBVc2UgIlNvZnR3YXJlIGRldmVsb3BtZW50IgoJaW5zdGVhZCBvZiAiUHJvZ3JhbW1pbmciLCBmb2xsb3dpbmcgdGhlIEZyZWUgU29mdHdhcmUgRGlyZWN0b3J5LgoKMjAwNi0wNi0xMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBhZGEvMjc5NDQKCSogcy10YXByb3AtaHB1eC1kY2UuYWRiOiBEZWxldGUgcmVkdW5kYW50ICd3aXRoIFN5c3RlbS5QYXJhbWV0ZXJzJy4KCjIwMDYtMDYtMDYgIExhdXJlbnQgR1VFUkJZICA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8yNzc2OQoJbWxpYi11dGwuYWRiOiBVc2UgUHJvZ3JhbV9OYW1lLgoKMjAwNi0wNS0yOCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMsIGVudi5jLCBnaWdpLmgsIGluaXQuYywgaW5pdGlhbGl6ZS5jLCByYWlzZS1nY2MuYywKCXNlbV9jaDEzLmFkYiwgc3lzZGVwLmMsIHRhcmd0eXBzLmMsIHRiLWFsdnh3LmMsIHRyYWNlYmFrLmMsCgl0cmFucy5jLCB1dGlscy5jOiBGaXggY29tbWVudCB0eXBvcy4gIEZvbGxvdyBzcGVsbGluZwoJY29udmVudGlvbnMuCgkqIGduYXRfcm0udGV4aSwgZ25hdF91Z24udGV4aSwgOiBGaXggdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcKCWNvbnZlbnRpb25zLgoKMjAwNi0wNS0xOSAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBtaXNjLmMgKGduYXRfZHdhcmZfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShMQU5HX0hPT0tTX0RXQVJGX05BTUUpOiBEZWZpbmUgdG8gaXQuCgoyMDA2LTA1LTE0ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGFkYS9kZWNsLm8pOiBSZXBsYWNlIHRhcmdldC5oIHdpdGggJChUQVJHRVRfSCkuCgkoYWRhL21pc2Mubyk6IExpa2V3aXNlLgoJKGFkYS91dGlscy5vKTogTGlrZXdpc2UuCgoyMDA2LTA0LTA4ICBBdXJlbGllbiBKYXJubyAgPGF1cmVsMzJAZGViaWFuLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBBZGQgQWRhIHN1cHBvcnQgZm9yIEdOVS9rRnJlZUJTRC4KCSogcy1vc2ludGUta2ZyZWVic2QtZ251LmFkczogTmV3IGZpbGUuCgoyMDA2LTAzLTI5ICBDYXJsb3MgTydEb25lbGwgIDxjYXJsb3NAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogUmVuYW1lIGRvY2RpciB0byBnY2NfZG9jZGlyLgoKMjAwNi0wMy0wNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGdpZ2kuaCAoZ2V0X2FkYV9iYXNlX3R5cGUpOiBEZWxldGUuCgkqIHV0aWxzMi5jIChnZXRfYWRhX2Jhc2VfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmFucy5jIChjb252ZXJ0X3dpdGhfY2hlY2spOiBPcGVyYXRlIGluIHRoZSByZWFsIGJhc2UgdHlwZS4KCjIwMDYtMDMtMDMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB1aW50cC5hZGIgKE51bV9CaXRzKTogSGFuZGxlIFVpbnRfSW50X0ZpcnN0IHNwZWNpYWxseS4KCjIwMDYtMDMtMDIgIFJpY2hhcmQgU2FuZGlmb3JkICA8cmljaGFyZEBjb2Rlc291cmNlcnkuY29tPgoKCSogdXRpbHMuYyAoY3JlYXRlX3Zhcl9kZWNsKTogVXNlIGhhdmVfZ2xvYmFsX2Jzc19wIHdoZW4gZGVjaWRpbmcKCXdoZXRoZXIgdG8gbWFrZSB0aGUgZGVjbCBjb21tb24uCgoyMDA2LTAyLTIwICBSYWZhZWwgwXZpbGEgZGUgRXNw7W5kb2xhIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoQWRhKTogUmVtb3ZlLgoJKC5QSE9OWSk6IFJlbW92ZSBBZGEKCjIwMDYtMDItMTcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChGaW5kX0Jvb2xlYW5fVHlwZXMpOiBJZiBvbmUgb2YgdGhlIG9wZXJhbmRzIGlzIGFuCglhZ2dyZWdhdGUsIGNoZWNrIHRoZSBpbnRlcnByZXRhdGlvbnMgb2YgdGhlIG90aGVyIG9wZXJhbmQgdG8gZmluZCBvbmUKCXRoYXQgbWF5IGJlIGEgYm9vbGVhbiBhcnJheS4KCgkoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBGaXggZmxvdy1vZi1jb250cm9sIHR5cG8gaW4gY2FzZSB3aGVyZQoJdGhlIHByZWZpeCBpcyBhIHByaXZhdGUgZXh0ZW5zaW9uLgoKMjAwNi0wMi0xNyAgRXJpYyBCb3RjYXpvdSAgPGJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yNjMxNQoJKiB1dGlsczIuYyAoZmluZF9jb21tb25fdHlwZSk6IElmIGJvdGggaW5wdXQgdHlwZXMgYXJlIEJMS21vZGUgYW5kCgloYXZlIHRoZSBzYW1lIGNvbnN0YW50IHNpemUsIGtlZXAgdXNpbmcgdGhlIGZpcnN0IG9uZS4KCgkqIGJpbmRnZW4uYWRiOiAoR2VuX1ZlcnNpb25zX0FkYSk6IFJldmVydCBwcmV2aW91cyB3b3JrYXJvdW5kLgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpOiBPbmx5IGNoZWNrIFRSRUVfT1ZFUkZMT1cgZm9yIGEgY29uc3RhbnQuCgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IE5ldyBjYXNlIGZvciAtV292ZXJsZW5ndGgtc3RyaW5ncy4KCjIwMDYtMDItMTcgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvcC1pcml4LmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLCBzLXRhcHJvcC1saW51eC5hZGIsIAoJcy10YXByb3Atc29sYXJpcy5hZGIsIHMtdGFwcm9wLXZtcy5hZGIsIHMtdGFwcm9wLW1pbmd3LmFkYiwgCglzLXRhcHJvcC1wb3NpeC5hZGIsIHMtdGFwcm9wLXZ4d29ya3MuYWRiLCBzLXRhcHJvcC1seW54b3MuYWRiLCAKCXMtdGFwcm9wLXRydTY0LmFkYiAoU2V0X0ZhbHNlLCBTZXRfVHJ1ZSwgU3VzcGVuZF9VbnRpbF9UcnVlKTogQWRkCglBYm9ydF9EZWZlci9VbmRlZmVyIHBhaXJzIHRvIGF2b2lkIHRoZSBwb3NzaWJpbGl0eSBvZiBhIHRhc2sgYmVpbmcKCWFib3J0ZWQgd2hpbGUgb3duaW5nIGEgbG9jay4KCjIwMDYtMDItMTcgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9BbGxvY2F0b3IpOiBJZiB0aGUgYWxsb2NhdGVkIG9iamVjdCBpcyBhY2Nlc3NlZAoJdGhyb3VnaCBhbiBhY2Nlc3MgdG8gY2xhc3Mtd2lkZSBpbnRlcmZhY2Ugd2UgZm9yY2UgdGhlIGRpc3BsYWNlbWVudCBvZgoJdGhlIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBvYmplY3QgdG8gcmVmZXJlbmNlIHRoZSBjb3JyZXNwb25kaW5nCglzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGUuCgkoRXhwYW5kX05fT3BfRGl2aWRlKTogQWxsb3cgNjQgYml0IGRpdmlzaW9ucyBieSBzbWFsbCBwb3dlciBvZiAyLAoJaWYgTG9uZ19TaGlmdHMgYXJlIHN1cHBvcnRlZCBvbiB0aGUgdGFyZ2V0LCBldmVuIGlmIDY0IGJpdCBkaXZpZGVzCglhcmUgbm90IHN1cHBvcnRlZCAoY29uZmlndXJhYmxlIHJ1biB0aW1lIG1vZGUpLgoJKEV4cGFuZF9OX1R5cGVfQ29udmVyc2lvbik6IERvIHZhbGlkaXR5IGNoZWNrIGlmIHZhbGlkaXR5IGNoZWNrcyBvbgoJb3BlcmFuZHMgYXJlIGVuYWJsZWQuCgkoRXhwYW5kX05fUXVhbGlmaWVkX0V4cHJlc3Npb24pOiBEbyB2YWxpZGl0eSBjaGVjayBpZiB2YWxpZGl0eSBjaGVja3MKCW9uIG9wZXJhbmRzIGFyZSBlbmFibGVkLgoKMjAwNi0wMi0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2RidWcuYWRiIChEZWJ1Z19SZW5hbWluZ19EZWNsYXJhdGlvbik6IEluZGljYXRlIHRoYXQgdGhlIGVudGl0eQoJbXVzdCBiZSBtYXRlcmlhbGl6ZWQgd2hlbiB0aGUgcmVuYW1lZCBleHByZXNzaW9uIGlzIGFuIGV4cGxpY2l0CglkZXJlZmVyZW5jZS4KCjIwMDYtMDItMTcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGZyZWV6ZS5hZGIgKFN0YXRpY2FsbHlfRGlzY3JpbWluYXRlZF9Db21wb25lbnRzKTogUmV0dXJuIGZhbHNlIGlmCgl0aGUgYm91bmRzIG9mIHRoZSB0eXBlIG9mIHRoZSBkaXNjcmltaW5hbnQgYXJlIG5vdCBzdGF0aWMgZXhwcmVzc2lvbnMuCgoJKiBzZW1fYWdnci5hZGIgKENoZWNrX1N0YXRpY19EaXNjcmltaW5hdGVkX1N1YnR5cGUpOiBSZXR1cm4gZmFsc2UgaWYKCXRoZSBib3VuZHMgb2YgdGhlIGRpc2NyaW1pbmFudCB0eXBlIGFyZSBub3Qgc3RhdGljLgoKMjAwNi0wMi0xNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLW9zX2xpYi5hZGIgKENvcHlfRmlsZSk6IE1ha2Ugc3VyZSB0aGF0IGlmIEZyb20gaGFzIGFuIEludmFsaWRfRkQsCgl0aGVuIHdlIGNsb3NlIFRvIGlmIGl0IGlzIHZhbGlkLgoKMjAwNi0wMi0xNyAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhZGFjb3JlLmNvbT4KCgkqIGluaXQuYyAoZmFjaWxpdHlfcmVzaWduYWxfdGFibGUpOiBuZXcgYXJyYXkKCShfX2duYXRfZGVmYXVsdF9yZXNpZ25hbF9wKTogZW5oYW5jZSBkZWZhdWx0IHByZWRpY2F0ZSB0byByZXNpZ25hbCBpZgoJVk1TIGNvbmRpdGlvbiBoYXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGZhY2lsaXR5IGNvZGVzLgoKMjAwNi0wMi0xNyAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBVc2UgVk1TNjQgc3BlY2lhbGl6ZWQgdmVyc2lvbnMgb2Ygc2V2ZXJhbCB1bml0cyBpbgoJSW50ZXJmYWNlcy5DIGhpZXJhcmNoeSB0byBiZSBjb21wYXRpYmxlIHdpdGggSFAgQyBkZWZhdWx0IHNpemUgY2hvaWNlcy4KCVVzZSB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIEFkYS5TeW5jaHJvbm91c19UYXNrX0NvbnRyb2wgZm9yIFZ4V29ya3MgNjUzLgoKMjAwNi0wMi0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTAuYWRiIChBbmFseXplX1dpdGhfQ2xhdXNlKTogSWYgdGhlIHVuaXQgaXMgYSBzdWJwcm9ncmFtCglpbnN0YW50aWF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbnRpdHkgaXMgdGhlIHJlbGF0ZWRfaW5zdGFuY2Ugb2YgdGhlCgl3cmFwcGVyIHBhY2thZ2UgY3JlYXRlZCBmb3IgdGhlIGluc3RhbmNlLgoKMjAwNi0wMi0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX1BhY2thZ2VfSW5zdGFudGlhdGlvbik6IElubGluZV9Ob3cgaXMgZmFsc2UgaWYKCXRoZSBjdXJyZW50IGluc3RhbmNlIGlzIG5lc3RlZCB3aXRoaW4gYW5vdGhlciBpbnN0YW5jZSBpbiBhIGNoaWxkIHVuaXQuCgoyMDA2LTAyLTE3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX0Rpc2NyaW1pbmF0ZWRfU3VidHlwZSk6IEluIGNhc2Ugb2YgY29uY3VycmVudAoJdHlwZSB3ZSBjYW5ub3QgaW5oZXJpdCB0aGUgcHJpbWl0aXZlIG9wZXJhdGlvbnM7IHdlIGluaGVyaXQgdGhlCglDb3JyZXNwb25kaW5nX1JlY29yZF9UeXBlICh3aGljaCBoYXMgdGhlIGxpc3Qgb2YgcHJpbWl0aXZlIG9wZXJhdGlvbnMpLgoJKENoZWNrX0Fub255bW91c19BY2Nlc3NfVHlwZXMpOiBXaGVuIGNyZWF0aW5nIGFub255bW91cyBhY2Nlc3MgdHlwZXMgZm9yCglhY2Nlc3MgY29tcG9uZW50cywgdXNlIFJld3JpdGUgaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIHRyZWUgc3RydWN0dXJlLAoJZm9yIEFTSVMgdXNlLgoJKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogRm9yIGxpbWl0ZWQgdHlwZXMgd2l0aCBhY2Nlc3MKCWRpc2NyaW1pbmFudHMgd2l0aCBkZWZhdWx0cyBpbml0aWFsaXplZCBieSBhbiBhZ2dyZWdhdGUsIG9idGFpbgoJc3VidHlwZSBmcm9tIGFnZ3JlZ2F0ZSBhcyBmb3Igb3RoZXIgbXV0YWJsZSB0eXBlcy4KCShEZXJpdmVkX1R5cGVfRGVjbGFyYXRpb24pOiBJZiB0aGUgZGVyaXZlZCB0eXBlIGlzIGEgbGltaXRlZCBpbnRlcmZhY2UsCglzZXQgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZyAoSXNfTGltaXRlZF9SZWNvcmQgaXMgbm90IHN1ZmZpY2llbnQpLgoKMjAwNi0wMi0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNi5hZGIgKEJ1aWxkX0JvZHlfVG9fSW5saW5lKTogRW5mb3JjZSB0aGUgcnVsZSB0aGF0IGluIG9yZGVyCgl0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gdW5jb25zdHJhaW5lZCB0eXBlLCB0aGUgcmV0dXJuCglleHByZXNzaW9uIG11c3QgYmUgdGhlIGZpcnN0IHZhcmlhYmxlIGRlY2xhcmVkIGluIHRoZSBib2R5IG9mIHRoZQoJZnVuY3Rpb24uCgoyMDA2LTAyLTE3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBJbiBjYXNlIG9mIGNvbnZlcnNpb24gdG8gYW4KCWFic3RyYWN0IGludGVyZmFjZSB0eXBlLCB0aGUgc3RhdGljIGFuYWx5c2lzIGlzIG5vdCBlbm91Z2ggdG8ga25vdyBpZgoJdGhlIGludGVyZmFjZSBpcyBpbXBsZW1lbnRlZCBvciBub3QgYnkgdGhlIHNvdXJjZSB0YWdnZWQgdHlwZS4gSGVuY2UKCXdlIG11c3QgcGFzcyB0aGUgd29yayB0byB0aGUgZXhwYW5kZXIgdG8gZ2VuZXJhdGUgdGhlIHJlcXVpcmVkIGNvZGUgdG8KCWV2YWx1YXRlIHRoZSBjb252ZXJzaW9uIGF0IHJ1bi10aW1lLgoJKFJlc29sdmVfRXF1YWxpdHlfT3ApOiBEbyBub3QgYXBwbHkgcHJldmlvdXMKCXRyYW5zZm9ybWF0aW9uIGlmIGV4cGFuc2lvbiBpcyBkaXNhc2JsZWQsIHRvIHByZXZlbnQgYW5vbWFsaWVzIHdoZW4KCWxvY2F0aW5nIGdsb2JhbCByZWZlcmVuY2VzIGluIGEgZ2VuZXJpYyB1bml0LgoKMjAwNi0wMi0xNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBOZXcgc3RhbmRhcmQgbmFtZXMgZm9yIG5ldyBwcm9qZWN0IGF0dHJpYnV0ZXM6CglhcmNoaXZlX2J1aWxkZXIsIGFyY2hpdmVfaW5kZXhlciwgY29tcGlsZXJfcGljX29wdGlvbiwKCWNvbmZpZ19ib2R5X2ZpbGVfbmFtZSwgY29uZmlnX2JvZHlfZmlsZV9uYW1lX3BhdHRlcm4sCgljb25maWdfZmlsZV9zd2l0Y2hlcywgY29uZmlnX2ZpbGVfdW5pcXVlLCBjb25maWdfc3BlY19maWxlX25hbWUsCgljb25maWdfc3BlY19maWxlX25hbWVfcGF0dGVybiwgZGVmYXVsdF9idWlsZGVyX3N3aXRjaGVzLAoJZGVmYXVsdF9nbG9iYWxfY29tcGlsZXJfc3dpdGNoZXMsIGRlZmF1bHRfbGFuZ3VhZ2UsCglkZXBlbmRlbmN5X2ZpbGVfa2luZCwgZ2xvYmFsX2NvbXBpbGVyX3N3aXRjaGVzLCBpbmNsdWRlX3BhdGgsCglpbmNsdWRlX3BhdGhfZmlsZSwgbGFuZ3VhZ2Vfa2luZCwgbGlua2VyX2V4ZWN1dGFibGVfb3B0aW9uLAoJbGlua2VyX2xpYl9kaXJfb3B0aW9uLCBsaW5rZXJfbGliX25hbWVfb3B0aW9uLCBtYXBwaW5nX2ZpbGVfc3dpdGNoZXMsCglyb290cywgcnVudGltZV9wcm9qZWN0LgoKMjAwNi0wMi0xNyAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLWNvbnZlYy5hZHMsIGEtY29udmVjLmFkYjogCgkob3BlcmF0b3IgIiYiKTogaGFuZGxlIHBvdGVudGlhbCBvdmVyZmxvdyBmb3IgbGFyZ2UgaW5kZXggdHlwZXMKCShJbnNlcnQpOiByZW1vdmVkIENvbnRyYWludF9FcnJvciB3aGVuIHVzaW5nIGxhcmdlIGluZGV4IHR5cGVzCgkoSW5zZXJ0X1NwYWNlKTogcmVtb3ZlZCBDb25zdHJhaW50X0Vycm9yIGZvciBsYXJnZSBpbmRleCB0eXBlcwoJKExlbmd0aCk6IG1vdmVkIGNvbnN0cmFpbnQgY2hlY2sgZnJvbSBMZW5ndGggdG8gSW5zZXJ0CgoJKiBhLWNvaW52ZS5hZHMsIGEtY29pbnZlLmFkYjogU3RyZWFtIGF0dHJpYnV0ZSBwcm9jZWR1cmVzIGFyZSBkZWNsYXJlZAoJYXMgbm90IG51bGwgYWNjZXNzLgoJRXhwbGljaXQgcmFpc2Ugc3RhdGVtZW50cyBub3cgaW5jbHVkZSBhbiBleGNlcHRpb24gbWVzc2FnZS4KCShvcGVyYXRvciAiJiIpOiBoYW5kbGUgcG90ZW50aWFsIG92ZXJmbG93IGZvciBsYXJnZSBpbmRleCB0eXBlcwoJKEluc2VydCk6IHJlbW92ZWQgQ29udHJhaW50X0Vycm9yIHdoZW4gdXNpbmcgbGFyZ2UgaW5kZXggdHlwZXMKCShJbnNlcnRfU3BhY2UpOiByZW1vdmVkIENvbnN0cmFpbnRfRXJyb3IgZm9yIGxhcmdlIGluZGV4IHR5cGVzCgkoTGVuZ3RoKTogbW92ZWQgY29uc3RyYWludCBjaGVjayBmcm9tIExlbmd0aCB0byBJbnNlcnQKCjIwMDYtMDItMTcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcy13Y2hjbnYuYWRiOiBEb2N1bWVudCBoYW5kbGluZyBvZiBbIG9uIG91dHB1dCAod2UgZG8gbm90IGNoYW5nZQoJdGhpcyB0byBbIjVCIl0gYW5kIHRoZSBuZXcgY29tbWVudHMgc2F5IHdoeSBub3QuCgoJKiBnbmF0X3Vnbi50ZXhpOiAKCUFkZCBub3RlIGZvciAtZ25hdFZvIHRoYXQgdGhpcyBub3cgaW5jbHVkZXMgdGhlIGNhc2VzIG9mIHR5cGUKCWNvbnZlcnNpb25zIGFuZCBxdWFsaWZpZWQgZXhwcmVzc2lvbnMuCglBZGQgY29tbWVudHMgb24gaGFuZGxpbmcgb2YgYnJhY2tldHMgZW5jb2RpbmcgZm9yIFRleHRfSU8KCjIwMDYtMDItMTcgIFJhbW9uIEZlcm5hbmRleiAgPGZlcm5hbmRlekBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cGFuZGVyLmFkYjogRml4IHR5cG8gaW4gY29tbWVudAoKCSogZXhwX3Bha2QuYWRiOiBGaXggdHlwbwoJTWlub3IgY29tbWVudCByZWZvcm1hdHRpbmcuCgoJKiBnLWR5bnRhYi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZXhwX2NoNi5hZGIgKFJlZ2lzdGVyX0ludGVyZmFjZV9EVF9FbnRyeSk6IFRyYXZlcnNlIHRoZSBsaXN0IG9mCglhbGlhc2VkIHN1YnByb2dyYW1zIHRvIGxvb2sgZm9yIHRoZSBhYnN0cmFjdCBpbnRlcmZhY2Ugc3VicHJvZ3JhbS4KCjIwMDYtMDItMTYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBlbnYuYyAoX19nbmF0X3NldGVudik6IFVzZSBzaXplX3QuCgkoX19nbmF0X3Vuc2V0ZW52KTogTGlrZXdpc2UuCgkoX19nbmF0X2NsZWFyZW52KTogTGlrZXdpc2UuCgoyMDA2LTAyLTE2ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBvcHQuYWRzIChBZGFfVmVyc2lvbl9EZWZhdWx0KTogU2V0IHRvIEFkYSAyMDA1IGJ5IGRlZmF1bHQuCgoyMDA2LTAyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBhLWludG5hbS1vczIuYWRzLCBhLWludG5hbS11bml4d2FyZS5hZHMsIGctc29jY29uLXVuaXh3YXJlLmFkcywKCWctc29saW9wLXVuaXh3YXJlLmFkcywgaS1vczJlcnIuYWRzLCBpLW9zMmxpYi5hZGIsIGktb3MybGliLmFkcywKCWktb3Myc3luLmFkcywgaS1vczJ0aHIuYWRzLCBzLWludG1hbi1pcml4LWF0aHJlYWQuYWRiLAoJcy1vc2ludGUtYWl4LWZzdS5hZHMsIHMtb3NpbnRlLWZzdS5hZGIsIHMtcGFyYW1lLW9zMi5hZGIsCglzLW9zaW50ZS1pcml4LWF0aHJlYWQuYWRzLCBzLW9zaW50ZS1saW51eC1mc3UuYWRzLCBzLW9zaW50ZS1vczIuYWRiLAoJcy1vc2ludGUtb3MyLmFkcywgcy1vc2ludGUtc29sYXJpcy1mc3UuYWRzLCBzLW9zaW50ZS11bml4d2FyZS5hZGIsCglzLW9zaW50ZS11bml4d2FyZS5hZHMsIHMtb3NwcmltLW9zMi5hZGIsIHMtdGFwcm9wLWlyaXgtYXRocmVhZC5hZGIsCglzLXRhcHJvcC1vczIuYWRiLCBzLXRhc2luZi1pcml4LWF0aHJlYWQuYWRiLCBzLXRhc2luZi1pcml4LWF0aHJlYWQuYWRzLAoJcy10YXNwcmktb3MyLmFkcywgc3lzdGVtLW9zMi5hZHMsIHN5c3RlbS11bml4d2FyZS5hZHM6IFJlbW92ZWQsCglubyBsb25nZXIgdXNlZC4KCjIwMDYtMDItMTMgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBhLXRhc3Rlci5hZGIgKEN1cnJlbnRfVGFza19GYWxsYmFja19IYW5kbGVyKTogRG9jdW1lbnQgd2h5IGV4cGxpY2l0Cglwcm90ZWN0aW9uIGFnYWluc3QgcmFjZSBjb25kaXRpb25zIGlzIG5vdCBuZWVkZWQuCgkoU2V0X0RlcGVuZGVudHNfRmFsbGJhY2tfSGFuZGxlcik6IEFkZCBtdXR1YWwgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUKCWZhbGxiYWNrIGhhbmRsZXIuCgkoU2V0X1NwZWNpZmljX0hhbmRsZXIpOiBBZGQgbXV0dWFsIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIHNwZWNpZmljCgloYW5kbGVyLgoJKFNwZWNpZmljX0hhbmRsZXIpOiBBZGQgbXV0dWFsIGV4Y2x1c2l2ZSBhY2Nlc3MgZm9yIHJldHJpZXZpbmcgdGhlCglzcGVjaWZpYyBoYW5kbGVyLgoKCSogcy10YXJlc3QuYWRiIChUYXNrX1dyYXBwZXIpOiBBZGQgbXV0dWFsIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGZhbGwKCWJhY2sgaGFuZGxlci4KCgkqIHMtdGFza2luLmFkcyAoQ29tbW9uX0FUQ0IpOiBSZW1vdmUgcHJhZ21hIEF0b21pYyBmb3IKCUZhbGxfQmFja19IYW5kbGVyIGFuZCBTcGVjaWZpY19IYW5kbGVyLgoKCSogcy10YXNzdGEuYWRiIChUYXNrX1dyYXBwZXIpOiBBZGQgbXV0dWFsIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIHRhc2sKCXRlcm1pbmF0aW9uIGhhbmRsZXJzLgoJU2V0IHR3byBkaWZmZXJlbnQgb3dlcmZsb3cgZGVwZW5kaW5nIG9uIHRoZSBtYXhpbWFsIHN0YWNrIHNpemUuCgoJKiBzLXNvbGl0YS5hZGIgKFRhc2tfVGVybWluYXRpb25fSGFuZGxlcl9UKTogRG9jdW1lbnQgd2h5IGV4cGxpY2l0Cglwcm90ZWN0aW9uIGFnYWluc3QgcmFjZSBjb25kaXRpb25zIGlzIG5vdCBuZWVkZWQgd2hlbiBleGVjdXRpbmcgdGhlCgl0YXNrIHRlcm1pbmF0aW9uIGhhbmRsZXIuCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtZ2xvbG9jLW1pbmd3LmFkYiwgYS1jZ2Fhc28uYWRzLCBhLXN0em1hcC5hZGIsIGEtc3R6bWFwLmFkYiwKCWEtc3R6bWFwLmFkcywgYS16dGNvaW8uYWRiLCBhLXp0ZWRpdC5hZGIsIGEtenRlZGl0LmFkcywgYS16dGVuYXUuYWRiLAoJYS16dGVuYXUuYWRzLCBhLWNvbGllbi5hZGIsIGEtY29saWVuLmFkcywgYS1jb2xpcmUuYWRiLCBhLWNvbGlyZS5hZHMsCglhLWNvbWxpbi5hZGIsIGEtZGVjaW1hLmFkYiwgYS1kZWNpbWEuYWRzLCBhLWRpcmVpby5hZGIsIGEtZGlyZWlvLmFkYiwKCWEtZGlyZWlvLmFkYiwgYS1kaXJlaW8uYWRzLCBhLW5nY290eS5hZGIsIGEtbmdjb3R5LmFkcywgYS1udWZscmEuYWRiLAoJYS1udWZscmEuYWRzLCBhLXNlcXVpby5hZGIsIGEtc2VxdWlvLmFkcywgYS1zZXF1aW8uYWRzLCBhLXN0b3Jpby5hZHMsCglhLXN0cmVhbS5hZHMsIGEtc3RzdGlvLmFkYiwgYS1zdHN0aW8uYWRiLCBhLXN0c3Rpby5hZHMsIGEtc3RzdGlvLmFkcywKCWEtc3R3aW1hLmFkYiwgYS1zdHdpbWEuYWRiLCBhLXN0d2ltYS5hZHMsIGEtc3R3aXNlLmFkYiwgYS10ZWlvZWQuYWRiLAoJYS10ZWlvZWQuYWRzLCBhLXRpY29hdS5hZGIsIGEtdGljb2F1LmFkcywgYS10aWNvaW8uYWRiLCBhLXRhc2F0dC5hZHMsCglhLXRpZGVhdS5hZGIsIGEtdGlkZWF1LmFkcywgYS10aWRlaW8uYWRiLCBhLXRpZGVpby5hZHMsIGEtdGllbmF1LmFkYiwKCWEtdGllbmF1LmFkcywgYS10aWVuaW8uYWRiLCBhLXRpZW5pby5hZHMsIGEtdGlmaWlvLmFkcywgYS10aWZsYXUuYWRiLAoJYS10aWZsYXUuYWRzLCBhLXRpZmxpby5hZGIsIGEtdGlmbGlvLmFkYiwgYS10aWZsaW8uYWRzLCBhLXRpZ2VhdS5hZHMsCglhLXRpaW5hdS5hZGIsIGEtdGlpbmF1LmFkcywgYS10aWluaW8uYWRiLCBhLXRpaW5pby5hZHMsIGEtdGltb2lvLmFkYiwKCWEtdGltb2lvLmFkcywgYS10aXRlc3QuYWRiLCBhLXRpdGVzdC5hZHMsIGEtd3Rjb2lvLmFkYiwgYS13dGRlYXUuYWRiLAoJYS13dGRlYXUuYWRzLCBhLXd0ZGVpby5hZGIsIGEtd3RkZWlvLmFkcywgYS13dGVkaXQuYWRiLCBhLXd0ZWRpdC5hZGIsCglhLXd0ZWRpdC5hZHMsIGEtd3RlbmF1LmFkYiwgYS13dGVuYXUuYWRzLCBhLXd0ZW5hdS5hZHMsIGEtd3RlbmlvLmFkYiwKCWEtd3RlbmlvLmFkcywgYS13dGZpaW8uYWRiLCBhLXd0Zmlpby5hZHMsIGEtd3RmbGF1LmFkYiwgYS13dGZsYXUuYWRzLAoJYS13dGZsaW8uYWRiLCBhLXd0Zmxpby5hZGIsIGEtd3RmbGlvLmFkcywgYS13dGdlYXUuYWRzLCBhLXd0aW5hdS5hZGIsCglhLXd0aW5hdS5hZHMsIGEtd3RpbmlvLmFkYiwgYS13dGluaW8uYWRzLCBhLXd0bW9hdS5hZGIsIGEtd3Rtb2F1LmFkcywKCWEtd3Rtb2lvLmFkYiwgYS13dG1vaW8uYWRzLCB4cmVmX2xpYi5hZGIsIHhyZWZfbGliLmFkcywgeHJfdGFibHMuYWRiLAoJZy1ib3VidWYuYWRiLCBnLWJvdWJ1Zi5hZHMsIGctY2dpZGViLmFkYiwgZy1pby5hZGIsIGduYXRkbGwuYWRiLAoJZy1wZWhhZ2UuYWRiLCBpLWMuYWRzLCBnLXNwaXRiby5hZGIsIGctc3BpdGJvLmFkcywgbWRsbC5hZGIsCgltbGliLWZpbC5hZGIsIG1saWItdXRsLmFkYiwgbWxpYi11dGwuYWRzLCBwcmotZW52LmFkYiwgcHJqLXRyZWUuYWRiLAoJcHJqLXRyZWUuYWRzLCBwcmotdXRpbC5hZGIsIHMtYXJpdDY0LmFkYiwgcy1hc3RoYW4uYWRzLCBzLWF1eGRlYy5hZGIsCglzLWF1eGRlYy5hZHMsIHMtY2hlcG9vLmFkcywgcy1kaXJlaW8uYWRiLCBzLWRpcmVpby5hZHMsIHMtZXJycmVwLmFkYiwKCXMtZXJycmVwLmFkcywgcy1maWxlaW8uYWRiLCBzLWZpbGVpby5hZHMsIHMtZmlucm9vLmFkYiwgcy1maW5yb28uYWRzLAoJcy1nbG9sb2MuYWRiLCBzLWdsb2xvYy5hZHMsIHMtaW8uYWRiLCBzLWlvLmFkcywgcy1ycGMuYWRiLAoJcy1ycGMuYWRzLCBzLXNoYXN0by5hZHMsIHMtc2VxdWlvLmFkYiwgcy1zdG9wb28uYWRzLCBzLXN0cmF0dC5hZGIsCglzLXN0cmF0dC5hZHMsIHMtdGFhc2RlLmFkYiwgcy10YWFzZGUuYWRzLCBzLXRhZGVydC5hZGIsIHMtc2VxdWlvLmFkcywKCXMtdGFza2luLmFkYiwgcy10YXNxdWUuYWRiLCBzLXRhc3F1ZS5hZHMsIHMtd2NoamlzLmFkcywgbWFrZWdwci5hZGIsCglhLWNvaW52ZS5hZGIsIGEtY2lkbGxpLmFkYiwgZXZhbF9mYXQuYWRiLCBleHBfZGlzdC5hZHMsIGV4cF9zbWVtLmFkYiwKCWZtYXAuYWRiLCBnLWR5bnRhYi5hZHMsIGctZXhwZWN0LmFkYiwgbGliLXhyZWYuYWRzLCBvc2ludC5hZGIsCglwYXItbG9hZC5hZGIsIHJlc3RyaWN0LmFkYiwgc2lucHV0LWMuYWRzLCBhLWNkbGlsaS5hZGIsCglzeXN0ZW0tdm1zLmFkcywgc3lzdGVtLXZtcy16Y3guYWRzLCBzeXN0ZW0tdm1zXzY0LmFkczogTWlub3IKCXJlZm9ybWF0dGluZy4KCjIwMDYtMDItMTMgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBhLXRhc2F0dC5hZGIsIHMtb3NpbnRlLWx5bnhvcy0zLmFkYiwgcy1vc2ludGUtbHlueG9zLmFkYiwKCXMtb3NpbnRlLWFpeC5hZGIsIHMtaW50ZXJyLXNpZ2FjdGlvbi5hZGIsIHMtYXN0aGFuLXZtcy1hbHBoYS5hZGIsCglzLWludGVyci12bXMuYWRiLCBzLWludG1hbi12bXMuYWRiLCBzLWludGVyci12eHdvcmtzLmFkYiwKCXMtaW50bWFuLXZ4d29ya3MuYWRiLCBzLWFzdGhhbi12bXMtYWxwaGEuYWRiLCBhLXp0ZXhpby5hZGIsCglhLXJlYXRpbS5hZGIsIGEtdGFzaWRlLmFkYiwgYS10ZXh0aW8uYWRiLCBhLXdpdGVpby5hZGIsIHByai1hdHRyLmFkYiwKCXMtaW50bWFuLWlyaXguYWRiLCBzLWludG1hbi1zb2xhcmlzLmFkYiwgcy1pbnRtYW4tcG9zaXguYWRiLAoJYS1keW5wcmkuYWRiLCBhLWludGVyci5hZGIsIGctZHluaHRhLmFkYiwgcy1hc3RoYW4uYWRiLCBzLWludGVyci5hZGIsCglzLXBvb2dsby5hZGIsIHMtcG9vbG9jLmFkYiwgcy1wb29zaXouYWRiLCBzLXRhc3Jlbi5hZGIsIHMtdGFzdXRpLmFkYiwKCXMtdGF0YWF0LmFkYiwgcy10cG9ib3AuYWRiOiBSZW1vdmUgcmVkdW5kYW50IHdpdGggY2xhdXNlcy4KCjIwMDYtMDItMTMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLWRhcndpbi5hZGIsIHMtb3NpbnRlLWRhcndpbi5hZHMsIHMtb3NpbnRlLXZ4d29ya3MuYWRzLCAKCXMtb3NpbnRlLXNvbGFyaXMuYWRzLCBzLW9zaW50ZS1saW51eC5hZHMsIHMtb3NpbnRlLWZyZWVic2QuYWRzLCAKCXMtb3NpbnRlLXNvbGFyaXMtcG9zaXguYWRzLCBzLW9zaW50ZS1seW54b3MtMy5hZHMsIHMtb3NpbnRlLWx5bnhvcy5hZHMsIAoJcy1vc2ludGUtdHJ1NjQuYWRzLCBzLW9zaW50ZS1haXguYWRzLCBzLW9zaW50ZS1pcml4LmFkcywgCglzLW9zaW50ZS1ocHV4LWRjZS5hZHMsIHMtb3NpbnRlLWxpbnV4LWhwcGEuYWRzLCAKCXMtb3NpbnRlLWxpbnV4LWFscGhhLmFkcywgcy1pbm1hb3AtcG9zaXguYWRiIChzaWdzZXRfdF9wdHIpOiBSZW1vdmVkLAoJcmVwbGFjZWQgYnkgYW5vbnltb3VzIGFjY2VzcyB0eXBlLgoJKHB0aHJlYWRfc2lnbWFzayk6IE5vdyB0YWtlIGFuIGFjY2VzcyBzaWdzZXRfdAoKCSogcy1vc2ludGUtaHB1eC5hZHM6ICBEaXR0by4KCShwdGhyZWFkX211dGV4X3QsIHB0aHJlYWRfY29uZF90KTogVXBkYXRlIGRlZmluaXRpb25zIHRvIHN1cHBvcnQKCXByb3Blcmx5IDMyIGFuZCA2NCBiaXQgQUJJcy4KCjIwMDYtMDItMTMgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIHMtdGFwcm9wLXBvc2l4LmFkYiwgcy10YXByb3Atdnh3b3Jrcy5hZGIsIHMtdGFwcm9wLXRydTY0LmFkYiwgCglzLXRhcHJvcC1seW54b3MuYWRiLCBzLXRhcHJvcC1pcml4LmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLCAKCXMtdGFwcm9wLWxpbnV4LmFkYiwgcy10YXByb3Atc29sYXJpcy5hZGIsCglzLXRhcHJvcC12bXMuYWRiIChDcmVhdGVfVGFzayk6IFJlbW92ZSB0YXNrIGFkanVzdG1lbnQgY29kZS4gVGhpcwoJYWRqdXN0ZW1lbnQgaXMgYWxyZWFkeSBkb25lIHdoZW4gY2FsbGluZyB0aGlzIHJvdXRpbmUuCgoyMDA2LTAyLTEzICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBzeXN0ZW0tbWluZ3cuYWRzIChVbmRlcmx5aW5nX1ByaW9yaXRpZXMpOiBVcGRhdGUgdGhlIHByaW9yaXR5IG1hcHBpbmcKCXRhYmxlIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSAxNiBwcmlvcml0eSBsZXZlbHMgYXZhaWxhYmxlIG9uIFdpbmRvd3MKCTIwMDAgYW5kIFhQLiBPbiBOVDQgdGhlcmUgYXJlIG9ubHkgNyBwcmlvcml0eSBsZXZlbHMsIHRoaXMgaXMgcHJvcGVybHkKCXN1cHBvcnRlZCBieSB0aGlzIG5ldyBtYXBwaW5nLgoKMjAwNi0wMi0xMyAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBhZGFkZWNvZGUuaCwgYWRhZGVjb2RlLmM6IChfX2duYXRfZGVjb2RlKTogSW1wcm92ZSBzdXBwb3J0IG9mIHR5cGVzLgoJKGdldF9lbmNvZGluZyk6IE5ldyBzdWJwcm9ncmFtLiBFeHRyYWN0cyB0aGUgZW5jb2RpbmdzIGZyb20gYW4gZW5jb2RlZAoJQWRhIG5hbWUuCgoyMDA2LTAyLTEzICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgkgICAgTmljb2xhcyBSb2NoZSAgPHJvY2hlQGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5oLCBhZGFpbnQuYyAoRElSX1NFUEFSQVRPUik6IFVzZSBfVCgpIG1hY3JvIGZvciBVbmljb2RlCglzdXBwb3J0LgoJKF9fZ25hdF90cnlfbG9jayk6IEFkZCB1bmljb2RlIHN1cHBvcnQgYnkgdXNpbmcgYSBzcGVjaWZpYyBzZWN0aW9uIG9uCglXaW5kb3dzLgoJKF9fZ25hdF9nZXRfY3VycmVudF9kaXIpOiBJZGVtLgoJKF9fZ25hdF9vcGVuX3JlYWQpOiBJZGVtLgoJKF9fZ25hdF9vcGVuX3J3KTogSWRlbS4KCShfX2duYXRfb3Blbl9jcmVhdGUpOiBJZGVtLgoJKF9fZ25hdF9jcmVhdGVfb3V0cHV0X2ZpbGUpOiBJZGVtLgoJKF9fZ25hdF9vcGVuX2FwcGVuZCk6IElkZW0uCgkoX19nbmF0X29wZW5fbmV3KTogSWRlbS4KCShfX2duYXRfZmlsZV90aW1lX25hbWUpOiBJZGVtLgoJKF9fZ25hdF9zZXRfZmlsZV90aW1lX25hbWUpOiBJZGVtLgoJKF9fZ25hdF9zdGF0KTogSWRlbS4KCSh3aW4zMl9ub19ibG9ja19zcGF3bik6IElkZW0uCgkoX19nbmF0X2xvY2F0ZV9leGVjX29uX3BhdGgpOiBJZGVtLgoJKF9fZ25hdF9vcGVuZGlyKTogTmV3IHJvdXRpbmUuCgkoX19nbmF0X2Nsb3NlZGlyKTogSWRlbS4KCShfX2duYXRfcmVhZGRpcik6IEFkZCBuZXcgcGFyYW1ldGVyIGxlbmd0aCAocG9pbnRlciB0byBpbnQpLiBVcGRhdGUKCWltcGxlbWVudGF0aW9uIHRvIHVzZSBpdCBhbmQgYWRkIHNwZWNpZmljIFdpbjMyIGNvZGUgZm9yIFVuaWNvZGUKCXN1cHBvcnQuCgkoX19nbmF0X2dldF9lbnZfdmFsdWVfcHRyKTogUmVtb3ZlLiBSZXBsYWNlZCBieSBfX2duYXRfZ2V0ZW52IGluIGVudi5jCgkoX19nbmF0X3NldF9lbnZfdmFsdWUpOiBSZW1vdmUuIFJlcGxhY2VkIGJ5IF9fZ25hdF9zZXRlbnYgaW4gZW52LmMKCShjb252ZXJ0X2FkZHJlc3Nlcyk6IERvIG5vdCBkZWZpbmUgdGhpcyBkdW1teSByb3V0aW5lIG9uIFZNUy4KCgkqIG1pbmd3MzIuaCAoR05BVF9VTklDT0RFX1NVUFBPUlQpOiBOZXcgZGVmaW5pdGlvbiwgaWYgc2V0IHRoZSBHTkFUCglydW50aW1lIFVuaWNvZGUgc3VwcG9ydCB3aWxsIGJlIGFjdGl2YXRlZC4KCShTMldTKTogU3RyaW5nIHRvIFdpZGUtU3RyaW5nIGNvbnZlcnNpb24uIFRoaXMgdmVyc2lvbiBqdXN0IGNvcHkgYQoJc3RyaW5nIGluIG5vbiBVbmljb2RlIHZlcnNpb24uCgkoV1MyUyk6IFdpZGUtU3RyaW5nIHRvIFN0cmluZyBjb252ZXJzaW9uLiBUaGlzIHZlcnNpb24ganVzdCBjb3B5IGEKCXN0cmluZyBpbiBub24gVW5pY29kZSB2ZXJzaW9uLgoKCSogZy1kaXJvcGUuYWRiOiAoQ2xvc2UpOiBOb3cgaW1wb3J0IF9fZ25hdF9jbG9zZWRpciBmcm9tIGFkYWludC5jLgoJKE9wZW4pOiBOb3cgaW1wb3J0IF9fZ25hdF9vcGVuZGlyIGZyb20gYWRhaW50LmMuCgkoUmVhZCk6IENoYW5nZSB0aGUgaW1wbGVtZW50YXRpb24gdG8gc3VwcG9ydCB1bmljb2RlIGNoYXJhY3RlcnMuIEl0IGlzCglub3QgcG9zc2libGUgdG8gdXNlIHN0cmxlbigpIG9uIFdpbmRvd3MgYXMgdGhpcyB2ZXJzaW9uIHN1cHBvcnRzIG9ubHkKCXN0YW5kYXJkIEFTQ0lJIGNoYXJhY3RlcnMuIFNvIHRoZSBsZW5ndGggb2YgdGhlIGRpcmVjdG9yeSBlbnRyeSBpcyBub3cKCXJldHVybmVkIGZyb20gdGhlIGltcG9ydGVkIF9fZ25hdF9yZWFkZGlyIHJvdXRpbmUuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCgkqIHMtY3J0bC12bXM2NC5hZHMsIHMtY3J0bC5hZHM6IChjbG9zZWRpcik6IE1vdmVkIHRvIGFkYWludC5jLgoJKG9wZW5kaXIpOiBNb3ZlZCB0byBhZGFpbnQuYy4KCgkqIGctb3NfbGliLmFkYiAoQ29weV9UaW1lX1N0YW1wKTogRml4IG9mZi1ieS1vbmUgcmFuZ2UgY29tcHV0YXRpb24uCgkoR2V0X0RpcmVjdG9yeSk6IEZpeCB3cm9uZyBpbmRleGluZy4KCShHZXRlbnYpOiByZXBsYWNlIF9fZ25hdF9nZXRfZW52X3ZhbHVlX3B0ciBmcm9tIGFkYWludC5jIGJ5CglfX2duYXRfZ2V0ZW52IGZyb20gZW52LmMKCShTZXRlbnYpOiByZXBsYWNlIF9fZ25hdF9zZXRfZW52X3ZhbHVlIGZyb20gYWRhaW50LmMgYnkgX19nbmF0X3NldGVudgoJZnJvbSBlbnYuYwoKCSogZW52LmgsIGVudi5jOiBOZXcgZmlsZS4KCgkqIHMtc2NhdmFsLmFkYiAoSW5pdGlhbGl6ZSk6IFJlcGxhY2UgX19nbmF0X2dldF9lbnZfdmFsdWVfcHRyIGZyb20KCWFkYWludC5jIGJ5IF9fZ25hdF9nZXRlbnYgZnJvbSBlbnYuYwoKCSogcy1zaGFzdG8uYWRiIChJbml0aWFsaXplKTogcmVwbGFjZSBfX2duYXRfZ2V0X2Vudl92YWx1ZV9wdHIgZnJvbQoJYWRhaW50LmMgYnkgX19nbmF0X2dldGVudiBmcm9tIGVudi5jCgoJKiBNYWtlLWxhbmcuaW46IEFkZCBlbnYubyBpbiB0aGUgbGlzdCBvZiBDIG9iamVjdCBuZWVkZWQgYnkgZ25hdDEKCWFuZCBnbmF0YmluZC4KCVVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDA2LTAyLTEzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGFkYS10cmVlLmg6IChUWVBFX1VOQ0hFQ0tFRF9VTklPTl9QKTogRGVsZXRlZC4KCQoJKiBnaWdpLmggKHZhbHVlX2ZhY3Rvcl9wKTogQWRkIHByb3RvdHlwZSBhbmQgZGVzY3JpcHRpb24sIG5vdyBwdWJsaWMuCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2ZpZWxkKTogRG9uJ3QgYXR0ZW1wdCBCTEttb2RlIHRvIGludGVncmFsIHR5cGUKCXByb21vdGlvbiBmb3IgZmllbGQgd2l0aCByZXAgY2xhdXNlIGlmIHRoZSBhc3NvY2lhdGVkIHNpemUgd2FzIHByb3ZlbgoJdG8gYmUgaW4gZXJyb3IuCglFeHBhbmQgY29tbWVudHMgZGVzY3JpYmluZyBhdHRlbXB0cyB0byB1c2UgYSBwYWNrYWJsZSB0eXBlLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfU2lnbmVkX0ludGVnZXJfU3VidHlwZSwKCUVfRmxvYXRpbmdfUG9pbnRfU3VidHlwZT46IEluaGVyaXQgYWxpYXMgc2V0IG9mIHdoYXQgd2UgYXJlIG1ha2luZyBhCglzdWJ0eXBlIG9mIHRvIGVuc3VyZSBjb25mbGljdHMgYW1vbmdzdCBhbGwgc3VidHlwZXMgaW4gYSBoaWVyYXJjaHksCgluZWNlc3Nhcnkgc2luY2UgdGhlc2UgYXJlIG5vdCBkaWZmZXJlbnQgdHlwZXMgYW5kIHBvaW50ZXJzIG1heQoJYWN0dWFsbHkgZGVzaWduYXRlIGFueSBzdWJ0eXBlIGluIHRoaXMgaGllcmFyY2h5LgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX1JlY29yZF9UeXBlKTogQWx3YXlzIG1ha2UgZmllbGRzIGZvcgoJZGlzY3JpbWluYW50cyBidXQgcHV0IHRoZW0gaW50byByZWNvcmQgb25seSBpZiBub3QgVW5jaGVja2VkX1VuaW9uOwoJcGFzcyBmbGFnIHRvIGNvbXBvbmVudHNfdG9fcmVjb3JkIHNob3dpbmcgVW5jaGVja2VkX1VuaW9uLgoJKG1ha2VfZHVtbXlfdHlwZSk6IFVzZSBVTklPTl9UWVBFIG9ubHkgaWYgVW5jaGVja2VkX1VuaW9uIGFuZCBubwoJY29tcG9uZW50cyBiZWZvcmUgdmFyaWFudHM7IGRvbid0IHNldCBUWVBFX1VOQ0hFQ0tFRF9VTklPTl9QLgoJKGNvbXBvbmVudHNfdG9fcmVjb3JkKTogTmV3IGFyZ3VtZW50IFVOQ0hFQ0tFRF9VTklPTi4KCVJlbW92ZSBzcGVjaWFsIGNhc2UgY29kZSBmb3IgVW5jaGVja2VkX1VuaW9uIGFuZCBpbnN0ZWFkIHVzZSBtYWluIGNvZGUKCXdpdGggc21hbGwgY2hhbmdlcy4KCglQUiBhZGEvMjYwOTYKCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogRG8gbm90IGluaXRpYWxpemUgdGhlIGFsaWduaW5nCgl2YXJpYWJsZSB3aXRoIHRoZSBleHByZXNzaW9uIGJlaW5nIGJ1aWx0LCBvbmx5IGl0cyBpbm5lciBmaWVsZC4KCgkqIHRyYW5zLmMgKEhhbmRsZWRfU2VxdWVuY2VfT2ZfU3RhdGVtZW50c190b19nbnUpOiBSZW1vdmUgY2FsbCB0bwoJZW1pdF9zZXF1ZW5jZV9lbnRyeV9zdGF0ZW1lbnRzLgoJKGVtaXRfc2VxdWVuY2VfZW50cnlfc3RhdGVtZW50cywgYm9keV93aXRoX2hhbmRsZXJzX3ApOiBEZWxldGUuCgkoZXN0YWJsaXNoX2duYXRfdm1zX2NvbmRpdGlvbl9oYW5kbGVyKTogTW92ZSBiZWZvcmUKCVN1YnByb2dyYW1fQm9keV90b19nbnUuCgkoU3VicHJvZ3JhbV9Cb2R5X3RvX2dudSk6IE9uIFZNUywgZXN0YWJsaXNoX2duYXRfdm1zX2NvbmRpdGlvbl9oYW5kbGVyCglmb3IgYSBzdWJwcm9ncmFtIGlmIGl0IGhhcyBhIGZvcmVpZ24gY29udmVudGlvbiBvciBpcyBleHBvcnRlZC4KCShJZGVudGlmaWVyX3RvX2dudSk6IE1hbnVhbGx5IHVuc2hhcmUgdGhlIERFQ0xfSU5JVElBTCB0cmVlIHdoZW4gaXQgaXMKCXN1YnN0aXR1dGVkIGZvciBhIENPTlNUX0RFQ0wuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9BZ2dyZWdhdGUpOiBSZW1vdmUgY29kZSBmb3IgVU5JT05fVFlQRSBhbmQgcGFzcwoJRXR5cGUgdG8gYXNzb2NfdG9fY29uc3RydWN0b3IuCgkoYXNzb2NfdG9fY29uc3RydWN0b3IpOiBOZXcgYXJndW1lbnQsIEdOQVRfRU5USVRZOyB1c2UgaXQgdG8gaWdub3JlCglkaXNjcmltaW5hbnRzIG9mIFVuY2hlY2tlZF9Vbmlvbi4KCShUQVJHRVRfQUJJX09QRU5fVk1TKTogRGVmaW5lIHRvIDAgaWYgbm90IGRlZmluZWQsIHNvIHRoYXQgbGF0ZXIgdXNlcwoJZG9uJ3QgbmVlZCBjbHV0dGVyaW5nIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLgoJKGVzdGFibGlzaF9nbmF0X3Ztc19jb25kaXRpb25faGFuZGxlcik6IE5ldyBmdW5jdGlvbi4gRXN0YWJsaXNoIHRoZSBHTkFUCgljb25kaXRpb24gaGFuZGxlciBhcyBjdXJyZW50IGluIHRoZSBjb21waWxlZCBmdW5jdGlvbi4KCShib2R5X3dpdGhfaGFuZGxlcnNfcCk6IE5ldyBmdW5jdGlvbi4gVGVsbCB3aGV0aGVyIGEgZ2l2ZW4gc2VxdWVuY2Ugb2YKCXN0YXRlbWVudHMgbm9kZSBpcyBhdHRhY2hlZCB0byBhIHBhY2thZ2Ugb3Igc3VicHJvZ3JhbSBib2R5IGFuZCBpbnZvbHZlcwoJZXhjZXB0aW9uIGhhbmRsZXJzIHBvc3NpYmx5IG5lc3RlZCB3aXRoaW4gaW5uZXIgYmxvY2sgc3RhdGVtZW50cy4KCShlbWl0X3NlcXVlbmNlX2VudHJ5X3N0YXRlbWVudHMpOiBOZXcgZnVuY3Rpb24sIHRvIGVtaXQgc3BlY2lhbAoJc3RhdGVtZW50cyBvbiBlbnRyeSBvZiBzZXF1ZW5jZXMgd2hlbiBuZWNlc3NhcnkuIEVzdGFibGlzaCBHTkFUCgljb25kaXRpb24gaGFuZGxlciBpbiB0aGUgcHJvcGVyIGNhc2VzIGZvciBWTVMuCgkoSGFuZGxlZF9TZXF1ZW5jZV9PZl9TdGF0ZW1lbnRzX3RvX2dudSk6IFN0YXJ0IGJsb2NrIGNvZGUgd2l0aAoJZW1pdF9zZXF1ZW5jZV9lbnRyeV9zdGF0ZW1lbnRzLgoKCSogdXRpbHMyLmMgKGZpbmRfY29tbW9uX3R5cGUpOiBJZiBib3RoIGlucHV0IHR5cGVzIGFyZSBCTEttb2RlIGFuZAoJaGF2ZSBhIGNvbnN0YW50IHNpemUsIHVzZSB0aGUgc21hbGxlciBvbmUuCgkoYnVpbGRfc2ltcGxlX2NvbXBvbmVudF9yZWYpOiBBbHNvIG1hdGNoIGlmIEZJRUxEIGFuZCBORVdfRklFTEQgYXJlCgl0aGUgc2FtZS4KCgkqIHV0aWxzLmMgKHZhbHVlX2ZhY3Rvcl9wKTogTWFrZSBwdWJsaWMsIHRvIGFsbG93IHVzZXMgZnJvbSBvdGhlciBnaWdpCgl1bml0cy4KCShjcmVhdGVfdHlwZV9kZWNsKTogRG8gbm90IHNldCB0aGUgZmxhZyBERUNMX0lHTk9SRURfUCBmb3IgZHVtbXkgdHlwZXMuCgkoY29udmVydCwgY2FzZSBVTklPTl9UWVBFKTogUmVtb3ZlIHNwZWNpYWwgdHJlYXRtZW50IGZvciB1bmNoZWNrZWQKCXVuaW9ucy4KCglQUiBhZGEvMTg2NTkKCSh1cGRhdGVfcG9pbnRlcl90byk6IFVwZGF0ZSB2YXJpYW50cyBvZiBwb2ludGVyIHR5cGVzIHRvIHVuY29uc3RyYWluZWQKCWFycmF5cyBieSBhdHRhY2hpbmcgdGhlIGxpc3Qgb2YgZmllbGRzIG9mIHRoZSBtYWluIHZhcmlhbnQuCgoyMDA2LTAyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLWV4ZXhwci5hZGIsIGEtZXhleHByLWdjYy5hZGIKCShQcm9jZXNzX1JhaXNlX0V4Y2VwdGlvbik6IFJlbW92ZWQsIG1lcmdlZCB3aXRoIFByb3BhZ2F0ZV9FeGNlcHRpb24uCgkoUHJvcGFnYXRlX0V4Y2VwdGlvbik6IE5vdyB0YWtlIGV4dHJhIEZyb21fU2lnbmFsX0hhbmRsZXIgcGFyYW1ldGVyLgoJUmVtb3ZlIGNvZGUgdW51c2VkIGZvciBleGNlcHRpb24gcHJvcGFnYXRpb24gZm9yIHRoZSBjb21waWxlciBpdHNlbGYKIAlmcm9tIGEtZXhjZXB0LmFkYiBhbmQgdXBkYXRlIHRvIHN0aWxsIHNoYXJlIHNlcGFyYXRlIHBhY2thZ2VzLgoKCSogYS1leGNlcHQuYWRzLCBhLWV4Y2VwdC5hZGI6IERpdHRvLgoJQWRkIGNvbW1lbnRzIHRoYXQgdGhpcyB2ZXJzaW9uIGlzIG5vdyB1c2VkIG9ubHkgYnkgdGhlIGNvbXBpbGVyIGFuZAoJb3RoZXIgYmFzaWMgdG9vbHMuIFRoZSBmdWxsIHZlcnNpb24gdGhhdCBpbmNsdWRlcyB0aGUgQWRhIDIwMDUgc3R1ZmYKCWlzIGluIHNlcGFyYXRlIGZpbGVzIGEtZXhjZXB0LTIwMDUuYWRzL2FkYi4gVGhlIHJlYXNvbiBpcyB0aGF0IHdlIGRvCglub3Qgd2FudCB0byBjYXVzZSBib290c3RyYXAgcHJvYmxlbXMgd2l0aCBjb21waWxlcnMgbm90IHJlY29nbml6aW5nCglXaWRlX1dpZGVfU3RyaW5nLgoJQWRkIGV4Y2VwdGlvbiByZWFzb24gY29kZSBQRV9JbXBsaWNpdF9SZXR1cm4KCUFkZCBuZXcgZXhjZXB0aW9uIHJlYXNvbiBjb2RlIChOdWxsIEV4Y2VwdGlvbl9JZCkKCgkqIGEtZXhjZXB0LTIwMDUuYWRiLCBhLWV4Y2VwdC0yMDA1LmFkczogTmV3IGZpbGVzLgoKCSogcy13Y2hjb24uYWRzOiAoR2V0X1dDX0VuY29kaW5nX01ldGhvZCk6IE5ldyBmdW5jdGlvbi4KCgkqIHMtd2NoY29uLmFkYjogTmV3IGZpbGUuCgoJKiBNYWtlZmlsZS5pbiAoTElCR05BVF9TUkNTKTogQWRkIHRiLWdjYy5jLgoJKHRyYWNlYmFjay5vIGRlcHMpOiBMaWtld2lzZS4KCShTUEFSQy9Tb2xhcmlzKTogQWNjZXB0IHNwYXJjWzY0fHY5XS1zdW4tc29sYXJpcy4KCUFjdGl2YXRlIGJ1aWxkIG9mIEdNRU0gaW5zdHJ1bWVudGF0aW9uIGxpYnJhcnkgb24gVk1TIHRhcmdldHMuCgkoZ25hdGxpYi1zamxqLCBnbmF0bGliLXpjeCk6IFBhc3MgRUhfTUVDSEFOSVNNIHRvIG1ha2UgZ25hdGxpYi4KCVVzZSBhLWV4Y2VwdC0yMDA1LmFkcy9hZGIgZm9yIGFsbCBydW4tdGltZSBsaWJyYXJ5IGJ1aWxkcyB1bmxlc3MKCXNwZWNpZmllZCBvdGhlcndpc2UuCglbVk1TXSAoTElCR05BVF9UQVJHRVRfUEFJUlNfQVVYMSwyKTogUmVuYW1lIHMtcGFyYW1lLXZtcy5hZHMgdG8KCXMtcGFyYW1lLXZtcy1hbHBoYS5hZHMgYW5kIGFkZCBzLXBhcmFtZS12bXMtaWE2NC5hZHMuCglVc2Ugcy1wYXJhbWUuYWRiIG9uIGFsbCBuYXRpdmUgcGxhdGZvcm1zLgoJVXNlIHMtcGFyYW1lLXZ4d29ya3MuYWRiIG9uIGFsbCB2eHdvcmtzIHBsYXRmb3Jtcy4KCUFkZCBlbnYuYyBlbnYuaCBpbiBMSUJHTkFUX1NSQ1MKCUFkZCBlbnYubyBpbiBMSUJHTkFUX09CSlMKCShHTkFUTUFLRV9PQkpTKTogUmVtb3ZlIGN0cmxfYy5vIG9iamVjdC4KCShMSUJHTkFUX1RBUkdFVF9QQUlSUyBmb3IgeDg2LXZ4d29ya3MpOiBVc2UgYW4gc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZgoJcy1vc2ludGUuYWRiLCBzLXRwb3BzcC5hZGIsIGFuZCBzeXN0ZW0uYWRzIGZvciB0aGUgcnVuIHRpbWUgdGhhdAoJc3VwcG9ydHMgVnhXb3JrcyA2IFJUUHMuCgkoRVhUUkFfR05BVFJUTF9OT05UQVNLSU5HX09CSlMgZm9yIHg4Ni12eHdvcmtzKTogUmVtb3ZlIHRoZSB1c2Ugb2YKCWktdnh3b3JrcyBhbmQgaS12eHdvaW8gZnJvbSB0aGUgcnVuIHRpbWUgdGhhdCBzdXBwb3J0cyBWeFdvcmtzIDYgUlRQcy4KCgkqIHR5cGVzLmgsIHR5cGVzLmFkcyAoVGVybWluYXRlX1Byb2dyYW0pOiBOZXcgZXhjZXB0aW9uCglBZGQgY29tbWVudCBvbiBtb2RpZnlpbmcgbXVsdGlwbGUgdmVyc2lvbnMgb2YgYS1leGNlcHQuYWRiIHdoZW4gdGhlCgl0YWJsZSBvZiBleGNlcHRpb24gcmVhc29ucyBpcyBtb2RpZmllZC4KCUFkZCBleGNlcHRpb24gcmVhc29uIGNvZGUgUEVfSW1wbGljaXRfUmV0dXJuCglBZGQgbmV3IGV4Y2VwdGlvbiByZWFzb24gY29kZSAoTnVsbCBFeGNlcHRpb25fSWQpCgoJKiBjbGVhbi5hZGIgKEluaXRpYWxpemUpOiBHZXQgdGhlIHRhcmdldCBwYXJhbWV0ZXJzIGJlZm9yZSBjaGVja2luZwoJaWYgdGFyZ2V0IGlzIE9wZW5WTVMuIE1vdmUgdGhlIE9wZW5WTVMgc3BlY2lmaWMgY29kZSBoZXJlIGZyb20gcGFja2FnZQoJYm9keSBlbGFib3JhdGlvbiBjb2RlLgoKMjAwNi0wMi0xMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGFsaS11dGlsLmFkYiAoR2V0X0ZpbGVfQ2hlY2tzdW0pOiBVcGRhdGUgdG8gYWNjb3VudCBmb3IgY2hhbmdlIGluCglwcm9maWxlIG9mIEluaXRpYWxpemVfU2Nhbm5lci4KCgkqIGdwcmVwLmFkYiAoR25hdHByZXApOiBVcGRhdGUgdG8gYWNjb3VudCBmb3IgY2hhbmdlIGluIHByb2ZpbGUgb2YKCUluaXRpYWxpemVfU2Nhbm5lci4KCShQcm9jZXNzX09uZV9GaWxlKTogU2FtZS4KCgkqIGxpYi5hZGIgKEdldF9Db2RlX09yX1NvdXJjZV9Vbml0KTogTmV3IHN1YnByb2dyYW0gZmFjdG9yaW5nIHRoZQoJY29tbW9uIGNvZGUgYmV0d2VlbiBHZXRfQ29kZV9Vbml0IGFuZCBHZXRfU291cmNlX1VuaXQuIFJlaW1wbGVtZW50Cgl0aGF0IGJlaGF2aW91ciB1c2luZyB0aGUgbmV3IFVuaXQgaW5mb3JtYXRpb24gcmVjb3JkZWQgaW4gdGhlIHNvdXJjZQoJZmlsZXMgdGFibGUsIHJhdGhlciB0aGFuIGdvaW5nIHRocm91Z2ggYWxsIHVuaXRzIGV2ZXJ5IHRpbWUuCgkoR2V0X0NvZGVfVW5pdCk6IFJlaW1wbGVtZW50IGluIHRlcm1zIG9mIEdldF9Db2RlX09yX1NvdXJjZV9Vbml0LgoJKEdldF9Tb3VyY2VfVW5pdCk6IFNhbWUuCgoJKiBwcmVwY29tcC5hZGIgKFBhcnNlX1ByZXByb2Nlc3NpbmdfRGF0YV9GaWxlKTogVXBkYXRlIHRvIGFjY291bnQgZm9yCgljaGFuZ2UgaW4gcHJvZmlsZSBvZiBJbml0aWFsaXplX1NjYW5uZXIuCgkoUHJlcGFyZV9Ub19QcmVwcm9jZXNzKTogU2FtZS4KCgkqIGxpYi5hZHM6IEZpeCB0eXBvIGluIGNvbW1lbnQgKHRlbXBsYWNlIC0+IHRlbXBsYXRlKS4KCgkqIHByai1wYXJ0LmFkYiAoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBVcGRhdGUgdG8gYWNjb3VudCBmb3IgY2hhbmdlIGluCglwcm9maWxlIG9mIEluaXRpYWxpemVfU2Nhbm5lci4KCgkqIHNjbi5hZGIgKEluaXRpYWxpemVfU2Nhbm5lcik6IEFjY291bnQgZm9yIGNoYW5nZSBpbiBwcm9maWxlIG9mCglTY25nLkluaXRpYWxpemVfU2Nhbm5lcjogc2V0IEN1cnJlbnRfU291cmNlX1VuaXQgaW4gU2NuIGluc3RlYWQgb2YgU2NuZy4KCUFsc28gcmVjb3JkIHRoZSBhc3NvY2lhdGlvbiBvZiB0aGUgZ2l2ZW4gU291cmNlX0ZpbGVfSW5kZXggdG8gdGhlCgljb3JyZXNwb25kaW5nIFVuaXRfTnVtYmVyX1R5cGUuCgoJKiBzY25nLmFkcywgc2NuZy5hZGIgKEluaXRpYWxpemVfU2Nhbm5lci5TZXRfUmVzZXJ2ZWQpOiBSZW1vdmUKCXByb2NlZHVyZS4KCShJbml0aWFsaXplX1NjYW5uZXIpOiBDYWxsIFNjYW5zLkluaXRpYWxpemVfQWRhX0tleXdvcmRzLgoJUmVtb3ZlIFVuaXQgZm9ybWFsIGZvciBnZW5lcmljIHNjYW5uZXI6IHRoaXMgZm9ybWFsCglpcyBvbmx5IHJlbGV2YW50IHRvIFNjbiAodGhlIHNjYW5uZXIgaW5zdGFuY2UgdXNlZCB0byBwYXJzZSBBZGEgc291cmNlCglmaWxlcyksIG5vdCB0byBvdGhlciBpbnN0YW5jZXMuIFVwZGF0ZSBjb21tZW50IGFjY29yZGluZ2x5LgoJKFNjYW4pOiBVc2UgbmV3IGZ1bmN0aW9uIFNuYW1lcy5Jc19LZXl3b3JkX05hbWUuCgoJKiBzaW5mby1jbi5hZGI6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoJKiBzaW5wdXQuYWRiIChVbml0LCBTZXRfVW5pdCk6IEFjY2Vzc29ycyBmb3IgbmV3IHNvdXJjZSBmaWxlIGF0dHJpYnV0ZQoJVW5pdC4KCgkqIHNpbnB1dC5hZHMgKFNvdXJjZV9GaWxlX1JlY29yZCk6IE5ldyBjb21wb25lbnQgVW5pdCwgdXNlZCB0byBjYXB0dXJlCgl0aGUgdW5pdCBpZGVudGlmaWVyIChpZiBhbnkpIGFzc29jaWF0ZWQgdG8gYSBzb3VyY2UgZmlsZS4KCgkqIHNpbnB1dC1jLmFkYiwgc2lucHV0LWwuYWRiIChMb2FkX0ZpbGUpOiBJbml0aWFsaXplIG5ldyBjb21wb25lbnQKCVVuaXQgaW4gU291cmNlX0ZpbGVfUmVjb3JkLgoKCSogc2lucHV0LXAuYWRiIChTb3VyY2VfRmlsZV9Jc19TdWJ1bml0KTogVXBkYXRlIHRvIGFjY291bnQgZm9yIGNoYW5nZQoJaW4gcHJvZmlsZSBvZiBJbml0aWFsaXplX1NjYW5uZXIuCgoJKiBzY2Fucy5hZGIgKEluaXRpYWxpemVfQWRhX0tleXdvcmRzKTogTmV3IHByb2NlZHVyZQoKCSogc2NhbnMuYWRzIChJbml0aWFsaXplX0FkYV9LZXl3b3Jkcyk6IE5ldyBwcm9jZWR1cmUgdG8gaW5pdGlhbGl6ZSB0aGUKCUFkYSBrZXl3b3JkcyBpbiB0aGUgTmFtZXQgdGFibGUsIHdpdGhvdXQgdGhlIG5lZWQgdG8gY2FsbAoJSW5pdGlhbGl6ZV9TY2FubmVyLgoKCSogc25hbWVzLmFkYjogQWRkIHByYWdtYSBBZGFfMjAwNSAoc3lub255bSBmb3IgQWRhXzA1KQoJKElzX0tleXdvcmRfTmFtZSk6IE5ldyBmdW5jdGlvbgoKCSogc25hbWVzLmFkczogQWRkIHN1YnR5cGUgQ29uZmlndXJhdGlvbl9QcmFnbWFfTmFtZXMKCUFkZCBwcmFnbWEgQWRhXzIwMDUgKHN5bm9ueW0gZm9yIEFkYV8wNSkKCShJc19LZXl3b3JkX05hbWUpOiBOZXcgZnVuY3Rpb24KCgkqIHNuYW1lcy5oOiBBZGQgcHJhZ21hIEFkYV8yMDA1IChzeW5vbnltIGZvciBBZGFfMDUpCgoyMDA2LTAyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBhLXN0d2lzdS5hZGIsIGEtc3Ryc3VwLmFkYiwgYS1zdHpzdXAuYWRiIChTdXBlcl9TbGljZSk6IEZpeCBzbGljZQoJaW5kZXguCgoJKiBhLXN0d2ltYS5hZGIgKFRvX1NldCk6IEFkZCBleHRyYSBjaGVjayB3aGVuIE4gPSAwLgoKCSogZy1yZWdwYXQuYWRiOiAoTWF0Y2hfU2ltcGxlX09wZXJhdG9yKTogQXZvaWQgcG9zc2libGUgb3ZlcmZsb3cuCgoyMDA2LTAyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXBhcmFtZS1taW5ndy5hZGIsIHMtcGFyYW1lLWxpbnV4LmFkYiwKCXMtcGFyYW1lLXNvbGFyaXMuYWRiOiBSZW1vdmVkLCByZXBsYWNlZCBieSBzLXBhcmFtZS5hZGIKCgkqIHMtcGFyYW1lLXZ4d29ya3MuYWRzOiBGaXggdHlwby4KCgkqIHMtcGFyYW1lLXZ4d29ya3MuYWRiOiBOZXcgZmlsZS4KCgkqIHMtcGFyYW1lLmFkYjogVmVyc2lvbiBub3cgdXNlZCBieSBhbGwgbmF0aXZlIHBsYXRmb3Jtcy4KCShEZWZhdWx0X1N0YWNrX1NpemUpOiBVc2UgMiBtZWdzIGZvciBkZWZhdWx0IHN0YWNrIHNpemUgYW5kIHVzZQoJX19nbF9kZWZhdWx0X3N0YWNrX3NpemUgd2hlbiBhdmFpbGFibGUuCgkoTWluaW11bV9TdGFja19TaXplKTogVXNlIDEySy4KCgkqIHMtdGFwcm9wLW1pbmd3LmFkYjogU2V0IGRlZmF1bHQgc3RhY2sgc2l6ZSBsaW5rZXIgc3dpdGNoIHRvIDJtZWdzLgoJKENyZWF0ZV9UYXNrKTogUmVmaW5lIGltcGxlbWVudGF0aW9uIHRha2luZyBhZHZhbnRhZ2Ugb2YgdGhlIFhQIHN0YWNrCglzaXplIHN1cHBvcnQuIE9uIFhQLCB3ZSBub3cgY3JlYXRlIHRoZSB0aHJlYWQgdXNpbmcgdGhlIGZsYWcKCVNUQUNLX1NJWkVfUEFSQU1fSVNfQV9SRVNFUlZBVElPTi4KCgkqIHMtb3NpbnRlLW1pbmd3LmFkcyAoU3RhY2tfU2l6ZV9QYXJhbV9Jc19BX1Jlc2VydmF0aW9uKTogTmV3IGNvbnN0YW50LgoKCSogc3lzZGVwLmMgKF9fZ25hdF9pc193aW5kb3dzX3hwKTogTmV3IHJvdXRpbmUsIHJldHVybnMgMSBvbiBXaW5kb3dzCglYUCBhbmQgMCBvbiBvbGRlciBXaW5kb3dzIHZlcnNpb25zLgoKCSogaW50ZXJmYWMtdm1zLmFkczogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgoyMDA2LTAyLTEzICBNYXR0aGV3IEhlYW5leSAgPGhlYW5leUBhZGFjb3JlLmNvbT4KCgkqIGEtcmJ0Z3NvLmFkYiwgYS1jcmJ0Z28uYWRiLCBhLWNyYnRnay5hZGIsIGEtY29vcnNlLmFkYiwgCglhLWNvaGFtYS5hZGIsIGEtY2lvcnNlLmFkYiwgYS1jaWhhbWEuYWRiLCBhLWNpaGFzZS5hZGIsIAoJYS1jb2hhc2UuYWRiOiBBbGwgZXhwbGljaXQgcmFpc2Ugc3RhdGVtZW50cyBub3cgaW5jbHVkZSBhbiBleGNlcHRpb24KCW1lc3NhZ2UuCgoJKiBhLWNpb3JtdS5hZHMsIGEtY2lvcm11LmFkYiwgYS1jb29ybXUuYWRzLCBhLWNvb3JtdS5hZGIKCShVcGRhdGVfRWxlbWVudF9QcmVzZXJ2aW5nX0tleSk6IHJlbmFtZWQgb3AgdG8ganVzdCBVcGRhdGVfRWxlbWVudC4KCUV4cGxpY2l0IHJhaXNlIHN0YXRlbWVudHMgbm93IGluY2x1ZGUgYW4gZXhjZXB0aW9uIG1lc3NhZ2UKCgkqIGEtY2loYXNlLmFkcywgYS1jb2hhc2UuYWRzOiBSZW1vdmVkIGNvbW1lbnQuCgoJKiBhLXN0Ym9oYS5hZHMsIGEtc3Rib2hhLmFkYiwgYS1zdGZpaGEuYWRzLCBhLWVudnZhci5hZGIsCglhLWVudnZhci5hZHMsIGEtc3did2hhLmFkcywgYS1zd2J3aGEuYWRiLCBhLXN3ZndoYS5hZHMsIGEtc3piemhhLmFkcywKCWEtc3piemhhLmFkYiwgYS1zemZ6aGEuYWRzOiBOZXcgZmlsZXMuCgoyMDA2LTAyLTEzICBNYXR0aGV3IEhlYW5leSAgPGhlYW5leUBhZGFjb3JlLmNvbT4KCgkqIGEtY2djYXNvLmFkYiwgYS1jZ2Fhc28uYWRiOiBJbXBsZW1lbnRlZCB1c2luZyBoZWFwc29ydCBpbnN0ZWFkIG9mCglxdWlja3NvcnQuCgoyMDA2LTAyLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogbGFuZy5vcHQ6IFd2YXJpYWRpYy1tYWNyb3M6IE5ldyBvcHRpb24uCglXb2xkLXN0eWxlLWRlZmluaXRpb246IExpa2V3aXNlLgoJV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZTogTGlrZXdpc2UuCgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IE5ldyBjYXNlcyBmb3IgLVd2YXJpYWRpYy1tYWNyb3MsCgktV29sZC1zdHlsZS1kZWZpbml0aW9uIGFuZCAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZS4KCjIwMDYtMDItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS10aWNvaW8uYWRzLCBhLXRpY29pby5hZGI6IEFkZCB1c2UgY2xhdXNlIChtb3ZlZCBoZXJlIGZyb20gc3BlYykKCgkqIGEtY290ZWlvLmFkcywgYS1sY3RlaW8uYWRzLCBhLWxsY3Rpby5hZHMsIGEtc2N0ZWlvLmFkczogTmV3IGZpbGVzLgoKMjAwNi0wMi0xMyAgTmljb2xhcyBSb2NoZSAgPHJvY2hlQGFkYWNvcmUuY29tPgoKCSogYS1lbnZ2YXIuYWRiLCBhLWVudnZhci5hZHM6IE5ldyBmaWxlcy4KCjIwMDYtMDItMTMgIERvdWdsYXMgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBzLXBhcmFtZS12bXMuYWRzOiBSZW5hbWVkIHRvIHMtcGFyYW1lLXZtcy1hbHBoYS5hZHMKCgkqIHMtcGFyYW1lLXZtcy1hbHBoYS5hZHMsIHMtcGFyYW1lLXZtcy1pYTY0LmFkczogTmV3IGZpbGVzLgoKMjAwNi0wMi0xMyAgUGF0IFJvZ2VycyAgPHJvZ2Vyc0BhZGFjb3JlLmNvbT4KCgkqIGEtcnR0aWV2LmFkYiwgYS1ydHRpZXYuYWRzOiBOZXcgZmlsZXMuCgoyMDA2LTAyLTEzICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogYS10aWJvaW8uYWRiLCBhLXRpYm9pby5hZHMsIGEtd3dib2lvLmFkYiwKCWEtd3dib2lvLmFkcywgYS16emJvaW8uYWRiLCBhLXp6Ym9pby5hZHM6ICBOZXcgZmlsZXMuCgoJKiBpbXB1bml0LmFkYiwgTWFrZWZpbGUucnRsOiBBZGRlZCBuZXcgQWRhIDIwMDUgdW5pdHMuCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHJ0c2ZpbmQuYWRiLCBleHBfcHJhZy5hZGIsIGxpYi13cml0LmFkYiwgcGFyLWxhYmwuYWRiLCAKCXNlbV9jYXNlLmFkYjogTWlub3IgY29kZSByZW9yZ2FuaXphdGlvbiAobm90IFByZXNlbnQgc2hvdWxkIGJlIE5vKQoKMjAwNi0wMi0xMyAgR2VlcnQgQm9zY2ggIDxib3NjaEBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBhLXRpZmlpby5hZGIgKFB1dF9EaWdpdHMpOiBUZXN0IExhc3QgYWdhaW5zdCBUbydGaXJzdCAtIDEgaW5zdGVhZCBvZgoJMCwgc2luY2UgdGhlIGxvd2VyIGJvdW5kIG9mIHRoZSBhY3R1YWwgc3RyaW5nIG1heSBiZSBncmVhdGVyIHRoYW4gb25lLgoKCVBSIGFkYS8yMDc1MwoJKiBhLXRpZmlpby5hZGIgKFB1dCk6IEZpeCBjb25kaXRpb24gdG8gcmFpc2UgTGF5b3V0X0Vycm9yIHdoZW4gaW52YWxpZAoJbGF5b3V0IGlzIHJlcXVlc3RlZC4KCjIwMDYtMDItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogYmFja19lbmQuYWRiIChTY2FuX0NvbXBpbGVyX0FyZ3VtZW50cyk6IENoZWNrIGlmCglTZWFyY2hfRGlyZWN0b3J5X1ByZXNlbnQgaXMgVHJ1ZSBhbmQsIGlmIGl0IGlzLCBhZGQgdGhlIGFyZ3VtZW50IGluCgl0aGUgc291cmNlIHNlYXJjaCBkaXJlY3RvcnkgcGF0aC4KCgkqIHN3aXRjaC1jLmFkYiAoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMpOiBBY2NlcHQgc3dpdGNoICItSSIuIFNldAoJU2VhcmNoX0RpcmVjdG9yeV9QcmVzZW50IHRvIFRydWUuCgoyMDA2LTAyLTEzICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlQGFkYWNvcmUuY29tPgoKCSogYmluZGdlbi5hZGIgKEdlbl9NYWluX0MpOiBkZWNsYXJlIHRoZSBlbnN1cmVfcmVmZXJlbmNlIHZhcmlhYmxlIGFzCgl2b2xhdGlsZSwgdG8gdGVsbCB0aGUgY29tcGlsZXIgdG8gcHJlc2VydmUgdGhpcyB2YXJpYWJsZSBhdCBhbnkgbGV2ZWwKCW9mIG9wdGltaXphdGlvbi4KCShHZW5fVmVyc2lvbnNfQWRhKTogVGVtcG9yYXJpbHkgd29yayBhcm91bmQgY29kZWdlbiBidWcuCgoyMDA2LTAyLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRsaW5rLmFkYiAoUHJvY2Vzc19CaW5kZXJfRmlsZSk6IElmIC1zaGFyZWQgaXMgc3BlY2lmaWVkLCBpbnZva2UKCWdjYyB0byBsaW5rIHdpdGggb3B0aW9uIC1zaGFyZWQtbGliZ2NjLgoJKEduYXRsaW5rKTogUmVtb3ZlIGR1cGxpY2F0ZSBzd2l0Y2hlcyAtc2hhcmVkLWxpYmdjYwoKMjAwNi0wMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnbmF0dnNuLmFkcyAoQ3VycmVudF9ZZWFyKTogTmV3IGNvbnN0YW50LCB1c2VkIHRvIGVhc2lseSB1cGRhdGUKCWNvcHlyaWdodCBvbiBhbGwgR05BVCB0b29scy4KCgkqIGduYXRscy5hZGIsIGduYXRuYW1lLmFkYiwgdm1zX2NvbnYuYWRiOiBBZGQgMjAwNiB0byBkaXNwbGF5ZWQKCWNvcHlyaWdodCBub3RpY2UuCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGVycm91dGMuYWRzLCBlcnJvdXRjLmFkYiAoU2V0X01lc3NhZ2VfQmxhbmspOiBEb24ndCBpbnNlcnQgc3BhY2UKCWFmdGVyIGh5cGhlbiAoc21hbGwgYWVzdGhldGljIGNoYW5nZSB1c2VmdWwgZm9yIGEgcmFuZ2Ugb2YgbnVtYmVycwoJdXNpbmcgXi1eLgoJU3VwcHJlc3MgcmFuZ2UgY2hlY2tzIGZvciBhIGNvdXBsZSBvZiBhc3NpZ25tZW50cyB3aGljaCBvdGhlcndpc2UKCWNhdXNlIHZhbGlkaXR5IGNoZWNrcyB3aXRoIHZhbGlkaXR5IGNoZWNraW5nIHR1cm5lZCBvbi4KCgkqIHNlbV9jaDEzLmFkYiAoQW5hbHl6ZV9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UsIGNhc2UgU2l6ZSk6CglJbXByb3ZlbWVudCBpbiBlcnJvciBtZXNzYWdlIGZvciBvYmplY3QuCgkoUmVwX0l0ZW1fVG9vX0xhdGUpOiBSZW1vdmUgJyEnIGluIHdhcm5pbmcgbWVzc2FnZS4KCjIwMDYtMDItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBlcnJfdmFycy5hZHM6IFN1cHByZXNzIHJhbmdlIGNoZWNrcyBmb3IgYSBjb3VwbGUgb2YgYXNzaWdubWVudHMKCXdoaWNoIG90aGVyd2lzZSBjYXVzZSB2YWxpZGl0eSBjaGVja3Mgd2l0aCB2YWxpZGl0eSBjaGVja2luZyB0dXJuZWQgb24uCglVcGRhdGUgY29tbWVudHMuCgoJKiBlcnJvdXQuYWRiIChFcnJvcl9Nc2dfSW50ZXJuYWwpOiBEbyBub3Qgc3VwcHJlc3Mgd2FybmluZyBtZXNzYWdlcy4KCU1ha2UgbWVzc2FnZSB1bmNvbmRpdGlvbmFsIGlmIGl0IGlzIGEgd2FybmluZy4KCShFcnJvcl9Nc2dfTkVMKTogQWx3YXlzIG91dHB1dCB3YXJuaW5nIG1lc3NhZ2VzLgoJU3VwcHJlc3MgcmFuZ2UgY2hlY2tzIGZvciBhIGNvdXBsZSBvZiBhc3NpZ25tZW50cyB3aGljaCBvdGhlcndpc2UKCWNhdXNlIHZhbGlkaXR5IGNoZWNrcyB3aXRoIHZhbGlkaXR5IGNoZWNraW5nIHR1cm5lZCBvbi4KCgkqIGVycm91dC5hZHMgKE1lc3NhZ2UgSW5zZXJ0aW9uIENoYXJhY3RlcnMpOiBEb2N1bWVudCB0aGF0ICchJyBpcwoJaW1wbGllZCBieSAnPycgaW4gZXJyb3IgbWVzc2FnZXMuCgoJKiBnbmF0MWRydi5hZGI6IChCYWRfQm9keSk6IFJlbW92ZSAnIScgaW4gd2FybmluZyBtZXNzYWdlLgoJKEduYXQxZHJ2KTogVXNlIGEgZ290byB0byBlbmQgb2YgbWFpbiBzdWJwcm9ncmFtIGluc3RlYWQgb2YKCUV4aXRfUHJvZ3JhbSAoRV9TdWNjZXNzKSBzbyB0aGF0IGZpbmFsaXphdGlvbiBjYW4gb2NjdXIgbm9ybWFsbHkuCgoyMDA2LTAyLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogcy1zdGNob3AuYWRiIChTdGFja19DaGVjayk6IFJhaXNlIFN0b3JhZ2VfRXJyb3IgaWYgdGhlIGFyZ3VtZW50IGhhcwoJd3JhcHBlZCBhcm91bmQuCgoyMDA2LTAyLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGEtZGlyZWN0LmFkYiAoRHVyYXRpb25fVG9fVGltZSwgT1NfVGltZV9Ub19Mb25nX0ludGVnZXIpOiBOZXcKCVVuY2hlY2tlZF9Db252ZXJzaW9uIGZ1bmN0aW9ucy4KCShNb2RpZmljYXRpb25fVGltZSk6IFVzZSBkaXJlY3QgY29udmVyc2lvbiBvZiBPU19UaW1lIHRvIENhbGVuZGFyIHRpbWUKCXdoZW4gT3BlblZNUyByZXR1cm5zIEZhbHNlLgoKCSogYS1kaXJ2YWwtbWluZ3cuYWRiLCBhLWRpcnZhbC12bXMuYWRiLCBhLWRpcnZhbC5hZHMsCglhLWRpcnZhbC5hZGIgKE9wZW5WTVMpOiBOZXcgQm9vbGVhbiBmdW5jdGlvbgoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBjaGVja3MuYWRiIChCdWlsZF9EaXNjcmltaW5hbnRfQ2hlY2tzKTogSWYgdGhlIGV4cHJlc3Npb24gYmVpbmcKCWNoZWNrcyBpcyBhbiBhZ2dyZWdhdGUgcmV0cmlldmUgdGhlIHZhbHVlcyBvZiBpdHMgZGlzY3JpbWluYW50cyB0bwoJZ2VuZXJhdGUgdGhlIGNoZWNrLCByYXRoZXIgdGhhbiBjcmVhdGluZyBhIHRlbXBvcmFyeSBhbmQgYSByZWZlcmVuY2UKCXRvIGl0LgoJKEFwcGx5X0FjY2Vzc19DaGVjayk6IFJld3JpdHRlbiB0byBoYW5kbGUgbmV3IElzX0tub3duX051bGwgZmxhZwoJKEluc3RhbGxfTnVsbF9FeGNsdWRpbmdfQ2hlY2spOiBEaXR0bwoJKFNlbGVjdGVkX0xlbmd0aF9DaGVja3MpOiBCdWlsZCBhY3R1YWwgc3VidHlwZSBmb3IgdGhlIG9yaWdpbmFsIENrX05vZGUsCglub3QgZm9yIHRoZSByZW5hbWVkIG9iamVjdCwgc28gdGhhdCB0aGUgYWN0dWFsIGl0eXBlIGlzIGF0dGFjaGVkIGluIHRoZQoJcHJvcGVyIGNvbnRleHQuCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGRlYnVnLmFkYjogRWxpbWluYXRlIG51bWVyaWMgc3dpdGNoZXMgZm9yIGJpbmRlci9nbmF0bWFrZQoKCSogc3dpdGNoLW0uYWRiIChOb3JtYWxpemVfQ29tcGlsZXJfU3dpdGNoZXMpOiBSZWNvcmQgbnVtZXJpYyBkZWJ1ZwoJc3dpdGNoZXMgZm9yIHRoZSBjb21waWxlci4KCShTY2FuX01ha2VfU3dpdGNoZXMpOiBEbyBub3QgYWxsb3cgbnVtZXJpYyBkZWJ1ZyBzd2l0Y2hlcyBmb3IgZ25hdG1ha2UKCShTY2FuX01ha2VfU3dpdGNoZXMpOiBXaGVuIGZhaWxpbmcgd2l0aCBhbiBpbGxlZ2FsIHN3aXRjaCwgb3V0cHV0IGFuCgllcnJvciBtZXNzYWdlIHdpdGggdGhlIGZ1bGwgc3dpdGNoLgoJRWxpbWluYXRlIG51bWVyaWMgc3dpdGNoZXMgZm9yIGJpbmRlci9nbmF0bWFrZQoKCSogc3dpdGNoLmFkcywgc3dpdGNoLmFkYiAoQmFkX1N3aXRjaCk6IE5ldyBwcm9jZWR1cmUKCgkqIHN3aXRjaC1iLmFkYiAoU2Nhbl9CaW5kZXJfU3dpdGNoZXMpOiBEbyBub3QgYWNjZXB0IGNvbWJpbmVkIHN3aXRjaGVzLgoJUmVtb3ZlIDAtOSBhcyBkZWJ1ZyBmbGFnIGNoYXJhY3RlciBwb3NzaWJpbGl0aWVzCgktZCBpcyBub3cgY29udHJvbGxpbmcgdGhlIHByaW1hcnkgc3RhY2sgc2l6ZSB3aGVuIGl0cyB2YWx1ZSBpcyBhCglwb3NpdGl2ZS4gQWxzbyBhZGQgY2hlY2tzIGFnYWluc3QgaW52YWxpZCB2YWx1ZXMsIGFuZCBzdXBwb3J0IGZvciBrYiwKCW1iLiBEaXR0byBmb3IgLUQgc3dpdGNoLgoKMjAwNi0wMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgU2VyZ3VlaSBSeWJpbiAgPHJ5YmluQGFkYWNvcmUuY29tPgoKCSogb3B0LmFkcyBvcHQuYWRiOiBBZGQgQWRhX1ZlcnNpb25fRXhwbGljaXRfQ29uZmlnIGFsb25nIHdpdGgKCXNhdmUvcmVzdG9yZSByb3V0aW5lcy4KCVByb3Blcmx5IGhhbmRsZSBBZGFfVmVyc2lvbl9FeHBsaWNpdCBhbmQgQWRhX1ZlcnNpb25fQ29uZmlnLCB3aGljaAoJd2VyZSBub3QgYWx3YXlzIHByb3Blcmx5IGhhbmRsZWQgcHJldmlvdXNseS4KCVNpbmNlIHdlIGFyZSBjaGFuZ2luZyB0aGUgdHJlZSBmb3JtYXQgYW55d2F5LCBhbHNvIGdldCByaWQgb2YgdGhlCglqdW5rIG9ic29sZXRlIEltbWVkaWF0ZV9FcnJvcnMgZmxhZy4KCShUcmVlX1JlYWQpOiBDaGFuZ2UgdGhlIHdheSBvZiByZWFkaW5nIFRyZWVfVmVyc2lvbl9TdHJpbmcgLSBub3cgd2UKCXJlYWQgdGhlIHZlcnNpb24gc3RyaW5nIGZyb20gdGhlIHRyZWUgZXZlbiBpZiBpdHMgbGVuZ3RoIGlzIG5vdCB0aGUKCXNhbWUgYXMgdGhlIGxlbmd0aCBvZiB0aGUgdmVyc2lvbiBzdHJpbmcgY29tcHV0ZWQgZnJvbSBHbmF0dnNuLgoJKFNlYXJjaF9EaXJlY3RvcnlfUHJlc2VudCk6IE5ldyBCb29sZWFuIGZsYWcgZm9yIHRoZSBjb21waWxlci4KCURlZmluZSBUcmVlX1ZlcnNpb25fU3RyaW5nIGFzIGEgZHluYW1pYyBzdHJpbmcuCgkoRGVmYXVsdF9TdGFja19TaXplKTogbmV3IHZhcmlhYmxlLCB1c2VkIHRvIGhhbmRsZSBzd2l0Y2ggLWQuCgoJKiBwYXItcHJhZy5hZGI6IAoJRm9yIHByYWdtYSBBZGFfMjAwNSwgcmVtb3ZlIHN0dWZmIGFib3V0IHNldHRpbmcgQWRhX1ZlcnNpb25fRXhwbGljaXQKCW9ubHkgZm9yIG1haW4gdW5pdC4KCUFkZCBwcmFnbWEgQWRhXzIwMDUgKHN5bm9ueW0gZm9yIEFkYV8wNSkKCVByb3Blcmx5IGhhbmRsZSBBZGFfVmVyc2lvbl9FeHBsaWNpdCBhbmQgQWRhX1ZlcnNpb25fQ29uZmlnLCB3aGljaAoJd2VyZSBub3QgYWx3YXlzIHByb3Blcmx5IGhhbmRsZWQgcHJldmlvdXNseS4KCgkqIGRpcmVjdGlvLmFkcywgaW9leGNlcHQuYWRzLCBzZXF1ZW5pby5hZHMsIHRleHRfaW8uYWRzOiBDaGFuZ2UKCWV4cGxpY2l0IEFkYV85NSB0byBBZGFfMjAwNS4KCjIwMDYtMDItMTMgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYiAoRmlyc3RfVGFnX0NvbXBvbmVudCk6IFByb3RlY3QgdGhlIGZyb250ZW5kCglhZ2FpbnN0IGVycm9ycyBpbiB0aGUgc291cmNlIHByb2dyYW06IGEgcHJpdmF0ZSB0eXBlcyBmb3Igd2hpY2ggdGhlCgljb3JyZXNwb25kaW5nIGZ1bGwgdHlwZSBkZWNsYXJhdGlvbiBpcyBtaXNzaW5nIGFuZCBwcmFnbWEgQ1BQX1ZpcnR1YWwKCWlzIHVzZWQuCgkoSXNfVW5jaGVja2VkX1VuaW9uKTogQ2hlY2sgZmxhZyBvbiBJbXBsZW1lbnRhdGlvbl9CYXNlX1R5cGUuCgkoSXNfS25vd25fTnVsbCk6IE5ldyBmbGFnCgkoSGFzX1ByYWdtYV9QdXJlKTogTmV3IGZsYWcKCShOb19SZXR1cm4pOiBQcmVzZW50IGluIGFsbCBlbnRpdGllcywgc2V0IG9ubHkgZm9yIHByb2NlZHVyZXMKCShJc19MaW1pdGVkX1R5cGUpOiBBIHR5cGUgd2hvc2UgYW5jZXN0b3IgaXMgYW4gaW50ZXJmYWNlIGlzIGxpbWl0ZWQgaWYKCWV4cGxpY2l0bHkgZGVjbGFyZWQgbGltaXRlZC4KCShEVF9PZmZzZXRfVG9fVG9wX0Z1bmMpOiBOZXcgYXR0cmlidXRlIHRoYXQgaXMgcHJlc2VudCBpbiBFX0NvbXBvbmVudAoJZW50aXRpZXMuIE9ubHkgdXNlZCBmb3IgY29tcG9uZW50IG1hcmtlZCBJc19UYWcuIElmIHByZXNlbnQgaXQgc3RvcmVzCgl0aGUgT2Zmc2V0X1RvX1RvcCBmdW5jdGlvbiB1c2VkIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZSBpbiB0YWdnZWQgdHlwZXMKCXdob3NlIGFuY2VzdG9yIGhhcyBkaXNjcmltaW5hbnRzLgoKCSogZXhwX2NoMi5hZGI6IFVwZGF0ZSBzdGF0dXMgb2YgbmV3IElzX0tub3duX051bGwgZmxhZwoKCSogc2VtX2NoNy5hZGI6IE1haW50YWluIHN0YXR1cyBvZiBuZXcgSXNfS25vd25fTnVsbCBmbGFnCgoJKiBzZW1fY2F0LmFkYiAoR2V0X0NhdGVnb3JpemF0aW9uKTogRG9uJ3QgdHJlYXQgZnVuY3Rpb24gYXMgUHVyZSBpbgoJdGhlIGNhdGVnb3JpemF0aW9uIHNlbnNlIGlmIElzX1B1cmUgd2FzIHNldCBieSBwcmFnbWEgUHVyZV9GdW5jdGlvbi4KCjIwMDYtMDItMTMgIFF1ZW50aW4gT2NoZW0gIDxvY2hlbUBhZGFjb3JlLmNvbT4KCSAgICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogYmluZHVzZy5hZGI6IFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgLWQgYW5kIC1EIHN3aXRjaGVzLgoKCSogcmFpc2UuaCAoX19nbmF0X3NldF9nbG9iYWxzKTogYWRkZWQgbmV3IHBhcmFtZXRlciBmb3IKCURlZmF1bHRfU3RhY2tfU2l6ZS4KCgkqIGluaXQuYyAoX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSkgPGFscGhhLXZtcyBjYXNlPjogSW1wbGVtZW50LgoJKF9fZ25hdF9oYW5kbGVfdm1zX2NvbmRpdGlvbik6IEFkanVzdCBjb250ZXh0IGJlZm9yZSByYWlzZS4KCShfX2duYXRfaW5zdGFsbF9oYW5kbGVyKTogUmVzdG9yZSB0aGUgZ2xvYmFsIHZlY3RvciBzZXR1cCBmb3IgR0NDCgl2ZXJzaW9ucyBiZWZvcmUgMy40LCBhcyB0aGUgZnJhbWUgYmFzZWQgY2lyY3R1aXRyeSBpcyBub3QgYXZhaWxhYmxlCglpbiB0aGlzIGNhc2UuCgkoX19nbmF0X3NldF9nbG9iYWxzKTogYWRkZWQgYSBwYXJhbWV0ZXIgZGVmYXVsdF9zdGFja19zaXplCgkoX19nbF9kZWZhdWx0X3N0YWNrX3NpemUpOiBuZXcgdmFyaWFibGUuCgoyMDA2LTAyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfYWdnci5hZGIgKEJ1aWxkX0FycmF5X0FnZ3JfQ29kZSk6IFJlbmFtZSB2YXJpYWJsZQoJIk90aGVyc19NYm94X1ByZXNlbnQiIHRvICJPdGhlcnNfQm94X1ByZXNlbnQiIGJlY2F1c2UgdGhlIG1ib3ggY29uY2VwdAoJZG9lcyBub3QgZXhpc3QgaW4gdGhlIEFkYSBSTS4KCShDb21wYXRpYmxlX0ludF9Cb3VuZHMpOiBEZXRlcm1pbmUgd2hldGhlciB0d28gaW50ZWdlciByYW5nZSBib3VuZHMKCWFyZSBvZiBlcXVhbCBsZW5ndGggYW5kIGhhdmUgdGhlIHNhbWUgc3RhcnQgYW5kIGVuZCB2YWx1ZXMuCgkoSXNfSW50X1JhbmdlX0JvdW5kcyk6IERldGVybWluZSB3aGV0aGVyIGEgbm9kZSBpcyBhbiBpbnRlZ2VyIHJhbmdlLgoJKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpOiBQZXJmb3JtIHByb3BlciBzbGlkaW5nIG9mIGEgbmVzdGVkIGFycmF5CglhZ2dyZWdhdGUgd2hlbiBpdCBpcyBwYXJ0IG9mIGFuIG9iamVjdCBkZWNsYXJhdGlvbi4KCShCdWlsZF9SZWNvcmRfQWdncl9Db2RlKSAgSWYgdGhlIGFnZ3JlZ2F0ZSB0dHlwZSBpcyBhIGRlcml2ZWQgdHlwZSB0aGF0Cgljb25zdHJhaW5zIGRpc2NyaW1pbmFudHMgb2YgaXRzIHBhcmVudCwgYWRkIGV4cGxpY2l0bHkgdGhlIGRpc2NyaW1pbmFudAoJY29uc3RyYWludHMgb2YgdGhlIGFuY2VzdG9yIGJ5IHJldHJpZXZpbmcgdGhlbSBmcm9tIHRoZQoJc3RvcmVkX2NvbnN0cmFpbnQgb2YgdGhlIHBhcmVudC4KCjIwMDYtMDItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX2F0dHIuYWRiIChFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlLCBjYXNlIE1lY2hhbmlzbV9Db2RlKTogSWYKCWF0dHJpYnV0ZSBNZWNoYW5pc21fQ29kZSBpcyBhcHBsaWVkIHRvIHJlbmFtZWQgc3VicHJvZ3JhbSwgbW9kaWZ5CglwcmVmaXggdG8gcG9pbnQgdG8gYmFzZSBzdWJwcm9ncmFtLgoJTWF4L01pbiBhdHRyaWJ1dGVzIG5vdyB2aW9sYXRlIFJlc3RyaWN0aW9uIE5vX0ltcGxpY2l0X0NvbmRpdGlvbmFscwoKCSogc2luZm8uYWRzOiBEb2N1bWVudCB0aGF0IE1lY2hhbmlzbV9Db2RlIGNhbm5vdCBiZSBhcHBsaWVkIHRvCglyZW5hbWVkIHN1YnByb2dyYW1zIHNvIHRoYXQgdGhlIGZyb250LWVuZCBtdXN0IHJlcGxhY2UgdGhlIHByZWZpeAoJYXBwcm9wcmlhdGVseS4KCjIwMDYtMDItMTMgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBleHBfY2gzLmFkYiAoQ29tcG9uZW50X05lZWRzX1NpbXBsZV9Jbml0aWFsaXphdGlvbik6IEFkZCBjaGVjayBmb3IKCWF2YWlsYWJpbGl0eSBvZiBSRV9JbnRlcmZhY2VfVGFnLgoJKEJ1aWxkX0luaXRpYWxpemF0aW9uX0NhbGwpOiBGaXggd3JvbmcgYWNjZXNzIHRvIHRoZSBkaXNjcmltaW5hbnQgdmFsdWUuCgkoRnJlZXplX1JlY29yZF9UeXBlKTogRG8gbm90IGdlbmVyYXRlIHRoZSB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoCgl0aW1lZCBhbmQgY29uZGl0aW9uYWwgZGlzcGF0Y2hpbmcgY2FsbHMgdGhyb3VnaCBzeW5jaHJvbml6ZWQKCWludGVyZmFjZXMgaWYgY29tcGlsaW5nIHVuZGVyIE5vX0Rpc3BhdGNoaW5nX0NhbGxzIHJlc3RyaWN0aW9uLgoJV2hlbiBjb21waWxpbmcgZm9yIEFkYSAyMDA1LCBmb3IgYSBub25hYnN0cmFjdAoJdHlwZSB3aXRoIGEgbnVsbCBleHRlbnNpb24sIGNhbGwgTWFrZV9Db250cm9sbGluZ19GdW5jdGlvbl9XcmFwcGVycwoJYW5kIGluc2VydCB0aGUgd3JhcHBlciBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgYW5kIGJvZGllcyAodGhlIGxhdHRlcgoJYmVpbmcgYXBwZW5kZWQgYXMgZnJlZXplIGFjdGlvbnMpLgoJKFByZWRlZmluZWRfUHJpbWl0aXZlX0JvZGllcyk6IERvIG5vdCBnZW5lcmF0ZSB0aGUgYm9kaWVzIG9mIHRoZQoJcHJlZGVmaW5lZCBwcmltaXRpdmVzIGFzc29jaWF0ZWQgd2l0aCB0aW1lZCBhbmQgY29uZGl0aW9uYWwKCWRpc3BhdGNoaW5nIGNhbGxzIHRocm91Z2ggc3luY2hyb25pemVkIGludGVyZmFjZXMgaWYgd2UgYXJlCgljb21waWxpbmcgdW5kZXIgTm9fRGlzcGF0Y2hpbmdfQ2FsbHMuCgkoQnVpbGRfSW5pdF9Qcm9jZWR1cmUpOiAgVXNlIFJURV9BdmFpbGFibGUgdG8gY2hlY2sgaWYgYSBydW4tdGltZQoJc2VydmljZSBpcyBhdmFpbGFibGUgYmVmb3JlIGdlbmVyYXRpbmcgYSBjYWxsLgoJKE1ha2VfQ29udHJvbGxpbmdfRnVuY3Rpb25fV3JhcHBlcnMpOiBOZXcgcHJvY2VkdXJlLgoJKEV4cGFuZF9OX0Z1bGxfVHlwZV9EZWNsYXJhdGlvbik6IENyZWF0ZSBhIGNsYXNzLXdpZGUgbWFzdGVyIGZvcgoJYWNjZXNzLXRvLWxpbWl0ZWQtaW50ZXJmYWNlcyBiZWNhdXNlIHRoZXkgY2FuIGJlIHVzZWQgdG8gcmVmZXJlbmNlCgl0YXNrcyB0aGF0IGltcGxlbWVudCBzdWNoIGxpbWl0ZWQgaW50ZXJmYWNlLgoJKEJ1aWxkX09mZnNldF9Ub19Ub3BfRnVuY3Rpb25zKTogQnVpbGQgdGhlIHRyZWUgY29ycmVzcG9uZGluZyB0byB0aGUKCXByb2NlZHVyZSBzcGVjIGFuZCBib2R5IG9mIHRoZSBPZmZzZXRfVG9fVG9wIGZ1bmN0aW9uIHRoYXQgaXMgZ2VuZXJhdGVkCgl3aGVuIHRoZSBwYXJlbnQgb2YgYSB0eXBlIHdpdGggZGlzY3JpbWluYW50cyBoYXMgc2Vjb25kYXJ5IGRpc3BhdGNoCgl0YWJsZXMuCgkoSW5pdF9TZWNvbmRhcnlfVGFncyk6IEhhbmRsZSB0aGUgY2FzZSBpbiB3aGljaCB0aGUgcGFyZW50IG9mIHRoZSB0eXBlCgljb250YWluaW5nIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZXMgaGFzIGRpc2NyaW1pbmFudHMgdG8gZ2VuZXJhdGUgdGhlCgljb3JyZWN0IGFyZ3VtZW50cyB0byBjYWxsIFNldF9PZmZzZXRfVG9fVG9wLgoJKEJ1aWxkX1JlY29yZF9Jbml0X1Byb2MpOiBBZGQgY2FsbCB0byBCdWlsZF9PZmZzZXRfVG9fVG9wX0Z1bmN0aW9ucy4KCgkqIGEtdGFncy5hZHMsIGEtdGFncy5hZGI6IChDaGVja19JbmRleCk6IFJlbW92ZWQuCglBZGQgV2lkZV9bV2lkZV9dRXhwYW5kZWRfTmFtZS4KCShHZXRfUHJlZGVmaW5lZF9QcmltX09wX0FkZHJlc3MpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IHByb3ZpZGVzIGV4YWN0bHkKCXRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkgb2YgR2V0X1ByaW1fT3BfQWRkcmVzcyBidXQgYXBwbGllZCB0byBwcmVkZWZpbmVkCglwcmltaXRpdmUgb3BlcmF0aW9ucyBiZWNhdXNlIHRoZSBwb2ludGVycyB0byB0aGUgcHJlZGVmaW5lZCBwcmltaXRpdmVzCglhcmUgbm93IHNhdmVkIGluIGEgc2VwYXJhdGUgdGFibGUuCgkoUGFyZW50X1NpemUpOiBNb2RpZmllZCB0byBnZXQgYWNjZXNzIHRvIHRoZSBzZXBhcmF0ZSB0YWJsZSBvZiBwcmltaXRpdmUKCW9wZXJhdGlvbnMgb3IgdGhlIHBhcmVudCB0eXBlLgoJKFNldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgcHJvdmlkZXMgdGhlIHNhbWUKCWZ1bmN0aW9uYWxpdHkgb2YgU2V0X1ByaW1fT3BfQWRkcmVzcyBidXQgYXBwbGllZCB0byBwcmVkZWZpbmVkIHByaW1pdGl2ZQoJb3BlcmF0aW9ucy4KCShTZXRfU2lnbmF0dXJlKTogTmV3IHN1YnByb2dyYW0gdXNlZCB0byBzdG9yZSB0aGUgc2lnbmF0dXJlIG9mIGEgRFQuCgkoRGlzcGxhY2UpOiBJZiB0aGUgT2Zmc2V0X1RvX1RvcCB2YWx1ZSBpcyBub3Qgc3RhdGljIHRoZW4gY2FsbCB0aGUKCWZ1bmN0aW9uIGdlbmVyYXRlZCBieSB0aGUgZXhwYW5kZXIgdG8gZ2V0IHN1Y2ggdmFsdWU7IG90aGVyd2lzZSB1c2UKCXRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIHRhYmxlIG9mIGludGVyZmFjZXMuCgkoT2Zmc2V0X1RvX1RvcCk6IFRoZSB0eXBlIG9mIHRoZSBhY3R1YWwgaGFzIGJlZW4gY2hhbmdlZCB0byBBZGRyZXNzIHRvCglnaXZlIHRoZSBjb3JyZWN0IHN1cHBvcnQgdG8gdGFnZ2VkIHR5cGVzIHdpdGggZGlzY3JpbWluYW50cy4gSW4gdGhpcwoJY2FzZSB0aGlzIHZhbHVlIGlzIHN0b3JlZCBqdXN0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB0YWcgZmllbGQuCgkoU2V0X09mZnNldF9Ub19Ub3ApOiBUd28gbmV3IGZvcm1hbHMgaGF2ZSBiZWVuIGFkZGVkIHRvIGluZGljYXRlIGlmIHRoZQoJb2Zmc2V0X3RvX3RvcCB2YWx1ZSBpcyBzdGF0aWMgYW5kIGhlbmNlIHBhc3MgdGhpcyB2YWx1ZSB0byB0aGUgcnVuLXRpbWUKCXRvIHN0b3JlIGl0IGluIHRoZSB0YWJsZSBvZiBpbnRlcmZhY2VzLCBvciBlbHNlIGlmIHRoaXMgdmFsdWUgaXMgZHluYW1pYwoJYW5kIHRoZW4gcGFzcyB0byB0aGUgcnVuLXRpbWUgdGhlIGFkZHJlc3Mgb2YgYSBmdW5jdGlvbiB0aGF0IGlzCglnZW5lcmF0ZWQgYnkgdGhlIGV4cGFuZGVyIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZSBmb3IgZWFjaCBvYmplY3Qgb2YgdGhlCgl0eXBlLgoKCSogcnRzZmluZC5hZHMgKERlZmF1bHRfUHJpbl9PcF9Db3VudCk6IFJlbW92ZWQuCgkoRGVmYXVsdF9QcmltX09wX0NvdW50KTogTmV3IGVudGl0eQoJKEdldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyk6IE5ldyBlbnRpdHkKCShTZXRfUHJlZGVmaW5lZF9QcmltX09wX0FkZHJlc3MpOiBOZXcgZW50aXR5CgkoUkVfU2V0X1NpZ25hdHVyZSk6IE5ldyBlbnRpdHkKCjIwMDYtMDItMTMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9BbGxvY2F0b3JfRXhwcmVzc2lvbik6IFBhc3MgQWxsb2NhdG9yID0+IFRydWUgdG8KCU1ha2VfQWRqdXN0X0NhbGwgZG9uZSBmb3IgYSBuZXdseS1hbGxvY2F0ZWQgb2JqZWN0LgoKCSogZXhwX2NoNy5hZHMsIGV4cF9jaDcuYWRiIChFeHBhbmRfQ2xlYW51cF9BY3Rpb25zKTogSWYgdGhlIHN0YXRlbWVudHMKCWluIGEgc3VicHJvZ3JhbSBhcmUgd3JhcHBlZCBpbiBhIGNsZWFudXAgYmxvY2ssIGluZGljYXRlIHRoYXQgdGhlCglzdWJwcm9ncmFtIGNvbnRhaW5zIGFuIGlubmVyIGJsb2NrIHdpdGggYW4gZXhjZXB0aW9uIGhhbmRsZXIuCgkoTWFrZV9BZGp1c3RfQ2FsbCk6IE5ldyBCb29sZWFuIGZvcm1hbCBBbGxvY2F0b3IgaW5kaWNhdGluZyB3aGV0aGVyIHRoZQoJQWRqdXN0IGNhbGwgaXMgZm9yIGEgbmV3bHktYWxsb2NhdGVkIG9iamVjdC4gSW4gdGhhdCBjYXNlIHdlIG11c3Qgbm90Cglhc3N1bWUgdGhhdCB0aGUgZmluYWxpemF0aW9uIGxpc3QgY2hhaW4gcG9pbnRlcnMgYXJlIGNvcnJlY3QgKHNpbmNlIHRoZXkKCWNvbWUgZnJvbSBhIGJpdC1mb3ItYml0IGNvcHkgb2YgdGhlIG9yaWdpbmFsIG9iamVjdCdzIHBvaW50ZXJzKSBzbyBpZgoJdGhlIGF0dGFjaCBsZXZlbCB3b3VsZCBvdGhlcndpc2UgYmUgemVybyAobm8gY2hhbmdlKSwgd2Ugc2V0IGl0IHRvIDQKCWluc3RlYWQgdG8gY2F1c2UgdGhlIHBvaW50ZXJzIHRvIGJlIHJlc2V0IHRvIG51bGwuCgoJKiBzLWZpbmltcC5hZGIgKEF0dGFjaF9Ub19GaW5hbF9MaXN0KTogTmV3IGF0dGFjaCBsZXZlbDogNCwgbWVhbmluZwoJcmVzZXQgY2hhaW4gcG9pbnRlcnMgdG8gbnVsbC4KCjIwMDYtMDItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfQXNzaWduX0FycmF5KTogSWYgdGhlIHJpZ2h0LWhhbmQgc2lkZSBpcyBhCglzdHJpbmcsIGFuZCB0aGUgY29udGV4dCByZXF1aXJlcyBhIGxvb3AgZm9yIHRoZSBhc3NpZ25tZW50IChlLmcuCgliZWNhdXNlIHRoZSBsZWZ0LWhhbmQgc2lkZSBpcyBwYWNrZWQpLCBnZW5lcmF0ZSBhIHVuaXF1ZSBuYW1lIGZvciB0aGUKCXRlbXBvcmFyeSB0aGF0IGhvbGRzIHRoZSBzdHJpbmcsIHRvIHByZXZlbnQgc3B1cmlvdXMgbmFtZSBjbGFzaGVzLgoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0lubGluZWRfQ2FsbCk6IEhhbmRsZSBjYWxscyB0byBmdW5jdGlvbnMgdGhhdAoJcmV0dXJuIHVuY29uc3RyYWluZWQgYXJyYXlzLgoJVXBkYXRlIGNvbW1lbnRzLgoJKEV4cGFuZF9DYWxsKTogIEFuIGluZGlyZWN0IGNhbGwgdGhyb3VnaCBhbiBhY2Nlc3MgcGFyYW1ldGVyIG9mIGEKCXByb3RlY3RlZCBvcGVyYXRpb24gaXMgbm90IGEgcHJvdGVjdGVkIGNhbGwuCglBZGQgY2lyY3VpdCB0byByYWlzZSBDRSBpbiBBZGEgMjAwNSBtb2RlIGZvbGxvd2luZyBjYWxsCgl0byBSYWlzZV9FeGNlcHRpb24uCgkoUmVnaXN0ZXJfRFRfRW50cnkpOiBEbyBub3RoaW5nIGlmCgl0aGUgcnVuLXRpbWUgZG9lcyBub3QgZ2l2ZSBzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZXMuCgkoRnJlZXplX1N1YnByb2dyYW0pOiBJbiBjYXNlIG9mIGRpc3BhdGNoaW5nIG9wZXJhdGlvbnMsIGRvIG5vdCBnZW5lcmF0ZQoJY29kZSB0byByZWdpc3RlciB0aGUgb3BlcmF0aW9uIGluIHRoZSBkaXNwYXRjaCB0YWJsZSBpZiB0aGUgc291cmNlCglpcyBjb21waWxlZCB3aXRoIE5vX0Rpc3BhdGNoaW5nX0NhbGxzLgoJKFJlZ2lzdGVyX1ByZWRlZmluZWRfRFRfRW50cnkpOiBHZW5lcmF0ZSBjb2RlIHRoYXQgY2FsbHMgdGhlIG5ldwoJcnVuLXRpbWUgc3VicHJvZ3JhbSBTZXRfUHJlZGVmaW5lZF9QcmltX09wX0FkZHJlc3MgaW5zdGVhZCBvZgoJU2V0X1ByaW1fT3BfQWRkcmVzcy4KCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0Fzc2lnbm1lbnRfU3RhdGVtZW50KTogRG8gbm90IGFwcGx5IGxlbmd0aCBjaGVja3MKCW9uIGFycmF5IGFzc2lnbm1lbnRzIGlmIHRoZSByaWdodC1oYW5kIHNpZGUgaXMgYSBmdW5jdGlvbiBjYWxsIHRoYXQgaGFzCgliZWVuIGlubGluZWQuIENoZWNrIGlzIHBlcmZvcm1lZCBvbiB0aGUgYXNzaWdubWVudCBpbiB0aGUgYmxvY2suCgkoUHJvY2Vzc19Cb3VuZHMpOiBJZiBib3VuZHMgYW5kIHJhbmdlIGFyZSBvdmVybG9hZGVkLCBhcHBseSBwcmVmZXJlbmNlCglydWxlIGZvciByb290IG9wZXJhdGlvbnMgdG8gZGlzYW1iaWd1YXRlLCBhbmQgZGlhZ25vc2UgdHJ1ZSBhbWJpZ3VpdHkuCgkoQW5hbHl6ZV9Bc3NpZ25tZW50KTogUHJvcGFnYXRlIHRoZSB0YWcgZm9yIGEgY2xhc3Mtd2lkZSBhc3NpZ25tZW50IHdpdGgKCWEgdGFnLWluZGV0ZXJtaW5hdGUgcmlnaHQtaGFuZCBzaWRlIGV2ZW4gd2hlbiBFeHBhbmRlcl9BY3RpdmUgaXMgVHJ1ZS4KCU5lZWRlZCB0byBlbnN1cmUgdGhhdCBkaXNwYXRjaGluZyBjYWxscyB0byBUJ0lucHV0IGFyZSBhbGxvd2VkIGFuZAoJZ2V0IHRoZSB0YWcgb2YgdGhlIHRhcmdldCBjbGFzcy13aWRlIG9iamVjdC4KCgkqIHNlbV9jaDYuYWRiIChOZXdfT3ZlcmxvYWRlZF9FbnRpdHkpOiBIYW5kbGUgZW50aXRpZXMgdGhhdCBvdmVycmlkZQoJYW4gaW5oZXJpdGVkIHByaW1pdGl2ZSBvcGVyYXRpb24gdGhhdCBhbHJlYWR5IG92ZXJyaWRlcyBzZXZlcmFsCglhYnN0cmFjdCBpbnRlcmZhY2UgcHJpbWl0aXZlcy4gRm9yIHRyYW5zaXRpdml0eSwgdGhlIG5ldyBlbnRpdHkgbXVzdAoJYWxzbyBvdmVycmlkZSBhbGwgdGhlIGFic3RyYWN0IGludGVyZmFjZSBwcmltaXRpdmVzIGNvdmVyZWQgYnkgdGhlCglpbmhlcml0ZWQgb3ZlcnJpZGVuIHByaW1pdGl2ZS4KCUVtaXQgd2FybmluZyBpZiBuZXcgZW50aXR5IGRpZmZlcnMgZnJvbSBob21vZ3JhcGggaW4gc2FtZSBzY29wZSBvbmx5IGluCgl0aGF0IG9uZSBoYXMgYW4gYWNjZXNzIHBhcmFtZXRlciBhbmQgdGhlIG90aGVyIG9uZSBoYXMgYSBwYXJhbWV0ZXIgb2YKCWEgZ2VuZXJhbCBhY2Nlc3MgdHlwZSB3aXRoIHRoZSBzYW1lIGRlc2lnbmF0ZWQgdHlwZSwgYXQgdGhlIHNhbWUKCXBvc2l0aW9uIGluIHRoZSBzaWduYXR1cmUuCgkoTWFrZV9JbmVxdWFsaXR5X09wZXJhdG9yKTogVXNlIHNvdXJjZSBsb2NhdGlvbnMgb2YgcGFyYW1ldGVycyBhbmQKCXN1YnR5cGUgbWFya3MgZnJvbSBjb3JyZXNwb25kaW5nIGVxdWFsaXR5IG9wZXJhdG9yIHdoZW4gY3JlYXRpbmcgdGhlCgl0cmVlIHN0cnVjdHVyZSBmb3IgdGhlIGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mICIvPSIuIFRoaXMgZG9lcyBub3QKCWNoYW5nZSBhbnl0aGluZyBpbiBiZWhhdmlvdXIgZXhjZXB0IHRoYXQgdGhlIGRlY29yYXRpb24gb2YgdGhlCgljb21wb25lbnRzIG9mIHRoZSBzdWJ0cmVlIGNyZWF0ZWQgZm9yICIvPSIgYWxsb3dzIEFTSVMgdG8gZ2V0IHRoZQoJc3RyaW5nIGltYWdlcyBvZiB0aGUgY29ycmVzcG9uZGluZyBpZGVudGlmaWVycy4KCShBbmFseXplX1JldHVybl9TdGF0ZW1lbnQpOiBSZW1vdmUgJyEnIGluIHdhcm5pbmcgbWVzc2FnZS4KCShDaGVja19TdGF0ZW1lbnRfU2VxdWVuY2UpOiBMaWtld2lzZS4KCShBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IEZvciBhbiBhY2Nlc3MgcGFyYW1ldGVyIHdob3NlIGRlc2lnbmF0ZWQgdHlwZQoJaXMgYW4gaW5jb21wbGV0ZSB0eXBlIGltcG9ydGVkIHRocm91Z2ggYSBsaW1pdGVkX3dpdGggY2xhdXNlLCB1c2UgdGhlCgl0eXBlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGZvcm1hbCBpbiB0aGUgYm9keS4KCShDaGVja19SZXR1cm5zKTogSW1wbGljaXQgcmV0dXJuIGluIE5vX1JldHVybiBwcm9jZWR1cmUgbm93IHJhaXNlcwoJUHJvZ3JhbV9FcnJvciB3aXRoIGEgY29tcGlsZSB0aW1lIHdhcm5pbmcsIGluc3RlYWQgb2YgYmVnaW5nIGlsbGVnYWwuCgkoSGFzX1NpbmdsZV9SZXR1cm4pOiAgRnVuY3Rpb24gcmV0dXJuaW5nIHVuY29uc3RyYWluZWQgdHlwZSBjYW5ub3QgYmUKCWlubGluZWQgaWYgZXhwcmVzc2lvbiBpbiB1bmlxdWUgcmV0dXJuIHN0YXRlbWVudCBpcyBub3QgYW4gaWRlbnRpZmllci4KCShCdWlsZF9Cb2R5X1RvX0lubGluZSk6IEl0IGlzIHBvc3NpYmxlIHRvIGlubGluZSBhIGZ1bmN0aW9uIGNhbGwgdGhhdAoJcmV0dXJucyBhbiB1bmNvbnN0cmFpbmVkIHR5cGUgaWYgYWxsIHJldHVybiBzdGF0ZW1lbnRzIGluIHRoZSBmdW5jdGlvbgoJcmV0dXJuIHRoZSBzYW1lIGxvY2FsIHZhcmlhYmxlLiBTdWJzaWRpYXJ5IHByb2NlZHVyZSBIYXNfU2luZ2xlX1JldHVybgoJdmVyaWZpZXMgdGhhdCB0aGUgYm9keSBjb25mb3JtcyB0byB0aGlzIHJlc3RyaWN0aW9uLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfRXF1YWxpdHlfT3ApOiBJZiB0aGUgb3BlcmFuZHMgZG8gbm90IGhhdmUgdGhlCglzYW1lIHR5cGUsIGFuZCAgb25lIG9mIHRoZW0gaXMgb2YgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlLCBjb252ZXJ0Cgl0aGUgb3RoZXIgb3BlcmFuZCB0byBpdCwgc28gdGhhdCB0aGlzIGlzIGEgdmFsaWQgYmluYXJ5IG9wZXJhdGlvbiBmb3IKCWdpZ2kuCgkoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBIYW5kbGUgc3VidHlwZXMgb2YgcHJvdGVjdGVkIHR5cGVzIGFuZAoJdGFzayB0eXBlcyB3aGVuIGFjY2Vzc2luZyB0byB0aGUgY29ycmVzcG9uZGluZyByZWNvcmQgdHlwZS4KCShSZXNvbHZlX0FsbG9jYXRvcik6IEFkZCAnXCcgaW4gMi1saW5lIHdhcm5pbmcgbWVzc2FnZS4KCVJlbW92ZSAnIScgaW4gd2FybmluZyBtZXNzYWdlLgoJKFJlc29sdmVfQ2FsbCk6IEFkZCAnXCcgaW4gMi1saW5lIHdhcm5pbmcgbWVzc2FnZS4KCShWYWxpZF9Db252ZXJzaW9uKTogTGlrZXdpc2UuCgkoUmVzb2x2ZV9PdmVybG9hZGVkX1NlbGVjdGVkX0NvbXBvbmVudCk6IElmIGRpc2FtYmlndWF0aW9uIHN1Y2NlZWRzLCB0aGUKCXJlc3VsdGluZyB0eXBlIG1heSBiZSBhbiBhY2Nlc3MgdHlwZSB3aXRoIGFuIGltcGxpY2l0IGRlcmVmZXJlbmNlLgoJT2J0YWluIHRoZSBwcm9wZXIgY29tcG9uZW50IGZyb20gdGhlIGRlc2lnbmF0ZWQgdHlwZS4KCShNYWtlX0NhbGxfSW50b19PcGVyYXRvcik6IEhhbmRsZSBwcm9wZXJseSBhIGNhbGwgdG8gcHJlZGVmaW5lZCBlcXVhbGl0eQoJZ2l2ZW4gYnkgYW4gZXhwYW5kZWQgbmFtZSB3aXRoIHByZWZpeCBTdGFuZGFyZCwgd2hlbiB0aGUgb3BlcmFuZHMgYXJlCglvZiBhbiBhbm9ueW1vdXMgYWNjZXNzIHR5cGUuCgkoQ2hlY2tfRnVsbHlfRGVjbGFyZWRfUHJlZml4KTogTmV3IHByb2NlZHVyZSwgc3Vic2lkaWFyeSBvZiBSZXNvbHZlXwoJRXhwbGljaXRfRGVyZWZlcmVuY2UgYW5kIFJlc29sdmVfU2VsZWN0ZWRfQ29tcG9uZW50LCB0byB2ZXJpZnkgdGhhdCB0aGUKCXByZWZpeCBvZiB0aGUgZXhwcmVzc2lvbiBpcyBub3Qgb2YgYW4gaW5jb21wbGV0ZSB0eXBlLiBBbGxvd3MgZnVsbAoJZGlhZ25vc2VzIG9mIGFsbCBzZW1hbnRpYyBlcnJvcnMuCgkoUmVzb2x2ZV9BY3R1YWxzKTogSWYgdGhlIGFjdHVhbCBpcyBhbiBhbGxvY2F0b3Igd2hvc2UgZGlyZWN0bHkKCWRlc2lnbmF0ZWQgdHlwZSBpcyBhIGNsYXNzLXdpZGUgaW50ZXJmYWNlIHdlIGJ1aWxkIGFuIGFub255bW91cwoJYWNjZXNzIHR5cGUgdG8gdXNlIGl0IGFzIHRoZSB0eXBlIG9mIHRoZSBhbGxvY2F0b3IuIExhdGVyLCB3aGVuCgl0aGUgc3VicHJvZ3JhbSBjYWxsIGlzIGV4cGFuZGVkLCBpZiB0aGUgaW50ZXJmYWNlIGhhcyBhIHNlY29uZGFyeQoJZGlzcGF0Y2ggdGFibGUgdGhlIGV4cGFuZGVyIHdpbGwgYWRkIGEgdHlwZSBjb252ZXJzaW9uIHRvIGZvcmNlCgl0aGUgZGlzcGxhY2VtZW50IG9mIHRoZSBwb2ludGVyLgoJKFJlc29sdmVfQ2FsbCk6IElmIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIHVuY29uc3RyYWluZWQgdHlwZSBpcwoJbWFya2VkIElubGluZWRfQWx3YXlzIGFuZCBpbmxpbmVkLCB0aGUgY2FsbCB3aWxsIGJlIGlubGluZWQgYW5kIGRvZXMKCW5vdCByZXF1aXJlIHRoZSBjcmVhdGlvbiBvZiBhIHRyYW5zaWVudCBzY29wZS4KCShDaGVja19EaXJlY3RfQm9vbGVhbl9PcCk6IFJlbW92ZWQKCShSZXNvbHZlX0NvbXBhcmlzb25fT3ApOiBSZW1vdmUgY2FsbCB0byBhYm92ZQoJKFJlc29sdmVfRXF1YWxpdHlfT3ApOiBSZW1vdmUgY2FsbCB0byBhYm92ZQoJKFJlc29sdmVfTG9naWNhbF9PcCk6IElubGluZSBhYm92ZSwgc2luY2UgdGhpcyBpcyBvbmx5IGNhbGwuCgkoVmFsaWRfQ29udmVyc2lvbik6IEhhbmRsZSBwcm9wZXJseSBjb252ZXJzaW9ucyBiZXR3ZWVuIGFycmF5cyBvZgoJY29udmVydGlibGUgYW5vbnltb3VzIGFjY2VzcyB0eXBlcy4KCglQUiBhZGEvMjU4ODUKCShTZXRfTGl0ZXJhbF9TdHJpbmdfU3VidHlwZSk6IElmIHRoZSBsb3dlciBib3VuZCBpcyBub3Qgc3RhdGljLCB3cmFwCgl0aGUgbGl0ZXJhbCBpbiBhbiB1bmNoZWNrZWQgY29udmVyc2lvbiwgYmVjYXVzZSBHQ0MgNC54IG5lZWRzIGEgc3RhdGljCgl2YWx1ZSBmb3IgYSBzdHJpbmcgYm91bmQuCgoyMDA2LTAyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDkuYWRiIChFeHBhbmRfTl9Qcm90ZWN0ZWRfVHlwZV9EZWNsYXJhdGlvbik6IFdoZW4gY3JlYXRpbmcgdGhlCgljb21wb25lbnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZCwgdGFrZSBpbnRvIGFjY291bnQgY29tcG9uZW50CglkZWZpbml0aW9ucyB0aGF0IGFyZSBhY2Nlc3MgZGVmaW5pdGlvbnMuCgkoRXhwYW5kX05fQXN5bmNocm9ub3VzX1NlbGVjdCk6IEEgZGVsYXkgdW5pdCBzdGF0ZW1lbnQgcmV3cml0dGVuIGFzIGEKCXByb2NlZHVyZSBpcyBub3QgY29uc2lkZXJlZCBhIGRpc3BhdGNoaW5nIGNhbGwgYW5kIHdpbGwgYmUgZXhwYW5kZWQKCXByb3Blcmx5LgoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGIgKEV4cGFuZF9EaXNwYXRjaGluZ19DYWxsKTogSWYgdGhlCgljb250cm9sbGluZyBhcmd1bWVudCBvZiB0aGUgZGlzcGF0Y2hpbmcgY2FsbCBpcyBhbiBhYnN0cmFjdCBpbnRlcmZhY2UKCWNsYXNzLXdpZGUgdHlwZSB0aGVuIHdlIHVzZSBpdCBkaXJlY3RseS4KCUNoZWNrIE5vX0Rpc3BhdGNoaW5nX0NhbGxzIHJlc3RyaWN0aW9uLgoJKERlZmF1bHRfUHJpbV9PcF9Qb3NpdGlvbik6IFJlbW92ZSB0aGUgY29kZSB0aGF0IGxvb2tzIGZvciB0aGUgbGFzdAoJZW50aXR5IGluIHRoZSBsaXN0IG9mIGFsaWFzZWQgc3VicHJvZ3JhbXMuIFRoaXMgY29kZSB3YXMgd3JvbmcgaW4KCWNhc2Ugb2YgcmVuYW1pbmdzLgoJKEZpbGxfRFRfRW50cnkpOiBBZGQgYXNzZXJ0aW9uIHRvIGF2b2lkIHRoZSB1c2Ugb2YgdGhpcyBzdWJwcm9ncmFtCgl3aGVuIHRoZSBzb3VyY2UgaXMgY29tcGlsZWQgd2l0aCB0aGUgTm9fRGlzcGF0Y2hpbmdfQ2FsbHMgcmVzdHJpY3Rpb24uCgkoSW5pdF9QcmVkZWZpbmVkX0ludGVyZmFjZV9QcmltaXRpdmVzKTogTm8gbmVlZCB0byBpbmhlcml0IHByaW1pdGl2ZXMKCWlmIHdlIGFyZSBjb21waWxpbmcgd2l0aCByZXN0cmljdGlvbiBOb19EaXNwYXRjaGluZ19DYWxscy4KCShNYWtlX0Rpc3BfWFhYKTogQWRkaXRpb24gb2YgYXNzZXJ0aW9uIHRvIGF2b2lkIHRoZSB1c2Ugb2YgYWxsIHRoZXNlCglzdWJwcm9ncmFtcyBpZiB3ZSBhcmUgY29tcGlsaW5nIHVuZGVyIE5vX0Rpc3BhdGNoaW5nX0NhbGxzIHJlc3RyaWN0aW9uLgoJKE1ha2VfRFQpOiBHZW5lcmF0ZSBhIGRpc3BhdGNoIHRhYmxlIHdpdGggYSBzaW5nbGUgZHVtbXkgZW50cnkgaWYKCXdlIGFyZSBjb21waWxpbmcgd2l0aCB0aGUgTm9fRGlzcGF0Y2hpbmdfQ2FsbHMgcmVzdHJpY3Rpb24uIEluCglhZGRpdGlvbiwgaW4gdGhpcyBjYXNlIHdlIGRvbid0IGdlbmVyYXRlIGNvZGUgdGhhdCBjYWxscyB0byB0aGUKCWZvbGxvd2luZyBydW4tdGltZSBzdWJwcm9ncmFtczogU2V0X1R5cGVfS2luZCwgSW5oZXJpdF9EVC4KCShNYWtlX1NlbGVjdF9TcGVjaWZpY19EYXRhX1RhYmxlKTogQWRkIGFzc2VydGlvbiB0byBhdm9pZCB0aGUgdXNlCglvZiB0aGlzIHN1YnByb2dyYW0gaWYgY29tcGlsaW5nIHdpdGggdGhlIE5vX0Rpc3BhdGNoaW5nX0NhbGxzCglyZXN0cmljdGlvbi4KCShFeHBhbmRfVHlwZV9Db252ZXJzaW9uKTogSW5zdGVhZCBvZiB1c2luZyB0aGUgYWN0dWFsIHBhcmFtZXRlciwKCXRoZSBhcmd1bWVudCBwYXNzZWQgYXMgcGFyYW1ldGVyIHRvIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uIHdhcwoJZXJyb25lb3VzbHkgcmVmZXJlbmNlZCBieSB0aGUgZXhwYW5kZXIuCgkoQWRhX0FjdGlvbnMpOiBBZGRpdGlvbiBvZiBHZXRfUHJlZGVmaW5lZF9QcmltX09wX0FkZHJlc3MsCglTZXRfUHJlZGVmaW5lZF9QcmltaXRpdmVfT3BfQWRkcmVzcyBhbmQgU2V0X1NpZ25hdHVyZS4KCShFeHBhbmRfRGlzcGF0Y2hpbmdfQ2FsbCk6IEdlbmVyYXRlIGNhbGwgdG8KCUdldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyBmb3IgcHJlZGVmaW5lZCBwcmltaXRpdmVzLgoJKEZpbGxfRFRfRW50cnkpOiBHZW5lcmF0ZSBjYWxsIHRvIFNldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyBmb3IKCXByZWRlZmluZWQgcHJpbWl0aXZlcy4KCShNYWtlX0RULCBNYWtlX1NlY29uZGFyeV9EVCk6IElmIHRoZSB0YWdnZWQgdHlwZSBoYXMgbm8gdXNlciBkZWZpbmVkCglwcmltaXRpdmVzIHdlIHJlc2VydmUgb25lIGR1bW15IGVudHJ5IHRvIGVuc3VyZSB0aGF0IHRoZSB0YWcgZG9lcyBub3QKCXBvaW50IHRvIHNvbWUgbWVtb3J5IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHNvbWUgb3RoZXIgb2JqZWN0LiBJbgoJYWRkaXRpb24sIHJlbW92ZSBhbGwgdGhlIG9sZCBjb2RlIHRoYXQgZ2VuZXJhdGVkIHRoZSBhc3NpZ25tZW50cwoJYXNzb2NpYXRlZCB3aXRoIHRoZSBzaWduYXR1cmUgb2YgdGhlIGRpc3BhdGNoIHRhYmxlIGFuZCByZXBsYWNlIHRoZW0KCWJ5IGEgY2FsbCB0byB0aGUgbmV3IHN1YnByb2dyYW0gU2V0X1NpZ25hdHVyZS4KCShTZXRfQWxsX0RUX1Bvc2l0aW9uKTogQ2hhbmdlIHRoZSBhbGdvcml0aG0gYmVjYXVzZSBub3cgd2UgaGF2ZSBhCglzZXBhcmF0ZSBkaXNwYXRjaCB0YWJsZSBhc3NvY2lhdGVkIHdpdGggcHJlZGVmaW5lZCBwcmltaXRpdmUgb3BlcmF0aW9ucy4KCShFeHBhbmRfSW50ZXJmYWNlX0NvbnZlcnNpb24pOiBJbiBjYXNlIG9mIG5vbi1zdGF0aWMgb2Zmc2V0X3RvX3RvcAoJYWRkIGV4cGxpY2l0IGRlcmVmZXJlbmNlIHRvIGdldCBhY2Nlc3MgdG8gdGhlIG9iamVjdCBhZnRlciB0aGUgY2FsbAoJdG8gZGlzcGxhY2UgdGhlIHBvaW50ZXIgdG8gdGhlIG9iamVjdC4KCShFeHBhbmRfSW50ZXJmYWNlX1RodW5rKTogTW9kaWZ5IHRoZSBnZW5lcmF0aW9uIG9mIHRoZSBhY3R1YWwgdXNlZAoJaW4gdGhlIGNhbGxzIHRvIHRoZSBydW4tdGltZSBmdW5jdGlvbiBPZmZzZXRfVG9fVG9wIHRvIGZ1bGZpbCBpdHMKCW5ldyBpbnRlcmZhY2UuCgkoTWFrZV9EVCk6IEFkZCB0aGUgbmV3IGFjdHVhbHMgcmVxdWlyZWQgdG8gY2FsbCBTZXRfT2Zmc2V0X1RvX1RvcC4KCjIwMDYtMDItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoQ29weV9TcGVjaWZpY2F0aW9uKTogRm9yIGFjY2VzcyBwYXJhbWV0ZXJzLCBjb3B5CglOdWxsX0V4Y2x1c2lvbiBmbGFnLCB3aGljaCB3aWxsIGhhdmUgYmVlbiBzZXQgZm9yIHN0cmVhbSBzdWJwcm9ncmFtcwoJaW4gQWRhMjAwNSBtb2RlLgoKMjAwNi0wMi0xMyAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZXhwZWN0LmMgKF9fZ25hdF9leHBlY3RfcG9ydGFibGVfZXhlY3ZwKTogTmV3IGltcGxlbWVudGF0aW9uLiBUaGUKCXByZXZpb3VzIGltcGxlbWVudGF0aW9uIHdhcyB1c2luZyB0aGUgQyBydW50aW1lIHNwYXdudmUgcm91dGluZSBidXQKCXRoZSBjb3JyZXNwb25kaW5nIHdhaXQgd2FzIHVzaW5nIGRpcmVjdGx5IHRoZSBXaW4zMiBBUEkuIFRoaXMgd2FzCgljYXVzaW5nIHNvbWUgdGltZXMgYSBsb2NrIHdoZW4gd2FpdGluZyBmb3IgYW4gZXZlbnQgdXNpbmcKCVdhaXRGb3JTaW5nbGVPYmplY3QgaW4gX19nbmF0X3dhaXRwaWQuIFRoaXMgbmV3IGltcGxlbWVudGF0aW9uIHVzZXMKCXRoZSBXaW4zMiBDcmVhdGVQcm9jZXNzIHJvdXRpbmUuIEF2b2lkaW5nIG1peGluZyBDIHJ1bnRpbWUgYW5kIFdpbjMyCglBUEkgZml4ZXMgdGhpcyBwcm9ibGVtLgoKMjAwNi0wMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfaW50ci5hZGIgKEV4cGFuZF9VbmNfRGVhbGxvY2F0aW9uKTogQ29ycmVjdCBlcnJvciBvZiBiYWQgYW5hbHl6ZQoJY2FsbC4KCjIwMDYtMDItMTMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfcGFrZC5hZHM6IEZpeCB0eXBvcyBpbiBjb21tZW50cy4KCgkqIGV4cF9wYWtkLmFkYiAoQ29udmVydF9Ub19QQVRfVHlwZSk6IEZvciB0aGUgY2FzZSBvZiBhIGJpdCBwYWNrZWQKCWFycmF5IHJlZmVyZW5jZSB0aGF0IGlzIGFuIGV4cGxpY2l0IGRlcmVmZXJlbmNlLCBtYXJrIHRoZSBjb252ZXJ0ZWQKCShwYWNrZWQpIGFycmF5IHJlZmVyZW5jZSBhcyBhbmFseXplZCB0byBwcmV2ZW50IGEgZm9ydGhjb21pbmcKCXJlYW5hbHlzaXMgZnJvbSByZXNldHRpbmcgaXRzIHR5cGUgdG8gdGhlIG9yaWdpbmFsIChub24tcGFja2VkKSBhcnJheQoJdHlwZS4KCjIwMDYtMDItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGV4cF91dGlsLmFkcywgZXhwX3V0aWwuYWRiIChGaW5kX1ByaW1fT3AsCglJc19QcmVkZWZpbmVkX1ByaW1pdGl2ZV9PcGVyYXRpb24pOiBXaGVuCglzZWFyY2hpbmcgZm9yIHRoZSBwcmVkZWZpbmVkIGVxdWFsaXR5IG9wZXJhdG9yLCB2ZXJpZnkgdGhhdCBvcGVyYW5kcwoJaGF2ZSB0aGUgc2FtZSB0eXBlLgoJKElzX1ByZWRlZmluZWRfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogUmVtb3ZlIHRoZSBjb2RlIHRoYXQgbG9va3MKCWZvciB0aGUgbGFzdCBlbnRpdHkgaW4gdGhlIGxpc3Qgb2YgYWxpYXNlZCBzdWJwcm9ncmFtcy4gVGhpcyBjb2RlCgl3YXMgd3JvbmcgaW4gY2FzZSBvZiByZW5hbWluZ3MuCgkoU2V0X1JlbmFtZWRfU3VicHJvZ3JhbSk6IE5ldyBwcm9jZWR1cmUKCShSZW1vdmVfU2lkZV9FZmZlY3RzKTogUmVwbGFjZSBjYWxscyB0byBFdHlwZSAoRXhwKSB3aXRoIHVzZSBvZiB0aGUKCUV4cF9UeXBlIGNvbnN0YW50IGNvbXB1dGVkIHdoZW4gZW50ZXJpbmcgdGhpcyBzdWJwcm9ncmFtLgoJKEtub3duX051bGwpOiBOZXcgZnVuY3Rpb24KCShPS19Ub19Eb19Db25zdGFudF9SZXBsYWNlbWVudCk6IE5ldyBmdW5jdGlvbgoJKEtub3duX05vbl9OdWxsKTogQ2hlY2sgc2NvcGUgYmVmb3JlIGJlbGlldmluZyBJc19Lbm93bl9Ob25fTnVsbCBmbGFnCgkoU2lkZV9FZmZlY3RfRnJlZSk6IEFuIGF0dHJpYnV0ZSByZWZlcmVuY2UgJ0lucHV0IGlzIG5vdCBmcmVlIG9mCglzaWRlIGVmZmVjdCwgdW5saWtlIG90aGVyIGF0dHJpYnV0ZXMgdGhhdCBhcmUgZnVuY3Rpb25zLiAoZnJvbSBjb2RlCglyZWFkaW5nKS4KCShSZW1vdmVfU2lkZV9FZmZlY3RzKTogRXhwcmVzc2lvbnMgdGhhdCBpbnZvbHZlIHBhY2tlZCBhcnJheXMgb3IgcmVjb3JkcwoJYXJlIGNvcGllZCBhdCB0aGUgcG9pbnQgb2YgcmVmZXJlbmNlLCBhbmQgdGhlcmVmb3JlIG11c3QgYmUgbWFya2VkIGFzCglyZW5hbWluZ3Mgb2Ygb2JqZWN0cy4KCShJc19QcmVkZWZpbmVkX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IFJldHVybiBmYWxzZSBpZiB0aGUgb3BlcmF0aW9uIGlzCglub3QgYSBkaXNwYXRjaGluZyBvcGVyYXRpb24uCgoJUFIgYWRhLzE4ODE5CgkoUmVtb3ZlX1NpZGVfRWZmZWN0cyk6IExpZnQgZW5jbG9zaW5nIHR5cGUgY29udmVyc2lvbiBub2RlcyBmb3IKCWVsZW1lbnRhcnkgdHlwZXMgaW4gYWxsIGNhc2VzLgoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZnJlZXplLmFkYiAoRnJlZXplX0VudGl0eSk6IEhhbmRsZSBzdWJ0eXBlcyBvZiBwcm90ZWN0ZWQgdHlwZXMgYW5kCgl0YXNrIHR5cGVzIHdoZW4gYWNjZXNzaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZCB0eXBlLgoJUmVtb3ZlICchJyBpbiB3YXJuaW5nIG1lc3NhZ2UuCgoyMDA2LTAyLTEzICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogZy1hbHRpdmUuYWRzIChWRUNUT1JfQUxJR05NRU5UKTogU2V0IHRvIE1pbiAoMTYsIE1heF9BbGlnbm1lbnQpLAoJdG8gYXZvaWQgdXNlbGVzcyBhbmQgc3BhY2UgaW5lZmZpY2llbnQgb3ZlcmFsaWdubWVudHMgb24gdGFyZ2V0cyB3aGVyZQoJTWF4X0FsaWdubWVudCBpcyBsYXJnZXIgdGhhbiAxNi4KCjIwMDYtMDItMTMgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGctY2F0aWlvLmFkYiAoU2VjX051bWJlcik6IE5ldyB0eXBlIHVzZWQgdG8gY29tcHV0ZSB0aGUgbnVtYmVyIG9mCglzZWNvbmRzIHNpbmNlIDEtMS0xOTcwLgoJKEltYWdlKSBbTmF0dXJhbF06IFRoZSBwYXJhbWV0ZXIgd2FzIGFuIEludGVnZXIsIGFzIHdlIGNhbid0IGRlYWwgd2l0aAoJbmVnYXRpdmUgbnVtYmVycyAoeWVhcnMsIG1vbnRocy4uLikgaXQgaXMgYmV0dGVyIHRvIGhhdmUgYSBOYXR1cmFsIGhlcmUuCglDb2RlIGNsZWFuLXVwLgoJKEltYWdlKSBbTnVtYmVyXTogQ2hhbmdlIHBhcmFtZXRlciBmcm9tIExvbmdfSW50ZWdlciB0byBOdW1iZXIuCgkoSW1hZ2UpOiBVc2UgTnVtYmVyIHR5cGUgdG8gY29tcHV0ZSB0aGUgc2Vjb25kcyBzaW5jZSAxLTEtMTk3MCB0byBmaXggYW4KCW92ZXJmbG93IGZvciBkYXRlcyBwYXN0IHllYXIgMjAzOC4KCjIwMDYtMDItMTMgIE1hdHRoZXcgSGVhbmV5ICA8aGVhbmV5QGFkYWNvcmUuY29tPgoKCSogIGctZHludGFiLmFkYiAoSW5kZXhfT2YpOiBjb252ZXJzaW9uIGZyb20gTmF0dXJhbCBjYW4gbm8gbG9uZ2VyIHJhaXNlCglDb25zdHJhaW50X0Vycm9yLgoKMjAwNi0wMi0xMyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogZ25hdGJpbmQuYWRiIChTY2FuX0JpbmRfQXJnKTogUmVwbGFjZSBlcnJvciBieSB3YXJuaW5nIG9uIC1NIGFuZAoJbmF0aXZlIHBsYXRmb3Jtcy4KCShHbmF0YmluZCk6IERvIG5vdCBjYWxsIEV4aXRfUHJvZ3JhbSAoRV9TdWNjZXNzKSBhdCB0aGUgZW5kLCBzbyB0aGF0CglmaW5hbGl6YXRpb24gY2FuIG9jY3VyIG5vcm1hbGx5LgoKMjAwNi0wMi0xMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBnbmF0Y21kLmFkYiAoUnVsZXNfU3dpdGNoZXMpOiBOZXcgdGFibGUKCShBZGRfVG9fUnVsZXNfU3dpdGNoZXMpOiBOZXcgcHJvY2VkdXJlCgkoR05BVENtZCk6IEZvciBjb21tYW5kIENIRUNLLCBwdXQgYWxsIG9wdGlvbnMgZm9sbG93aW5nICItcnVsZXMiIGluIHRoZQoJUnVsZXNfU3dpdGNoZXMgdGFibGUuIEFwcGVuZCB0aGVzZSAtcnVsZXMgc3dpdGNoZXMgYWZ0ZXIgdGhlIC1jYXJncwoJc3dpdGNoZXMuCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGctc3BpcGF0LmFkYiAoSW1hZ2UsIGNhc2UgUENfQXNzaWduX0ltbSBhbmQgY2FzZSBQQ19Bc3NpZ25fT25NKToKCVRoZXNlIHR3byBjYXNlcyB3ZXJlIGdlbmVyYXRpbmcgaW5jb3JyZWN0IG91dHB1dCwgYW5kIGlmIHRoaXMgdW5pdAoJd2FzIGJ1aWx0IHdpdGggY2hlY2tzIG9uLCBnZW5lcmF0ZWQgYSBkaXNjcmltaW5hbnQgbWlzbWF0Y2ggY29uc3RyYWludAoJZXJyb3IuCgoyMDA2LTAyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBsaWIteHJlZi5hZGIgKEdldF9UeXBlX1JlZmVyZW5jZSk6IEZvciBhIHByaXZhdGUgdHlwZSB3aG9zZSBmdWxsCgl2aWV3IGlzIGFuIGFycmF5IHR5cGUsIGluZGljYXRlIHRoZSBjb21wb25lbnQgdHlwZSBhcyB3ZWxsLCBmb3IKCW5hdmlnYXRpb24gcHVycG9zZXMuCgkoR2VuZXJhdGVfUmVmZXJlbmNlKTogRG9uJ3QgY29uc2lkZXIgYXJyYXkgcmVmIG9uIExIUyB0byBiZSBhIGNhc2UKCW9mIHZpb2xhdGluZyBwcmFnbWEgVW5yZWZlcmVuY2VkLgoJRG8gbm90IGdpdmUgQWRhIDIwMDUgd2FybmluZyBleGNlcHQgb24gcmVhbCByZWZlcmVuY2UuCgoyMDA2LTAyLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiIChDb2xsZWN0X0FyZ3VtZW50c19BbmRfQ29tcGlsZSk6IEZvciBWTVMsIHdoZW4gY29tcGlsaW5nIHRoZQoJbWFpbiBzb3VyY2UsIGFkZCBzd2l0Y2ggLW1kZWJ1Zy1tYWluPV9hZGFfIHNvIHRoYXQgdGhlIGV4ZWN1dGFibGUgY2FuCgliZSBkZWJ1Z2dlZCBieSB0aGUgc3RhbmRhcmQgVk1TIGRlYnVnZ2VyLgoJKEduYXRtYWtlKTogU2V0IE5vX01haW5fU3VicHJvZ3JhbSB0byBUcnVlIHdoZW4gdGhlcmUgaXMgbm8gbWFpbgoJc3VicHJvZ3JhbSwgdG8gYXZvaWQgaXNzdWluZyAtbWRlYnVnLW1haW49X2FkYV8gZm9yIFZNUyB1c2VsZXNzbHkuCglFeGl0IHRoZSBNdWx0aV9NYWluX0xvb3Agd2hlbiBVbmlxdWVfQ29tcGlsZSBpcyBUcnVlIGFmdGVyIGNvbXBpbGF0aW9uCglvZiB0aGUgbGFzdCBzb3VyY2UsIGFzIHRoZSBiaW5kaW5nIGFuZCBsaW5raW5nIHBoYXNlcyBhcmUgbmV2ZXIKCXBlcmZvcm1lZC4KCVNldCBhbGwgZXhlY3V0YWJsZSBvYnNvbGV0ZSB3aGVuIHJlYnVpbGRpbmcgYSBsaWJyYXJ5LgoKCSogbWFrZXV0bC5hZGIgKExpbmtlcl9PcHRpb25zX1N3aXRjaGVzKTogRG8gbm90IHByb2Nlc3MgZW1wdHkgbGlua2VyCglvcHRpb25zLgoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yMzk3MwoJKiBwYXItY2gzLmFkYiAoUF9EZXJpdmVkX1R5cGVfRGVmX09yX1ByaXZhdGVfRXh0X0RlY2wpOiBSZW9yZ2FuaXplIHRoZQoJY29kZSB0byBpbXByb3ZlIHRoZSBlcnJvciBtZXNzYWdlIHJlcG9ydGVkIHdoZW4gdGhlIHByb2dyYW0gaGFzCglkZWNsYXJhdGlvbnMgb2YgYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzIGFuZCBpdCBpcyBub3QgY29tcGlsZWQgd2l0aAoJdGhlIC1nbmF0MDUgc3dpdGNoLgoJKFBfQWNjZXNzX0RlZmluaXRpb24pOiBSZW9yZ2FuaXplIHRoZSBjb2RlIHRvIGltcHJvdmUgdGhlIGVycm9yCgltZXNzYWdlIHJlcG9ydGVkIHdoZW4gdGhlIG5ldyBBZGEgMjAwNSBzeW50YXggZm9yIGFub255bW91cwoJYWNjZXNzIHR5cGVzIGlzIHVzZWQgYW5kIHRoZSBwcm9ncmFtIGlzIG5vdCBjb21waWxlZCB3aXRoIHRoZQoJLWduYXQwNSBzd2l0Y2guCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHBhci1jaDYuYWRiLCBzdHlsZS5hZHMsIHN0eWxlZy5hZGIsIHN0eWxlZy5hZHMsIHN0eWxlc3cuYWRiLAoJc3R5bGVzdy5hZHMsIHVzYWdlLmFkYiwgdm1zX2RhdGEuYWRzOiBJbXBsZW1lbnQgLWduYXR5SSBzd2l0Y2gKCShNT0RFX0lOKQoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogcGFyLWVuZGguYWRiIChFeHBsaWNpdF9TdGFydF9MYWJlbCk6IEFkZCBjb2RlIHRvIHByb3RlY3QgdGhlIHBhcnNlcgoJYWdhaW5zdCBzb3VyY2UgY29udGFpbmluZyBzeW50YXggZXJyb3JzLgoKMjAwNi0wMi0xMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmouYWRiIChSZXNldCk6IEluaXRpYWxpemUgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGFibGUgTmFtaW5ncyB3aXRoCgl0aGUgc3RhbmRhcmQgbmFtaW5nIGRhdGEuCgoyMDA2LTAyLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai5hZHMgKEVycm9yX1dhcm5pbmcpOiBOZXcgZW51bWVyYXRpb24gdHlwZQoKCSogcHJqLW5tc2MuYWRzLCBwcmotbm1zYy5hZGIgKEVycm9yX01zZyk6IElmIGxvY2F0aW9uIHBhcmFtZXRlciBpcwoJdW5rbm93biwgdXNlIHRoZSBsb2NhdGlvbiBvZiB0aGUgcHJvamVjdCB0byByZXBvcnQgdGhlIGVycm9yLgoJKFdoZW5fTm9fU291cmNlcyk6IE5ldyBnbG9iYWwgdmFyaWFibGUKCShSZXBvcnRfTm9fQWRhX1NvdXJjZXMpOiBOZXcgcHJvY2VkdXJlCgkoQ2hlY2spOiBOZXcgcGFyYW1ldGVyIFdoZW5fTm9fU291cmNlcy4gU2V0IHZhbHVlIG9mIGdsb2JhbCB2YXJpYWJsZQoJV2hlbl9Ob19Tb3VyY2VzLAoJKEZpbmRfU291cmNlcyk6IENhbGwgUmVwb3J0X05vX0FkYV9Tb3VyY2VzIHdoZW4gYXBwcm9wcmlhdGUKCShHZXRfU291cmNlc19Gcm9tX0ZpbGUpOiBEaXR0bwoJKFdhcm5fSWZfTm90X1NvdXJjZXMpOiBCZXR0ZXIgd2FybmluZyBtZXNzYWdlcyBpbmRpY2F0aW5nIHRoZSB1bml0IG5hbWUKCWFuZCB0aGUgZmlsZSBuYW1lLgoKCSogcHJqLXBhcnMuYWRzLCBwcmotcGFycy5hZGIgKFBhcnNlKTogTmV3IHBhcmFtZXRlciBXaGVuX05vX1NvdXJjZXMuCglDYWxsIFByai5Qcm9jLlByb2Nlc3Mgd2l0aCBwYXJhbWV0ZXIgV2hlbl9Ob19Tb3VyY2VzLgoKCSogcHJqLXByb2MuYWRzLCBwcmotcHJvYy5hZGIgKENoZWNrKTogTmV3IHBhcmFtZXRlciBXaGVuX05vX1NvdXJjZXMuCglDYWxsIFJlY3Vyc2l2ZV9DaGVjayB3aXRoIHBhcmFtZXRlciBXaGVuX05vX1NvdXJjZXMuCgkoUmVjdXJzaXZlX0NoZWNrKTogTmV3IHBhcmFtZXRlciBXaGVuX05vX1NvdXJjZXMuIENhbGwgaXRzZWxmIGFuZAoJUHJqLk5tc2MuQ2hlY2sgd2l0aCBwYXJhbWV0ZXIgV2hlbl9Ob19Tb3VyY2VzLgoJKFByb2Nlc3MpOiBOZXcgcGFyYW1ldGVyIFdoZW5fTm9fU291cmNlcy4gQ2FsbCBDaGVjayB3aXRoIHBhcmFtZXRlcgoJV2hlbl9Ob19Tb3VyY2VzLgoJKENvcHlfUGFja2FnZV9EZWNsYXJhdGlvbnMpOiBOZXcgcHJvY2VkdXJlIHRvIGNvcHkgcmVuYW1lZCBwYXJhbWV0ZXJzCglhbmQgc2V0dGluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGRlY2xhcmVkIGF0dHJpYnV0ZXMgdG8gdGhlIGxvY2F0aW9uCglvZiB0aGUgcmVuYW1lZCBwYWNrYWdlLgoJKFByb2Nlc3NfRGVjbGFyYXRpdmVfSXRlbXMpOiBDYWxsIENvcHlfUGFja2FnZV9EZWNsYXJhdGlvbnMgZm9yIHJlbmFtZWQKCXBhY2thZ2VzLgoKMjAwNi0wMi0xMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmotbWFrci5hZGIgKE1ha2UpOiBQcmVzZXJ2ZSB0aGUgY29tbWVudHMgZnJvbSB0aGUgb3JpZ2luYWwgcHJvamVjdAoJZmlsZS4KCVdoZW4gcmVtb3Zpbmcgbm9kZXMgKGF0dHJpYnV0ZXMgU291cmNlX0RpcnMsIFNvdXJjZV9GaWxlcywKCVNvdXJjZV9MaXN0X0ZpbGUgYW5kIHBhY2thZ2UgTmFtaW5nKSwgc2F2ZSB0aGUgY29tbWVudHMgYW5kIGF0dGFjaCB0aGUKCXNhdmVkIGNvbW1lbnRzIHRvIHRoZSBuZXdseSBjcmVhdGVkIG5vZGVzLgoJRG8gbm90IGFkZCBhIHdpdGggY2xhdXNlIGZvciB0aGUgbmFtaW5nIHBhY2thZ2UgaWYgb25lIGFscmVhZHkgZXhpc3RzLgoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHJlc3RyaWN0LmFkcyAoTm9fRGlzcGF0Y2hpbmdfQ2FsbHMpOiBOZXcgR05BVCByZXN0cmljdGlvbi4KCgkqIHNlbV9kaXNwLmFkYiAoT3ZlcnJpZGVfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogVHJhdmVyc2UgdGhlIGxpc3Qgb2YKCWFsaWFzZWQgZW50aXRpZXMgdG8gbG9vayBmb3IgdGhlIG92ZXJyaWRlbiBhYnN0cmFjdCBpbnRlcmZhY2UKCXN1YnByb2dyYW0uCgkoSXNfSW50ZXJmYWNlX1N1YnByb2dyYW0pOiBDb21wbGV0ZSBkb2N1bWVudGF0aW9uLgoJKENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IERvIG5vdCBnZW5lcmF0ZSBjb2RlIHRvIHJlZ2lzdGVyIHRoZQoJb3BlcmF0aW9uIGluIHRoZSBkaXNwYXRjaCB0YWJsZSBpZiB0aGUgc291cmNlIGlzIGNvbXBpbGVkIHdpdGgKCXJlc3RyaWN0aW9uIE5vX0Rpc3BhdGNoaW5nX0NhbGxzLgoJKE92ZXJyaWRlX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IENoZWNrIGZvciBpbGxlZ2FsIGF0dGVtcHQgdG8gb3ZlcnJpZGUKCU5vX1JldHVybiBwcm9jZWR1cmUgd2l0aCBwcm9jZWR1cmUgdGhhdCBpcyBub3QgTm9fUmV0dXJuCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfQ2FsbCk6IFN1cHByZXNzIHRoZSBjaGVjayBmb3IgYW4gYWJzdHJhY3Qgb3BlcmF0aW9uCgl3aGVuIHRoZSBvcmlnaW5hbCBub2RlIG9mIGFuIGFjdHVhbCBpcyBhIHRhZy1pbmRldGVybWluYXRlIGF0dHJpYnV0ZQoJY2FsbCwgc2luY2UgdGhlIGF0dHJpYnV0ZSwgd2hpY2ggbXVzdCBiZSAnSW5wdXQsIGNhbiBuZXZlciBiZSBhYnN0cmFjdC4KCShJc19UYWdfSW5kZXRlcm1pbmF0ZSk6IEhhbmRsZSBjaGVja2luZyBvZiB0YWcgaW5kZXRlcm1pbmFjeSBvZiBhCgljYWxsIHRvIHRoZSBJbnB1dCBhdHRyaWJ1dGUgKGV2ZW4gd2hlbiByZXdyaXR0ZW4pLgoJKFByb3BhZ2F0ZV9UYWcpOiBBdWdtZW50IGNvbW1lbnQgdG8gaW5kaWNhdGUgdGhlIHBvc3NpYmlsaXR5IG9mIGEgY2FsbAoJdG8gYW4gSW5wdXQgYXR0cmlidXRlLgoKCSogc2VtX2Rpc3AuYWRzIChPdmVycmlkZV9EaXNwYXRjaGluZ19PcGVyYXRpb24pOiBNb3ZlZCB0byBzcGVjIHRvIGFsbG93CgljYWxsaW5nIGl0IGZyb20gRXhwX0NoMy5NYWtlX0NvbnRyb2xsaW5nX0Z1bmN0aW9uX1dyYXBwZXJzLgoKCSogcy1yaWRlbnQuYWRzOiAoTm9fRGlzcGF0Y2hpbmdfQ2FsbHMpOiBOZXcgR05BVCByZXN0cmljdGlvbi4KCU5vX1dpZGVfQ2hhcmFjdGVycyBpcyBubyBsb25nZXIgcGFydGl0aW9uLXdpZGUKCU5vX0ltcGxlbWVudGF0aW9uX0F0dHJpYnV0ZXMvUHJhZ21hcyBhcmUgbm93IEFkYSAyMDA1IChBSS0yNTcpCglyYXRoZXIgdGhhbiBHTkFUCgoyMDA2LTAyLTEzICBEb3VnbGFzIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogcy1hdXhkZWMtdm1zXzY0LmFkcyAoU2hvcnRfQWRkcmVzcyk6IFdyYXAgaXQgaW4gYSB0eXBlLgoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2FnZ3IuYWRiIChSZXNvbHZlX1JlY29yZF9BZ2dyZWdhdGUpOiBSZXN0cnVjdHVyZSB0aGUgY29kZSB0aGF0CgloYW5kbGVzIGRlZmF1bHQtaW5pdGlhbGl6ZWQgY29tcG9uZW50cyB0byBrZWVwIHNlcGFyYXRlIHRoZSBtYW5hZ2VtZW50CglvZiB0aGlzIGZlYXR1cmUgYnV0IGFsc28gYXZvaWQgdGhlIHVucmVxdWlyZWQgcmVzb2x1dGlvbiBhbmQKCWV4cGFuc2lvbiBvZiBjb21wb25lbnRzIHRoYXQgZG8gbm90IGhhdmUgcGFydGlhbGx5IGluaXRpYWxpemVkCgl2YWx1ZXMuCgkoQ29sbGVjdF9BZ2dyX0JvdW5kcyk6IEFkZCAnXCcgaW4gMi1saW5lIHdhcm5pbmcgbWVzc2FnZS4KCShDaGVja19Cb3VuZHMpOiBMaWtld2lzZS4KCShDaGVja19MZW5ndGgpOiBMaWtld2lzZS4KCjIwMDYtMDItMTMgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fYXR0ci5hZGIgKEFuYWx5emVfQXR0cmlidXRlKTogSW4gY2FzZSBvZiAnQ2xhc3MgYXBwbGllZCB0byBhbgoJYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGUgY2FsbCBhbmFseXplX2FuZF9yZXNvbHZlIHRvIGV4cGFuZCB0aGUgdHlwZQoJY29udmVyc2lvbiBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGRpc3BsYWNlbWVudCBvZiB0aGUKCXJlZmVyZW5jZSB0byB0aGUgYmFzZSBvZiB0aGUgb2JqZWN0LgoJKEV2YWxfQXR0cmlidXRlLCBjYXNlIFdpZHRoKTogRm9yIHN5c3RlbXMgd2hlcmUgSUVFRSBleHRlbmRlZCBwcmVjaXNpb24KCWlzIHN1cHBvcnRlZCwgdGhlIG1heGltdW0gZXhwb25lbnQgb2NjdXBpZXMgNCBkZWNpbWFsIGRpZ2l0cy4KCShBY2Nlc3NpYmlsaXR5X01lc3NhZ2UpOiBBZGQgJ1wnIGluIDItbGluZSB3YXJuaW5nIG1lc3NhZ2UuCgkoUmVzb2x2ZV9BdHRyaWJ1dGUpOiBMaWtld2lzZS4KCShjYXNlIEF0dHJpYnV0ZV9BY2Nlc3MpOiBTaWduaWZpY2FudGx5IHJldmlzZSBjaGVja3MKCWZvciBpbGxlZ2FsIGFjY2Vzcy10by1zdWJwcm9ncmFtIEFjY2VzcyBhdHRyaWJ1dGVzIHRvIHByb3Blcmx5IGVuZm9yY2UKCXRoZSBydWxlcyBvZiAzLjEwLjIoMzIvMikuCglEaWFnbm9zZSB1c2Ugb2YgY3VycmVudCBpbnN0YW5jZSB3aXRoIGFuIGlsbGVnYWwgYXR0cmlidXRlLgoKCSogc2VtX3V0aWwuYWRzLCBzZW1fdXRpbC5hZGIgKEVuY2xvc2luZ19HZW5lcmljX0JvZHkpOiBDaGFuZ2UgZm9ybWFsCgl0byBhIE5vZGVfSWQuCgkoRW5jbG9zaW5nX0dlbmVyaWNfVW5pdCk6IE5ldyBmdW5jdGlvbiB0byByZXR1cm4gYSBub2RlJ3MgaW5uZXJtb3N0CgllbmNsb3NpbmcgZ2VuZXJpYyBkZWNsYXJhdGlvbiBub2RlLgoJKENvbXBpbGVfVGltZV9Db25zdHJhaW50X0Vycm9yKTogUmVtb3ZlICchJyBpbiB3YXJuaW5nIG1lc3NhZ2VzLgoJKFR5cGVfQWNjZXNzX0xldmVsKTogVGhlIGFjY2Vzc2liaWxpdHkgbGV2ZWwgb2YgYW5vbnltb3VzIGFjY2Nlc3MgdHlwZXMKCWFzc29jaWF0ZWQgd2l0aCBkaXNjcmltaW5hbnRzIGlzIHRoYXQgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlCgl0eXBlLCBhbmQgdGhhdCdzIGRlZXBlciB0aGFuIHRoZSB0eXBlIGl0c2VsZiAoQUFSTSAzLjEwLjIgKDEyLjMuMjEpKS4KCShDb21waWxlX1RpbWVfQ29uc3RyYWludF9FcnJvcik6IEhhbmRsZSBjYXNlIG9mIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24uCgkoS2lsbF9DdXJyZW50X1ZhbHVlc19Gb3JfRW50aXR5KTogTmV3IGZ1bmN0aW9uCgkoRW50ZXJfTmFtZSk6IENoYW5nZSBmb3JtYWwgdHlwZSB0byBFbnRpdHlfSWQKCjIwMDYtMDItMTMgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoQ2hlY2tfUmVkdW5kYW50X1dpdGhzKTogTmV3IHByb2NlZHVyZSBpbgoJQW5hbHl6ZV9Db21waWxhdGlvbl9Vbml0LgoJRGV0ZWN0IGFuZCB3YXJuIG9uIHJlZHVuZGFudCB3aXRoIGNsYXVzZXMgZGV0ZWN0ZWQgaW4gYSBwYWNrYWdlIHNwZWMKCWFuZC9vciBib2R5IHdoZW4gLWduYXR3ciBpcyB1c2VkLgoJKEFuYWx5emVfQ29udGV4dCk6IEFuYWx5emUgY29uZmlnIHByYWdtYXMgYmVmb3JlIG90aGVyIGl0ZW1zCgkoSW5zdGFsbF9Db250ZXh0X0l0ZW1zKTogRG9uJ3QgYW5hbHl6ZSBjb25maWcgcHJhZ21hcyBoZXJlCgkoSW5zdGFsbF9MaW1pdGVkX1dpdGhlZF9Vbml0KTogU2V0IGxpbWl0ZWQgZW50aXR5IG9mIHBhY2thZ2UgaW4KCXdpdGhfY2xhdXNlIHNvIHRoYXQgY3Jvc3MtcmVmZXJlbmNlIGluZm9ybWF0aW9uIG9yIHdhcm5pbmcgbWVzc2FnZXMgb24KCXVudXNlZCBwYWNrYWdlcyBjYW4gYmUgcHJvcGVybHkgZ2VuZXJhdGVkCgkoSXNfVmlzaWJsZV9UaHJvdWdoX1JlbmFtaW5ncyk6IFJldHVybiBmYWxzZSBpZiB0aGUgbGltaXRlZF93aXRoX2NsYXVzZQoJaGFzIEVycm9yX1Bvc3RlZCBzZXQuIFByZXZlbnQgaW5maW5pdGUgbG9vcHMgaW4gaWxsZWdhbCBwcm9ncmFtcy4KCShDaGVja19Qcml2YXRlX0NoaWxkX1VuaXQpOiBNb3ZlIHRlc3QgZm9yIGEgbm9ucHJpdmF0ZSB3aXRoIGNsYXVzZSBkb3duCgl0byB0aGUgcG9pbnQgb2YgdGhlIGVycm9yIHRlc3QgcmVxdWlyaW5nIHRoZSBjdXJyZW50IHVuaXQgdG8gYmUgcHJpdmF0ZS4KCVRoaXMgZW5zdXJlcyB0aGF0IHByaXZhdGUgd2l0aCBjbGF1c2VzIGFyZSBub3QgZXhlbXB0ZWQgZnJvbSB0aGUgYmFzaWMKCWNoZWNraW5nIGZvciBiZWluZyBhIGRlc2NlbmRhbnQgb2YgdGhlIHNhbWUgbGlicmFyeSB1bml0IHBhcmVudCBhcyBhCgl3aXRoZWQgcHJpdmF0ZSBkZXNjZW5kYW50IHVuaXQuCgkoQ2hlY2tfUHJpdmF0ZV9MaW1pdGVkX1dpdGhlZF9Vbml0KTogUmV2aXNlIHRoZSBjaGVja2luZyBhbGdvcml0aG0gdG8KCWhhbmRsZSBwcml2YXRlIHdpdGggY2xhdXNlcyBwcm9wZXJseSwgYXMgd2VsbCBhcyB0byBhY2NvdW50IGZvciBjYXNlcwoJd2hlcmUgdGhlIHdpdGhlZCB1bml0IGlzIGEgcHVibGljIGRlc2NlbmRhbnQgb2YgYSBwcml2YXRlIGFuY2VzdG9yCgkoaW4gd2hpY2ggY2FzZSB0aGUgY3VycmVudCB1bml0IG11c3QgYmUgYSBkZXNjZW5kYW50IG9mIHRoZSBwcml2YXRlCglhbmNlc3RvcidzIHBhcmVudCkuIFRoZSBzcGVjIGNvbW1lbnRzIHdlcmUgdXBkYXRlZCBhY2NvcmRpbmdseS4gQWxzbywKCXRoZSBvbGQgZXJyb3IgbWVzc2FnZSBpbiB0aGlzIHN1YnByb2dyYW0gd2FzIHJlcGxhY2VkIHdpdGggZXJyb3IKCW1lc3NhZ2VzIHRoYXQgbWlycm9yIHRoZSBlcnJvcnMgdGVzdGVkIGFuZCByZXBvcnRlZCBieQoJQ2hlY2tfUHJpdmF0ZV9DaGlsZF9Vbml0LgoJUGFyYW1ldGVyIGFuZCB2YXJpYWJsZSBuYW1lcyBpbXByb3ZlZCBmb3IgcmVhZGFiaWxpdHkuCgkoSW5zdGFsbF9MaW1pdGVkX0NvbnRleHRfQ2xhdXNlcyk6IFJlbW92ZSB0ZXN0IGZvciBhIHdpdGhlZCB1bml0IGJlaW5nCglwcml2YXRlIGFzIHRoZSBwcmVjb25kaXRpb24gZm9yIGNhbGxpbmcKCUNoZWNrX1ByaXZhdGVfTGltaXRlZF9XaXRoZWRfVW5pdCBzaW5jZSB0aGF0IHN1YnByb2dyYW0gaGFzIGJlZW4KCXJldmlzZWQgdG8gdGVzdCBwdWJsaWMgdW5pdHMgYXMgd2VsbCBhcyBwcml2YXRlIHVuaXRzLgoKMjAwNi0wMi0xMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTIuYWRiIChJbmxpbmVfSW5zdGFuY2VfQm9keSk6IFJlbW92ZSBlcnJvbmVvdXMgYXNzdW1wdGlvbgoJdGhhdCBTY29wZV9TdGFjay5GaXJzdCA9IDEuCglQcm9wZXJseSBoYW5kbGUgQWRhX1ZlcnNpb25fRXhwbGljaXQgYW5kIEFkYV9WZXJzaW9uX0NvbmZpZywgd2hpY2gKCXdlcmUgbm90IGFsd2F5cyBwcm9wZXJseSBoYW5kbGVkIHByZXZpb3VzbHkuCgkoRm9ybWFsX0VudGl0eSk6IENvbXBsZXRlIHJld3JpdGUsIHRvIGhhbmRsZSBwcm9wZXJseSBzb21lIGNvbXBsZXggY2FzZQoJd2l0aCBtdWx0aXBsZSBsZXZlbHMgb2YgcGFyYW1ldHJpemF0aW9uIGJ5IGZvcm1hbCBwYWNrYWdlcy4KCShBbmFseXplX0Zvcm1hbF9EZXJpdmVkX1R5cGUpOiBQcm9wYWdhdGUgQWRhIDIwMDUgImxpbWl0ZWQiIGluZGljYXRvcgoJdG8gdGhlIGNvcnJlc3BvbmRpbmcgZGVyaXZlZCB0eXBlIGRlY2xhcmF0aW9uIGZvciBwcm9wZXIgc2VtYW50aWNzLgoKCSogc2VtX3ByYWcuYWRiIChBbmFseXplX1ByYWdtYSk6IFJlbW92ZSAnIScgaW4gd2FybmluZyBtZXNzYWdlLgoJKENoZWNrX0NvbXBvbmVudCk6IEVuZm9yY2UgcmVzdHJpY3Rpb24gb24gY29tcG9uZW50cyBvZgoJdW5jaGVja2VkX3VuaW9uczogYSBjb21wb25lbnQgaW4gYSB2YXJpYW50IGNhbm5vdCBjb250YWluIHRhc2tzIG9yCgljb250cm9sbGVkIHR5cGVzLgoJKFVuY2hlY2tlZF9Vbmlvbik6IEFsbG93IG5lc3RlZCB2YXJpYW50cyBhbmQgbXVsdGlwbGUgZGlzY3JpbWluYW50cywgdG8KCWNvbmZvcm0gdG8gQUktMjE2LgoJQWRkIHByYWdtYSBBZGFfMjAwNSAoc3lub255bSBmb3IgQWRhXzA1KQoJUHJvcGVybHkgaGFuZGxlIEFkYV9WZXJzaW9uX0V4cGxpY2l0IGFuZCBBZGFfVmVyc2lvbl9Db25maWcsIHdoaWNoCgl3ZXJlIG5vdCBhbHdheXMgcHJvcGVybHkgaGFuZGxlZCBwcmV2aW91c2x5LgoJRG9jdW1lbnQgdGhhdCBwcmFnbWEgUHJvcGFnYXRlX0V4Y2VwdGlvbnMgaGFzIG5vIGVmZmVjdAoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIFB1cmUpOiBTZXQgbmV3IGZsYWcgSGFzX1ByYWdtYV9QdXJlCgkoU2V0X0NvbnZlbnRpb25fRnJvbV9QcmFnbWEpOiBDaGVjayB0aGF0IGlmIGEgY29udmVudGlvbiBpcwoJc3BlY2lmaWVkIGZvciBhIGRpc3BhdGNoaW5nIG9wZXJhdGlvbiwgdGhlbiBpdCBtdXN0IGJlCgljb25zaXN0ZW50IHdpdGggdGhlIGV4aXN0aW5nIGNvbnZlbnRpb24gZm9yIHRoZSBvcGVyYXRpb24uCgkoQ1BQX0NsYXNzKTogQmVjYXVzZSBvZiB0aGUgQysrIEFCSSBjb21wYXRpYmlsaXR5LCB0aGUgcHJvZ3JhbW1lciBpcyBubwoJbG9uZ2VyIHJlcXVpcmVkIHRvIHNwZWNpZnkgYW4gdnRhYmxlLXB0ciBjb21wb25lbnQgaW4gdGhlIHJlY29yZC4gRm9yCgljb21wYXRpYmlsaXR5IHJlYXNvbnMgd2UgbGVhdmUgdGhlIHN1cHBvcnQgZm9yIHRoZSBwcmV2aW91cyBkZWZpbml0aW9uLgoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIE5vX1JldHVybik6IEFsbG93IG11bHRpcGxlIGFyZ3VtZW50cwoKCSogc2VtX2NoMy5hZHMsIHNlbV9jaDMuYWRiIChDaGVja19BYnN0cmFjdF9PdmVycmlkaW5nKTogRmxhZyBhCglub24tb3ZlcnJpZGVlbiBpbmhlcml0ZWQgb3BlcmF0aW9uIHdpdGggYSBjb250cm9sbGluZyByZXN1bHQgYXMKCWlsbGVnYWwgb25seSBpdHMgaW1wbGljaXQgZGVjbGFyYXRpb24gY29tZXMgZnJvbSB0aGUgZGVyaXZlZCB0eXBlCglkZWNsYXJhdGlvbiBvZiBpdHMgcmVzdWx0J3MgdHlwZS4KCShDaGVja19Qb3NzaWJsZV9EZWZlcnJlZF9Db21wbGV0aW9uKTogUmVsb2NhdGUgdGhlIG9iamVjdCBkZWZpbml0aW9uCglub2RlIG9mIHRoZSBzdWJ0eXBlIGluZGljYXRpb24gb2YgYSBkZWZlcnJlZCBjb25zdGFudCBjb21wbGV0aW9uIHJhdGhlcgoJdGhhbiBkaXJlY3RseSBhbmFseXppbmcgaXQuIFRoZSBhbmFseXNpcyBvZiB0aGUgZ2VuZXJhdGVkIHN1YnR5cGUgd2lsbAoJY29ycmVjdGx5IGRlY29yYXRlIHRoZSBHTkFUIHRyZWUuCgkoUmVjb3JkX1R5cGVfRGVjbGFyYXRpb24pOiBDaGVjayB3aGV0aGVyIHRoaXMgaXMgYSBkZWNsYXJhdGlvbiBmb3IgYQoJbGltaXRlZCBkZXJpdmVkIHJlY29yZCBiZWZvcmUgYW5hbHl6aW5nIGNvbXBvbmVudHMuCgkoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24pOiBEaWFnbm9zZSByZWNvcmQgdHlwZXMgIG5vdCBleHBsaWNpdGx5CglkZWNsYXJlZCBsaW1pdGVkIHdoZW4gYSBjb21wb25lbnQgaGFzIGEgbGltaXRlZCB0eXBlLgoJKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBDb2RlIHJlb3JnYW5pemF0aW9uIHRvIGNoZWNrIGlmIHNvbWUgb2YKCXRoZSBpbmhlcml0ZWQgc3VicHJvZ3JhbXMgb2YgYSB0YWdnZWQgdHlwZSBjb3ZlciBpbnRlcmZhY2UgcHJpbWl0aXZlcy4KCVRoaXMgY2hlY2sgd2FzIG1pc3NpbmcgaW4gY2FzZSBvZiBhIGZ1bGwtdHlwZSBhc3NvY2lhdGVkIHdpdGggYSBwcml2YXRlCgl0eXBlIGRlY2xhcmF0aW9uLgoJKENvbnN0YW50X1JlZGVjbGFyYXRpb24pOiBDaGVjayB0aGF0IHRoZSBzdWJ0eXBlcyBvZiB0aGUgcGFydGlhbCBhbmQgdGhlCglmdWxsIHZpZXcgb2YgYSBjb25zdHJhaW5lZCBkZWZlcnJlZCBjb25zdGFudCBzdGF0aWNhbGx5IG1hdGNoLgoJKE1lbnRpb25zX1QpOiBBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCB0eXBlIGluIGFuIGFub255bW91cyBhY2Nlc3MKCWNvbXBvbmVudCBkZWNsYXJhdGlvbiAgbXVzdCBiZSBhbiBlbnRpdHkgbmFtZS4KCShNYWtlX0luY29tcGxldGVfVHlwZV9EZWNsYXJhdGlvbik6IElmIHR5cGUgaXMgdGFnZ2VkLCBzZXQgdHlwZSBvZgoJY2xhc3Nfd2lkZSB0eXBlIHRvIHJlZmVyIHRvIGZ1bGwgdHlwZSwgbm90IHRvIHRoZSBpbmNvbXBsZXRlIG9uZS4KCShBZGRfSW50ZXJmYWNlX1RhZ19Db21wb25lbnRzKTogRG8gbm90aGluZyBpZiBSRV9JbnRlcmZhY2VfVGFnIGlzIG5vdAoJYXZhaWxhYmxlLiBSZXF1aXJlZCB0byBnaXZlIHN1cHBvcnQgdG8gdGhlIGNlcnRpZmllZCBydW4tdGltZS4KCShBbmFseXplX0NvbXBvbmVudF9EZWNsYXJhdGlvbik6IEluIGNhc2Ugb2YgYW5vbnltb3VzIGFjY2VzcyBjb21wb25lbnRzCglwZXJmb3JtIG1pc3NpbmcgY2hlY2tzIGZvciBBQVJNIDMuOS4yKDkpIGFuZCAzLjEwLjIgKDEyLjIpLgoJKFByb2Nlc3NfRGlzY3JpbWluYW50cyk6IEZvciBhbiBhY2Nlc3MgZGlzY3JpbWluYW50LCB1c2UgdGhlCglkaXNjcmltaW5hbnQgc3BlY2lmaWNhdGlvbiBhcyB0aGUgYXNzb2NpYXRlZF9ub2RlX2Zvcl9pdHlwZSwgdG8KCXNpbXBsaWZ5IGFjY2Vzc2liaWxpdHkgY2hlY2tzLgoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChSZW1vdmVfQWJzdHJhY3RfSW50ZXJwcmV0YXRpb25zKTogRXZlbiBpZiB0aGVyZSBhcmUgbm8KCWFic3RyYWN0IGludGVycHJldGF0aW9ucyBvbiBhbiBvcGVyYXRvciwgcmVtb3ZlIGludGVycHJldGF0aW9ucyB0aGF0Cgl5aWVsZCBBZGRyZXNzIG9yIGEgdHlwZSBkZXJpdmVkIGZyb20gaXQsIGlmIG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgYW4KCWludGVnZXIgbGl0ZXJhbC4KCShUcnlfT2JqZWN0X09wZXJhdGlvbi5UcnlfUHJpbWl0aXZlX09wZXJhdGlvbiwKCVRyeV9PYmplY3RfT3BlcmF0aW9uLlRyeV9DbGFzc19XaWRlX09wZXJhdGlvbik6IFNldCBwcm9wZXIgc291cmNlCglsb2NhdGlvbiB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgcmVmZXJlbmNlIHRvIGEgcHJpbWl0aXZlIG9yIGNsYXNzLXdpZGUKCW9wZXJhdGlvbiBhcyBhIHBhcnQgb2YgcmV3cml0aW5nIGEgc3VicHJvZ3JhbSBjYWxsLgoJKFRyeV9QcmltaXRpdmVfT3BlcmF0aW9ucyk6IElmIGNvbnRleHQgcmVxdWlyZXMgYSBmdW5jdGlvbiwgY29sbGVjdCBhbGwKCWludGVycHJldGF0aW9ucyBhZnRlciB0aGUgZmlyc3QgbWF0Y2gsIGJlY2F1c2UgdGhlcmUgbWF5IGJlIHByaW1pdGl2ZQoJb3BlcmF0aW9ucyBvZiB0aGUgc2FtZSB0eXBlIHdpdGggdGhlIHNhbWUgcHJvZmlsZSBhbmQgZGlmZmVyZW50IHJldHVybgoJdHlwZXMuIEZyb20gY29kZSByZWFkaW5nLgoJKFRyeV9QcmltaXRpdmVfT3BlcmF0aW9uKTogVXNlIHRoZSBub2RlIGtpbmQgdG8gY2hvb3NlIHRoZSBwcm9wZXIKCW9wZXJhdGlvbiB3aGVuIGEgZnVuY3Rpb24gYW5kIGEgcHJvY2VkdXJlIGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVyCglwcm9maWxlLgoJKENvbXBsZXRlX09iamVjdF9PcGVyYXRpb24pOiBJZiBmb3JtYWwgaXMgYW4gYWNjZXNzIHBhcmFtZXRlciBhbmQgcHJlZml4CglpcyBhbiBvYmplY3QsIHJld3JpdGUgYXMgYW4gQWNjZXNzIHJlZmVyZW5jZSwgdG8gbWF0Y2ggc2lnbmF0dXJlIG9mCglwcmltaXRpdmUgb3BlcmF0aW9uLgoJKEZpbmRfRXF1YWxpdHlfVHlwZSwgRmluZF9PbmVfSW50ZXJwKTogSGFuZGxlIHByb3Blcmx5IGVxdWFsaXR5IGdpdmVuCglieSBhbiBleHBhbmRlZCBuYW1lIHdpdGggcHJlZml4IFN0YW5kYXJkLCB3aGVuIHRoZSBvcGVyYW5kcyBhcmUgb2YgYW4KCWFub255bW91cyBhY2Nlc3MgdHlwZS4KCShSZW1vdmVfQWJzdHJhY3RfT3BlcmF0aW9ucyk6IElmIHRoZSBvcGVyYXRpb24gaXMgYWJzdHJhY3QgYmVjYXVzZSBpdCBpcwoJaW5oZXJpdGVkIGJ5IGEgdXNlci1kZWZpbmVkIHR5cGUgZGVyaXZlZCBmcm9tIEFkZHJlc3MsIHJlbW92ZSBpdCBhcwoJd2VsbCBmcm9tIHRoZSBzZXQgb2YgY2FuZGlkYXRlIGludGVycHJldGF0aW9ucyBvZiBhbiBvdmVybG9hZGVkIG5vZGUuCgkoQW5hbHl6ZV9NZW1iZXJzaGlwX09wKTogTWVtYmVyc2hpcCB0ZXN0IG5vdCBhcHBsaWNhYmxlIHRvIGNwcC1jbGFzcwoJdHlwZXMuCgoyMDA2LTAyLTEzICBCb2IgRHVmZiAgPGR1ZmZAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g4LmFkYiAoTm90ZV9SZWR1bmRhbnRfVXNlKTogU3VwcHJlc3MgdW5oZWxwZnVsIHdhcm5pbmcgYWJvdXQKCXJlZHVuZGFudCB1c2UgY2xhdXNlcy4KCUluIHBhcnRpY3VsYXIsIGlmIHRoZSBzY29wZSBvZiB0d28gdXNlIGNsYXVzZXMgb3ZlcmxhcHMsIGJ1dCBvbmUgaXMgbm90CgllbnRpcmVseSBpbmNsdWRlZCBpbiB0aGUgb3RoZXIsIHdlIHNob3VsZCBub3Qgd2Fybi4gIFRoaXMgY2FuIGhhcHBlbgoJd2l0aCBuZXN0ZWQgcGFja2FnZXMuCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX1JlbmFtaW5nKTogUHJvdGVjdCB0aGUgY29tcGlsZXIgYWdhaW5zdCBwcmV2aW91c2x5CglyZXBvcnRlZCBlcnJvcnMuIFRoZSBidWcgd2FzIHJlcG9ydGVkIHdoZW4gdGhlIGNvbXBpbGVyIHdhcyBidWlsdAoJd2l0aCBhc3NlcnRpb25zIGVuYWJsZWQuCgkoRmluZF9UeXBlKTogSWYgdGhlIG5vZGUgaXMgYSAnQ2xhc3MgcmVmZXJlbmNlIGFuZCB0aGUgcHJlZml4IGlzIGEKCXN5bmNocm9uaXplZCB0eXBlIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHJlY29yZCwgcmV0dXJuIHRoZSB0eXBlCglpdHNlbGYuCgoyMDA2LTAyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g5LmFkYiAoQW5hbHl6ZV9Qcm90ZWN0ZWRfVHlwZSwgQW5hbHl6ZV9UYXNrX1R5cGUpOiBDaGVjayB0aGF0CglpZiB0aGlzIGlzIHRoZSBmdWxsLWRlY2xhcmF0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIHByaXZhdGUgZGVjbGFyYXRpb24KCXRoYXQgaW1wbGVtZW50IGludGVyZmFjZXMsIHRoZW4gdGhlIHByaXZhdGUgdHlwZSBkZWNsYXJhdGlvbiBtdXN0IGJlCglsaW1pdGVkLgoJKEFuYWx5emVfU2luZ2xlX1Byb3RlY3RlZCwgQW5hbHl6ZV9TaW5nbGVfVGFzayk6IERvIG5vdCBtYXJrIHRoZSBvYmplY3QKCWFzIGFsaWFzZWQuIFRoZSB1c2Ugb2YgdGhlICdhY2Nlc3MgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUgZm9yIHN1Y2gKCW9iamVjdCAoZm9yIHRoaXMgcHVycG9zZSB0aGUgb2JqZWN0IHNob3VsZCBiZSBleHBsaWNpdGx5IG1hcmtlZCBhcwoJYWxpYXNlZCwgYnV0IGJlaW5nIGFuIGFub255bW91cyB0eXBlIHRoaXMgaXMgbm90IHBvc3NpYmxlKS4KCjIwMDYtMDItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9lbGFiLmFkYiAoU2FtZV9FbGFib3JhdGlvbl9TY29wZSk6IEEgcGFja2FnZSB0aGF0IGlzIGEKCWNvbXBpbGF0aW9uIHVuaXQgaXMgYW4gZWxhYm9yYXRpb24gc2NvcGUuCgkoQWRkX1Rhc2tfUHJvYyk6IEFkZCAnXCcgaW4gMi1saW5lIHdhcm5pbmcgbWVzc2FnZS4KCShBY3RpdmF0ZV9BbGxfRGVzaXJhYmxlKTogRGVhbCB3aXRoIGNhc2Ugb2YgdW5pdCB3aXRoJ2VkIGJ5IHBhcmVudAoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHNlbV90eXBlLmFkYiAoV3JpdGVfT3ZlcmxvYWRzKTogSW1wcm92ZSBkaXNwbGF5IG9mIGNhbmRpZGF0ZQoJaW50ZXJwcmV0YXRpb25zLgoJKEFkZF9PbmVfSW50ZXJwKTogRG8gbm90IGFkZCB0byB0aGUgbGlzdCBvZiBpbnRlcnByZXRhdGlvbnMgYWxpYXNlZAoJZW50aXRpZXMgY29ycmVzcG9uZGluZyB3aXRoIGFuIGFic3RyYWN0IGludGVyZmFjZSB0eXBlIHRoYXQgaXMgYW4KCWltbWVkaWF0ZSBhbmNlc3RvciBvZiBhIHRhZ2dlZCB0eXBlOyBvdGhlcndpc2Ugd2UgaGF2ZSBhIGR1bW15Cgljb25mbGljdCBiZXR3ZWVuIHRoaXMgZW50aXR5IGFuZCB0aGUgYWxpYXNlZCBlbnRpdHkuCgkoRGlzYW1iaWd1YXRlKTogVGhlIHByZWRlZmluZWQgZXF1YWxpdHkgb24gdW5pdmVyc2FsX2FjY2VzcyBpcyBub3QKCXVzYWJsZSBpZiB0aGVyZSBpcyBhIHVzZXItZGVmaW5lZCBlcXVhbGl0eSB3aXRoIHRoZSBwcm9wZXIgc2lnbmF0dXJlLAoJZGVjbGFyZWQgaW4gdGhlIHNhbWUgZGVjbGFyYXRpdmUgcGFydCBhcyB0aGUgZGVzaWduYXRlZCB0eXBlLgoJKEZpbmRfVW5pcXVlX1R5cGUpOiBUaGUgdW5pdmVyc2FsX2FjY2VzcyBlcXVhbGl0eSBvcGVyYXRvciBkZWZpbmVkIHVuZGVyCglBSS0yMzAgZG9lcyBub3QgY292ZXIgcG9vbCBzcGVjaWZpYyBhY2Nlc3MgdHlwZXMuCgkoQ292ZXJzKTogSWYgb25lIG9mIHRoZSB0eXBlcyBpcyBhIGdlbmVyaWMgYWN0dWFsIHN1YnR5cGUsIGNoZWNrIHdoZXRoZXIKCWl0IG1hdGNoZXMgdGhlIHBhcnRpYWwgdmlldyBvZiB0aGUgb3RoZXIgdHlwZS4KCjIwMDYtMDItMTMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzaW5wdXQtZC5hZGIgKFdyaXRlX0xpbmUpOiBVcGRhdGUgdGhlIFNvdXJjZV9JbmRleF9UYWJsZSBhZnRlciBlYWNoCglsaW5lLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhbGxvdyBJbl9FeHRlbmRlZF9NYWluX1VuaXQgdG8gcHJvdmlkZQoJY29ycmVjdCByZXN1bHRzIGZvciBpdHlwZXMgd2hpbGUgd3JpdGluZyBvdXQgZXhwYW5kZWQgc291cmNlLgoJKENsb3NlX0ZpbGUpOiBObyBuZWVkIHRvIHVwZGF0ZSB0aGUgc291cmNlX2luZGV4X3RhYmxlIGhlcmUgc2luY2UgaXQncwoJbm93IGRvbmUgZm9yIGVhY2ggbGluZS4KCjIwMDYtMDItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNwcmludC5hZGIgKFdyaXRlX0l0eXBlKTogUHJlc2VydmUgU2xvYyBvZiBkZWNsYXJhdGlvbiwgaWYgYW55LCB0bwoJcHJlc2VydmUgdGhlIHNvdXJjZSB1bml0IHdoZXJlIHRoZSBpdHlwZSBpcyBkZWNsYXJlZCwgYW5kIHByZXZlbnQgYQoJYmFja2VuZCBhYm9ydC4KCShOb3RlX0ltcGxpY2l0X1J1bl9UaW1lX0NhbGwpOiBOZXcgcHJvY2VkdXJlCgkoV3JpdGVfSXR5cGUpOiBIYW5kbGUgbWlzc2luZyBjYXNlcyAoRV9DbGFzc19XaWRlX1R5cGUgYW5kCglFX1N1YnByb2dyYW1fVHlwZSkKCgkqIHNwcmludC5hZHM6IERvY3VtZW50IHVzZSBvZiAkIGZvciBpbXBsaWNpdCBydW4gdGltZSByb3V0aW5lIGNhbGwKCjIwMDYtMDItMTMgIFF1ZW50aW4gT2NoZW0gIDxvY2hlbUBhZGFjb3JlLmNvbT4KCgkqIHMtc3RhdXNhLmFkYiAoSW5pdGlhbGl6ZV9BbmFseXplcik6IGZpeGVkIGVycm9yIGluIGFzc2lnbm1lbnQgb2YKCXRhc2sgbmFtZS4KCjIwMDYtMDItMTMgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIHMtdmFsaW50LmFkYiAoU2Nhbl9JbnRlZ2VyKTogQ2FsbCBTY2FuX1Jhd19VbnNpZ25lZCBpbnN0ZWFkIG9mCglTY2FuX1Vuc2lnbmVkLCBzbyB3ZSBkbyBub3Qgc2NhbiBsZWFkaW5nIGJsYW5rcyBhbmQgc2lnbiB0d2ljZS4KCUludGVnZXInVmFsdWUoIi0gNSIpIGFuZCBJbnRlZ2VyJ1ZhbHVlKCItKzUiKSBub3cgY29ycmVjdGx5CglyYWlzZSBDb25zdHJhaW50X0Vycm9yLgoKCSogcy12YWxsbGkuYWRiIChTY2FuX0xvbmdfTG9uZ19JbnRlZ2VyKTogQ2FsbAoJU2Nhbl9SYXdfTG9uZ19Mb25nX1Vuc2lnbmVkIGluc3RlYWQgb2YgU2Nhbl9Mb25nX0xvbmdfVW5zaWduZWQsIHNvIHdlCglkbyBub3Qgc2NhbiBsZWFkaW5nIGJsYW5rcyBhbmQgc2lnbiB0d2ljZS4KCUludGVnZXInVmFsdWUoIi0gNSIpIGFuZCBJbnRlZ2VyJ1ZhbHVlKCItKzUiKSBub3cgY29ycmVjdGx5CglyYWlzZSBDb25zdHJhaW50X0Vycm9yLgoKCSogcy12YWxsbHUuYWRzLCBzLXZhbGxsdS5hZGIgKFNjYW5fUmF3X0xvbmdfTG9uZ19VbnNpZ25lZCwKCVNjYW5fTG9uZ19Mb25nX1Vuc2lnbmVkKTogU3BsaXQgb3V0IG1vc3Qgb2YgdGhlIHByb2Nlc3NpbmcgZnJvbQoJU2Nhbl9Mb25nX0xvbmdfVW5zaWduZWQgb3V0IGludG8KCVNjYW5fUmF3X0xvbmdfTG9uZ19VbnNpZ25lZCwgc28gdGhhdCBWYWxfTExJIGNhbiBjYWxsIHRoZSBSYXdfIHZlcnNpb24uCglUaGlzIHByZXZlbnRzIHNjYW5uaW5nIGxlYWRpbmcgYmxhbmtzIGFuZCBzaWduIHR3aWNlLgoJQWxzbyBmaXhlZCBhIGJ1ZzogTW9kdWxhcidWYWx1ZSgiLTAiKSBzaG91bGQgcmFpc2UgQ29uc3RyYWludF9FcnJvcgoJU2VlIFJNLTMuNSg0NCkuCgoJKiBzLXZhbHVucy5hZHMsIHMtdmFsdW5zLmFkYiAoU2Nhbl9SYXdfVW5zaWduZWQsIFNjYW5fVW5zaWduZWQpOiBTcGxpdAoJb3V0IG1vc3Qgb2YgdGhlIHByb2Nlc3NpbmcgZnJvbSBTY2FuX1Vuc2lnbmVkIG91dCBpbnRvCglTY2FuX1Jhd19VbnNpZ25lZCwgc28gdGhhdCBWYWxfTExJIGNhbiBjYWxsIHRoZSBSYXdfIHZlcnNpb24uCglUaGlzIHByZXZlbnRzIHNjYW5uaW5nIGxlYWRpbmcgYmxhbmtzIGFuZCBzaWduIHR3aWNlLgoKCSogcy12YWx1dGkuYWRzLCBzLXZhbHV0aS5hZGIgKFNjYW5fUGx1c19TaWduKTogQWRkIFNjYW5fUGx1c19TaWduLCBmb3IKCXVzZSB3aXRoIE1vZHVsYXInVmFsdWUgYXR0cmlidXRlLgoJKFNjYW5fUGx1c19TaWduKTogQWRkIFNjYW5fUGx1c19TaWduLCBmb3IgdXNlIHdpdGggTW9kdWxhcidWYWx1ZQoJYXR0cmlidXRlLgoKMjAwNi0wMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzLXdjaGppcy5hZGIgKEpJU19Ub19FVUMpOiBSYWlzZSBDb25zdHJhaW50X0Vycm9yIGZvciBpbnZhbGlkIHZhbHVlCgoyMDA2LTAyLTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJhY2ViYWsuYyAoUFBDIEFJWC9EYXJ3aW4pOiBEZWZpbmUgRk9SQ0VfQ0FMTCB0byAxLgoJKFBQQyBWeFdvcmtzKTogTGlrZXdpc2UuCgkoR2VuZXJpYyB1bndpbmRlcik6IERlZmluZSBGT1JDRV9DQUxMIHRvIDAgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KCShmb3JjZWRfY2FsbGVlKTogTWFrZSBub24taW5saW5hYmxlIGFuZCBub24tcHVyZS4KCShfX2duYXRfYmFja3RyYWNlKTogQ2FsbCBmb3JjZWRfY2FsbGVlIGlmIEZPUkNFX0NBTEwgaXMgc2V0IHRvIDEuCgoyMDA2LTAyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgkgICAgQmVuIEJyb3Nnb2wgIDxicm9zZ29sQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZ25hdF9ybS50ZXhpLCBnbmF0X3Vnbi50ZXhpOiBSZW1vdmUgbGltaXRhdGlvbnMgd2l0aCBzcGFyYyBtNjQKCXN1cHBvcnQuCglEb2N1bWVudCB0aGF0IGduYXRiaW5kIC1NIG9wdGlvbiBpcyBmb3IgY3Jvc3MgZW52aXJvbm1lbnRzIG9ubHkuCglBZGRlZCBkZXNjcmlwdGlvbiBvZiB1c2luZyBnbmF0bWVtIHRvIHRyYWNlIGduYXQgcnRsIGFsbG9jcyBhbmQgZGVhbGxvY3MKCUFkZCBub3RlIG9uIHVzZSBvZiAkIHRvIGxhYmVsIGltcGxpY2l0IHJ1biB0aW1lIGNhbGxzCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgLWduYXR5SSAoY2hlY2sgbW9kZSBJTikKCVVwZGF0ZWQgY2hhcHRlciBvbiBjb21wYXRpYmlsaXR5IHdpdGggSFAgQWRhCglWTVMtb3JpZW50ZWQgZWRpdHMuCglSYW4gc3BlbGwgYW5kIGNvcnJlY3RlZCBlcnJvcnMKCUFkZCBkb2N1bWVudGF0aW9uIGZvciBnbmF0YmluZCAtZCBhbmQgcmV3b3JrIGRvY3VtZW50YXRpb24gb2YgLUQKCWF0IHRoZSBzYW1lIHRpbWUuCglBZGQgc3VicHJvZ3JhbS9kYXRhIGVsaW1pbmF0aW9uIHNlY3Rpb24uCglNaW5vciBlZGl0aW5nIG9mIGFubmV4IEEuCglBZGQgc2VjdGlvbiBmb3IgZ25hdGNoZWNrLgoJQWRkIGRvY3VtZW50YXRpb24gZm9yIHJlc3RyaWN0aW9uIE5vX0Rpc3BhdGNoaW5nX0NhbGxzCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgcHJhZ21hIEFkYV8yMDA1CglSZW1vdmUgbWVudGlvbiBvZiBvYnNvbGV0ZSBwcmFnbWEgUHJvcGFnYXRlX0V4Y2VwdGlvbnMKCURvY3VtZW50IHRoYXQgcHJhZ21hIFVucmVmZXJlbmNlZCBjYW4gYXBwZWFyIGFmdGVyIERPIGluIEFDQ0VQVAoJQ2xhcmlmeSBQdXJlX0Z1bmN0aW9uIGZvciBsaWJyYXJ5IGxldmVsIHVuaXRzCglNZW50aW9uIE1heC9NaW4gaW4gY29ubmVjdGlvbiB3aXRoIE5vX0ltcGxpY2l0X0NvbmRpdGlvbmFscwoJTm9fV2lkZV9DaGFyYWN0ZXJzIHJlc3RyaWN0aW9uIGlzIG5vIGxvbmdlciBwYXJ0aXRpb24td2lkZQoJQWRkIGEgbmljZSBleGFtcGxlIGZvciBVbml2ZXJzYWxfTGl0ZXJhbF9TdHJpbmcgYXR0cmlidXRlCglEb2N1bWVudCB0aGF0IHByYWdtYSBOb19SZXR1cm4gY2FuIHRha2UgbXVsdGlwbGUgYXJndW1lbnRzCgoJKiB1Z193b3JkczogQWRkZWQgZW50cnkgZm9yIGduYXRjaGVjawoKCSogZy1jdHJsX2MuYWRzIChJbnN0YWxsX0hhbmRsZXIpOiBFbmhhbmNlIGNvbW1lbnRzCgoJKiBnLW9zX2xpYi5hZHM6IEFkZCBjb21tZW50cyB0byBPU19FeGl0IHRoYXQgaXQgaXMgYWJydXB0IHRlcm1pbmF0aW9uCgoJKiBnLXRyYXN5bS5hZHM6IEFkZCBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBkbyBvZmYgbGluZSBzeW1ib2xpYwoJdHJhY2ViYWNrIGNvbXB1dGF0aW9uLgoKCSogcy1mYXRnZW4uYWRiOiBBZGQgY29tbWVudHMgZm9yIFVuYWxpZ25lZF9WYWxpZAoKCSogc3RhbmQuYWRzOiBGaXggdHlwbyBpbiBjb21tZW50CgoyMDA2LTAyLTA5ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2UtbGFuZy5pbiAoY2hlY2stZ25hdCk6IFJ1biBydW5fYWNhdHMgd2l0aCAkKFNIRUxMKS4KCjIwMDYtMDItMDYgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogZGVjbC5jIChnbmF0X3N1YnN0aXR1dGVfaW5fdHlwZSk6IERvbid0IGhhbmRsZSBDSEFSX1RZUEUuCgoyMDA2LTAyLTAzICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIHRhcmdldC8yNTkyNgoJKiBpbml0aWFsaXplLmMgKF9fZ25hdF9pbml0aWFsaXplKTogUHJvdmlkZSBIUC1VWCAxMCBob3N0IGFuZCB0YXJnZXQKCWltcGxlbWVudGF0aW9uIHRoYXQgY2FsbHMgX19tYWluLgoKMjAwNi0wMS0yNSAgUGV0ZXIgTydHb3JtYW4gIDxwZXRlckBwb2dtYS5jb20+CgoJUFIgYm9vdHN0cmFwLzI1ODU5CgkqIE1ha2VmaWxlLmluIChHQ0NfTElOSyk6IFJlbW92ZSBxdW90ZXMuCgkodG9vbHMgdGFyZ2V0cyk6IExpbmsgd2l0aCBlaXRoZXIgJChHTkFUTElOSykgLS1HQ0M9IiQoR0NDX0xJTkspIgoJb3IgJChHQ0NfTElOSykuCgoJKHBvd2VycGMtZGFyd2luKTogUGFzcyAtc2hhcmVkLWxpYmdjYyB3aGVuIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJ5LgoKMjAwNi0wMS0yMCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBhZGEvMjQ1MzMKCSogcy1vc2ludGUtbGludXgtaHBwYS5hZHM6IFJlZHVjZSBhbGlnbm1lbnQgb2YgYXRvbWljX2xvY2tfdCB0byA4LgoKMjAwNS0xMi0yOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCgkqIHMtb3NpbnRlLWxpbnV4LWhwcGEuYWRzOiBDb3JyZWN0IGFsaWdubWVudCBvZiBhdG9taWNfbG9ja190LgoKMjAwNS0xMi0xMiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBkdW1teSBzZXR0aW5nIG9mIEdDQ19GT1JfVEFSR0VULCBubyBsb25nZXIKCW5lZWRlZC4KCjIwMDUtMTItMTIgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogVXBkYXRlIGRlcGVuZGVuY2llcwoKMjAwNS0xMi0xMiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogTWFrZS1sYW5nLmluOiBBZGQgcnVsZSBmb3IgYWRhL2V4cF9zZWwubwoKMjAwNS0xMi0xMiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogTWFrZWZpbGUuaW4gKG1pbmd3IHNlY3Rpb24pOiBSZW1vdmUgRUhfTUVDSEFOSVNNIHNldHRpbmcuCgoyMDA1LTEyLTA5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBnbmF0dnNuLmFkcyAoTGlicmFyeV9WZXJzaW9uKTogQnVtcCB0byB2ZXJzaW9uIDQuMgoJKEFTSVNfVmVyc2lvbl9OdW1iZXIpOiBCdW1wZWQuCgoyMDA1LTEyLTA5ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogbWxpYi10Z3Qtdm1zLWlhNjQuYWRiLCBtbGliLXRndC12bXMtYWxwaGEuYWRiIChJc19JbnRlcmZhY2UpOiBDaGFuZ2UKCUFkYSBiaW5kIGZpbGUgcHJlZml4IG9uIFZNUyBmcm9tIGIkIHRvIGJfXy4KCShCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBDaGFuZ2UgSW5pdCBmaWxlIHN1ZmZpeCBvbiBWTVMgZnJvbSAkaW5pdCB0bwoJX19pbml0LgoKCSogcHJqLW5tc2MuYWRiOiBDaGFuZ2Ugc29tZSBIb3N0cGFybS5PcGVuVk1TIGNoZWNrcyB0bwoJVGFyZ3Bhcm0uT3BlblZNU19Pbl9UYXJnZXQuCgkoT2JqZWN0X1N1ZmZpeCk6IEluaXRpYWxpemUgd2l0aCB0YXJnZXQgb2JqZWN0IHN1ZmZpeC4KCShHZXRfVW5pdCk6IENoYW5nZSBBZGEgYmluZCBmaWxlIHByZWZpeCBvbiBWTVMgZnJvbSBiJCB0byBiX18uCgoJKiBidXRpbC5hZGI6IENoYW5nZSBzb21lIEhvc3RwYXJtLk9wZW5WTVMgY2hlY2tzIHRvCglUYXJncGFybS5PcGVuVk1TX09uX1RhcmdldC4KCgkqIGNsZWFuLmFkYjogQ2hhbmdlIHNvbWUgSG9zdHBhcm0uT3BlblZNUyBjaGVja3MgdG8KCVRhcmdwYXJtLk9wZW5WTVNfT25fVGFyZ2V0LgoJKE9iamVjdF9TdWZmaXgpOiBJbml0aWFsaXplIHdpdGggY2FsbCB0byBHZXRfVGFyZ2V0X09iamVjdF9TdWZmaXguCgkoe2RlY2xhcmFjdGlvbn0sRGVsZXRlX0JpbmRlcl9HZW5lcmF0ZWRfRmlsZXMse2luaXRpYWxpemF0aW9ufSk6IENoYW5nZQoJQWRhIGJpbmQgZmlsZSBwcmVmaXggb24gVk1TIGZyb20gYiQgdG8gYl9fLgoKCSogZ25hdGxpbmsuYWRiIChQcm9jZXNzX0FyZ3MpOiBDYWxsIEFkZF9TcmNfU2VhcmNoX0RpciBmb3IgLUkgaW4KCS0tR0NDIHNvIHRoYXQgR2V0X1RhcmdldF9QYXJhbWV0ZXJzIGNhbiBmaW5kIHN5c3RlbS5hZHMuCgkoR25hdGxpbmspOiBDYWxsIEdldF9UYXJnZXRfUGFyYW1ldGVycyBpbiBtYWlubGluZS4KCUluaXRpYWxpemUgc3RhbmRhcmQgcGFja2FnZXMgZm9yIFRhcmdwYXJtLgoJQ2hhbmdlIHNvbWUgSG9zdHBhcm0uT3BlblZNUyBjaGVja3MgdG8gVGFyZ3Bhcm0uT3BlblZNU19Pbl9UYXJnZXQuCgkoUHJvY2Vzc19BcmdzKTogQWxzbyBDaGVjayBmb3Igb2JqZWN0IGZpbGVzIHdpdGggdGFyZ2V0IG9iamVjdAoJZXh0ZW5zaW9uLgoJKE1ha2VfQmluZGVyX0ZpbGVfTmFtZXMpOiBDcmVhdGUgd2l0aCB0YXJnZXQgb2JqZWN0IGV4dGVuc2lvbi4KCShNYWtlX0JpbmRlcl9GaWxlX05hbWVzKTogQ2hhbmdlIEFkYSBiaW5kIGZpbGUgcHJlZml4IG9uIFZNUyBmcm9tIGIkCgl0byBiX18uCgoJKiBtbGliLXByai5hZGI6IENoYW5nZSBzb21lIEhvc3RwYXJtLk9wZW5WTVMgY2hlY2tzIHRvCglUYXJncGFybS5PcGVuVk1TX09uX1RhcmdldC4KCSh7ZGVjbGFyYXRpb259LEJ1aWxkX0xpYnJhcnksQ2hlY2tfTGlicmFyeSk6IENoYW5nZSBBZGEgYmluZCBmaWxlCglwcmVmaXggb24gVk1TIGZyb20gYiQgdG8gYl9fLgoKCSogb3NpbnQtYi5hZGI6IENoYW5nZSBzb21lIEhvc3RwYXJtLk9wZW5WTVMgY2hlY2tzIHRvCglUYXJncGFybS5PcGVuVk1TX09uX1RhcmdldC4KCShDcmVhdGVfQmluZGVyX091dHB1dCk6IENoYW5nZSBBZGEgYmluZCBmaWxlIHByZWZpeCBvbiBWTVMgZnJvbSBiJCB0bwoJYl9fLgoKCSogdGFyZ2V4dC5jOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluOiBhZGQgc3VwcG9ydCBmb3Igdnh3b3JrczY1MyBidWlsZHMKCSguLi8uLi92eGFkZHIybGluZSk6IGduYXRsaW5rIHdpdGggdGFyZ2V4dC5vLgoJKFRPT0xTX0xJQlMpOiBNb3ZlIHRhcmdleHQubyB0byBwcmVjZWRlIGxpYmduYXQuCgkoaW5pdC5vLCBpbml0aWFsaXplLm8pOiBNaW5vciBjbGVhbiB1cCBpbiBkZXBlbmRlbmNpZXMuCgkoR05BVExJTktfT0JKUyk6IEFkZCB0YXJncGFybS5vLCBzbmFtZXMubwoJQWRkIHJ1bGVzIGZvIGJ1aWxkaW5nIHRhcmdleHQubyBhbmQgbGlua2luZyBpdCBleHBsaWNpdGx5IHdpdGggYWxsCgl0b29scy4KCUFsc28gYWRkIHRhcmdleHQubyB0byBnbmF0bGliLgoKCSogTWFrZS1sYW5nLmluOiBBZGQgcnVsZXMgZm9yIGJ1aWxkaW5nIHRhcmdleHQubyBhbmQgbGlua2luZyBpdCBpbgoJd2l0aCBnbmF0MSBhbmQgZ25hdGJpbmQuCglBZGQgZW50cnkgZm9yIGV4cF9zZWwuby4KCgkqIG9zaW50LmFkYiBDaGFuZ2Ugc29tZSBIb3N0cGFybS5PcGVuVk1TIGNoZWNrcyB0bwoJVGFyZ3Bhcm0uT3BlblZNU19Pbl9UYXJnZXQuCgkoT2JqZWN0X0ZpbGVfTmFtZSk6IFVzZSB0YXJnZXQgb2JqZWN0IHN1ZmZpeC4KCgkqIG9zaW50LmFkcyAoT2JqZWN0X1N1ZmZpeCk6IFJlbW92ZSwgbm8gbG9uZ2VyIHVzZWQuCgkoVGFyZ2V0X09iamVjdF9TdWZmaXgpOiBJbml0aWFsaXplIHdpdGggdGFyZ2V0IG9iamVjdCBzdWZmaXguCgoJKiByaWRlbnQuYWRzOiBBZGQgc3BlY2lhbCBleGNlcHRpb24gdG8gbGljZW5zZS4KCgkqIHRhcmdwYXJtLmFkYiAoR2V0X1RhcmdldF9QYXJhbWV0ZXJzKTogU2V0IHRoZSB2YWx1ZSBvZgoJTXVsdGlfVW5pdF9JbmRleF9DaGFyYWN0ZXIgYWZ0ZXIgT3BlblZNU19Pbl9UYXJnZXQgZ2V0cyBpdHMgZGVmaW5pdGl2ZQoJdmFsdWUuCgkoR2V0X1RhcmdldF9QYXJhbWV0ZXJzKTogU2V0IE9wZW5WTVNfT25fVGFyZ2V0IGlmIG9wZW52bXMuCgkKCSogdGFyZ3Bhcm0uYWRzOiBBZGQgc3BlY2lhbCBleGNlcHRpb24gdG8gbGljZW5zZS4KCgkqIGctb3NfbGliLmFkcywgZy1vc19saWIuYWRiIChHZXRfVGFyZ2V0X0RlYnVnZ2FibGVfU3VmZml4KTogTmV3CglmdW5jdGlvbi4KCShDb3B5X0ZpbGUpOiBNYWtlIHN1cmUgZnJvbSBmaWxlIGlzIGNsb3NlZCBpZiBlcnJvciBvbiB0byBmaWxlCgkoR2V0X1RhcmdldF9FeGVjdXRhYmxlX1N1ZmZpeCwgR2V0X1RhcmdldF9PYmplY3RfU3VmZml4KTogTmV3IGZ1bmN0aW9ucy4KCgkqIG1ha2UuYWRiIChPYmplY3RfU3VmZml4KTogSW50aWFsaXplIHdpdGggR2V0X1RhcmdldF9PYmplY3RfU3VmZml4LgoJKEV4ZWN1dGFibGVfU3VmZml4KTogSW50aWFsaXplIHdpdGggR2V0X1RhcmdldF9FeGVjdXRhYmxlX1N1ZmZpeC4KCgkqIG9zaW50LWMuYWRiIChTZXRfT3V0cHV0X09iamVjdF9GaWxlX05hbWUpOiBJbml0aWFsaXplIGV4dGVuc2lvbiB3aXRoCgl0YXJnZXQgb2JqZWN0IHN1ZmZpeC4KCjIwMDUtMTItMDkgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgkgICAgUXVlbnRpbiBPY2hlbSAgPG9jaGVtQGFkYWNvcmUuY29tPgoJICAgIEZsb3JpYW4gVmlsbG9pbmcgIDx2aWxsb2luZ0BhZGFjb3JlLmNvbT4KCgkqIGEtdGFzdGVyLmFkcywgYS10YXN0ZXIuYWRiOiBOZXcgZmlsZXMuCgoJKiBhLWVsY2hoYS5hZGIgKExhc3RfQ2hhbmNlX0hhbmRsZXIpOiBDaGFuZ2UgdGhlIHRhc2sgdGVybWluYXRpb24gc29mdAoJbGluayB0byB0aGUgdmVyc2lvbiB0aGF0IGRvZXMgbm90aGluZy4gVGhpcyB3YXkgdGhlIHRhc2sgdGVybWluYXRpb24KCXJvdXRpbmUgaXMgbm90IGV4ZWN1dGVkIHR3aWNlIGZvciB0aGUgZW52aXJvbm1lbnQgdGFzayB3aGVuIGZpbmlzaGluZwoJYmVjYXVzZSBvZiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLgoKCSogYS1leGV4dHIuYWRiIChOb3RpZnlfVW5oYW5kbGVkX0V4Y2VwdGlvbik6IENhbGwgdGhlIHRhc2sgdGVybWluYXRpb24KCWhhbmRsZXIgYmVjYXVzZSBvZiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLgoKCSogYS10YXNpZGUuYWRiIChBYm9ydF9UYXNrcyk6IENhbGwgdGhlIEFib3J0X1Rhc2tzIHByb2NlZHVyZSBmcm9tCglTeXN0ZW0uVGFza2luZy5VdGlsaXRpZXMgaW5zdGVhZCBvZiB0aGF0IGluIFN5c3RlbS5UYXNraW5nLlN0YWdlcy4KCgkqIHMtZmluaW1wLmFkYiAoaW5pdGlhbGl6YXRpb24gY29kZSk6IE1vZGlmeSB0aGUgc29mdCBsaW5rIGZvciB0aGUKCWZpbmFsaXphdGlvbiBvZiB0aGUgZ2xvYmFsIGxpc3QgaW5zdGVhZCBvZiBBZGFmaW5hbC4KCgkqIHMtc29mbGluLmFkcywgcy1zb2ZsaW4uYWRiIChUYXNrX1Rlcm1pbmF0aW9uX05UKTogQWRkIHRoaXMKCW5vbi10YXNraW5nIHZlcnNpb24gb2YgdGhlIHNvZnQgbGluayBmb3IgdGFzayB0ZXJtaW5hdGlvbi4gV2UgZG8KCW5vdGhpbmcgc2luY2UgaWYgd2UgYXJlIHVzaW5nIHRoZSBub24tdGFza2luZyB2ZXJzaW9uIGl0CgltZWFucyB0aGF0IHRoZSB0YXNrIHRlcm1pbmF0aW9uIGZ1bmN0aW9uYWxpdHkgaXMgbm90IHVzZWQuCgkoTnVsbF9GaW5hbGl6ZV9HbG9iYWxfTGlzdCk6IEFkZCB0aGlzIG51bGwgdmVyc2lvbiBmb3IgdGhlIHByb2NlZHVyZQoJaW4gY2hhcmdlIG9mIGZpbmFsaXppbmcgdGhlIGdsb2JhbCBsaXN0IGZvciBjb250cm9sbGVkIG9iamVjdHMuCgkoTnVsbF9BZGFmaW5hbCk6IFJlbW92ZSB0aGlzIHByb2NlZHVyZS4gQWRhZmluYWxfTlQgaGFzIGJlZW4gY3JlYXRlZAoJaW5zdGVhZCBmb3IgaGFuZGxpbmcgcnVuLXRpbWUgdGVybWluYXRpb24gaW4gYSBtb3JlIGZsZXhpYmxlIHdheS4KCShBZGFmaW5hbF9OVCk6IFRoaXMgbmV3IHByb2NlZHVyZSB3aWxsIHRha2UgY2FyZSBvZiBmaW5hbGl6aW5nIHRoZQoJZ2xvYmFsIGxpc3QgZm9yIGNvbnRyb2xsZWQgb2JqZWN0cyBpZiBuZWVkZWQsIGJ1dCBubyB0YXNraW5nCglmaW5hbGl6YXRpb24uCgoJKiBzLXRhcmVzdC5hZGIgKFRhc2tfTG9jayk6IERvIG5vdCB0cnkgdG8gbG9jayBhZ2FpbiB0aGUKCUdsb2JhbF9UYXNrX0xvY2sgaWYgd2UgYWxyZWFkeSBvd24gaXQuIE90aGVyd2lzZSwgd2UgZ2V0IGJsb2NrZWQgaW4KCXNvbWUgcnVuLXRpbWUgb3BlcmF0aW9ucy4KCShUYXNrX1VubG9jayk6IERvIG5vdCB0cnkgdG8gYWN0dWFsbHkgdW5sb2NrIHRoZSBHbG9iYWxfVGFza19Mb2NrCgl1bnRpbCBhbGwgbmVzdGVkIGxvY2tzIGhhdmUgYmVlbiByZWxlYXNlZC4KCShUYXNrX1dyYXBwZXIpOiBDYWxsIHRoZSBmYWxsLWJhY2sgdGFzayB0ZXJtaW5hdGlvbiBoYW5kbGVyLiBJdAoJYXBwbGllcyB0byBhbGwgdGFza3MgYnV0IHRoZSBlbnZpcm9ubWVudCB0YXNrLgoJKEZpbmFsaXplX0dsb2JhbF9UYXNrcyk6IEFkZCB0aGUgY2FsbCBmb3IgdGhlIHRhc2sgdGVybWluYXRpb24KCXByb2NlZHVyZSBmb3IgdGhlIGVudmlyb25tZW50IHRhc2suCgkoVGFza19XcmFwcGVyKTogc3VwcHJlc3Mgd2FybmluZ3MgYXJvdW5kIGRlY2xhcmF0aW9uIG9mCglTZWNvbmRhcnlfU3RhY2tfQWRkcmVzcy4KCgkqIHMtdGFzaW5pLmFkYiAoRmluYWxfVGFza19VbmxvY2spOiBHbG9iYWxfVGFza19Mb2NrX05lc3RpbmcgaGFzIGJlZW4KCW1vdmVkIHRvIHRoZSBDb21tb25fQVRDQiByZWNvcmQuCgkoVGFza19Mb2NrKTogR2xvYmFsX1Rhc2tfTG9ja19OZXN0aW5nIGhhcyBiZWVuIG1vdmVkIHRvIHRoZQoJQ29tbW9uX0FUQ0IgcmVjb3JkLgoJKFRhc2tfVW5sb2NrKTogR2xvYmFsX1Rhc2tfTG9ja19OZXN0aW5nIGhhcyBiZWVuIG1vdmVkIHRvIHRoZQoJQ29tbW9uX0FUQ0IgcmVjb3JkLgoKCSogcy10YXNraW4uYWRiIChJbml0aWFsaXplX0FUQ0IpOiBJbml0aWFsaXplIEdsb2JhbF9UYXNrX0xvY2tfTmVzdGluZywKCUZhbGxfQmFja19IYW5kbGVyLCBhbmQgU3BlY2lmaWNfSGFuZGxlci4KCgkqIHMtdGFza2luLmFkcyAoQ2F1c2VfT2ZfVGVybWluYXRpb24pOiBSZWRlZmluZSB0aGlzIHR5cGUgaGVyZSwgYWxyZWFkeQoJZGVmaW5lZCBpbiBBZGEuVGFza19UZXJtaW5hdGlvbiwgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgoJKFRlcm1pbmF0aW9uX0hhbmRsZXIpOiBSZWRlZmluZSB0aGlzIHR5cGUgaGVyZSwgYWxyZWR5IGRlZmluZWQgaW4KCUFkYS5UYXNrX1Rlcm1pbmF0aW9uLCBmb3IgYXZvaWRpbmcgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgoJKENvbW1vbl9BVENCKTogQWRkIHRoZSBGYWxsX0JhY2tfSGFuZGxlciBhbmQgU3BlY2lmaWNfSGFuZGxlciByZXF1aXJlZAoJZm9yIHN0b3JpbmcgdGFzayB0ZXJtaW5hdGlvbiBoYW5kbGVycy4gSW4gYWRkaXRpb24sCglHbG9iYWxfVGFza19Mb2NrX05lc3RpbmcgaGFzIGJlZW4gbW92ZWQgZnJvbSBBZGFfVGFza19Db250cm9sX0Jsb2NrIHRvCglDb21tb25fQVRDQiBiZWNhdXNlIGl0IGlzIHVzZWQgYnkgYm90aCB0aGUgcmVndWxhciBhbmQgdGhlIHJlc3RyaWN0ZWQKCXJ1biB0aW1lcy4KCShBZGFfVGFza19Db250cm9sX0Jsb2NrKTogTW92ZSBHbG9iYWxfVGFza19Mb2NrX05lc3RpbmcgZnJvbSBoZXJlIHRvCglDb21tb25fQVRDQiBiZWNhdXNlIGl0IGlzIHVzZWQgYnkgYm90aCB0aGUgcmVndWxhciBhbmQgdGhlIHJlc3RyaWN0ZWQKCXJ1biB0aW1lcy4KCShDb21tb25fQVRDQik6IEFkZGVkIGEgZHluYW1pYyB0YXNrIGFuYWx5emVyIGZpZWxkLgoKCSogcy10YXNzdGEuYWRiIChBYm9ydF9UYXNrcyk6IE1vdmUgdGhlIGNvZGUgaW4gY2hhcmdlIG9mIGNoZWNraW5nCglwb3RlbnRpYWxseSBibG9ja2luZyBvcGVyYXRpb25zIHRvIFN5c3RlbS5UYXNraW5nLlV0aWxpdGllcy5BYm9ydF9UYXNrcy4KCShUYXNrX1dyYXBwZXIpOiBDYWxsIHRoZSB0YXNrIHRlcm1pbmF0aW9uIGhhbmRsZXIuIEl0IGFwcGxpZXMgdG8gYWxsCgl0YXNrcyBidXQgdGhlIGVudmlyb25tZW50IHRhc2suCgkoRmluYWxpemVfR2xvYmFsX1Rhc2tzKTogQ2FsbCB0aGUgdGFzayB0ZXJtaW5hdGlvbiBwcm9jZWR1cmUgZm9yIHRoZQoJZW52aXJvbm1lbnQgdGFzay4gVGhlIGNhbGwgdG8gRmluYWxpemVfR2xvYmFsX0xpc3QgaXMgbm93IHBlcmZvcm1lZAoJdXNpbmcgdGhlIHNvZnQgbGlua3MgbWVjaGFuaXNtLgoJKFRhc2tfV3JhcHBlcik6IGFkZGVkIGR5bmFtaWMgc3RhY2sgYW5hbHlzaXMuCgoJKiBzLXRhc3V0aS5hZGIgKEFib3J0X1Rhc2tzKTogVGhlIGNvZGUgaW4gY2hhcmdlIG9mIGNoZWNraW5nCglwb3RlbnRpYWxseSBibG9ja2luZyBvcGVyYXRpb25zIGhhcyBiZWVuIG1vdmVkIGZyb20KCVN5c3RlbS5UYXNraW5nLlN0YWdlcy5BYm9ydF9UYXNrcyB0byB0aGlzIHByb2NlZHVyZS4gVGhlcmUgY2FuIGJlCglkaXJlY3QgY2FsbHMgdG8gU3lzdGVtLlRhc2tpbmcuVXRpbGl0aWVzLkFib3J0X1Rhc2tzIHRoYXQgZG8gbm90IHBhc3MKCXRocm91Z2ggU3lzdGVtLlRhc2tpbmcuU3RhZ2VzLkFib3J0X1Rhc2tzLCBhbmQgd2UgZG8gbm90IHdhbnQgdG8gbWlzcwoJdGhpcyBydW4tdGltZSBjaGVjay4KCgkqIHMtc29saXRhLmFkYiAoVGFza19UZXJtaW5hdGlvbl9IYW5kbGVyX1QpOiBBZGQgdGhpcyB0YXNrLXNhZmUgdmVyc2lvbgoJb2YgdGFzayB0ZXJtaW5hdGlvbiBwcm9jZWR1cmUuCgkoSW5pdF9UYXNraW5nX1NvZnRfTGlua3MpOiBJbnN0YWxsIHRoZSB0YXNrLXNhZmUgdmVyc2lvbiBvZiB0aGUgc29mdAoJbGluayBmb3IgdGhlIHRhc2sgdGVybWluYXRpb24gcHJvY2VkdXJlLgoKCSogYmluZHVzZy5hZGI6IChCaW5kdXNnKTogQWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgLXUgb3B0aW9uLgoKCSogYmluZGdlbi5hZGIgKEdldF9NYWluX0FkYSkgQWRkZWQgaGFuZGxpbmcgb2YgZHluYW1pYyBzdGFjayBhbmFseXNpcy4KCShHZXRfTWFpbl9DKTogQWRkIGhhbmRsaW5nIG9mIGR5bmFtaWMgc3RhY2sgYW5hbHlzaXMuCgkoR2VuX091dHB1dF9GaWxlX0MpOiBBZGQgZXh0ZXJuYWwgZnVuY3Rpb25zIGZvciBkeW5hbWljIHN0YWNrIGFuYWx5c2lzLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgZW50cnkgZm9yIGEtdGFzdGVyIChBZGEuVGFza19UZXJtaW5hdGlvbikuCgkoR05BVFJUTF9OT05UQVNLSU5HX09CSlMpIEFkZGVkIGVudHJpZXMgZm9yIGR5bmFtaWMgc3RhY2sgYW5hbHlzaXMKCShHTkFUUlRMX05PTlRBU0tJTkdfT0JKUyk6IEFkZCBBbHRpVmVjIGZpbGVzLgoKCSogb3B0LmFkczogQWRkZWQgZmxhZ3MgdXNlZCBieSBkeW5hbWljIHN0YWNrIG1lYXN1cmVtZW50LgoJKE1heF9MaW5lX0xlbmd0aCk6IFJlbW92ZSAobm90IHVzZWQgYW55bW9yZSkKCgkqIHMtaW8uYWRzLCBzLWlvLmFkYiAoU3RhbmRhcmRfRXJyb3IpOiBuZXcgc3VicHJvZ3JhbQoJKFN0YW5kYXJ0X091dHB1dCk6IG5ldyBzdWJwcm9ncmFtCgkoU2V0X091dHB1dCk6IG5ldyBzdWJwcm9ncmFtCgkoUHV0KTogbm93IHVzZXMgdGhlIHZhbHVlIG9mIEN1cnJlbnRfT3V0IHRvIGtub3cgaWYgdGhlIG91dHB1dCBoYXMgdG8gYmUKCXNlbmQgdG8gc3RkZXJyIG9yIHN0ZG91dC4KCQoJKiBzLXN0YXVzYS5hZHM6IENvbXBsZXRlIGltcGxlbWVudGF0aW9uLgoKCSogc3dpdGNoLWIuYWRiOiBBZGRlZCBoYW5kbGluZyBvZiAtdSBzd2l0Y2ggZm9yIGR5bmFtaWMgc3RhY2sgYW5hbHlzaXMuCgkKCSogaW1wdW5pdC5hZGIgKE5vbl9JbXBfRmlsZV9OYW1lc18wNSk6IEFkZCBBZGEuVGFza19UZXJtaW5hdGlvbiB0byB0aGUKCWxpc3Qgb2YgQWRhIDA1IGZpbGVzLgoJKEdOQVQgTGlicmFyeSBVbml0cyk6IEFkZCBBbHRpVmVjIGZpbGVzLgoKCSogZy1hbGxlaW4uYWRzLCBnLWFsbGV2ZS5hZGIsIGctYWxsZXZlLmFkcywgZy1hbHRjb24uYWRiLAoJZy1hbHRjb24uYWRzLCBnLWFsdGl2ZS5hZHMsIGctYWx2ZW9wLmFkYiwgZy1hbHZlb3AuYWRzCglnLWFsdmV0eS5hZHMsIGctYWx2ZXZpLmFkczogTmV3IGZpbGVzIHByb3ZpZGluZyBhbHRpdmVjIEFQSS4KCjIwMDUtMTItMDkgIE5pY29sYXMgU2V0dG9uICA8c2V0dG9uQGFkYWNvcmUuY29tPgoKCSogYWRhaW50LmMgKF9fZ25hdF9sb2NhdGVfcmVndWxhcl9maWxlKTogUmV0dXJuIGltbWVkaWF0ZWx5IGlmCglmaWxlX25hbWUgaXMgZW1wdHkuCgoyMDA1LTEyLTA5ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZHMsIGEtdGFncy5hZGIgKE9mZnNldF9Ub19Ub3ApOiBNb3ZlZCBmcm9tIHRoZSBwYWNrYWdlIGJvZHkKCXRvIHRoZSBzcGVjaWZpY2F0aW9uIGJlY2F1c2UgdGhlIGZyb250ZW5kIGdlbmVyYXRlcyBjb2RlIHRoYXQgdXNlcyB0aGlzCglzdWJwcm9ncmFtLgoJKFNldF9JbnRlcmZhY2VfVGFibGUpOiBBZGQgbWlzc2luZyBhc3NlcnRpb24uCglVcGRhdGUgZG9jdW1lbnRhdGlvbiBkZXNjcmliaW5nIHRoZSBydW4tdGltZSBzdHJ1Y3R1cmUuCgkoRGlzcGxhY2UpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IGRpc3BsYWNlcyB0aGUgcG9pbnRlciB0byB0aGUgb2JqZWN0Cgl0byByZWZlcmVuY2Ugb25lIG9mIGl0cyBzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGVzLgoJKElXX01lbWJlcnNoaXApOiBNb2RpZmllZCB0byB1c2UgdGhlIG5ldyB0YWJsZSBvZiBpbnRlcmZhY2VzLgoJKEluaGVyaXRfVFNEKTogTW9kaWZpZWQgdG8gdXNlIHRoZSBuZXcgdGFibGUgb2YgaW50ZXJmYWNlcy4KCShSZWdpc3Rlcl9JbnRlcmZhY2VfVGFnKTogVXNlIHRoZSBhZGRpdGlvbmFsIGZvcm1hbCB0byBmaWxsIHRoZQoJY29udGVudHMgb2YgdGhlIG5ldyB0YWJsZSBvZiBpbnRlcmZhY2VzLgoJKFNldF9JbnRlcmZhY2VfVGFibGUpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IHN0b3JlcyBpbiB0aGUgVFNEIHRoZQoJcG9pbnRlciB0byB0aGUgdGFibGUgb2YgaW50ZXJmYWNlcy4KCShTZXRfT2Zmc2V0X1RvX1RvcCk6IFVzZSB0aGUgYWRkaXRpb25hbCBmb3JtYWwgdG8gc2F2ZSBjb3B5IG9mCgl0aGUgb2Zmc2V0IHZhbHVlIGluIHRoZSB0YWJsZSBvZiBpbnRlcmZhY2VzLgoJVXBkYXRlIHN0cnVjdHVyZSBvZiBHTkFUIFByaW1hcnkgYW5kIFNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZSBkaWFncmFtLgoJQWRkIGNvbW1lbnQgc2VjdGlvbiBvbiBHTkFUIGRpc3BhdGNoIHRhYmxlIHByb2xvZ3VlLgoJKE9mZnNldF9Ub19TaWduYXR1cmUpOiBVcGRhdGUgdGhlIGNvbnN0YW50IHZhbHVlIG9mIHRoZSBTaWduYXR1cmUgZmllbGQuCgkoRGlzcGF0Y2hfVGFibGUpOiBVcGRhdGUgY29tbWVudCBvbiBoaWRkZW4gZmllbGRzIGluIHRoZSBwcm9sb2d1ZS4KCShHZXRfRW50cnlfSW5kZXgsIEdldF9QcmltX09wX0tpbmQsIEdldF9PZmZzZXRfSW5kZXgsIE9TRCwKCVNldF9FbnRyeV9JbmRleCwgU2V0X09mZnNldF9JbmRleCwgU2V0X1ByaW1fT3BfS2luZCwgU1NELCBUU0QpOiBDaGFuZ2UKCXRoZSB0eXBlIG9mIGZvcm1hbCBwYXJhbWV0ZXIgVCB0byBUYWcsIGludHJvZHVjZSBhZGRpdGlvbmFsIGFzc2VydGlvbnMuCgkoR2V0X051bV9QcmltX09wcywgU2V0X051bV9QcmltX09wcyk6IFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSB0eXBlCgljb252ZXJzaW9uLgoJKEdldF9UYWdnZWRfS2luZCwgU2V0X1RhZ2dlZF9LaW5kKTogTmV3IGJvZGllcy4KCgkqIGV4cF9jaDYuYWRiIChSZWdpc3Rlcl9JbnRlcmZhY2VfRFRfRW50cnkpOiBSZW1vdmUgdGhlIFRodW5rX0lkIGFjdHVhbAoJaW4gYWxsIHRoZSBjYWxscyB0byBFeHBhbmRfSW50ZXJmYWNlX1RodW5rLiBJbnN0ZWFkIG9mIHJlZmVyZW5jaW5nIHRoZQoJcmVjb3JkIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSB0YWcgb2YgdGhlIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZSB3ZQoJaGF2ZSB0byB1c2UgdGhlIE9mZnNldF9Ub19Ub3AgcnVuLXRpbWUgZnVuY3Rpb24gdG8gZ2V0IHRoaXMgaW5mb3JtYXRpb247CglvdGhlcndpc2UgaWYgdGhlIHBvaW50ZXIgdG8gdGhlIGJhc2Ugb2YgdGhlIG9iamVjdCBoYXMgYmVlbiBkaXNwbGFjZQoJd2UgZ2V0IGEgd3JvbmcgdmFsdWUgaWYgd2UgdXNlIHRoZSAncG9zaXRpb24gYXR0cmlidXRlLgoKCSogZXhwX2Rpc3AuYWRiIChFeHBhbmRfSW50ZXJmYWNlX1RodW5rKTogUmVtb3ZlIHRoZSBUaHVua19JZCBhY3R1YWwgaW4KCWFsbCB0aGUgY2FsbHMgdG8gRXhwYW5kX0ludGVyZmFjZV9UaHVuay4KCShNYWtlX1NlY29uZGFyeV9EVCk6IFNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZXMgZG8gbm90IGhhdmUgYSB0YWJsZSBvZgoJaW50ZXJmYWNlczsgaGVuY2UgdGhlIGNhbGwgdG8gU2V0X0ludGVyZmFjZV9UYWJsZSB3YXMgY2xlYXJseSB3cm9uZy4KCShDb2xsZWN0X0FsbF9JbnRlcmZhY2VzKTogTW9kaWZ5IHRoZSBpbnRlcm5hbCBzdWJwcm9ncmFtIENvbGxlY3QgdG8KCWVuc3VyZSB0aGF0IHRoZSBpbnRlcmZhY2VzIGltcGxlbWVudGVkIGJ5IHRoZSBhbmNlc3RvcnMgYXJlIHBsYWNlZAoJYXQgdGhlIGhlYWRlciBvZiB0aGUgZ2VuZXJhdGVkIGxpc3QuCgkoRXhwYW5kX0ludGVyZmFjZV9Db252ZXJzaW9uKTogSGFuZGxlIHRoZSBjYXNlIGluIHdoaWNoIHRoZSBkaXNwbGFjZW1lbnQKCWFzc29jaWF0ZWQgd2l0aCB0aGUgaW50ZXJmYWNlIGNvbnZlcnNpb24gaXMgbm90IHN0YXRpY2FsbHkga25vd24uIEluCgl0aGlzIGNhc2Ugd2UgZ2VuZXJhdGUgYSBjYWxsIHRvIHRoZSBuZXcgcnVuLXRpbWUgc3VicHJvZ3JhbSBEaXNwbGFjZS4KCShNYWtlX0RUKTogR2VuZXJhdGUgYW5kIGZpbGwgdGhlIG5ldyB0YWJsZSBvZiBpbnRlcmZhY2VzLgoJKEFkYV9BY3Rpb25zLCBBY3Rpb25fSXNfUHJvYywgQWN0aW9uX05iX0FyZyk6IEFkZCBlbnRyaWVzIGZvcgoJR2V0X1RhZ2dlZF9LaW5kIGFuZCBTZXRfVGFnZ2VkX0tpbmQuCgkoVGFnZ2VkX0tpbmQpOiBOZXcgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIHRoZSB0YWdnZWQga2luZCBvZiBhIHR5cGUKCXdpdGggcmVzcGVjdCB0byBsaW1pdGVkbmVzcyBhbmQgY29uY3VycmVuY3kgYW5kIHJldHVybnMgYSByZWZlcmVuY2UgdG8KCVJFX1RhZ2dlZF9LaW5kLgoJKE1ha2VfRGlzcF9Bc3luY2hyb25vdXNfU2VsZWN0X0JvZHksIE1ha2VfRGlzcF9Db25kaXRpb25hbF9TZWxlY3RfQm9keSwKCU1ha2VfRGlzcF9UaW1lZF9TZWxlY3RfQm9keSk6IENvcnJlY3RseSByZXRyaWV2ZSB0aGUgcG9pbnRlciB0byB0aGUKCXByaW1hcnkgZGlzcGF0Y2ggdGFibGUgZm9yIGEgdHlwZS4KCShNYWtlX0RULCBNYWtlX1NlY29uZGFyeV9EVCk6IFNldCB0aGUgdGFnZ2VkIGtpbmQgaW4gdGhlIHByaW1hcnkgYW5kCglzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGUgcmVzcGVjdGl2ZWx5IG9mIGEgdGFnZ2VkIHR5cGUuCgoJKiBleHBfZGlzcC5hZHMgKEV4cGFuZF9JbnRlcmZhY2VfVGh1bmspOiBSZW1vdmUgVGh1bmtfSWQgZm9ybWFsLgoJKEV4cGFuZF9JbnRlcmZhY2VfQ29udmVyc2lvbik6IE5ldyBzdWJwcm9ncmFtIHRvIGluZGljYXRlIGlmIHRoZQoJZGlzcGxhY2VtZW50IG9mIHRoZSB0eXBlIGNvbnZlcnNpb24gaXMgc3RhdGljYWxseSBrbm93bi4KCShEVF9BY2Nlc3NfQWN0aW9uKTogQWRkIHZhbHVlcyBHZXRfVGFnZ2VkX0tpbmQgYW5kIFNldF9UYWdnZWRfS2luZC4KCgkqIHJ0c2ZpbmQuYWRzIChSRV9PZmZzZXRfVG9fVG9wKTogTmV3IGVudGl0eQoJKFJUVV9JZCk6IEFkZCBBZGFfVGFza19UZXJtaW5hdGlvbiB0byB0aGUgbGlzdCBzbyB0aGF0IGl0IGlzIG1hZGUKCWFjY2Vzc2libGUgdG8gdXNlcnMuCgkoUmVfRGlzcGxhY2UpOiBOZXcgZW50aXR5CgkoUkVfSW50ZXJmYWNlX0RhdGEpOiBOZXcgZW50aXR5CgkoUkVfU2V0X0ludGVyZmFjZV9EYXRhKTogTmV3X0VudGl0eQoJKFJFX0lkLCBSRV9Vbml0X1RhYmxlKTogQWRkIGVudHJ5IGZvciBSRV9HZXRfVGFnZ2VkX0tpbmQsCglTZXRfVGFnZ2VkX0tpbmQsIFJFX1RhZ2dlZF9LaW5kLCBSRV9US19BYnN0cmFjdF9MaW1pdGVkX1RhZ2dlZCwKCVJFX1RLX0Fic3RyYWN0X1RhZ2dlZCwgUkVfVEtfTGltaXRlZF9UYWdnZWQsIFJFX1RLX1Byb3RlY3RlZCwKCVJFX1RLX1RhZ2dlZCwgUkVfVEtfVGFzay4KCgkqIGV4cF9jaDMuYWRiIChJbml0X1NlY29uZGFyeV9UYWdzKTogTW9kaWZ5IHRoZSBzdWJwcm9ncmFtCglJbml0X1NlY29uZGFyeV9UYWdzX0ludGVybmFsIHRvIGFsbG93IGl0cyB1c2Ugd2l0aCBpbnRlcmZhY2UgdHlwZXMgYW5kCglhbHNvIHRvIGdlbmVyYXRlIHRoZSBjb2RlIGZvciB0aGUgbmV3IGFkZGl0aW9uYWwgYWN0dWFsIHJlcXVpcmVkCglieSBTZXRfT2Zmc2V0X1RvX1RvcC4KCShCdWlsZF9Jbml0X1N0YXRlbWVudHMpOiBJbiBjYXNlIG9mIGNvbXBvbmVudHMgYXNzb2NpYXRlZCB3aXRoIGFic3RyYWN0CglpbnRlcmZhY2UgdHlwZXMgdGhlcmUgaXMgbm8gbmVlZCB0byBnZW5lcmF0ZSBhIGNhbGwgdG8gaXRzIElQLgoJKEZyZWV6ZV9SZWNvcmRfVHlwZSk6IEdlbmVyYXRlIFNlbGVjdCBTcGVjaWZpYyBEYXRhIHRhYmxlcyBvbmx5IGZvcgoJY29uY3VycmVudCB0eXBlcy4KCShNYWtlX1ByZWRlZmluZWRfUHJpbWl0aXZlX1NwZWNzLCBQcmVkZWZpbmVkX1ByaW1pdGl2ZV9Cb2RpZXMpOiBHZW5lcmF0ZQoJdGhlIGJvZGllcyBhbmQgc3BlY2lmaWNhdGlvbnMgb2YgdGhlIHByZWRlZmluZWQgcHJpbWl0aXZlIG9wZXJhdGlvbnMKCWRlYWxpbmcgd2l0aCBkaXNwYXRjaGluZyBzZWxlY3RzIGFuZCBhYm9ydCwgJ0NhbGxhYmxlLCAnVGVybWluYXRlZCBvbmx5Cglmb3IgY29uY3VycmVudCB0eXBlcy4KCgkqIGV4cF9zZWwuYWRzLCBleHBfc2VsLmFkYjogTmV3IGZpbGVzLgoKCSogZXhwX2NoOS5hZGIgKEJ1aWxkX1Byb3RlY3RlZF9FbnRyeSwgRXhwYW5kX05fUHJvdGVjdGVkX0JvZHksCglFeHBhbmRfTl9Qcm90ZWN0ZWRfVHlwZV9EZWNsYXJhdGlvbiwgTWFrZV9Jbml0aWFsaXplX1Byb3RlY3Rpb24pOiBIYW5kbGUKCXByb3Blcmx5IHByb3RlY3RlZCBvYmplY3RzIGFuZCBhdHRhY2ggaGFuZGxlciBpbiB0aGUgY2FzZSBvZiB0aGUKCXJlc3RyaWN0ZWQgcHJvZmlsZS4KCU1vdmUgZW1iZWRlZCBwYWNrYWdlIFNlbGVjdF9FeHBhbnNpb25fVXRpbGl0aWVzIGludG8gYSBzZXBhcmF0ZSBleHRlcm5hbAoJcGFja2FnZS4KCShFeHBhbmRfTl9Bc3luY2hyb25vdXNfU2VsZWN0LCBFeHBhbmRfTl9Db25kaXRpb25hbF9TZWxlY3QsCglFeHBhbmRfTl9UaW1lZF9FbnRyeV9DYWxsKTogQ29ycmVjdCBjYWxscyBleHRlcm5hbCBwYWNrYWdlIEV4cF9TZWwuCgkoQnVpbGRfSywgQnVpbGRfU19Bc3NpZ25tZW50KTogTmV3IHN1YnByb2dyYW1zLCBwYXJ0IG9mIHRoZSBzZWxlY3QKCWV4cGFuc2lvbiB1dGlsaXRpZXMuCgkoRXhwYW5kX05fQXN5bmNocm9ub3VzX1NlbGVjdCwgRXhwYW5kX05fQ29uZGl0aW9uYWxfRW50cnlfQ2FsbCwKCUV4cGFuZF9OX1RpbWVkX0VudHJ5X0NhbGwpOiBPcHRpbWl6ZSBleHBhbnNpb24gb2Ygc2VsZWN0IHN0YXRlbWVudHMKCXdoZXJlIHRoZSB0cmlnZ2VyIGlzIGEgZGlzcGF0Y2hpbmcgcHJvY2VkdXJlIG9mIGEgbGltaXRlZCB0YWdnZWQgdHlwZS4KCjIwMDUtMTItMDkgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgcmVuYW1pbmcgb2JqZWN0IGNhc2UpOiBEb24ndCBlYXJseSBleHBhbmQKCXBvaW50ZXIgaW5pdGlhbGl6YXRpb24gdmFsdWVzLiBNYWtlIGEgU0FWRV9FWFBSIGluc3RlYWQuIEFkZCBjb21tZW50cwoJYWJvdXQgdGhlIHVzZSBhbmQgZXhwYW5zaW9uIG9mIFNBVkVfRVhQUnMgaW4gdGhlIHZhcmlvdXMgcG9zc2libGUKCXJlbmFtaW5nIGhhbmRsaW5nIGNhc2VzLgoJKGNvbXBvbmVudHNfdG9fcmVjb3JkLCBjb21wYXJlX2ZpZWxkX2JpdHBvcyk6IFNvcnQgYnkgREVDTF9VSUQsIG5vdCBieQoJYWJ1c2luZyBERUNMX0ZDT05URVhULgoKMjAwNS0xMi0wOSAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLWNvbnZlYy5hZGIgKE1lcmdlKTogQWRkZWQgYXNzZXJ0aW9ucyB0byBjaGVjayB3aGV0aGVyIHZlY3RvciBwYXJhbXMKCWFyZSBzb3J0ZWQuCgoJKiBhLWNvaW52ZS5hZGIgKE1lcmdlKTogQWRkZWQgYXNzZXJ0aW9ucyB0byBjaGVjayB3aGV0aGVyIHZlY3RvciBwYXJhbXMKCWFyZSBzb3J0ZWQuCgoJKiBhLWNvaGFtYS5hZHMgKEN1cnNvcidXcml0ZSk6IHJhaXNlcyBQcm9ncmFtX0Vycm9yIHBlciBsYXRlc3QgQUktMzAyCglkcmFmdC4KCShDdXJzb3InUmVhZCk6IHJhaXNlcyBQRQoKCSogYS1jb2hhbWEuYWRiIChJbnNlcnQuTmV3X05vZGUpOiBVc2VzIGJveC1zdHlsZSBzeW50YXggdG8gaW5pdCBlbGVtCgl0byBpdHMgZGVmYXVsdCB2YWx1ZS4KCgkqIGEtY2loYW1hLmFkYjogTWFudWFsbHkgY2hlY2sgd2hldGhlciBjdXJzb3IncyBrZXkgYW5kIGVsZW0gYXJlCglub24tbnVsbAoKCSogYS1jaWRsbGkuYWRzLCBhLWNpZGxsaS5hZGIgKFNwbGljZSk6IENoYW5nZWQgcGFyYW0gbmFtZSBhbmQgcGFyYW0gbW9kZQoJKE1lcmdlKTogQXNzZXJ0IHRoYXQgdGFyZ2V0IGFuZCBzb3VyY2UgbGlzdHMgYXJlIGluIG9yZGVyCgkoU3dhcCk6IERlY2xhcmUgbm9uLWNvbnN0IHRlbXBvcmFyaWVzLCB0byBwYXNzIHRvIFNwbGljZQoKCSogYS1jZGxpbGkuYWRzOiAoU3BsaWNlKTogQ2hhbmdlZCBwYXJhbSBuYW1lIGFuZCBwYXJhbSBtb2RlCgoJKiBhLWNkbGlsaS5hZGI6IChTcGxpY2UpOiBDaGFuZ2VkIHBhcmFtIG5hbWUgYW5kIHBhcmFtIG1vZGUKCShNZXJnZSk6IEFzc2VydCB0aGF0IHRhcmdldCBhbmQgc291cmNlIGxpc3RzIGFyZSBpbiBvcmRlcgoJKFN3YXApOiBEZWNsYXJlIG5vbi1jb25zdCB0ZW1wb3JhcmllcywgdG8gcGFzcyB0byBTcGxpY2UKCgkqIGEtY2lvcm1hLmFkcywgYS1jb29ybWEuYWRzOiAoUmVhZCk6IGRlY2xhcmUgU3RyZWFtIHBhcmFtIGFzIG5vdCBudWxsCgkoV3JpdGUpOiBkZWNsYXJlIFN0cmVhbSBwYXJhbSBhcyBub3QgbnVsbAoKCSogYS1jaW9ybWEuYWRiLCBhLWNvb3JtYS5hZGI6IEFsbCBleHBsaWNpdCByYWlzZSBzdGF0ZW1lbnRzIG5vdyBpbmNsdWRlCglhbiBleGNlcHRpb24gbWVzc2FnZS4KCjIwMDUtMTItMDkgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBob3N0cGFybS5hZHMgKE1heF9MaW5lX0xlbmd0aCk6IFNldCB0byBUeXBlcy5Db2x1bW5fTnVtYmVyJ0xhc3QgLSAxLAoJd2hpY2ggaXMgdGhlIGFic29sdXRlIG1heGltdW0gbGVuZ3RoIHdlIGNhbiBzdXBwb3J0LgoKCSogZnJvbnRlbmQuYWRiOiBGb3IgdGhlIHByb2Nlc3Npbmcgb2YgY29uZmlndXJhdGlvbiBwcmFnbWEgZmlsZXMsCglyZW1vdmUgcmVmZXJlbmNlcyB0byBPcHQuTWF4X0xpbmVfTGVuZ3RoLCB3aGljaCBpcyBub3QgY2hlY2tlZCBhbnltb3JlLgoKCSogbmFtZXQuYWRzIChOYW1lX0J1ZmZlcik6IEFkanVzdCBzaXplIHRvIHJlZmxlY3QgaW5jcmVhc2Ugb24gbWF4IGxpbmUKCWxlbmd0aC4KCgkqIHNjbi5hZGIsIHNjbmcuYWRiOiAKCUFsd2F5cyBjaGVjayBsaW5lIGxlbmd0aCBhZ2FpbnN0IHRoZSBhYnNvbHV0ZSBzdXBwb3J0ZWQgbWF4aW11bSwKCUhvc3RwYXJtLk1heF9MaW5lX0xlbmd0aC4KCgkqIHN0eWxlc3cuYWRiIChTZXRfU3R5bGVfQ2hlY2tfT3B0aW9ucywgY2FzZSBNKTogVGhlIG1heGltdW0gc3VwcG9ydGVkCgl2YWx1ZSBmb3IgdGhlIG1heGltdW0gbGluZSBsZW5ndGggaXMgTWF4X0xpbmVfTGVuZ3RoIChub3QKCUNvbHVtbl9OdW1iZXInTGFzdCkuCglNaW5vciBlcnJvciBtc2cgdXBkYXRlCgkoU2V0X1N0eWxlX0NoZWNrX09wdGlvbnMpOiBOZXcgaW50ZXJmYWNlIHJldHVybmluZyBlcnJvciBtc2cKCU1pbm9yIGNvZGUgcmVvcmdhbml6YXRpb24gKHByb2Nlc3NpbmcgZm9yICdNJyB3YXMgb3V0IG9mIGFscGhhIG9yZGVyKQoKCSogc3dpdGNoLWMuYWRiOiBOZXcgaW50ZXJmYWNlIGZvciBTZXRfU3R5bGVfQ2hlY2tfT3B0aW9ucwoKCSogc3R5bGVzdy5hZHMgKFNldF9TdHlsZV9DaGVja19PcHRpb25zKTogTmV3IGludGVyZmFjZSByZXR1cm5pbmcgZXJyb3IKCW1zZy4KCjIwMDUtMTItMDkgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoQnVpbGRfUmVjb3JkX0FnZ3JfQ29kZSk6IERlZmF1bHQtaW5pdGlhbGlhbGl6ZWQgcmVjb3JkcwoJd2l0aCBJUCBzdWJwcm9ncmFtIHdlcmUgb25seSBzdXBwb3J0ZWQgaWYgdGhlcmUgd2VyZSBsaW1pdGVkIHR5cGVzLgoKCSogc2VtX2FnZ3IuYWRiIChSZXNvbHZlX1JlY29yZF9BZ2dyZWdhdGUpOiBEZWZhdWx0LWluaXRpYWxpYWxpemVkCglyZWNvcmRzIHdpdGggSVAgc3VicHJvZ3JhbSB3ZXJlIG9ubHkgc3VwcG9ydGVkIGlmIHRoZXJlIHdlcmUgbGltaXRlZAoJdHlwZXMuCgoyMDA1LTEyLTA5ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgZW1pdF9jaGVjayk6IEFkanVzdCBjYWxscyB0bwoJYnVpbGRfY2FsbF9yYWlzZSwgcGFzc2luZyB0aGUgbm93IGV4cGVjdGVkIEdOQVRfTk9ERSBhcmd1bWVudC4KCgkqIGdpZ2kuaCAoYnVpbGRfY2FsbF9yYWlzZSk6IEFkZCBhIEdOQVRfTk9ERSBhcmd1bWVudCB0byBjb252ZXkgYmV0dGVyCglzb3VyY2UgbGluZSBpbmZvcm1hdGlvbiB0aGFuIHdoYXQgdGhlIGN1cnJlbnQgZ2xvYmFsIGxvY3VzIGluZGljYXRlcwoJd2hlbiBhcHByb3ByaWF0ZS4KCgkqIHV0aWxzMi5jIChidWlsZF9zaW1wbGVfY29tcG9uZW50X3JlZik6IFJldHVybiAwIGlmIHRoZSBvZmZzZXQgb2YgdGhlCglmaWVsZCBoYXMgb3ZlcmZsb3dlZC4KCShidWlsZF9jYWxsX3JhaXNlKTogQWRkIGEgR05BVF9OT0RFIGFyZ3VtZW50IHRvIGNvbnZleSBiZXR0ZXIgc291cmNlCglsaW5lIGluZm9ybWF0aW9uIHRoYW4gd2hhdCB0aGUgY3VycmVudCBnbG9iYWwgbG9jdXMgaW5kaWNhdGVzIHdoZW4KCWFwcHJvcHJpYXRlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBBZGp1c3QgY2FsbCB0byBidWlsZF9jYWxsX3JhaXNlLgoKMjAwNS0xMi0wOSAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZy1kaW9waXQuYWRiIChGaW5kKTogRml4IHRlc3QgdG8gZXhpdCB0aGUgaXRlcmF0b3IgYW5kIG1ha2Ugc3VyZSB0aGF0Cgl0aGUgaXRlcmF0b3IgaXMgcXVpdHRpbmcgaXRlcmF0aW9uIG9uIHBhcmVudCBkaXJlY3RvcnkuCgoyMDA1LTEyLTA5ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX05fQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBJbiBjYXNlIG9mIHRhZ2dlZCB0eXBlcwoJYW5kIHRoZSBhc3NpZ25tZW50IHRvIGEgY2xhc3Mtd2lkZSBvYmplY3QsIGJlZm9yZSB0aGUgYXNzaWdubWVudCB3ZQoJZ2VuZXJhdGUgYSBydW4tdGltZSBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgdGFnIG9mIHRoZSBUYXJnZXQgaXMKCWNvdmVyZWQgYnkgdGhlIHRhZyBvZiB0aGUgc291cmNlLgoKMjAwNS0xMi0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfaW1ndi5hZGIgKEV4cGFuZF9JbWFnZV9BdHRyaWJ1dGUpOiBHZW5lcmF0ZSBleHRyYSBib29sZWFuCglwYXJhbWV0ZXIgaW4gY2FsbCB0byBJbWFnZV9XaWRlX0NoYXJhY3Rlci4KCgkqIHMtaW1nd2NoLmFkcywgcy1pbWd3Y2guYWRiIChJbWFnZV9XaWRlX0NoYXJhY3Rlcik6IEFkZCBib29sZWFuCglwYXJhbWV0ZXIgQWRhXzIwMDUgdG8gZGVhbCB3aXRoIGFubm95aW5nIEZGRkUvRkZGRiBpbmNvbnNpc3RlbmN5LgoJKEltYWdlX1dpZGVfQ2hhcmFjdGVyKTogQWRkIGJvb2xlYW4gcGFyYW1ldGVyIEFkYV8yMDA1IHRvIGRlYWwgd2l0aAoJYW5ub3lpbmcgRkZGRS9GRkZGIGluY29uc2lzdGVuY3kuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX3V0aWwuYWRzLCBleHBfdXRpbC5hZGIgKElzX1JlZl9Ub19CaXRfUGFja2VkX1NsaWNlKTogSGFuZGxlIGNhc2UKCW9mIHR5cGUgY29udmVyc2lvbi4KCShGaW5kX0ludGVyZmFjZSk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgZ2l2ZW4gYSB0YWdnZWQgdHlwZSBhbmQgb25lIG9mIGl0cwoJY29tcG9uZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2Vjb25kYXJ5IHRhYmxlIG9mIGFuIGFic3RyYWN0IGludGVyZmFjZQoJdHlwZSwgcmV0dXJuIHRoZSBlbnRpdHkgYXNzb2NpYXRlZCB3aXRoIHN1Y2ggYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGUuCgkoTWFrZV9TdWJ0eXBlX0Zyb21fRXhwcik6IElmIHR5cGUgaGFzIHVua25vd24gZGlzY3JpbWluYW50cywgYWx3YXlzIHVzZQoJYmFzZSB0eXBlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgc3VidHlwZSwgYmVjYXVzZSBlbnRpdHkgbWF5IGJlIGEgbG9jYWxseQoJZGVjbGFyZWQgc3VidHlwZSBvciBnZW5lcmljIGFjdHVhbC4KCShGaW5kX0ludGVyZmFjZSk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgZ2l2ZW4gYSB0YWdnZWQgdHlwZSBhbmQgb25lIG9mIGl0cwoJY29tcG9uZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2Vjb25kYXJ5IHRhYmxlIG9mIGFuIGFic3RyYWN0IGludGVyZmFjZQoJdHlwZSwgcmV0dXJuIHRoZSBlbnRpdHkgYXNzb2NpYXRlZCB3aXRoIHN1Y2ggYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGUuCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBIYW5kbGUgdGhlIGNhc2UgaW4gd2hpY2ggdGhlCgljb252ZXJzaW9uIGNhbm5vdCBiZSBoYW5kbGVkIGF0IGNvbXBpbGUgdGltZS4gSW4gdGhpcyBjYXNlIHdlIHBhc3MgdGhpcwoJaW5mb3JtYXRpb24gdG8gdGhlIGV4cGFuZGVyIHRvIGdlbmVyYXRlIHRoZSBhcHByb3ByaWF0ZSBjb2RlLgoKMjAwNS0xMi0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGVpbmZvLmFkYiAoSXR5cGVfUHJpbnRlZCk6IE5ldyBmbGFnCgkoSXNfTGltaXRlZF9UeXBlKTogRGVyaXZlZCB0eXBlcyBkbyBub3QgaW5oZXJpdCBsaW1pdGVkbmVzcyBmcm9tCglpbnRlcmZhY2UgcHJvZ2VuaXRvcnMuCgkoSXNfUmV0dXJuX0J5X1JlZmVyZW5jZV9UeXBlKTogUHJlZGljYXRlIGRvZXMgbm90IGFwcGx5IHRvIGxpbWl0ZWQKCWludGVyZmFjZXMuCgoJKiBlaW5mby5hZHMgKEl0eXBlX1ByaW50ZWQpOiBOZXcgZmxhZwoJTW92ZSBJc19XcmFwcGVyX1BhY2thZ2UgdG8gcHJvcGVyIHNlY3Rpb24KCUFkZCBtaXNzaW5nIElubGluZSBmb3IgSXNfVm9sYXRpbGUKCgkqIG91dHB1dC5hZHMsIG91dHB1dC5hZGIgKFdyaXRlX0VyYXNlX0NoYXIpOiBOZXcgcHJvY2VkdXJlCgkoU2F2ZS9SZXN0b3JlX091dHB1dF9CdWZmZXIpOiBOZXcgcHJvY2VkdXJlcwoJKFNhdmUvUmVzdG9yZV9PdXRwdXRfQnVmZmVyKTogTmV3IHByb2NlZHVyZXMKCgkqIHNwcmludC5hZHMsIHNwcmludC5hZGIgKFdyaXRlX0l0eXBlKTogSGFuZGxlIGNhc2Ugb2YgcmVjb3JkIGl0eXBlcwoJQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgYW5vbnltb3VzIGFjY2VzcyB0eXBlCgkoV3JpdGVfSWQpOiBJbnNlcnQgY2FsbHMgdG8gV3JpdGVfSXR5cGUKCShXcml0ZV9JdHlwZSk6IE5ldyBwcm9jZWR1cmUgdG8gb3V0cHV0IGl0eXBlcwoKCSogcGFyLWNoMTIuYWRiIChQX0Zvcm1hbF9EZXJpdmVkX1R5cGVfRGVmaW5pdGlvbik6IEluIEFkYSAyMDA1LCBoYW5kbGUKCXVzZSBvZiAibGltaXRlZCIgaW4gZGVjbGFyYXRpb24uCgoJKiBzaW5mby5hZHMsIHNpbmZvLmFkYjogCglGb3JtYWwgZGVyaXZlZCB0eXBlcyBjYW4gY2FycnkgYW4gZXhwbGljaXQgImxpbWl0ZWQiIGluZGljYXRpb24uCgoJKiBzZW1fY2gzLmFkYjogQWRkIHdpdGggYW5kIHVzZSBvZiBUYXJncGFybS4KCShDcmVhdGVfQ29tcG9uZW50KTogSWYgRnJvbnRlbmRfTGF5b3V0X09uX1RhcmdldCBpcyBUcnVlIGFuZCB0aGUKCWNvcGllZCBjb21wb25lbnQgZG9lcyBub3QgaGF2ZSBhIGtub3duIHN0YXRpYyBFc2l6ZSwgdGhlbiByZXNldAoJdGhlIHNpemUgYW5kIHBvc2l0aW9uYWwgZmllbGRzIG9mIHRoZSBuZXcgY29tcG9uZW50LgoJKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uKTogQSBsaW1pdGVkIGNvbXBvbmVudCBpcwoJbGVnYWwgd2l0aGluIGEgcHJvdGVjdGVkIHR5cGUgdGhhdCBpbXBsZW1lbnRzIGFuIGludGVyZmFjZS4KCShDb2xsZWN0X0ludGVyZmFjZXMpOiBEbyBub3QgYWRkIHRvIHRoZSBsaXN0IHRoZSBpbnRlcmZhY2VzIHRoYXQKCWFyZSBpbXBsZW1lbnRlZCBieSB0aGUgYW5jZXN0b3JzLgoJKERlcml2ZWRfVHlwZV9EZWNsYXJhdGlvbik6IElmIHRoZSBwYXJlbnQgb2YgdGhlIGZ1bGwtdmlldyBpcyBhbgoJaW50ZXJmYWNlIHBlcmZvcm0gYSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgdHJlZSB0byBlbnN1cmUgdGhhdCBpdCBoYXMKCXRoZSBzYW1lIHBhcmVudCB0aGFuIHRoZSBwYXJ0aWFsLXZpZXcuIFRoaXMgc2ltcGxpZmllcyB0aGUgam9iIG9mIHRoZQoJZXhwYW5kZXIgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3Qgb2JqZWN0IGxheW91dCwgYW5kIGl0IGlzCgluZWVkZWQgYmVjYXVzZSB0aGUgbGlzdCBvZiBpbnRlcmZhY2VzIG9mIHRoZSBmdWxsLXZpZXcgY2FuIGJlIGdpdmVuIGluCglhbnkgb3JkZXIuCgkoUHJvY2Vzc19GdWxsX1ZpZXcpOiBUaGUgcGFyZW50IG9mIHRoZSBmdWxsLXZpZXcgZG9lcyBub3QgbmVlZCB0byBiZQoJYSBkZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQgb2YgdGhlIHBhcnRpYWwgdmlldyBpZiBib3RoIHBhcmVudHMgYXJlCglpbnRlcmZhY2VzLgoJKEFuYWx5emVfUHJpdmF0ZV9FeHRlbnNpb25fRGVjbGFyYXRpb24pOiBJZiBkZWNsYXJhdGlvbiBoYXMgYW4gZXhwbGljaXQKCSJsaW1pdGVkIiB0aGUgcGFyZW50IG11c3QgYmUgYSBsaW1pdGVkIHR5cGUuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IEEgZGVyaXZlZCB0eXBlIHRoYXQgaXMgZXhwbGljaXRseSBsaW1pdGVkCgltdXN0IGhhdmUgbGltaXRlZCBhbmNlc3RvciBhbmQgcHJvZ2VuaXRvcnMuCgkoQnVpbGRfRGVyaXZlZF9UeXBlKTogRGl0dG8uCgkoUHJvY2Vzc19GdWxsX1ZpZXcpOiBWZXJpZnkgdGhhdCBleHBsaWNpdCB1c2VzIG9mICJsaW1pdGVkIiBpbiBwYXJ0aWFsCglhbmQgZnVsbCBkZWNsYXJhdGlvbnMgYXJlIGNvbnNpc3RlbnQuCgkoRmluZF9BbmNlc3Rvcl9JbnRlcmZhY2UpOiBSZW1vdmUgZnVuY3Rpb24uCgkoQ29sbGVjdF9JbXBsZW1lbnRlZF9JbnRlcmZhY2VzKTogTmV3IHByb2NlZHVyZSB1c2VkIHRvIGdhdGhlciBhbGwKCWltcGxlbWVudGVkIGludGVyZmFjZXMgYnkgYSB0eXBlLgoJKENvbnRhaW5fSW50ZXJmYWNlKTogTmV3IGZ1bmN0aW9uIHVzZWQgdG8gY2hlY2sgd2hldGhlciBhbiBpbnRlcmZhY2UgaXMKCXByZXNlbnQgaW4gYSBsaXN0LgoJKEZpbmRfSGlkZGVuX0ludGVyZmFjZSk6IE5ldyBmdW5jdGlvbiB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHR3bwoJbGlzdHMgb2YgaW50ZXJmYWNlcyBjb25zdGl0dXRlIGEgc2V0IGVxdWFsaXR5LiBJZiBub3QsIHRoZSBmaXJzdAoJZGlmZmVyaW5nIGludGVyZmFjZSBpcyByZXR1cm5lZC4KCShQcm9jZXNzX0Z1bGxfVmlldyk6IEltcHJvdmUgdGhlIGNoZWNrIGZvciB0aGUgIm5vIGhpZGRlbiBpbnRlcmZhY2UiCglydWxlIGFzIGRlZmluZWQgYnkgQUktMzk2LgoKMjAwNS0xMi0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfUmVjb3JkX1R5cGUpOiBPbmx5IHRlc3QgZm9yIHVzZWxlc3MgcGFjayBvbiByZWNvcmQKCXR5cGVzLCBub3Qgb24gcmVjb3JkIHN1YnR5cGVzLgoJKEZyZWV6ZV9FbnRpdHkpOiBDb2RlIGNsZWFudXAuIEFkZCBiYXJyaWVyIHRvIHRoZSBsb29wCgl0aGF0IGdlbmVyYXRlcyB0aGUgcmVmZXJlbmNlcyBmb3IgcHJpbWl0aXZlIG9wZXJhdGlvbnMuIFRoaXMgYWxsb3dzIHRvCglyZW1vdmUgYW4gdW5uZWNlc3NhcnkgZXhjZXB0aW9uIGhhbmRsZXIuCglDb2RlIHJlZm9ybWF0dGluZyBhbmQgY29tbWVudCBjbGVhbiB1cHMuCgoyMDA1LTEyLTA5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRjbWQuYWRiIChHTkFUQ21kKTogR05BVCBDSEVDSyBhY2NlcHRzIHN3aXRjaCAtVQoJSWYgR05BVCBDSEVDSyBpcyBjYWxsZWQgd2l0aCBhIHByb2plY3QgZmlsZSwgYnV0IHdpdGggbm8KCXNvdXJjZSBvbiB0aGUgY29tbWFuZCBsaW5lLCBjYWxsIGduYXRjaGVjayB3aXRoIGFsbCB0aGUgY29tcGlsYWJsZQoJc291cmNlcyBvZiB0aGUgcHJvamVjdC4KCVRha2UgaW50byBhY2NvdW50IHRoZSBuZXcgY29tbWFuZCBDaGVjaywgZm9yIGduYXRjaGVjay4gVHJlYXQgYXMgZm9yCglvdGhlciBBU0lTIHRvb2xzOiB0YWtlIGludG8gYWNjb3VudCBwcm9qZWN0LCBzcGVjaWZpYyBwYWNrYWdlIENoZWNrIGFuZAoJQ29tcGlsZXIgc3dpdGNoZXMuCglGb3IgQVNJUyB0b29scywgYWRkIHRoZSBzd2l0Y2hlcyBpbiBwYWNrYWdlIENvbXBpbGVyIGZvcgoJdGhlIGludm9jYXRpb24gb2YgdGhlIGNvbXBpbGVyLgoKCSogcHJqLWF0dHIuYWRiOiBBZGQgcGFja2FnZSBDaGVjayBhbmQgaXRzIGF0dHJpYnV0ZXMKCgkqIHZtc19jb252LmFkcyAoQ29tbWFuZF9UeXBlKTogTmV3IGNvbW1hbmQgQ2hlY2ssIGZvciBnbmF0Y2hlY2sKCgkqIHZtc19jb252LmFkYiAoSW5pdGlhbGl6ZSk6IENoYW5nZSBQYXJhbXMgb2YgY29tbWFuZCBDaGVjayB0bwoJdW5saW1pdGVkIGZpbGVzLgoJQ2hhbmdlIHNvbWUgSG9zdHBhcm0uT3BlblZNUyBjaGVja3MgdG8gVGFyZ3Bhcm0uT3BlblZNU19Pbl9UYXJnZXQuCglBZGQgZGF0YSBmb3IgbmV3IGNvbW1hbmQgQ2hlY2sKCgkqIHZtc19kYXRhLmFkczogQWRkIHByb2plY3QgcmVsYXRlZCBxdWFsaWZpZXJzIGZvciBHTkFUIENIRUNLIGFuZCBHTkFUCglFTElNLgoJQWRkIHF1YWxpZmllcnMgZm9yIENoZWNrIGNvbW1hbmQgb3B0aW9ucwoJKENvbW1hbmRfVHlwZSk6IE5ldyBjb21tYW5kIENoZWNrCgoyMDA1LTEyLTA5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogbWxpYi11dGwuYWRiIChBcik6IFVzZSBPdXRwdXQuQnVmZmVyX01heCB0byBkZXRlcm1pbmUgd2hldGhlciBhCgljb21tYW5kIGxpbmUgc3dpdGNoIG92ZXJydW5zIHRoZSBvdXRwdXQgYnVmZmVyLgoKMjAwNS0xMi0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fcHJhZy5hZGI6IFByb2Nlc3NpbmcgZm9yIG5ldyBwcmFnbWEgQ29tcGxldGVfUmVwcmVzZW50YXRpb24KCShBbmFseXplX1ByYWdtYSwgY2FzZSBEZWJ1Zyk6IEltcGxlbWVudCB0d28gYXJndW1lbnQgZm9ybS4KCgkqIHBhci1wcmFnLmFkYjogRW50cnkgZm9yIG5ldyBwcmFnbWEgQ29tcGxldGVfUmVwcmVzZW50YXRpb24KCShQcmFnLCBjYXNlIERlYnVnKTogUmVjb2duaXplIHR3byBhcmd1bWVudCBmb3JtIG9mIHByYWdtYSBEZWJ1ZwoJTmV3IGludGVyZmFjZSBmb3IgU2V0X1N0eWxlX0NoZWNrX09wdGlvbnMuCgoJKiBzZW1fY2gxMy5hZGI6IEltcGxlbWVudCBuZXcgcHJhZ21hIENvbXBsZXRlX1JlcHJlc2VudGF0aW9uLgoKCSogc25hbWVzLmFkYiwgc25hbWVzLmFkcywgc25hbWVzLmg6IEVudHJ5IGZvciBuZXcgcHJhZ21hCglDb21wbGV0ZV9SZXByZXNlbnRhdGlvbi4KCjIwMDUtMTItMDkgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jYXQuYWRiIChWYWxpZGF0ZV9SQ0lfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IFJldmlzZSB0ZXN0IGZvcgoJYXZhaWxhYmxlIHVzZXItc3BlY2lmaWVkIHN0cmVhbSBhdHRyaWJ1dGVzIG9uIGxpbWl0ZWQgcGFyYW1ldGVycyB0bwoJYWxzbyB0ZXN0IHRoZSB0eXBlIGRpcmVjdGx5IHJhdGhlciB0aGFuIG9ubHkgaXRzIHVuZGVybHlpbmcgdHlwZSAoZm9yCglBZGEgOTUpIGFuZCwgaW4gdGhlIGNhc2Ugb2YgQWRhIDIwMDUsIHRvIGNoZWNrIHRoYXQgdGhlIHVzZXItc3BlY2lmaWVkCglhdHRyaWJ1dGVzIGFyZSB2aXNpYmxlIGF0IHRoZSBwb2ludCBvZiB0aGUgc3VicHJvZ3JhbSBkZWNsYXJhdGlvbi4KCUZvciBBZGEgMjAwNSwgdGhlIGVycm9yIG1lc3NhZ2UgaXMgbW9kaWZpZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUKCXR5cGUncyBzdHJlYW0gYXR0cmlidXRlcyBtdXN0IGJlIHZpc2libGUgKGFnYWluLCBvbmx5IGZvciAtZ25hdDA1KS4KCjIwMDUtMTItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoU3VidHlwZXNfTWF0Y2gpOiBIYW5kbGUgcHJvcGVybHkgQWRhMDUgYXJyYXlzIG9mCglhbm9ueW1vdXMgYWNjZXNzIHR5cGVzLgoKCSogc2VtX2V2YWwuYWRiIChTdWJ0eXBlc19TdGF0aWNhbGx5X01hdGNoKTogSW1wbGVtZW50IG5ldyBydWxlcyBmb3IKCW1hdGNoaW5nIG9mIGFub255bW91cyBhY2Nlc3MgdHlwZXMgYW5kIGFub255bW91cyBhY2Nlc3MgdG8gc3VicHJvZ3JhbQoJdHlwZXMuICdSJ00gNC45LjEgKDIvMikuCgoyMDA1LTEyLTA5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoUmVtb3ZlX0Fic3RyYWN0X09wZXJhdGlvbnMpOiBEbyBub3QgYXBwbHkgcHJlZmVyZW5jZQoJcnVsZSBwcmVtYXR1cmVseSB3aGVuIG9wZXJhbmRzIGFyZSB1bml2ZXJzYWwsIHJlbWFpbmluZyBhbWJpZ3VpdGllcwoJd2lsbCBiZSByZW1vdmVkIGR1cmluZyByZXNvbHV0aW9uLgoJQ29kZSBjbGVhbnVwLgoKCSogc2VtX3R5cGUuYWRiIChEaXNhbWJpZ3VhdGUpOiBJbiBBZGE5NSBtb2RlLCBkaXNjYXJkIGludGVycHJldGF0aW9ucwoJdGhhdCBhcmUgQWRhIDIwMDUgZnVuY3Rpb25zLgoJKEhhc19BYnN0cmFjdF9JbnRlcnByZXRhdGlvbik6IFN1YnNpZGlhcnkgdG8KCVJlbW92ZV9Db252ZXJzaW9ucywgdG8gcmVtb3ZlIGFtYmlndWl0aWVzIGNhdXNlZCBieSBhYnN0cmFjdCBvcGVyYXRpb25zCglvbiBudW1lcmljIHR5cGVzIHdoZW4gb3BlcmFuZHMgYXJlIHVuaXZlcnNhbC4KCjIwMDUtMTItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNi5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogUHJvcGVybHkgY2hlY2sgY2F0ZWdvcml6YXRpb24KCWZvciBjYXNlIHdoZXJlIHNwZWMgaXMgY2F0ZWdvcml6ZWQuCgoyMDA1LTEyLTA5ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g4LmFkYiAoRmluZF9UeXBlKTogSW4gY2FzZSBvZiB0YWdnZWQgdHlwZXMgdGhhdCBhcmUgY29uY3VycmVudAoJdHlwZXMgdXNlIHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZCB0eXBlLiBUaGlzIHdhcyBub3QgbmVlZGVkIGJlZm9yZQoJdGhlIGltcGxlbWVudGF0aW9uIG9mIEFkYSAyMDA1IHN5bmNocm9uaXplZCB0eXBlcyBiZWNhdXNlCgljb25jdXJyZW50IHR5cGVzIHdlcmUgbmV2ZXIgdGFnZ2VkIHR5cGVzIGluIEFkYSA5NS4KCjIwMDUtMTItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDkuYWRiIChBbmFseXplX0RlbGF5X0FsdGVybmF0aXZlLCBBbmFseXplX0RlbGF5X1VudGlsKTogVXNlIHRoZQoJZmlyc3Qgc3VidHlwZSBvZiB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbiB0byB2ZXJpZnkgdGhhdCBpdCBpcyBhCglsZWdhbCBUaW1lIHR5cGUuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV91dGlsLmFkcywgc2VtX3V0aWwuYWRiIChGdWxsX1F1YWxpZmllZF9OYW1lKTogTm93IHByb3ZpZGVzCglkZWNvZGVkIG5hbWVzLgoKMjAwNS0xMi0wOSAgUXVlbnRpbiBPY2hlbSAgPG9jaGVtQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIEZhbGlzICA8ZmFsaXNAYWRhY29yZS5jb20+CgkgICAgRmxvcmlhbiBWaWxsb2luZyAgPHZpbGxvaW5nQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogZ25hdF91Z24udGV4aTogQ3JlYXRlZCBzZWN0aW9uICJTdGFjayBSZWxhdGVkIFRvb2xzIgoJTW92ZWQgIlN0YWNrIE92ZXJmbG93IENoZWNraW5nIiBzdWJzZWN0aW9uIGZyb20gIlN3aXRjaGVzIGZvciBnY2MiIHRvCgkiU3RhY2sgUmVsYXRlZCBUb29scyIKCUFkZGVkIHN1YnNlY3Rpb24gIlN0YXRpYyBTdGFjayBVc2FnZSBBbmFseXNpcyIKCUFkZGVkIHN1YnNlY3Rpb24gIkR5bmFtaWMgU3RhY2sgVXNhZ2UgQW5hbHlzaXMiCglJbmNsdWRlIGRvY3VtZW50YXRpb24gb2YgaXR5cGVzIGluIHNwcmludCBsaXN0aW5nICgtZ25hdEcpCglEb2N1bWVudGVkIGduYXRiaW5kIC1EIHN3aXRjaCAoZGVmYXVsdCBzZWMgc3RhY2sgc2l6ZSBmb3IgZml4ZWQgc2VjCglzdGFja3MpLgoJQWRkZWQgSW50ZXJydXB0X1N0YXRlIGFuZCBQZXJzaXN0ZW50X0JTUyB0byBsaXN0IG9mIGNvbmZpZ3VyYXRpb24KCXByYWdtYXMuCglBZGQgbWlzc2luZyBkb2MgZm9yIG1heGltdW0gdmFsdWUgb2Ygbm5uIGluIC1nbmF0eU1ubm4KCgkqIGduYXRfcm0udGV4aTogRG9jdW1lbnQgdGhlIEFsdGlWZWMgYmluZGluZy4KCUFkZCBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgQ29tcGxldGVfUmVwcmVzZW50YXRpb24KCVNob3J0ZW5lZCBhbiBvdmVybHkgbG9uZyBsaW5lICg+IDc5IGNoYXJzKQoJQ2xhcmlmeSBkb2N1bWVudGF0aW9uIG9mIHVuY2hlY2tlZCBjb252ZXJzaW9uIGluIGltcGxlbWVudGF0aW9uCglkZWZpbmVkIGNhc2VzLgoJRG9jdW1lbnQgdHdvIGFyZ3VtZW50IGZvcm0gb2YgcHJhZ21hIERlYnVnCgoJKiB0eXBlcy5hZHMgKENvbHVtbl9OdW1iZXIpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCgkqIGV4cF9jaDcuYWRzIChNYWtlX0FkanVzdF9DYWxsKTogRG9jdW1lbnQgdGhlIHNwZWNpYWwgcHJvY2Vzc2luZyBmb3IKCWxpYnJhcnkgbGV2ZWwgRmluYWxpemVfU3RvcmFnZV9Pbmx5IG9iamVjdHMgKHRoZXNlIGFyZSBub3QgYXR0YWNoZWQgdG8KCWFueSBmaW5hbGl6YXRpb24gbGlzdCkuCgoJKiBzeXN0ZW0tbWluZ3cuYWRzOiAoVW5kZXJseWluZ19Qcmlvcml0aWVzKTogVXBkYXRlIGNvbW1lbnQuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGktYy5hZGIsIGktY2V4dGVuLmFkcywgaS1jb2JvbC5hZGIsIGktY29ib2wuYWRzLCBpLWNwb2ludC5hZHMsCglpLWNwcC5hZGIsIGktY3BwLmFkcywgaS1jc3RyZWEuYWRzLCBpLWNzdHJpbi5hZGIsIGktY3N0cmluLmFkcywKCWlubGluZS5hZGIsIGludGVyZmFjLmFkcywgaS1vczJlcnIuYWRzLCBpLW9zMmxpYi5hZHMsIGktb3Myc3luLmFkcywKCWktb3MydGhyLmFkcywgaXR5cGVzLmFkYiwgaXR5cGVzLmFkYiwgaXR5cGVzLmFkcywga3J1bmNoLmFkcywKCWtydW5jaC5hZGIsIGxpYi5hZGIsIGxpYi5hZHMsIGxpYi1saXN0LmFkYiwgbGliLWxvYWQuYWRiLAoJbGliLWxvYWQuYWRzLCBsaWItc29ydC5hZGIsIGxpdmUuYWRiLCBtYWtlLmFkcywgaS1jc3RyZWEtdm1zLmFkYiwKCWludGVyZmFjLXZtcy5hZHMsIG1ha2VncHIuYWRiLCBpbmRlcHN3LWdudS5hZGIsIGluZGVwc3cuYWRzLAoJcy13Y2hjb24uYWRzLCBzZGVmYXVsdC5hZHMsIHNlbV9jaDEwLmFkYiwgc2VtX2V2YWwuYWRzOiBNaW5vcgoJcmVmb3JtYXR0aW5nLgoKMjAwNS0xMi0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzLXZhZmxvcC12bXMtYWxwaGEuYWRiOiAoTmVfRik6IE5ldyBmdW5jdGlvbgoJKE5lX0cpOiBOZXcgZnVuY3Rpb24KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBGYWN0b3IgZHVwbGljYXRlZCBjb2RlCglmb3IgdGFnIGFzc2lnbm1lbnQuCgkoUmV3cml0ZV9Db21wYXJpc29uKTogSGFuZGxlIGNhc2Ugd2hlcmUgb3BlcmF0aW9uIGlzIG5vdCBhIGNvbXBhcmlzb24KCWFuZCBpZ25vcmUsIGFuZCBhbHNvIGhhbmRsZSB0eXBlIGNvbnZlcnNpb24gY2FzZS4KCjIwMDUtMTItMDkgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfYWdnci5hZHM6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgk/Pz8tbWFyayBDb252ZXJ0X0FnZ3JfSW5fQXNzaWdubWVudCBhcyBuZWVkaW5nIGRvY3VtZW50YXRpb24uCgoyMDA1LTEyLTA5ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBsYXlvdXQuYWRiOiBSZXBsYWNlIHZhcmlvdXMgdXNlcyBvZiBieXRlIGJ5IHN0b3JhZ2UgdW5pdCB0aHJvdWdob3V0LgoJKEdldF9NYXhfU1VfU2l6ZSk6IE5hbWUgY2hhbmdlZCBmcm9tIEdldF9NYXhfU2l6ZS4gSW4gdGhlIGNhc2Ugb2YgYQoJc3RhdGljIHNpemUsIGNvbnZlcnQgdG8gc3RvcmFnZSB1bml0cyBiZWZvcmUgcmV0dXJuaW5nLCB0byBjb25mb3JtIHRvCglzcGVjLgoKMjAwNS0xMi0wOSAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBhZGFjb3JlLmNvbT4KCgkqIGctZXhjdHJhLmFkczogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDUtMTItMDkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB1dGlscy5jOiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGctc29jY29uLmFkczogCglGdXJ0aGVyIGNvbW1lbnQgZml4ZXMgdG8gbWFrZSB0aGUgc3RhdHVzIG9mIHRoZSBkZWZhdWx0IGZpbGUgY2xlYXIKCgkqIHMtYml0b3BzLmFkYjogQ2xhcmlmeSBjb21tZW50IGZvciBCaXRzX0FycmF5CgoyMDA1LTEyLTA3ICBSYWZhZWwgwXZpbGEgZGUgRXNw7W5kb2xhICA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGFkYS5pbnN0YWxsLW5vcm1hbCk6IFJlbW92ZS4KCjIwMDUtMTItMDcgIFJhZmFlbCDBdmlsYSBkZSBFc3DtbmRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogUmVtb3ZlIGFsbCBkZXBlbmRlbmNpZXMgb24gcy1ndHlwZS4KCjIwMDUtMTItMDUgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHV0aWxzLmMgKGNvbnZlcnQpOiBVc2UgZm9sZF9jb252ZXJ0IHdoZXJlIGFwcHJvcHJpYXRlLgoKMjAwNS0xMi0wNSAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluIChnbmF0bGliKTogRml4IHJlZ2V4LCB1c2luZyBcLiBpbnN0ZWFkIG9mIC4gd2hlbgoJYSBwZXJpb2QgaXMgbWVhbnQuCgoyMDA1LTEyLTAyICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiB0cmFucy5jIChnbmF0X2dpbXBsaWZ5X2V4cHIpOiBVc2UgYnVpbGROIGluc3RlYWQgb2YgYnVpbGQuCgoyMDA1LTEyLTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHV0aWxzLmMgKG1heF9zaXplKTogT25seSB0ZXN0IGZvciBUUkVFX09WRVJGTE9XIG9uIElOVEVHRVJfQ1NUCglub2Rlcy4KCjIwMDUtMTEtMjMgIExhdXJlbnQgR1VFUkJZICA8bGF1cmVudEBndWVyYnkubmV0PgoKCSogbWxpYi1wcmouYWRiIChCdWlsZF9MaWJyYXJ5KTogSW5pdGlhbGl6ZSBEZWxldGUuCgoyMDA1LTExLTIxICBKb2VsIFNoZXJyaWxsIDxqb2VsLnNoZXJyaWxsQG9hcmNvcnAuY29tPgoKCSogc29ja2V0LmM6IEFkZCBleHRlcm4gaW50IGhfZXJybm8gZm9yIHJ0ZW1zIHNpbmNlIG5ldHdvcmtpbmcgaGVhZGVyCglmaWxlcyBhcmUgbm90IGF2YWlsYWJsZSBhdCB0aGlzIHBvaW50IGluIGEgdG9vbCBib290c3RyYXAuIE5ld2xpYgoJb25seSBoYXMgYmFzaWMgQyBsaWJyYXJ5IGhlYWRlciBmaWxlcy4KCjIwMDUtMTEtMTkgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCVJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCVBSIGFkYS8yMzcxNwoJKiBtaXNjLmMgKGludGVybmFsX2Vycm9yX2Z1bmN0aW9uKTogRG9uJ3QgdXNlIHZzcHJpbnRmIHRvIGZvcm1hdAoJdGhlIGVycm9yIG1lc3NhZ2UgdGV4dCwgaW5zdGVhZCB1c2UgcHBfZm9ybWF0X3RleHQgYW5kIHRoZSBuZXcKCXByZXR0eSBwcmludGVyIEFQSXMuICBUaGlzIGFsbG93cyBoYW5kbGluZyBvZiAlcXMsICV3LCBldGMuCgoyMDA1LTExLTE4ICBMYXVyZW50IEdVRVJCWSAgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCglQUiBhZGEvMjQ4NTcKCSogTWFrZWZpbGUuaW46IFVzZSBzLWF1eGRlYy1lbXB0eSBmb3IgUlRFTVMuCgoyMDA1LTExLTE3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCVBSIGFkYS8yMjMzMwoJKiB0cmFucy5jIChnbmF0X2dpbXBsaWZ5X2V4cHIsIGNhc2UgQUREUl9FWFBSKTogQWx3YXlzIG1ha2UKCWEgdGVtcG9yYXJ5IGlmIHRha2luZyB0aGUgYWRkcmVzcyBvZiBzb21ldGhpbmcgdGhhdCBpcyBuZWl0aGVyCglyZWZlcmVuY2UsIGRlY2xhcmF0aW9uLCBvciBjb25zdGFudCwgc2luY2UgdGhlIGdpbXBsaWZpZXIKCWNhbid0IGhhbmRsZSB0aGF0IGNhc2UuCgoyMDA1LTExLTE3ICBMYXVyZW50IEdVRVJCWSAgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCglQUiBhZGEvMjQ4NTcKCSogcy1hdXhkZWMtZW1wdHkuYWRzLCBzLWF1eGRlYy1lbXB0eS5hZGI6IE5ldyBmaWxlcy4KCjIwMDUtMTEtMTYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgRUhfTUVDSEFOSVNNPS1nY2MgdG8gczM5MCh4KSBsaW51eC4KCjIwMDUtMTEtMTYgIEpvZWwgU2hlcnJpbGwgPGpvZWwuc2hlcnJpbGxAb2FyY29ycC5jb20+CgoJUFIgYWRhLzI0ODU1CgkqIHJhaXNlLWdjYy5jOiBBZGQgbWlzc2luZyBzdGRhcmcuaCBpbmNsdWRlLgogCjIwMDUtMTEtMTYgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhL2RlY2wubyk6IEFkZCAkKEVYUFJfSCkgZGVwZW5kZW5jeS4KCShhZGEvbWlzYy5vKTogTGlrZXdpc2UuCgoyMDA1LTExLTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZy1zb2Njb24uYWRzOiBNaW5vciByZWZvcm1hdHRpbmcuIFVwZGF0ZSBjb21tZW50cy4KCgkqIGdzb2NrZXQuaDogSW5jbHVkZSA8c3lzL3RpbWVzLmg+IGluIHRoZSBWeFdvcmtzIGNhc2UsIGluIG9yZGVyIHRvCglnYWluIHZpc2liaWxpdHkgb24gdGhlIGRlY2xhcmF0aW9uIG9mIHN0cnVjdCB0aW1ldmFsLgoKCSogZy1zb2Njb24tZnJlZWJzZC5hZHMsCglnLXNvY2Nvbi1kYXJ3aW4uYWRzLAoJZy1zb2Njb24tdHJ1NjQuYWRzLAoJZy1zb2Njb24tYWl4LmFkcywKCWctc29jY29uLWlyaXguYWRzLAoJZy1zb2Njb24taHB1eC5hZHMsCglnLXNvY2Nvbi1zb2xhcmlzLmFkcywKCWctc29jY29uLXZtcy5hZHMsCglnLXNvY2Nvbi1taW5ndy5hZHMsCglnLXNvY2Nvbi12eHdvcmtzLmFkcyAoU0laRU9GX3R2X3NlYywgU0laRU9GX3R2X3VzZWMpOiBOZXcgY29uc3RhbnRzLgoKCSogZy1zb2Njb24taHB1eC1pYTY0LmFkcywgZy1zb2Njb24tbGludXgtcHBjLmFkcywKCWctc29jY29uLXNvbGFyaXMtNjQuYWRzLCBnLXNvY2Nvbi1saW51eC02NC5hZHMsCglnLXNvY2Nvbi1saW51eC14ODYuYWRzOiBOZXcgZmlsZXMuCgoJKiBnLXNvY3RoaS1taW5ndy5hZGI6IAoJKFNvY2tldF9FcnJvcl9NZXNzYWdlKTogUmVtb3ZlIHJlZHVuZGFudCB1c2Ugb2YgR05BVC5Tb2NrZXRzLkNvbnN0YW50cwoKCSogZy1zb2N0aGktdnh3b3Jrcy5hZHMsIGctc29jdGhpLXZtcy5hZHMsIGctc29jdGhpLW1pbmd3LmFkcwoJKHRpbWVfdCwgc3VzZWNvbmRzX3QpOiBOZXcgdHlwZXMgY29uc3RydWN0ZWQgdG8gbWF0Y2ggdGhlIHR2X3NlYwoJYW5kIHR2X3VzZWMgZmllbGRzIG9mIEMgc3RydWN0IHRpbWV2YWwuCgkoVGltZXZhbCk6IENvbnN0cnVjdCBzdHJ1Y3R1cmUgaW4gdGVybXMgb2YgdGhlIG5ldyB0eXBlcy4KCShIb3N0X0Vycm5vKTogTmV3IGZ1bmN0aW9uIChpbXBvcnRlZCBmcm9tIHNvY2tldC5jKSwgcmV0dXJucyBsYXN0IGhvc3RzCglkYXRhYmFzZSBlcnJvci4KCgkqIGctc29jdGhpLXZ4d29ya3MuYWRiOiAgQWRkIGVycm9yIGhhbmRsaW5nIGNpcmN1aXRyeS4KCgkqIGctc29ja2V0LmFkcywgZy1zb2NrZXQuYWRiIChUb19UaW1ldmFsKTogUmVmbGVjdCBjaGFuZ2Ugb2YgdHlwZSBmb3IKCWNvbXBvbmVudHMgb2Ygc3RydWN0IHRpbWV2YWwuCgkoR2V0X0hvc3RfQnlfTmFtZSwgR2V0X0hvc3RfQnlfQWRkcmVzcyk6IEZpeCBlcnJvciByZXBvcnRpbmcgY2lyY3VpdHJ5LgoJKENoZWNrX1NlbGVjdG9yKTogSW4gZXJyb3IgY29uZGl0aW9ucywgY2xlYXIgaW50ZXJuYWwgc29ja2V0IHNldHMgdG8KCWF2b2lkIGEgbWVtb3J5IGxlYWsuCgkoR2V0X1NvY2tldF9PcHRpb24sIFNldF9Tb2NrZXRfT3B0aW9uKTogU3VwcG9ydCBmb3IgTXVsdGljYXN0X0lmLAoJU2VuZF9UaW1lb3V0LCBSZWNlaXZlX1RpbWVvdXQuCgoJKiBnLXNvY3RoaS5hZHMgKHRpbWVfdCwgc3VzZWNvbmRzX3QpOiBOZXcgdHlwZXMgY29uc3RydWN0ZWQgdG8gbWF0Y2gKCXRoZSB0dl9zZWMgYW5kIHR2X3VzZWMgZmllbGRzIG9mIEMgc3RydWN0IHRpbWV2YWwuCgkoVGltZXZhbCk6IENvbnN0cnVjdCBzdHJ1Y3R1cmUgaW4gdGVybXMgb2YgdGhlIG5ldyB0eXBlcy4KCShIb3N0X0Vycm5vKTogTmV3IGZ1bmN0aW9uIChpbXBvcnRlZCBmcm9tIHNvY2tldC5jKSwgcmV0dXJucyBsYXN0IGhvc3RzCglkYXRhYmFzZSBlcnJvci4KCgkqIHNvY2tldC5jIChfX2duYXRfZ2V0X2hfZXJybm8pOiBOZXcgZnVuY3Rpb24gdG8gcmV0cmlldmUgaF9lcnJubywgdGhlCglob3N0cyBkYXRhYmFzZSBsYXN0IGVycm9yIGNvZGUuCgoJKiBnZW4tc29jY29uLmM6IENvbXBsZXRlIHZhbHVlIGV4cGFuc2lvbiBzaG91bGQgbm90IGJlIHBlcmZvcm1lZCBvbgoJVEFSR0VULCBhcyBpdCBoYXMgdGhlIGZvcm0gb2YgYSBtYXRoIGV4cHJlc3Npb24sIGFuZCBzb21lIGNvbXBvbmVudHMKCW1heSBiZSBwbGF0Zm9ybS1kZWZpbmVkIG1hY3Jvcy4KCUZvciBWeFdvcmtzLCBnZW5lcmF0ZSB0aGUgT0sgYW5kIEVSUk9SIHZhbHVlcy4KCU5ldyBjb25zdGFudHMgZ2l2aW5nIHRoZSBzaXplcyBvZiB0aGUgY29tcG9uZW50cyBvZiBDIHN0cnVjdCB0aW1ldmFsLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xODQzNAoJKiB0eXBlcy5hZHM6IEluY2x1ZGUgQWxsX0NoZWNrcyBpbiBTdXBwcmVzc19BcnJheQoKCSogY2hlY2tzLmFkYiAoQ2hlY2tfTmVlZGVkKTogUmVtb3ZlIGtsdWRnZSBmb3IgYS89YiByZXdyaXR0ZW4gYXMKCW5vdChhPWIpLCBzaW5jZSB3ZSBubyBsb25nZXIgZG8gdGhpcyByZXdyaXRpbmcsIGFuZCBoZW5jZSBpdCBpcyBub3QKCW5lZWRlZC4KCShFbGFib3JhdGlvbl9DaGVja3NfU3VwcHJlc3NlZCk6IEFkZCBzcGVjaWFsIGNhc2luZyB0bwoJZGVhbCB3aXRoIGRpZmZlcmVudCBjYXNlcyBvZiBzdGF0aWMgYW5kIGR5bmFtaWMgZWxhYm9yYXRpb24gY2hlY2tzIChhbGwKCWNoZWNrcyBkb2VzIG5vdCBjb3VudCBpbiB0aGUgZmlyc3QgY2FzZSwgYnV0IGRvZXMgaW4gdGhlIHNlY29uZCkuCgkoRXhwcl9Lbm93bl9WYWxpZCk6IERvIG5vdCBhc3N1bWUgdGhhdCB0aGUgcmVzdWx0IG9mIGFueSBhcmJpdHJhcnkKCWZ1bmN0aW9uIGNhbGwgaXMgdmFsaWQsIHNpbmNlIHRoaXMgaXMgbm90IHRoZSBjYXNlLgoJKEVuc3VyZV9WYWxpZCk6IERvIG5vdCBhcHBseSB2YWxpZGl0eSBjaGVjayB0byBhIHJlYWwgbGl0ZXJhbAoJaW4gYSB1bml2ZXJzYWwgb3IgZml4ZWQgY29udGV4dAoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX09wX05lKTogRG9uJ3QgZXhwYW5kIGEvPWIgdG8gbm90KGE9YikgZm9yCgllbGVtZW50YXJ5IHR5cGVzIHVzaW5nIHRoZSBvcGVyYXRvciBpbiBzdGFuZGFyZC4gSXQgaXMgY2xlYW5lciBub3QgdG8KCW1vZGlmeSB0aGUgcHJvZ3JhbW1lcnMgaW50ZW50LCBlc3BlY2lhbGx5IGluIHRoZSBjYXNlIG9mIGZsb2F0aW5nLXBvaW50LgoJKFJld3JpdGVfQ29tcGFyaXNvbik6IEZpeCBoYW5kbGluZyBvZiAvPSAodGhpcyB3YXMgYWx3YXlzIHdyb25nLCBidXQKCWl0IGRpZCBub3QgbWF0dGVyIGJlY2F1c2Ugd2UgYWx3YXlzIHJld3JvdGUgYS89YiB0byBub3QoYT1iKS4KCShFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBGb3IgYW4gYWxsb2NhdG9yIGV4cHJlc3Npb24gd2hvc2Ugbm9taW5hbAoJc3VidHlwZSBpcyBhbiB1bmNvbnN0cmFpbmVkIHBhY2tlZCB0eXBlLCBjb252ZXJ0IHRoZSBleHByZXNzaW9uIHRvIGl0cwoJYWN0dWFsIGNvbnN0cmFpbmVkIHN1YnR5cGUuCglJbXBsZW1lbnQgd2FybmluZyBmb3IgPD0gb3IgPj0gd2hlcmUgPCBvciA+IG5vdCBwb3NzaWJsZQoJRml4IHRvIFZheF9GbG9hdCB0ZXN0cyAodG9vIGVhcmx5IGluIG1hbnkgcm91dGluZXMsIGNhdXNpbmcgcHJlbWF0dXJlCglWYXhfRmxvYXQgZXhwYW5zaW9ucy4KCgkqIHNlbV9wcmFnLmFkYiAoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgT2Jzb2xlc2NlbnQpOiBBbGxvdyB0aGlzIHByYWdtYQoJdG8gYmUgdXNlZCB3aXRoIHBhY2thZ2VzIGFuZCBnZW5lcmljIHBhY2thZ2VzIGFzIHdlbGwgYXMgd2l0aAoJc3VicHJvZ3JhbXMuCgkoU3VwcHJlc3MpOiBTZXQgQWxsX0NoZWNrcywgYnV0IG5vdCBFbGFib3JhdGlvbl9DaGVjaywgZm9yIGNhc2UKCW9mIHByYWdtYSBTdXBwcmVzcyAoQWxsX0NoZWNrcykKCShBbmFseXplX1ByYWdtYSwgY2FzZSBXYXJuaW5ncyk6IEltcGxlbWVudCBmaXJzdCBhcmd1bWVudCBhbGxvd2VkIHRvIGJlCglhIHN0cmluZyBsaXRlcmFsIGZvciBwcmVjaXNlIGNvbnRyb2wgb3ZlciB3YXJuaW5ncy4KCUF2b2lkIHJhaXNlIG9mIHByYWdtYSBpbiBjYXNlIG9mIHVucmVjb2duaXplZCBwcmFnbWEgYW5kIGp1c3QgcmV0dXJuCglpbnN0ZWFkLgoKCSogc2VtX3ByYWcuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHN3aXRjaC1jLmFkYiAoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMpOiBSZXBsYWNlICJyYWlzZSBCYWRfU3dpdGNoOyIKCXdpdGggY2FsbCB0byBuZXcgcHJvY2VkdXJlIEJhZF9Td2l0Y2guIENhbGwgU2Nhbl9Qb3Mgd2l0aCBuZXcgcGFyYW1ldGVyCglTd2l0Y2guIERvIG5vdCBoYW5kbGUgYW55IGV4Y2VwdGlvbi4KCUluY2x1ZGUgLWduYXR3eCBhcyBwYXJ0IG9mIC1nbmF0ZyAod2FybiBvbiByZWR1bmRhbnQgcGFyZW5zKQoJQWxsb3cgb3B0aW9uYWwgPSBhZnRlciAtZ25hdG0KCShTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IFRoZSAtZ25hdHAgc3dpdGNoIHNldHMgQWxsX0NoZWNrcywgYnV0IG5vCglsb25nZXIgc2V0cyBFbGFib3JhdGlvbl9DaGVja3MuCglDb2RlIHRvIHNldCB3YXJuaW5nIG1vZGUgbW92ZWQgdG8gU2VtX1dhcm4KCXNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCBieSBwcmFnbWEgcHJvY2Vzc2luZy4KCgkqIHMtbWFzdG9wLXRydTY0LmFkYiAoUG9wX0ZyYW1lKTogUmVtb3ZlIHJlZHVuZGFudCBwYXJlbnRoZXNlcyBpbiBpZgoJc3RhdGVtZW50LgoKCSogcy10YXByb3Atc29sYXJpcy5hZGI6IAoJQ2hhbmdlIHNvbWUgPD0gdG8gPSwgdG8gYXZvaWQgbmV3IHdhcm5pbmcKCgkqIGEtZXhleGRhLmFkYiwgcHJqLXByb2MuYWRiOiAKCUZpeCBvYnZpb3VzIHR5cG8gKE51bV9UcmFjZWJhY2tzIGNvbXBhcmVkIDw9IDAgaW5zdGVhZCBvZiA8IDApCglGaXggb2J2aW91cyB0eXBvIChUb3RhbF9FcnJvcnNfRGV0ZWN0ZWQgPD0gMCBzaG91bGQgYmUgPSAwKQoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfdmZwdC5hZGI6IEhhbmRsZSAvPSBjYXNlCgkoRXhwYW5kX1ZheF9Db252ZXJzaW9uKTogUHJvcGVybHkgcmVjb2duaXplIENvbnZlcnNpb25fT0sgZmxhZwoJc28gdGhhdCB3ZSBkbyBub3QgZ2V0IGR1cGxpY2F0ZSBzY2FsaW5nIGZvciBmaXhlZCBwb2ludCBjb252ZXJzaW9ucy4KCgkqIHMtdmFmbG9wLmFkcywgcy12YWZsb3AuYWRiOiAoTmVfRik6IE5ldyBmdW5jdGlvbgoKMjAwNS0xMS0xNCAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBhZGFjb3JlLmNvbT4KCgkqIHN5c3RlbS1seW54b3MtcHBjLmFkcywgc3lzdGVtLWx5bnhvcy14ODYuYWRzOiAKCUluY3JlYXNlIGRlZmF1bHQgcHJpb3JpdHkgb24gTHlueCBmcm9tIDE1IHRvIDE3LCBhbmQgbWVldCB0aGUgQWRhCglyZXF1aXJlbWVudCB0aGF0IERlZmF1bHRfUHJpb3JpdHkgYmUgKChQcmlvcml0eSdGaXJzdCArCglQcmlvcml0eSdMYXN0KSAvIDIpIGJ5IGluY3JlYXNpbmcgdGhlIHJhbmdlIG9mIEludGVycnVwdF9Qcmlvcml0eS4KCjIwMDUtMTEtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi10Z3QtdHJ1NjQuYWRiLCBtbGliLXRndC1haXguYWRiLCBtbGliLXRndC1pcml4LmFkYiwKCW1saWItdGd0LWhwdXguYWRiLCBtbGliLXRndC1ocHV4LmFkYiwgbWxpYi10Z3QtbGludXguYWRiLAoJbWxpYi10Z3Qtc29sYXJpcy5hZGIsIG1saWItdGd0LXZtcy1hbHBoYS5hZGIsIG1saWItdGd0LXZtcy1hbHBoYS5hZGIsCgltbGliLXRndC12bXMtaWE2NC5hZGIsIG1saWItdGd0LW1pbmd3LmFkYiwgbWxpYi10Z3Qtdnh3b3Jrcy5hZGIsCgltbGliLXRndC1kYXJ3aW4uYWRiLCBtbGliLXRndC5hZGIsIG1saWItdGd0LmFkcywKCW1saWItdGd0LWx5bnhvcy5hZGIgKERMTF9QcmVmaXgpOiBOZXcgZnVuY3Rpb24KCjIwMDUtMTEtMTQgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBzeXN0ZW0tdm1zLmFkcywgc3lzdGVtLXZtc182NC5hZHM6IEFEQSRHTkFUOiBOZXcgZXhwb3J0ZWQgb2JqZWN0IGluCglwcml2YXRlIHBhcnQuCgoyMDA1LTExLTE0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXRyYWNlcy1kZWZhdWx0LmFkYiwgcy10cmFmb3ItZGVmYXVsdC5hZHMsCglzLXRyYXRhcy1kZWZhdWx0LmFkYjogRml4IGNvbXBpbGF0aW9uIGVycm9ycy4KCjIwMDUtMTEtMTQgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvcC1wb3NpeC5hZGIgKEluaXRpYWxpemVfTG9jayk6IERlc3Ryb3kgbXV0ZXggYXR0cmlidXRlIGJlZm9yZQoJcmFpc2luZyB0aGUgZXhjZXB0aW9uIHNvIHRoZSBtZW1vcnkgdXNlZCBpcyBmcmVlZC4KCjIwMDUtMTEtMTQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5oLCBhZGFpbnQuYyAoX19nbmF0X2lzX2Nyb3NzX2NvbXBpbGVyKTogTmV3IGNvbnN0YW50LgoJKEduYXRfSW5zdGFsbF9Mb2NrcywgX19nbmF0bGliX2luc3RhbGxfbG9ja3MpOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCShjb252ZXJ0X2FkZHJlc3MpOiBVcGRhdGUgY29tbWVudHMgYW5kIGxpc3Qgb2YgcGxhdGZvcm1zIHVzaW5nIHRoaXMuCgoJKiBzLXRhc2luaS5hZGIgKEduYXRfSW5zdGFsbF9Mb2NrcywgX19nbmF0bGliX2luc3RhbGxfbG9ja3MpOiBSZW1vdmVkLAoJbm8gbG9uZ2VyIHVzZWQuCgoyMDA1LTExLTE0ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBnbmF0ZGxsLmFkYiAoUGFyc2VfQ29tbWFuZF9MaW5lKTogUmVtb3ZlIHJlZHVuZGFudCB1c2Ugb2YKCUdOQVQuQ29tbWFuZF9MaW5lLgoKCSogbWVtcm9vdC5hZGI6IFJlbW92ZSByZWR1bmRhbnQgd2l0aC91c2UgY2xhdXNlIG9uCglTeXN0ZW0uU3RvcmFnZV9FbGVtZW50cy4KCjIwMDUtMTEtMTQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGEtZXhjZXB0LmFkYiAoWmVyb19Db3N0X0V4Y2VwdGlvbnMpOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCShidWlsdGluX2xvbmdqbXAsIFByb2Nlc3NfUmFpc2VfRXhjZWVwdGlvbik6IE1vdmUgc2V0am1wL2xvbmdqbXAKCXJlbGF0ZWQgY29kZSB0byBhLWV4ZXhwci5hZGIKCShTYXZlX09jY3VycmVuY2VfQW5kX1ByaXZhdGUpOiBNb3ZlIEdDQyBFSCByZWxhdGVkIGNvZGUgdG8KCWEtZXhleHByLWdjYy5hZGIKCShSYWlzZV9DdXJyZW50X0V4Y2VwKTogQWRkIG5ldyB2YXJpYWJsZSBJZCB3aXRoIHByYWdtYQoJdm9sYXRpbGUsIHRvIGVuc3VyZSB0aGF0IHRoZSB2YXJpYWJsZSBsaXZlcyBvbiBzdGFjay4KCgkqIGEtZXhleHByLWdjYy5hZGIsIHJhaXNlLWdjYy5jOiBOZXcgZmlsZS4KCgkqIGEtZXhleHByLmFkYiAoYnVpbHRpbl9sb25nam1wLCBQcm9wYWdhdGVfRXhjZXB0aW9uKTogTW92ZWQgaGVyZSBjb2RlCglmcm9tIGEtZXhjZXB0LmFkYi4KCU1vdmUgR0NDIEVIIHJlbGF0ZWQgY29kZSB0byBhLWV4ZXhwci1nY2MuYWRiCgoJKiBNYWtlZmlsZS5pbjogQWRkIG9yIHVwZGF0ZSBnLXNvY2NvbiBMSUJHTkFUIHBhaXJzIGZvciBMaW51eC9QUEMgYW5kCgk2NC1iaXQgU29sYXJpcwoJU3BsaXQgdGhlIExpbnV4IHZlcnNpb24gb2YgZy1zb2Njb24gaW50byBzZXBhcmF0ZSB2YXJpYW50cyBmb3IgMzIgYW5kIDY0CgliaXQgcGxhdGZvcm1zLgoJKGduYXRsaWIpOiBVc2UgJChBUl9GT1JfVEFSR0VUKSBhbmQgJChSQU5MSUJfRk9SX1RBUkdFVCkKCXZpY2UgJChBUikgYW5kICQoUkFOTElCKS4gUmVtb3ZlIHVzZSBvZiBob3N0IHZhcmlhYmxlICQoUkFOTElCX0ZMQUdTKS4KCWluc3RhbGwtZ25hdGxpYjogVXNlICQoUkFOTElCX0ZPUl9UQVJHRVQpIHZpY2UgJChSQU5MSUIpLiBSZW1vdmUgdXNlCglvZiBob3N0IHZhcmlhYmxlICQoUkFOTElCX0ZMQUdTKS4KCShhbHBoYTY0LWRlYy0qdm1zKik6IEZpeCB0cmFuc2xhdGlvbnMgZm9yIDY0IGJpdCBjb21waWxlci4KCUNvZGUgY2xlYW4gdXA6IHJlbW92ZSB1bnVzZWQvb2Jzb2xldGUgdGFyZ2V0cy4KCShFSF9NRUNIQU5JU00pOiBOZXcgdmFyaWFibGUgaW50cm9kdWNlZCB0byBkaWZmZXJlbmNpYXRlIGJldHdlZW4gdGhlCgl0d28gRUggbWVjaGFuaXNtcyBzdGF0aWNhbGx5LgoJKGduYXRsaWItemN4LCBnbmF0bGliLXNqbGopOiBGb3JjZSBFSF9NRUNIQU5JU00gbWFudWFsbHkuCgkoTElCR05BVF9PQkpTKTogQWRkIHJhaXNlLWdjYy5vCgkoTElCR05BVF9UQVJHRVRfUEFJUlMgZm9yIHBwYy12eHdvcmtzKTogVXNlIGFuIHNwZWNpYWxpemVkIHZlcnNpb24gb2YKCXMtb3NpbnRlLmFkYiwgcy10cG9wc3AuYWRiLCBhbmQgc3lzdGVtLmFkcyBmb3IgdGhlIHJ1biB0aW1lIHRoYXQKCXN1cHBvcnRzIFZ4V29ya3MgNiBSVFBzLgoJKEVYVFJBX0dOQVRSVExfTk9OVEFTS0lOR19PQkpTIGZvciBwcGMtdnh3b3Jrcyk6IFJlbW92ZSB0aGUgdXNlIG9mCglpLXZ4d29ya3MgYW5kIGktdnh3b2lvIGZyb20gdGhlIHJ1biB0aW1lIHRoYXQgc3VwcG9ydHMgVnhXb3JrcyA2IFJUUHMuCgoJKiByYWlzZS5jOiBNb3ZlIGFsbCBHQ0MgRUgtcmVsYXRlZCByb3V0aW5lcyB0byByYWlzZS1nY2MuYwoKMjAwNS0xMS0xNCAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHMtdGFzc3RhLmFkYiAoQ3JlYXRlX1Rhc2spOiBNb3ZlIHRoZSBjb2RlIGluIGNoYXJnZSBvZiByZXNldHRpbmcgdGhlCglkZWZlcnJhbCBsZXZlbCwgd2hlbiBhYm9ydCBpcyBub3QgYWxsb3dlZCwgdG8gYSBsYXRlciBzdGFnZSAodGhlCglUYXNrX1dyYXBwZXIpLgoJKFRhc2tfV3JhcHBlcik6IElmIEFib3J0IGlzIG5vdCBhbGxvd2VkLCByZXNldCB0aGUgZGVmZXJyYWwgbGV2ZWwgc2luY2UKCWl0IHdpbGwgbm90IGdldCBjaGFuZ2VkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZS4gSXQgd2FzIHByZXZpb3VzbHkgZG9uZQoJaW4gQ3JlYXRlX1Rhc2suCgoyMDA1LTExLTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYzoKCUZhY3RvciBjb21tb24gY29kZSB0byBidWlsZCBhIHN0b3JhZ2UgdHlwZSBmb3IgYW4gdW5jb25zdHJhaW5lZCBvYmplY3QKCWZyb20gYSBmYXQgb3IgdGhpbiBwb2ludGVyIHR5cGUgYW5kIGEgY29uc3RyYWluZWQgb2JqZWN0IHR5cGUuCgkoYW5ub3RhdGVfdmFsdWUpOiBIYW5kbGUgQklUX0FORF9FWFBSLgoJKGFubm90YXRlX3JlcCk6IERvbid0IHJlc3RyaWN0IHRoZSBiYWNrIGFubm90YXRpb24gb2YgaW5oZXJpdGVkCgljb21wb25lbnRzIHRvIHRoZSB0eXBlX2Fubm90YXRlX29ubHkgY2FzZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX0FycmF5X1R5cGU+OiBEbyBub3QgaW52b2tlIGNyZWF0ZV90eXBlX2RlY2wgaWYKCXdlIGFyZSBub3QgZGVmaW5pbmcgdGhlIHR5cGUuCgk8RV9SZWNvcmRfVHlwZT46IExpa2V3aXNlLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPG9iamVjdCwgcmVuYW1pbmc+OiBBZGp1c3QgY29tbWVudHMgYW5kIHN0cnVjdHVyZQoJdG8gZ2V0IGFkdmFudGFnZSBvZiB0aGUgbmV3IG1heWJlX3N0YWJpbGl6ZV9yZWZlcmVuY2UgaW50ZXJmYWNlLCB0bwoJZW5zdXJlIHRoYXQgd2hhdCB3ZSByZWZlcmVuY2UgaXMgaW5kZWVkIHN0YWJpbGl6ZWQgaW5zdGVhZCBvZiByZWx5aW5nCglvbiBhc3N1bXB0aW9ucyBvbiB3aGF0IHRoZSBzdGFiaWxpemVyIGRvZXMuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9JbmNvbXBsZXRlX1R5cGU+OiBJZiB0aGUgZW50aXR5IGlzIGFuIGluY29tcGxldGUKCXR5cGUgaW1wb3J0ZWQgdGhyb3VnaCBhIGxpbWl0ZWRfd2l0aCBjbGF1c2UsIHVzZSBpdHMgbm9uLWxpbWl0ZWQgdmlldy4KCShIYXNfU3RkY2FsbF9Db252ZW50aW9uKTogTmV3IG1hY3JvLCB0byBjZW50cmFsaXplIHRoZSBXaW5kb3dzIHZzIG90aGVycwoJZGlmZmVyZW50aWF0aW9uLgoJKGduYXRfdG9fZ251X2VudGl0eSk6IFVzZSBIYXNfU3RkY2FsbF9Db252ZW50aW9uIGluc3RlYWQgb2YgYSBzcHJlYWQgbWl4CglvZiAjaWYgc2VjdGlvbnMgKyBleHBsaWNpdCBjb21wYXJpc29ucyBvZiBjb252ZW50aW9uIGlkZW50aWZpZXJzLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfVmFyaWFibGU+OiBEZWNyZW1lbnQgZm9yY2VfZ2xvYmFsIGlmIG5lY2Vzc2FyeQoJYmVmb3JlIGVhcmx5LXJldHVybmluZyBmb3IgY2VydGFpbiB0eXBlcyB3aGVuIGNvZGUgZ2VuZXJhdGlvbiBpcwoJZGlzYWJsZWQuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8b2JqZWN0PjogQWRqdXN0IGNvbW1lbnQgYXR0YWNoZWQgdG8gdGhlCgludWxsaWZpY2F0aW9uIG9mIGdudV9leHByIHdlIGRvIGZvciBvYmplY3RzIHdpdGggYWRkcmVzcyBjbGF1c2UgYW5kCgl0aGF0IHdlIGFyZSBub3QgZGVmaW5pbmcuCgkoZWxhYm9yYXRlX2V4cHJlc3Npb25fMSk6IERvIG5vdCBjcmVhdGUgY29uc3RhbnRzIHdoZW4gY3JlYXRpbmcKCXZhcmlhYmxlcyBuZWVkZWQgYnkgdGhlIGRlYnVnIGluZm86IHRoZSBkd2FyZjIgd3JpdGVyIGNvbnNpZGVycyB0aGF0CglDT05TVF9ERUNMcyBpcyB1c2VkIG9ubHkgdG8gcmVwcmVzZW50IGVudW1lcmF0aW9uIGNvbnN0YW50cywgYW5kIGVtaXRzCglub3RoaW5nIGZvciB0aGVtLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPG9iamVjdD46IFdoZW4gdHVybmluZyBhIG5vbi1kZWZpbml0aW9uIG9mIGFuCglvYmplY3Qgd2l0aCBhbiBhZGRyZXNzIGNsYXVzZSBpbnRvIGFuIGluZGlyZWN0IHJlZmVyZW5jZSwgZHJvcCB0aGUKCWluaXRpYWxpemluZyBleHByZXNzaW9uLgoJSW5jbHVkZSAiZXhwci5oIi4KCShTVEFDS19DSEVDS19CVUlMVElOKTogRGVsZXRlLgoJKFNUQUNLX0NIRUNLX1BST0JFX0lOVEVSVkFMKTogTGlrZXdpc2UuCgkoU1RBQ0tfQ0hFQ0tfTUFYX0ZSQU1FX1NJWkUpOiBMaWtld2lzZS4KCShTVEFDS19DSEVDS19NQVhfVkFSX1NJWkUpOiBMaWtld2lzZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpOiBJZiBnbmF0X2VudGl0eSBpcyBhIHJlbmFtaW5nLCBkbyBub3QgbWFyayB0aGUgdHJlZQoJY29ycmVzcG9uZGluZyB0byB0aGUgcmVuYW1lZCBvYmplY3QgYXMgaWdub3JlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9BdHRyaWJ1dGVfUmVmZXJlbmNlLCBjYXNlIEF0dHJfU2l6ZSAmCglyZWxhdGVkKTogRm9yIGEgcHJlZml4IHRoYXQgaXMgYSBkZXJlZmVyZW5jZSBvZiBhIGZhdCBvciB0aGluIHBvaW50ZXIsCglpZiB0aGVyZSBpcyBhbiBhY3R1YWwgc3VidHlwZSBwcm92aWRlZCBieSB0aGUgZnJvbnQtZW5kLCB1c2UgdGhhdAoJc3VidHlwZSB0byBidWlsZCBhbiBhY3R1YWwgdHlwZSB3aXRoIGJvdW5kcyB0ZW1wbGF0ZS4KCSh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX0ZyZWVfU3RhdGVtZW50KTogSWYgYW4gQWN0dWFsX0Rlc2lnbmF0ZWRfU3VidHlwZQoJaXMgcHJvdmlkZWQgYnkgdGhlIGZyb250LWVuZCwgdXNlIHRoYXQgc3VidHlwZSB0byBjb21wdXRlIHRoZSBzaXplIG9mCgl0aGUgZGVhbGxvY2F0ZWQgb2JqZWN0LgoJKGduYXRfdG9fZ251KTogV2hlbiBhZGRpbmcgYSBzdGF0ZW1lbnQgaW50byBhbiBlbGFib3JhdGlvbiBwcm9jZWR1cmUsCgljaGVjayBmb3IgYSBwb3RlbnRpYWwgdmlvbGF0aW9uIG9mIGEgTm9fRWxhYm9yYXRpb25fQ29kZSByZXN0cmljdGlvbi4KCShtYXliZV9zdGFiaWxpemVfcmVmZXJlbmNlKTogTmV3IGZ1bmN0aW9uLCBsaWtlIGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZQoJd2l0aCBleHRyYSBhcmd1bWVudHMgdG8gY29udHJvbCB3aGV0aGVyIHRvIHJlY3Vyc2UgdGhyb3VnaCBub24tdmFsdWVzCglhbmQgdG8gbGV0IHRoZSBjYWxsZXIga25vdyBpZiB0aGUgc3RhYmlsaXphdGlvbiBoYXMgc3VjY2VlZGVkLgoJKGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZSk6IE5vdyBhIHNpbXBsZSB3cmFwcGVyIGFyb3VuZAoJbWF5YmVfc3RhYmlsaXplLCBmb3IgY29tbW9uIHVzZXMgd2l0aG91dCByZXN0cmljdGlvbiBvbiBsdmFsdWVzIGFuZAoJd2l0aG91dCBuZWVkIHRvIGNoZWNrIGZvciB0aGUgc3VjY2VzcyBpbmRpY2F0aW9uLgoJKGduYXRfdG9fZ251LCBjYWxsX3RvX2dudSk6IEFkanVzdCBjYWxscyB0byBnbmF0X3N0YWJpbGl6ZV9yZWZlcmVuY2UsIHRvCglwYXNzIGZhbHNlIGluc3RlYWQgb2YgMCBhcyB0aGUgRk9SQ0UgYXJndW1lbnQgd2hpY2ggaXMgYSBib29sLgoJKElkZW50aWZpZXJfdG9fZ251KTogUmVtb3ZlIGNoZWNrcyBlbnN1cmluZyB0aGF0IGFuIHJlbmFtZWQgb2JqZWN0CglhdHRhY2hlZCB0byBhIHJlbmFtaW5nIHBvaW50ZXIgaGFzIGJlZW4gcHJvcGVybHkgc3RhYmlsaXplZCwgYXMgbm8gc3VjaAoJb2JqZWN0IGlzIGF0dGFjaGVkIG90aGVyd2lzZS4KCShjYWxsX3RvX2dudSk6IEludm9rZSBjcmVhdGVfdmFyX2RlY2wgdG8gY3JlYXRlIHRoZSB0ZW1wb3Jhcnkgd2hlbiB0aGUKCWZ1bmN0aW9uIHVzZXMgdGhlICJ0YXJnZXQgcG9pbnRlciIgcmV0dXJuIG1lY2hhbmlzbS4KCVJlaW5zdGF0ZSBjb252ZXJzaW9uIG9mIHRoZSBhY3R1YWwgdG8gdGhlIHR5cGUgb2YgdGhlIGZvcm1hbAoJcGFyYW1ldGVyIGJlZm9yZSBhbnkgb3RoZXIgc3BlY2lmaWMgdHJlYXRtZW50IGJhc2VkIG9uIHRoZSBwYXNzaW5nCgltZWNoYW5pc20uIFRoaXMgdHVybnMgb3V0IHRvIGJlIG5lY2Vzc2FyeSBpbiBvcmRlciBmb3IgUExBQ0VIT0xERVIKCXN1YnN0aXR1dGlvbiB0byB3b3JrIHByb3Blcmx5IHdoZW4gdGhlIGxhdHRlciB0eXBlIGlzIHVuY29uc3RyYWluZWQuCgoJKiBnaWdpLmggKGJ1aWxkX3VuY19vYmplY3RfdHlwZV9mcm9tX3B0cik6IE5ldyBzdWJwcm9ncmFtLCBmYWN0b3JpbmcgYQoJY29tbW9uIHBhdHRlcm4uCgkobWF5YmVfc3RhYmlsaXplX3JlZmVyZW5jZSk6IE5ldyBmdW5jdGlvbiwgbGlrZSBnbmF0X3N0YWJpbGl6ZV9yZWZlcmVuY2UKCXdpdGggZXh0cmEgYXJndW1lbnRzIHRvIGNvbnRyb2wgd2hldGhlciB0byByZWN1cnNlIHRocm91Z2ggbm9uLXZhbHVlcwoJYW5kIHRvIGxldCB0aGUgY2FsbGVyIGtub3cgaWYgdGhlIHN0YWJpbGl6YXRpb24gaGFzIHN1Y2NlZWRlZC4KCgkqIHV0aWxzMi5jIChnbmF0X2J1aWxkX2NvbnN0cnVjdG9yKTogT25seSBzb3J0IHRoZSBmaWVsZHMgZm9yIHBvc3NpYmxlCglzdGF0aWMgb3V0cHV0IG9mIHJlY29yZCBjb25zdHJ1Y3RvciBpZiBhbGwgdGhlIGNvbXBvbmVudHMgYXJlIGNvbnN0YW50LgoJKGduYXRfYnVpbGRfY29uc3RydWN0b3IpOiBGb3IgYSByZWNvcmQgdHlwZSwgc29ydCB0aGUgbGlzdCBvZiBmaWVsZAoJaW5pdGlhbGl6ZXJzIGluIGluY3JlYXNpbmcgYml0IHBvc2l0aW9uIG9yZGVyLgoJRmFjdG9yIGNvbW1vbiBjb2RlIHRvIGJ1aWxkIGEgc3RvcmFnZSB0eXBlIGZvciBhbiB1bmNvbnN0cmFpbmVkIG9iamVjdAoJZnJvbSBhIGZhdCBvciB0aGluIHBvaW50ZXIgdHlwZSBhbmQgYSBjb25zdHJhaW5lZCBvYmplY3QgdHlwZS4KCShidWlsZF91bmFyeV9vcCkgPEFERFJfRVhQUj46IEFsd2F5cyByZWN1cnNlIGRvd24gY29udmVyc2lvbnMgYmV0d2VlbgoJdHlwZXMgdmFyaWFudHMsIGFuZCBwcm9jZXNzIHNwZWNpYWwgY2FzZXMgb2YgVklFV19DT05WRVJUIGV4cHJlc3Npb25zCglhcyB0aGVpciBOT1BfRVhQUiBjb3VudGVycGFydCB0byBlbnN1cmUgd2UgZ2V0IHRvIHRoZQoJQ09SUkVTUE9ORElOR19WQVJzIGFzc29jaWF0ZWQgd2l0aCBDT05TVF9ERUNscy4KCShidWlsZF9iaW5hcnlfb3ApIDxNT0RJRllfRVhQUj46IERvIG5vdCBzdHJpcCBWSUVXX0NPTlZFUlRfRVhQUnMKCW9uIHRoZSByaWdodC1oYW5kIHNpZGUuCgoJKiB1dGlscy5jIChidWlsZF91bmNfb2JqZWN0X3R5cGVfZnJvbV9wdHIpOiBOZXcgc3VicHJvZ3JhbSwgZmFjdG9yaW5nCglhIGNvbW1vbiBwYXR0ZXJuLgoJKGNvbnZlcnQpIDxWSUVXX0NPTlZFUlRfRVhQUj46IFJldHVybiB0aGUgaW5uZXIgb3BlcmFuZCBkaXJlY3RseSBpZiB3ZQoJYXJlIGNvbnZlcnRpbmcgYmFjayB0byBpdHMgb3JpZ2luYWwgdHlwZS4KCShjb252ZXJ0KSA8Sk0gaW5wdXQ+OiBGYWxsdGhyb3VnaCByZWd1bGFyIGNvbnZlcnNpb24gY29kZSBpbnN0ZWFkIG9mCglleHRyYWN0aW5nIHRoZSBvYmplY3QgaWYgY29udmVydGluZyB0byBhIHR5cGUgdmFyaWFudC4KCShjcmVhdGVfdmFyX2RlY2wpOiBXaGVuIGEgdmFyaWFibGUgaGFzIGFuIGluaXRpYWxpemVyIHJlcXVpcmluZyBjb2RlCglnZW5lcmF0aW9uIGFuZCB3ZSBhcmUgYXQgdGhlIHRvcCBsZXZlbCwgY2hlY2sgZm9yIGEgcG90ZW50aWFsIHZpb2xhdGlvbgoJb2YgYSBOb19FbGFib3JhdGlvbl9Db2RlIHJlc3RyaWN0aW9uLgoJKGNyZWF0ZV92YXJfZGVjbCk6IGNhbGwgZXhwYW5kX2RlY2wgZm9yIENPTlNUX0RFQ0xzLCB0byBzZXQgTU9ERSwgQUxJR04KCVNJWkUgYW5kIFNJWkVfVU5JVCB3aGljaCB3ZSBuZWVkIGZvciBsYXRlciBiYWNrLWFubm90YXRpb25zLgoJKiB1dGlscy5jOiAoY29udmVydCkgPFNUUklOR19DU1Q+OiBSZW1vdmUgb2Jzb2xldGUgY29kZS4KCTxWSUVXX0NPTlZFUlRfRVhQUj46IERvIG5vdCBsaWZ0IHRoZSBjb252ZXJzaW9uIGlmIHRoZSB0YXJnZXQgdHlwZQoJaXMgYW4gdW5jaGVja2VkIHVuaW9uLgoJKHB1c2hkZWNsKTogU2V0IERFQ0xfTk9fU1RBVElDX0NIQUlOIG9uIGltcG9ydGVkIG5lc3RlZCBmdW5jdGlvbnMuCgkoY29udmVydCkgPFZJRVdfQ09OVkVSVF9FWFBSPjogV2hlbiB0aGUgdHlwZXMgaGF2ZSB0aGUgc2FtZQoJbWFpbiB2YXJpYW50LCBqdXN0IHJlcGxhY2UgdGhlIFZJRVdfQ09OVkVSVF9FWFBSLgoJPFVOSU9OX1RZUEU+OiBSZXZlcnQgMjAwNS0wMy0wMiBjaGFuZ2UuCgoJKiByZXBpbmZvLmgsIHJlcGluZm8uYWRzOiBBZGQgdGNvZGUgZm9yIEJJVF9BTkRfRVhQUi4KCgkqIHJlcGluZm8uYWRiIChQcmludF9FeHByLCBSZXBfVmFsdWUpOiBIYW5kbGUgQml0X0FuZF9FeHByZXNzaW9ucy4KCjIwMDUtMTEtMTQgIE1hdHRoZXcgSGVhbmV5ICA8aGVhbmV5QGFkYWNvcmUuY29tPgoKCSogYS1jcmJ0Z28uYWRzLCBhLWNyYnRnby5hZGIsIGEtY29vcnNlLmFkcywgYS1jb29yc2UuYWRiLCBhLWNvbnZlYy5hZHMsIAoJYS1jb252ZWMuYWRiLCBhLWNvaW52ZS5hZHMsIGEtY29pbnZlLmFkYiwgYS1jb2hhbWEuYWRzLCBhLWNvaGFtYS5hZGIsIAoJYS1jaW9yc2UuYWRzLCBhLWNpb3JzZS5hZGIsIGEtY2loYW1hLmFkcywgYS1jaWhhbWEuYWRiLCBhLWNpZGxsaS5hZHMsIAoJYS1jaWRsbGkuYWRiLCBhLWNkbGlsaS5hZHMsIGEtY2RsaWxpLmFkYiwgYS1jb29ybXUuYWRiLCBhLWNpb3JtdS5hZGIsIAoJYS1jaWhhc2UuYWRiLCBhLWNpaGFzZS5hZHMsIGEtY29oYXNlLmFkYiwgYS1jb2hhc2UuYWRzLCBhLWNpb3JtYS5hZHMsIAoJYS1jb29ybWEuYWRzLCBhLWNpb3JtdS5hZHMsIGEtY29vcm11LmFkcywgYS1jaW9ybWEuYWRiLCBhLWNvb3JtYS5hZGI6IAoJQ29tcGlsZXMgYWdhaW5zdCB0aGUgc3BlYyBmb3Igb3JkZXJlZCBtYXBzIGRlc2NyaWJlZCBpbiBzZWN0aW9ucwoJQS4xOC42IG9mIHRoZSBtb3N0IHJlY2VudCAoQXVndXN0IDIwMDUpIEFJLTMwMiBkcmFmdC4KCjIwMDUtMTEtMTQgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBjdWludHAuYyAoVUlfVG9fZ251KTogVXNlIGEgcHJvcGVyIHR5cGUgZm9yIGludGVybWVkaWF0ZSBjb21wdXRhdGlvbnMKCXRvIGVuc3VyZSBiaWFzIGFkanVzdG1lbnRzIHRha2UgcGxhY2Ugd2hlbiBuZWVkIGJlIGFuZCB0byBwcmV2ZW50CglvY2N1cnJlbmNlcyBvZiBpbnRlcm1lZGlhdGUgb3ZlcmZsb3dzLgoKMjAwNS0xMS0xNCAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBhZGFjb3JlLmNvbT4KCSAgICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogdGItZ2NjLmMgKHRyYWNlX2NhbGxiYWNrKTogV29yayBhcm91bmQgcHJvYmxlbSB3aXRoIF9VbndpbmRfR2V0SVAgb24KCWlhNjQgSFAtVVguCgoJKiB0cmFjZWJhay5jIChpYTY0IGNvbmZpZ3VyYXRpb24pOiBFbmFibGUgX1Vud2luZF9CYWNrdHJhY2UgZHJpdmVuCgl0cmFjZWJhY2tzIG9uIGlhNjQgSFAtVVggYW5kIHByb3ZpZGUgZXhwbGFuYXRvcnkgY29tbWVudC4KCUVuYWJsZSBiYWNrdHJhY2VzIG9uIGlhNjQgR05VL0xpbnV4LgoJKHg4NiBjb25maWd1cmF0aW9uKTogQnVtcCBGUkFNRV9MRVZFTCB0byAxIHRvIGVuc3VyZSB3ZSByZXRyaWV2ZSBhIHJlYWwKCWJhc2UgcG9pbnRlciBmcm9tIGJ1aWx0aW5fZnJhbWVfYWRkcmVzcy4gQWRqdXN0IEJBU0VfU0tJUCBhY2NvcmRpbmdseS4KCjIwMDUtMTEtMTQgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogcnRzZmluZC5hZHMsIGV4cF91dGlsLmFkYiwgZXhwX3V0aWwuYWRzLCBleHBfZGlzcC5hZGIsIGV4cF9kaXNwLmFkcywKCWV4cF9jaDcuYWRiLCBzZW1fY2g5LmFkYiwgc25hbWVzLmFkYiwgc25hbWVzLmFkcywKCWV4cF9jaDkuYWRiLCBleHBfY2g5LmFkcywgZXhwX2NoNi5hZGIsIGV4cF9jaDMuYWRiLCBleHBfY2gzLmFkcywKCWVpbmZvLmFkcywgZWluZm8uYWRiOiBDb21wbGV0ZSBzdXBwb3J0IGZvciBBZGEgMjAwNSBpbnRlcmZhY2VzLgoKCSogYS10YWdzLmFkcywgYS10YWdzLmFkYjogTWFqb3IgcmV3cml0ZSBhbmQgYWRkaXRpb25zIHRvIGltcGxlbWVudAoJcHJvcGVybHkgbmV3IEFkYSAyMDA1IGludGVyZmFjZXMgKEFJLTM0NSkgYW5kIGFkZCBydW4tdGltZSBjaGVja3MgKHZpYQoJYXNzZXJ0aW9ucykuCgoJKiBleHBfZGJ1Zy5hZHMsIGV4cF9kYnVnLmFkYiAoR2V0X1NlY29uZGFyeV9EVF9FeHRlcm5hbF9OYW1lKTogTmV3CglzdWJwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIHRoZSBleHRlcm5hbCBuYW1lIGFzc29jaWF0ZWQgd2l0aCBhCglzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGUuCgkoR2V0X1NlY29uZGFyeV9EVF9FeHRlcm5hbF9OYW1lKTogTmV3IHN1YnByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlCglleHRlcm5hbCBuYW1lIGFzc29jaWF0ZWQgd2l0aCBhIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZS4KCjIwMDUtMTEtMTQgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWRhY29yZS5jb20+CgoJKiB4cmVmX2xpYi5hZGIgKFBhcnNlX0lkZW50aWZpZXJfSW5mbyk6IEl0IGlzIHBvc3NpYmxlIGZvciBhbiBlbnRpdHkKCWxpbmUgaW4gdGhlIEFMSSBmaWxlIHRvIGluY2x1ZGUgYm90aCBhbiBpbnN0YW50aWF0aW9uIHJlZmVyZW5jZSwgYW5kIGEKCXJldHVybmVkIHZhbHVlLgoKMjAwNS0xMS0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBjbGVhbi5hZGIgKENoZWNrX1Byb2plY3QpOiBMb29rIGZvciBBZGEgY29kZSBpbiBleHRlbmRpbmcgcHJvamVjdCwKCWV2ZW4gaWYgQWRhIGlzIG5vdCBzcGVjaWZpZWQgYXMgYSBsYW5ndWFnZS4KCVVzZSBuZXcgZnVuY3Rpb24gRExMX1ByZWZpeCBmb3IgRExMX05hbWUKCShDbGVhbl9JbnRlcmZhY2VfQ29weV9EaXJlY3RvcnkpOiBOZXcgcHJvY2VkdXJlCgkoQ2xlYW5fTGlicmFyeV9EaXJlY3RvcnkpOiBOZXcgcHJvY2VkdXJlCgkoQ2xlYW5fRGlyZWN0b3J5KTogUmVtb3ZlIHByb2NlZHVyZSwgbm8gbG9uZ2VyIHVzZWQKCShDbGVhbl9Qcm9qZWN0KTogRG8gbm90IGRlbGV0ZSBhbnkgZmlsZSBpbiBhbiBleHRlcm5hbGx5IGJ1aWx0IHByb2plY3QKCgkqIHByai1lbnYuYWRiIChTZXRfQWRhX1BhdGhzLkFkZC5SZWN1cnNpdmVfQWRkKTogQWRkIHRoZSBvYmplY3QKCWRpcmVjdG9yeSBvZiBhbiBleHRlbmRpbmcgcHJvamVjdCwgZXZlbiB3aGVuIHRoZXJlIGFyZSBubyBBZGEgc291cmNlCglwcmVzZW50LgoJKEFkYV9PYmplY3RzX1BhdGguQWRkKTogQWRkIExpYnJhcnlfQUxJX0Rpciwgbm90IExpYnJhcnlfRGlyIHRvIHRoZSBwYXRoCgkoU2V0X0FkYV9QYXRocy5BZGQuUmVjdXJzaXZlX0FkZCk6IERpdHRvCgoJKiBtbGliLXByai5hZGIgKENoZWNrX0xpYnJhcnkpOiBGb3IgYWxsIGxpYnJhcnkgcHJvamVjdHMsIGdldCB0aGUKCWxpYnJhcnkgZmlsZSB0aW1lc3RhbXAuCgkoQnVpbGRfTGlicmFyeSk6IENvcHkgQUxJIGZpbGVzIGluIExpYnJhcnlfQUxJX0Rpciwgbm90IGluIExpYnJhcnlfRGlyCgkoQnVpbGRfTGlicmFyeSk6IFVzZSBuZXcgZnVuY3Rpb24gRExMX1ByZWZpeCBmb3IgdGhlIERMTF9OYW1lCgkoQ2xlYW4pOiBSZW1vdmUgcHJvY2VkdXJlLCBubyBsb25nZXIgdXNlZAoJKFVsdGltYXRlX0V4dGVuc2lvbl9PZik6IE5ldyBmdW5jdGlvbgoJKEJ1aWxkX0xpYnJhcnkpOiBXaGVuIGNsZWFuaW5nIHRoZSBsaWJyYXJ5IGRpcmVjdG9yeSwgb25seSByZW1vdmUgYW4KCWV4aXN0aW5nIGxpYnJhcnkgZmlsZSBhbmQgYW55IEFMSSBmaWxlIG9mIGEgc291cmNlIG9mIHRoZSBwcm9qZWN0LgoJV2hlbiBjbGVhbmluZyB0aGUgaW50ZXJmYWNlIGNvcHkgZGlyZWN0b3J5LCByZW1vdmUgYW55IHNvdXJjZSB0aGF0Cgljb3VsZCBiZSBhIHNvdXJjZSBvZiB0aGUgcHJvamVjdC4KCgkqIHByai5hZHMsIHByai5hZGIgKFByb2plY3RfRW1wdHkpOiBBZGQgdmFsdWVzIG9mIG5ldyBjb21wb25lbnRzCglMaWJyYXJ5X1RTIGFuZCBBbGxfSW1wb3J0ZWRfUHJvamVjdHMuCgkoUHJvamVjdF9FbXB0eSk6IEFkZCB2YWx1ZXMgZm9yIG5ldyBjb21wb25lbnRzIG9mIFByb2plY3RfRGF0YToKCUxpYnJhcnlfQUxJX0RpciBhbmQgRGlzcGxheV9MaWJyYXJ5X0FMSV9EaXIKCgkqIHByai1hdHRyLmFkYjogTmV3IHByb2plY3QgbGV2ZWwgYXR0cmlidXRlIG5hbWUgTGlicmFyeV9BTElfRGlyCgoJKiBwcmotbm1zYy5hZGIgKENoZWNrX0xpYnJhcnlfQXR0cmlidXRlcyk6IFRha2UgaW50byBhY2NvdW50IG5ldwoJYXR0cmlidXRlIExpYnJhcnlfQUxJX0Rpci4KCShDaGVja19MaWJyYXJ5X0F0dHJpYnV0ZXMpOiBUaGUgbGlicmFyeSBkaXJlY3RvcnkgY2Fubm90IGJlIHRoZSBzYW1lIGFzCglhbnkgc291cmNlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdCB0cmVlLgoJKENoZWNrX1N0YW5kX0Fsb25lX0xpYnJhcnkpOiBUaGUgaW50ZXJmYWNlIGNvcHkgZGlyZWN0b3J5IGNhbm5vdCBiZQoJdGhlIHNhbWUgYXMgYW55IHNvdXJjZSBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QgdHJlZS4KCgkqIG1saWIuYWRiOiBVc2UgUHJqLkNvbS5GYWlsLCBpbnN0ZWFkIG9mIE9zaW50LkZhaWwgZGlyZWN0bHksIHRvIGRlbGV0ZQoJYWxsIHRlbXBvcmFyeSBmaWxlcy4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9lbGFiLmFkYjogQ2hhbmdlIG5hbWUgSXNfUGFja2FnZSB0byBJc19QYWNrYWdlX09yX0dlbmVyaWNfUGFja2FnZQoJKENoZWNrX0VsYWJfQ2FsbCk6IEEgY2FsbCB3aXRoaW4gYSBwcm90ZWN0ZWQgYm9keSBpcyBuZXZlciBhbgoJZWxhYm9yYXRpb24gY2FsbCwgYW5kIGRvZXMgbm90IHJlcXVpcmUgY2hlY2tpbmcuCgkoU2FtZV9FbGFib3JhdGlvbl9TY29wZSk6IFRha2UgaW50byBhY2NvdW50IHByb3RlY3RlZCB0eXBlcyBmb3IgYm90aAoJZW50aXRpZXMuCgkoQWN0aXZhdGVfRWxhYm9yYXRlX0FsbF9EZXNpcmFibGUpOiBOZXcgcHJvY2VkdXJlCgoJKiBhbGkuYWRzLCBhbGkuYWRiOiBJbXBsZW1lbnQgbmV3IEFEL0VEIGZvciBFbGFib3JhdGVfQWxsL0VsYWJvcmF0ZQoJZGVzaXJhYmxlCgoJKiBiaW5kZS5hZGI6IEltcGxlbWVudCBuZXcgQUQvRUQgZm9yIEVsYWJvcmF0ZV9BbGwvRWxhYm9yYXRlIGRlc2lyYWJsZQoJKEVsYWJfRXJyb3JfTXNnKTogVXNlIC1kYSB0byBpbmNsdWRlIGludGVybmFsIHVuaXQgbGlua3MsIG5vdCAtZGUuCgoJKiBsaWItd3JpdC5hZHMsIGxpYi13cml0LmFkYjogCglJbXBsZW1lbnQgbmV3IEFEL0VEIGZvciBFbGFib3JhdGVfQWxsL0VsYWJvcmF0ZSBkZXNpcmFibGUKCVVzZSBuZXcgRWxhYm9yYXRlX0FsbF9EZXNpcmFibGUgZmxhZyBpbiBOX1dpdGhfQ2xhdXNlIG5vZGUKCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiIChBY3R1YWxfRGVzaWduYXRlZF9TdWJ0eXBlKTogTmV3IGF0dHJpYnV0ZSBmb3IKCU5fRnJlZV9TdGF0ZW1lbnQgbm9kZXMuCglEZWZpbmUgbmV3IGNsYXNzIE5fU3VicHJvZ3JhbV9JbnN0YW50aWF0aW9uCglBZGQgRWxhYm9yYXRlX0Rlc2lyYWJsZSBmbGFnIHRvIE5fV2l0aF9DbGF1c2Ugbm9kZQoJQWRkIE5fRGVsYXlfU3RhdGVtZW50IChjb3ZlcmluZyB0d28ga2luZHMgb2YgZGVsYXkpCgoJKiBkZWJ1Zy5hZGI6IEludHJvZHVjZSBkLmYgZmxhZyBmb3IgY29tcGlsZXIKCUFkZCAtZGEgc3dpdGNoIGZvciBiaW5kZXIKCjIwMDUtMTEtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgoJKiBleHBfYWdnci5hZGIgKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpOiBEbyBub3QgY3JlYXRlIG1hc3RlciBlbnRpdHkKCWZvciB0YXNrIGNvbXBvbmVudCwgaW4gdGhlIGNhc2Ugb2YgYSBsaW1pdGVkIGFnZ3JlZ2F0ZS4gVGhlIGVuY2xvc2VkCglvYmplY3QgZGVjbGFyYXRpb24gd2lsbCBjcmVhdGUgaXQgZWFybGllci4gT3RoZXJ3aXNlLCBpbiB0aGUgY2FzZSBvZiBhCgluZXN0ZWQgYWdncmVnYXRlLCB0aGUgb2JqZWN0IG1heSBhcHBlYXIgaW4gdGhlIHdyb25nIHNjb3BlLgoJKENvbnZlcnRfQWdncl9Jbl9PYmplY3RfRGVjbCk6IENyZWF0ZSBhIHRyYW5zaWVudCBzY29wZSB3aGVuIG5lZWRlZC4KCShHZW5fQXNzaWduKTogSWYgdGhlIGNvbXBvbmVudCBiZWluZyBhc3NpZ25lZCBpcyBhbiBhcnJheSB0eXBlIGFuZCB0aGUKCWV4cHJlc3Npb24gaXMgaXRzZWxmIGFuIGFnZ3JlZ2F0ZSwgd3JhcCB0aGUgYXNzaWdubWVudCBpbiBhIGJsb2NrIHRvCglmb3JjZSBmaW5hbGl6YXRpb24gYWN0aW9ucyBvbiB0aGUgdGVtcG9yYXJ5IGNyZWF0ZWQgZm9yIGVhY2ggcm93IG9mIHRoZQoJZW5jbG9zaW5nIG9iamVjdC4KCShCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogU2lnbmlmaWNhbnQgcmV3cml0ZSBpbnN1cmluZyB0aGF0IGN0cmwKCXN0cnVjdHVyZXMgYXJlIGluaXRpYWxpemVkIGFmdGVyIGFsbCBkaXNjcmltaW5hbnRzIGFyZSBzZXQgc28gdGhhdAoJdGhleSBjYW4gYmUgYWNjZXNzZWQgZXZlbiB3aGVuIHRoZWlyIG9mZnNldCBpcyBkeW5hbWljLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIHNlbV9hdHRyLmFkYjogSW1wbGVtZW50IE1hY2hpbmVfUm91bmRpbmcgYXR0cmlidXRlCgkoQW5hbHl6ZV9BY2Nlc3NfQXR0cmlidXRlKTogVGhlIGFjY2VzcyBhdHRyaWJ1dGUgbWF5IGFwcGVhciB3aXRoaW4gYW4KCWFnZ3JlZ2F0ZSB0aGF0IGhhcyBiZWVuIGV4cGFuZGVkIGludG8gYSBsb29wLgoJKENoZWNrX1Rhc2tfUHJlZml4KTogQWRkIHNlbWFudGljIGNoZWNrIGZvciBhdHRyaWJ1dGUgJ0NhbGxhYmxlIGFuZAoJJ1Rlcm1pbmF0ZWQgd2hlbmV2ZXIgdGhlIHByZWZpeCBpcyBvZiBhIHRhc2sgaW50ZXJmYWNlIGNsYXNzLXdpZGUgdHlwZS4KCShBbmFseXplX0F0dHJpYnV0ZSk6IEFkZCBzZW1hbnRpYyBjaGVjayBmb3IgYXR0cmlidXRlICdJZGVudGl0eSB3aGVuZXZlcgoJdGhlIHByZWZpeCBpcyBvZiBhIHRhc2sgaW50ZXJmYWNlIGNsYXNzLXdpZGUgdHlwZS4KCgkqIHMtdmFmbG9wLXZtcy1hbHBoYS5hZGI6IFZhbGlkX0QsIFZhbGlkX0YsIFZhbGlkX0c6IE1ha2UgVmFsIGNvbnN0YW50Cgl0byBhdm9pZCB3YXJuaW5ncy4KCgkqIHMtZmF0Z2VuLmFkcywgcy1mYXRnZW4uYWRiIChNYWNoaW5lX1JvdW5kaW5nKTogTmV3IGZ1bmN0aW9uCglSZW1vdmUgcHJhZ21hIElubGluZSBmb3IgW1VuYWxpZ25lZF9dVmFsaWQuCglBZGQgY29tbWVudHMgdGhhdCBWYWxpZCByb3V0aW5lcyBkbyBub3Qgd29yayBmb3IgVmF4X0Zsb2F0CgoJKiBleHBfYXR0ci5hZGI6IEltcGxlbWVudCBNYWNoaW5lX1JvdW5kaW5nIGF0dHJpYnV0ZQoKCSogc25hbWVzLmg6IEFkZCBlbnRyeSBmb3IgTWFjaGluZV9Sb3VuZGluZyBhdHRyaWJ1dGUKCjIwMDUtMTEtMTQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogZXhwX2F0dHIuYWRiIChFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlLCBjYXNlcyBvZiBBdHRyaWJ1dGVfU2l6ZQoJYW5kIHJlbGF0ZWQpOiBGb3IgYSBwcmVmaXggdGhhdCBpcyBhbiBleHBsaWNpdCBkZXJlZmVyZW5jZSBvZiBhbgoJYWNjZXNzIHRvIHVuY29uc3RyYWluZWQgcGFja2VkIGFycmF5IHR5cGUsIGFubm90YXRlIHRoZSBkZXJlZmVyZW5jZQoJd2l0aCBhbiBhY3R1YWwgc3VidHlwZSBzbyBHSUdJIGNhbiBtYWtlIGEgY29ycmVjdCBzaXplIGNvbXB1dGF0aW9uLgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBJbiBjYXNlIG9mICdVbmNoZWNrZWRfQWNjZXNzIGFuZAoJJ1VucmVzdHJpY3RlZF9BY2Nlc3MsIGlmIHRoZSBkZXNpZ25hdGVkIHR5cGUgaXMgYW4gaW50ZXJmYWNlIHdlCglhZGQgYSB0eXBlIGNvbnZlcnNpb24gdG8gZm9yY2UgdGhlIGRpc3BsYWNlbWVudCBvZiB0aGUgcG9pbnRlcgoJdG8gdGhlIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZS4KCVVzZSBVbml2ZXJzYWxfUmVhbCBpbnN0ZWFkIG9mIExvbmdfTG9uZ19GbG9hdCB3aGVuIHdlIG5lZWQgYSBoaWdoCglwcmVjaXNpb24gZmxvYXQgdHlwZSBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlIChwcmV2ZW50cyBncmF0dWl0b3VzCglWYXhfRmxvYXQgc3R1ZmYgd2hlbiBwcmFnbWEgRmxvYXRfUmVwcmVzZW50YXRpb24gKFZheF9GbG9hdCkgdXNlZCkKCShFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlKTogQWRkIHN1cHBvcnQgZm9yIGF0dHJpYnV0ZSAnQ2FsbGFibGUgYW5kCgknVGVybWluYXRlZCBmb3IgdGFzayBpbnRlcmZhY2UgY2xhc3Mtd2lkZSBvYmplY3RzLiBHZW5lcmF0ZSBhIGNhbGwgdG8KCXRoZSBwcmVkZWZpbmVkIGRpc3BhdGNoaW5nIHJvdXRpbmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgX3Rhc2tfaWQgZnJvbQoJYSB0YXNrIGNvcnJlc3BvbmRpbmcgcmVjb3JkLgoJKEV4cGFuZF9GcHRfQXR0cmlidXRlKTogTWFqb3IgY2hhbmdlIHRvIHByb3Blcmx5IGhhbmRsZSBWYXhfRmxvYXQKCgkqIHNlbV9kaXNwLmFkYjogQ2hhbmdlIG5hbWUgSXNfUGFja2FnZSB0byBJc19QYWNrYWdlX09yX0dlbmVyaWNfUGFja2FnZQoJKENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IFByb3RlY3QgdGhlIGZyb250ZW5kIGFnYWludHMKCXByZXZpb3VzbHkgZGV0ZWN0ZWQgZXJyb3JzLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgbmV3IGluc3RhbnRpYXRpb25zIG9mIHN5c3RlbS5mYXRfZ2VuCgoJKiBzLWZhdGZsdC5hZHMsIHMtZmF0bGZsLmFkcywgcy1mYXRsbGYuYWRzLCBzLWZhdHNmbC5hZHM6IAoJQ2hhbmdlIG5hbWUgb2YgaW5zdGFudGlhdGVkIHBhY2thZ2UgZm9yIGJldHRlciBjb25zaXN0ZW5jeQoJd2l0aCBuZXdseSBhZGRlZCBzeXN0ZW0uZmF0X2dlbiBpbnN0YW50aWF0aW9ucy4KCgkqIHMtZmlsb2ZsLmFkcywgcy1maXNoZmwuYWRzLCBzLWZ2YWRmbC5hZHMsIHMtZnZhZmZsLmFkcywKCXMtZnZhZ2ZsLmFkczogTmV3IGZpbGVzLgoKMjAwNS0xMS0xNCAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX05fQXNzaWdubWVudF9TdGF0ZW1lbnQsIFRhZ2dlZF9DYXNlKTogRm9yIGFuCglhc3NpZ25tZW50IG9mIGEgdmFsdWUgb2YgYSB0YWdnZWQgdHlwZSB0aGF0IGhhcyBiZWVuIHJld3JpdHRlbiB0byBhCglibG9jayBzdGF0ZW1lbnQsIGl0IGlzIGtub3duIGJ5IGNvbnN0cnVjdGlvbiB0aGF0IG5vIGNoZWNrcyBhcmUKCW5lY2Vzc2FyeSBmb3IgdGhlIHN0YXRlbWVudHMgd2l0aGluIHRoZSBibG9jazogYW5hbHl6ZSBpdCB3aXRoIGNoZWNrcwoJc3VwcHJlc3NlZC4KCShFeHBhbmRfTl9JZl9TdGF0ZW1lbnQpOiBXaGVuIGtpbGxpbmcgYSBkZWFkIHRoZW4tYnJhbmNoIGluIGFuCglpZi1zdGF0ZW1lbnQgdGhhdCBoYXMgZWxzaWZfcGFydHMsIHJlY29tcHV0ZSB0aGUgQ3VycmVudF9WYWx1ZSBub2RlCglmb3IgYW55IGVudGl0eSB3aG9zZSB2YWx1ZSBpcyBrbm93biBmcm9tIHRoZSBjb25kaXRpb24gb2YgdGhlIGZpcnN0CgllbHNpZl9wYXJ0LgoJKEV4cGFuZF9OX1JldHVybl9TdGF0ZW1lbnQpOiBXaGVuIHJldHVybmluZyBhIG11dGFibGUgcmVjb3JkLCBjb252ZXJ0Cgl0aGUgcmV0dXJuIHZhbHVlIGludG8gaXRzIGFjdHVhbCBzdWJ0eXBlIGluIG9yZGVyIHRvIGhlbHAgdGhlIGJhY2tlbmQKCXRvIHJldHVybiB0aGUgYWN0dWFsIHNpemUgaW5zdGVhZCBvZiB0aGUgbWF4aW11bS4gVGhpcyBpcyBhbm90aGVyCglhZnRlcm1hdGggb2Ygbm90IHJldHVybmluZyBtdXRhYmxlIHJlY29yZHMgb24gdGhlIHNlYy1zdGFjayBhbnltb3JlLgoKCSogc2VtX2NoNS5hZHMsIHNlbV9jaDUuYWRiIChBbmFseXplX0l0ZXJhdGlvbl9TY2hlbWUpOiBNaW5vciBjaGFuZ2UgdG8KCWhhbmRsaW5nIG9mIGVycm9yIG1zZyBmb3Igc3VzcGljaW91cyByZXZlcnNlIHJhbmdlIGl0ZXJhdGlvbi4KCShDaGVja19Qb3NzaWJsZV9DdXJyZW50X1ZhbHVlX0NvbmRpdGlvbik6IE1vdmUgZGVjbGFyYXRpb24gZnJvbSBib2R5IHRvCglzcGVjLCB0byBhbGxvdyB0aGlzIHN1YnByb2dyYW0gdG8gYmUgY2FsbGVkIGZyb20gZXhwX2NoNS4KCjIwMDUtMTEtMTQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZGIgKEFwcGVuZF9BcnJheV9UcmF2ZXJzYWwpOiBNb2RpZnkgY29uc3RyYWluZWQgY2FzZSB0bwoJZ2VuZXJhdGUgYSBzZXQgb2YgbmVzdGVkIGFycmF5IGFnZ3JlZ2F0ZXMgaW5zdGVhZCBvZiBhIHNpbmdsZSBmbGF0CglhZ2dyZWdhdGUgZm9yIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5cy4KCjIwMDUtMTEtMTQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGV4cGVjdC5jIChfX2duYXRfa2lsbCkgW1dpbjMyXTogRml4IGltcGxlbWVudGF0aW9uLCB0aGUgcGlkIHJldHVybmVkCglieSBzcGF3bnZlIGlzIGEgcHJvY2VzcyBoYW5kbGUsIG5vIG5lZWQgdG8gY29udmVydC4gQWRkIGEgcGFyYW1ldGVyCgljbG9zZSB0byBjb250cm9sIHdldGhlciB0aGUgcHJvY2VzcyBoYW5kbGUgbXVzdCBiZSBjbG9zZWQuCgkoX19nbmF0X3dhaXRwaWQpOiBGaXggaW1wbGVtZW50YXRpb24sIHRoZSBwaWQgcmV0dXJuZWQgYnkgc3Bhd252ZSBpcwoJYSBwcm9jZXNzIGhhbmRsZSwgbm90IG5lZWQgdG8gY29udmVydC4KCShfX2duYXRfa2lsbCkgWypdOiBBZGQgZHVtbXkgcGFyYW1ldGVyIGNsb3NlIHRvIG1hdGNoIHRoZSBXaW4zMiBzcGVjLgoKCSogZy1leHBlY3QuYWRiOiAoS2lsbCk6IERvY3VtZW50IHRoZSBuZXcgY2xvc2UgcGFyYW1ldGVyLgoJKENsb3NlKTogRG8gbm90IHJlbGVhc2UgdGhlIHByb2Nlc3MgaGFuZGxlIGluIHRoZSBraWxsIHRoZXJlIGFzCgl3YWl0cGlkKCkgaXMgdXNpbmcgaXQuCgkoU2VuZF9TaWduYWwpOiBSZWxlYXNlIHRoZSBwcm9jZXNzIGhhbmRsZS4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX2ZpeGQuYWRiOiBVc2UgVW5pdmVyc2FsX1JlYWwgaW5zdGVhZCBvZiBMb25nX0xvbmdfRmxvYXQgd2hlbiB3ZQoJbmVlZCBhIGhpZ2ggcHJlY2lzaW9uIGZsb2F0IHR5cGUgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZSAocHJldmVudHMKCWdyYXR1aXRvdXMgVmF4X0Zsb2F0IHN0dWZmIHdoZW4gcHJhZ21hIEZsb2F0X1JlcHJlc2VudGF0aW9uIChWYXhfRmxvYXQpCgl1c2VkKS4KCgkqIGV4cF9pbWd2LmFkYjogVXNlIFVuaXZlcnNhbF9SZWFsIGluc3RlYWQgb2YgTG9uZ19Mb25nX0Zsb2F0IHdoZW4gd2UKCW5lZWQgYSBoaWdoIHByZWNpc2lvbiBmbG9hdCB0eXBlIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGUgKHByZXZlbnRzCglncmF0dWl0b3VzIFZheF9GbG9hdCBzdHVmZiB3aGVuIHByYWdtYSBGbG9hdF9SZXByZXNlbnRhdGlvbiAoVmF4X0Zsb2F0KQoJdXNlZCkuCgkoRXhwYW5kX1dpZHRoX0F0dHJpYnV0ZSk6IEluIGNvbmZpZ3VyYWJsZSBydW4tdGltZSwgdGhlIGF0dHJpYnV0ZSBpcyBub3QKCWFsbG93ZWQgb24gbm9uLXN0YXRpYyBlbnVtZXJhdGlvbiBzdWJ0eXBlcy4gRm9yY2UgYSBsb2FkIGVycm9yIHRvIGVtaXQKCXRoZSBjb3JyZWN0IGRpYWdub3N0aWMuCgoyMDA1LTExLTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbnRyLmFkYiAoRXhwYW5kX1VuY19EZWFsbG9jYXRpb24pOiBJZiBHSUdJIG5lZWRzIGFuIGFjdHVhbAoJc3VidHlwZSB0byBjb21wdXRlIHRoZSBzaXplIG9mIHRoZSBkZXNpZ25hdGVkIG9iamVjdCBhdCBydW4tdGltZSwKCWNyZWF0ZSBzdWNoIGEgc3VidHlwZSBhbmQgc3RvcmUgaXQgaW4gdGhlIEFjdHVhbF9EZXNpZ25hdGVkX1N1YnR5cGUKCWF0dHJpYnV0ZSBvZiB0aGUgTl9GcmVlX1N0YXRlbWVudC4KCUdlbmVyYXRlIGl0eXBlIGZvciBjbGFzc3dpZGUgZGVzaWduYXRlZCBvYmplY3QgaW4gYm90aCBjYXNlcyBvZgoJdXNlci1zcGVjaWZpZWQgc3RvcmFnZSBwb29sOiBzcGVjaWZpYyBhbmQgY2xhc3Mtd2lkZSwgbm90IG9ubHkgaW4gdGhlCglzcGVjaWZpYyBjYXNlLgoJUmFpc2UgQ0Ugd2hlbiB0cnlpbmcgdG8gc2V0IGEgbm90IG51bGwgYWNjZXNzIHR5cGUgb2JqZWN0IHRvIG51bGwuCgkoRXhwYW5kX0Rpc3BhdGNoaW5nX0NvbnN0cnVjdG9yX0NhbGwpOiBSZXRyaWV2ZSBzdWJwcm9ncmFtIGFjdHVhbCB3aXRoCglhbiBleHBsaWNpdCBsb29wLCBiZWNhdXNlIGZyZWV6ZSBub2RlcyBtYWtlIGl0cyBwb3NpdGlvbiB2YXJpYWJsZS4KCgkqIHNlbV9pbnRyLmFkYiAoQ2hlY2tfSW50cmluc2ljX0NhbGwpOiBHaXZlbiB3YXJuaW5nIGZvciBmcmVlaW5nIG5vdAoJbnVsbCBvYmplY3QuCgoyMDA1LTExLTE0ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfc3RybS5hZGIgKEJ1aWxkX1N0cmVhbV9BdHRyX1Byb2ZpbGUsIEJ1aWxkX1N0cmVhbV9GdW5jdGlvbiwKCUJ1aWxkX1N0cmVhbV9Qcm9jZWR1cmUpOiBBZGQgdGhlIG51bGwtZXhjbHVkaW5nIGF0dHJpYnV0ZSB0byB0aGUgZmlyc3QKCWZvcm1hbC4KCVRoaXMgaGFzIG5vIHNlbWFudGljIG1lYW5pbmcgdW5kZXIgQWRhOTUgbW9kZSBidXQgaXQgaXMgYQoJcmVxdWlyZW1lbnQgdW5kZXIgQWRhMDUgbW9kZS4KCgkqIHBhci1jaDMuYWRiIChQX0FjY2Vzc19EZWZpbml0aW9uKTogQWRkaXRpb24gb2Ygd2FybmluZyBtZXNzYWdlIGlmCgl0aGUgbnVsbCBleGNsdXNpb24gaXMgdXNlZCB1bmRlciBBZGE5NSBtb2RlCgkoUF9OdWxsX0V4Y2x1c2lvbik6IFRoZSBxdWFsaWZpZXIgaGFzIG5vIHNlbWFudGljIG1lYW5pbmcgaW4gQWRhIDk1LgoJKFBfQWNjZXNzX0RlZmluaXRpb24pOiBSZW1vdmUgYXNzZXJ0aW9uIHRoYXQgZm9yYmlkcyB0aGUgdXNlIG9mCgl0aGUgbnVsbC1leGNsdXNpb24gZmVhdHVyZSBpbiBBZGE5NS4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogaW1wdW5pdC5hZGI6IEV4Y2x1ZGUgY29udGFpbmVyIGhlbHBlciB1bml0cyBub3QgaW50ZW5kZWQgZm9yIHVzZSBieQoJdXNlcnMuCgoyMDA1LTExLTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfRW50aXR5KTogRm9yIGFuIGFjY2VzcyBmb3JtYWwgdGhhdCBpcyBhbiBhY2Nlc3MKCXRvIHN1YnByb2dyYW0sIGZyZWV6ZSB0aGUgYW5vbnltb3VzIHN1YnByb2dyYW0gdHlwZSBhdCB0aGUgc2FtZSB0aW1lLAoJdG8gcHJldmVudCBsYXRlciBmcmVlemluZyBpbiB0aGUgd3Jvbmcgc2NvcGUsIHN1Y2ggYXMgdGhlIGVuY2xvc2luZwoJc3VicHJvZ3JhbSBib2R5LgoJKEZyZWV6ZV9FbnRpdHkpOiBGcmVlemUgdGhlIGVxdWl2YWxlbnRfdHlwZSBvZiBhbiBhY2Nlc3NfdG9fcHJvdGVjdGVkXwoJc3VicHJvZ3JhbSB3aGVuZXZlciBhdmFpbGFibGUuCgoyMDA1LTExLTE0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJUFIgYWRhLzIzNzMyCgkqIGduYXR2c24uYWRzIChMaWJyYXJ5X1ZlcnNpb24pOiBCdW1wIHRvIDQuMQoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLWRlYnBvby5hZGIgKFNldF9WYWxpZCk6IFVzZSBJbnRlZ2VyX0FkZHJlc3MgaW5zdGVhZCBvZgoJU3RvcmFnZV9PZmZzZXQgdG8gYXZvaWQgd3JhcCBhcm91bmQgY2F1c2luZyBpbnZhbGlkIHJlc3VsdHMuCgoyMDA1LTExLTE0ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBnbmF0YmluZC5hZGIgKElzX0Nyb3NzX0NvbXBpbGVyKTogTmV3IGZ1bmN0aW9uIHJldHVybmluZyBUcnVlIGZvcgoJY3Jvc3MtY29tcGlsZXIuCgkoU2Nhbl9CaW5kX0FyZyk6IEZhaWwgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIC1NIG9wdGlvbiBpcyB1c2VkCglvbiBhIG5hdGl2ZSBjb21waWxlci4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZ3ByZXAuYWRiOiBJbXBsZW1lbnQgLUMgc3dpdGNoIHRvIHNjYW4gY29tbWVudHMKCgkqIHNjbmcuYWRiOiBTY2FuIGNvbW1lbnQgc3ltYm9sIHNlcGFyYXRlbHkgaWYgUmVwbGFjZV9Jbl9Db21tZW50cyBzZXQKCgkqIHNjYW5zLmFkczogQ29tbWVudCB1cGRhdGVzIChpbmNsdWRpbmcgbmV3IHVzZSBvZiBUb2tfQ29tbWVudCBpbgoJcHJlcHJvY2Vzc2luZykKCgkqIG9wdC5hZHM6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBmbGFncyB0aGF0IGFyZSB1c2VkIGJ5IGdwcm1ha2UsCgljdXJyZW50bHkgYW5kIGluIHRoZSBuZXh0IHZlcnNpb24gb2YgZ3BybWFrZS4KCShWZXJib3NpdHlfTGV2ZWwpOiBOZXcgdmFyaWFibGUKCUFkZCBSZXBsYWNlX0luX0NvbW1lbnRzIHN3aXRjaAoKCSogdm1zX2RhdGEuYWRzOiBBZGQgVk1TIGVxdWl2YWxlbnQgZm9yIG5ldyBnbmF0bWFrZSBzd2l0Y2hlcyAtdmwsIC12bQoJYW5kIC12bS4KCUFkZCAvUkVQTEFDRV9JTl9DT01NRU5UUyBmb3IgZ25hdHByZXAgLUMgc3dpdGNoCgoyMDA1LTExLTE0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBnLXJlZ3BhdC5hZGIgKEZhaWwpOiByYWlzZSBFeHByZXNzaW9uX0Vycm9yIGluY2x1ZGluZyB0aGUgZGlhZ25vc3RpYwoJbWVzc2FnZSwgZnJpZW5kbGllci4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1zcGl0Ym8uYWRiOiAoSGFzaCk6IFJvdGF0ZSBieSAzIGluc3RlYWQgb2YgMQoKMjAwNS0xMS0xNCAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIGluaXQuYyBbVk1TXTogRG9uJ3QgaW5zdGFsbCBfX2duYXRfZXJyb3JfaGFuZGxlciBpZiBEQkckVERCRyBkZWZpbmVkLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBpbnRlcmZhYy5hZHM6IENoYW5nZSBkZWNsYXJhdGlvbnMgb2YgSUVFRSBmbG9hdCB0eXBlcyBzbyB0aGF0IHdlIG5vCglsb25nZXIgbmVlZCBhIHNlcGFyYXRlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlIGZvciBWTVMuCgoyMDA1LTExLTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBsaWIteHJlZi5hZGIgKEdlbmVyYXRlX0RlZmluaXRpb24sIEdlbmVyYXRlX1JlZmVyZW5jZSk6IFRyZWF0IHRoZQoJaW50ZXJuYWwgZW50aXR5IGNyZWF0ZWQgZm9yIHRoZSBkZWNsYXJhdGlvbiBvZiBhIGNoaWxkIHN1YnByb2dyYW0gYm9keQoJd2l0aCBubyBzcGVjIGFzIGNvbWluZyBmcm9tIHNvdXJjZSwgdG8gZ2VuZXJhdGUgcHJvcGVyIGNyb3NzLXJlZmVyZW5jZQoJaW5mb3JtYXRpb24uCgoyMDA1LTExLTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiIChDb21waWxlX1NvdXJjZXMpOiBDaGFuZ2UgdmVyYm9zZSBtZXNzYWdlIHRvIG1pbmltdW0KCXZlcmJvc2l0eSBsZXZlbCBIaWdoIGZvciAiaXMgaW4gYW4gQWRhIGxpYnJhcnkiLCAiaXMgYSByZWFkLW9ubHkKCWxpYnJhcnkiIGFuZCAiaXMgYW4gaW50ZXJuYWwgbGlicmFyeSIsCgkoQ3JlYXRlX0JpbmRlcl9NYXBwaW5nX0ZpbGUpOiBQYXRoIG5hbWUgb2YgQUxJIGZpbGUgZm9yIGxpYnJhcnkgcHJvamVjdAoJbXVzdCBpbmNsdWRlIHRoZSBsaWJyYXJ5IGRpcmVjdG9yeSwgbm90IHRoZSBvYmplY3QgZGlyZWN0b3J5LgoJKFNjYW5fTWFrZV9BcmcpOiBNYWtlIHN1cmUgdGhhdCBTd2l0Y2guTS5TY2FuX01ha2VfU3dpdGNoZXMgaXMgY2FsbGVkCglmb3IgbmV3IHN3aXRjaGVzIC12bCwgLXZtIGFuZCAtdmguCgkoVmVyYm9zZV9Nc2cpOiBBZGQgbmV3IGRlZmF1bHRlZCBwYXJhbWV0ZXIgTWluaW11bV9WZXJib3NpdHkKCShDaGVjayk6IFVzZSBtaW5pbXVtIHZlcmJvc2l0eSBNZWRpdW0gZm9yIHNvbWUgVmVyYm9zZV9Nc2cgY2FsbHMKCShDb21waWxlX1NvdXJjZXMpOiBEbyBub3QgYXR0ZW1wdCB0byBjb21waWxlIGlmIGFuIEFMSSBmaWxlIGlzIG1pc3NpbmcKCWluIGEgcHJvamVjdCB0aGF0IGlzIGV4dGVybmFsbHkgYnVpbHQuCgkoQ29tcHV0ZV9BbGxfSW1wb3J0ZWRfUHJvamVjdHMpOiBOZXcgcHJvY2VkdXJlCgkoR25hdG1ha2UpOiBDaGVjayBpZiBpbXBvcnRpbmcgbGlicmFyaWVzIHNob3VsZCBiZSByZWdlbmVyYXRlZCBiZWNhdXNlCglhdCBsZWFzdCBhbiBpbXBvcnRlZCBsaWJyYXJ5IGlzIG1vcmUgcmVjZW50LgoJKEluaXRpYWxpemUpOiBGb3IgZWFjaCBwcm9qZWN0IGNvbXB1dGUgdGhlIGxpc3Qgb2YgdGhlIHByb2plY3RzIGl0CglpbXBvcnRzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkuCgkoQWRkX0xpYnJhcnlfU2VhcmNoX0Rpcik6IE5ldyBwcm9jZWR1cmUsIHVzZWQgaW4gcGxhY2Ugb2YKCUFkZF9MaWJfU2VhcmNoX0RpciBpbiBwcm9jZWR1cmUgU2Nhbl9NYWtlX0FyZyBzbyB0aGF0IGFic29sdXRlIHBhdGhzIGFyZQoJcHV0IGluIHRoZSBzZWFyY2ggcGF0aHMuCgkoQWRkX1NvdXJjZV9TZWFyY2hfRGlyKTogTmV3IHByb2NlZHVyZSwgdXNlZCBpbiBwbGFjZSBvZgoJQWRkX1NyY19TZWFyY2hfRGlyIGluIHByb2NlZHVyZSBTY2FuX01ha2VfQXJnIHNvIHRoYXQgYWJzb2x1dGUgcGF0aHMgYXJlCglwdXQgaW4gdGhlIHNlYXJjaCBwYXRocy4KCShNYXJrX0RpcmVjdG9yeSk6IFJlc29sdmUgdGhlIGFic29sdXRlIHBhdGggdGhlIGRpcmVjdG9yeSBiZWZvcmUgbWFya2luZwoJaXQuCgoJKiBzd2l0Y2gtbS5hZGIgKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IFJlcGxhY2UgInJhaXNlIEJhZF9Td2l0Y2g7IiB3aXRoCgljYWxsIHRvIG5ldyBwcm9jZWR1cmUgQmFkX1N3aXRjaC4gQ2FsbCBTY2FuX1BvcyB3aXRoIG5ldyBwYXJhbWV0ZXIKCVN3aXRjaC4gRG8gbm90IGhhbmRsZSBhbnkgZXhjZXB0aW9uLgoJKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IEluY3JlbWVudCBQdHIgZm9yIG5ldyBzd2l0Y2hlcyAtdmwsIC12bSBhbmQgLXZoCglzbyB0aGF0IHRoZSBzd2l0Y2ggaXMgcmVjb2duaXplZCBhcyB2YWxpZC4KCShTY2FuX01ha2VfU3dpdGNoZXMpOiBJbXBsZW1lbnQgbmV3IHN3aXRjaGVzIC12bCwgLXZtIGFuZCAtdmguCgoyMDA1LTExLTE0ICBHTkFUIFNjcmlwdCAgPG5vYm9keUBhZGFjb3JlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDA1LTExLTE0ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBtZGxsLmFkYiAoQnVpbGRfUmVsb2NfRExMKTogRml4IHBhcmFtZXRlciBoYW5kbGluZyB3aGVuIGEgbWFwIGZpbGUgaXMKCXVzZWQuCgkoQWRhX0J1aWxkX1JlbG9jX0RMTCk6IEZpeCBwYXJhbWV0ZXIgaGFuZGxpbmcgd2hlbiBhIG1hcCBmaWxlIGlzIHVzZWQuCglJbiBib3RoIGNhc2VzIHRoZSBsYXN0IGFyZ3VtZW50IHdhcyBkcm9wcGVkLgoKMjAwNS0xMS0xNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIG5hbWV0Lmg6IChDb2x1bW5fTnVtYmUpOiBOZXcgdHlwZS4KCShHZXRfQ29sdW1uX051bWJlcik6IERlZmluZSB0byBzaW5wdXRfX2dldF9jb2x1bW5fbnVtYmVyLgoJKEluc3RhbnRpYXRpb24pOiBEZWZpbmUgdG8gc2lucHV0X19pbnN0YW50aWF0aW9uLgoJKEdldF9Db2x1bW5fTnVtYmVyKTogRGVjbGFyZS4KCShJbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHBhci1jaDEwLmFkYiAoUF9Db21waWxhdGlvbl9Vbml0KTogQWRkIGRlZmVuc2VzIGFnYWluc3QganVuayB1bml0CglzeW50YXgsIHdoaWNoIGNvdWxkIGNhdXNlIGNvbXBpbGVyIGhhbmdzLgoKMjAwNS0xMS0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmotZXh0LmFkYjogVGFrZSBpbnRvIGFjY291bnQgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlCglHUFJfUFJPSkVDVF9QQVRILiBXYXJuIGlmIGJvdGggR1BSX1BST0pFQ1RfUEFUSCBhbmQgQURBX1BST0pFQ1RfUEFUSAoJYXJlIGRlZmluZWQuCgkoUHJqLkV4dCBlbGFib3JhdGlvbik6IEZvciBlYWNoIGRpcmVjdG9yeSBpbiB0aGUgQURBX1BST0pFQ1RfUEFUSCwKCW5vcm1hbGl6ZSBpdHMgcGF0aCBuYW1lLCBtYWtpbmcgaXQgYWJzb2x1dGUgYW5kIHJlc29sdmluZyBzeW1ib2xpYwoJbGlua3MsIGFuZCByZXBsYWNlIHRoZSBvcmlnaW5hbCBpZiByZXNvbHZlZCBwYXRoIGlzIGRpZmZlcmVudC4KCjIwMDUtMTEtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLXBhcnQuYWRiIChDcmVhdGVfVmlydHVhbF9FeHRlbmRpbmdfUHJvamVjdCk6IFB1dCB2aXJ0dWFsIHByb2plY3QKCWludG8gUHJqLlRyZWUuVHJlZV9Qcml2YXRlX1BhcnQuUHJvamVjdHNfSHRhYmxlIGZvciBHUFMuCgoyMDA1LTExLTE0ICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoKCSogcHJqLXBwLmFkYiAoUHJpbnQpOiBEbyBub3Qgb3V0cHV0IHRoZSB3aXRoIHN0YXRlbWVudCBpZiB0aGUKCWFzc29jaWF0ZWQgbmFtZSBpcyBlbXB0eSwgd2hpY2ggaGFwcGVucyBmb3IgdmlydHVhbCBleHRlbmRpbmcgcHJvamVjdHMuCgkoUHJpbnQpOiBQcmVzZXJ2ZSB0aGUgImV4dGVuZHMgYWxsIiBhdHRyaWJ1dGUgd2hlbiBwcmludGluZyB0aGUgcHJvamVjdC4KCgkqIHByai10cmVlLmFkcyAoU3RyaW5nX1ZhbHVlX09mKTogQWRkIGNvbW1lbnQgYWJvdXQgcmV0dXJuZWQgdmFsdWUgZm9yCglhIHZpcnR1YWwgZXh0ZW5kaW5nIHByb2plY3QuCgoyMDA1LTExLTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fYWdnci5hZGIgKFJlc29sdmVfQWdncmVnYXRlKTogQW4gb3RoZXJzIGNob2ljZSBpcyBsZWdhbCBvbiB0aGUKCXJocyBvZiBhbiBhc3NpZ25tZW50IGV2ZW4gaWYgdGhlIHR5cGUgaXMgdW5jb25zdHJhaW5lZCwgd2hlbiB0aGUKCWNvbnRleHQgaXMgbm9uLWV4cGFuZGluZy4KCUluIGFuIGlubGluZWQgYm9keSwgaWYgdGhlIGNvbnRleHQgdHlwZSBpcyBwcml2YXRlLAoJcmVzb2x2ZSB3aXRoIGl0cyBmdWxsIHZpZXcsIHdoaWNoIG11c3QgYmUgYSBjb21wb3NpdGUgdHlwZS4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEwLmFkYjogQ2hhbmdlIG5hbWUgSXNfUGFja2FnZSB0byBJc19QYWNrYWdlX09yX0dlbmVyaWNfUGFja2FnZQoJRG8gbm90IGdpdmUgb2Jzb2xlc2NlbnQgd2FybmluZyBvbiB3aXRoIG9mIHN1YnByb2dyYW0gKHNpbmNlIHdlCglkaWFnbm9zZSBjYWxscykKCShBbmFseXplX1dpdGhfQ2xhdXNlKTogQWRkIHRlc3QgZm9yIG9ic29sZXNjZW50IHBhY2thZ2UKCShJbnN0YWxsX0NvbnRleHRfQ2xhdXNlcyk6IElmIHRoZSB1bml0IGlzIHRoZSBib2R5IG9mIGEgY2hpbGQgdW5pdCwgZG8KCW5vdCBpbnN0YWxsIHR3aWNlIHRoZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBvZiB0aGUgcGFyZW50cywgdG8gcHJldmVudAoJY2lyY3VsYXIgbGlzdHMgb2YgVXNlX0NsYXVzZXMgaW4gYSBwYXJlbnQuCgkoSW1wbGljaXRfV2l0aF9Pbl9QYXJlbnQpOiBEbyBhZGQgZHVwbGljYXRlIHdpdGhfY2xhdXNlIG9uIHBhcmVudCB3aGVuCgljb21waWxpbmcgYm9keSBvZiBjaGlsZCB1bml0LgoJVXNlIG5ldyBjbGFzcyBOX1N1YnByb2dyYW1fSW5zdGFudGlhdGlvbgoJKEV4cGFuZF9XaXRoX0NsYXVzZSk6IElmIHRoaXMgaXMgYSBwcml2YXRlIHdpdGhfY2xhdXNlIGZvciBhIGNoaWxkIHVuaXQsCglhcHBlYXJpbmcgaW4gdGhlIGNvbnRleHQgb2YgYSBwYWNrYWdlIGRlY2xhcmF0aW9uLCB0aGVuIHRoZSBpbXBsaWNpdAoJd2l0aF9jbGF1c2VzIGdlbmVyYXRlZCBmb3IgcGFyZW50IHVuaXRzIGFyZSBwcml2YXRlIGFzIHdlbGwuCgkoTGljZW5zZV9DaGVjayk6IERvIG5vdCBnZW5lcmF0ZSBtZXNzYWdlIGlmIHdpdGgnZWQgdW5pdCBpcyBpbnRlcm5hbAoKMjAwNS0xMS0xNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTIuYWRzLCBzZW1fY2gxMi5hZGIgKE1hcF9FbnRpdGllcyk6IEV4Y2x1ZGUgZW50aXRpZXMgd2hvc2UKCW5hbWVzIGFyZSBpbnRlcm5hbCwgYmVjYXVzZSB0aGV5IHdpbGwgbm90IGhhdmUgYSBjb3JyZXNwb25kaW5nIHBhcnRuZXIKCWluIHRoZSBhY3R1YWwgcGFja2FnZS4KCShBbmFseXplX0Zvcm1hbF9QYWNrYWdlKTogTW92ZSB0aGUgc2V0dGluZyBvZiB0aGUgZm9ybWFsIHBhY2thZ2Ugc3BlYydzCglHZW5lcmljX1BhcmVudCBmaWVsZCBzbyB0aGF0IGl0IG9jY3VycyBwcmlvciB0byBhbmFseXppbmcgdGhlIHBhY2thZ2UsCgl0byBhbGxvdyBwcm9wZXIgb3BlcmF0aW9uIG9mIEluc3RhbGxfUGFyZW50X1ByaXZhdGVfRGVjbGFyYXRpb25zLgoJKEFuYWx5emVfUGFja2FnZV9JbnN0YW50aWF0aW9uKTogU2V0IHRoZSBpbnN0YW50aWF0ZWQgcGFja2FnZSBlbnRpdHkncwoJUGFja2FnZV9JbnN0YW50aWF0aW9uIGZpZWxkLgoJKEdldF9QYWNrYWdlX0luc3RhbnRpYXRpb25fTm9kZSk6IE1vdmUgZGVjbGFyYXRpb24gdG8gcGFja2FnZSBzcGVjLgoJUmV0cmlldmUgdGhlIE5fUGFja2FnZV9JbnN0YW50aWF0aW9uIG5vZGUgd2hlbiB0aGUgUGFja2FnZV9JbnN0YW50aWF0aW9uCglmaWVsZCBpcyBwcmVzZW50LgoJKENoZWNrX0dlbmVyaWNfQ2hpbGRfVW5pdCk6IFdpdGhpbiBhbiBpbmxpbmVkIGNhbGwsIHRoZSBvbmx5IHBvc3NpYmxlCglpbnN0YW50aWF0aW9uIGlzIFVuY2hlY2tlZF9Db252ZXJzaW9uLCBmb3Igd2hpY2ggbm8gcGFyZW50cyBhcmUgbmVlZGVkLgoJKElubGluZV9JbnN0YW5jZV9Cb2R5KTogRGVpbnN0YWxsIGFuZCByZWNvcmQgdGhlIHVzZV9jbGF1c2VzIGZvciBhbGwKCXBhcmVudCBzY29wZXMgb2YgYSBzY29wZSBiZWluZyByZW1vdmVkIHByaW9yIHRvIGlubGluaW5nIGFuIGluc3RhbmNlCglib2R5LgoJKEFuYWx5emVfUGFja2FnZV9JbnN0YW50aWF0aW9uKTogRG8gbm90IHBlcmZvcm0gZnJvbnQtZW5kIGlubGluaW5nIHdoZW4KCXRoZSBjdXJyZW50IGNvbnRleHQgaXMgaXRzZWxmIGFuIGluc3RhbmNlIHdpdGhpbiBhIG5vbi1pbnN0YW5jZSBjaGlsZAoJdW5pdCwgdG8gcHJldmVudCBzY29wZSBzdGFjayBlcnJvcnMuCgkoU2F2ZV9SZWZlcmVuY2VzKTogSWYgdGhlIG5vZGUgaXMgYW4gYWdncmVnYXRlIHRoYXQgaXMgYW4gYWN0dWFsIGluIGEKCWNhbGwsIHJld3JpdGUgYXMgYSBxdWFsaWZpZWQgZXhwcmVzc2lvbiB0byBwcmVzZXJ2ZSBzb21lIHR5cGUKCWluZm9ybWF0aW9uLCB0byByZXNvbHZlIHBvc3NpYmxlIGFtYmlndWl0aWVzIGluIHRoZSBpbnN0YW5jZS4KCShJbnN0YW5jZV9QYXJlbnRfVW5pdCk6IE5ldyBnbG9iYWwgdmFyaWFibGUgdG8gcmVjb3JkIHRoZSB1bHRpbWF0ZQoJcGFyZW50IHVuaXQgYXNzb2NpYXRlZCB3aXRoIGEgZ2VuZXJpYyBjaGlsZCB1bml0IGluc3RhbmNlIChhc3NvY2lhdGVkCgl3aXRoIHRoZSBleGlzdGluZyBQYXJlbnRfVW5pdF9WaXNpYmxlIGZsYWcpLgoJKHR5cGUgSW5zdGFuY2VfRW52KTogTmV3IGNvbXBvbmVudCBJbnN0YW5jZV9QYXJlbnRfVW5pdCBmb3Igc3RhY2tpbmcKCXBhcmVudHMgcmVjb3JkZWQgaW4gdGhlIGdsb2JhbCBJbnN0YW5jZV9QYXJlbnRfVW5pdC4KCShJbml0X0Vudik6IFNhdmUgdmFsdWUgb2YgSW5zdGFuY2VfUGFyZW50X1VuaXQgaW4gdGhlIEluc3RhbmNlX0VudgoJc3RhY2suCgkoSW5zdGFsbF9TcGVjKTogU2F2ZSB0aGUgcGFyZW50IHVuaXQgZW50aXR5IGluIEluc3RhbmNlX1BhcmVudF9Vbml0IHdoZW4KCWl0J3Mgbm90IGEgdG9wLWxldmVsIHVuaXQsIGFuZCBvbmx5IGRvIHRoaXMgaWYgSW5zdGFuY2VfUGFyZW50X1VuaXQgaXMKCW5vdCBhbHJlYWR5IHNldC4gUmVwbGFjZSB0ZXN0IG9mIElzX0NoaWxkX1VuaXQgd2l0aCB0ZXN0IG9mIHBhcmVudCdzCglzY29wZSBhZ2FpbnN0IHBhY2thZ2UgU3RhbmRhcmQuIEFkZCBjb21tZW50cyBhbmQgYSA/Pz8gY29tbWVudC4KCShSZW1vdmVfUGFyZW50KTogUmV2aXNlIGNvbmRpdGlvbiBmb3IgcmVzZXR0aW5nIElzX0ltbWVkaWF0ZWx5X1Zpc2libGUKCW9uIGEgY2hpbGQgaW5zdGFuY2UgcGFyZW50IHRvIHRlc3QgdGhhdCB0aGUgcGFyZW50IGVxdWFscwoJSW5zdGFuY2VfUGFyZW50IHJhdGhlciB0aGFuIHNpbXBseSBjaGVja2luZyB0aGF0IHRoZSB1bml0IGlzIG5vdCBhCgljaGlsZCB1bml0LgoJKFJlc3RvcmVfRW52KTogUmVzdG9yZSB2YWx1ZSBvZiBJbnN0YW5jZV9QYXJlbnRfVW5pdCBmcm9tIEluc3RhbmNlX0Vudi4KCShWYWxpZGF0ZV9EZXJpdmVkX0ludGVyZmFjZV9UeXBlX0luc3RhbmNlKTogVmVyaWZ5IHRoYXQgYWxsIGFuY2VzdG9ycyBvZgoJYSBmb3JtYWwgaW50ZXJmYWNlIGFyZSBhbmNlc3RvcnMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYWN0dWFsLgoJKFZhbGlkYXRlX0Zvcm1hbF9JbnRlcmZhY2VfVHlwZSk6IEFkZGl0aW9uYWwgbGVnYWxpdHkgY2hlY2tzLgoJKEFuYWx5emVfRm9ybWFsX0Rlcml2ZWRfSW50ZXJmYWNlX1R5cGUpOiBOZXcgcHJvY2VkdXJlIHRvIGhhbmRsZSBmb3JtYWwKCWludGVyZmFjZSB0eXBlcyB3aXRoIGFuY2VzdG9ycy4KCShBbmFseXplX0Zvcm1hbF9QYWNrYWdlKTogSWYgZm9ybWFsIGlzIGEgcmVuYW1pbmcsIHVzZSByZW5hbWVkIGVudGl0eQoJdG8gZGlhZ25vc2UgYXR0ZW1wdHMgdG8gdXNlIGdlbmVyaWMgd2l0aGluIGl0cyBvd24gZGVjbGFyYXRpb24uCgoyMDA1LTExLTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMy5hZHMsIHNlbV9jaDMuYWRiIChCdWlsZF9EaXNjcmltaW5hbCk6IEFkZCBsaW5rIHRvIG9yaWdpbmFsCglkaXNjcmltaW5hbnQuCgkoQnVpbGRfUHJpdmF0ZV9EZXJpdmVkX1R5cGUpOiBUaGUgZW50aXR5IG9mIHRoZSBjcmVhdGVkIGZ1bGwgdmlldyBvZiB0aGUKCWRlcml2ZWQgdHlwZSBkb2VzIG5vdCBjb21lIGZyb20gc291cmNlLiBJZiBhZnRlciBpbnN0YWxsaW5nIHRoZSBwcml2YXRlCglkZWNsYXJhdGlvbnMgb2YgdGhlIHBhcmVudCBzY29wZSB0aGUgcGFyZW50IGlzIHN0aWxsIHByaXZhdGUsIHVzZSBpdHMKCWZ1bGwgdmlldyB0byBjb25zdHJ1Y3QgdGhlIGZ1bGwgZGVjbGFyYXRpb24gb2YgdGhlIGRlcml2ZWQgdHlwZS4KCShCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogUmVsYXggdGhlIGNvbmRpdGlvbiB0aGF0IGNvbnRyb2xzIHRoZQoJZXhlY3V0aW9uIG9mIHRoZSBjaGVjayB0aGF0IHZlcmlmaWVzIHRoYXQgdGhlIHBhcnRpYWwgdmlldyBhbmQKCXRoZSBmdWxsIHZpZXcgYWdyZWUgaW4gdGhlIHNldCBvZiBpbXBsZW1lbnRlZCBpbnRlcmZhY2VzLiBJbgoJYWRkaXRpb24sIHRoaXMgdGVzdCBub3cgb25seSB0YWtlcyBpbnRvIGFjY291bnQgdGhlIHByb2dlbml0b3JzLgoJKERlcml2ZV9JbnRlcmZhY2VfU3VicHJvZ3JhbXMpOiBObyBuZWVkIHRvIGRlcml2ZSBzdWJwcm9ncmFtcwoJb2YgYW5jZXN0b3JzIHRoYXQgYXJlIGludGVyZmFjZXMuCgkoRGVyaXZlX1N1YnByb2dyYW1zKTogUmVtb3ZlIGZvcm1hbCBOb19QcmVkZWZpbmVkX1ByaW1zIGFuZCB0aGUKCWFzc29jaWF0ZWQgY29kZS4KCUNoYW5nZSBuYW1lIElzX1BhY2thZ2UgdG8gSXNfUGFja2FnZV9Pcl9HZW5lcmljX1BhY2thZ2UKCShDb21wbGV0ZV9TdWJwcm9ncmFtc19EZXJpdmF0aW9uKTogSGFuZGxlIHRoZSBjYXNlIGluIHdoaWNoIHRoZSBmdWxsCgl2aWV3IGlzIGEgdHJhbnNpdGl2ZSBkZXJpdmF0aW9uIG9mIHRoZSBhbmNlc3RvciBvZiB0aGUgcGFydGlhbCB2aWV3LgoJKFByb2Nlc3NfRnVsbF9WaWV3KTogUmVuYW1lIGxvY2FsIHN1YnByb2dyYW0gRmluZF9JbnRlcmZhY2VfSW5fCglEZXNjZW5kYW50IHRvIEZpbmRfQW5jZXN0b3JfSW50ZXJmYWNlIHRvIGxlYXZlIHRoZSBjb2RlIG1vcmUgY2xlYXIuCglSZW1vdmUgd3JvbmcgY29kZSB0aGF0IGF2b2lkcyB0aGUgZ2VuZXJhdGlvbiBvZiBhbiBlcnJvciBtZXNzYWdlCgl3aGVuIHRoZSBpbW1lZGlhdGUgYW5jZXN0b3Igb2YgdGhlIHBhcnRpYWwgdmlldyBpcyBhbiBpbnRlcmZhY2UuCglJbiBhZGRpdGlvbiBzb21lIG1pbm9yIHJlb3JnYW5pemF0aW9uIG9mIHRoZSBjb2RlIGhhcyBiZWVuIGRvbmUgdG8KCWxlYXZlIGl0IG1vcmUgY2xlYXIuCgkoQW5hbHl6ZV9UeXBlX0RlY2xhcmF0aW9uKTogSWYgdHlwZSBoYXMgcHJldmlvdXMgaW5jb21wbGV0ZSB0YWdnZWQKCXBhcnRpYWwgdmlldywgaW5oZXJpdCBwcm9wZXJseSBpdHMgcHJpbWl0aXZlIG9wZXJhdGlvbnMuCgkoQ29sbGVjdF9JbnRlcmZhY2VzKTogTWFrZSBwdWJsaWMsIGZvciBhbmFseXNpcyBvZiBmb3JtYWwKCWludGVyZmFjZXMuCgkoQW5hbHl6ZV9JbnRlcmZhY2VfRGVjbGFyYXRpb24pOiBOZXcgcHJvY2VkdXJlIGZvciB1c2UgZm9yIHJlZ3VsYXIgYW5kCglmb3JtYWwgaW50ZXJmYWNlIGRlY2xhcmF0aW9ucy4KCShCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogQWRkIHN1cHBvcnQgZm9yIHByaXZhdGUgdHlwZXMgdG8gdGhlIGNvZGUKCXRoYXQgY2hlY2tzIGlmIGEgdGFnZ2VkIHR5cGUgaW1wbGVtZW50cyBhYnN0cmFjdCBpbnRlcmZhY2VzLgoJKENoZWNrX0FsaWFzZWRfQ29tcG9uZW50X1R5cGUpOiBUaGUgdGVzdCBhcHBsaWVzIGluIHRoZSBzcGVjIG9mIGFuCglpbnN0YW5jZSBhcyB3ZWxsLgoJKEFjY2Vzc19UeXBlX0RlY2xhcmF0aW9uKTogQ2xlYW4gdXAgZGVjbGFyYXRpb24gb2YgbWFsZm9ybWVkIHR5cGUKCWRlY2xhcmVkIGFzIGFuIGFjY2VzcyB0byBpdHMgb3duIGNsYXNzd2lkZSB0eXBlLCB0byBwcmV2ZW50IGNhc2NhZGVkCgljcmFzaC4KCShDb2xsZWN0X0ludGVyZmFjZXMpOiBGb3IgcHJpdmF0ZSBleHRlbnNpb25zIGFuZCBmb3IgZGVyaXZlZCB0YXNrIHR5cGVzCglhbmQgZGVyaXZlZCBwcm90ZWN0ZWQgdHlwZXMsIHRoZSBwYXJlbnQgbWF5IGJlIGFuIGludGVyZmFjZSB0aGF0IG11c3QKCWJlIGluY2x1ZGVkIGluIHRoZSBpbnRlcmZhY2UgbGlzdC4KCShBY2Nlc3NfRGVmaW5pdGlvbik6IElmIHRoZSBkZXNpZ25hdGVkIHR5cGUgaXMgYW4gaW50ZXJmYWNlIHRoYXQgbWF5Cgljb250YWluIHRhc2tzLCBjcmVhdGUgTWFzdGVyX0lkIGZvciBpdCBiZWZvcmUgYW5hbHl6aW5nIHRoZSBleHByZXNzaW9uCglvZiB0aGUgZGVjbGFyYXRpb24sIHdoaWNoIG1heSBiZSBhbiBhbGxvY2F0b3IuCgkoUmVjb3JkX1R5cGVfRGVjbGFyYXRpb24pOiBTZXQgcHJvcGVybHkgdGhlIGludGVyZmFjZSBraW5kLCBmb3IgdXNlCglpbiBhbGxvY2F0b3JzLCB0aGUgY3JlYXRpb24gb2YgbWFzdGVyIGlkJ3MgZm9yIHRhc2sgaW50ZXJmYWNlcywgZXRjLgoKMjAwNS0xMS0xNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDYuYWRiIChDaGVja19Db25mb3JtYW5jZSk6IFRoZSBudWxsLWV4Y2x1c2lvbiBmZWF0dXJlIGNhbiBiZQoJb21pdHRlZCBpbiBjYXNlIG9mIHN0cmVhbSBhdHRyaWJ1dGUgc3VicHJvZ3JhbXMuCgkoQ2hlY2tfSW5saW5lX1ByYWdtYSk6IEhhbmRsZSBJbmxpbmUgYW5kIElubGluZV9BbHdheXMgcHJhZ21hcyB0aGF0CglhcHBlYXIgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBzdWJwcm9ncmFtIGJvZHksIHdoZW4gdGhlcmUgaXMgbm8gcHJldmlvdXMKCXN1YnByb2dyYW0gZGVjbGFyYXRpb24uCglDaGFuZ2UgbmFtZSBJc19QYWNrYWdlIHRvIElzX1BhY2thZ2VfT3JfR2VuZXJpY19QYWNrYWdlCgkoUHJvY2Vzc19Gb3JtYWxzKTogQSBub24gbnVsbCBxdWFsaWZpZXIgb24gYSBub24gbnVsbCBuYW1lZCBhY2Nlc3MKCXR5cGUgaXMgbm90IGFuIGVycm9yLCBhbmQgaXMgYSB3YXJuaW5nIG9ubHkgaWYgUmVkdW5kYW50X0NvbnN0cnVjdHMKCWFyZSBmbGFnZ2VkLgoKMjAwNS0xMS0xNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDcuYWRiIChJbnN0YWxsX1BhcmVudF9Qcml2YXRlX0RlY2xhcmF0aW9ucyk6IE5ldyBwcm9jZWR1cmUKCW5lc3RlZCB3aXRoaW4gQW5hbHl6ZV9QYWNrYWdlX1NwZWNpZmljYXRpb24gdG8gaW5zdGFsbCB0aGUgcHJpdmF0ZQoJZGVjbGFyYXRpb25zIGFuZCB1c2UgY2xhdXNlcyB3aXRoaW4gZWFjaCBvZiB0aGUgcGFyZW50IHVuaXRzIG9mIGEKCXBhY2thZ2UgaW5zdGFuY2Ugb2YgYSBnZW5lcmljIGNoaWxkIHBhY2thZ2UuCgkoQW5hbHl6ZV9QYWNrYWdlX1NwZWNpZmljYXRpb24pOiBXaGVuIGVudGVyaW5nIGEgcHJpdmF0ZSBwYXJ0IG9mIGEKCXBhY2thZ2UgYXNzb2NpYXRlZCB3aXRoIGEgZ2VuZXJpYyBpbnN0YW5jZSBvciBmb3JtYWwgcGFja2FnZSwgdGhlCglwcml2YXRlIGRlY2xhcmF0aW9ucyBvZiB0aGUgcGFyZW50IG11c3QgYmUgaW5zdGFsbGVkIChieSBjYWxsaW5nIG5ldwoJcHJvY2VkdXJlIEluc3RhbGxfUGFyZW50X1ByaXZhdGVfRGVjbGFyYXRpb25zKS4KCUNoYW5nZSBuYW1lIElzX1BhY2thZ2UgdG8gSXNfUGFja2FnZV9Pcl9HZW5lcmljX1BhY2thZ2UKCShQcmVzZXJ2ZV9GdWxsX0F0dHJpYnV0ZXMpOiBGb3IgYSBzeW5jaHJvbml6ZWQgdHlwZSwgdGhlIGNvcnJlc3BvbmRpbmcKCXJlY29yZCBpcyBhYnNlbnQgaW4gYSBnZW5lcmljIGNvbnRleHQsIHdoaWNoIGRvZXMgbm90IGluZGljYXRlIGEKCWNvbXBpbGVyIGVycm9yLgoKMjAwNS0xMS0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoOC5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9SZW5hbWluZyk6IEluIGEgZ2VuZXJpYyBjb250ZXh0LCBkbwoJbm90IHRyeSB0byByZXdyaXRlIGEgcmVuYW1lZCBzdHJlYW0gYXR0cmlidXRlLCBiZWNhdXNlIHRoZSBvcGVyYXRpb25zCglvbiB0aGUgdHlwZSBtYXkgbm90IGhhdmUgYmVlbiBnZW5lcmF0ZWQuCglIYW5kbGUgcHJvcGVybHkgYSByZW5hbWluZ19hc19ib2R5IGdlbmVyYXRlZCBmb3IgYSBzdHJlYW0gb3BlcmF0aW9uCgl3aG9zZSBkZWZhdWx0IGlzIGFic3RyYWN0IGJlY2F1c2UgdGhlIG9iamVjdCB0eXBlIGl0c2VsZiBpcyBhYnN0cmFjdC4KCShGaW5kX1R5cGUpOiBJZiB0aGUgdHlwZSBpcyBpbmNvbXBsZXRlIGFuZCBhcHBlYXJzIGFzIHRoZSBwcmVmaXggb2YgYQoJJ0NsYXNzIHJlZmVyZW5jZSwgaXQgaXMgdGFnZ2VkLCBhbmQgaXRzIGxpc3Qgb2YgcHJpbWl0aXZlIG9wZXJhdGlvbnMKCW11c3QgYmUgaW5pdGlhbGl6ZWQgcHJvcGVybHkuCgkoQ2hhaW5fVXNlX0NsYXVzZXMpOiBXaGVuIGNoYWluaW5nIHRoZSB1c2UgY2xhdXNlcyB0aGF0IGFwcGVhciBpbiB0aGUKCXByaXZhdGUgZGVjbGFyYXRpb24gb2YgYSBwYXJlbnQgdW5pdCwgcHJpb3IgdG8gY29tcGlsaW5nIHRoZSBwcml2YXRlCglwYXJ0IG9mIGEgY2hpbGQgdW5pdCwgZmluZCBvbiB0aGUgc2NvcGUgc3RhY2sgdGhlIHByb3BlciBwYXJlbnQgZW50aXR5CglvbiB3aGljaCB0byBsaW5rIHRoZSB1c2UgY2xhdXNlLgoJKE5vdGVfUmVkdW5kYW50X1VzZSk6IEVtaXQgYSB3YXJuaW5nIHdoZW4gYSByZWR1bmRhbnQgdXNlIGNsYXVzZSBpcwoJZGV0ZWN0ZWQuCgkoQW5hbHl6ZV9PYmplY3RfUmVuYW1pbmcpOiBBbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIG5vdCBhIGxlZ2FsIG9iamVjdAoJaWYgaXQgaXMgbm90IGEgZnVuY3Rpb24gY2FsbC4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9ldmFsLmFkYjogSW1wbGVtZW50IGQuZiBmbGFnCgkoU3VidHlwZV9TdGF0aWNhbGx5X01hdGNoKTogQSBnZW5lcmljIGFjdHVhbCB0eXBlIGhhcyB1bmtub3duCglkaXNjcmltaW5hbnRzIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgYWN0dWFsIGhhcyBhIHNpbWlsYXIgcGFydGlhbCB2aWV3LgoJSWYgdGhlIHJvdXRpbmUgaXMgY2FsbGVkIHRvIHZhbGlkYXRlIHRoZSBzaWduYXR1cmUgb2YgYW4gaW5oZXJpdGVkCglvcGVyYXRpb24gaW4gYSBjaGlsZCBpbnN0YW5jZSwgdGhlIGdlbmVyaWMgYWN0dWFsIG1hdGNoZXMgdGhlIGZ1bGwgdmlldywKCjIwMDUtMTEtMTQgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9DYWxsKTogUHJvdmlkZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIHdoZW5ldmVyCglhIHByb2NlZHVyZSBjYWxsIGlzIHVzZWQgYXMgYSBzZWxlY3Qgc3RhdGVtZW50IHRyaWdnZXIgYW5kIGlzIG5vdCBhbgoJZW50cnkgcmVuYW1pbmcgb3IgYSBwcmltaXRpdmUgb2YgYSBsaW1pdGVkIGludGVyZmFjZS4KCShWYWxpZF9Db252ZXJzaW9uKTogSWYgdGhlIG9wZXJhbmQgaGFzIGEgc2luZ2xlIGludGVycHJldGF0aW9uIGRvIG5vdAoJcmVtb3ZlIGFkZHJlc3Mgb3BlcmF0aW9ucy4KCShDaGVja19JbmZpbml0ZV9SZWN1cnNpb24pOiBTa2lwIGZyZWV6ZSBub2RlcyB3aGVuIGxvb2tpbmcgZm9yIGEgcmFpc2UKCXN0YXRlbWVudCB0byBpbmhpYml0IHdhcm5pbmcuCgkoUmVzb2x2ZV9VbmFyeV9PcCk6IERvIG5vdCBwcm9kdWNlIGEgd2FybmluZyB3aGVuCglwcm9jZXNzaW5nIGFuIGV4cHJlc3Npb24gb2YgdGhlIGZvcm0gLShBIG1vZCBCKQoJVXNlIFVuaXZlcnNhbF9SZWFsIGluc3RlYWQgb2YgTG9uZ19Mb25nX0Zsb2F0IHdoZW4gd2UgbmVlZCBhIGhpZ2gKCXByZWNpc2lvbiBmbG9hdCB0eXBlIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGUgKHByZXZlbnRzIGdyYXR1aXRvdXMKCVZheF9GbG9hdCBzdHVmZiB3aGVuIHByYWdtYSBGbG9hdF9SZXByZXNlbnRhdGlvbiAoVmF4X0Zsb2F0KSB1c2VkKQoJKFJlc29sdmVfQ29uY2F0ZW5hdGlvbl9BcmcpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiBhcmd1bWVudCBpcyBhbgoJYW1iaWd1b3VzIGNhbGwgdG8gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYXJyYXkuCgkoTWFrZV9DYWxsX0ludG9fT3BlcmF0b3IsIE9wZXJhbmRfVHlwZV9Jbl9TY29wZSk6IERvIG5vdCBjaGVjayB0aGF0Cgl0aGVyZSBpcyBhbiBpbXBsaWNpdCBvcGVyYXRvciBpbiB0aGUgZ2l2ZW4gc2NvcGUgaWYgd2UgYXJlIHdpdGhpbiBhbgoJaW5zdGFuY2U6IGxlZ2FsaXR5IGNoZWNrIGhhcyBiZWVuIHBlcmZvcm1lZCBvbiB0aGUgZ2VuZXJpYy4KCShSZXNvbHZlX1VuYXJ5X09wKTogQXBwbHkgd2FybmluZ3MgY2hlY2tzIG9uIGFyZ3VtZW50IG9mIEFicyBvcGVyYXRvcgoJYWZ0ZXIgcmVzb2x2aW5nIG9wZXJhbmQsIHRvIGF2b2lkIGZhbHNlIHdhcm5pbmdzIG9uIG92ZXJsb2FkZWQgY2FsbHMuCgoyMDA1LTExLTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xNTYwNAoJKiBzZW1fdHlwZS5hZGIgKENvdmVycyk6IEluIGFuIGlubGluZWQgYm9keSwgYSBjb21wb3NpdGUgdHlwZSBtYXRjaGVzCglhIHByaXZhdGUgdHlwZSB3aG9zZSBmdWxsIHZpZXcgaXMgYSBjb21wb3NpdGUgdHlwZS4KCShJbnRlcmZhY2VfUHJlc2VudF9Jbl9BbmNlc3Rvcik6IFByb3RlY3QgdGhlIGZyb250ZW5kIGFnYWluc3QKCXByZXZpb3VzbHkgZGV0ZWN0ZWQgZXJyb3JzIHRvIGVuc3VyZSB0aGF0IGl0cyBjb21waWxhdGlvbgoJd2l0aCBhc3NlcnRpb25zIGVuYWJsZWQgZ2l2ZXMgdGhlIHNhbWUgb3V0cHV0IHRoYXQgaXRzCgljb21waWxhdGlvbiB3aXRob3V0IGFzc2VydGlvbnMuCgkoSW50ZXJmYWNlX1ByZXNlbnRfSW5fQW5jZXN0b3IpOiBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSB0eXBlcy4KCUNoYW5nZSBuYW1lIEluX0FjdHVhbCB0byBJbl9HZW5lcmljX0FjdHVhbCAoY2xlYW4gdXApCgkoRGlzYW1iaWd1YXRlKTogTmV3IHByZWRpY2F0ZSBJbl9BY3R1YWwsIHRvIHJlY29nbml6ZSBleHByZXNzaW9ucyB0aGF0CglhcHBlYXIgaW4gdGhlIHJlbmFtaW5nIGRlY2xhcmF0aW9uIGdlbmVyYXRlZCBmb3IgZ2VuZXJpYyBhY3R1YWxzLCBhbmQKCXdoaWNoIG11c3QgYmUgcmVzb2x2ZWQgaW4gdGhlIG91dGVyIGNvbnRleHQuCgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX3V0aWwuYWRzLCBzZW1fdXRpbC5hZGI6IENoYW5nZSBuYW1lIElzX1BhY2thZ2UgdG8KCUlzX1BhY2thZ2VfT3JfR2VuZXJpY19QYWNrYWdlLgoJKENoZWNrX09ic29sZXNjZW50KTogTmV3IHByb2NlZHVyZS4KCShTZXRfSXNfUHVibGljKTogUmVtb3ZlIG9ic29sZXRlIGp1bmsgdGVzdC4KCShTZXRfUHVibGljX1N0YXR1cyk6IERvIG5vdCBzZXQgSXNfUHVibGljIG9uIGFuIG9iamVjdCB3aG9zZSBkZWNsYXJhdGlvbgoJb2NjdXJzIHdpdGhpbiBhIGhhbmRsZWRfc2VxdWVuY2Vfb2Zfc3RhdGVtZXRzLgoJKElzX0NvbnRyb2xsaW5nX0xpbWl0ZWRfUHJvY2VkdXJlKTogRmFjdG9yIHNvbWUgb2YgdGhlIGxvZ2ljLCBhY2NvdW50Cglmb3IgYSBwYXJhbWV0ZXJsZXNzIHByb2NlZHVyZS4KCShFbnRlcl9OYW1lKTogUmVjb2duaXplIHJlbmFtaW5nIGRlY2xhcmF0aW9ucyBjcmVhdGVkIGZvciBwcml2YXRlCgljb21wb25lbnQgb2YgYSBwcm90ZWN0ZWQgdHlwZSB3aXRoaW4gcHJvdGVjdGVkIG9wZXJhdGlvbnMsIHNvIHRoYXQKCXRoZSBzb3VyY2UgbmFtZSBvZiB0aGUgY29tcG9uZW50IGNhbiBiZSB1c2VkIGluIHRoZSBkZWJ1Z2dlci4KCjIwMDUtMTEtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV93YXJuLmFkcywgc2VtX3dhcm4uYWRiIChQdWJsaWNseV9SZWZlcmVuY2VhYmxlKTogR2VuZXJpYyBmb3JtYWxzCglvZiBhIGdlbmVyaWMgc3VicHJvZ3JhbSBhcmUgbm90IHZpc2libGUgb3V0c2lkZSB0aGUgYm9keS4KCShTZXRfV2FybmluZ19Td2l0Y2gpOiBOZXcgcHJvY2VkdXJlIChjb2RlIHRvIHNldCB3YXJuaW5nIG1vZGUgbW92ZWQKCWhlcmUgZnJvbSBTd2l0Y2guQyBzbyB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgYnkgcHJhZ21hIHByb2Nlc3NpbmcuCgkoQ2hlY2tfUmVmZXJlbmNlcyk6IFNwZWNpYWwgY2FzZSB3YXJuaW5nIGZvciBub24tbW9kaWZpZWQgbm9uLWltcG9ydGVkCgl2b2xhdGlsZSBvYmplY3RzLgoJKiBwYXItcHJhZy5hZGI6IE1vZGlmeSBwcm9jZXNzaW5nIG9mIHByYWdtYSBXYXJuaW5ncyB0byBhY2NvbW9kYXRlIG5ldwoJZm9ybSB3aXRoIGEgc3RyaW5nIGxpdGVyYWwgYXJndW1lbnQKCjIwMDUtMTEtMTQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHMtZmlucm9vLmFkcywgcy1maW5yb28uYWRiIChSZWFkKTogQWRkaXRpb24gb2YgIm5vdCBudWxsIiB0byB0aGUKCWFub255bW91cyBhY2Nlc3MuCgkoV3JpdGUpOiBBZGRpdGlvbiBvZiAibm90IG51bGwiIHRvIHRoZSBhbm9ueW1vdXMgYWNjZXNzLgoJKFJlYWQpOiBBZGRpdGlvbiBvZiAibm90IG51bGwiIHRvIHRoZSBhbm9ueW1vdXMgYWNjZXNzLgoJKFdyaXRlKTogQWRkaXRpb24gb2YgIm5vdCBudWxsIiB0byB0aGUgYW5vbnltb3VzIGFjY2Vzcy4KCgkqIHMtc3RyeGRyLmFkYiwgcy1zdHJhdHQuYWRzLCBzLXN0cmF0dC5hZGIgKElfQUQsIElfQVMsIElfQiwgSV9DLCBJX0YsCglJX0ksIElfTEYsIElfTEksIElfTExGLCBJX0xMSSwgSV9MTFUsIElfTFUsIElfU0YsIElfU0ksIElfU1NJLCBJX1NTVSwKCUlfU1UsIElfVSwgSV9XQyk6IEFkZGl0aW9uIG9mICJub3QgbnVsbCIgdG8gdGhlIGFub255bW91cyBhY2Nlc3MuCgkoV19BRCwgV19BUywgV19CLCBXX0MsIFdfRiwgV19JLCBXX0xGLCBXX0xJLCBXX0xMRiwgV19MTEksIFdfTExVLAoJV19MVSwgV19TRiwgV19TSSwgV19TU0ksIFdfU1NVLCBXX1NVLCBXX1UsIFdfV0MpOiBBZGRpdGlvbiBvZgoJIm5vdCBudWxsIiB0byB0aGUgYW5vbnltb3VzIGFjY2Vzcy4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcy1zdG9lbGUuYWRiOiBGaXggY29kZSBmb3IgQWRkcmVzcyBtb2QgU3RvcmFnZV9PZmZzZXQgZm9yIG5lZ2F0aXZlCglvZmZzZXQgdmFsdWVzCgoyMDA1LTExLTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHN3aXRjaC5hZGIgKEJhZF9Td2l0Y2gpOiBOZXcgcHJvY2VkdXJlCgkoU2Nhbl9OYXQsIFNjYW5fUG9zKTogRGlyZWN0bHkgY2FsbCBPc2ludC5GYWlsIHdpdGggdGhlIGFwcHJvcHJpYXRlCgltZXNzYWdlIHdoZW4gaW4gZXJyb3IuCgoJKiBzd2l0Y2guYWRzIChCYWRfU3dpdGNoLCBCYWRfU3dpdGNoX1ZhbHVlLCBNaXNzaW5nX1N3aXRjaF9WYWx1ZSwKCVRvb19NYW55X091dHB1dF9GaWxlcyk6IFJlbW92ZSBkZWNsYXJhdGlvbnMsIG5vIGxvbmdlciB1c2VkLgoJKFNjYW5fTmF0KTogTmV3IHBhcmFtZXRlciBTd2l0Y2gKCShTY2FuX1Bvcyk6IERpdHRvCgkoQmFkX1N3aXRjaCk6IE5ldyBwcm9jZWR1cmUKCgkqIHN3aXRjaC1iLmFkYiAoU2Nhbl9CaW5kZXJfU3dpdGNoZXMpOiBSZXBsYWNlICJyYWlzZSBCYWRfU3dpdGNoOyIKCXdpdGggY2FsbCB0byBuZXcgcHJvY2VkdXJlIEJhZF9Td2l0Y2guIENhbGwgU2Nhbl9Qb3MgYW5kIFNjYW5fTmF0d2l0aAoJbmV3IHBhcmFtZXRlciBTd2l0Y2guIFJlcGxhY2UgInJhaXNlIFRvb19NYW55X091dHB1dF9GaWxlczsiIHdpdGggY2FsbAoJdG8gT3NpbnQuRmFpbC4gRG8gbm90IGhhbmRsZSBhbnkgZXhjZXB0aW9uLgoKMjAwNS0xMS0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiB0ZW1wZGlyLmFkYiAoVGVtcGRpcik6IERvIG5vdCB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGUgVE1QRElSIGlmIGl0CglkZXNpZ25hdGVzIGEgbm9uIGV4aXN0ZW50IGRpcmVjdG9yeS4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogeGduYXR1Z24uYWRiOiBSZXBsYWNlIGludmFsaWQgbWVtYmVyc2hpcCB0ZXN0IGJ5ICdWYWxpZAoKMjAwNS0xMS0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtYWtlZ3ByLmFkYiAoR3BybWFrZSk6IERvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIHRoZSBnbG9iYWwgYXJjaGl2ZSBpZgoJdGhlcmUgaXMgbm8gb2JqZWN0IGRpcmVjdG9yeS4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogdXNhZ2UuYWRiOiBNaW5vciBhZGp1c3RtZW50IHRvIG91dHB1dCBmb3JtYXQsIHVzZSBubiBpbnN0ZWFkIG9mIG5ubgoJKHNvIHRoYXQgLWduYXRlSW5ubiBkb2VzIG5vdCBydW4gaW50byBuZXh0IGNvbHVtbikKCjIwMDUtMTEtMTQgIEVkIEZhbGlzICA8ZmFsaXNAYWRhY29yZS5jb20+CgoJKiBzLWJpdG9wcy5hZGIgKEJpdHNfQXJyYXkpOiBjb3JyZWN0ZWQgY29tbWVudDogInVuY29uc3RyYWluZWQiID0+CgkiY29uc3RyYWluZWQiCgoyMDA1LTExLTE0ICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgoJKiBzLWNoZXBvby5hZHM6IEFkZCBjb21tZW50cyBvbiBEZXJlZmVyZW5jZS4KCVJlbW92ZSB1bm5lY2Vzc2FyeSBpbmhlcml0ZWQgYWJzdHJhY3QgcHJpbWl0aXZlcy4KCUNvc21ldGljIGNsZWFudXAuCgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jYXQuYWRzIChWYWxpZGF0ZV9BY2Nlc3NfVHlwZV9EZWNsYXJhdGlvbik6IFJlbW92ZSBkZWNsYXJhdGlvbgoJbm9kZSBwYXJhbWV0ZXIsIG5vdCBuZWVkZWQsIHNpbmNlIGl0IGlzIGF2YWlsYWJsZSBhcyBEZWNsYXJhdGlvbl9Ob2RlLgoKMjAwNS0xMS0xNCAgR2VlcnQgQm9zY2ggIDxib3NjaEBhZGFjb3JlLmNvbT4KCgkqIHMtZXhubGxmLmFkYiAoRXhuX0xMRik6IEZpeCBjb21tZW50IHRvIGJlIG1vcmUgcHJlY2lzZSBhbmQKCWdyYW1tYXRpY2FsbHkgY29ycmVjdC4KCjIwMDUtMTEtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcy1maWxlaW8uYWRzOiBDb3JyZWN0IHNwZWxsaW5nIGVycm9yIGluIGNvbW1lbnQKCjIwMDUtMTEtMTQgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBCZW4gQnJvc2dvbCAgPGJyb3Nnb2xAYWRhY29yZS5jb20+CgkgICAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCSAgICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiAKCURvY3VtZW50IHRoYXQgLWZzdGFjay1jaGVjayBpcyBuZWVkZWQgZm9yIHN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlCglBZGEgOTUgUmVmZXJlbmNlIE1hbnVhbC4KCUNvcnJlY3QgcmVmZXJlbmNlIHRvIFZBWCBzeXN0ZW1zIHRvIG1lZXQgSFAgZ3VpZGVsaW5lcwoJQWRkIGRvY3VtZW50YXRpb24gZm9yIG5ldyBnbmF0bWFrZSBzd2l0Y2hlcyAtdmwsIC12bSBhbmQgLXZoCglSZXBsYWNlIERFQyBBZGEgYnkgSFAgQWRhCglSZXBsYWNlIERJR0lUQUwgYnkgSFAKCVJlbW92ZSBlbXB0eSBzZWN0aW9uIG9uIHRvb2xzIGluIGNvbXBhdGliaWxpdHkgc2VjdGlvbgoJQ2xhcmlmeSB0aGUgV2luZG93cyBjb252ZW50aW9uIHNlbWFudGljcy4KCURvY3VtZW50IHRoZSBXaW4zMiBjYWxsaW5nIGNvbnZlbnRpb24uCglUaGUgU3RkY2FsbCwgV2luMzIgYW5kIERMTCBjb252ZW50aW9uIGFyZSBzeW5vbnltcy4KCUFkZCBhIG5vdGUgaW4gLWduYXRSIGRlc2NyaXB0aW9uIGFib3V0IHplcm8gc2l6ZSByZWNvcmQgY29tcG9uZW50cwoJTm90ZSBvbiBuZXcgPj0gYW5kIDw9IHdhcm5pbmdzIGZvciAtZ25hdHdjCglEb2N1bWVudCB0aGF0IGVxdWFsIHNpZ24gYWZ0ZXIgLWduYXRtIGlzIG9wdGlvbmFsLgoJTm90ZSB0aGF0IHN0cmlwIGlzIHdvcmtpbmcgZmluZSBvbiBETEwgYnVpbHQgd2l0aCBhIExpYnJhcnkKCVByb2plY3QuIFRoZSByZXN0cmljdGlvbiBhcHBseSBvbmx5IHRvIERMTCBidWlsdCB3aXRoIGduYXRkbGwuCglVcGRhdGUgc2VjdGlvbiBhYm91dCB0aGUgd2F5IHRvIGRlYnVnIGEgRExMLgoJVXBkYXRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBETEwgY29udmVudGlvbi4KCURvY3VtZW50IC1DIHN3aXRjaCBmb3IgZ25hdHByZXAKCURvY3VtZW50IG5ldyBhdHRyaWJ1dGUgTGlicmFyeV9BTElfRGlyCglVcGRhdGUgZWxhYm9yYXRpb24gZG9jIHRvIGluY2x1ZGUgaW1wbGljaXQgRWxhYm9yYXRlIHByYWdtYXMgbm93CglnZW5lcmF0ZWQgZm9yIHN1YnByb2dyYW0gaW5zdGFudGlhdGlvbnMuCglEb2N1bWVudCBsaW1pdGF0aW9uIG9uIGV4ZWN1dGFibGUgbmFtZXMgdGhhdCBpbmNsdWRlIHNwYWNlcyBmb3IgLS1HQ0MsCgktLUdOQVRCSU5ELCBhbmQgLS1HTkFUTElOSyBzd2l0Y2hlcy4KCURvY3VtZW50IHRoYXQgLXcgY2F1c2VzIC1nbmF0d3MgdG8gYmUgYWRkZWQgYXQgc3RhcnQgb2YgZ2NjIHN3aXRjaGVzCgoJKiBnbmF0X3JtLnRleGk6IERvY3VtZW50IHRoYXQgLW1pZWVlIGlzIG5lZWRlZCBmb3IgZ2VuZXJhdGluZyBpbmZpbml0ZQoJYW5kIE5hTiB2YWx1ZXMgaW4gY2FzZSBvZiBvdmVyZmxvdyBvbiBtYWNoaW5lcyB0aGF0IGFyZSBub3QgZnVsbHkKCWNvbXBsaWFudCB3aXRoIHRoZSBJRUVFIGZsb2F0aW5nLXBvaW50IHN0YW5kYXJkLgoJQ3JlYXRlIGEgc2VjdGlvbiBkZXNjcmliaW5nIHRoZSBzZXQgb2YgY29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yCglzdHJpY3QgY29tcGxpYW5jZSB3aXRoIHRoZSBBZGEgOTUgUmVmZXJlbmNlIE1hbnVhbC4KCUFkZCBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgT2Jzb2xlc2NlbnQgYXBwbGllZCB0byBhIHBhY2thZ2UKCUNsYXJpZnkgcG90ZW50aWFsIGlzc3VlcyBvZiBtaXhlZCBsYW5ndWFnZSBwcm9ncmFtcyByZWxhdGVkIHRvIHRoZQoJSS9PIGJ1ZmZlcmluZyBlbmFibGluZyBpbiB0aGUgZWxhYm9yYXRpb24gb2YgdGhlIEdOQVQgcnVudGltZS4KCUFkZCBleHRyYSBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgUmVzdHJpY3Rpb25zIChOb19FbGFib3JhdGlvbl9Db2RlKQoJVGhpcyBkb2N1bWVudGF0aW9uIG9ubHkgcGF0Y2ggYWRkcyBleHRyYSBkb2N1bWVudHNpb24gZm9yIHByYWdtYQoJUmVzdHJpY3Rpb25zIChOb19FbGFib3JhdGlvbl9Db2RlKSwgZXhwbGFpbmluZyB3aHkgaXQgaXMgbm90IHBvc3NpYmxlCgl0byBkb2N1bWVudCB0aGlzIHJlc3RyaWN0aW9uIGluIHRlcm1zIG9mIGFsbG93ZWQgc291cmNlIGNvbnN0cnVjdHMuCglEb2N1bWVudCBzdHJpbmcgbGl0ZXJhbCBmb3JtIG9mIHByYWdtYSBXYXJuaW5ncwoJRG9jdW1lbnQgbmV3IGF0dHJpYnV0ZSBMaWJyYXJ5X0FMSV9EaXIKCUFkZCBkb2N1bWVudGF0aW9uIG9uIHN0YWJsZSBhdHRyaWJ1dGVzIGluIHByb2plY3QgZmlsZXMgdGhhdCB3YXMgbWlzc2luZwoKCSogZ25hdC1zdHlsZS50ZXhpOiBJbmRpY2F0ZSB0aGF0IHBhcmFncmFwaHMgd2l0aGluIGEgc2luZ2xlIGNvbW1lbnQKCXNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgZW1wdHkgY29tbWVudCBsaW5lcwoKCSogdWdfd29yZHM6IEFkZGVkIHJlcGxhY2VtZW50cyBmb3IgLWduYXQ5NSBhbmQgLWduYXQwNSAoLzk1IGFuZAoJLzA1IHJlc3BlY3RpdmVseSkKCgkqIGJpbmR1c2cuYWRiOiBNaW5vciBjbGVhbnVwLCBwdXQgLW0gYmVmb3JlIC1NIGZvciBjb25zaXN0ZW5jeQoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLXNlY2Fpbi5hZGIsIGEtc2xjYWluLmFkYiwgYS1zaGNhaW4uYWRiLCBhLWNodGdrZS5hZHMsIGEtY2h0Z2tlLmFkYiwKCWEtc3R3aWhhLmFkYiwgYS1zdHJoYXMuYWRiLCBhLWNoemxhMS5hZHMsIGEtY2h6bGE5LmFkcywgYS1zdHpib3UuYWRiLAoJYS1zdHpib3UuYWRzLCBhLXN0emZpeC5hZGIsIGEtc3R6aGFzLmFkYiwgYS1zdHptYXAuYWRiLCBhLXN0em1hcC5hZHMsCglhLXN0enNlYS5hZGIsIGEtc3R6c2VhLmFkcywgYS1zdHpzdXAuYWRiLCBhLXN0enN1cC5hZHMsIGEtc3R6dW5iLmFkYiwKCWEtc3R6dW5iLmFkcywgYS1zenV6aGEuYWRiLCBhLXN6dXpoYS5hZHMsIGEtc3p1enRpLmFkYiwgYS1zenV6dGkuYWRzLAoJYS16dGNvYXUuYWRiLCBhLXp0Y29hdS5hZHMsIGEtenRjb2lvLmFkYiwgYS16dGNzdHIuYWRiLCBhLXp0Y3N0ci5hZHMsCglhLXp0ZGVhdS5hZGIsIGEtenRkZWF1LmFkcywgYS16dGRlaW8uYWRiLCBhLXp0ZGVpby5hZHMsIGEtenRlZGl0LmFkYiwKCWEtenRlZGl0LmFkcywgYS16dGVuYXUuYWRzLCBhLXp0ZW5pby5hZGIsIGEtenRlbmlvLmFkcywgYS16dGV4aW8uYWRiLAoJYS16dGV4aW8uYWRzLCBhLXp0Zmlpby5hZGIsIGEtenRmaWlvLmFkcywgYS16dGZsYXUuYWRiLCBhLXp0ZmxhdS5hZHMsCglhLXp0Zmxpby5hZGIsIGEtenRmbGlvLmFkcywgYS16dGdlYXUuYWRiLCBhLXp0Z2VhdS5hZHMsIGEtenRpbmF1LmFkYiwKCWEtenRpbmF1LmFkcywgYS16dGluaW8uYWRiLCBhLXp0bW9hdS5hZHMsIGEtenRtb2lvLmFkYiwgYS16dG1vaW8uYWRzLAoJYS16dHRlc3QuYWRiLCBnLWVuYmxzcC12bXMtYWxwaGEuYWRiLCBnLWVuYmxzcC12bXMtYWxwaGEuYWRiLAoJZy1lbmJsc3Atdm1zLWlhNjQuYWRiLCBnLWVuYmxzcC12bXMtaWE2NC5hZGIsIHN5c3RlbS1saW51eC1ocHBhLmFkcywKCWEtY2hhY29uLmFkYiwgYS1jaGFjb24uYWRzLCBhLXdpY2h1bi5hZGIsIGEtd2ljaHVuLmFkcywgYS16Y2h1bmkuYWRiLAoJYS16Y2h1bmkuYWRzLCBnLXRyYXN5bS12bXMtYWxwaGEuYWRiLCBnLXRyYXN5bS12bXMtaWE2NC5hZGIsCglzeXN0ZW0taHB1eC1pYTY0LmFkcywgZy1zb2Njb24tdW5peHdhcmUuYWRzLCBnLXNvbGlvcC11bml4d2FyZS5hZHMsCglnLXNvY2Nvbi1pbnRlcml4LmFkcywgZy1zb2xpb3Atc29sYXJpcy5hZHMsIGctZWFjb2R1LXZtcy5hZGIsCglnLWV4cGVjdC12bXMuYWRiLCBnLXNvY3RoaS12bXMuYWRiLCBnLXNvbGlvcC1taW5ndy5hZHMsCglhLWludG5hbS11bml4d2FyZS5hZHMsIGEtaW50bmFtLWx5bnhvcy5hZHMsIGEtaW50bmFtLXRydTY0LmFkcywKCWEtaW50bmFtLWFpeC5hZHMsIGEtaW50bmFtLWxpbnV4LmFkcywgYS1pbnRuYW0tbGludXguYWRzLAoJYS1pbnRuYW0tZHVtbXkuYWRzLCBhLW51bWF1eC1saWJjLXg4Ni5hZHMsIGEtaW50bmFtLWludGVyaXguYWRzLAoJYS1pbnRuYW0tc29sYXJpcy5hZHMsIGEtY2FsZW5kLXZtcy5hZGIsIGEtY2FsZW5kLXZtcy5hZHMsCglhLWludG5hbS12bXMuYWRzLCBhLWNhbGVuZC1taW5ndy5hZGIsIGEtaW50bmFtLW1pbmd3LmFkcywKCWEtaW50bmFtLXZ4d29ya3MuYWRzLCBhLW51bWF1eC12eHdvcmtzLmFkcywgc3lzdGVtLXVuaXh3YXJlLmFkcywKCXN5c3RlbS1saW51eC1pYTY0LmFkcywgYS1pbnRuYW0tZnJlZWJzZC5hZHMsIHN5c3RlbS1mcmVlYnNkLXg4Ni5hZHMsCglzeXN0ZW0tbHlueG9zLXBwYy5hZHMsIHN5c3RlbS1saW51eC14ODZfNjQuYWRzLCBhLXN0dW5oYS5hZGIsCglhLWNnYWFzby5hZHMsIGEtY2dhYXNvLmFkYiwgYS1jaHRnb3AuYWRiLCBhLWNnY2Fzby5hZGIsIGEtY2dhcnNvLmFkYiwKCWEtY29oYXRhLmFkcywgYS1jcmJ0Z2suYWRiLCBhLWNyYmx0ci5hZHMsIGEtY29wcm51LmFkYiwgYS1yYnRnc28uYWRiLAoJYS1pbnRuYW0tZGFyd2luLmFkcywgc3lzdGVtLWRhcndpbi1wcGMuYWRzLCBncHJtYWtlLmFkYiwgbWFrZWdwci5hZHMsCglzeXN0ZW0tdHJ1NjQuYWRzLCBzeXN0ZW0tYWl4LmFkcywgc3lzdGVtLXNvbGFyaXMteDg2LmFkcywKCXN5c3RlbS1pcml4LW8zMi5hZHMsIHMtaW50ZXJyLXNpZ2FjdGlvbi5hZGIsIHN5c3RlbS1pcml4LW4zMi5hZHMsCglzLXBhcmFtZS1taW5ndy5hZGIsIHN5c3RlbS1ocHV4LmFkcywgcy10cmFjZWItaHB1eC5hZGIsCglzeXN0ZW0tbGludXgteDg2LmFkcywgcy1pbm1hb3AtZHVtbXkuYWRiLCBzeXN0ZW0tb3MyLmFkcywKCXN5c3RlbS1pbnRlcml4LmFkcywgc3lzdGVtLXNvbGFyaXMtc3BhcmMuYWRzLAoJc3lzdGVtLXNvbGFyaXMtc3BhcmN2OS5hZHMsIHMtaW5tYW9wLXZtcy5hZGIsCglzLW1hc3RvcC12bXMuYWRiLCBleHBhbmRlci5hZGIsIGV4cGFuZGVyLmFkcywgcy1nbG9sb2MtbWluZ3cuYWRiLAoJc3lzdGVtLW1pbmd3LmFkcywgc3lzdGVtLXZtcy16Y3guYWRzLCBzLW9zaW50ZS1mc3UuYWRiLAoJcy10cmFjZWItbWFzdG9wLmFkYiwgYS1leGV4dHIuYWRiLCBhLWV4c3RhdC5hZGIsIGEtZmlsaWNvLmFkcywKCWEtZmluYWxpLmFkcywgYS1pbnRlcnIuYWRzLCBhLWludHNpZy5hZGIsIGEtaW50c2lnLmFkcywKCWEtZXhjZXB0LmFkcywgYS1udW1hdXgteDg2LmFkcywgYS1hc3RhY28uYWRiLCBhLWNhbGVuZC5hZGIsCglhLWNhbGVuZC5hZHMsIGEtY2hhaGFuLmFkYiwgYS1jaGFoYW4uYWRzLCBhLWNobGF0OS5hZHMsCglhLWNvbGllbi5hZGIsIGEtY29saWVuLmFkcywgYS1jb2xpcmUuYWRiLCBhLWNvbGlyZS5hZHMsCglhLWNvbWxpbi5hZGIsIGEtY29tbGluLmFkcywgYS1jd2lsYTEuYWRzLCBhLWN3aWxhOS5hZHMsCglhLWVsY2hoYS5hZGIsIGEtZGVjaW1hLmFkYiwgYS1kZWNpbWEuYWRzLCBhLWRpb2NzdC5hZHMsCglhLWRpcmVpby5hZGIsIGEtZGlyZWlvLmFkcywgYS1leGNhY2guYWRiLCBhLWV4Y2FjaC5hZGIsCglhLWV4Y3RyYS5hZHMsIGFsaS11dGlsLmFkYiwgYS1uZ2NlZnUuYWRiLCBhLW5nY290eS5hZGIsCglhLW5nY290eS5hZHMsIGEtbnVkaXJhLmFkYiwgYS1udWRpcmEuYWRzLCBhLW51ZmxyYS5hZGIsCglhLW51bWF1eC5hZHMsIGEtcmVhdGltLmFkcywgYS1zZXF1aW8uYWRiLCBhLXNlcXVpby5hZHMsCglhLXNpb2NzdC5hZHMsIGEtc3NpY3N0LmFkcywgYS1zdG1hY28uYWRzLCBhLXN0b3Jpby5hZGIsCglhLXN0cmJvdS5hZGIsIGEtc3RyYm91LmFkcywgYS1zdHJlYW0uYWRzLCBhLXN0cmZpeC5hZGIsCglhLXN0cm1hcC5hZGIsIGEtc3RybWFwLmFkcywgYS1zdHJzZWEuYWRiLCBhLXN0cnNlYS5hZHMsCglhLXN0cnN1cC5hZGIsIGEtc3Ryc3VwLmFkcywgYS1zdHJ1bmIuYWRiLCBhLXN0cnVuYi5hZHMsCglhLXN0d2liby5hZGIsIGEtc3R3aWJvLmFkcywgYS1zdHdpZmkuYWRiLCBhLXN0d2ltYS5hZGIsCglhLXN0d2ltYS5hZHMsIGEtc3R3aXNlLmFkYiwgYS1zdHdpc2UuYWRzLCBhLXN0d2lzdS5hZGIsCglhLXN0d2lzdS5hZHMsIGEtc3R3aXVuLmFkYiwgYS1zdHdpdW4uYWRzLCBhLXN1dGVpby5hZGIsCglhLXN1dGVpby5hZHMsIGEtc3dtd2NvLmFkcywgYS1zd3V3dGkuYWRiLCBhLXN3dXd0aS5hZHMsCglhLXN5dGFjby5hZGIsIGEtc3l0YWNvLmFkcywgYS10YXNhdHQuYWRiLCBhLXRhc2lkZS5hZGIsCglhLXRhc2lkZS5hZHMsIGEtdGVpb2VkLmFkYiwgYS10ZXh0aW8uYWRiLCBhLXRleHRpby5hZHMsCglhLXRpY29hdS5hZGIsIGEtdGljb2F1LmFkcywgYS10aWNvaW8uYWRiLCBhLXRpZGVhdS5hZGIsCglhLXRpZGVpby5hZGIsIGEtdGllbmF1LmFkYiwgYS10aWVuaW8uYWRiLCBhLXRpZmlpby5hZGIsCglhLXRpZmxpby5hZGIsIGEtdGlnZWF1LmFkYiwgYS10aWdlYXUuYWRzLCBhLXRpaW5hdS5hZGIsCglhLXRpaW5pby5hZGIsIGEtdGltb2F1LmFkYiwgYS10aW1vaW8uYWRiLCBhLXRpbW9pby5hZHMsCglhLXRpb2NzdC5hZHMsIGEtdGl0ZXN0LmFkYiwgYXRyZWUuYWRiLCBhLXdpdGVpby5hZGIsCglhLXdpdGVpby5hZHMsIGEtd3Rjb2F1LmFkYiwgYS13dGNvYXUuYWRzLCBhLXd0Y29pby5hZGIsCglhLXd0Y3N0ci5hZHMsIGEtd3RkZWF1LmFkYiwgYS13dGRlaW8uYWRiLCBhLXd0ZWRpdC5hZGIsCglhLXd0ZWRpdC5hZHMsIGEtd3RlbmF1LmFkYiwgYS13dGVuaW8uYWRiLCBhLXd0Zmlpby5hZGIsCglhLXd0Zmxpby5hZGIsIGEtd3RnZWF1LmFkYiwgYS13dGluYXUuYWRiLCBhLXd0aW5pby5hZGIsCglhLXd0bW9hdS5hZGIsIGEtd3Rtb2lvLmFkYiwgYS13dHRlc3QuYWRiLCBiYWNrX2VuZC5hZGIsCgliaW5kZ2VuLmFkYiwgYnV0aWwuYWRiLCBidXRpbC5hZHMsIGNoZWNrcy5hZHMsIGNpby5jLCBjb21wZXJyLmFkYiwKCWNzZXRzLmFkcywgY3N0YW5kLmFkYiwgZGVidWcuYWRzLCBlbGlzdHMuYWRzLCBlcnJuby5jLCBlcnJvdXQuYWRiLAoJZXJyb3V0LmFkcywgZXJyb3V0Yy5hZGIsIGVycm91dGMuYWRzLCBlcnJ1dGlsLmFkYiwgZXJydXRpbC5hZHMsCgllcnJ1dGlsLmFkcywgZXJyX3ZhcnMuYWRzLCBldmFsX2ZhdC5hZGIsIGV4cF9jaDExLmFkYiwgZXhwX2NoMTEuYWRzLAoJZXhwX2NoMi5hZGIsIGV4cF9jaDcuYWRzLCBleHBfaW1ndi5hZHMsIGV4cF9wYWtkLmFkYiwgZXhwX3ByYWcuYWRiLAoJZXhwX3ByYWcuYWRzLCBleHBfdHNzLmFkYiwgZXhwX3Rzcy5hZHMsIGV4cF92ZnB0LmFkcywgZmUuaCwgZm1hcC5hZGIsCglmcmVlemUuYWRzLCBmcm9udGVuZC5hZGIsIGZyb250ZW5kLmFkcywgZy1hcnJzcGwuYWRiLCBnLWFycnNwbC5hZHMsCglnLWF3ay5hZGIsIGctYXdrLmFkcywgZy1ib3VtYWkuYWRzLCBnLWNhbGVuZC5hZGIsIGctY2FsZW5kLmFkcywKCWctY2F0aWlvLmFkYiwgZy1jb21saW4uYWRiLCBnLWNvbWxpbi5hZHMsIGctY29tbGluLmFkcywgZy1jb21saW4uYWRzLAoJZy1jb212ZXIuYWRiLCBnLWNyYzMyLmFkYiwgZy1jcmMzMi5hZHMsIGctY3RybF9jLmFkcywgZy1jdXJleGMuYWRzLAoJZy1kZWJwb28uYWRzLCBnLWRlYnV0aS5hZGIsIGctZGlvcGl0LmFkYiwgZy1kaW9waXQuYWRzLCBnLWRpcm9wZS5hZGIsCglnLWRpcm9wZS5hZHMsIGctZHludGFiLmFkYiwgZy1keW50YWIuYWRzLCBnLWV4Y2FjdC5hZGIsIGctZXhjYWN0LmFkcywKCWctZXhjZXB0LmFkcywgZy1leGN0cmEuYWRiLCBnLWV4Y3RyYS5hZHMsIGctZXhwZWN0LmFkcywgZy1mbG9jb24uYWRzLAoJZy1oZXNvcmcuYWRzLCBnLWlvLmFkYiwgZy1sb2NmaWwuYWRzLCBnLW1kNS5hZGIsIGctbWQ1LmFkcywgZy1tZDUuYWRzLAoJZy1tb3JlZXguYWRiLCBnLXNpZ25hbC5hZHMsIGctc2lnbmFsLmFkYiwgZ25hdGJpbmQuYWRzLCBnbmF0Y2hvcC5hZGIsCglnbmF0Y21kLmFkYiwgZ25hdGZpbmQuYWRiLCBnbmF0bGJyLmFkYiwgZ25hdG1ha2UuYWRzLCBnbmF0bWVtLmFkYiwKCWduYXRwcmVwLmFkYiwgZ25hdHByZXAuYWRzLCBnbmF0c3ltLmFkYiwgZ25hdHhyZWYuYWRiLCBnLW9zX2xpYi5hZGIsCglnLW9zX2xpYi5hZHMsIGctcGVoYWdlLmFkYiwgZy1wZWhhZ2UuYWRzLCBncHJlcC5hZHMsIGctcmVnZXhwLmFkYiwKCWctcmVnZXhwLmFkcywgZy1yZWdpc3QuYWRiLCBnLXJlZ2lzdC5hZHMsIGctcmVncGF0LmFkcywgZy1zZW1hcGguYWRiLAoJZy1zb2N0aGkuYWRiLCBnLXNvbGlvcC5hZHMsIGctc3BpcGF0LmFkYiwgZy1zcGlwYXQuYWRzLCBnLXNwdGFiby5hZHMsCglnLXNwdGFpbi5hZHMsIGctc3B0YXZzLmFkcywgZy1zdHJpbmcuYWRzLCBnLXRhc2xvYy5hZGIsIGctdGFzbG9jLmFkcywKCWctdHJhc3ltLmFkYiwgZy10cmFzeW0uYWRzLCBpLWZvcnRyYS5hZGIsIGktZm9ydHJhLmFkcywgaW5saW5lLmFkYiwKCWxheW91dC5hZGIsIGxpdmUuYWRiLCBtYWtlLmFkcywgbWFrZXV0bC5hZHMsIG1ha2V1dGwuYWRiLCBtZGxsLWZpbC5hZGIsCgltZGxsLWZpbC5hZHMsIG1kbGwtdXRsLmFkcywgbWVtcm9vdC5hZHMsIG1lbXRyYWNrLmFkYiwgbWxpYi5hZHMsCgltbGliLWZpbC5hZGIsIG1saWItZmlsLmFkcywgbWxpYi1wcmouYWRzLCBtbGliLXV0bC5hZGIsIG1saWItdXRsLmFkcywKCW5saXN0cy5hZGIsIG5saXN0cy5hZHMsIG9zaW50LmFkYiwgb3NpbnQuYWRzLCBvc2ludC1jLmFkYiwgb3NpbnQtbC5hZGIsCglvc2ludC1sLmFkcywgb3NpbnQtbS5hZHMsIG91dHB1dC5hZGIsIHBhci5hZGIsIHBhci5hZGIsIHBhci5hZHMsCglwYXItY2gxMS5hZGIsIHBhci1jaDEyLmFkYiwgcGFyLWNoMi5hZGIsIHBhci1jaDQuYWRiLCBwYXItY2g1LmFkYiwKCXBhci1jaDYuYWRiLCBwYXItY2g5LmFkYiwgcGFyLWVuZGguYWRiLCBwYXItbGFibC5hZGIsIHBhci1sb2FkLmFkYiwKCXBhci10Y2hrLmFkYiwgcHJlcC5hZGIsIHByZXBjb21wLmFkYiwgcHJlcGNvbXAuYWRzLCBwcmotYXR0ci5hZHMsCglwcmotY29tLmFkcywgcHJqLWRlY3QuYWRiLCBwcmotZGVjdC5hZHMsIHByai1lbnYuYWRzLCBwcmotZXJyLmFkcywKCXByai1leHQuYWRzLCBwcmotbWFrci5hZGIsIHByai1tYWtyLmFkcywgcHJqLW5tc2MuYWRzLCBwcmotcGFycy5hZGIsCglwcmotcGFycy5hZHMsIHByai1wYXJ0LmFkcywgcHJqLXBwLmFkcywgcHJqLXByb2MuYWRzLCBwcmotc3RydC5hZGIsCglwcmotc3RydC5hZHMsIHByai10cmVlLmFkYiwgcHJqLXV0aWwuYWRiLCBwcmotdXRpbC5hZHMsIHJ0c2ZpbmQuYWRiLAoJc2VtLmFkYiwgc2VtLmFkcywgc2VtX2Nhc2UuYWRiLCBzZW1fY2FzZS5hZHMsIHNlbV9jaDExLmFkYiwKCXNlbV9jaDQuYWRiLCBzZW1fY2g2LmFkcywgc2VtX2NoNy5hZHMsIHNlbV9kaXN0LmFkcywgc2VtX2VsYWIuYWRzLAoJc2VtX2VsaW0uYWRzLCBzZW1fZXZhbC5hZHMsIHNlbV9pbnRyLmFkcywgc2VtX21hcHMuYWRiLCBzZW1fbWFwcy5hZHMsCglzZW1fbWFwcy5hZHMsIHNlbV9yZXMuYWRzLCBzZW1fdHlwZS5hZHMsIHNmbl9zY2FuLmFkYiwgc2ZuX3NjYW4uYWRzLAoJcy1pbWd3Y2guYWRzLCBzLWltZ3dpdS5hZGIsIHMtaW1nd2l1LmFkcywgcy1pbm1hb3AuYWRzLCBzaW5wdXQuYWRiLAoJc2lucHV0LmFkcywgcy1wYWNrMDMuYWRiLCBzLXBhY2swMy5hZHMsIHMtcGFjazA1LmFkYiwgcy1wYWNrMDUuYWRzLAoJcy1wYWNrMDYuYWRiLCBzLXBhY2swNi5hZHMsIHMtcGFjazA3LmFkYiwgcy1wYWNrMDcuYWRzLCBzLXBhY2swOS5hZGIsCglzLXBhY2swOS5hZHMsIHMtcGFjazEwLmFkYiwgcy1wYWNrMTAuYWRzLCBzLXBhY2sxMS5hZGIsIHMtcGFjazExLmFkcywKCXMtcGFjazEyLmFkYiwgcy1wYWNrMTIuYWRzLCBzLXBhY2sxMy5hZGIsIHMtcGFjazEzLmFkcywgcy1wYWNrMTQuYWRiLAoJcy1wYWNrMTQuYWRzLCBzLXBhY2sxNS5hZGIsIHMtcGFjazE1LmFkcywgcy1wYWNrMTcuYWRiLCBzLXBhY2sxNy5hZHMsCglzLXBhY2sxOC5hZGIsIHMtcGFjazE4LmFkcywgcy1wYWNrMTkuYWRiLCBzLXBhY2sxOS5hZHMsIHMtcGFjazIwLmFkYiwKCXMtcGFjazIwLmFkcywgcy1wYWNrMjEuYWRiLCBzLXBhY2syMS5hZHMsIHMtcGFjazIyLmFkYiwgcy1wYWNrMjIuYWRzLAoJcy1wYWNrMjMuYWRiLCBzLXBhY2syMy5hZHMsIHMtcGFjazI0LmFkYiwgcy1wYWNrMjQuYWRzLCBzLXBhY2syNS5hZGIsCglzLXBhY2syNS5hZHMsIHMtcGFjazI2LmFkYiwgcy1wYWNrMjYuYWRzLCBzLXBhY2syNy5hZGIsIHMtcGFjazI3LmFkcywKCXMtcGFjazI4LmFkYiwgcy1wYWNrMjguYWRzLCBzLXBhY2syOS5hZGIsIHMtcGFjazI5LmFkcywgcy1wYWNrMzAuYWRiLAoJcy1wYWNrMzAuYWRzLCBzLXBhY2szMS5hZGIsIHMtcGFjazMxLmFkcywgcy1wYWNrMzMuYWRiLCBzLXBhY2szMy5hZHMsCglzLXBhY2szNC5hZGIsIHMtcGFjazM0LmFkcywgcy1wYWNrMzUuYWRiLCBzLXBhY2szNS5hZHMsIHMtcGFjazM2LmFkYiwKCXMtcGFjazM2LmFkcywgcy1wYWNrMzcuYWRiLCBzLXBhY2szNy5hZHMsIHMtcGFjazM4LmFkYiwgcy1wYWNrMzguYWRzLAoJcy1wYWNrMzkuYWRiLCBzLXBhY2szOS5hZHMsIHMtcGFjazQwLmFkYiwgcy1wYWNrNDAuYWRzLCBzLXBhY2s0MS5hZGIsCglzLXBhY2s0MS5hZHMsIHMtcGFjazQyLmFkYiwgcy1wYWNrNDIuYWRzLCBzLXBhY2s0My5hZGIsIHMtcGFjazQzLmFkcywKCXMtcGFjazQ0LmFkYiwgcy1wYWNrNDQuYWRzLCBzLXBhY2s0NS5hZGIsIHMtcGFjazQ1LmFkcywgcy1wYWNrNDYuYWRiLAoJcy1wYWNrNDYuYWRzLCBzLXBhY2s0Ny5hZGIsIHMtcGFjazQ3LmFkcywgcy1wYWNrNDguYWRiLCBzLXBhY2s0OC5hZHMsCglzLXBhY2s0OS5hZGIsIHMtcGFjazQ5LmFkcywgcy1wYWNrNTAuYWRiLCBzLXBhY2s1MC5hZHMsIHMtcGFjazUxLmFkYiwKCXMtcGFjazUxLmFkcywgcy1wYWNrNTIuYWRiLCBzLXBhY2s1Mi5hZHMsIHMtcGFjazUzLmFkYiwgcy1wYWNrNTMuYWRzLAoJcy1wYWNrNTQuYWRiLCBzLXBhY2s1NC5hZHMsIHMtcGFjazU1LmFkYiwgcy1wYWNrNTUuYWRzLCBzLXBhY2s1Ni5hZGIsCglzLXBhY2s1Ni5hZHMsIHMtcGFjazU3LmFkYiwgcy1wYWNrNTcuYWRzLCBzLXBhY2s1OC5hZGIsIHMtcGFjazU4LmFkcywKCXMtcGFjazU5LmFkYiwgcy1wYWNrNTkuYWRzLCBzLXBhY2s2MC5hZGIsIHMtcGFjazYwLmFkYiwgcy1wYWNrNjAuYWRzLAoJcy1wYWNrNjEuYWRiLCBzLXBhY2s2MS5hZHMsIHMtcGFjazYyLmFkYiwgcy1wYWNrNjIuYWRzLCBzLXBhY2s2My5hZGIsCglzLXBhY2s2My5hZHMsIHMtcGFyaW50LmFkYiwgcy1wYXJpbnQuYWRiLCBzLXBhcmludC5hZHMsIHNwcmludC5hZHMsCglzLXB1cmV4Yy5hZHMsIHMtcmVzdHJpLmFkcywgcy1yZXN0cmkuYWRiLCBzLXNjYXZhbC5hZGIsIHMtc2NhdmFsLmFkcywKCXMtc2Vjc3RhLmFkYiwgcy1zZWNzdGEuYWRzLCBzLXNlcXVpby5hZGIsIHMtc2VxdWlvLmFkcywgc3RhbmQuYWRzLAoJcy10YXN1dGkuYWRiLCBzLXRyYWNlYi5hZGIsIHMtdHJhY2ViLmFkcywgc3RyaW5ndC5hZGIsIHN0cmluZ3QuYWRzLAoJc3R5bGVnLmFkcywgcy12YWxib28uYWRiLCBzLXZhbGJvby5hZHMsIHMtdmFsY2hhLmFkYiwgcy12YWxjaGEuYWRzLAoJcy12YWxkZWMuYWRiLCBzLXZhbGRlYy5hZHMsIHMtdmFsaW50LmFkYiwgcy12YWxpbnQuYWRzLCBzLXZhbGludC5hZHMsCglzLXZhbGxsZC5hZGIsIHMtdmFsbGxkLmFkcywgcy12YWxsbGkuYWRiLCBzLXZhbGxsaS5hZHMsIHMtdmFsbGx1LmFkYiwKCXMtdmFsbGx1LmFkcywgcy12YWxyZWEuYWRiLCBzLXZhbHJlYS5hZHMsIHMtdmFsdW5zLmFkYiwgcy12YWx1bnMuYWRzLAoJcy12YWx1dGkuYWRiLCBzLXZhbHV0aS5hZHMsIHMtdmFsd2NoLmFkcywgcy12ZWJvb3AuYWRiLCBzLXZlYm9vcC5hZHMsCglzLXZlcmNvbi5hZGIsIHMtdmVyY29uLmFkcywgcy13Y2hjbnYuYWRiLCBzLXdjaGNudi5hZHMsIHMtd2NoY29uLmFkcywKCXMtd2NoamlzLmFkYiwgcy13Y2hqaXMuYWRzLCBzLXdjaHN0dy5hZGIsIHMtd2Noc3R3LmFkYiwgcy13Y2hzdHcuYWRzLAoJcy13Y2h3dHMuYWRiLCBzLXdjaHd0cy5hZHMsIHMtd2lkYm9vLmFkYiwgcy13aWRib28uYWRzLCBzLXdpZGNoYS5hZGIsCglzLXdpZGNoYS5hZHMsIHMtd2lkZW51LmFkYiwgcy13aWRlbnUuYWRzLCBzLXdpZGxsaS5hZGIsIHMtd2lkbGxpLmFkcywKCXMtd2lkbGx1LmFkYiwgcy13aWRsbHUuYWRzLCBzLXdpZHdjaC5hZGIsIHMtd2lkd2NoLmFkcywgcy13d2RjaGEuYWRiLAoJcy13d2RjaGEuYWRzLCBzLXd3ZGVudS5hZGIsIHMtd3dkZW51LmFkcywgc3ltYm9scy5hZGIsIHN5bWJvbHMuYWRzLAoJdGFibGUuYWRzLCB0YXJncGFybS5hZGIsIHRhcmdwYXJtLmFkcywgdGItYWx2bXMuYywgdGItYWx2eHcuYywKCXRidWlsZC5hZGIsIHRyZWVfaW8uYWRzLCB0cmVlcHIuYWRiLCB0cmVlcHJzLmFkdCwgdHR5cGVmLmFkcywKCXR0eXBlcy5hZHMsIHR5cGVzLmFkYiwgdWludHAuYWRiLCB1aW50cC5hZHMsIHVuYW1lLmFkcywgdXJlYWxwLmFkcywKCXVzYWdlLmFkcywgdmFsaWRzdy5hZHMsIHZ4YWRkcjJsaW5lLmFkYiwgd2lkZWNoYXIuYWRiLCB3aWRlY2hhci5hZHMsCgl4ZWluZm8uYWRiLCB4bm1ha2UuYWRiLCB4cmVmX2xpYi5hZHMsIHhyX3RhYmxzLmFkYiwgeHJfdGFibHMuYWRzLAoJeHNpbmZvLmFkYiwgeHRyZWVwcnMuYWRiLCB4c25hbWVzLmFkYiwgdm1zX2NvbnYuYWRzLCB2bXNfY29udi5hZGIsCglhLWRpcnZhbC5hZHMsIGEtZGlydmFsLmFkYiwgYS1kaXJ2YWwtbWluZ3cuYWRiLCBhLWRpcmVjdC5hZHMsCglhLWRpcmVjdC5hZGIsIGluZGVwc3cuYWRzLCBwcmotYXR0ci1wbS5hZHMsIHN5c3RlbS1saW51eC1wcGMuYWRzLAoJYS1udW1hdXgtZGFyd2luLmFkcywgYS1udW1hdXgtZGFyd2luLmFkYiwKCWEtc3d1d2hhLmFkcywgYS1zdHVuaGEuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xODQzNAoJKiBvc2ludC1tLmFkYjogQWRkIHByYWdtYSBFbGFib3JhdGVfQWxsIGZvciBPc2ludAoKMjAwNS0xMS0xMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjM5OTUKCSogdHJhbnMuYyAoY2FsbF90b19nbnUpOiBSZXN0b3JlIHN0YXRlbWVudCBsb3N0IGluIHRyYW5zbGF0aW9uLgoKMjAwNS0xMS0wOCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGluaXQuYzogVXNlIHRoZSBMaW51eC1zcGVjaWZpYyBzZWN0aW9uIGZvciB0aGUgSUEtNjQvTGludXggdGFyZ2V0LgoJKF9fZ25hdF9hZGp1c3RfY29udGV4dF9mb3JfcmFpc2UpOiBBZGQgY29uZGl0aW9uYWwgY29kZSBzbyB0aGF0IHRoZQoJSUEtNjQgaXMgYWxzbyBzdXBwb3J0ZWQuCgoyMDA1LTExLTAzICBKYW1lcyBFIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeC5jb20+CgoJUFIgYWRhLzIzNDI3CgkqIHRyYW5zLmMgKGduYXRfdG9fZ251KTogVXNlIFRZUEVfU0laRV9VTklUIG5vdCBUWVBFX1NJWkUgaW4KCVRSRUVfT1ZFUkZMT1cgY2hlY2suCgoyMDA1LTA5LTIxICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yMjQxOAoJKiBkZWNsLmMgKG1heWJlX3BhZF90eXBlKTogVXNlIHByb3BlciBiaXRzaXpldHlwZSBmb3IgWFZaIG9iamVjdHMsCglhcyB3ZSBjcmVhdGUgdGhlbSB0byBzdG9yZSBhIHNpemUgaW4gYml0cy4KCjIwMDUtMTAtMjEgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgYWRhLzIxOTM3CglQUiBhZGEvMjIzMjgKCVBSIGFkYS8yMjM4MQoJUFIgYWRhLzIyMzgzCglQUiBhZGEvMjI0MTkKCVBSIGFkYS8yMjQyMAoJKiB1dGlsczIuYyAoYnVpbGRfcmV0dXJuX2V4cHIpOiBOZXcgaGVscGVyIGZ1bmN0aW9uLgoJKiBnaWdpLmggKGJ1aWxkX3JldHVybl9leHByKTogRGVjbGFyZSBpdC4KCSogdHJhbnMuYyAoU3VicHJvZ3JhbV9Cb2R5X3RvX2dudSk6IFVzZSBidWlsZF9yZXR1cm5fZXhwciBpbnN0ZWFkCglvZiBtYW51YWxseSBidWlsZGluZyB0aGUgUkVUVVJOX0VYUFIgdHJlZS4KCShjYWxsX3RvX2dudSk6IFBhc3MgTU9ESUZZX0VYUFIgdGhyb3VnaCBidWlsZF9iaW5hcnlfb3AuCgkoZ25hdF90b19nbnUpIDxOX1JldHVybl9TdGF0ZW1lbnQ+OiBQYXNzIE1PRElGWV9FWFBSIHRocm91Z2gKCWJ1aWxkX2JpbmFyeV9vcCBmb3IgdGhlICJ0YXJnZXQgcG9pbnRlciIgY2FzZS4gIFVzZSBidWlsZF9yZXR1cm5fZXhwcgoJaW5zdGVhZCBvZiBtYW51YWxseSBidWlsZGluZyB0aGUgUkVUVVJOX0VYUFIgdHJlZS4KCjIwMDUtMDktMTYgIExhdXJlbnQgR1VFUkJZICA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8yMzc4OAoJKiBzLXRwaW5vcC5hZHM6IE1ha2UgdGhpcyB1bml0IFByZWVsYWJvcmF0ZS4KCjIwMDUtMDktMTYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHNvY2tldC5jOiBBZGQgc3RyaW5nLmggZm9yIG1lbWNweS4KCjIwMDUtMDktMDUgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGRlYy1pby5hZHMsIGRlYy1pby5hZGI6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoKMjAwNS0wOS0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYS1jYWxlbmQtbWluZ3cuYWRiOiBBZGQgY2FsbCB0byBPU19QcmltaXRpdmVzLkluaXRpYWxpemU7CgoJKiBzLXRhcHJvcC1taW5ndy5hZGIsIHMtdGFwcm9wLXZtcy5hZGIsIHMtdGFwcm9wLXNvbGFyaXMuYWRiLAoJcy10YXByb3Atb3MyLmFkYiwgcy10YXByb3AtaXJpeC1hdGhyZWFkLmFkYiwgcy10YXByb3AtbGludXguYWRiLAoJcy10YXByb3AtaHB1eC1kY2UuYWRiLCBzLXRhcHJvcC1pcml4LmFkYiwgcy10YXByb3AtdHJ1NjQuYWRiLAoJcy10YXByb3AtbHlueG9zLmFkYjogTW92ZSB3aXRoIGNsYXVzZXMgb3V0c2lkZSBXYXJuaW5ncyBPZmYgbm93IHRoYXQKCWRlcGVuZGVudCB1bml0cyBhcmUgUHJlZWxhYm9yYXRlLgoJKEluaXRpYWxpemUpOiBDYWxsIEludGVycnVwdF9NYW5hZ2VtZWVudC5Jbml0aWFsaXplIGFuZAoJT1NfUHJpbWl0aXZlcy5Jbml0aWFsaXplIHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyB1bml0LgoJUmVtb3ZlIHVzZSBvZiBTeXN0ZW0uU29mdF9MaW5rcwoJTWFrZSB0aGlzIHVuaXQgUHJlZWxhYm9yYXRlLgoKCSogcy1zdGFjaGUuYWRzLCBzLXRhc3ByaS12eHdvcmtzLmFkcywgcy10YXNwcmktbWluZ3cuYWRzLAoJcy10YXNwcmktdm1zLmFkcywgcy10YXNpbmYtc29sYXJpcy5hZHMsIHMtdGFzcHJpLW9zMi5hZHMsCglzLXRhc3ByaS1seW54b3MuYWRzLCBzLXRhc3ByaS1ocHV4LWRjZS5hZHMsIHMtdGFzcHJpLXRydTY0LmFkcywKCXMtdGFzaW5mLXRydTY0LmFkcywgcy10YXNpbmYtaXJpeC5hZHMsIHMtdGFzaW5mLWlyaXgtYXRocmVhZC5hZHMsCglzLXByb2luZi1pcml4LWF0aHJlYWQuYWRiLCBzLXByb2luZi1pcml4LWF0aHJlYWQuYWRzLAoJcy10cmF0YXMuYWRzLCBzLXRhc2luZi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCUFkZCBwcmFnbWEgUHJlZWxhYm9yYXRlLCBzaW5jZSB0aGVzZSBwYWNrYWdlcyBhcmUgc3VpdGFibGUgZm9yIHRoaXMKCWNhdGVnb3JpemF0aW9uLgoJVXBkYXRlIGNvbW1lbnRzLgoKCSogcy10cmFlbnQtdm1zLmFkcywgcy1pbnRtYW4tZHVtbXkuYWRiLAoJcy10YXByb3AtZHVtbXkuYWRiOiBNYWtlIHRoaXMgdW5pdCBQcmVlbGFib3JhdGUuCgoJKiBzLW9zcHJpbS12eHdvcmtzLmFkYiwgcy1vc3ByaW0tdm1zLmFkYiwgcy1vc3ByaW0tdm1zLmFkcywKCXMtb3NwcmltLW1pbmd3LmFkYiwgcy1pbnRtYW4tdnh3b3Jrcy5hZHMsIHMtaW50bWFuLXZ4d29ya3MuYWRiLAoJcy1pbnRtYW4tdm1zLmFkYiwgcy1pbnRtYW4tbWluZ3cuYWRiLCBzLWludG1hbi12bXMuYWRzLAoJcy1vc3ByaW0tdW5peC5hZGIsIHMtb3NwcmltLW9zMi5hZGIsIHMtb3NwcmltLXNvbGFyaXMuYWRiLAoJcy1pbnRtYW4tc29sYXJpcy5hZGIsIHMtaW50bWFuLWlyaXgtYXRocmVhZC5hZGIsCglzLWludG1hbi1pcml4LmFkYjogTWFyayB0aGlzIHVuaXQgUHJlZWxhYm9yYXRlLgoJKEluaXRpYWxpemUpOiBOZXcgcHJvY2VkdXJlLgoJVXBkYXRlIGNvbW1lbnRzLgoKCSogcy10YXNwcmktbGludXguYWRzOiBSZW1vdmVkLgoKCSogcy10cG9wc3Atc29sYXJpcy5hZGIgKEluaXRpYWxpemUpOiBDcmVhdGUgdGhlIGtleSBpbiB0aGlzIHByb2NlZHVyZSwKCWFzIGRvbmUgYnkgb3RoZXIgaW1wbGVtZW50YXRpb25zIChlLmcuIHBvc2l4KS4KCgkqIHMtdGFwcm9wLmFkcyAoVGltZWRfRGVsYXkpOiBVcGRhdGUgc3BlYyBzaW5jZSB0aGUgY2FsbGVyIG5vdyBpcwoJcmVzcG9uc2libGUgZm9yIGRlZmVycmluZyBhYm9ydC4KCU1hcmsgdGhpcyB1bml0IFByZWVsYWJvcmF0ZS4KCgkqIHMtdGFwcm9iLmFkYiwgcy10YXJlc3QuYWRiOiBDYWxsIFN5c3RlbS5UYXNraW5nLkluaXRpYWxpemUgdG8gZW5zdXJlCglwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHRhc2tpbmcgcnVuLXRpbWUuCgoJKiBzLXRhc2RlYi5hZHM6IE1hcmsgdGhpcyB1bml0IFByZWVsYWJvcmF0ZS4KCShLbm93bl9UYXNrcyk6IEFkZCBleHBsaWNpdCBkZWZhdWx0IHZhbHVlIHRvIGF2b2lkIGVsYWJvcmF0aW9uIGNvZGUuCgoJKiBzLWlubWFvcC12bXMuYWRiIChFbGFib3JhdGlvbiBjb2RlKTogQWRkIGNhbGwgdG8KCUludGVycnVwdF9NYW5hZ2VtZW50LkluaXRpYWxpemUgc2luY2UgdGhlIGVsYWJvcmF0aW9uIGNvZGUgZGVwZW5kcyBvbgoJcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgcGFja2FnZS4KCgkqIHMtaW50bWFuLmFkcywgcy1pbm1hb3AtcG9zaXguYWRiLCBzLWludG1hbi1wb3NpeC5hZGIsCglzLW9zcHJpbS5hZHMsIHMtdGFwcm9wLXBvc2l4LmFkYiwgcy10YXNwcmktcG9zaXguYWRzLAoJcy1vc3ByaW0tcG9zaXguYWRiOiBNYWtlIHRoaXMgdW5pdCBQcmVlbGFib3JhdGUuCgoJKiBhLWNhbGVuZC5hZGI6IEFkZCBjYWxsIHRvIE9TX1ByaW1pdGl2ZXMuSW5pdGlhbGl6ZQoKCSogYS1lbGNoaGEuYWRiOiBVcGRhdGUgdXNlIG9mIEV4Y2VwdC5JZC5GdWxsX05hbWUuCglNaW5vciByZWZvcm1hdHRpbmcuCglSZW1vdmUgdXNlIG9mIEFkYS5FeGNlcHRpb25zLlRyYWNlYmFjayB3aGVuIHBvc3NpYmxlLCBjbGVhbmVyLgoKCSogYS1keW5wcmkuYWRiLCBhLXN5dGFjby5hZGIsIGEtc3l0YWNvLmFkczoKCU1vdmUgd2l0aCBjbGF1c2VzIG91dHNpZGUgV2FybmluZ3MgT2ZmIG5vdyB0aGF0IGRlcGVuZGVudCB1bml0cyBhcmUKCVByZWVsYWJvcmF0ZS4KCVVzZSByYWlzZSB4eHggd2l0aCAiLi4uIjsgQWRhIDIwMDUgZm9ybS4KCgkqIGEtdGFzaWRlLmFkcywgYS10YXNpZGUuYWRiOgoJUmVtb3ZlIHNvbWUgZGVwZW5kZW5jaWVzLCB0byBtYWtlIGl0IGVhc2llciB0byBtYWtlIHRoaXMgdW5pdCB0cnVseQoJUHJlZWxhYm9yYXRlLgoJUmV3cml0ZSBzb21lIGNvZGUgdG8gYmUgY29uZm9ybWFudCB3aXRoIFByZWVsYWJvcmF0ZSBydWxlcy4KCgkqIGctb3NfbGliLmFkYjogUmVtb3ZlIG5vbi1wcmVlbGFib3JhdGUgY29kZSBzbyB0aGF0IHRoaXMgdW5pdCBjYW4gYmUKCW1hcmtlZCBQcmVlbGFib3JhdGUgaW4gdGhlIGZ1dHVyZS4KCgkqIHMtcHJvaW5mLmFkcywgZy1zdHJpbmcuYWRzLCBzLWF1eGRlYy5hZHMsIHMtYXV4ZGVjLXZtc182NC5hZHM6IE1ha2UKCXRoZXNlIHVuaXRzIFByZWVsYWJvcmF0ZS4KCgkqIHMtZXhjdGFiLmFkYjogVXBkYXRlIHVzZSBvZiBFeGNlcHQuSWQuRnVsbF9OYW1lLgoKCSogcy1zb2ZsaW4uYWRzLCBzLXNvZmxpbi5hZGI6IE1hcmsgdGhpcyB1bml0IFByZWVsYWJvcmF0ZV8wNS4KCShTZXRfRXhjX1N0YWNrX0FkZHJfU29mdCwgR2V0X0V4Y19TdGFja19BZGRyX05ULCBTZXRfRXhjX1N0YWNrX0FkZHJfTlQsCglTZXRfRXhjX1N0YWNrX0FkZHIpOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCVJlbW92ZSByZWZlcmVuY2UgdG8gKk1hY2hpbmVfU3RhdGVfQWRkciosIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBzLXN0YWxpYi5hZHM6IE1hcmsgdGhpcyB1bml0IGFzIFByZWVsYWJvcmF0ZVtfMDVdLgoJKEV4Y2VwdGlvbl9EYXRhKTogRnVsbF9OYW1lIGlzIG5vdyBhIFN5c3RlbS5BZGRyZXNzIHNvIHRoYXQgdGhpcyB1bml0CgljYW4gYmUgbWFkZSBQcmVlbGFib3JhdGUuCglDbGVhbiB1cC9zaW1wbGlmeSBjb2RlIHRoYW5rcyB0byBGdWxsX05hbWUgYmVpbmcgYSBTeXN0ZW0uQWRkcmVzcy4KCVJlbW92ZSBvYnNvbGV0ZSBwcmFnbWEgU3VwcHJlc3MgKEFsbF9DaGVja3MpLCBubyBsb25nZXIgbmVlZGVkLgoKCSogcy10YXNraW4uYWRzLCBzLXRhc2tpbi5hZGI6CglNb3ZlIHdpdGggY2xhdXNlcyBvdXRzaWRlIFdhcm5pbmdzIE9mZiBub3cgdGhhdCBkZXBlbmRlbnQgdW5pdHMgYXJlCglQcmVlbGFib3JhdGUuCglNYWtlIHRoaXMgdW5pdCBQcmVlbGFib3JhdGUuCgkoSW5pdGlhbGl6ZSk6IE5ldyBwcm9jZWR1dXJlLCByZXBsYWNlIGVsYWJvcmF0aW9uIGNvZGUgYW5kIG1ha2VzIHRoZQoJc2V0IHVwIG9mIHRoZSB0YXNraW5nIHJ1bi10aW1lIGNsZWFuZXIuCgkoRGV0ZWN0X0Jsb2NraW5nKTogTm93IGEgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIGRlZmVycmVkIGJvb2xlYW4sIHRvCglvYmV5IFByZWVsYWJvcmF0ZSBydWxlcy4KCgkqIHMtdGFzc3RhLmFkYiAoRmluYWxpemVfR2xvYmFsX1Rhc2tzKTogUmVtb3ZlIEdldC9TZXRfRXhjX1N0YWNrX0FkZHIKCXNvZnQgbGlua3MsIG5vIGxvbmdlciB1c2VkLgoKCSogcy10cmFjZXMuYWRzLCBzLXRyYWVudC5hZHM6IEFkZCBwcmFnbWEgUHJlZWxhYm9yYXRlLCBzaW5jZSB0aGVzZQoJcGFja2FnZXMgYXJlIHN1aXRhYmxlIGZvciB0aGlzIGNhdGVnb3JpemF0aW9uLgoKCSogcy1zb2xpdGEuYWRiOiBSZXBsYWNlIHVzZSBvZiBBZGEuRXhjZXB0aW9uIGJ5IHJhaXNlIHh4eCB3aXRoICIuLi4iCglzaW5jZSB3ZSBjb21waWxlIHJ1bi10aW1lIHNvdXJjZXMgaW4gQWRhIDIwMDUgbW9kZS4KCShUaW1lZF9EZWxheV9UKTogQ2FsbCBBYm9ydF9EZWZlci9VbmRlZmVyIGFyb3VuZCBUaW1lZF9EZWxheSwgdG8KCWF2b2lkIGhhdmluZyBzLXRhcHJvcCouYWRiIGRlcGVuZCBvbiBzLXNvZmxpbiBhbmQgdG8gYXZvaWQgY29kZQoJZHVwbGljYXRpb24uCglSZW1vdmUgcmVmZXJlbmNlIHRvICpNYWNoaW5lX1N0YXRlX0FkZHIqLCBubyBsb25nZXIgbmVlZGVkLgoKMjAwNS0wOS0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy1tYXN0b3AtdHJ1NjQuYWRiLCBzLW1hc3RvcC1pcml4LmFkYiwgcy1tYXN0b3Atdm1zLmFkYgoJKEVudGVyX0hhbmRsZXIsIFNldF9TaWduYWxfTWFjaGluZV9TdGF0ZSk6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoJUmVtb3ZlIHJlZmVyZW5jZSB0byBTeXN0ZW0uRXhjZXB0aW9ucy4KCgkqIHMtbWFzdG9wLXg4Ni5hZGI6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoKCSogcy10cmFjZWItbWFzdG9wLmFkYjogQWRqdXN0IGNhbGxzIHRvIFBvcF9GcmFtZS4KCgkqIGEtZXhjYWNoLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogYS1leGNlcHQuYWRzLCBhLWV4Y2VwdC5hZGI6IFJlbW92ZSBnbG9iYWwgV2FybmluZ3MgKE9mZikgcHJhZ21hLCBhbmQKCWluc3RlYWQgZml4IG5ldyB3YXJuaW5ncyB0aGF0IHdlcmUgaGlkZGVuIGJ5IHRoaXMgY2hhbmdlLgoJKEFBQSwgWlpaKTogUmVtb3ZlZCwgcmVwbGFjZWQgYnkuLi4KCShDb2RlX0FkZHJlc3NfRm9yX0FBQSwgQ29kZV9BZGRyZXNzX0Zvcl9aWlopOiAuLi4gdGhlc2UgZnVuY3Rpb25zLCB3aG8KCWFyZSB1c2VkIGluc3RlYWQgb2YgY29uc3RhbnRzLCB0byBoZWxwIG1ha2UgQWRhLkV4Y2VwdGlvbiB0cnVseQoJcHJlZWxhYm9yYXRlLgoJKFJjaGVja18qLCBSYWlzZV9Db25zdHJhaW50X0Vycm9yLCBSYWlzZV9Qcm9ncmFtX0Vycm9yLAoJUmFpc2VfU3RvcmFnZV9FcnJvcik6IEZpbGUgaXMgbm93IGEgU3lzdGVtLkFkZHJlc3MsIHRvIHNpbXBsaWZ5IGNvZGUuCgkoRWxhYiBjb2RlKTogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgkoTnVsbF9PY2N1cnJlbmNlKTogUmVtb3ZlIFdhcm5pbmdzIE9mZiBhbmQgbWFrZSB0aGlzIGNvbnN0cnVjdAoJcHJlZWxhYm9yYXRlLgoJUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBmcm9udC1lbmQgemVybyBjb3N0IGV4Y2VwdGlvbiBoYW5kbGluZywgc2luY2UKCWl0IGlzIG5vIGxvbmdlciB1c2VkLgoJUmVtb3ZlIC1nbmF0TC8tZ25hdFogc3dpdGNoZXMuCgoJKiBhLWV4ZXhkYS5hZGIgKEFwcGVuZF9JbmZvX0V4Y2VwdGlvbl9OYW1lLCBTZXRfRXhjZXB0aW9uX0NfTXNnKToKCVVwZGF0ZSB1c2Ugb2YgRXhjZXB0Lk1zZy4KCgkqIGduYXQxZHJ2LmFkYiwgaW5saW5lLmFkYiwgYmluZGdlbi5hZGIsIGRlYnVnLmFkYiwgZXhwX2NoMTEuYWRzLAoJZnJlZXplLmFkYiwgZnJvbnRlbmQuYWRiLCBsaWIuYWRiLCBleHBfY2gxMS5hZGI6IFJlbW92ZSBjb2RlIHJlbGF0ZWQKCXRvIGZyb250LWVuZCB6ZXJvIGNvc3QgZXhjZXB0aW9uIGhhbmRsaW5nLCBzaW5jZSBpdCBpcyBubyBsb25nZXIgdXNlZC4KCVJlbW92ZSAtZ25hdEwvLWduYXRaIHN3aXRjaGVzLgoKCSogbGliLXdyaXQuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCVJlbW92ZSBkb2Mgb2YgVVgKCgkqIE1ha2VmaWxlLnJ0bDogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gcy1leGNlcHQqLCBzLW1hc3RvcC14ODYqCgoJKiBNYWtlLWxhbmcuaW46IFJlbW92ZSByZWZlcmVuY2VzIHRvIHMtZXhjZXB0LmFkcwoKCSogcy1leGNlcHQuYWRzOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCgkqIHMtbWFzdG9wLmFkcywgcy1tYXN0b3AuYWRiOgoJKEVudGVyX0hhbmRsZXIsIFNldF9TaWduYWxfTWFjaGluZV9TdGF0ZSk6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoJUmVtb3ZlIHJlZmVyZW5jZSB0byBTeXN0ZW0uRXhjZXB0aW9ucy4KCgkqIHJhaXNlLmgsIHVzYWdlLmFkYiwgdGFyZ3Bhcm0uYWRiLCB0YXJncGFybS5hZHMsIHN3aXRjaC1tLmFkYiwKCXN3aXRjaC1iLmFkYjogUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBmcm9udC1lbmQgemVybyBjb3N0IGV4Y2VwdGlvbgoJaGFuZGxpbmcsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciB1c2VkLgoJUmVtb3ZlIC1nbmF0TC8tZ25hdFogc3dpdGNoZXMuCgoyMDA1LTA5LTAxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX0luKTogUmVwbGFjZSB0ZXN0IG9mIGV4cHJlc3Npb24gaW4gaXRzIG93bgoJdHlwZSBieSB2YWxpZCB0ZXN0IGFuZCBnZW5lcmF0ZSB3YXJuaW5nLgoJKFRhZ2dlZF9NZW1iZXJzaGlwKTogR2VuZXJhdGUgY2FsbCB0byB0aGUgcnVuLXRpbWUKCXN1YnByb2dyYW0gSVdfTWVtYmVyc2hpcCBpbiBjYXNlIG9mICJJZmFjZV9DV19UeXAgaW4gVHlwJ0NsYXNzIgoJQ2hhbmdlIGZvcm1hbCBuYW1lIFN1YnR5cGVfTWFyayB0byBSZXN1bHRfRGVmaW5pdGlvbiBpbiBzZXZlcmFsIGNhbGxzIHRvCglNYWtlX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCgkoRXhwYW5kX0FsbG9jYXRvcl9FeHByZXNzaW9uKTogQWRkIHRlc3RzIGZvciBzdXBwcmVzc2lvbiBvZiB0aGUgQUktMzQ0CgljaGVjayBmb3IgcHJvcGVyIGFjY2Vzc2liaWxpdHkgb2YgdGhlIG9wZXJhbmQgb2YgYSBjbGFzcy13aWRlIGFsbG9jYXRvci4KCVRoZSBjaGVjayBjYW4gYmUgbGVmdCBvdXQgaWYgY2hlY2tzIGFyZSBzdXBwcmVzc2VkIG9yIGlmIHRoZSBleHByZXNzaW9uCgloYXMgYSBzcGVjaWZpYyB0YWdnZWQgdHlwZSB3aG9zZSBsZXZlbCBpcyBrbm93biB0byBiZSBzYWZlLgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9OX0Fzc2lnbm1lbnRfU3RhdGVtZW50KTogU2ltcGxpZnkgdGhlIGNvZGUgdGhhdAoJZ2VuZXJhdGVzIHRoZSBydW4tdGltZSBjaGVjayBhc3NvY2lhdGVkIHdpdGggbnVsbC1leGNsdWRpbmcgZW50aXRpZXMuCgkoRXhwYW5kX05fUmV0dXJuX1N0YXRlbWVudCk6IEFkZCB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgdGhlIGFjY2Vzc2liaWxpdHkKCWNoZWNrIG9uIHRoZSBsZXZlbCBvZiB0aGUgcmV0dXJuIGV4cHJlc3Npb24gb2YgYSBjbGFzcy13aWRlIGZ1bmN0aW9uCgljYW4gYmUgZWxpZGVkLiBUaGUgY2hlY2sgdXN1YWxseSBpc24ndCBuZWVkZWQgaWYgdGhlIGV4cHJlc3Npb24gaGFzIGEKCXNwZWNpZmljIHR5cGUgKHVubGVzcyBpdCdzIGEgY29udmVyc2lvbiBvciBhIGZvcm1hbCBwYXJhbWV0ZXIpLiBBbHNvCglhZGQgYSB0ZXN0IGZvciB3aGV0aGVyIGFjY2Vzc2liaWxpdHkgY2hlY2tzIGFyZSBzdXBwcmVzc2VkLiBBdWdtZW50Cgl0aGUgY29tbWVudHMgdG8gZGVzY3JpYmUgdGhlIGNvbmRpdGlvbnMgZm9yIHBlcmZvcm1pbmcgdGhlIGNoZWNrLgoKMjAwNS0wOS0wMSAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZGIgKElXX01lbWJlcnNoaXApOiBHaXZlIHN1cHBvcnQgdG8KCSJJZmFjZV9DV19UeXAgaW4gVCdDbGFzcyIuIEZvciB0aGlzIHB1cnBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcwoJc3VicHJvZ3JhbSBoYXMgYmVlbiBleHRlbmRlZCB0byBsb29rIGZvciB0aGUgdGFnIGluIHRoZSBhbmNlc3RvcnMgdGFnCgl0YWJsZS4KCVVwZGF0ZSB0aGUgc3RydWN0dXJlIG9mIHRoZSBHTkFUIERpc3BhdGNoIFRhYmxlIHRvIHJlZmxlY3QgdGhlCglhZGRpdGlvbmFsIHR3byB0YWJsZXMgdXNlZCBpbiBkaXNwYXRjaGluZyBzZWxlY3RzLgoJSW50cm9kdWNlIGFwcHJvcHJpYXRlIGFycmF5IHR5cGVzIGFuZCByZWNvcmQgY29tcG9uZW50cyBpbgoJVHlwZV9TcGVjaWZpY19EYXRhIHRvIHJlZmxlY3QgdGhlIHR3byB0YWJsZXMuCgkoR2V0X0VudHJ5X0luZGV4LCBTZXRfRW50cnlfSW5kZXgpOiBSZXRyaWV2ZSBhbmQgc2V0IHRoZSBlbnRyeSBpbmRleCBpbgoJdGhlIFRTRCBvZiBhIHRhZywgaW5kZXhlZCBieSBwb3NpdGlvbi4KCShHZXRfUHJpbV9PcF9LaW5kLCBTZXRfUHJpbV9PcF9LaW5kKTogUmV0cmlldmUgYW5kIHNldCB0aGUgcHJpbWl0aXZlCglvcGVyYXRpb24ga2luZCBpbiB0aGUgVFNEIG9mIGEgdGFnLCBpbmRleGVkIGJ5IHBvc2l0aW9uLgoKCSogYS10YWdzLmFkczogSW50cm9kdWNlIGFuIGVudW1lcmF0aW9uIHR5cGUgdG8gY2FwdHVyZSBkaWZmZXJlbnQKCXByaW1pdGl2ZSBvcGVyYXRpb24ga2luZHMuIERlZmluZSBhIGNvbnN0YW50IHJlZmxlY3RpbmcgdGhlIG51bWJlciBvZgoJcHJlZGVmaW5lZCBwcmltaXRpdmUgb3BlcmF0aW9ucy4KCShHZXRfRW50cnlfSW5kZXgsIFNldF9FbnRyeV9JbmRleCk6IFNldCBhbmQgcmV0cmlldmUgdGhlIGVudHJ5IGluZGV4CglvZiBhbiBlbnRyeSB3cmFwcGVyLgoJKEdldF9QcmltX09wX0tpbmQsIFNldF9QcmltX09wX0tpbmQpOiBTZXQgYW5kIHJldHJpZXZlIHRoZSBraW5kIG9mCgljYWxsYWJsZSBlbnRpdHkgb2YgYSBwcmltaXRpdmUgb3BlcmF0aW9uLgoKCSogZXhwX2NoMy5hZGIgKEZyZWV6ZV9SZWNvcmRfVHlwZSk6IEdlbmVyYXRlIHRoZSBkZWNsYXJhdGlvbnMgb2YgdGhlCglwcmltaXRpdmUgb3BlcmF0aW9ucyB1c2VkIGluIGRpc3BhdGNoaW5nIHNlbGVjdHMgZm9yIGxpbWl0ZWQKCWludGVyZmFjZXMsIGxpbWl0ZWQgdGFnZ2VkLCB0YXNrIGFuZCBwcm90ZWN0ZWQgdHlwZXMgd2hhdCBpbXBsZW1lbnQgYQoJbGltaXRlZCBpbnRlcmZhY2UuCgkoRnJlZXplX1R5cGUpOiBHZW5lcmF0ZSB0aGUgYm9kaWVzIG9mIHRoZSBwcmltaXRpdmUgb3BlcmF0aW9ucyB1c2VkIGluCglkaXNwYXRjaGluZyBzZWxlY3RzIGZvciBsaW1pdGVkIHRhZ2dlZCwgdGFzayBhbmQgcHJvdGVjdGVkIHR5cGVzIHRoYXQKCWltcGxlbWVudCBhIGxpbWl0ZWQgaW50ZXJmYWNlLiBHZW5lcmF0ZSBzdGF0ZW1lbnRzIHRvIHBvcHVsYXRlIHRoZSB0d28KCWF1eGlsaWFyeSB0YWJsZXMgdXNlZCBmb3IgZGlzcGF0Y2hpbmcgaW4gc2VsZWN0IHN0YXRlbWVudHMuCgkoRnJlZXplX1JlY29yZF9UeXBlKTogQWRkIGNhbGwgdG8gaW5pdGlhbGl6ZSB0aGUgZGlzcGF0Y2ggdGFibGUgZW50cmllcwoJYXNzb2NpYXRlZCB3aXRoIHByZWRlZmluZWQgaW50ZXJmYWNlIHByaW1pdGl2ZSBvcGVyYXRpb25zLgoJKEJ1aWxkX0RjaGVja19GdW5jdGlvbik6IENoYW5nZSBTZXRfU3VidHlwZV9NYXJrIHRvCglTZXRfUmVzdWx0X0RlZmluaXRpb24uCgkoQnVpbGRfVmFyaWFudF9SZWNvcmRfRXF1YWxpdHkpOiBDaGFuZ2UgU3VidHlwZV9NYXJrIHRvCglSZXN1bHRfRGVmaW5pdGlvbi4KCShGcmVlemVfRW51bWVyYXRpb25fVHlwZSk6IENoYW5nZSBTdWJ0eXBlX01hcmsgdG8gUmVzdWx0X0RlZmluaXRpb24uCgkoUHJlZGVmX1NwZWNfT3JfQm9keSk6IENoYW5nZSBTdWJ0eXBlX01hcmsgdG8gUmVzdWx0X0RlZmluaXRpb24uCgkoQnVpbGRfQXNzaWdubWVudCk6IFNpbXBsaWZ5IHRoZSBjb2RlIHRoYXQgYWRkcyB0aGUgcnVuLXRpbWUtY2hlY2suCgkoRXhwYW5kX05fT2JqZWN0X0RlY2xhcmF0aW9uKTogQ29kZSBjbGVhbnVwLgoKCSogZXhwX2NoNy5hZGIgKE1ha2VfQ2xlYW4pOiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIHR5cGUgZm9yIGxvY2tpbmcKCWVudHJpZXMgd2hlbiB0aGVyZSBpcyBhIHByb3RlY3RlZCB0eXBlIHRoYXQgaW1wbGVtZW50cyBhIGxpbWl0ZWQKCWludGVyZmFjZS4KCgkqIGV4cF9jaDkuYWRiOiBBZGQgcGFja2FnZSBTZWxlY3RfRXhwYW5zaW9uX1V0aWxpdGllcyB0aGF0IGNvbnRhaW5zCgljb21tb24gcm91dGluZXMgdXNlZCBpbiBleHBhbnNpb24gb2YgZGlzcGF0Y2hpbmcgc2VsZWN0cy4KCShBZGRfUHJpdmF0ZV9EZWNsYXJhdGlvbnMpOiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIHByb3RlY3Rpb24gdHlwZSB3aGVuCgl0aGVyZSBpcyBhIHByb3RlY3RlZCB0eXBlIHRoYXQgaW1wbGVtZW50cyBhIGxpbWl0ZWQgaW50ZXJmYWNlLgoJKEJ1aWxkX1BhcmFtZXRlcl9CbG9jayk6IEdlbmVyYXRlIGEgd3JhcHBlZCBwYXJhbWV0ZXIgYmxvY2suCgkoQnVpbGRfUHJvdGVjdGVkX1N1YnByb2dyYW1fQm9keSk6IFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgdHlwZSBmb3IKCWxvY2tpbmcgZW50cmllcyB3aGVuIHRoZXJlIGlzIGEgcHJvdGVjdGVkIHR5cGUgdGhhdCBpbXBsZW1lbnRzIGEKCWxpbWl0ZWQgaW50ZXJmYWNlLgoJKEJ1aWxkX1dyYXBwZXJfU3BlYyk6IFNldCB0aGUgZmxhZyBhbmQgd3JhcHBlZCBlbnRpdHkgZm9yIHByb2NlZHVyZXMKCWNsYXNzaWZpZWQgYXMgZW50cnkgd3JhcHBlcnMuCgkoRXhwYW5kX05fQXN5bmNocm9ub3VzX1NlbGVjdCk6IEFkZCBzdXBwb3J0IGZvciBleHBhbnNpb24gb2YgZGlzcGF0Y2hpbmcKCWFzeW5jaHJvbm91cyBzZWxlY3RzLgoJKEV4cGFuZF9OX0NvbmRpdGlvbmFsX0VudHJ5X0NhbGwpOiBBZGQgc3VwcG9ydCBmb3IgZXhwYW5zaW9uIG9mCglkaXNwYXRjaGluZyBjb25kaXRpb25hbCBzZWxlY3RzLgoJKEV4cGFuZF9OX1Byb3RlY3RlZF9UeXBlX0RlY2xhcmF0aW9uKTogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSB0eXBlIGZvcgoJcHJvdGVjdGlvbiB3aGVuIHRoZXJlIGlzIGEgcHJvdGVjdGVkIHR5cGUgdGhhdCBpbXBsZW1lbnRzIGxpbWl0ZWQKCWludGVyZmFjZXMuCgkoRXhwYW5kX05fVGltZWRfRW50cnlfQ2FsbCk6IEFkZCBzdXBwb3J0IGZvciBleHBhbnNpb24gb2YgZGlzcGF0Y2hpbmcKCXRpbWVkIHNlbGVjdHMuCgkoRXh0cmFjdF9EaXNwYXRjaGluZ19DYWxsKTogRXh0cmFjdCB0aGUgZW50aXR5IG9mIHRoZSBuYW1lIG9mIGEKCWRpc3BhdGNoaW5nIGNhbGwsIHRoZSBvYmplY3QgcGFyYW1ldGVyLCBhY3R1YWwgcGFyYW1ldGVycyBhbmQKCWNvcnJlc3BvbmRpbmcgZm9ybWFscy4KCShNYWtlX0luaXRpYWxpemVfUHJvdGVjdGlvbik6IENvcnJlY3QgbG9naWMgb2YgcHJvdGVjdGlvbiBpbml0aWFsaXphdGlvbgoJd2hlbiB0aGVyZSBpcyBhIHByb3RlY3RlZCB0eXBlIHRoYXQgaW1wbGVtZW50cyBhIGxpbWl0ZWQgaW50ZXJmYWNlLgoJKFBhcmFtZXRlcl9CbG9ja19QYWNrKTogUG9wdWxhdGUgYSB3cmFwcGVkIHBhcmFtZXRlciBibG9jayB3aXRoIHRoZQoJdmFsdWVzIG9mIGFjdHVhbCBwYXJhbWV0ZXJzLgoJKFBhcmFtZXRlcl9CbG9ja19VbnBhY2spOiBSZXRyaWV2ZSB0aGUgdmFsdWVzIGZyb20gYSB3cmFwcGVkIHBhcmFtZXRlcgoJYmxvY2sgYW5kIGFzc2lnbiB0aGVtIHRvIHRoZSBvcmlnaW5hbCBhY3R1YWwgcGFyYW1ldGVycy4KCgkqIGV4cF9jaDkuYWRzIChTdWJwcm9ncmFtX1Byb3RlY3Rpb25fTW9kZSk6IE5ldyB0eXBlLgoJKEJ1aWxkX1Byb3RlY3RlZF9TdWJfU3BlY2lmaWNhdGlvbik6IENoYW5nZSB0aGUgdHlwZSBhbmQgbmFtZSBvZiB0aGUKCWxhc3QgZm9ybWFsIHRvIGFjY291bnQgZm9yIHRoZSBpbmNyZWFzZWQgdmFyaWV0eSBvZiBwcm90ZWN0aW9uIG1vZGVzLgoKCSogZWluZm8uYWRzLCBlaW5mby5hZGIgKFdhc19IaWRkZW4pOiBOZXcgYXR0cmlidXRlLiBQcmVzZW50IGluIGFsbAoJZW50aXRpZXMuIFVzZWQgdG8gc2F2ZSB0aGUgdmFsdWUgb2YgdGhlIElzX0hpZGRlbiBhdHRyaWJ1dGUgd2hlbiB0aGUKCWxpbWl0ZWQtdmlldyBpcyBpbnN0YWxsZWQuCgkoSXNfUHJpbWl0aXZlX1dyYXBwZXIsIFNldF9Jc19QcmltaXRpdmVfV3JhcHBlcik6IFJldHJpZXZlIGFuZCBjaGFuZ2UKCXRoZSBhdHRyaWJ1dGUgb2YgcHJvY2VkdXJlcyBjbGFzc2lmaWVkIGFzIGVudHJ5IHdyYXBwZXJzLgoJKFdyYXBwZWRfRW50aXR5LCBTZXRfV3JhcHBlZF9FbnRpdHkpOiBSZXRyaWV2ZSBhbmQgY2hhbmdlIHRoZSB3cmFwcGVkCgllbnRpdHkgb2YgYSBwcmltaXRpdmUgd3JhcHBlci4KCShXcml0ZV9FbnRpdHlfRmxhZ3MpOiBPdXRwdXQgdGhlIG5hbWUgYW5kIHZhbHVlIG9mIHRoZQoJSXNfUHJpbWl0aXZlX1dyYXBwZXIgYXR0cmlidXRlLgoJKFdyaXRlX0ZpZWxkMjdfTmFtZSk6IE91dHB1dCB0aGUgbmFtZSBhbmQgZW50aXR5IG9mIHRoZSBmaWVsZCBXcmFwcGVkXwoJRW50aXR5LgoJKFVuZGVybHlpbmdfVHlwZSk6IElmIHdlIGhhdmUgYW4gaW5jb21wbGV0ZSBlbnRpdHkgdGhhdCBjb21lcyBmcm9tCgl0aGUgbGltaXRlZCB2aWV3IHRoZW4gd2UgcmV0dXJuIHRoZSBVbmRlcmx5aW5nX1R5cGUgb2YgaXRzIG5vbi1saW1pdGVkCgl2aWV3IGlmIGl0IGlzIGFscmVhZHkgYXZhaWxhYmxlLgoJKEFic3RyYWN0X0ludGVyZmFjZV9BbGlhcyk6IEZsYWcgYXBwbGllcyB0byBhbGwgc3Vicm9ncmFtIGtpbmRzLAoJaW5jbHVkaW5nIG9wZXJhdG9ycy4KCShXcml0ZV9GaWVsZDI2X05hbWUpOiBBZGQgZW50cnkgZm9yIE92ZXJyaWRkZW5fT3BlcmF0aW9uCgkoT3ZlcnJpZGRlbl9PcGVyYXRpb24pOiBOZXcgYXR0cmlidXRlIG9mIGZ1bmN0aW9ucyBhbmQgcHJvY2VkdXJlcy4KCgkqIGV4cF9kaXNwLmFkcywgZXhwX2Rpc3AuYWRiIChEZWZhdWx0X1ByaW1fT3BfUG9zaXRpb24pOiBSZXR1cm4gYQoJcHJlZGVmaW5lZCBwb3NpdGlvbiBpbiB0aGUgZGlzcGF0Y2ggdGFibGUgZm9yIHRoZSBwcmltaXRpdmUgb3BlcmF0aW9ucwoJdXNlZCBpbiBkaXNwYXRjaGluZyBzZWxlY3RzLgoJKEluaXRfUHJlZGVmaW5lZF9JbnRlcmZhY2VfUHJpbWl0aXZlcyk6IFJlbW92ZSB0aGUgaGFyZGNvZGVkIG51bWJlciBvZgoJcHJlZGVmaW5lZCBwcmltaXRpdmUgb3BlcmF0aW9ucyBhbmQgcmVwbGFjZSBpdCB3aXRoCglEZWZhdWx0X1ByaW1fT3BfQ291bnQuCgkoTWFrZV9EaXNwX0FzeW5jaHJvbm91c19TZWxlY3RfU3BlYywgTWFrZV9EaXNwX0NvbmRpdGlvbmFsX1NlbGVjdF9TcGVjLAoJTWFrZV9EaXNwX0dldF9QcmltX09wX0tpbmRfU3BlYywgTWFrZV9EaXNwX1RpbWVkX1NlbGVjdF9TcGVjKTogVXBkYXRlCgl0aGUgbmFtZXMgb2YgdGhlIGdlbmVyYXRlZCBwcmltaXRpdmUgb3BlcmF0aW9ucyB1c2VkIGluIGRpc3BhdGNoaW5nCglzZWxlY3RzLgoJKEluaXRfUHJlZGVmaW5lZF9JbnRlcmZhY2VfUHJpbWl0aXZlcyk6IE5vIG5lZWQgdG8gaW5oZXJpdCBwcmltaXRpdmVzIGluCgljYXNlIG9mIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcy4gVGhleSB3aWxsIGJlIGluaGVyaXQgYnkgdGhlIG9iamVjdHMKCWltcGxlbWVudGluZyB0aGUgaW50ZXJmYWNlLgoJKE1ha2VfRFQpOiBUaGVyZSBpcyBubyBuZWVkIHRvIGluaGVyaXQgdGhlIGRpc3BhdGNoIHRhYmxlIG9mIHRoZQoJYW5jZXN0b3IgaW50ZXJmYWNlIGZvciB0aGUgZWxhYm9yYXRpb24gb2YgYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzLgoJVGhlIGRpc3BhdGNoIHRhYmxlIHdpbGwgYmUgaW5oZXJpdGVkIGJ5IHRoZSBvYmplY3QgaW1wbGVtZW50aW5nIHRoZQoJaW50ZXJmYWNlLgoJKENvcHlfU2Vjb25kYXJ5X0RUcyk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKFZhbGlkYXRlX1Bvc2l0aW9uKTogSW1wcm92ZSB0aGlzIHN0YXRpYyBjaGVjayBpbiBjYXNlIG9mCglhbGlhc2VkIHN1YnByb2dyYW1zIGJlY2F1c2UgYWxpYXNlZCBzdWJwcm9ncmFtcyBtdXN0IGhhdmUKCXRoZSBzYW1lIHBvc2l0aW9uLgoJKEluaXRfUHJlZGVmaW5lZF9JbnRlcmZhY2VfUHJpbWl0aXZlcyk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgaW5pdGlhbGl6ZXMKCXRoZSBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aCBwcmVkZWZpbmVkIHByaW1pdGl2ZXMgb2YgYWxsIHRoZSBzZWNvbmRhcnkKCWRpc3BhdGNoIHRhYmxlcy4KCShCdWlsZF9Bbm9ueW1vdXNfQWNjZXNzX1R5cGUpOiBSZW1vdmVkLgoJKEV4cGFuZF9JbnRlcmZhY2VfQWN0dWFscyk6IFdpdGggdGhlIHByZXZpb3VzIGNsZWFudXAgdGhlcmUgaXMgbm8gbmVlZAoJdG8gYnVpbGQgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlLiBUaGlzIGFsbG93cyBmdXJ0aGVyIGNsZWFudXAgaW4gdGhlCgljb2RlIGdlbmVyYXRlZCBieSB0aGUgZXhwYW5kZXIuCgkoRXhwYW5kX0ludGVyZmFjZV9Db252ZXJzaW9uKTogSWYgdGhlIGFjdHVhbCBpcyBhbiBhY2Nlc3MgdHlwZSB0aGVuCglidWlsZCBhbiBpbnRlcm5hbCBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGRpc3BsYWNlbWVudC4gSWYgdGhlIGFjdHVhbAoJaXMgbnVsbCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgbnVsbCBiZWNhdXNlIG5vIGRpc3BsYWNlbWVudCBpcwoJcmVxdWlyZWQ7IG90aGVyd2lzZSBwZXJmb3JtcyBhIHR5cGUgY29udmVyc2lvbiB0aGF0IHdpbGwgYmUKCWV4cGFuZGVkIGluIHRoZSBjb2RlIHRoYXQgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGRpc3BsYWNlZCBhY3R1YWwuCgkoRXhwYW5kX0ludGVyZmFjZV9BY3R1YWxzKTogQXZvaWQgdGhlIGdlbmVyYXRpb24gb2YgdW5uZWNlc3NhcnkgdHlwZQoJY29udmVyc2lvbnMgdGhhdCBoYXZlIG5vIGVmZmVjdCBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUgYmVjYXVzZSBubwoJZGlzcGxhY2VtZW50IGlzIHJlcXVpcmVkLiBDb2RlIGNsZWFudXA7IHVzZSBsb2NhbCB2YXJpYWJsZXMgdG8KCWF2b2lkIHJlcGVhdGVkIGNhbGxzIHRvIHRoZSBzdWJwcm9ncmFtIGRpcmVjdGx5X2Rlc2lnbmF0ZWRfdHlwZSgpLgoKCSogZXhwX3V0aWwuYWRzLCBleHBfdXRpbC5hZGIgKElzX1ByZWRlZmluZWRfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKToKCUNsYXNzaWZ5IHRoZSBwcmltaXRpdmUgb3BlcmF0aW9ucyB1c2VkIGluIGRpc3BhdGNoaW5nIHNlbGVjdHMgYXMKCXByZWRlZmluZWQuCgkoSW1wbGVtZW50c19MaW1pdGVkX0ludGVyZmFjZSk6IERldGVybWluZSB3aGV0aGVyIHNvbWUgdHlwZSBlaXRoZXIKCWRpcmVjdGx5IGltcGxlbWVudHMgYSBsaW1pdGVkIGludGVyZmFjZSBvciBleHRlbmRzIGEgdHlwZSB0aGF0CglpbXBsZW1lbnRzIGEgbGltaXRlZCBpbnRlcmZhY2UuCgkoQnVpbGRfVGFza19JbWFnZV9GdW5jdGlvbik6IENoYW5nZSBTdWJ0eXBlX01hcmsgdG8gUmVzdWx0X0RlZmluaXRpb24uCgkoRXhwYW5kX1N1YnR5cGVfRnJvbV9FeHByKTogRG8gbm90IGJ1aWxkIGFjdHVhbCBzdWJ0eXBlIGlmIHRoZQoJZXhwcmVzc2lvbiBpcyBsaW1pdGVkLgoJKEZpbmRfSW50ZXJmYWNlX1RhZyk6IEFkZCBjb2RlIHRvIGhhbmRsZSBjbGFzcy13aWRlIHR5cGVzIGFuZAoJZW50aXRpZXMgZnJvbSB0aGUgbGltaXRlZC12aWV3LgoKCSogcnRzZmluZC5hZHM6IEFkZCBlbnRyaWVzIGluIFJFX0lkIGFuZCBSRV9Vbml0X1RhYmxlIGZvcgoJR2V0X0VudHJ5X0luZGV4LCBHZXRfUHJpbV9PcF9LaW5kLCBQT0tfRnVuY3Rpb24sIFBPS19Qcm9jZWR1cmUsCglQT0tfUHJvdGVjdGVkX0VudHJ5LCBQT0tfUHJvdGVjdGVkX0Z1bmN0aW9uLCBQT0tfUHJvdGVjdGVkX1Byb2NlZHVyZSwKCVBPS19UYXNrX0VudHJ5LCBQT0tfVGFza19Qcm9jZWR1cmUsIFByaW1fT3BfS2luZCwgU2V0X0VudHJ5X0luZGV4LAoJU2V0X1ByaW1fT3BfS2luZC4KCgkqIHNlbV9jaDkuYWRiIChBbmFseXplX1RyaWdnZXJpbmdfQWx0ZXJuYXRpdmUpOiBDaGVjayBmb3IgbGVnYWwgdHlwZQoJb2YgcHJvY2VkdXJlIG5hbWUgb3IgcHJlZml4IHRoYXQgYXBwZWFycyBhcyBhIHRyaWdnZXIgaW4gYSB0cmlnZ2VyaW5nCglhbHRlcm5hdGl2ZS4KCgkqIHVpbnRwLmFkczogSW50cm9kdWNlIGNvbnN0YW50cyBVaW50XzExIGFuZCBVaW50XzEzLgoKMjAwNS0wOS0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy10YXRhYXQuYWRiLCBhLXRhc2F0dC5hZGI6CglSZXBsYWNlIGNhbGxzIHRvIERlZmVyL1VuZGVmZXJfQWJvcnRpb24gYnkgRGVmZXIvVW5kZWZlcl9BYm9ydC4KCgkqIHMtdGFzaW5pLmFkcywgcy10YXNpbmkuYWRiIChEZWZlcl9BYm9ydGlvbiwgVW5kZWZlcl9BYm9ydGlvbik6IE1vdmVkCgl0aGVzZSBwcm9jZWR1cmVzIHRvIGJvZHksIGFuZCByZW5hbWVkIEFib3J0X0RlZmVyLCBBYm9ydF9VbmRlZmVyLgoJKEdldF9FeGNfU3RhY2tfQWRkciwgU2V0X0V4Y19TdGFja19BZGRyKTogUmVtb3ZlZCwgbm8KCWxvbmdlciB1c2VkLgoKMjAwNS0wOS0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoJICAgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvcC12eHdvcmtzLmFkYjoKCU1vdmUgd2l0aCBjbGF1c2VzIG91dHNpZGUgV2FybmluZ3MgT2ZmIG5vdyB0aGF0IGRlcGVuZGVudCB1bml0cyBhcmUKCVByZWVsYWJvcmF0ZS4KCShJbml0aWFsaXplKTogQ2FsbCBJbnRlcnJ1cHRfTWFuYWdlbWVlbnQuSW5pdGlhbGl6ZSB0byBlbnN1cmUgcHJvcGVyCglpbml0aWFsaXphdGlvbiBvZiB0aGlzIHVuaXQuCgkoU3BlY2lmaWMpOiBBZGQgbmV3IHByb2NlZHVyZXMgSW5pdGlhbGl6ZSBhbmQgRGVsZXRlIHNvIHRoYXQgdGhpcwoJcGFja2FnZSBjYW4gYmUgdXNlZCBmb3IgVnhXb3JrcyA1LnggYW5kIDYueAoJKEFUQ0JfS2V5LCBBVENCX0tleV9BZGRyZXNzKTogTW92ZWQgdG8gU3BlY2lmaWMgcGFja2FnZSBib2R5IHRvIGhpZGUKCWRpZmZlcmVuY2VzIGJldHdlZW4gVnhXb3JrcyA1LnggYW5kIDYueAoJTWlub3IgcmVmb3JtYXR0aW5nLgoJKFRpbWVkX0RlbGF5KTogUmVtb3ZlIGNhbGxzIHRvIERlZmVyL1VuZGVmZXJfQWJvcnQsIG5vdyBwZXJmb3JtZWQgYnkKCWNhbGxlci4KCVVzZSBvbmx5IFByZWVsYWJvcmF0ZS1jb21wYXRpYmxlIGNvbnN0cnVjdHMuCgoJKiBzLXRwb3BzcC12eHdvcmtzLmFkYiAoQVRCQ19LZXksIEFUQ0JfS2V5X0FkZHIpOiBNb3ZlZCBmcm9tCglQcmltaXRpdmVzLk9wZXJhdGlvbnMuCgkoRGVsZXRlLCBJbml0aWFsaXplKTogTmV3IHByb2NlZHVyZXMuCgoJKiBzLW9zaW50ZS12eHdvcmtzLmFkYjogQm9keSB1c2VkIHRvIGhhbmRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCglWeFdvcmtzIDUueCBhbmQgNi54Cgkoa2lsbCwgU2V0X1RpbWVfU2xpY2UsIFZYX0ZQX1RBU0spOiBOZXcgZnVuY3Rpb25zLgoKCSogcy1vc2ludGUtdnh3b3Jrcy5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCUFkZCBWeFd3b3JrcyA2Lnggc3BlY2lmaWMgZnVuY3Rpb25zIChvbmx5IGNhbGxlZCBmcm9tIFZ4V29ya3MgNiBmaWxlcykuCgkoVlhfRlBfVEFTSyk6IE5vdyBhIGZ1bmN0aW9uLCB0byBoYW5kbGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBWeFdvcmtzIDUKCWFuZCA2LgoJKFNldF9UaW1lX1NsaWNlKTogTmV3IGZ1bmN0aW9uLCByZXBsYWNpbmcga2VybmVsdGltZVNsaWNlIHRvIHNoYXJlIGNvZGUKCWJldHdlZW4gVnh3b3JrcyA1IGFuZCA2LgoJKHRhc2tMb2NrLCB0YXNrVW5sb2NrKTogUmVtb3ZlZWQsIG5vIGxvbmdlciB1c2VkLgoKCSogYWRhaW50LmM6IFRoZSB3YWl0LmggaGVhZGVyIGlzIG5vdCBsb2NhdGVkIGluIHRoZSBzeXMgZGlyZWN0b3J5IG9uCglWeFdvcmtzIHdoZW4gdXNpbmcgUlRQcy4KCShfX2duYXRfc2V0X2Vudl92YWx1ZSk6IFVzZSBzZXRlbnYgaW5zdGVhZCBvZiBwdXRlbnYgb24gVnhXb3JrcyB3aGVuCgl1c2luZyBSVFBzLgoJKF9fZ25hdF9kdXApOiBkdXAgaXMgYXZhaWxhYmxlIG9uIFZ4d29ya3Mgd2hlbiB1c2luZyBSVFBzLgoJKF9fZ25hdF9kdXAyKTogZHVwMiBpcyBhdmFpbGFibGUgb24gVnh3b3JrcyB3aGVuIHVzaW5nIFJUUHMuCgoJKiBjYWwuYzogVXNlIHRoZSBoZWFkZXIgdGltZS5oIGZvciBWeHdvcmtzIDYuMCB3aGVuIHVzaW5nIFJUUHMuCgoJKiBleHBlY3QuYzogVGhlIHdhaXQuaCBoZWFkZXIgaXMgbm90IGxvY2F0ZWQgaW4gdGhlIHN5cyBkaXJlY3Rvcnkgb24KCVZ4V29ya3Mgd2hlbiB1c2luZyBSVFBzLgoKMjAwNS0wOS0wMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctc29jY29uLXZtcy5hZGI6IFJlbmFtZWQgdG8gZy1zb2Njb24tdm1zLmFkcwoKCSogZy1zb2Njb24tdm1zLmFkczogUmVuYW1lZCBmcm9tIGctc29jY29uLXZtcy5hZGIKCgkqIGctc29jY29uLmFkcywgZy1zb2Njb24tdHJ1NjQuYWRzLCBnLXNvY2Nvbi1haXguYWRzLAoJZy1zb2Njb24tZGFyd2luLmFkcywgZy1zb2Njb24taXJpeC5hZHMsIGctc29jY29uLWhwdXguYWRzLAoJZy1zb2Njb24tc29sYXJpcy5hZHMsIGctc29jY29uLW1pbmd3LmFkcywgZy1zb2Njb24tdnh3b3Jrcy5hZHMsCglnLXNvY2Nvbi1mcmVlYnNkLmFkczogQWRkIG5ldyBjb25zdGFudHM6CgkgSVBfTVVMVElDQVNUX0lGCgkgU09fUkNWVElNRU8vU09fU05EVElNRU8KCSBJT1ZfTUFYCgoJKiBnZW4tc29jY29uLmM6CglNb3ZlIGFsbCB0YXJnZXQtc3BlY2lmaWMgZmlsZSBpbmNsdXNpb25zIGFuZCBtYWNybyBkZWZpbml0aW9ucyB0bwoJZ3NvY2tldC5oLCBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBhbnkgQyBjb2RlIGluIHNvY2tldC5jIHdpbGwgc2VlIGEKCXNldCBvZiBjb25zdGFudHMgdGhhdCBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGNvbnRlbnRzIG9mIGctc29jY29uLmFkcy4KCgkqIGdzb2NrZXQuaDogQ29kZSBpbXBvcnRlZCBmcm9tIGdlbi1zb2Njb24uYzoKCU1vdmUgYWxsIHRhcmdldC1zcGVjaWZpYyBmaWxlIGluY2x1c2lvbnMgYW5kIG1hY3JvIGRlZmluaXRpb25zIHRvCglnc29ja2V0LmgsIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGFueSBDIGNvZGUgaW4gc29ja2V0LmMgd2lsbCBzZWUgYSBzZXQKCW9mIGNvbnN0YW50cyB0aGF0IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgY29udGVudHMgb2YgZy1zb2Njb24uYWRzLgoJVGhpcyBjaGFuZ2UgYWxzbyBtYWtlcyBnZW4tc29jY29uIHNlbGYtY29udGFpbmVkIChyZW1vdmluZyBkZXBlbmRlbmNpZXMKCXVwb24gR0NDIGludGVybmFsIGhlYWRlcnMpLgoKCSogZy1zb2NrZXQuYWRiIChTZW5kX1ZlY3Rvcik6IE1ha2UgY2FsbHMgdG8gV3JpdGV2IGF0IG1vc3QgSU9WX01BWAoJaW92ZWNzIGF0IGEgdGltZS4KCShUb19JbmV0X0FkZHIpOiBOb3cgYSBwcm9jZWR1cmUgaW5zdGVhZCBvZiBhIGZ1bmN0aW9uLCBtb3JlIGVmZmljaWVudC4KCgkqIHNvY2tldC5jOiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGZuYW1lLXNmLmFkYiwgbWxpYi10Z3QuYWRzLAoJYmFja19lbmQuYWRiLCBjYXNpbmcuYWRiLCBnLWRlYnBvby5hZGIsIGctZXhjYWN0LmFkYiwgZy1zcGlwYXQuYWRiLAoJZy1zcGlwYXQuYWRzLCBnLXRocmVhZC5hZGIsIGxpYi1saXN0LmFkYiwgbWFrZXV0bC5hZGIsIG1saWIuYWRiLAoJb3NpbnQuYWRiLCBwYXItY2gxMC5hZGIsIHBhci1sb2FkLmFkYiwgcHJlcC5hZGIsIHByai5hZGIsIHByai1hdHRyLmFkcywKCXByai1lbnYuYWRzLCBwcmotZXJyLmFkYiwgcHJqLWVyci5hZHMsIHByai1leHQuYWRiLCBwcmotZXh0LmFkcywKCXByai1tYWtyLmFkYiwgcHJqLW1ha3IuYWRzLCBwcmotcGFycy5hZHMsIHByai1wYXJ0LmFkYiwgcHJqLXN0cnQuYWRiLAoJcHJqLXRyZWUuYWRzLCBwcmotdXRpbC5hZHMsIHNlbV9kaXN0LmFkYiwgc2lucHV0LWMuYWRzLCBzaW5wdXQtbC5hZHMsCglzaW5wdXQtcC5hZHMsIHN0eWxlZy1jLmFkcywgeHJfdGFibHMuYWRiLCBwcmotYXR0ci1wbS5hZHMsCgltYWtlZ3ByLmFkYjogUmVtb3ZlIHJlZHVuZGFudCB1c2VfY2xhdXNlcy4KCjIwMDUtMDktMDEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtc3RvZWxlLmFkcywgcy1zdG9wb28uYWRzLCBzLXN0cmF0dC5hZHMsIHMtc3Ryb3BzLmFkcywgcy11bnN0eXAuYWRzLAoJcy12YWxib28uYWRzLCBzLXZhbGNoYS5hZHMsIHMtdmFsZGVjLmFkcywgcy12YWxlbnUuYWRzLCBzLXZhbGludC5hZHMsCglzLXZhbGxsZC5hZHMsIHMtdmFsbGxpLmFkcywgcy12YWxsbHUuYWRzLCBzLXZhbHJlYS5hZHMsIHMtdmFsdW5zLmFkcywKCXMtdmFsdXRpLmFkcywgcy12YWx3Y2guYWRzLCBzLXZlYm9vcC5hZHMsIHMtdmVjdG9yLmFkcywgcy12ZXJjb24uYWRzLAoJcy13Y2hjbnYuYWRzLCBzLXdjaGNvbi5hZHMsIHMtd2NoamlzLmFkcywgcy13Y2hzdHcuYWRzLCBzLXdjaHd0cy5hZHMsCglzLXdpZGJvby5hZHMsIHMtd2lkY2hhLmFkcywgcy13aWRlbnUuYWRzLCBzLXdpZGxsaS5hZHMsIHMtd2lkbGx1LmFkcywKCXMtd2lkd2NoLmFkcywgcy13d2RjaGEuYWRzLCBzLXd3ZGVudS5hZHMsIHMtd3dkd2NoLmFkcywgc3lzdGVtLmFkcywKCXRhYmxlLmFkcywgdHlwZXMuYWRzLCBzeXN0ZW0tdm1zXzY0LmFkcywgcy1jcnRsLXZtczY0LmFkcywKCXMtYWRkb3BlLmFkcywgc3lzdGVtLWRhcndpbi1wcGMuYWRzLCBzeXN0ZW0tdnh3b3Jrcy14ODYuYWRzLAoJcy12eHdvcmsteDg2LmFkcywgc3lzdGVtLWxpbnV4LXBwYy5hZHMsIGktdnh3b3JrLXg4Ni5hZHMsCglhLW51bWF1eC1kYXJ3aW4uYWRzLCBhLWNyYnRnby5hZHMsIGEtY3JidGdrLmFkcywgYS1jcmJsdHIuYWRzLAoJYS1jb3BybnUuYWRzLCBhLWNvbnZlYy5hZHMsIGEtY29udGFpLmFkcywgYS1jb2ludmUuYWRzLCBhLWNvaGF0YS5hZHMsCglhLWNvaGFtYS5hZHMsIGEtY2loYW1hLmFkcywgYS1jaWRsbGkuYWRzLCBhLWNkbGlsaS5hZHMsCglhLW51bWF1eC1saWJjLXg4Ni5hZHMsIGEtbnVtYXV4LXZ4d29ya3MuYWRzLCBzeXN0ZW0tbGludXgtaWE2NC5hZHMsCglzeXN0ZW0tZnJlZWJzZC14ODYuYWRzLCBzeXN0ZW0tdW5peHdhcmUuYWRzLCBzeXN0ZW0tbHlueG9zLXBwYy5hZHMsCglzeXN0ZW0tbHlueG9zLXg4Ni5hZHMsIHN5c3RlbS1saW51eC14ODZfNjQuYWRzLCBzeXN0ZW0tdHJ1NjQuYWRzLAoJcy12eHdvcmstYWxwaGEuYWRzLCBzeXN0ZW0tYWl4LmFkcywgc3lzdGVtLXZ4d29ya3Mtc3BhcmN2OS5hZHMsCglzeXN0ZW0tc29sYXJpcy14ODYuYWRzLCBzeXN0ZW0taXJpeC1vMzIuYWRzLCBzeXN0ZW0taXJpeC1uMzIuYWRzLAoJcy1wYXJhbWUtaHB1eC5hZHMsIHN5c3RlbS1ocHV4LmFkcywgc3lzdGVtLXZ4d29ya3MtbTY4ay5hZHMsCglzLXZ4d29yay1tNjhrLmFkcywgc3lzdGVtLWxpbnV4LXg4Ni5hZHMsIHN5c3RlbS12eHdvcmtzLW1pcHMuYWRzLAoJcy12eHdvcmstbWlwcy5hZHMsIHN5c3RlbS1vczIuYWRzLCBzeXN0ZW0taW50ZXJpeC5hZHMsCglzLXZ4d29yay1wcGMuYWRzLCBzeXN0ZW0tc29sYXJpcy1zcGFyYy5hZHMsIHMtdnh3b3JrLXNwYXJjdjkuYWRzLAoJc3lzdGVtLXNvbGFyaXMtc3BhcmN2OS5hZHMsIHMtcGFyYW1lLXZtcy5hZHMsIHN5c3RlbS12bXMuYWRzLAoJcy1vc2ludGUtbWluZ3cuYWRzLCBzeXN0ZW0tbWluZ3cuYWRzLCBzLXBhcmFtZS12bXMtcmVzdHJpY3QuYWRzLAoJc3lzdGVtLXZtcy16Y3guYWRzLCBzLXBhcmFtZS1hZTY1My5hZHMsIHN5c3RlbS12eHdvcmtzLXBwYy5hZHMsCglzLXBhcmFtZS12eHdvcmtzLmFkcywgc3lzdGVtLXZ4d29ya3MtYWxwaGEuYWRzLCBpbnRlcmZhYy12bXMuYWRzLAoJYS1udW1hdXgteDg2LmFkcywgYS1hc3RhY28uYWRzLCBhLWNoYWhhbi5hZHMsIGEtY2hhcmFjLmFkcywKCWEtY2hsYXQxLmFkcywgYS1jaGxhdDkuYWRzLCBhLWNvbGlyZS5hZGIsIGEtY29saXJlLmFkcywgYS1jb21saW4uYWRzLAoJYS1jd2lsYTEuYWRzLCBhLWN3aWxhOS5hZHMsIGFkYS5hZHMsIGEtZGVjaW1hLmFkcywgYS1leGV4dHIuYWRiLAoJYS1maWxpY28uYWRzLCBhLWZpbmFsaS5hZHMsIGEtaW50ZXJyLmFkcywgYS1pb2V4Y2UuYWRzLCBhLWR5bnByaS5hZHMsCglhLW5nY2VmdS5hZHMsIGEtbmdjZWZ1LmFkYiwgYS1uZ2NvdHkuYWRiLCBhLW5nY290eS5hZHMsIGEtbmdlbGZ1LmFkcywKCWEtbnVkaXJhLmFkYiwgYS1udWRpcmEuYWRzLCBhLW51ZmxyYS5hZGIsIGEtbnVtYXV4LmFkcywgYS1udW1lcmkuYWRzLAoJYS1yZWF0aW0uYWRiLCBhLXN0bWFjby5hZHMsIGEtc3RvcmlvLmFkcywgYS1zdHJib3UuYWRzLCBhLXN0cmVhbS5hZHMsCglhLXN0cmZpeC5hZHMsIGEtc3RyaW5nLmFkcywgYS1zdHJtYXAuYWRzLCBhLXN0cnNlYS5hZHMsIGEtc3Ryc3VwLmFkcywKCWEtc3RydW5iLmFkcywgYS1zdHVuYXUuYWRzLCBhLXN0d2liby5hZHMsIGEtc3R3aWZpLmFkcywgYS1zdHdpbWEuYWRzLAoJYS1zdHdpc2UuYWRzLCBhLXN0d2lzdS5hZHMsIGEtc3R3aXVuLmFkcywgYS1zd213Y28uYWRzLCBhLXRleHRpby5hZHMsCgljc2V0cy5hZHMsIGRlYnVnLmFkcywgZGVjLmFkcywgZy1jdXJleGMuYWRzLCBnZXRfdGFyZy5hZHMsCglnLWV4Y2VwdC5hZHMsIHN5c3RlbS1saW51eC1ocHBhLmFkcywgYS1jaGFjb24uYWRzLCBhLXdpZGNoYS5hZHMsCglhLXpjaGFyYS5hZHMsIHN5c3RlbS1ocHV4LWlhNjQuYWRzLCBhLWNpb3JtYS5hZHMsIGEtY29vcm1hLmFkcywKCWEtY2lvcm11LmFkcywgYS1jb29ybXUuYWRzLCBhLXJidGdzby5hZHMsIGEtY2h6bGExLmFkcywgYS1jaHpsYTkuYWRzLAoJYS1zdHpib3UuYWRzLCBhLXN0emZpeC5hZHMsIGEtc3R6bWFwLmFkcywgYS1zdHpzZWEuYWRzLCBhLXN0enN1cC5hZHMsCglhLXN0enVuYi5hZHMsIGEtc3d1bmF1LmFkcywgYS1zenVuYXUuYWRzLCBnbmF0LmFkcywgZy1yZWdwYXQuYWRzLAoJZy1zcGVjaGUuYWRzLCBnLXNwaXRiby5hZHMsIGctdGFibGUuYWRzLCBnLXRhc2xvYy5hZHMsIGctdHJhc3ltLmFkcywKCWktYy5hZHMsIGktY3BvaW50LmFkcywgaS1jcHAuYWRzLCBpLWNzdHJpbi5hZHMsIGktZm9ydHJhLmFkcywKCWludGVyZmFjLmFkcywgaS1vczJlcnIuYWRzLCBpLW9zMmxpYi5hZHMsIGktb3Myc3luLmFkcywgaS1vczJ0aHIuYWRzLAoJaS12eHdvcmsuYWRzLCBvdXRwdXQuYWRzLCBzLWFyaXQ2NC5hZHMsIHMtYXRhY2NvLmFkcywgcy1ib2Fyb3AuYWRzLAoJcy1jYXN1dGkuYWRzLCBzLWNydGwuYWRzLCBzLWV4Y3RhYi5hZHMsIHMtZXhuaW50LmFkcywgcy1leG5sbGYuYWRzLAoJcy1leG5sbGkuYWRzLCBzLWV4cGludC5hZHMsIHMtZXhwbGxpLmFkcywgcy1leHBsbHUuYWRzLCBzLWV4cG1vZC5hZHMsCglzLWV4cHVucy5hZHMsIHMtZmF0Zmx0LmFkcywgcy1mYXRnZW4uYWRzLCBzLWZhdGxmbC5hZHMsIHMtZmF0bGxmLmFkcywKCXMtZmF0c2ZsLmFkcywgcy1maW5pbXAuYWRzLCBzLWZpbnJvby5hZHMsIHMtZm9yZS5hZHMsIHMtZ2V2ZW9wLmFkcywKCXMtaHRhYmxlLmFkcywgcy1pbWdiaXUuYWRzLCBzLWltZ2Jvby5hZHMsIHMtaW1nY2hhLmFkcywgcy1pbWdkZWMuYWRzLAoJcy1pbWdlbnUuYWRzLCBzLWltZ2ludC5hZHMsIHMtaW1nbGxiLmFkcywgcy1pbWdsbGQuYWRzLCBzLWltZ2xsaS5hZHMsCglzLWltZ2xsdS5hZHMsIHMtaW1nbGx3LmFkcywgcy1pbWdyZWEuYWRzLCBzLWltZ3Vucy5hZHMsIHMtaW1nd2NoLmFkcywKCXMtaW1nd2l1LmFkcywgcy1pby5hZHMsIHMtbWFjY29kLmFkcywgcy1tYW50aXMuYWRzLCBzLW1lbWNvcC5hZHMsCglzLXBhY2swMy5hZHMsIHMtcGFjazA1LmFkcywgcy1wYWNrMDYuYWRzLCBzLXBhY2swNy5hZHMsIHMtcGFjazA5LmFkcywKCXMtcGFjazEwLmFkcywgcy1wYWNrMTEuYWRzLCBzLXBhY2sxMi5hZHMsIHMtcGFjazEzLmFkcywgcy1wYWNrMTQuYWRzLAoJcy1wYWNrMTUuYWRzLCBzLXBhY2sxNy5hZHMsIHMtcGFjazE4LmFkcywgcy1wYWNrMTkuYWRzLCBzLXBhY2syMC5hZHMsCglzLXBhY2syMS5hZHMsIHMtcGFjazIyLmFkcywgcy1wYWNrMjMuYWRzLCBzLXBhY2syNC5hZHMsIHMtcGFjazI1LmFkcywKCXMtcGFjazI2LmFkcywgcy1wYWNrMjcuYWRzLCBzLXBhY2syOC5hZHMsIHMtcGFjazI5LmFkcywgcy1wYWNrMzAuYWRzLAoJcy1wYWNrMzEuYWRzLCBzLXBhY2szMy5hZHMsIHMtcGFjazM0LmFkcywgcy1wYWNrMzUuYWRzLCBzLXBhY2szNi5hZHMsCglzLXBhY2szNy5hZHMsIHMtcGFjazM4LmFkcywgcy1wYWNrMzkuYWRzLCBzLXBhY2s0MC5hZHMsIHMtcGFjazQxLmFkcywKCXMtcGFjazQyLmFkcywgcy1wYWNrNDMuYWRzLCBzLXBhY2s0NC5hZHMsIHMtcGFjazQ1LmFkcywgcy1wYWNrNDYuYWRzLAoJcy1wYWNrNDcuYWRzLCBzLXBhY2s0OC5hZHMsIHMtcGFjazQ5LmFkcywgcy1wYWNrNTAuYWRzLCBzLXBhY2s1MS5hZHMsCglzLXBhY2s1Mi5hZHMsIHMtcGFjazUzLmFkcywgcy1wYWNrNTQuYWRzLCBzLXBhY2s1NS5hZHMsIHMtcGFjazU2LmFkcywKCXMtcGFjazU3LmFkcywgcy1wYWNrNTguYWRzLCBzLXBhY2s1OS5hZHMsIHMtcGFjazYwLmFkcywgcy1wYWNrNjEuYWRzLAoJcy1wYWNrNjIuYWRzLCBzLXBhY2s2My5hZHMsIHMtcGFyYW1lLmFkcywgcy1wb29nbG8uYWRzLCBzLXBvb2xvYy5hZHMsCglzLXBvb3Npei5hZHMsIHMtcG93dGFiLmFkcywgcy1wdXJleGMuYWRzLCBzLXNvcGNvMy5hZHMsIHMtc29wY280LmFkcywKCXMtc29wY281LmFkczogTWlub3IgcmVmb3JtYXR0aW5nOiByZWluZGVudCBwcmFnbWEgUHVyZS9QcmVlbGFib3JhdGUKCWFuZCBhbHdheXMgdXNlIHRoZSBubyBwYXJhbWV0ZXIgZm9ybSBmb3IgY29uc2lzdGVuY3kuCgoJKiBnbmF0LXN0eWxlLnRleGk6IERvY3VtZW50IHJ1bGVzIGFib3V0IFByZWVsYWJvcmF0ZS9QdXJlIHByYWdtYXMuCgoyMDA1LTA5LTAxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGJpbmRlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgkoRmluZF9FbGFiX09yZGVyKTogT3V0cHV0IHdhcm5pbmcgaWYgLXAgdXNlZCB3aXRoIHN0YXRpYyBlbGFiIG9yZGVyCgoyMDA1LTA5LTAxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGNoZWNrcy5hZGIgKENoZWNrX05lZWRlZCk6IE5ldyBwcm9jZWR1cmUsIGRlYWxzIHdpdGggcmVtb3ZpbmcgY2hlY2tzCgliYXNlZCBvbiBhbmFseXNpcyBvZiBzaG9ydC1jaXJjdWl0ZWQgZm9ybXMuIEFsc28gZ2VuZXJhdGVzIHdhcm5pbmdzIGZvcgoJaW1wcm9wZXIgdXNlIG9mIG5vbi1zaG9ydC1jaXJjdWl0ZWQgZm9ybXMuCglDb2RlIGNsZWFuIHVwcy4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS16dGV4aW8uYWRiLCBhLXRleHRpby5hZGIsIGEtd2l0ZWlvLmFkYjogUmVwbGFjZSBiYWQgcmFuZ2UgY2hlY2tzCgl3aXRoICdWYWxpZCB0ZXN0cy4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXJyb3V0LmFkcywgZXJyb3V0LmFkYiAoRml4IEVycm9yX01zZ19GKTogRml4IGltcGxlbWVudGF0aW9uIHRvIG1lZXQKCXNwZWMuCglJbXBsZW1lbnQgbmV3IGluc2VydGlvbiBjaGFyIDwgKGNvbmRpdGlvbmFsIHdhcm5pbmcpCgkqIGVycnV0aWwuYWRiLCBlcnJvdXRjLmFkYjogSW1wbGVtZW50IG5ldyBpbnNlcnRpb24gY2hhciA8CgkoY29uZGl0aW9uYWwgd2FybmluZykuCgkqIHNlbV9lbGFiLmFkYiwgcHJqLWRlY3QuYWRiLCBlcnJvdXRjLmFkcywgZXJyX3ZhcnMuYWRzCgkoRXJyb3JfTXNnX1dhcm4pOiBOZXcgdmFyaWFibGUgZm9yIDwgaW5zZXJ0aW9uIGNoYXIuCgkqIHByai1ubXNjLmFkYjogSW1wbGVtZW50IG5ldyBlcnJvdXQgaW5zZXJ0aW9uIGNoYXIgPCAoY29uZGl0aW9uYWwKCXdhcm5pbmcpLgoJKENoZWNrX0Zvcl9Tb3VyY2UpOiBDaGFuZ2UgdmFsdWUgb2YgU291cmNlX0lkIG9ubHkgYWZ0ZXIgdGhlIGN1cnJlbnQKCXNvdXJjZSBoYXMgYmVlbiBkZWFsdCB3aXRoLgoKMjAwNS0wOS0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hdHRyLmFkYjogSGFuZGxlIHZheCBmcHQgZm9yICdWYWxpZCBhdHRyaWJ1dGUKCSogZXhwX3ZmcHQuYWRzLCBleHBfdmZwdC5hZGI6IChFeHBhbmRfVmF4X1ZhbGlkKTogTmV3IHByb2NlZHVyZQoJKiBzLXZhZmxvcC12bXMtYWxwaGEuYWRiLCBzLXZhZmxvcC5hZHMsIHMtdmFmbG9wLmFkYgoJKFZhbGlkX0QsIFZhbGlkX0YsIFZhbGlkX0cpOiBOZXcgZnVuY3Rpb25zCgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0NhbGwpOiBJZiBhbiBhY3R1YWwgaXMgYSBmdW5jdGlvbiBjYWxsIHJld3JpdHRlbgoJZnJvbSBvYmplY3Qgbm90YXRpb24sIHRoZSBvcmlnaW5hbCBub2RlIGlzIHVuYW5hbHl6ZWQgYW5kIGNhcnJpZXMgbm8KCXNlbWFudGljIGluZm9ybWF0aW9uLCBzbyB0aGF0IGFjY2Vzc2libGl0eSBjaGVja3MgbXVzdCBiZSBwZXJmb3JtZWQgb24KCXRoZSB0eXBlIG9mIHRoZSBhY3R1YWwgaXRzZWxmLgoJKEV4cGFuZF9OX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBDaGFuZ2UgbGFzdCBhY3R1YWwgcGFyYW1ldGVyIGZvcgoJY29tcGF0aWJpbGl0eSB3aXRoIEJ1aWxkX1Byb3RlY3RlZF9TdWJfU3BlY2lmaWNhdGlvbi4KCShDaGVja19PdmVycmlkaW5nX0luaGVyaXRlZF9JbnRlcmZhY2VzKTogQWRkIHN1cG9ydCB0byBoYW5kbGUKCW92ZXJsb2FkZWQgcHJpbWl0aXZlcy4KCShSZWdpc3Rlcl9JbnRlcmZhY2VfRFRfRW50cnkpOiBVc2UgdGhlIG5ldyBuYW1lIG9mIHRoZSBmb3JtYWwKCXRoZSB0aGUgY2FsbHMgdG8gRXhwYW5kX0ludGVyZmFjZV9UaHVuawoKCSogZXhwX2RidWcuYWRzOiBBdWdtZW50IGNvbW1lbnRzIG9uIGVuY29kaW5nIG9mIHByb3RlY3RlZCB0eXBlcyB0bwoJaW5jbHVkZSB0aGUgZ2VuZXJhdGlvbiBvZiBkaXNwYXRjaGluZyBzdWJwcm9ncmFtcyB3aGVuIHRoZSB0eXBlCglpbXBsZW1lbnRzIGF0IGxlYXN0IG9uZSBpbnRlcmZhY2UuCgoJKiBsaWIuYWRzOiBFeHRlbmQgaW5mb3JtYXRpb24gaW4gTG9hZF9TdGFjayB0byBpbmNsdWRlIHdoZXRoZXIgYSBnaXZlbgoJbG9hZCBjb21lcyBmcm9tIGEgTGltaXRlZF9XaXRoX0NsYXVzZS4KCgkqIGxpYi1sb2FkLmFkYiAoRnJvbV9MaW1pdGVkX1dpdGhfQ2hhaW4pOiBOZXcgcHJlZGljYXRlIHRvIGRldGVybWluZQoJd2hldGhlciBhIHBvdGVudGlhbCBjaXJjdWxhcml0eSBpcyBoYXJtbGVzcywgYmVjYXVzZSBpdCBpbmNsdWRlcyB1bml0cwoJbG9hZGVkIHRocm91Z2ggYSBsaW1pdGVkX3dpdGggY2xhdXNlLiBFeHRlbmRzIHByZXZpb3VzIHRyZWF0bWVudCB3aGljaAoJZGlkIG5vdCBoYW5kbGUgcHJvcGVybHkgYXJiaXRyYXJ5IGNvbWJpbmF0aW9ucyBvZiBsaW1pdGVkIGFuZAoJbm9uLWxpbWl0ZWQgY2xhdXNlcy4KCjIwMDUtMDktMDEgIE5pY29sYXMgU2V0dG9uICA8c2V0dG9uQGFkYWNvcmUuY29tPgoKCSogZXhwX2RidWcuYWRiIChHZXRfRW5jb2RlZF9OYW1lKTogRml4ZWQgYnVnIHRoYXQgY2F1c2VkIGJpYWlzZWQgdHlwZXMKCXRvIGJlIGVuY29kZWQgYXMgdHlwX19fWEJMVV9sb3dlcmJvdW5kX191cHBlcmJvdW5kIGluc3RlYWQgb2YKCXR5cF9fX1hCX2xvd2VyYm91bmRfX3VwcGVyYm91bmQuCgoyMDA1LTA5LTAxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZXhwX2Rpc3QuYWRiIChBZGRfUkFDV19UeXBlQ29kZSwgQWRkX1JBU19UeXBlQ29kZSk6IERvIG5vdCBnZW5lcmF0ZQoJZHVtbXkgYWNjZXNzIGZvcm1hbCBmb3IgUkFDVy9SQVMgVHlwZUNvZGUgVFNTLgoJKEJ1aWxkX1R5cGVDb2RlX0NhbGwpOiBEbyBub3QgZ2VuZXJhdGUgZHVtbXkgbnVsbCBhY2Nlc3MgYWN0dWFsIGZvcgoJY2FsbHMgdG8gdGhlIFR5cGVDb2RlIFRTUy4KCjIwMDUtMDktMDEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbnRyLmFkYiAoRXhwYW5kX1NvdXJjZV9OYW1lKTogRm9yIEVuY2xvc2luZ19FbnRpdHksIGdlbmVyYXRlCglmdWxseSBxdWFsaWZpZWQgbmFtZSwgdG8gZGlzdGluZ3Vpc2ggaW5zdGFuY2VzIHdpdGggdGhlIHNhbWUgbG9jYWwgbmFtZS4KCgkqIGctc291aW5mLmFkcyAoRW5jbG9zaW5nX0VudGl0eSk6IERvY3VtZW50IHRoYXQgZW50aXR5IG5hbWUgaXMgbm93CglmdWxseSBxdWFsaWZpZWQuCgoyMDA1LTA5LTAxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9wYWtkLmFkYiAoQ3JlYXRlX1BhY2tlZF9BcnJheV9UeXBlKTogUHJvcGVybHkgaGFuZGxlIHZlcnkgbGFyZ2UKCXBhY2tlZCBhcnJheXMuCgoyMDA1LTA5LTAxICBKZXJvbWUgTGFtYm91cmcgIDxsYW1ib3VyZ0BhZGFjb3JlLmNvbT4KCgkqIGctZXhwZWN0LmFkYiAoTm9uX0Jsb2NraW5nX1NwYXduKTogSW5pdGlhbGl6ZSB0aGUgZmlsdGVycyBmaWVsZCB0bwoJKEZyZWUpOiBOZXcgZGVhbGxvY2F0aW9uIHByb2NlZHVyZSBmb3IgZmlsdGVyIGVsZW1lbnRzCgkoQ2xvc2UpOiBEZWFsbG9jYXRlIGFueSBleGlzdGluZyBmaWx0ZXIgZm9yIHRoZSBjb25jZXJuZWQgY29ubmVjdGlvbgoKMjAwNS0wOS0wMSAgTGF1cmVudCBQYXV0ZXQgIDxwYXV0ZXRAYWRhY29yZS5jb20+CgoJKiBnLXBlaGFnZS5hZHMsIGctcGVoYWdlLmFkYiAoU2VsZWN0X0NoYXJfUG9zaXRpb24pOiBXaGVuIG5vIGNoYXJhY3RlcgoJcG9zaXRpb24gc2V0IGlzIHByb3ZpZGVkLCB3ZSBjb21wdXRlIG9uZSBpbiBvcmRlciB0byByZWR1Y2UgdGhlIG1heGltdW0KCWxlbmd0aCBvZiB0aGUga2V5cy4gIFRoaXMgY29tcHV0YXRpb24gZmlyc3Qgc2VsZWN0cyBhIGNoYXJhY3RlcgoJcG9zaXRpb24gYmV0d2VlbiAxIGFuZCB0aGUgbWluaW11bSBsZW5ndGggb2YgdGhlIGtleXMgaW4gb3JkZXIgdG8KCWF2b2lkIHJlZHVjaW5nIG9uZSBvZiB0aGUga2V5cyB0byBhbiBlbXB0eSBzdHJpbmcuCgkoSW5pdGlhbGl6ZSwgQ29tcHV0ZSk6IFdoZW4gdGhlIHJhdGlvIFYgdG8gSyBpcyB0b28gbG93LCB0aGUgYWxnb3JpdGhtCglkb2VzIG5vdCBjb252ZXJnZS4gVGhlIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZSBub3cgY29tZXMgd2l0aCBhCgltYXhpbXVtIG51bWJlciBvZiBpdGVyYXRpb25zIHN1Y2ggdGhhdCB3aGVuIGV4Y2VlZGVkLCBhbiBleGNlcHRpb24gaXMKCXJhaXNlZCBpbiBDb21wdXRlLiBUaGUgdXNlciBjYW4gaW5pdGlhbGl6ZSB0aGlzIHJhdGlvIHRvIGFub3RoZXIgdmFsdWUKCWFuZCB0cnkgYWdhaW4KCVJlZm9ybWF0aW5nIGFuZCB1cGRhdGVkIGhlYWRlcnMuCgoyMDA1LTA5LTAxICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBpdHlwZXMuYWRzLCBpdHlwZXMuYWRiIChDcmVhdGVfTnVsbF9FeGNsdWRpbmdfSXR5cGUpOiBOZXcgc3VicHJvZ3JhbQoJdGhhdCBnaXZlbiBhbiBlbnRpdHkgVCBjcmVhdGVzIGFuZCByZXR1cm5zIGFuIEl0eXBlIHRoYXQgZHVwbGljYXRlcyB0aGUKCWNvbnRlbnRzIG9mIFQuIFRoZSByZXR1cm5lZCBJdHlwZSBoYXMgdGhlIG51bGwtZXhjbHVzaW9uCglhdHRyaWJ1dGUgc2V0IHRvIFRydWUsIGFuZCBpdHMgRXR5cGUgYXR0cmlidXRlIHJlZmVyZW5jZXMgVAoJdG8ga2VlcCB0aGUgYXNzb2NpYXRpb24gYmV0d2VlbiB0aGUgdHdvIGVudGl0aWVzLgoJVXBkYXRlIGNvcHlyaWdodCBub3RpY2UKCgkqIHNlbV9hZ2dyLmFkYiAoQ2hlY2tfQ2FuX05ldmVyX0JlX051bGwsCglBZ2dyZWdhdGVfQ29uc3RyYWludF9DaGVja3MsIFJlc29sdmVfQWdncmVnYXRlLAoJUmVzb2x2ZV9BcnJheV9BZ2dyZWdhdGUsIFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZSk6IENvZGUgY2xlYW51cC4KCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0Fzc2lnbm1lbnQpOiBDb2RlIGNsZWFudXAuCgoyMDA1LTA5LTAxICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGxheW91dC5hZGIgKFNPX1JlZl9Gcm9tX0V4cHIpOiBDaGFuZ2UgU3VidHlwZV9NYXJrIHRvCglSZXN1bHRfRGVmaW5pdGlvbi4KCgkqIHBhci1jaDYuYWRiIChQX1N1YnByb2dyYW0pOiBIYW5kbGUgcGFyc2luZyBvZiBBY2Nlc3NfRGVmaW5pdGlvbnMgaW4KCWZ1bmN0aW9uIHNwZWNzLgoJQ2FsbCBTZXRfUmVzdWx0X0RlZmluaXRpb24gaW5zdGVhZCBvZiBTZXRfU3VidHlwZV9NYXJrLgoJKFBfU3VicHJvZ3JhbV9TcGVjaWZpY2F0aW9uKTogQWRkIHBhcnNpbmcgb2YgYW5vbnltb3VzIGFjY2VzcyByZXN1bHQKCXBsdXMgbnVsbCBleGNsdXNpb25zLiBDYWxsIFNldF9SZXN1bHRfRGVmaW5pdGlvbiBpbnN0ZWFkIG9mCglTZXRfU3VidHlwZV9NYXJrLgoKCSogcGFyLWNoMy5hZGI6IEFkZCBzdXBwb3J0IGZvciBMSU1JVEVEIE5FVyBmb3IgQWRhIDIwMDUgQUktNDE5CgkoUF9BY2Nlc3NfVHlwZV9EZWZpbml0aW9uKTogQWRkIHBhcnNpbmcgZm9yIGFuIGFub255bW91cyBhY2Nlc3MgcmVzdWx0CglzdWJ0eXBlLCBwbHVzIHBhcnNpbmcgZm9yIG51bGwgZXhjbHVzaW9ucy4gQ2FsbCBTZXRfUmVzdWx0X0RlZmluaXRpb24KCWluc3RlYWQgb2YgU2V0X1N1YnR5cGVfTWFyay4KCgkqIHNpbmZvLmFkYjogQWRkIHN1cHBvcnQgZm9yIExJTUlURUQgTkVXIGZvciBBZGEgMjAwNSBBSS00MTkKCShOdWxsX0V4Y2x1c2lvbl9QcmVzZW50KTogQWxsb3cgdGhpcyBmbGFnIGZvciBOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCgkoUmVzdWx0X0RlZmluaXRpb24pOiBOZXcgZnVuY3Rpb24gZm9yIE5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbnMuCgkoU3VidHlwZV9NYXJrKTogTm8gbG9uZ2VyIGFsbG93ZWQgZm9yIE5fQWNjZXNzX0Z1bmN0aW9uX0RlZmluaXRpb24gYW5kCglOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCgkoU2V0X051bGxfRXhjbHVzaW9uX1ByZXNlbnQpOiBBbGxvdyB0aGlzIGZsYWcgZm9yCglOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCgkoU2V0X1Jlc3VsdF9EZWZpbml0aW9uKTogTmV3IHByb2NlZHVyZSBmb3IgTl9GdW5jdGlvbl9TcGVjaWZpY2F0aW9ucy4KCShTZXRfU3VidHlwZV9NYXJrKTogTm8gbG9uZ2VyIGFsbG93ZWQgZm9yIE5fQWNjZXNzX0Z1bmN0aW9uX0RlZmluaXRpb24KCWFuZCBOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCgoJKiBzaW5mby5hZHM6IFVwZGF0ZSBncmFtbWFyIHJ1bGVzIGZvciA5LjcuMjogRW50cnlfQ2FsbF9BbHRlcm5hdGl2ZSwKCVByb2NlZHVyZV9Pcl9FbnRyeV9DYWxsOyA5LjcuNDogVHJpZ2dlcmluZ19TdGF0ZW1lbnQuCglBZGQgc3VwcG9ydCBmb3IgTElNSVRFRCBORVcgZm9yIEFkYSAyMDA1IEFJLTQxOQoJVXBkYXRlIHRoZSBzeW50YXggb2YgUEFSQU1FVEVSX0FORF9SRVNVTFRfUFJPRklMRSB0byByZWZsZWN0IHRoZSBuZXcKCXN5bnRheCBmb3IgYW5vbnltb3VzIGFjY2VzcyByZXN1bHRzLgoJUmVwbGFjZSBTdWJ0eXBlX01hcmsgZmllbGQgYnkgUmVzdWx0X0RlZmluaXRpb24gaW4KCU5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbiBhbmQgTl9BY2Nlc3NfRGVmaW5pdGlvbiBzcGVjcy4KCUFkZCBOdWxsX0V4Y2x1c2lvbl9QcmVzZW50IHRvIHNwZWMgb2YgTl9GdW5jdGlvbl9TcGVjaWZpY2F0aW9uLgoJKFJlc3VsdF9EZWZpbml0aW9uKTogTmV3IGZ1bmN0aW9uIGZvciBOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24gYW5kCglOX0FjY2Vzc19GdW5jdGlvbl9EZWZpbml0aW9uLgoJKFNldF9SZXN1bHRfRGVmaW5pdGlvbik6IE5ldyBwcm9jZWR1cmUgZm9yIE5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbiBhbmQKCU5fQWNjZXNzX0Z1bmN0aW9uX0RlZmluaXRpb24uCgoJKiBzcHJpbnQuYWRiIChTX1ByaW50X05vZGVfQWN0dWFsKTogQ2hhbmdlIFN1YnR5cGVfTWFyayBjYWxscyB0bwoJUmVzdWx0X0RlZmluaXRpb24gZm9yIGNhc2VzIG9mIE5fQWNjZXNzX0Z1bmN0aW9uX0RlZmluaXRpb24gYW5kCglOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCglQcmludCAibm90IG51bGwiIGlmIE51bGxfRXhjbHVzaW9uX1ByZXNlbnQgb24gTl9GdW5jdGlvbl9TcGVjaWZpY2F0aW9uLgoKMjAwNS0wOS0wMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBsaWItd3JpdC5hZGI6IFVwZGF0ZSBDb3B5cmlnaHQgbm90aWNlCgkoV3JpdGVfV2l0aF9MaW5lcyk6IE9uIHBsYXRmb3JtcyB3aGVyZSBmaWxlIG5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlLAoJcmVjb3JkIHRoZSBmaWxlIG5hbWVzIGluIGxvd2VyIGNhc2UuCgkoV3JpdGVfQUxJKTogRm9yIEQgbGluZXMsIG9uIHBsYXRmb3JtcyB3aGVyZSBmaWxlIG5hbWVzIGFyZQoJY2FzZS1pbnNlbnNpdGl2ZSwgcmVjb3JkIHRoZSBmaWxlIG5hbWVzIGluIGxvd2VyIGNhc2UuCgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhZGFjb3JlLmNvbT4KCgkqIGxpYi14cmVmLmFkYiAoT3V0cHV0X092ZXJyaWRkZW5fT3ApOiBEaXNwbGF5IGluZm9ybWF0aW9uIG9uCglvdmVycmlkZGVuIG9wZXJhdGlvbi4KCgkqIGxpYi14cmVmLmFkczogQWRkIGRvY3VtZW50YXRpb24gb24gb3ZlcnJpZGRlbiBvcGVyYXRpb25zLgoKCSogYWxpLmFkcyAoWHJlZl9FbnRpdHlfUmVjb3JkKTogQWRkIHN1cHBvcnQgZm9yIHN0b3JpbmcgdGhlIG92ZXJyaWRpbmcKCWluZm9ybWF0aW9uLgoKCSogYWxpLmFkYiAoR2V0X1R5cGVyZWYpOiBOZXcgc3VicHJvZ3JhbS4gQWRkcyBzdXBwb3J0IGZvciBwYXJzaW5nIHRoZQoJb3ZlcnJpZGluZyBlbnRpdHkgaW5mb3JtYXRpb24uCgoyMDA1LTA5LTAxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1saWItcHJqLmFkYiAoQ29weV9JbnRlcmZhY2VfU291cmNlcyk6IENvcHkgYWxsIGludGVyZmFjZSBzb3VyY2VzLAoJaW5jbHVkaW5nIHRob3NlIHRoYXQgYXJlIGluaGVyaXRlZC4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogb3B0LmFkcywgb3B0LmFkYjogQWRkIG5ldyBzd2l0Y2hlcyBEZWJ1Z19QcmFnbWFzX0VuYWJsZWRbX0NvbmZpZ10KCgkqIHBhci1wcmFnLmFkYjogSW1wbGVtZW50IG5ldyBwcmFnbWEgRGVidWdfUG9saWN5CgoJKiBzZW1fcHJhZy5hZGIgSW1wbGVtZW50IG5ldyBwcmFnbWEgRGVidWdfUG9saWN5CgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgUGFjayk6IGRvIG5vdCBsZXQgcHJhZ21hIFBhY2sgb3ZlcnJpZGUgYW4gZXhwbGljaXQKCUNvbXBvbmVudF9TaXplIGF0dHJpYnV0ZSBzcGVjaWZpY2F0aW9uLiBHaXZlIHdhcm5pbmcgZm9yIGlnbm9yZWQgcHJhZ21hCglQYWNrLgoKCSogc25hbWVzLmgsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEludHJvZHVjZSBlbnRyaWVzIGluCglQcmVzZXRfTmFtZXMgZm9yIE5hbWVfRGlzcF9Bc3luY2hyb25vdXNfU2VsZWN0LAoJTmFtZV9EaXNwX0NvbmRpdGlvbmFsX1NlbGVjdCwgTmFtZV9EaXNwX0dldF9QcmltX09wX0tpbmQsCglOYW1lX0Rpc3BfVGltZWRfU2VsZWN0LgoJTmV3IHByYWdtYSBEZWJ1Z19Qb2xpY3kKCgkqIHN3aXRjaC1jLmFkYiAoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMpOiBTZXQgQWRhIDIwMDUgbW9kZQoJZXhwbGljaXRseS4KCVN3aXRjaCAtZ25hdGEgYWxzbyBzZXRzIERlYnVnX1ByYWdtYXNfRW5hYmxlZAoKCSogc2VtLmFkYiwgcGFyLmFkYiAoU2V0X09wdF9Db25maWdfU3dpdGNoKTogQWRkIHBhcmFtZXRlciBNYWluX1VuaXQgdG8KCWhhbmRsZSBhbiBleHBsaWNpdCAtZ25hdGEgd2hlbiBjb21waWxpbmcgcHJlZGVmaW5lZCBmaWxlcy4KCjIwMDUtMDktMDEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLWVudi5hZGIgKFNldF9BZGFfUGF0aHMuQWRkLlJlY3Vyc2l2ZV9BZGQpOiBEbyBub3QgYWRkIHRoZSBvYmplY3QKCWRpcmVjdG9yaWVzIG9mIHByb2plY3RzIHRoYXQgaGF2ZSBubyBBZGEgc291cmNlcy4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2NuZy5hZGIgKENoZWNrX0VuZF9PZl9MaW5lKTogQ291bnQgY2hhcmFjdGVycywgcmF0aGVyIHRoYW4gYnl0ZXMKCShtYWtlcyBhIGRpZmZlcmVuY2UgZm9yIHdpZGUgY2hhcmFjdGVycykKCgkqIHdpZGVjaGFyLmFkYiwgd2lkZWNoYXIuYWRzOgoJQWRkIFdpZGVfQ2hhcl9CeXRlX0NvdW50IGZlYXR1cmUgdG8gY291bnQgY2hhcnMgdnMgYnl0ZXMKCjIwMDUtMDktMDEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2F0dHIuYWRiIChSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSAnQWRkcmVzcyk6IEZvciBhbiBpbGxlZ2FsCgknQWRkcmVzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIHdpdGggYW4gb3ZlcmxvYWRlZCBwcmVmaXgsIHVzZSB0aGUKCWxvY2F0aW9uIG9mIHRoZSBwcmVmaXggKG5vdCB0aGUgbG9jYXRpb24gb2YgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2UpIGFzCgl0aGUgZXJyb3IgbG9jYXRpb24uCgkoQW5hbHl6ZV9BdHRyaWJ1dGUsIGNhc2UgJ1NpemUpOiBUaGUgbmFtZSBvZiBhbiBlbnVtZXJhdGlvbiBsaXRlcmFsLCBvcgoJYSBmdW5jdGlvbiByZW5hbWluZyB0aGVyZW9mLCBpcyBhIHZhbGlkIHByZWZpeCBmb3IgJ1NpemUgKHdoZXJlIGl0IGlzCglpbnRlcHJldGVkIGFzIGEgZnVuY3Rpb24gY2FsbCkuCgkoU3RhdGljYWxseV9EZW5vdGVzX0VudGl0eSk6IE5ldyBwcmVkaWNhdGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlCglwcmVmaXggb2YgYW4gYXJyYXkgYXR0cmlidXRlIGNhbiBiZSBjb25zaWRlcmVkIHN0YXRpYy4KCglQUiBhZGEvOTA4NwoJKEV2YWxfQXR0cik6IEZpeCBmYWlsdXJlIHRvIGV2YWx1YXRlIENvbXBvbmVudF9TaXplIGZvcgoJdW5jb25zdHJhaW5lZCBhcnJheXMgKHJlc3VsdGVkIGluIHdyb25nIHZhbHVlIGluIHBhY2tlZCBjYXNlLCBzaW5jZQoJYmFjayBlbmQgY2Fubm90IGhhbmRsZSB0aGlzIGNhc2UpCgoyMDA1LTA5LTAxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jYXQuYWRiIChDaGVja19DYXRlZ29yaXphdGlvbl9EZXBlbmRlbmNpZXMpOiBBZGQgbW9yZSBkZXRhaWwgdG8KCWVycm9yIG1zZ3MgZm9yIG1vc3QgY29tbW9uIGNhc2VzLgoJVXNlIG5ldyBlcnJvdXQgaW5zZXJ0aW9uIGNoYXIgPCAoY29uZGl0aW9uYWwgd2FybmluZykKCjIwMDUtMDktMDEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKEluX0NoYWluKTogTW92ZWQgZnJvbSB0aGUgc2NvcGUgb2YgYSBzdWJwcm9ncmFtIHRvCgliZWNvbWUgbG9jYWwgdG8gdGhlIHdob2xlIHBhY2thZ2UuCgkoSW5zdGFsbF9MaW1pdGVkX1dpdGhlZF9Vbml0KTogSW5zdGVhZCBvZiB1bmNoYWluaW5nIHJlYWwgZW50aXRpZXMgaWYKCXRoZSBwYWNrYWdlIHdhcyBhbHJlYWR5IGFuYWx5emVkIHRoZSBuZXcgYWxnb3JpdGhtICJyZXBsYWNlcyIgdGhlCglyZWFsIGVudGl0aWVzIGJ5IHRoZSBzaGFkb3cgb25lcy4gVGhpcyBpcyByZXF1aXJlZCB0byBlbnN1cmUgdGhhdAoJdGhlIG9yZGVyIG9mIHRoZXNlIGVudGl0aWVzIGluIHRoZSBob21vbnltIGNoYWlucyBkb2VzIG5vdCBjaGFuZ2U7CglvdGhlcndpc2Ugd2UgY2FuIGhhdmUgdW5kZWZpbmVkIHJlZmVyZW5jZXMgYXQgbGlua2luZyB0aW1lIGJlY2F1c2UKCWluIGNhc2Ugb2YgY29uZmxpY3RzIHRoZSBleHRlcm5hbCBuYW1lIG9mIHRoZSBlbnRpdGllcyB3aWxsIGhhdmUKCWEgc3VmZml4IHRoYXQgZGVwZW5kcyBvbiB0aGUgb3JkZXIgb2YgdGhlIGVudGl0aWVzIGluIHRoZSBjaGFpbi4KCShSZW1vdmVfTGltaXRlZF9XaXRoX0NsYXVzZSk6IENvbXBsZW1lbnRhcnkgY29kZSB0aGF0IGNvbXBsZXRlcyB0aGUKCW5ldyBhbGdvcml0aG0gYW5kIHJlcGxhY2VzIHRoZSBzaGFkb3cgZW50aXRpZXMgYnkgdGhlIHJlYWwgb25lcy4KCShJbnN0YWxsX0xpbWl0ZWRfV2l0aGVkX1VuaXQpOiBXaGVuIHVuY2hhaW5pbmcgZW50aXRpZXMgYmVmb3JlIHRoZQoJaW5zdGFsbGF0aW9uIG9mIHRoZSBzaGFkb3cgZW50aXRpZXMsIG9ubHkgcmVndWxhciBlbnRpdGllcyBvZiB0aGUKCXB1YmxpYyBwYXJ0IG11c3QgYmUgdGFrZW4gaW50byBhY2NvdW50LiBUaGlzIGlzIHJlcXVpcmVkIHRvCglrZWVwIHRoaXMgcm91dGluZSBpbiBzeW5jaCB3aXRoIHRoZSB3b3JrIGRvbmUgYnkgUmVtb3ZlX0xpbWl0ZWRfCglXaXRoX0NsYXVzZQoJKEluc3RhbGxfTGltaXRlZF9XaXRoX0NsYXVzZSk6IEludHJvZHVjZSBpbXBsaWNpdCBsaW1pdGVkX3dpdGhfY2xhdXNlCglldmVuIGlmIHVuaXQgaXMgYW5hbHl6ZWQsIGJlY2F1c2UgdGhlIGFuYWx5c2lzIG9mIHRoZSB1bml0IGlzCglpZGVtcG90ZW50IGluIGFueSBjYXNlLCBhbmQgdGhlIGxpbWl0ZWQgdmlldyBvZiB0aGUgdW5pdCBtYXkgaGF2ZSB0bwoJYmUgaW5zdGFsbGVkIGZvciBwcm9wZXIgdmlzaWJpbGl0eS4KCShFeHBhbmRfTGltaXRlZF9XaXRoX0NsYXVzZSk6IEV2ZW4gaWYgdGhlIHVuaXQgaW4gdGhlIGltcGxpY2l0Cgl3aXRoX2NsYXVzZSBoYXMgYmVlbiBhbmFseXplZCBhbHJlYWR5LCBhIGxpbWl0ZWQgdmlldyBvZiB0aGUgcGFja2FnZQoJbXVzdCBiZSBidWlsdCBmb3IgdGhlIGN1cnJlbnQgY29udGV4dCwgaWYgaXQgZG9lcyBub3QgZXhpc3QgeWV0LgoKMjAwNS0wOS0wMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKEluc3RhbnRpYXRlX1N1YnByb2dyYW1fQm9keSk6IFdoZW4gY3JlYXRpbmcgdGhlCglkZWZpbmluZyBlbnRpdHkgZm9yIHRoZSBpbnN0YW5jZSBib2R5LCBtYWtlIGEgbmV3IGRlZmluaW5nIGlkZW50aWZpZXIKCXJhdGhlciB0aGFuIGNvcHlpbmcgdGhlIGVudGl0eSBvZiB0aGUgc3BlYywgdG8gcHJldmVudCBhY2NpZGVudGFsCglzaGFyaW5nIG9mIHRoZSBlbnRpdHkgbGlzdC4KCShDaGVja19Qcml2YXRlX1ZpZXcpOiBXaGVuIGV4Y2hhbmdpbmcgdmlld3Mgb2YgcHJpdmF0ZSB0eXBlcywgYnVpbGQgdGhlCglsaXN0IG9mIGV4Y2hhbmdlZCB2aWV3cyBhcyBhIHN0YWNrLCB0byBlbnN1cmUgdGhhdCBvbiBleGl0IHRoZSBleGNoYW5nZXMKCWFyZSB1bmRvbmUgaW4gdGhlIHByb3BlciBvcmRlci4KCShBbmFseXplX1BhY2thZ2VfSW5zdGFudGlhdGlvbiwgQW5hbHl6ZV9TdWJwcm9ncmFtX0luc3RhbnRpYXRpb24pOgoJUmVzdG9yZSB0aGUgY29tcGlsYXRpb24gZW52aXJvbm1lbnQgaW4gY2FzZSBvZiBpbnN0YW50aWF0aW9uX2Vycm9yLgoJKEFuYWx5emVfR2VuZXJpY19TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogSGFuZGxlIGNyZWF0aW9uIG9mIHR5cGUgZW50aXR5Cglmb3IgYW4gYW5vbnltb3VzIGFjY2VzcyByZXN1bHQuCgkoSW5zdGFudGlhdGVfR2VuZXJpY19TdWJwcm9ncmFtKTogU3VidHlwZV9NYXJrID0+IFJlc3VsdF9EZWZpbml0aW9uCgkoRm9ybWFsX0VudGl0eSk6IEhhbmRsZSBwcm9wZXJseSB0aGUgY2FzZSBvZiBhIGZvcm1hbCBwYWNrYWdlIHRoYXQKCWRlbm90ZXMgYSBnZW5lcmljIHBhY2thZ2UgcmVuYW1pbmcuCgoyMDA1LTA5LTAxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTMuYWRiIChBbmFseXplX0VudW1lcmF0aW9uX1JlcHJlc2VudGF0aW9uX0NsYXVzZSk6IFJlamVjdCB0aGUKCWNsYXVzZSBpZiB0aGUgYXJyYXkgYWdncmVnYXRlIGlzIHN1cnJvdW5kZWQgYnkgcGFyZW50aGVzZXMuCgoyMDA1LTA5LTAxICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gzLmFkcywgc2VtX2NoMy5hZGIgKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogR28gdG8gdGhlCgl1bmRlcmx5aW5nIHR5cGUKCXRvIGNoZWNrIGlmIGEgdHlwZSBpcyBDb25zdHJhaW5lZCBpbiBjYXNlcyByZWxhdGVkIHRvIGNvZGUgZ2VuZXJhdGlvbgoJKHJhdGhlciB0aGFuIHNlbWFudGljIGNoZWNraW5nKSBzaW5jZSBvdGhlcndpc2Ugd2UgZG8gbm90IGdlbmVyYXRlCglzaW1pbGFyIGNvZGUgZm9yIG11dGFibGUgcHJpdmF0ZSB0eXBlcyBkZXBlbmRpbmcgaWYgdGhlaXIKCWRpc2NyaW1pbmFudHMgYXJlIHZpc2libGUgb3Igbm90LgoJKENoZWNrX0Fic3RyYWN0X092ZXJyaWRpbmcpOiBEbyBub3QgY29tcGxhaW4gYWJvdXQgZmFpbHVyZSB0byBvdmVycmlkZQoJdGhlIHByaW1pdGl2ZSBvcGVyYXRpb25zIHVzZWQgaW4gZGlzcGF0Y2hpbmcgc2VsZWN0cyBzaW5jZSB0aGV5IHdpbGwKCWFsd2F5cyBiZSBvdmVycmlkZW4gYXQgdGhlIGZyZWV6ZSBwb2ludCBvZiB0aGUgdHlwZS4KCShBY2Nlc3NfRGVmaW5pdGlvbik6IFNlcGFyYXRlIG91dCBoYW5kbGluZyBmb3IgcmVzZXR0aW5nIHRoZSBzY29wZQoJb2YgYW4gYW5vbnltb3VzIGFjY2VzcyBmdW5jdGlvbiByZXN1bHQgdHlwZS4gUmV0cmlldmUgdGhlIHNjb3BlCglvZiB0aGUgYXNzb2NpYXRlZCBmdW5jdGlvbiByYXRoZXIgdGhhbiB1c2luZyBDdXJyZW50X1Njb3BlLCB3aGljaAoJZG9lcyBub3QgaGF2ZSBhIGNvbnNpc3RlbnQgdmFsdWUgKGRlcGVuZHMgb24gd2hldGhlciB3ZSdyZSBpbiB0aGUKCW1pZGRsZSBvZiBhbmFseXppbmcgZm9ybWFsIHBhcmFtZXRlcnMpLiBBZGQgPz8/IGNvbW1lbnQgYWJvdXQKCWZpbmRpbmcgYSBjbGVhbmVyIHdheSB0byBoYW5kbGUgdGhlIHNwZWNpYWwgY2FzZXMgb2Ygc2NvcGUgc2V0dGluZy4KCShQcm9jZXNzX0luY29tcGxldGVfRGVwZW5kZW50cyk6IEEgcHJvdGVjdGVkIG9wZXJhdGlvbiBpcyBuZXZlciBhCglkaXNwYXRjaGluZyBvcGVyYXRpb24gKG9ubHkgaXRzIHdyYXBwZXIgbWF5IGJlKS4KCShCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogSW4gY2FzZSBvZiB0YWdnZWQgcHJpdmF0ZSB0eXBlcyB0aGF0CglpbXBsZW1lbnQgaW50ZXJmYWNlcyBhZGQgZGVyaXZhdGlvbiBvZiBwcmVkZWZpbmVkIHByaW1pdGl2ZQoJb3BlcmF0aW9ucy4KCShEZXJpdmVfU3VicHJvZ3JhbXMpOiBSZXBsYWNlIHRoZSBJc19JbnRlcmZhY2VfRGVyaXZhdGlvbiBwYXJhbWV0ZXIKCWJ5IHR3byBwYXJhbWV0ZXJzIHRoYXQgYXJlIHVzZWQgaW4gY2FzZSBvZiBkZXJpdmF0aW9uIGZyb20gYWJzdHJhY3QKCWludGVyZmFjZSB0eXBlczogTm9fUHJlZGVmaW5lZF9QcmltcyBpcyB1c2VkIHRvIGF2b2lkIHRoZSBkZXJpdmF0aW9uCglvZiBwcmVkZWZpbmVkIHByaW1pdGl2ZXMgZnJvbSB0aGUgaW50ZXJmYWNlLCBhbmQgUHJlZGVmaW5lZAoJUHJpbXNfT25seSBpcyB1c2VkIHRvIGNvbXBsZXRlIHRoZSBkZXJpdmF0aW9uIHByZWRlZmluZWQgcHJpbWl0aXZlcwoJaW4gY2FzZSBvZiBwcml2YXRlIHRhZ2dlZCB0eXBlcyBpbXBsZW1lbnRpbmcgaW50ZXJmYWNlcy4KCUZpeCB0eXBvIGluIGNvbW1lbnRzCgkoRmluZF9JbnRlcmZhY2VfSW5fRGVzY2VuZGFudCk6IFByb3RlY3QgdGhlIGZyb250ZW5kIGFnYWluc3QKCXdyb25nIGNvZGUgd2l0aCBsYXJnZSBjaXJjdWxhcml0eSBjaGFpbnMuCgkoSXNfUHJpdmF0ZV9PdmVycmlkaW5nKTogQWRkIHN1cHBvcnQgZm9yIGVudGl0aWVzIG92ZXJyaWRpbmcgaW50ZXJmYWNlCglzdWJwcm9ncmFtcy4gVGhlIHRlc3QgZmFpbGVkIGJlY2F1c2UgRW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIG92ZXJyaWRlbgoJaW50ZXJmYWNlIHN1YnByb2dyYW1zIGFyZSBhbHdheXMgbWFya2VkIGFzIGhpZGRlbiAoYW5kIHVzZWQgdG8gYnVpbGQKCXRoZSBzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGUpOyBpbiB0aGlzIGNhc2UgdGhlIG92ZXJyaWRlbiBlbnRpdHkgaXMKCWF2YWlsYWJsZSB0aHJvdWdoIHRoZSBmaWVsZCBhYnN0cmFjdF9pbnRlcmZhY2VfYWxpYXMgKGNmLiBvdmVycmlkZV8KCWRpc3BhdGNoaW5nX29wZXJhdGlvbikKCShBY2Nlc3NfRGVmaW5pdGlvbik6IFNldCB0aGUgc2NvcGUgb2YgdGhlIHR5cGUgdG8gQ3VycmVudF9TY29wZSBmb3IgdGhlCgljYXNlIG9mIGEgZnVuY3Rpb24gd2l0aCBhbiBhbm9ueW1vdXMgYWNjZXNzIHJlc3VsdCB0eXBlLgoJKEFjY2Vzc19TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogSGFuZGxlIGNyZWF0aW9uIG9mIHRoZSB0eXBlIGVudGl0eSBmb3IKCWFuIGFjY2Vzcy10by1mdW5jdGlvbiB0eXBlIHdpdGggYW4gYW5vbnltb3VzIGFjY2VzcyByZXN1bHQuCgkoQ2hlY2tfQW5vbnltb3VzX0FjY2Vzc19UeXBlcyk6IENoYW5nZSBTdWJ0eXBlX01hcmsgdG8gUmVzdWx0X0RlZmluaXRpb24KCWluIGhhbmRsaW5nIGZvciBOX0FjY2Vzc19GdW5jdGlvbl9EZWZpbml0aW9uLgoJKEFuYWx5emVfU3VidHlwZV9EZWNsYXJhdGlvbik6IE1vZGlmeSB0aGUgdGV4dCBvZiBlcnJvciBtZXNzYWdlLgoJKERlcml2ZWRfVHlwZV9EZWNsYXJhdGlvbik6IE1vZGlmeSB0aGUgdGV4dCBvZiBlcnJvciBtZXNzYWdlLgoJKFByb2Nlc3NfU3VidHlwZSk6IE1vZGlmeSB0aGUgdGV4dCBvZiBlcnJvciBtZXNzYWdlIHBsdXMgY2xlYW51cAoJb2Ygb25lIHJlZHVuZGFudCBlcnJvciBtZXNzYWdlLgoJKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uKTogQ29kZSBjbGVhbnVwLgoJKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogQ29kZSBjbGVhbnVwLgoJKEFuYWx5emVfU3VidHlwZV9EZWNsYXJhdGlvbik6IFByb3BhZ2F0ZSB0aGUgbnVsbC1leGNsdXNpb24KCWF0dHJpYnV0ZSBpbiBjYXNlIG9mIGFjY2VzcyB0eXBlcy4gQ29kZSBjbGVhbnVwLgoJKEFycmF5X1R5cGVfRGVjbGFyYXRpb24pOiBDb2RlIGNsZWFudXAuCgkoUHJvY2Vzc19EaXNjcmltaW5hbnRzKTogQ3JlYXRlIHRoZSBuZXcgbnVsbC1leGNsdWRpbmcgaXR5cGUKCWlmIHJlcXVpcmVkLiBDb2RlIGNsZWFudXAuCgkoUHJvY2Vzc19TdWJ0eXBlKTogQ3JlYXRlIHRoZSBuZXcgbnVsbC1leGNsdWRpbmcgaXR5cGUgaWYKCXJlcXVpcmVkLiBDb2RlIGNsZWFudXAuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IENvZGUgY2xlYW51cCB0byBhdm9pZCBjYWxsaW5nCgl0d2ljZSB0aGUgc3VicHJvZ3JhbSBkZXJpdmVfc3VicHJvZ3JhbXMgaW4gY2FzZSBvZiBwcml2YXRlCgl0eXBlcyB0aGF0IGltcGxlbWVudCBpbnRlcmZhY2VzLiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSB0aGUKCXN1YnByb2dyYW0gQ29tcGxldGVfU3VicHJvZ3JhbXNfRGVyaXZhdGlvbiBhbHJlYWR5IGRvZXMgdGhlCglqb2IgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWNvbmQgY2FsbC4KCgkqIGV4cF9zdHJtLmFkYiAoQnVpbGRfRWxlbWVudGFyeV9JbnB1dF9DYWxsKTogQWRkIGFuIGV4cGxpY2l0Cgljb252ZXJzaW9uIHRvIHRoZSBmdWxsIHZpZXcgd2hlbiBnZW5lcmF0aW5nIGFuIG9wZXJhdGlvbiBmb3IgYQoJZGlzY3JpbWluYW50IHdob3NlIHR5cGUgbWF5IGN1cnJlbnRseSBiZSBwcml2YXRlLgoKMjAwNS0wOS0wMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChUcmFuc2Zvcm1fT2JqZWN0X09wZXJhdGlvbik6IEluIGEgY29udGV4dCBvZmYgdGhlIGZvcm0KCVYgKE9iai5GKSwgdGhlIHJld3JpdGluZyBkb2VzIG5vdCBpbnZvbHZlIHRoZSBpbmRleGVkIGNvbXBvbmVudCwgYnV0Cglvbmx5IHRoZSBzZWxlY3RlZCBjb21wb25lbnQgaXRzZWxmLgoJRG8gbm90IGFwcGx5IHRoZSB0cmFuc2Zvcm1hdGlvbiBpZiB0aGUgYW5hbHl6ZWQgbm9kZSBpcyBhbiBhY3R1YWwgb2YgYQoJY2FsbCB0byBhbm90aGVyIHN1YnByb2dyYW0uCgkoQ29tcGxldGVfT2JqZWN0X09wZXJhdGlvbik6IFJldGFpbiB0aGUgZW50aXR5IG9mIHRoZQoJZGlzcGF0Y2hpbmcgb3BlcmF0aW9uIGluIHRoZSBzZWxlY3RvciBvZiB0aGUgcmV3cml0dGVuIG5vZGUuIFRoZQoJZW50aXR5IHdpbGwgYmUgdXNlZCBpbiB0aGUgZXhwYW5zaW9uIG9mIGRpc3BhdGNoaW5nIHNlbGVjdHMuCgkoQW5hbHl6ZV9PbmVfQ2FsbCk6IEltcHJvdmUgbG9jYXRpb24gb2YgdGhlIGVycm9yIG1lc3NhZ2UgYXNzb2NpYXRlZAoJd2l0aCBpbnRlcmZhY2UuCgkoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBObyBuZWVkIHRvIHJlc29sdmUgcHJlZml4IHdoZW4gaXQgaXMgYQoJZnVuY3Rpb24gY2FsbCwgcmVzb2x1dGlvbiBpcyBkb25lIHdoZW4gcGFyZW50IG5vZGUgaXMgcmVzb2x2ZWQsIGFzCgl1c3VhbC4KCShBbmFseXplX09uZV9DYWxsKTogQWRkIGEgZmxhZyB0byBzdXBwcmVzcyBhbmFseXNpcyBvZiB0aGUgZmlyc3QgYWN0dWFsLAoJd2hlbiBhdHRlbXB0aW5nIHRvIHJlc29sdmUgYSBjYWxsIHRyYW5zZm9ybWVkIGZyb20gaXRzIG9iamVjdCBub3RhdGlvbi4KCShUcnlfT2JqZWN0X09wZXJhdGlvbiwgVHJhbnNmb3JtX09iamVjdF9PcGVyYXN0aW9uKTogQXZvaWQgbWFraW5kIGNvcGllcwoJb2YgdGhlIGFyZ3VtZW50IGxpc3QgZm9yIGVhY2ggaW50ZXJwcmV0YXRpb24gb2YgdGhlIG9wZXJhdGlvbi4KCShUcnlfT2JqZWN0X09wZXJhdGlvbik6IFRoZSBkZXNpZ25hdGVkIHR5cGUgb2YgYW4gYWNjZXNzIHBhcmFtZXRlciBtYXkKCWJlIGFuIGluY29tcGxldGUgdHlwZSBvYnRhaW5lZCB0aHJvdWdoIGEgbGltaXRlZF93aXRoIGNsYXVzZSwgaW4gd2hpY2gKCWNhc2UgdGhlIHByaW1pdGl2ZSBvcGVyYXRpb25zIG9mIHRoZSB0eXBlIGFyZSByZXRyaWV2ZWQgZnJvbSBpdHMgZnVsbAoJdmlldy4KCShBbmFseXplX0NhbGwpOiBJZiB0aGlzIGlzIGFuIGluZGlyZWN0IGNhbGwsIGFuZCB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlCglhY2Nlc3NfdG9fc3VicHJvZ3JhbSBpcyBpbmNvbXBsZXRlLCB1c2UgaXRzIGZ1bGwgdmlldyBpZiBhdmFpbGFibGUuCgoyMDA1LTA5LTAxICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNi5hZHMsIHNlbV9jaDYuYWRiIChDaGVja19Db25mb3JtYW5jZSk6IEluIGNhc2Ugb2YgYW5vbnltb3VzCglhY2Nlc3MgdHlwZXMgdGhlIG51bGwtZXhjbHVzaW9uIGFuZCBhY2Nlc3MtdG8tY29uc3RhbnQgYXR0cmlidXRlcyBtdXN0CglhbHNvIG1hdGNoLgoJKEFuYWx5emVfUmV0dXJuX1N0YXRlbWVudCk6IFdoZW4gdGhlIHJlc3VsdCB0eXBlIGlzIGFuIGFub255bW91cyBhY2Nlc3MKCXR5cGUsIGFwcGx5IGEgY29udmVyc2lvbiBvZiB0aGUgcmV0dXJuIGV4cHJlc3Npb24gdG8gdGhlIGFjY2VzcyB0eXBlCgl0byBlbnN1cmUgdGhhdCBhcHByb3ByaWF0ZSBhY2Nlc3NpYmlsaXR5IGNoZWNrcyBhcmUgcGVyZm9ybWVkLgoJKEFuYWx5emVfUmV0dXJuX1R5cGUpOiBGb3IgdGhlIGNhc2Ugb2YgYW4gYW5vbnltb3VzIGFjY2VzcyByZXN1bHQgdHlwZSwKCWdlbmVyYXRlIHRoZSBJdHlwZSBhbmQgc2V0IElzX0xvY2FsX0Fub255bW91c19BY2Nlc3Mgb24gdGhlIHR5cGUuCglBZGQgPz8/IHBsYWNlaG9sZGVyIGZvciBjaGVjayB0byBkaXNhbGxvdyByZXR1cm5pbmcgYSBsaW1pdGVkIG9iamVjdAoJaW4gQWRhIDIwMDUgdW5sZXNzIGl0J3MgYW4gYWdncmVnYXRlIG9yIGEgcmVzdWx0IG9mIGEgZnVuY3Rpb24gY2FsbC4KCUNoYW5nZSBjYWxscyBmcm9tIFN1YnR5cGVfTWFyayB0byBSZXN1bHRfRGVmaW5pdGlvbi4KCShBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IENoYW5nZSBmb3JtYWwgU3VidHlwZV9NYXJrIHRvCglSZXN1bHRfRGVmaW5pdGlvbiBpbiBjYWxsIHRvIE1ha2VfRnVuY3Rpb25fU3BlY2lmaWNhdGlvbi4KCShCdWlsZF9Cb2R5X1RvX0lubGluZSk6IENoYW5nZSBTZXRfU3VidHlwZV9NYXJrIHRvCglTZXRfUmVzdWx0X0RlZmluaXRpb24uCgkoTWFrZV9JbmVxdWFsaXR5X09wZXJhdG9yKTogQ2hhbmdlIGZvcm1hbCBTdWJ0eXBlX01hcmsgdG8KCVJlc3VsdF9EZWZpbml0aW9uIGluIGNhbGwgdG8gTWFrZV9GdW5jdGlvbl9TcGVjaWZpY2F0aW9uLgoJKFByb2Nlc3NfRm9ybWFscyk6IENyZWF0ZSB0aGUgbmV3IG51bGwtZXhjbHVkaW5nIGl0eXBlIGlmIHJlcXVpcmVkLgoJKE5ld19PdmVybG9hZGVkX0VudGl0eSk6IEZvciBhbiBlbnRpdHkgb3ZlcnJpZGluZyBhbiBpbnRlcmZhY2UgcHJpbWl0aXZlCgljaGVjayBpZiB0aGUgZW50aXR5IGFsc28gY292ZXJzIG90aGVyIGFic3RyYWN0IHN1YnByb2dyYW1zIGluIHRoZSBzYW1lCglzY29wZS4gVGhpcyBpcyByZXF1aXJlZCB0byBoYW5kbGUgdGhlIGdlbmVyYWwgY2FzZSwgdGhhdCBpcywgb3ZlcnJpZGluZwoJb3RoZXIgaW50ZXJmYWNlIHByaW1pdGl2ZXMgYW5kIG92ZXJyaWRpbmcgYWJzdHJhY3Qgc3VicHJvZ3JhbXMgaW5oZXJpdGVkCglmcm9tIHNvbWUgYWJzdHJhY3QgYW5jZXN0b3IgdHlwZS4KCShOZXdfT3ZlcmxvYWRlZF9FbnRpdHkpOiBGb3IgYW4gb3ZlcnJpZGluZyBlbnRpdHkgdGhhdCBjb21lcyBmcm9tCglzb3VyY2UsIG5vdGUgdGhlIG9wZXJhdGlvbiB0aGF0IGl0IG92ZXJyaWRlcy4KCShDaGVja19Db25mb3JtYW5jZSwgVHlwZV9Db25mb3JtYW50KTogQWRkaXRpb24gb2Ygb25lIG5ldyBmb3JtYWwKCXRvIHNraXAgY29udHJvbGxpbmcgZm9ybWFscyBpbiB0aGUgYW5hbHlzaXMuIFRoaXMgaXMgdXNlZCB0bwoJaGFuZGxlIG92ZXJsb2FkaW5nIG9mIGFic3RyYWN0IGludGVyZmFjZXMuCgkoQmFzZV9UeXBlc19NYXRjaCk6IEFkZCBtaXNzaW5nIGNhc2UgZm9yIHR5cGVzIGltcG9ydGVkIGZyb20KCWxpbWl0ZWQtd2l0aCBjbGF1c2VzCgkoTmV3X092ZXJsb2FkZWRfRW50aXR5KTogQWRkIGJhcnJpZXIgdG8gcHJvdGVjdCB0aGUgdXNlIG9mCgl0aGUgImFsaWFzIiBhdHRyaWJ1dGUuCgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g4LmFkYiAoQW5hbHl6ZV9SZW5hbWVkX0VudHJ5KTogRm9yIGEgcmVuYW1pbmdfYXNfZGVjbGFyYXRpb24sCgl2ZXJpZnkgdGhhdCB0aGUgcHJvY2VkdXJlIGFuZCB0aGUgZW50cnkgYXJlIG1vZGUgY29uZm9ybWFudC4KCShBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBFbWl0IGEgd2FybmluZyBpZiBhbiBvcGVyYXRvciBpcyByZW5hbWVkCglhcyBhIGRpZmZlcmVudCBvcGVyYXRvciwgd2hpY2ggaXMgb2Z0ZW4gYSBjdXQtYW5kLXBhc3RlIGVycm9yLgoKMjAwNS0wOS0wMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9kaXNwLmFkYiAoQ2hlY2tfQ29udHJvbGxpbmdfRm9ybWFscyk6IEFub255bW91cyBhY2Nlc3MgdHlwZXMKCXVzZWQgaW4gY29udHJvbGxpbmcgcGFyYW1ldGVycyBleGNsdWRlIG51bGwgYmVjYXVzZSBpdCBpcyBuZWNlc3NhcnkgdG8KCXJlYWQgdGhlIHRhZyB0byBkaXNwYXRjaCwgYW5kIG51bGwgaGFzIG5vIHRhZy4KCShPdmVycmlkZV9EaXNwYXRjaGluZ19PcGVyYXRpb24pOiBJZiB0aGUgcHJldmlvdXMgb3BlcmF0aW9uIGlzIGluaGVyaXRlZAoJZnJvbSBhbiBpbnRlcmZhY2UsIGl0IGJlY29tZXMgaGlkZGVuICBhbmQgZG9lcyBub3QgcGFydGljaXBhdGUgaW4gbGF0ZXIKCW5hbWUgcmVzb2x1dGlvbi4KCjIwMDUtMDktMDEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfTWVtYmVyc2hpcF9PcCk6IEluIGNhc2Ugb2YgdGhlIG1lbWJlcnNoaXAgdGVzdAoJIklmYWNlX0NXX1R5cCBpbiBUJ0NsYXNzIiB3ZSBoYXZlIG5vdGhpbmcgZWxzZSB0byBkbyBpbiB0aGUgZnJvbnRlbmQ7Cgl0aGUgZXhwYW5kZXIgd2lsbCBnZW5lcmF0ZSB0aGUgY29ycmVzcG9uZGluZyBydW4tdGltZSBjaGVjayB0byBldmFsdWF0ZQoJdGhlIGV4cHJlc3Npb24uCgkoUmVzb2x2ZV9DYWxsKTogQ2hlY2sgZm9yIGxlZ2FsIHR5cGUgb2YgcHJvY2VkdXJlIG5hbWUgb3IgcHJlZml4IHRoYXQKCWFwcGVhcnMgYXMgYSB0cmlnZ2VyIGluIGEgdHJpZ2dlcmluZyBhbHRlcm5hdGl2ZS4KCShWYWxpZF9Db252ZXJzaW9uKTogSWYgZXhwcmVzc2lvbiBpcyBhbWJpZ3VvdXMgYW5kIHRoZSBjb250ZXh0IGludm9sdmVzCglhbiBleHRlbnNpb24gb2YgU3lzdGVtLCByZW1vdmUgU3lzdGVtLkFkZHJlc3MgaW50ZXJwcmV0YXRpb25zLgoJKFJlc29sdmVfUXVhbGlmaWVkX0V4cHJlc3Npb24pOiBSZWplY3QgdGhlIGNhc2Ugb2YgYSBzcGVjaWZpYy10eXBlCglxdWFsaWZpY2F0aW9uIGFwcGxpZWQgdG8gYSBjbGFzcy13aWRlIGFyZ3VtZW50LiBFbmhhbmNlIGNvbW1lbnQKCXRvIGV4cGxhaW4gY2hlY2tpbmcgb2YgT3JpZ2luYWxfTm9kZS4KCShSZXNvbHZlX1R5cGVfQ29udmVyc2lvbik6IFRoZSBsb2NhdGlvbiBvZiB0aGUgZXJyb3IgbWVzc2FnZSB3YXMgbm90CglnZW5lcmFsIGVub3VnaCB0byBoYW5kbGUgdGhlIGdlbmVyYWwgY2FzZSBhbmQgaGVuY2UgaXQgaGFzIGJlZW4gcmVtb3ZlZC4KCUluIGFkZGl0aW9uLCB0aGlzIHBhdGNoIGltcHJvdmVzIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLgoJKFJlc29sdmVfVHlwZV9Db252ZXJzaW9uKTogQWRkIG1pc3Npbmcgc3VwcG9ydCBmb3IgYWNjZXNzIHRvIGludGVyZmFjZQoJdHlwZXMuCgkoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBJZiB0aGUgdGFyZ2V0IGlzIGEgY2xhc3Mtd2lkZSBpbnRlcmZhY2UgdHlwZSwKCWRvIG5vdCBleHBhbmQgaWYgdGhlIGV4cHJlc3Npb24gaXMgdGhlIGFjdHVhbCBpbiBhIGNhbGwsIGJlY2F1c2UgcHJvcGVyCglleHBhbnNpb24gd2lsbCB0YWtlIHBsYWNlIHdoZW4gdGhlIGNhbGwgaXRzZWxmIGlzIGV4cGFuZGVkLgoJKFJlc29sdmVfQWxsb2NhdG9yKTogSWYgdGhlIGNvbnRleHQgaXMgYW4gdW5jaGVja2VkIGNvbnZlcnNpb24sIHRoZQoJYWxsb2NhdG9yIGluaGVyaXRzIGl0cyBzdG9yYWdlIHBvb2wsIGlmIGFueSwgZnJvbSB0aGUgdGFyZ2V0IHR5cGUgb2YKCXRoZSBjb252ZXJzaW9uLgoKMjAwNS0wOS0wMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHNlbV90eXBlLmFkYiAoQWRkX09uZV9JbnRlcnApOiBJZiBhIGNhbmRpZGF0ZSBvcGVyYXRpb24gaXMgYW4KCWluaGVyaXRlZCBpbnRlcmZhY2Ugb3BlcmF0aW9uIHRoYXQgaGFzIGFuIGltcGxlbWVudGF0aW9uLCB1c2UgdGhlCglpbXBsZW1lbnRhdGlvbiB0byBhdm9pZCBzcHVyaW91cyBhbWJpZ3VpdGllcy4KCShJbnRlcmZhY2VfUHJlc2VudF9Jbl9BbmNlc3Rvcik6IEluIGNhc2Ugb2YgY29uY3VycmVudCB0eXBlcyB3ZSBjYW4ndAoJdXNlIHRoZSBDb3JyZXNwb25kaW5nX1JlY29yZF9UeXAgYXR0cmlidXRlIHRvIGxvb2sgZm9yIHRoZSBpbnRlcmZhY2UKCWJlY2F1c2UgaXQgaXMgc2V0IGJ5IHRoZSBleHBhbmRlciAoYW5kIGhlbmNlIGl0IGlzIG5vdCBhbHdheXMKCWF2YWlsYWJsZSkuIEZvciB0aGlzIHJlYXNvbiB3ZSB0cmF2ZXJzZSB0aGUgbGlzdCBvZiBpbnRlcmZhY2VzCgkoYXZhaWxhYmxlIGluIHRoZSBwYXJlbnQgb2YgdGhlIGNvbmN1cnJlbnQgdHlwZSkuCgkoSW50ZXJmYWNlX1ByZXNlbnRfSW5fQW5jZXN0b3IpOiBIYW5kbGUgZW50aXRpZXMgZnJvbSB0aGUgbGltaXRlZCB2aWV3CgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYiAoR2F0aGVyX0NvbXBvbmVudHMpOiBPbWl0IGludGVyZmFjZSB0YWdzCglmcm9tIHRoZSBsaXN0IG9mIHJlcXVpcmVkIGNvbXBvbmVudHMuCgkoSXNfQ29udHJvbGxpbmdfTGltaXRlZF9Qcm9jZWR1cmUpOiBEZXRlcm1pbmUgd2hldGhlciBhbiBlbnRpdHkgaXMgYQoJcHJpbWl0aXZlIHByb2NlZHVyZSBvZiBhIGxpbWl0ZWQgaW50ZXJmYWNlIHdpdGggYSBjb250cm9sbGluZyBmaXJzdAoJcGFyYW1ldGVyLgoJKElzX1JlbmFtZWRfRW50cnkpOiBEZXRlcm1pbmUgd2hldGhlciBhbiBlbnRyeSBpcyBhIHByb2NlZHVyZSByZW5hbWluZwoJb2YgYW4gZW50cnkuCgkoU2FmZV9Ub19DYXB0dXJlX1ZhbHVlKTogQSB2YWx1ZSAoc3VjaCBhcyBub25fbnVsbCkgaXMgbm90IHNhZmUgdG8KCWNhcHR1cmUgaWYgaXQgaXMgZ2VuZXJhdGVkIGluIHRoZSBzZWNvbmQgb3BlcmFuZCBvZiBhIHNob3J0LWNpcmN1aXQKCW9wZXJhdGlvbi4KCURvIG5vdCBjYXB0dXJlIHZhbHVlcyBmb3IgdmFyaWFibGVzIHdpdGggYWRkcmVzcyBjbGF1c2VzLgoJKElzX09iamVjdF9SZWZlcmVuY2UpOiBUcmVhdCBhIGZ1bmN0aW9uIGNhbGwgYXMgYW4gb2JqZWN0IHJlZmVyZW5jZSBvbmx5CglpZiBpdHMgdHlwZSBpcyBub3QgU3RhbmRhcmRfVm9pZF9UeXBlLgoKMjAwNS0wOS0wMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX3dhcm4uYWRiIChXYXJuX09uX0tub3duX0NvbmRpdGlvbik6IFJlZmluZSB3YXJuaW5nIHdoZW4gYXBwbGllZAoJdG8gYSB2YXJpYWJsZSB0aGF0IGlzIHN0YXRpY2FsbHkga25vd24gdG8gYmUgY29uc3RhbnQuCgoyMDA1LTA5LTAxICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogdHR5cGVmLmFkcyAoVkFYREZfU2FmZV9GaXJzdCk6IFVzZSBjb3JyZWN0IHZhbHVlIGZvciBjb25zdGFudC4KCShWQVhHRl9TYWZlX0ZpcnN0KTogSWRlbS4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGctZGlyb3BlLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCglEb2N1bWVudCB0aGF0IGJvdW5kcyBvZiByZXN1bHQgb2YgQmFzZV9OYW1lIG1hdGNoIHRoZSBpbnB1dCBpbmRleAoJcG9zaXRpb25zLgoJQWRkIGRvY3VtZW50YXRpb24gb24gZW52aXJvbm1lbnQgdmFyaWFibGUgc3ludGF4IGZvciBFeHBhbmRfUGF0aAoKCSogZ25hdF91Z24udGV4aTogVXBkYXRlIGRvY3VtZW50YXRpb24gdG8gaW5jbHVkZSBtZW50aW9uIG9mIC1tIHN3aXRjaGVzCglEb2N1bWVudCBuZXcgdHJlYXRtZW50IG9mIHdpZGUgY2hhcmFjdGVycyBpbiBtYXggbGluZSBsZW5ndGgKCXN0eWxlIGNoZWNrLgoJUmVtb3ZlIC1nbmF0TC8tZ25hdFogc3dpdGNoZXMsIG5vIGxvbmdlciB1c2VkLgoJQWRkIG5vdGUgb24gcHJhZ21hcyBBc3NlcnRpb25fUG9saWN5IGFuZCBEZWJ1Z19Qb2xpY3kgaW4gZGlzY3Vzc2lvbgoJb2YgLWduYXRhIHN3aXRjaC4KCgkqIGduYXRfcm0udGV4aTogQWRkIGRvYyBmb3IgdHdvIGFyZ3VtZW50IGZvcm0gb2YgcHJhZ21hCglGbG9hdF9SZXByZXNlbnRhdGlvbi4KCUFkZCBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgTm9fU3RyaWN0X0FsaWFzaW5nCglBZGQgbm90ZSB0aGF0IGV4cGxpY2l0IGNvbXBvbmVudCBjbGF1c2Ugb3ZlcnJpZGVzIHByYWdtYSBQYWNrLgoJQWRkIGRvY3VtZW50YXRpb24gb2YgcHJhZ21hIERlYnVnX1BvbGljeQoKMjAwNS0wOS0wMSAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLWNpaGFzZS5hZGIsIGEtY29vcnNlLmFkcywgYS1jb29yc2UuYWRiLCBhLWNvaGFtYS5hZGIsCglhLWNpb3JzZS5hZHMsIGEtY2lvcnNlLmFkYiwgYS1jaWhhbWEuYWRiLCBhLWNkbGlsaS5hZGIsCglhLWNpZGxsaS5hZGIsIGEtY2h0Z29wLmFkYiwgYS1jaWhhc2UuYWRiLCBhLWNpaGFzZS5hZHMsCglhLWNvaGFzZS5hZGIsIGEtY29oYXNlLmFkYiwgYS1jb2hhc2UuYWRzOiBTeW5jaHJvbml6ZWQgd2l0aCBsYXRlc3QKCWRyYWZ0IChEcmFmdCAxMywgQXVndXN0IDIwMDUpIG9mIEFkYSBBbWVuZG1lbnQgMS4KCjIwMDUtMDktMDEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGp1c3QgdGhlIGxpYmduYXQgdGFyZ2V0IHBhaXJzIGZvciBYc2NhbGUgdG8gQVJNLgoJTm90ZSB0aGF0IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB2ZXJzaW9uIG9mIGctc29jY29uLmFkcyBmb3IgVk1TIGlzIG5vdwoJbmFtZWQgZy1zb2Njb24tdm1zLmFkcyAoaXQgd2FzIHByZXZpb3VzbHkgZy1zb2Njb24tdm1zLmFkYiwgYWx0aG91Z2ggaXQKCXJlYWxseSBpcyBhIHBhY2thZ2Ugc3BlYykuCglSZXBsYWNlIHMtdGFzcHJpLWxpbnV4LmFkcyBieSBzLXRhc3ByaS1wb3NpeC5hZHMKCVJlbW92ZSByZWZlcmVuY2VzIHRvIHMtbWFzdG9wLXg4Ni5hZGIKCgkqIHN5c3RlbS12eHdvcmtzLXhzY2FsZS5hZHM6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoJKiBzLXZ4d29yay14c2NhbGUuYWRzOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS1kaXJ2YWwtbWluZ3cuYWRiLCBhLWRpcmVjdC5hZGIsIGEtY29pbnZlLmFkYiwKCWctZHluaHRhLmFkYiwgZy1keW5odGEuYWRzLCBjc3RhbmQuYWRiLCBleHBfc21lbS5hZGIsIGctZGVidXRpLmFkcywKCWctZGlyb3BlLmFkYiwgZy10YWJsZS5hZGIsIGxpYi1zb3J0LmFkYiwgc2VtX21hcHMuYWRiLAoJZXhwX2ZpeGQuYWRiLCBleHBfYWdnci5hZGIsIGEtaW50bmFtLW1pbmd3LmFkcywgYS1pbnRuYW0tdnh3b3Jrcy5hZHMsCglnLWFycnNwbC5hZGIsIGctYXJyc3BsLmFkcywgZy1hd2suYWRiLCBnLWF3ay5hZHMsIGctYm91YnVmLmFkcywKCWctYm91YnVmLmFkcywgZy1ib3VidWYuYWRzLCBnLWJ1YnNvci5hZHMsIGctYnVic29yLmFkYiwgZy1idXNvcmEuYWRiLAoJZy1idXNvcmEuYWRzLCBnLWJ1c29yZy5hZGIsIGctYnVzb3JnLmFkcywgZy1jYWxlbmQuYWRiLCBnLWNhbGVuZC5hZHMsCglnLWNhc3V0aS5hZGIsIGctY2FzdXRpLmFkcywgZy1jYXRpaW8uYWRiLCBnLWNhdGlpby5hZHMsIGctY2dpLmFkYiwKCWctY2dpLmFkcywgZy1jZ2ljb28uYWRiLCBnLWNnaWNvby5hZHMsIGctY2dpZGViLmFkYiwgZy1jZ2lkZWIuYWRzLAoJZy1jb21saW4uYWRiLCBnLWNvbXZlci5hZHMsIGctc2VtYXBoLmFkcywgZy1zb2N0aGkuYWRzLAoJc2VtX2NoNy5hZGIsIGEtZGlyZWlvLmFkYiwgYS1jYWxkZWwuYWRzLCBpLWNzdHJlYS12bXMuYWRiLAoJYS16dGVkaXQuYWRiLCBhLXp0ZW5hdS5hZGIsIGctc29jdGhpLXZtcy5hZGIsIGctc29jdGhpLXZtcy5hZHMsCglnLXNvY3RoaS1taW5ndy5hZGIsIGctc29jdGhpLW1pbmd3LmFkcywgZy1zb2N0aGktdnh3b3Jrcy5hZHMsCglhLWludG5hbS1pcml4LmFkcywgYS1pbnRuYW0taXJpeC5hZHMsIGEtaW50bmFtLWhwdXguYWRzLAoJYS1pbnRuYW0tb3MyLmFkcywgYS1pbnRuYW0tb3MyLmFkcywgYS1jYWxkZWwtdm1zLmFkYiwgYS1jYWxlbmQtdm1zLmFkYiwKCWEtY2FsZW5kLXZtcy5hZHMsIGctaGVhc29yLmFkYiwgZy1oZWFzb3IuYWRzLCBnLWhlc29yYS5hZGIsCglnLWhlc29yYS5hZHMsIGctaGVzb3JnLmFkYiwgZy1oZXNvcmcuYWRzLCBnLWh0YWJsZS5hZGIsIGctaHRhYmxlLmFkcywKCWctaW8uYWRiLCBnLWlvLmFkcywgZy1pb19hdXguYWRiLCBnLWlvX2F1eC5hZHMsIGctbG9jZmlsLmFkcywKCWctbWVtZHVtLmFkYiwgZy1tZW1kdW0uYWRzLCBnLXRyYWNlYi5hZGIsIGctdHJhY2ViLmFkcywgaS1jb2JvbC5hZGIsCglpLWNvYm9sLmFkcywgaS1jc3RyZWEuYWRzLCBpLWNzdHJpbi5hZGIsIGEtd3RlZGl0LmFkYiwgYS10aWZpaW8uYWRiLAoJYS13dGVuYXUuYWRiLCBhLXd0ZW5hdS5hZGIsIGEtdGVpb2VkLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA1LTA4LTI5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJUFIgYWRhLzIzMTg3CgkqIGFkYWludC5jCgkoR05BVF9NQVhQQVRIX0xFTik6IFVzZSBkZWZhdWx0IHZhbHVlIGlmIE1BWFBBVEhMRU4gaXMgdW5kZWZpbmVkLgoKMjAwNS0wOC0yOSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoJICAgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBzLXN0YWxpYi5hZGI6IEFkZCBtaXNzaW5nIHByYWdtYSBXYXJuaW5ncyAoT24pIHRvIHJlZW5hYmxlIFdhcm5pbmdzCgl3aGVuIG5lZWRlZC4KCShJbnNpZGVfRWxhYl9GaW5hbF9Db2RlKTogTW92ZWQgdG8gaW5pdC5jIHRvIGF2b2lkIGhhdmluZyB0byBrZWVwCgl0aGlzIGNvZGUgaW4gdGhlIEdOQVQgcnVuLXRpbWUuCgoJKiBkZWNsLmMsIGZlLmg6IFJlcGxhY2UgR0NDX1pDWCBieSBCYWNrX0VuZF9FeGNlcHRpb25zLgoKCVBSIGFkYS8yMTA1MwoJKiBpbml0LmMgKF9fZ25hdF9lcnJvcl9oYW5kbGVyIFttYW55XSk6IE1hcmsgIm1zZyIgYXMgY29uc3QKCShfX2duYXRfZXJyb3JfaGFuZGxlciBbSFBVWF0pOiBNYXJrIHNpZ2luZm8gcGFyYW1ldGVyIGFzIHVudXNlZAoKCShfX2duYXRfaW5zaWRlX2VsYWJfZmluYWxfY29kZSk6IE1vdmVkIGhlcmUgZnJvbQoJU3RhbmRhcmRfTGlicmFyeSBhbmQgb25seSBkZWZpbmVkIGZvciB0aGUgY29tcGlsZXIuCglfX2duYXRfZXJyb3JfaGFuZGxlciBbVk1TXTogQWRqdXN0IHNpZ2FyZ3MgdG8gYWNjb3VudCBmb3IgUEMgJiBQU0wuCgkoX19nbmF0X2ludW1fdG9faXZlYyk6IERvIG5vdCBkZWZpbmUgdGhpcyBmdW5jdGlvbiBvbiBWeFdvcmtzIHdoZW4KCXVzaW5nIFJUUHMgYmVjYXVzZSBkaXJlY3RseSB2ZWN0b3JlZCBJbnRlcnJ1cHQgcm91dGluZXMgYXJlIG5vdAoJc3VwcG9ydGVkIG9uIHRoaXMgY29uZmlndXJhdGlvbi4KCShnZXRwaWQpOiBEbyBub3QgcmVkZWZpbmUgdGhpcyBmdW5jdGlvbiBvbiBWeFdvcmtzIHdoZW4gdXNpbmcgUlRQcwoJYmVjYXVzZSB0aGlzIHByaW1pdGl2ZSBpcyB3ZWxsIHN1cHBvcnRlZCBieSB0aGUgUlRQIGxpYnJhcmllcy4KCShjb3B5X21zZyk6IENvcnJlY3QgdGhlIGNvZGUgdGhhdCBjaGVja3MgZm9yIGJ1ZmZlciBvdmVyZmxvdy4KCURpc2NvdmVyZWQgZHVyaW5nIGNvZGUgcmVhZGluZy4KCjIwMDUtMDgtMjkgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPEVfVmFyaWFibGU+OiBXaGVuIGFsbG9jYXRpbmcgc3RvcmFnZSBmb3IKCWEgbGlicmFyeSBsZXZlbCBtdXRhYmxlIHZhcmlhYmxlIHdpdGggYW4gaW5pdGlhbGl6ZXIsIHRlbGwKCWJ1aWxkX2FsbG9jYXRvciB0byBpZ25vcmUgdGhlIGluaXRpYWxpemVyJ3Mgc2l6ZS4gSXQgbWF5IG5vdCBiZSBsYXJnZQoJZW5vdWdoIGZvciBhbGwgdGhlIHZhbHVlcyB0aGF0IG1pZ2h0IGJlIGFzc2lnbmVkIHRvIHRoZSB2YXJpYWJsZSBsYXRlcgoJb24uCgoyMDA1LTA4LTI5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyYW5zLmM6IFByb3RlY3QgPCBpbiBlcnJvciBtc2cgd2l0aCBxdW90ZQoJUmVwbGFjZSBHQ0NfWkNYIGJ5IEJhY2tfRW5kX0V4Y2VwdGlvbnMuCgkoYWRkcmVzc2FibGVfcCkgPENPTVBPTkVOVF9SRUY+OiBBbHNvIHJldHVybiAxIGlmIHRoZSBmaWVsZAoJaGFzIGJlZW4gc3VmZmljaWVudGx5IGFsaWduZWQgaW4gdGhlIHJlY29yZC4KCjIwMDUtMDgtMTUgIEphbWVzIEUuIFdpbHNvbiAgPHdpbHNvbkBzcGVjaWZpeC5jb20+CgoJKiBzeXN0ZW0tbGludXgtYWxwaGEuYWRzOiBDaGFuZ2UgaWE2NCB0byBhbHBoYS4KCjIwMDUtMDgtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jLCB1dGlscy5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDUtMDctMjkgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jLCBpbml0LmMsIGluaXRpYWxpemUuYzogRml4IGNvbW1lbnQgdHlwb3MuCgoyMDA1LTA3LTIwICBHaW92YW5uaSBCYWpvICA8Z2lvdmFubmliYWpvQGxpYmVyby5pdD4KCglNYWtlIENPTlNUUlVDVE9SIHVzZSBWRUMgdG8gc3RvcmUgaW5pdGlhbGl6ZXJzLgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSk6IFVwZGF0ZSB0byBjb3BlIHdpdGggVkVDIGluCglDT05TVFJVQ1RPUl9FTFRTLgoJKiB0cmFucy5jIChleHRyYWN0X3ZhbHVlcyk6IExpa2V3aXNlLgoJKiB1dGlscy5jIChjb252ZXJ0LCByZW1vdmVfY29udmVyc2lvbnMpOiBMaWtld2lzZS4KCSogdXRpbHMyLmMgKGNvbnRhaW5zX3NhdmVfZXhwcl9wLCBidWlsZF9iaW5hcnlfb3AsIGJ1aWxkX3VuYXJ5X29wLAoJZ25hdF9idWlsZF9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoKMjAwNS0wNy0wOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBkZWNsLmMgKGNvbXBvbmVudHNfdG9fcmVjb3JkKTogVXNlIERFQ0xfRkNPTlRFWFQgaW5zdGVhZCBvZgoJREVDTF9TRUNUSU9OX05BTUUuCgkoY29tcGFyZV9maWVsZF9iaXRwb3MpOiBMaWtld2lzZS4KCjIwMDUtMDctMDkgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogdXRpbHMuYyAoY3JlYXRlX3Zhcl9kZWNsKTogT25seSBzZXQgREVDTF9DT01NT04gb24KCVZBUl9ERUNMcy4gT25seSBzZXQgU0VUX0RFQ0xfQVNTRU1CTEVSX05BTUUgb24KCVZBUl9PUl9GVU5DVElPTl9ERUNMX1AuCgoyMDA1LTA3LTA4ICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIHV0aWxzLmMgKGNyZWF0ZV9wYXJhbV9kZWNsKTogREVDTF9BUkdfVFlQRV9BU19XUklUVEVOIGlzCglyZW1vdmVkLgoKMjAwNS0wNy0wNyAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZy1zb2N0aGktbWluZ3cuYWRiIChDX0luZXRfQWRkcik6IE5ldyBib2R5IHVzZWQgdG8gY29udmVydCB0aGUKCXJldHVybmVkIHR5cGUgb24gV2luZG93cy4KCgkqIGctc29jdGhpLW1pbmd3LmFkcyAoQ19JbmV0X0FkZHIpOiBSZW1vdmUgcHJhZ21hIEltcG9ydCBmb3IgdGhpcwoJcm91dGluZS4KCgkqIGctc29ja2V0LmFkYiAoSW5ldF9BZGRyKTogQ2hlY2sgZm9yIGVtcHR5IEltYWdlIGFuZCByYWlzZXMgYW4KCWV4Y2VwdGlvbiBpbiB0aGlzIGNhc2UuCglTaW1wbGlmeSB0aGUgY29kZSBhcyAiSW1hZ2UgKEltYWdlJ1JhbmdlKSIgPSAiSW1hZ2UiLgoKMjAwNS0wNy0wNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX091dHB1dF9GaWxlX0MpOiBXaGVuIHN3aXRjaCAtYSB3YXMgc3BlY2lmaWVkLCBwdXQKCXRoZSBkZXN0cnVjdG9yL2NvbnN0cnVjdG9yIGF0dHJpYnV0ZXMgZm9yIDxsaWI+ZmluYWwvPGxpYj5pbml0LgoKCSogZ25hdGJpbmQuYWRiIChHbmF0YmluZCk6IEFsbG93IC1hIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAtQwoKMjAwNS0wNy0wNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KSA8RV9Qcm9jZWR1cmU+OiBEbyBub3Qgc3RyaXAgdGhlIHBhZGRpbmcKCXR5cGUgaWYgdGhlIHBhcmFtZXRlciBpcyBub3QgcGFzc2VkIGJ5IGNvcHkgYnV0IHJlZmVyZW5jZSBieSBkZWZhdWx0LgoKMjAwNS0wNy0wNyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoMy5hZGIgKEJ1aWxkX1JlY29yZF9Jbml0X1Byb2MvRnJlZXplX1JlY29yZF9UeXBlKToKCVJlaW1wbGVtZW50YXRpb24gb2YgdGhlIHN1cHBvcnQgZm9yIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcyBpbiBvcmRlcgoJdG8gbGVhdmUgdGhlIGNvZGUgbW9yZSBjbGVhciBhbmQgZWFzeSB0byBtYWludGFpbi4KCgkqIGV4cF9jaDYuYWRiIChGcmVlemVfU3VicHJvZ3JhbSk6IFJlaW1wbGVtZW50YXRpb24gb2YgdGhlIHN1cHBvcnQgZm9yCglhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZXMgaW4gb3JkZXIgdG8gbGVhdmUgdGhlIGNvZGUgY2xlYXJlciBhbmQgZWFzaWVyCgl0byBtYWludGFpbi4KCgkqIGV4cF9kaXNwLmFkcywgZXhwX2Rpc3AuYWRiIChGaWxsX0RUX0VudHJ5KTogUGFydCBvZiBpdHMgZnVuY3Rpb25hbGl0eQoJaXMgbm93IGltcGxlbWVudGVkIGJ5IHRoZSBuZXcgc3VicHJvZ3JhbSBGaWxsX1NlY29uZGFyeV9EVF9FbnRyeS4KCShGaWxsX1NlY29uZGFyeV9EVF9FbnRyeSk6IEdlbmVyYXRlIHRoZSBjb2RlIG5lY2Vzc2FyeSB0byBmaWxsIHRoZQoJYXBwcm9wcmlhdGUgZW50cnkgb2YgdGhlIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZS4KCShNYWtlX0RUKTogQWRkIGNvZGUgdG8gaW5oZXJpdCB0aGUgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlcyBvZgoJdGhlIGFuY2VzdG9ycy4KCgkqIGV4cF91dGlsLmFkYiAoRmluZF9JbnRlcmZhY2VfVGFnL0ZpbmRfSW50ZXJmYWNlX0FEVCk6IEluc3RlYWQgb2YKCWltcGxlbWVudGluZyBib3RoIGZ1bmN0aW9uYWxpdGllcyBieSBtZWFucyBvZiBhIGNvbW1vbiByb3V0aW5lLCBlYWNoCglyb3V0aW5lIGhhcyBpdHMgb3duIGNvZGUuCgoyMDA1LTA3LTA3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfRW50aXR5KTogQ2hlY2sgd3JvbmcgdXNlcyBvZiB0YWcgaW5jb21wbGV0ZSB0eXBlcy4KCgkqIHBhci1jaDMuYWRiIChQX1R5cGVfRGVjbGFyYXRpb24pOiBHaXZlIHN1cHBvcnQgdG8gdGFnZ2VkIGluY29tcGxldGUKCXR5cGVzOgoJLS0KCSAgdHlwZSBERUZJTklOR19JREVOVElGSUVSIFtESVNDUklNSU5BTlRfUEFSVF0gW0lTIFRBR0dFRF07CgktLQoKCSogc2VtX2F0dHIuYWRiIChDaGVja19Ob3RfSW5jb21wbGV0ZV9UeXBlKTogQWRkaXRpb25hbCBjaGVja3MgZm9yIHdyb25nCgl1c2Ugb2YgdGFnIGluY29tcGxldGUgdHlwZXMuCgoJKiBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9JbmNvbXBsZXRlX1R5cGUpOiBBZGQgbWluaW51bSBkZWNvcmF0aW9uIHRvCglnaXZlIHN1cHBvcnQgdG8gdGFnZ2VkIGluY29tcGxldGUgdHlwZXMuCgoJKiBzZW1fY2g1LmFkYiAoQW5hbHl6ZV9DYXNlX1N0YXRlbWVudCk6IEluIGdlbmVyYXRlZCBjb2RlLCBpZiB0aGUKCWV4cHJlc3Npb24gaXMgYSBkaXNjcmltaW5hbnQgcmVmZXJlbmNlIGFuZCBpdHMgdHlwZSBpcyBwcml2YXRlLCBhcyBjYW4KCWhhcHBlbiB3aXRoaW4gYSBzdHJlYW0gb3BlcmF0aW9uIGZvciBhIG11dGFibGUgcmVjb3JkLCB1c2UgdGhlIGZ1bGwKCXZpZXcgb2YgdGhlIHR5cGUgdG8gcmVzb2x2ZSB0aGUgY2FzZSBhbHRlcm5hdGl2ZXMuCgkoQW5hbHl6ZV9Bc3NpZ25tZW50KTogQ2hlY2sgd3JvbmcgZGVyZWZlcmVuY2Ugb2YgaW5jb21wbGV0ZSB0eXBlcy4KCgkqIHNlbV9jaDYuYWRiIChQcm9jZXNzX0Zvcm1hbHMpOiBBbGxvdyB0aGUgdXNlIG9mIHRhZ2dlZCBpbmNvbXBsZXRlCgl0eXBlcy4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0V4cGxpY2l0X0RlcmVmZXJlbmNlKTogQWxsb3cgdGhlIHVzZSBvZiB0YWdnZWQKCWluY29tcGxldGUgdHlwZXMuCgoJKiBzaW5mby5hZGIgKFRhZ2dnZWRfUHJlc2VudC9TZXRfVGFnZ2dlZF9QcmVzZW50KTogQXBwbGljYWJsZSB0bwoJTl9JbmNvbXBsZXRlX1R5cGVfRGVjbGFyYXRpb24gbm9kZXMuCgoJKiBzaW5mby5hZHMgKE5fSW5jb21wbGV0ZV9UeXBlX0RlY2xhcmF0aW9uKTogQWRkaXRpb24gb2YgYXR0cmlidXRlCglUYWdfUHJlc2VudCB0byBnaXZlIHN1cHBvcnQgdG8gdGFnZ2VkIGluY29tcGxldGUgdHlwZXM6CgktLQoJICB0eXBlIERFRklOSU5HX0lERU5USUZJRVIgW0RJU0NSSU1JTkFOVF9QQVJUXSBbSVMgVEFHR0VEXTsKCS0tCgoyMDA1LTA3LTA3ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yMjMwMQoJKiByYWlzZS5jOiBPbmx5IGluY2x1ZGUgdW53aW5kLmggaWYgSU5fUlRTLCBhbmQgcHJvdmlkZSBkdW1teSB0eXBlCglkZWZpbml0aW9ucyBmb3IgdGhlIFVud2luZCB3cmFwcGVycyBpbiB0aGUgY29tcGlsZXIgY2FzZS4KCjIwMDUtMDctMDcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBwYXItbG9hZC5hZGIgKExvYWQpOiBJZiBhIGNoaWxkIHVuaXQgaXMgbG9hZGVkIHRocm91Z2ggYSBsaW1pdGVkX3dpdGgKCWNsYXVzZSwgZWFjaCBwYXJlbnQgbXVzdCBiZSBsb2FkZWQgYXMgYSBsaW1pdGVkIHVuaXQgYXMgd2VsbC4KCgkqIHNlbV9jaDEwLmFkYiAoUHJldmlvdXNfV2l0aGVkX1VuaXQpOiBCZXR0ZXIgbmFtZSBmb3IKCUNoZWNrX1dpdGhlZF9Vbml0LiBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIHByZXZpb3VzIHdpdGhfY2xhdXNlIGZvcgoJdGhpcyB1bml0LCB3aGV0aGVyIGxpbWl0ZWQgb3Igbm90LgoJKEV4cGFuZF9MaW1pdGVkX1dpdGhfQ2xhdXNlKTogRG8gbm90IGdlbmVyYXRlIGEgbGltaXRlZF93aXRoX2NsYXVzZSBvbgoJdGhlIGN1cnJlbnQgdW5pdC4KCShJc19WaXNpYmxlX1Rocm91Z2hfUmVuYW1pbmdzKTogTmV3IGxvY2FsIHN1YnByb2dyYW0gb2YgaW5zdGFsbF9saW1pdGVkCglfd2l0aGVkX3VuaXQgdGhhdCBjaGVja3MgaWYgc29tZSBwYWNrYWdlIGluc3RhbGxlZCB0aHJvdWdoIG5vcm1hbCB3aXRoCgljbGF1c2VzIGhhcyBhIHJlbmFtaW5nIGRlY2xhcmF0aW9uIG9mIHBhY2thZ2Ugd2hvc2UgbGltaXRlZC12aWV3IGlzCglyZWFkeSB0byBiZSBpbnN0YWxsZWQuIFRoaXMgZW5mb3JjZXMgdGhlIGNoZWNrIG9mIHRoZSBydWxlIDEwLjEuMiAoMjEvMikKCW9mIHRoZSBjdXJyZW50IERyYWZ0IGRvY3VtZW50IGZvciBBZGEgMjAwNS4KCShBbmFseXplX0NvbnRleHQpOiBDb21wbGV0ZSB0aGUgbGlzdCBvZiBjb21waWxhdGlvbiB1bml0cyB0aGF0CglhcmUgYWxsb3dlZCB0byBjb250YWluIGxpbWl0ZWQtd2l0aCBjbGF1c2VzLiBJdCBhbHNvIGNvbnRhaW5zCgljaGVja3MgdGhhdCB3ZXJlIHByZXZpb3VzbHkgZG9uZSBieSBJbnN0YWxsX0xpbWl0ZWRfQ29udGV4dF9DbGF1c2VzLgoJVGhpcyBtYWtlcyB0aGUgY29kZSBtb3JlIGNsZWFyIGFuZCBlYXN5IHRvIG1haW50YWluLgoJKEV4cGFuZF9MaW1pdGVkX1dpdGhfQ2xhdXNlKSBJdCBpcyBub3cgYSBsb2NhbCBzdWJwcm9ncmFtIG9mCglJbnN0YWxsX0xpbWl0ZWRfQ29udGV4dF9DbGF1c2VzLCBhbmQgY29udGFpbnMgdGhlIGNvZGUgdGhhdCBhZGRzCgl0aGUgaW1wbGljaXQgbGltaXRlZC13aXRoIGNsYXVzZXMgZm9yIHBhcmVudHMgb2YgY2hpbGQgdW5pdHMuCglUaGlzIGZ1bmN0aW9uYWxpdHkgd2FzIHByZXZvdXNseSBkb25lIGJ5IEFuYWx5emVfQ29udGV4dC4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IENoZWNrIHdyb25nIHVzZSBvZgoJaW5jb21wbGV0ZSB0eXBlLgoKCSogc2VtX2NoNy5hZGIgKEFuYWx5emVfUGFja2FnZV9EZWNsYXJhdGlvbik6IENoZWNrIGlmIHRoZSBwYWNrYWdlIGhhcwoJYmVlbiBlcnJvbmVvdXNseSBuYW1lZCBpbiBhIGxpbWl0ZWQtd2l0aCBjbGF1c2Ugb2YgaXRzIG93biBjb250ZXh0LgoJSW4gdGhpcyBjYXNlIHRoZSBlcnJvciBoYXMgYmVlbiBwcmV2aW91c2x5IG5vdGlmaWVkIGJ5IEFuYWx5emVfQ29udGV4dC4KCjIwMDUtMDctMDcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRiIChGaW5kX0RpcmVjdF9OYW1lKTogSGFuZGxlIHByb3Blcmx5IHRoZSBjYXNlIG9mIGEKCWdlbmVyaWMgcGFja2FnZSB0aGF0IGNvbnRhaW5zIGxvY2FsIGRlY2xhcmF0aW9ucyB3aXRoIHRoZSBzYW1lIG5hbWUuCgkoQW5hbHl6ZV9PYmplY3RfUmVuYW1pbmcpOiBDaGVjayB3cm9uZyByZW5hbWluZyBvZiBpbmNvbXBsZXRlIHR5cGUuCgoyMDA1LTA3LTA3ICBCZXJuYXJkIEJhbm5lciAgPGJhbm5lckBhZGFjb3JlLmNvbT4KCgkqIHRyYWNlYmFrLmM6IFJlZmluZSB0cmFjZWJhY2tzIHRvIHVzZSBVbndpbmRfQmFja3RyYWNlIHNjaGVtZSBvbgoJaWE2NCBwbGF0Zm9ybSBvbmx5IG9uIHBsYXRmb3JtcyB0aGF0IHlvdSB0aGUgR0NDIHVud2luZCBsaWJyYXJ5CglyYXRoZXIgdGhhbiB0aGUgc3lzdGVtIHVud2luZCBsaWJyYXJ5LgoKMjAwNS0wNy0wNyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cGVjdC5jOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDUtMDctMDcgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFkYWNvcmUuY29tPgoKCSogdm1zX2RhdGEuYWRzOiBBZGQgVk1TIHF1YWxpZmllcnMgZm9yIG5ldyBnbmF0cHAgc3dpdGNoCgktLW5vLXNlcGFyYXRlLWlzCgoJKiBnbmF0X3Vnbi50ZXhpOiBBZGQgZGVzY3JpcHRpb24gZm9yIG5ldyBnbmF0cHAgb3B0aW9uCgkoLS1uby1zZXBhcmF0ZS1pcykKCjIwMDUtMDctMDQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnLWV4cGVjdC12bXMuYWRiLCBnLWV4cGVjdC5hZHMsIGctZXhwZWN0LmFkYgoJKEdldF9Db21tYW5kX091dHB1dCk6IE5ldyBzdWJwcm9ncmFtIHRvIGxhdW5jaCBhIHByb2Nlc3MgYW5kIGdldCBpdHMKCXN0YW5kYXJkIG91dHB1dCBhcyBhIHN0cmluZy4KCjIwMDUtMDctMDQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIHMtbWFzdG9wLXRydTY0LmFkYiAoUG9wX0ZyYW1lKTogVXNlIGV4Y19sb29rdXBfZnVuY3Rpb25fZW50cnkgdG8KCWZldGNoIGEgY29kZS1yYW5nZSBkZXNjcmlwdG9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWFjaGluZSBzdGF0ZS4gT24KCWZhaWx1cmUgc2V0IHRoZSBtYWNoaW5lIHN0YXRlJ3MgUEMgdG8gMDsgb24gc3VjY2VzcywgcGFzcyB0aGUKCWRlc2NyaXB0b3IgdG8gZXhjX3ZpcnR1YWxfdW53aW5kLgoKCSogaW5pdC5jIChUcnU2NCBzZWN0aW9uKTogTmV3IGZ1bmN0aW9uIF9fZ25hdF9zZXRfY29kZV9sb2MuCgoyMDA1LTA3LTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1saWItdGd0LXRydTY0LmFkYiwgbWxpYi10Z3QtYWl4LmFkYiwgbWxpYi10Z3QtaXJpeC5hZGIsCgltbGliLXRndC1ocHV4LmFkYiwgbWxpYi10Z3QtbGludXguYWRiLCBtbGliLXRndC1zb2xhcmlzLmFkYiwKCW1saWItdGd0LW1pbmd3LmFkYiwgbWxpYi10Z3QtZGFyd2luLmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KToKCVJlbW92ZSBhbGwgYXV0by1pbml0aWFsaXphdGlvbiBjb2RlLCBhcyB0aGlzIGlzIG5vdyBkb25lIHRocm91Z2ggdGhlCgljb25zdHJ1Y3RvciBtZWNoYW5pc20uCgoJKiBhZGFpbnQuaCwgYWRhaW50LmMgKF9fZ25hdF9iaW5kZXJfc3VwcG9ydHNfYXV0b19pbml0LAoJX19nbmF0X3NhbHNfaW5pdF91c2luZ19jb25zdHJ1Y3RvcnMpOiBOZXcgZnVuY3Rpb25zLgoKCSogYmluZGdlbi5hZGIgKEdlbl9PdXRwdXRfRmlsZV9BZGEpOiBHZW5lcmF0ZSBwcmFnbWFzCglMaW5rZXJfQ29uc3RydWN0b3IgYW5kIExpbmtlcl9EZXN0cnVjdG9yIHdoZW4gc3dpdGNoIC1hIGlzIHVzZWQuCgoJKiBiaW5kdXNnLmFkYjogQWRkIGxpbmUgZm9yIG5ldyBzd2l0Y2ggLWEKCgkqIGduYXRiaW5kLmFkYiAoR25hdGJpbmRfU3VwcG9ydHNfQXV0b19Jbml0KTogTmV3IEJvb2xlYW4gZnVuY3Rpb24KCShHbmF0YmluZCk6IFdoZW4gc3dpdGNoIC1hIGlzIHVzZWQsIGNoZWNrIGlmIGl0IGlzIGFsbG93ZWQKCgkqIHN3aXRjaC1iLmFkYiAoU2Nhbl9CaW5kZXJfU3dpdGNoZXMpOiBQcm9jZXNzIG5ldyBzd2l0Y2ggLWEKCjIwMDUtMDctMDQgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgoKCSogYS10YWdzLmFkYiAoVHlwZV9TcGVjaWZpY19EYXRhKTogRGVmaW5lIFRhZ3NfVGFibGUgYXMgYSBzbWFsbCBhcnJheS4KCVRoaXMgcHJldmVudHMgdXMgZnJvbSBoaXR0aW5nIGEgbGltaXRhdGlvbiBkdXJpbmcgdGhlIGRlYnVnIGluZm8KCWdlbmVyYXRpb24gd2hlbiB1c2luZyBzdGFicy4KCShQcmltc19QdHIpOiBMaWtld2lzZS4KCjIwMDUtMDctMDQgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogY2hlY2tzLmFkYiAoTnVsbF9FeGNsdXNpb25fU3RhdGljX0NoZWNrcyk6IEluIHRoZSBjYXNlIG9mCglOX09iamVjdF9EZWNsYXJhdGlvbiwgb25seSBwZXJmb3JtIHRoZSBjaGVja3MgaWYgdGhlIE9iamVjdF9EZWZpbml0aW9uCglpcyBub3QgYW4gQWNjZXNzX0RlZmluaXRpb24uCgoJKiBzZW1fY2gzLmFkYiAoQWNjZXNzX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBBZGQgdGVzdCBmb3IgdGhlIGNhc2UKCXdoZXJlIHRoZSBwYXJlbnQgb2YgYW4gdGhlIGFjY2VzcyBkZWZpbml0aW9uIGlzIGFuIE5fT2JqZWN0X0RlY2xhcmF0aW9uCgl3aGVuIGRldGVybWluaW5nIHRoZSBBc3NvY2lhdGVkX05vZGVfRm9yX0l0eXBlIGFuZCBzY29wZSBvZiBhbgoJYW5vbnltb3VzIGFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGUuCgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX05fU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IFNldCB0aGUKCUNvcnJlc3BvbmRpbmdfU3BlYyBvbiB0aGUgYm9keSBjcmVhdGVkIGZvciBhIG51bGwgcHJvY2VkdXJlLiBBZGQgPz8/Cgljb21tZW50LiBSZW1vdmUgTmV3X0NvcHlfVHJlZSBjYWxsIG9uIGJvZHkgYXJndW1lbnQgdG8KCVNldF9Cb2R5X1RvX0lubGluZS4KCgkqIGV4cF9jaDYuYWRiIChBZGRfU2ltcGxlX0NhbGxfQnlfQ29weV9Db2RlKTogRm9yIGFuIG91dCBwYXJhbWV0ZXIgd2l0aAoJZGlzY3JpbWluYW50cywgdXNlIHRoZSB0eXBlIG9mIHRoZSBhY3R1YWwgYXMgd2VsbCwgYmVjYXVzZSB0aGUKCWRpc2NyaW1pbmFudHMgbWF5IGJlIHJlYWQgYnkgdGhlIGNhbGxlZCBzdWJwcm9ncmFtLgoKCSogc2VtX2NoMy5hZGIgKEFjY2Vzc19UeXBlX0RlY2xhcmF0aW9uKTogSWYgdGhlIGRlc2lnbmF0ZWQgdHlwZSBpcyBhbgoJYWNjZXNzIHR5cGUgd2UgZG8gbm90IG5lZWQgdG8gaGFuZGxlIG5vbi1saW1pdGVkIHZpZXdzLgoJKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBBZGRpdGlvbmFsIGNoZWNrIHRvIGNoZWNrIHRoYXQgaW4gY2FzZSBvZgoJcHJpdmF0ZSB0eXBlcywgaW50ZXJmYWNlcyBhcmUgb25seSBhbGxvd2VkIGluIHByaXZhdGUgZXh0ZW5zaW9ucy4KCjIwMDUtMDctMDQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKHByZXBlbmRfYXR0cmlidXRlcykgPFByYWdtYV9MaW5rZXJfQ29uc3RydWN0b3I+OiBOZXcgY2FzZS4KCTxQcmFnbWFfTGlua2VyX0Rlc3RydWN0b3I+OiBMaWtld2lzZS4KCgkqIGVpbmZvLmFkcyAoSGFzX0dpZ2lfUmVwX0l0ZW0pOiBEb2N1bWVudCBQcmFnbWFfTGlua2VyX0NvbnN0cnVjdG9yIGFuZAoJUHJhZ21hX0xpbmtlcl9EZXN0cnVjdG9yLgoKCSogZ2lnaS5oIChhdHRyX3R5cGUpOiBBZGQgQVRUUl9MSU5LX0NPTlNUUlVDVE9SIGFuZAoJQVRUUl9MSU5LX0RFU1RSVUNUT1IuCgkoc3RhdGljX2N0b3JzLCBzdGF0aWNfZHRvcnMpOiBOZXcgdmFyaWFibGVzLgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9ib2R5KTogT3V0cHV0IGN1cnJlbnQgZnVuY3Rpb24gYXMgY29uc3RydWN0b3IKCWFuZCBkZXN0cnVjdG9yIGlmIHJlcXVlc3RlZC4KCgkqIHBhci1wcmFnLmFkYjogQWRkIHByb2Nlc3NpbmcgZm9yIHByYWdtYSBMaW5rZXJfQ29uc3RydWN0b3IgYW5kCglMaW5rZXJfRGVzdHJ1Y3Rvci4KCgkqIHNlbV9wcmFnLmFkYiAoRmluZF9VbmlxdWVfUGFyYW1ldGVybGVzc19Qcm9jZWR1cmUpOiBOZXcgZnVuY3Rpb24KCWV4dHJhY3RlZCBmcm9tIENoZWNrX0ludGVycnVwdF9Pcl9BdHRhY2hfSGFuZGxlci4KCShDaGVja19JbnRlcnJ1cHRfT3JfQXR0YWNoX0hhbmRsZXIpOiBJbnZva2UgaXQuCglJbXBsZW1lbnQgcHJhZ21hIExpbmtlcl9Db25zdHJ1Y3RvciBhbmQgTGlua2VyX0Rlc3RydWN0b3Igd2l0aCB0aGUKCWhlbHAgb2YgRmluZF9VbmlxdWVfUGFyYW1ldGVybGVzc19Qcm9jZWR1cmUuCglSZXBsYWNlIE5hbWVfQWxpYXMgd2l0aCBOYW1lX1RhcmdldCBmb3IgcHJhZ21hIExpbmtlcl9BbGlhcy4KCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOgoJQWRkIE5hbWVfTGlua2VyX0NvbnN0cnVjdG9yIGFuZCBOYW1lX0xpbmtlcl9EZXN0cnVjdG9yLgoJQWRkIFByYWdtYV9MaW5rZXJfQ29uc3RydWN0b3IgYW5kIFByYWdtYV9MaW5rZXJfRGVzdHJ1Y3Rvci4KCSogc25hbWVzLmFkYjogUmVtb3ZlIE5hbWVfQWxpYXMuCgoJKiB0cmFucy5jOiBJbmNsdWRlIGNncmFwaC5oLgoJKGJ1aWxkX2dsb2JhbF9jZHRvcik6IE5ldyBmdW5jdGlvbi4KCShDb21waWxhdGlvbl9Vbml0X3RvX2dudSk6IEJ1aWxkIGdsb2JhbCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBpZgoJbmVlZGVkLgoJKHRyZWVfdHJhbnNmb3JtKSA8Tl9JZGVudGlmaWVyPjogU3Vic3RpdHV0ZSByZW5hbWluZyBvZiB2aWV3LWNvbnZlcnNpb25zCglvZiBvYmplY3RzIHRvby4KCShhZGRyZXNzYWJsZV9wKSA8Q09NUE9ORU5UX1JFRj46IFVuY29uZGl0aW9uYWxseSB0ZXN0CglERUNMX05PTkFERFJFU1NBQkxFX1Agb24gU1RSSUNUX0FMSUdOTUVOVCBwbGF0Zm9ybXMuCgoJKiB1dGlscy5jIChwcm9jZXNzX2F0dHJpYnV0ZXMpIDxBVFRSX0xJTktfQUxJQVM+OiBEbyBub3QgYXNzZW1ibGUgdGhlCgl2YXJpYWJsZSBpZiBpdCBpcyBleHRlcm5hbC4KCgkoc3RhdGljX2N0b3JzLCBzdGF0aWNfZHRvcnMpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlcy4KCShwcm9jZXNzX2F0dHJpYnV0ZXMpIDxBVFRSX0xJTktfQ09OU1RSVUNUT1I+OiBOZXcgY2FzZS4KCTxBVFRSX0xJTktfREVTVFJVQ1RPUj46IExpa2V3aXNlLgoJKGVuZF9zdWJwcm9nX2JvZHkpOiBDaGFpbiBmdW5jdGlvbiBhcyBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvcgoJaWYgcmVxdWVzdGVkLgoKCSogZXhwX3V0aWwuYWRiIChGb3JjZV9FdmFsdWF0aW9uKTogVW5jb25kaXRpb25hbGx5IGludm9rZQoJUmVtb3ZlX1NpZGVfRWZmZWN0cyB3aXRoIFZhcmlhYmxlX1JlZiBzZXQgdG8gdHJ1ZS4KCShSZW1vdmVfU2lkZV9FZmZlY3RzKTogSGFuZGxlIHNjYWxhciB0eXBlcyBmaXJzdC4gVXNlIGEgcmVuYW1pbmcKCWZvciBub24tc2NhbGFyIHR5cGVzIGV2ZW4gaWYgVmFyaWFibGVfUmVmIGlzIHRydWUgYW5kIGZvciBjbGFzcy13aWRlCglleHByZXNzaW9ucy4KCjIwMDUtMDctMDQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9hdHRyLmFkYiAoTW9kKTogRXZhbHVhdGUgY29uZGl0aW9uIGV4cHJlc3Npb24gd2l0aCBjaGVja3Mgb2ZmLAoJdG8gcHJldmVudCBzcHVyaW91cyB3YXJuaW5ncy4KCjIwMDUtMDctMDQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZGIgKEJ1aWxkX1R5cGVDb2RlX0NhbGwpOiBSZW1vdmUgaW5jb3JyZWN0IHByb2Nlc3NpbmcgZm9yCglJdHlwZXMuIEl0eXBlcyBhcmUgcmVhbGx5IHVuZXhwZWN0ZWQgdGhlcmUuCgkoQnVpbGRfVHlwZUNvZGVfRnVuY3Rpb24pOiBHZW5lcmFsaXNlIHNwZWNpYWwgcHJvY2Vzc2luZyBmb3IgSXR5cGVzIHRvCgloYW5kbGUgdGhlIGNhc2Ugb2YgbnVtZXJpYyBpbXBsaWNpdCBiYXNlIHR5cGVzIGFzIHdlbGwgYXMgZW51bWVyYXRlZAoJb25lcy4KCjIwMDUtMDctMDQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbnRyLmFkYiAoRXhwYW5kX1VuY19EZWFsbG9jYXRpb24pOiBJZiB0aGUgZGVzaWduYXRlZCB0eXBlIGlzCgljb250cm9sbGVkLCBpbmRpY2F0ZSB0aGUgZXhwZWN0ZWQgdHlwZSBvZiB0aGUgZGVyZWZlcmVuY2UgdGhhdCBpcwoJY3JlYXRlZCBmb3IgdGhlIGNhbGwgdG8gRGVlcF9GaW5hbGl6ZSwgdG8gcHJldmVudCBzcHVyaW91cyBlcnJvcnMgd2hlbgoJdGhlIGRlc2lnbmF0ZWQgdHlwZSBpcyBwcml2YXRlIGFuZCBjb21wbGV0ZWQgd2l0aCBhIGRlcml2YXRpb24gZnJvbQoJYW5vdGhlciBwcml2YXRlIHR5cGUuCgoyMDA1LTA3LTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiIChDaGFuZ2VfVG9fT2JqZWN0X0RpcmVjdG9yeSk6IFdoZW4gdW5hYmxlIHRvIGNoYW5nZSB0aGUKCWN1cnJlbnQgZGlyIHRvIHRoZSBvYmplY3QgZGlyZWN0b3J5LCBvdXRwdXQgdGhlIGZ1bGwgcGF0aCBvZiB0aGUKCWRpcmVjdG9yeS4KCjIwMDUtMDctMDQgIE1hdHRoZXcgR2luZ2VsbCAgPGdpbmdlbGxAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVwbGFjZSBpbmRlcHN3LWxpbnV4LmFkYiBieSBpbmRlcHN3LWdudS5hZGIKCgkqIGluZGVwc3ctbGludXguYWRiOiBSZXBsYWNlIGJ5Li4uCgoJKiBpbmRlcHN3LWdudS5hZGI6IC4uLnRoaXMgbmV3IGZpbGUKCjIwMDUtMDctMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi1wcmouYWRiIChBdXRvX0luaXRpYWxpemUpOiBOZXcgY29uc3RhbnQgU3RyaW5nCgkoU0FMc19Vc2VfQ29uc3RydWN0b3JzKTogTmV3IEJvb2xlYW4gZnVuY3Rpb24KCShCdWlsZF9MaWJyYXJ5KTogQ2FsbCBnbmF0YmluZCB3aXRoIEF1dG9fSW5pdGlhbGl6ZSBzd2l0Y2ggd2hlbgoJU0FMc19Vc2VfQ29uc3RydWN0b3JzIHJldHVybnMgVHJ1ZS4KCgkqIG1saWItdGd0LmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBtbGliLXV0bC5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogb3B0LmFkczogKFVzZV9QcmFnbWFfTGlua2VyX0NvbnN0cnVjdG9yKTogTmV3IEJvb2xlYW4gZmxhZwoKMjAwNS0wNy0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoOS5hZGIgKFBfVGFzaywgUF9Qcm90ZWN0ZWQpOiBJbmRpY2F0ZSB0aGF0IHNpbmdsZSB0YXNrIGFuZAoJc2luZ2xlIHByb3RlY3RlZCBkZWNsYXJhdGlvbnMgY2FuIGhhdmUgYW4gaW50ZXJmYWNlIGxpc3QuCgkoUF9FbnRyeV9EZWNsYXJhdGlvbik6IEFkZCBoYW5kbGVyIGZvciBFcnJvcl9SZXN5bmMsIHdoaWNoIGNhbiBiZSByYWlzZWQKCXdpdGggc2VyaW91c2x5IG1hbGZvcm1lZCBlbnRyeSBkZWNsYXJhdGlvbnMsIGFuZCBsZWFkIHRvIGNvbXBpbGF0aW9uCglhYmFuZG9uZWQgbWVzc2FnZXMuCgoyMDA1LTA3LTA0ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBwYXItbG9hZC5hZGI6IExvYWQgdGhlIGNvbnRleHQgaXRlbXMgaW4gdHdvIHJvdW5kcy4KCjIwMDUtMDctMDQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2NuZy5hZGI6IERvIG5vdCBjb25zaWRlciBNb2QgdXNlZCBhcyBhbiBhdHRyaWJ1dGUgdG8gYmUgYSBrZXl3b3JkCgoyMDA1LTA3LTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTAuYWRiIChCdWlsZF9MaW1pdGVkX1ZpZXdzKTogQSB0eXBlIGRlY2xhcmVkIHdpdGggYSBwcml2YXRlCgl0eXBlIGV4dGVuc2lvbiBuZWVkcyBhIGxpbWl0ZWQgdmlldy4KCVJlbW92ZSBwcmV2aW91cyByZXN0cmljdGlvbiBvbiBwcml2YXRlIHR5cGVzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZQoJbGltaXRlZC12aWV3IChvbmx5IHRhZ2dlZCBwcml2YXRlIHR5cGVzIHdlcmUgcHJldmlvdXNseSBhbGxvd2VkKS4KCShJbnN0YWxsX1dpdGhlZF9Vbml0KTogSW4gdGhlIGNvZGUgdGhhdCBpbXBsZW1lbnRzIHRoZQoJbGVnYWxpdHkgcnVsZSBnaXZlbiBpbiBBSS0zNzcsIGV4Y2x1ZGUgYSBjaGlsZCB1bml0IHdpdGggdGhlIG5hbWUKCVN0YW5kYXJkLCBiZWNhdXNlIGl0IGlzIGEgaG9tb255bSBvZiB0aGUgU3RhbmRhcmQgZW52aXJvbm1lbnQgcGFja2FnZS4KCjIwMDUtMDctMDQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoVHJhbnNmb3JtX09iamVjdF9PcGVyYXRpb24pOiBGb3IgYW4gYWN0dWFsIHRoYXQgaXMgYW4KCW92ZXJsb2FkZWQgZnVuY3Rpb24gY2FsbCwgY2FycnkgaW50ZXJwcmV0YXRpb25zIGZyb20gdGhlIG9yaWdpbmFsIHRyZWUKCXRvIHRoZSBjb3B5LgoKMjAwNS0wNy0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNi5hZGIgKENvbmZvcm1pbmdfVHlwZXMpOiBJZiB0aGUgdHlwZXMgYXJlIGFub255bW91cyBhY2Nlc3MKCXR5cGVzIGNoZWNrIHdoZXRoZXIgc29tZSBkZXNpZ25hdGVkIHR5cGUgaXMgYSBsaW1pdGVkIHZpZXcsIGFuZCB1c2UKCXRoZSBub24tbGltaXRlZCB2aWV3IGlmIGF2YWlsYWJsZS4KCjIwMDUtMDctMDQgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9ldmFsLmFkYiAoU3VidHlwZXNfU3RhdGljYWxseV9NYXRjaCk6IFVzZSB0aGUgZGlzY3JpbWluYW50Cgljb25zdHJhaW50IG9mIGZ1bGwgdmlldyBvZiBhIHByaXZhdGUgdmlldyBUMSBpZiBwcmVzZW50LCB3aGVuIFQyIGlzIGEKCWRpc2NyaW1pbmF0ZWQgZnVsbCB2aWV3LgoKMjAwNS0wNy0wNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0FjdHVhbHMpOiBEbyBub3QgcmVzb2x2ZSB0aGUgZXhwcmVzc2lvbiBvZiBhbgoJYWN0dWFsIHRoYXQgaXMgYSB2aWV3IGNvbnZlcnNpb24gb2YgYSBiaXQgcGFja2VkIGFycmF5IHJlZmVyZW5jZS4KCjIwMDUtMDctMDQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV90eXBlLmFkYiAoQ292ZXJzKTogVmVyaWZ5IHRoYXQgQ29ycmVzcG9uZGluZ19SZWNvcmRfVHlwZSBpcwoJcHJlc2VudCBiZWZvcmUgY2hlY2tpbmcgd2hldGhlciBhbiBpbnRlcmZhY2UgdHlwZSBjb3ZlcnMgYSBzeW5jaHJvbml6ZWQKCXR5cGUuCgoyMDA1LTA3LTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fdXRpbC5hZGIgKElzX09iamVjdF9SZWZlcmVuY2UpOiBBbiBpbmRleGVkIG9yIHNlbGVjdGVkIGNvbXBvbmVudAoJd2hvc2UgcHJlZml4IGlzIGFuIGltcGxpY2l0IGRlcmVmZXJlbmNlIGlzIGFuIG9iamVjdCByZWZlcmVuY2UuIFJlbW92ZXMKCXNwdXJpb3VzIGVycm9ycyB3aGVuIGNvbXBpbGluZyB3aXRoIC1nbmF0Yy4KCjIwMDUtMDctMDQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yMjAzOQoJKiBzLXNvcGNvMy5hZHMsIHMtc29wY280LmFkcywgcy1zb3BjbzUuYWRzOiBNaW5vciBkb2N1bWVudGF0aW9uIGZpeAoKMjAwNS0wNy0wNCAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBhZGFjb3JlLmNvbT4KCgkqIHRyYWNlYmFrLmM6IEVuYWJsZSB0cmFjZWJhY2tzIG9uIGlhNjQgcGxhdGZvcm1zCgoyMDA1LTA3LTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHZtc19jb252LmFkYiAoSW5pdGlhbGl6ZSk6IEFsbG93IG11bHRpcGxlIEFMSSBmaWxlcyB0byBiZSBnaXZlbiB0bwoJdGhlIEdOQVQgQklORCBjb21tYW5kLCBhcyBnbmF0YmluZCBhY2NlcHRzIG11bHRpcGxlcyBBTEkgZmlsZXMgd2l0aAoJdGhlIC1MIG9yIC1uIHN3aXRjaGVzLgoKMjAwNS0wNy0wNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtYWtlZ3ByLmFkYiAoQnVpbGRfR2xvYmFsX0FyY2hpdmUpOiBNYWtlIHN1cmUgdGhlIGxpc3Qgb2Ygc291cmNlcyBpcwoJY29ycmVjdGx5IGNvbXB1dGVkIGFuZCB0aGUgbWFpbiBwcm9qZWN0IGRhdGEgaXMgbm90IG1vZGlmaWVkIHdoaWxlCglkb2luZyBzby4KCShBZGRfQ19QbHVzX1BsdXNfTGlua19Gb3JfR25hdG1ha2UpOiBBbHdheXMgbGluayB3aXRoIHRoZSBDKysgY29tcGlsZXIKCShDaG9vc2VfQ19QbHVzX1BsdXNfTGlua19Qcm9jZXNzKTogRG8gbm90IGdlbmVyYXRlIHNoZWxsIHNjcmlwdAoJYysrbGlua2VyIGFzIHRoaXMgZG9lcyBub3Qgd29yayBvbiBzb21lIHBsYXRmb3Jtcy4KCjIwMDUtMDctMDQgIE1hdHRoZXcgSGVhbmV5ICA8aGVhbmV5QGFkYWNvcmUuY29tPgoKCSogYS1jb252ZWMuYWRzLCBhLWNvaW52ZS5hZHM6IERlY2xhcmF0aW9uIG9mIHN1YnR5cGUgRXh0ZW5kZWRfSW5kZXgKCXdhcyBjaGFuZ2VkLgoJKiBhLWNvaW52ZS5hZGI6IFBlcmZvcm0gY29uc3RyYWludCBjaGVja3MgZXhwbGljaXRseS4KCjIwMDUtMDctMDQgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogKGFkYS90YXJndHlwcy5vKTogQWRkIG1pc3NpbmcgVFJFRV9IIGRlcGVuZGVuY3kuCgluZXcgdGFyZ2V0IGdlbi1zb2Njb24uCgoyMDA1LTA3LTA0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtbWFzdG9wLWlyaXguYWRiLCBzLW1hc3RvcC12bXMuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDUtMDctMDQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnLXNvY2tldC5hZHMgKENoZWNrX1NlbGVjdG9yKTogTWlub3IgcmV3b3JkaW5nIG9mIGNvbW1lbnQuCgoyMDA1LTA3LTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHZtc19kYXRhLmFkczogQWRkIFZNUyBxdWFsaWZpZXJzIGZvciBuZXcgZ25hdHBwIHN3aXRjaCAtLWVvbD0KCjIwMDUtMDctMDQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnZW4tc29jY29uLmM6IEFkZCBjb25zdGFudHMgU09fU05EVElNRU8gYW5kIFNPX1JDVlRJTUVPLgoKMjAwNS0wNy0wNCAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBBZGQgZGVzY3JpcHRpb24gb2YgLS1lb2wgZ25hdHBwIG9wdGlvbgoKMjAwNS0wNy0wNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZ25hdF9ybS50ZXhpOiBBZGQgYSBub3RlIHRoYXQgcHJhZ21hIFVucmVmZXJlbmNlZCBpcyBub3QgYXBwcm9wcmlhdGUKCWlmIHRoZSB1c2VyIHdhbnRzIGFsbCBjYWxscyBvZiBhIHN1YnByb2dyYW0gdG8gYmUgZmxhZ2dlZCwKCWluZGVwZW5kZW50bHkgb2Ygd2hldGhlciB0aGV5IGFyZSBtYWRlIGZyb20gd2l0aGluIHRoZSBzYW1lIHVuaXQgb3IKCWFub3RoZXIgdW5pdC4KCU1lbnRpb24gcmVzdHJpY3Rpb24gZm9yIHByYWdtYSBMaW5rZXJfQWxpYXMgb24gc29tZSBwbGF0Zm9ybXMuCglEb2N1bWVudCBwcmFnbWEgTGlua2VyX0NvbnN0cnVjdG9yIGFuZCBMaW5rZXJfRGVzdHJ1Y3Rvci4KCVJld3JpdGUgZG9jdW1lbnRhdGlvbiBvZiBXZWFrX0V4dGVybmFsLCBMaW5rZXJfU2VjdGlvbiBhbmQKCUxpbmtlcl9BbGlhcyBwcmFnbWFzLgoKMjAwNS0wNy0wNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy1zdGF1c2EuYWRzLCBzLXN0YXVzYS5hZGI6IE5ldyBmaWxlcy4KCjIwMDUtMDYtMzAgIEtlbGxleSBDb29rCgoJKiBhbGwgZmlsZXM6ICBVcGRhdGUgRlNGIGFkZHJlc3MgaW4gY29weXJpZ2h0IGhlYWRlcnMuCgkqIGdlbi1zb2Njb24uY28gKG1haW4pOiBPdXRwdXQgbmV3IEZTRiBhZGRyZXNzIGluIGdlbmVyYXRlZCBmaWxlcy4KCjIwMDUtMDYtMjggIFBhdWwgQnJvb2sgIDxwYXVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtaXNjLmMgKGduYXRfaW5pdF9nY2NfZWgpOiBDYWxsIGRlZmF1bHRfaW5pdF91bndpbmRfcmVzdW1lX2xpYmZ1bmMuCgoyMDA1LTA2LTE0ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBzLW1hc3RvcC1pcml4LmFkYiAoUG9wX0ZyYW1lKTogUmV2ZXJ0IHNob3JjdXRzIGF2b2lkaW5nIGNhbGxzIHRvCglleGNfdW53aW5kLCBub3cgdGhhdCB3ZSBhcmUgZ2VuZXJhdGluZyBwcm9wZXIgLmRlYnVnX2ZyYW1lIG91dHB1dCBmb3IKCXRoYXQgdGFyZ2V0LgoKCSogdHJhY2ViYWsuYzogUmVtb3ZlIHRoZSBtaXBzLWlyaXggc2VjdGlvbiwgYXMgd2UgYXJlIG5vdyB1c2luZyB0aGUKCXMtbWFzdG9wIGJhc2VkIHVud2luZGVyIGFnYWluLgoJVW5kZXIgU1BBUkMvU29sYXJpcywgdGFrZSBpbnRvIGFjY291bnQgdGhlIHN0YWNrIGJpYXMgdG8gY29tcHV0ZSB0aGUKCWZyYW1lIG9mZnNldC4gIFRoZSBzdGFjayBiaWFzIGlzIDAgZm9yIHRoZSBWOCBBQkkgYW5kIDIwNDcgZm9yIHRoZSBWOQoJQUJJLgoKMjAwNS0wNi0xNCAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIGctdHJhc3ltLXZtcy5hZGI6IHJlbmFtZWQgZy10cmFzeW0tdm1zLWFscGhhLmFkYgoKCSogZy10cmFzeW0tdm1zLWFscGhhLmFkYiwgZy10cmFzeW0tdm1zLWlhNjQuYWRiOiBOZXcgZmlsZXMKCjIwMDUtMDYtMTQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGEtc3RyaGFzLmFkcywgYS1zZWNhaW4uYWRiLCBhLXNlY2Fpbi5hZHMsIGEtcmJ0Z3NvLmFkcywgYS1jZ2Fhc28uYWRiLAoJYS1jZ2Fhc28uYWRzLCBhLWNnYXJzby5hZGIsIGEtY2djYXNvLmFkYiwgYS1jZ2Fyc28uYWRzLCBhLWNnY2Fzby5hZHMsCglhLWNvbnRhaS5hZHMsIGEtY29wcm51LmFkcywgYS1jb3BybnUuYWRiOiBGaXggaGVhZGVyIHN0eWxlIChzcGFjZXMgaW4KCXBhY2thZ2UgbmFtZSkuCgoJKiBhLWludG5hbS1seW54b3MuYWRzLCBhLWludG5hbS11bml4d2FyZS5hZHMsIGEtaW50bmFtLXRydTY0LmFkcywKCWEtaW50bmFtLWFpeC5hZHMsIGEtaW50bmFtLWlyaXguYWRzLCBhLWV4Y3BvbC1pbnRlcml4LmFkYiwKCWEtaW50bmFtLWhwdXguYWRzLCBhLWludG5hbS1saW51eC5hZHMsIGEtaW50bmFtLWR1bW15LmFkcywKCWEtaW50bmFtLW9zMi5hZHMsIGEtbnVtYXV4LWxpYmMteDg2LmFkcywgYS1pbnRuYW0taW50ZXJpeC5hZHMsCglhLWludG5hbS1zb2xhcmlzLmFkcywgYS1jYWxkZWwtdm1zLmFkYiwgYS1jYWxlbmQtdm1zLmFkcywKCWEtaW50bmFtLXZtcy5hZHMsIGEtZXhjcG9sLWFib3J0LmFkYiwgYS1pbnRuYW0tbWluZ3cuYWRzLAoJYS1pbnRuYW0tdnh3b3Jrcy5hZHMsIGEtbnVtYXV4LXZ4d29ya3MuYWRzLCBzLW9zaW50ZS11bml4d2FyZS5hZGIsCglzLW9zaW50ZS11bml4d2FyZS5hZHMsIHMtb3NpbnRlLWx5bnhvcy0zLmFkYiwgcy1vc2ludGUtbHlueG9zLTMuYWRzLAoJcy1vc2ludGUtaHB1eC5hZHMsIHMtb3NpbnRlLXNvbGFyaXMtcG9zaXguYWRzLCBhLWludG5hbS1mcmVlYnNkLmFkcywKCXMtb3NpbnRlLWZyZWVic2QuYWRiLCBzLW9zaW50ZS1mcmVlYnNkLmFkcywgcy1vc2ludGUtbHlueG9zLmFkYiwKCXMtb3NpbnRlLWx5bnhvcy5hZHMsIHMtdHBvcHNwLWx5bnhvcy5hZGIsIHMtb3NpbnRlLXRydTY0LmFkYiwKCXMtb3NpbnRlLXRydTY0LmFkcywgcy10cG9wc3AtcG9zaXgtZm9yZWlnbi5hZGIsIHMtdnh3b3JrLWFscGhhLmFkcywKCXMtb3NpbnRlLWFpeC5hZGIsIHMtb3NpbnRlLWFpeC5hZHMsIHMtb3NpbnRlLWFpeC1mc3UuYWRzLAoJcy1vc2ludGUtaXJpeC5hZGIsIHMtb3NpbnRlLWlyaXguYWRzLCBzLWludGVyci1zaWdhY3Rpb24uYWRiLAoJcy1vc2ludGUtaXJpeC1hdGhyZWFkLmFkcywgcy1vc2ludGUtaHB1eC1kY2UuYWRiLAoJcy1vc2ludGUtaHB1eC1kY2UuYWRzLCBzLW9zaW50ZS1wb3NpeC5hZGIsIHMtb3NpbnRlLWxpbnV4LmFkcywKCXMtdnh3b3JrLW02OGsuYWRzLCBzLW9zaW50ZS1saW51eC1mc3UuYWRzLCBzLXZ4d29yay1taXBzLmFkcywKCXMtb3NpbnRlLWR1bW15LmFkcywgcy1pbnRlcnItZHVtbXkuYWRiLCBzLW9zaW50ZS1vczIuYWRiLAoJcy1vc2ludGUtb3MyLmFkcywgcy1vc3ByaW0tb3MyLmFkYiwgcy1vc2ludGUtaW50ZXJpeC5hZHMsCglzLW9zcHJpbS11bml4LmFkYiwgcy12eHdvcmstcHBjLmFkcywgcy1vc2ludGUtc29sYXJpcy5hZGIsCglzLW9zaW50ZS1zb2xhcmlzLmFkcywgcy1vc3ByaW0tc29sYXJpcy5hZGIsIHMtdHBvcHNwLXNvbGFyaXMuYWRiLAoJcy12eHdvcmstc3BhcmN2OS5hZHMsIHMtb3NpbnRlLXNvbGFyaXMtZnN1LmFkcywgcy1pbnRlcnItdm1zLmFkYiwKCXMtb3NpbnRlLXZtcy5hZGIsIHMtb3NpbnRlLXZtcy5hZHMsIHMtb3NwcmltLXZtcy5hZGIsCglzLW9zcHJpbS12bXMuYWRzLCBzLXRwb3BkZS12bXMuYWRiLCBzLXRwb3BkZS12bXMuYWRzLAoJcy1vc3ByaW0tbWluZ3cuYWRiLCBzLXZ4d29yay14c2NhbGUuYWRzLCBzLWludGVyci12eHdvcmtzLmFkYiwKCXMtb3NpbnRlLXZ4d29ya3MuYWRiLCBzLW9zaW50ZS12eHdvcmtzLmFkcywgcy1vc3ByaW0tdnh3b3Jrcy5hZGIsCglzLXRmc2V0ci12eHdvcmtzLmFkYiwgcy10cG9wc3Atdnh3b3Jrcy5hZGIsIHMtaW50bWFuLXBvc2l4LmFkYiwKCXMtb3NpbnRlLWZzdS5hZGIsIHMtb3NwcmltLXBvc2l4LmFkYiwgcy10ZnNldHItZGVmYXVsdC5hZGIsCglzLXRwb3BzcC1wb3NpeC5hZGIsIHMtdHJhY2VzLWRlZmF1bHQuYWRiLCBzLXRyYWZvci1kZWZhdWx0LmFkYiwKCXMtdHJhZm9yLWRlZmF1bHQuYWRzLCBzLXRyYXRhcy1kZWZhdWx0LmFkYiwgYS1udW1hdXgteDg2LmFkYiwKCWEtbnVtYXV4LXg4Ni5hZHMsIGEtYXN0YWNvLmFkYiwgYS1hc3RhY28uYWRzLCBhLWNhbGRlbC5hZGIsCglhLWNhbGRlbC5hZHMsIGEtY2hhcmFjLmFkcywgYS1jaGxhdDEuYWRzLCBhLWNobGF0OS5hZHMsIGEtY29saWVuLmFkYiwKCWEtY29saWVuLmFkcywgYS1jb2xpcmUuYWRiLCBhLWNvbGlyZS5hZHMsIGEtY29tbGluLmFkYiwgYS1jd2lsYTEuYWRzLAoJYS1jd2lsYTkuYWRzLCBhZGEuYWRzLCBhLWRlY2ltYS5hZGIsIGEtZGlvY3N0LmFkcywgYS1kaXJlaW8uYWRiLAoJYS1keW5wcmkuYWRiLCBhLWR5bnByaS5hZHMsIGEtZXhjcG9sLmFkYiwgYS1mbHRlaW8uYWRzLCBhLWZ3dGVpby5hZHMsCglhLWludGVpby5hZHMsIGEtaW50ZXJyLmFkYiwgYS1pbnRuYW0uYWRzLCBhLWludHNpZy5hZGIsIGEtaW50c2lnLmFkcywKCWEtaW9leGNlLmFkcywgYS1pd3RlaW8uYWRzLCBhLWxmdGVpby5hZHMsIGEtbGZ3dGlvLmFkcywgYS1saXRlaW8uYWRzLAoJYS1saXd0aW8uYWRzLCBhLWxsZnRpby5hZHMsIGEtbGxmd3RpLmFkcywgYS1sbGl0aW8uYWRzLCBhLWxsaXd0aS5hZHMsCglhLW5jZWxmdS5hZHMsIGEtbmdjZWZ1LmFkYiwgYS1uZ2NlZnUuYWRzLCBhLW5nY290eS5hZGIsIGEtbmdlbGZ1LmFkYiwKCWEtbmdlbGZ1LmFkcywgYS1ubGNlZnUuYWRzLCBhLW5sY290eS5hZHMsIGEtbmxlbGZ1LmFkcywgYS1ubGxjZWYuYWRzLAoJYS1ubGxjdHkuYWRzLCBhLW5sbGVmdS5hZHMsIGEtbnNjZWZ1LmFkcywgYS1uc2NvdHkuYWRzLCBhLW5zZWxmdS5hZHMsCglhLW51Y290eS5hZHMsIGEtbnVkaXJhLmFkYiwgYS1udWVsZnUuYWRzLCBhLW51ZmxyYS5hZGIsIGEtbnVtYXV4LmFkcywKCWEtbnVtZXJpLmFkcywgYS1yZWF0aW0uYWRiLCBhLXJldGlkZS5hZGIsIGEtcmV0aWRlLmFkcywgYS1zZXF1aW8uYWRiLAoJYS1zZXF1aW8uYWRzLCBhLXNmdGVpby5hZHMsIGEtc2Z3dGlvLmFkcywgYS1zaW9jc3QuYWRzLCBhLXNpdGVpby5hZHMsCglhLXNpd3Rpby5hZHMsIGEtc3NpY3N0LmFkcywgYS1zc2l0aW8uYWRzLCBhLXNzaXd0aS5hZHMsIGEtc3RtYWNvLmFkcywKCWEtc3RvcmlvLmFkYiwgYS1zdHJib3UuYWRiLCBhLXN0cmZpeC5hZGIsIGEtc3RyaW5nLmFkcywgYS1zdHJtYXAuYWRiLAoJYS1zdHJzZWEuYWRiLCBhLXN0cnN1cC5hZGIsIGEtc3RydW5iLmFkcywgYS1zdHN0aW8uYWRiLCBhLXN0dW5hdS5hZGIsCglhLXN0dW5hdS5hZHMsIGEtc3R3aWJvLmFkYiwgYS1zdHdpZmkuYWRiLCBhLXN0d2lmaS5hZHMsIGEtc3R3aW1hLmFkYiwKCWEtc3R3aXNlLmFkYiwgYS1zdHdpc3UuYWRiLCBhLXN1dGVpby5hZGIsIGEtc3V0ZWlvLmFkcywgYS1zd3V3dGkuYWRiLAoJYS1zd3V3dGkuYWRzLCBhLXRlaW9lZC5hZGIsIGEtdGljb2F1LmFkYiwgYS10aWNvYXUuYWRzLCBhLXRpY29pby5hZGIsCglhLXRpZGVhdS5hZGIsIGEtdGlkZWlvLmFkYiwgYS10aWVuYXUuYWRiLCBhLXRpZW5pby5hZGIsIGEtdGlmaWlvLmFkYiwKCWEtdGlmbGlvLmFkYiwgYS10aWdlYXUuYWRiLCBhLXRpZ2VhdS5hZHMsIGEtdGlpbmlvLmFkYiwgYS10aW1vYXUuYWRiLAoJYS10aW1vaW8uYWRiLCBhLXRpbW9pby5hZHMsIGEtdGlvY3N0LmFkcywgYS10aXRlc3QuYWRiLCBhLXRpdGVzdC5hZHMsCglhLXdpdGVpby5hZGIsIGEtd3Rjb2F1LmFkYiwgYS13dGNvYXUuYWRzLCBhLXd0Y29pby5hZGIsIGEtd3Rjb2lvLmFkcywKCWEtd3Rjc3RyLmFkcywgYS13dGRlYXUuYWRiLCBhLXd0ZGVpby5hZGIsIGEtd3RlbmF1LmFkYiwgYS13dGVuaW8uYWRiLAoJYS13dGZpaW8uYWRiLCBhLXd0Zmxpby5hZGIsIGEtd3RnZWF1LmFkYiwgYS13dGluYXUuYWRiLCBhLXd0aW5pby5hZGIsCglhLXd0aW5pby5hZHMsIGEtd3Rtb2F1LmFkYiwgYS13dG1vaW8uYWRiLCBhLXd0dGVzdC5hZGIsIGNhbGVuZGFyLmFkcywKCWRlYy5hZHMsIGRlYy1pby5hZGIsIGRlYy1pby5hZHMsIGRpcmVjdGlvLmFkcywgZXJybm8uYywgZy1idWJzb3IuYWRiLAoJZy1idWJzb3IuYWRzLCBnLWJ1c29yYS5hZGIsIGctYnVzb3JhLmFkcywgZy1idXNvcmcuYWRiLCBnLWJ1c29yZy5hZHMsCglnLWNhc3V0aS5hZGIsIGctY2FzdXRpLmFkcywgZy1kZWJ1dGkuYWRzLCBnLWhlYXNvci5hZGIsIGctaGVhc29yLmFkcywKCWctaGVzb3JhLmFkYiwgZy1oZXNvcmEuYWRzLCBnLWhlc29yZy5hZGIsIGctaGVzb3JnLmFkcywgZy1odGFibGUuYWRiLAoJZy1odGFibGUuYWRzLCBnLWlvLmFkYiwgZy1pby5hZHMsIGctaW9fYXV4LmFkYiwgZy1pb19hdXguYWRzLAoJZy1tZW1kdW0uYWRiLCBnLW1lbWR1bS5hZHMsIGctc2VzdGluLmFkcywgZy1zaWduYWwuYWRzLCBnLXNpZ25hbC5hZGIsCglnbmF0LmFkcywgZy1zb3VpbmYuYWRzLCBnLXNwZWNoZS5hZGIsIGctc3BlY2hlLmFkcywgZy10YWJsZS5hZGIsCglnLXRhYmxlLmFkcywgZy10aHJlYWQuYWRiLCBnLXRocmVhZC5hZHMsIGlvZXhjZXB0LmFkcywgaS12eHdvaW8uYWRiLAoJaS12eHdvaW8uYWRzLCBtYXRoX2xpYi5hZGIsIHMtYXNzZXJ0LmFkYiwgcy1hc3NlcnQuYWRzLCBzLWFzdGhhbi5hZHMsCglzLWJpdG9wcy5hZGIsIHMtYml0b3BzLmFkcywgcy1ib2Fyb3AuYWRzLCBzLWNhcnNpOC5hZGIsIHMtY2Fyc2k4LmFkcywKCXMtY2FydW44LmFkYiwgcy1jYXJ1bjguYWRzLCBzLWNhc2kxNi5hZGIsIHMtY2FzaTE2LmFkcywgcy1jYXNpMzIuYWRiLAoJcy1jYXNpMzIuYWRzLCBzLWNhc2k2NC5hZGIsIHMtY2FzaTY0LmFkcywgcy1jYXN1dGkuYWRiLCBzLWNhc3V0aS5hZHMsCglzLWNhdW4xNi5hZGIsIHMtY2F1bjE2LmFkcywgcy1jYXVuMzIuYWRiLCBzLWNhdW4zMi5hZHMsIHMtY2F1bjY0LmFkYiwKCXMtY2F1bjY0LmFkcywgcy1kaXJlaW8uYWRiLCBzLWRpcmVpby5hZHMsIHNlcXVlbmlvLmFkcywgcy1lcnJyZXAuYWRiLAoJcy1lcnJyZXAuYWRzLCBzLWV4bmludC5hZGIsIHMtZXhuaW50LmFkcywgcy1leG5sbGYuYWRiLCBzLWV4bmxsZi5hZHMsCglzLWV4bmxsaS5hZGIsIHMtZXhubGxpLmFkcywgcy1leHBpbnQuYWRiLCBzLWV4cGludC5hZHMsIHMtZXhwbGxpLmFkYiwKCXMtZXhwbGxpLmFkcywgcy1leHBsbHUuYWRiLCBzLWV4cGxsdS5hZHMsIHMtZXhwbW9kLmFkYiwgcy1leHBtb2QuYWRzLAoJcy1leHB1bnMuYWRiLCBzLWV4cHVucy5hZHMsIHMtZm9yZS5hZGIsIHMtZm9yZS5hZHMsIHMtZ2V2ZW9wLmFkYiwKCXMtZ2V2ZW9wLmFkcywgcy1odGFibGUuYWRiLCBzLWh0YWJsZS5hZHMsIHMtaW1nYml1LmFkYiwgcy1pbWdiaXUuYWRzLAoJcy1pbWdib28uYWRiLCBzLWltZ2Jvby5hZHMsIHMtaW1nY2hhLmFkYiwgcy1pbWdjaGEuYWRzLCBzLWltZ2RlYy5hZGIsCglzLWltZ2RlYy5hZHMsIHMtaW1nZW51LmFkYiwgcy1pbWdlbnUuYWRzLCBzLWltZ2ludC5hZGIsIHMtaW1naW50LmFkcywKCXMtaW1nbGxiLmFkYiwgcy1pbWdsbGIuYWRzLCBzLWltZ2xsZC5hZGIsIHMtaW1nbGxkLmFkcywgcy1pbWdsbGkuYWRiLAoJcy1pbWdsbGkuYWRzLCBzLWltZ2xsdS5hZGIsIHMtaW1nbGx1LmFkcywgcy1pbWdsbHcuYWRiLCBzLWltZ2xsdy5hZHMsCglzLWltZ3JlYS5hZHMsIHMtaW1ndW5zLmFkYiwgcy1pbWd1bnMuYWRzLCBzLWltZ3dpdS5hZGIsIHMtaW1nd2l1LmFkcwoJcy1pbnRlcnIuYWRzLCBzLWlvLmFkYiwgcy1tYW50aXMuYWRiLCBzLW1hbnRpcy5hZHMsIHMtb3NwcmltLmFkcywKCXMtcGFjazAzLmFkYiwgcy1wYWNrMDMuYWRzLCBzLXBhY2swNS5hZGIsIHMtcGFjazA1LmFkcywgcy1wYWNrMDYuYWRiLAoJcy1wYWNrMDYuYWRzLCBzLXBhY2swNy5hZGIsIHMtcGFjazA3LmFkcywgcy1wYWNrMDkuYWRiLCBzLXBhY2swOS5hZHMsCglzLXBhY2sxMC5hZGIsIHMtcGFjazEwLmFkcywgcy1wYWNrMTEuYWRiLCBzLXBhY2sxMS5hZHMsIHMtcGFjazEyLmFkYiwKCXMtcGFjazEyLmFkcywgcy1wYWNrMTMuYWRiLCBzLXBhY2sxMy5hZHMsIHMtcGFjazE0LmFkYiwgcy1wYWNrMTQuYWRzLAoJcy1wYWNrMTUuYWRiLCBzLXBhY2sxNS5hZHMsIHMtcGFjazE3LmFkYiwgcy1wYWNrMTcuYWRzLCBzLXBhY2sxOC5hZGIsCglzLXBhY2sxOC5hZHMsIHMtcGFjazE5LmFkYiwgcy1wYWNrMTkuYWRzLCBzLXBhY2syMC5hZGIsIHMtcGFjazIwLmFkcywKCXMtcGFjazIxLmFkYiwgcy1wYWNrMjEuYWRzLCBzLXBhY2syMi5hZGIsIHMtcGFjazIyLmFkcywgcy1wYWNrMjMuYWRiLAoJcy1wYWNrMjMuYWRzLCBzLXBhY2syNC5hZGIsIHMtcGFjazI0LmFkcywgcy1wYWNrMjUuYWRiLCBzLXBhY2syNS5hZHMsCglzLXBhY2syNi5hZGIsIHMtcGFjazI2LmFkcywgcy1wYWNrMjcuYWRiLCBzLXBhY2syNy5hZHMsIHMtcGFjazI4LmFkYiwKCXMtcGFjazI4LmFkcywgcy1wYWNrMjkuYWRiLCBzLXBhY2syOS5hZHMsIHMtcGFjazMwLmFkYiwgcy1wYWNrMzAuYWRzLAoJcy1wYWNrMzEuYWRiLCBzLXBhY2szMS5hZHMsIHMtcGFjazMzLmFkYiwgcy1wYWNrMzMuYWRzLCBzLXBhY2szNC5hZGIsCglzLXBhY2szNC5hZHMsIHMtcGFjazM1LmFkYiwgcy1wYWNrMzUuYWRzLCBzLXBhY2szNi5hZGIsIHMtcGFjazM2LmFkcywKCXMtcGFjazM3LmFkYiwgcy1wYWNrMzcuYWRzLCBzLXBhY2szOC5hZGIsIHMtcGFjazM4LmFkcywgcy1wYWNrMzkuYWRiLAoJcy1wYWNrMzkuYWRzLCBzLXBhY2s0MC5hZGIsIHMtcGFjazQwLmFkcywgcy1wYWNrNDEuYWRiLCBzLXBhY2s0MS5hZHMsCglzLXBhY2s0Mi5hZGIsIHMtcGFjazQyLmFkcywgcy1wYWNrNDMuYWRiLCBzLXBhY2s0My5hZHMsIHMtcGFjazQ0LmFkYiwKCXMtcGFjazQ0LmFkcywgcy1wYWNrNDUuYWRiLCBzLXBhY2s0NS5hZHMsIHMtcGFjazQ2LmFkYiwgcy1wYWNrNDYuYWRzLAoJcy1wYWNrNDcuYWRiLCBzLXBhY2s0Ny5hZHMsIHMtcGFjazQ4LmFkYiwgcy1wYWNrNDguYWRzLCBzLXBhY2s0OS5hZGIsCglzLXBhY2s0OS5hZHMsIHMtcGFjazUwLmFkYiwgcy1wYWNrNTAuYWRzLCBzLXBhY2s1MS5hZGIsIHMtcGFjazUxLmFkcywKCXMtcGFjazUyLmFkYiwgcy1wYWNrNTIuYWRzLCBzLXBhY2s1My5hZGIsIHMtcGFjazUzLmFkcywgcy1wYWNrNTQuYWRiLAoJcy1wYWNrNTQuYWRzLCBzLXBhY2s1NS5hZGIsIHMtcGFjazU1LmFkcywgcy1wYWNrNTYuYWRiLCBzLXBhY2s1Ni5hZHMsCglzLXBhY2s1Ny5hZGIsIHMtcGFjazU3LmFkcywgcy1wYWNrNTguYWRiLCBzLXBhY2s1OC5hZHMsIHMtcGFjazU5LmFkYiwKCXMtcGFjazU5LmFkcywgcy1wYWNrNjAuYWRiLCBzLXBhY2s2MC5hZHMsIHMtcGFjazYxLmFkYiwgcy1wYWNrNjEuYWRzLAoJcy1wYWNrNjIuYWRiLCBzLXBhY2s2Mi5hZHMsIHMtcGFjazYzLmFkYiwgcy1wYWNrNjMuYWRzLCBzLXNjYXZhbC5hZGIsCglzLXNjYXZhbC5hZHMsIHMtc2VxdWlvLmFkYiwgcy1zZXF1aW8uYWRzLCBzLXN0YWNoZS5hZGIsIHMtc3RhY2hlLmFkcywKCXMtc3RyYXR0LmFkYiwgcy1zdHJhdHQuYWRzLCBzLXN0cmNvbS5hZGIsIHMtc3RyY29tLmFkcywgcy1zdHJvcHMuYWRiLAoJcy1zdHJvcHMuYWRzLCBzLXRhYXNkZS5hZHMsIHMtdGFkZWNhLmFkYiwgcy10YWRlY2EuYWRzLCBzLXRhZGVydC5hZGIsCglzLXRhZGVydC5hZHMsIHMtdGFlbmNhLmFkYiwgcy10YWVuY2EuYWRzLCBzLXRhcHJvYi5hZGIsIHMtdGFwcm9iLmFkcywKCXMtdGFyZXN0LmFkYiwgcy10YXJlc3QuYWRzLCBzLXRhc2RlYi5hZGIsIHMtdGFzZGViLmFkcywgcy10YXNpbmkuYWRiLAoJcy10YXNpbmkuYWRzLCBzLXRhc2tpbi5hZGIsIHMtdGFza2luLmFkcywgcy10YXNxdWUuYWRiLCBzLXRhc3F1ZS5hZHMsCglzLXRhc3Jlbi5hZHMsIHMtdGFzcmVzLmFkcywgcy10YXNzdGEuYWRiLCBzLXRhc3N0YS5hZHMsIHMtdGFzdXRpLmFkYiwKCXMtdGFzdXRpLmFkcywgcy10YXRhYXQuYWRiLCBzLXRhdGFhdC5hZHMsIHMtdHBpbm9wLmFkYiwgcy10cGlub3AuYWRzLAoJcy10cG9iZW4uYWRiLCBzLXRwb2Jlbi5hZHMsIHMtdHBvYm9wLmFkcywgcy10cG9yZnQuYWRiLCBzLXRwb3Nlbi5hZHMsCglzLXRyYWNlcy5hZGIsIHMtdHJhY2VzLmFkcywgcy10cmF0YXMuYWRiLCBzLXRyYXRhcy5hZHMsIHMtdmFsaW50LmFkcywKCXMtdW5zdHlwLmFkcywgcy12ZWJvb3AuYWRiLCBzLXZlYm9vcC5hZHMsIHMtdmVjdG9yLmFkcywgcy12ZXJjb24uYWRiLAoJcy12ZXJjb24uYWRzLCBzLXdjaGNudi5hZGIsIHMtd2NoY252LmFkcywgcy13Y2hqaXMuYWRiLCBzLXdjaGppcy5hZHMsCglzLXdjaHN0dy5hZGIsIHMtd2Noc3R3LmFkcywgcy13Y2h3dHMuYWRiLCBzLXdjaHd0cy5hZHMsIHMtd2lkYm9vLmFkYiwKCXMtd2lkYm9vLmFkcywgcy13aWRjaGEuYWRiLCBzLXdpZGNoYS5hZHMsIHMtd2lkZW51LmFkYiwgcy13aWRlbnUuYWRzLAoJcy13aWRsbGkuYWRiLCBzLXdpZGxsaS5hZHMsIHMtd2lkbGx1LmFkYiwgcy13aWRsbHUuYWRzLCBzLXd3ZGNoYS5hZHMsCglzLXd3ZGVudS5hZGIsIHMtd3dkd2NoLmFkcywgdGV4dF9pby5hZHMsIHMtc3RjaG9wLmFkcywgcy1zdGNob3AuYWRiLAoJcy1zdGNob3Atdnh3b3Jrcy5hZGIsIGEtaW50bmFtLWRhcndpbi5hZHMsIHMtb3NpbnRlLWRhcndpbi5hZGIsCglzLW9zaW50ZS1kYXJ3aW4uYWRzLCBzLXZ4d29yay14ODYuYWRzLCBhLW51bWF1eC1kYXJ3aW4uYWRzLAoJYS1udW1hdXgtZGFyd2luLmFkYiwgYS1jaHpsYTEuYWRzLCBhLWNoemxhOS5hZHMsIGEtbGZ6dGlvLmFkcywKCWEtbGl6dGlvLmFkcywgYS1sbGZ6dGkuYWRzLCBhLWxsaXp0aS5hZHMsIGEtc2Z6dGlvLmFkcywgYS1zaXp0aW8uYWRzLAoJYS1zc2l6dGkuYWRzLCBhLXN0emJvdS5hZGIsIGEtc3R6Zml4LmFkYiwgYS1zdHpmaXguYWRzLCBhLXN0em1hcC5hZGIsCglhLXN0enNlYS5hZGIsIGEtc3R6c3VwLmFkYiwgYS1zd3VuYXUuYWRiLCBhLXN3dW5hdS5hZHMsIGEtc3p1enRpLmFkYiwKCWEtc3p1enRpLmFkcywgYS10aXVuaW8uYWRzLCBhLXd3dW5pby5hZHMsIGEtenRjb2F1LmFkYiwgYS16dGNvYXUuYWRzLAoJYS16dGNvaW8uYWRiLCBhLXp0Y29pby5hZHMsIGEtenRjc3RyLmFkcywgYS16dGRlYXUuYWRiLCBhLXp0ZGVpby5hZGIsCglhLXp0ZW5pby5hZGIsIGEtenRleGlvLmFkYiwgYS16dGZpaW8uYWRiLCBhLXp0Zmxpby5hZGIsIGEtenRnZWF1LmFkYiwKCWEtenRpbmF1LmFkYiwgYS16dGluaW8uYWRiLCBhLXp0aW5pby5hZHMsIGEtenRtb2F1LmFkYiwgYS16dG1vaW8uYWRiLAoJYS16dHRlc3QuYWRiLCBhLXp6dW5pby5hZHMsIGctdXRmXzMyLmFkYjogRml4IGhlYWRlciBzdHlsZS4KCSJHTlUgQWRhIiB0byBHTkFULCB1c2UgcHJvcGVyIGNhc2luZyBmb3IgUlVOLVRJTUUuCgoyMDA1LTA2LTE0ICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGEtc3l0YWNvLmFkcywgYS1zeXRhY28uYWRiIChTdXNwZW5zaW9uX09iamVjdCk6IFRoZXNlIG9iamVjdHMgYXJlIG5vCglsb25nZXIgcHJvdGVjdGVkIG9iamVjdHMuIFRoZXkgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IGxvd2VyLWxldmVsCglzdXNwZW5zaW9uIG9iamVjdHMgbWFkZSB1cCBieSBhIG11dGV4IGFuZCBhIGNvbmRpdGlvbiB2YXJpYWJsZSAob3IKCXRoZWlyIGVxdWl2YWxlbnQgZ2l2ZW4gYSBwYXJ0aWN1bGFyIE9TKSBwbHVzIHNvbWUgaW50ZXJuYWwgZGF0YSB0bwoJcmVmbGVjdCB0aGUgc3RhdGUgb2YgdGhlIHN1c3BlbnNpb24gb2JqZWN0LgoJKEluaXRpYWxpemUsIEZpbmFsaXplKTogQWRkIHRoaXMgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlIGZvcgoJU3VzcGVuc2lvbl9PYmplY3QsIHdoaWNoIGlzIGEgY29udHJvbGxlZCB0eXBlLgoJKEZpbmFsaXplKTogQWRkIHRoZSBmaW5hbGl6YXRpb24gcHJvY2VkdXJlIGZvciBTdXNwZW5zaW9uX09iamVjdCwKCXdoaWNoIGlzIGEgY29udHJvbGxlZCB0eXBlLgoKCSogYS1zeXRhY28tdnh3b3Jrcy5hZHMsIGEtc3l0YWNvLXZ4d29ya3MuYWRiOiBSZW1vdmUgdGhpcyB2ZXJzaW9uIG9mCglBZGEuU3luY2hyb25vdXNfVGFza19Db250cm9sIGJlY2F1c2UgdGhlcmUgaXMgbm8gbG9uZ2VyIGEgbmVlZCBmb3IgYQoJVnhXb3JrcyBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gVGFyZ2V0IGRlcGVuZGVuY2llcwoJaGFzIGJlZW4gbW92ZWQgdG8gU3lzdGVtLlRhc2tfUHJpbWl0aXZlcy5PcGVyYXRpb25zLgoKCSogcy1vc2ludGUtbWluZ3cuYWRzIChwQ1JJVElDQUxfU0VDVElPTik6IFJlbW92ZSB0aGlzIHR5cGUgd2hpY2ggaXMgbm8KCWxvbmdlciBuZWVkZWQuCgkoSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbiwgRW50ZXJDcml0aWNhbFNlY3Rpb24sCglMZWF2ZUNyaXRpY2FsU2VjdGlvbiwgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKTogUmVwbGFjZSB0aGUgdHlwZQoJcENyaXRpY2FsU2VjdGlvbiBieSBhbiBhbm9ueW1vdXMgYWNjZXNzIHR5cGUgc28gdGhhdCB3ZSBhdm9pZCBwcm9ibGVtcwoJb2YgYWNjZXNzaWJpbGl0eSB0byBsb2NhbCBvYmplY3RzLgoKCSogcy10YXByb3AuYWRzLCBzLXRhcHJvcC1wb3NpeC5hZGIsIHMtdGFwcm9wLXZ4d29ya3MuYWRiLAoJcy10YXByb3AtbWluZ3cuYWRiLCBzLXRhcHJvcC12bXMuYWRiLCBzLXRhcHJvcC1zb2xhcmlzLmFkYiwKCXMtdGFwcm9wLW9zMi5hZGIsIHMtdGFwcm9wLWR1bW15LmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLAoJcy10YXByb3AtbGludXguYWRiLCBzLXRhcHJvcC1pcml4LmFkYiwgcy10YXByb3AtaXJpeC1hdGhyZWFkLmFkYiwKCXMtdGFwcm9wLXRydTY0LmFkYiwgcy10YXByb3AtbHlueG9zLmFkYiAoRWxhYm9yYXRpb24gQ29kZSk6IE5vIGxvbmdlcgoJc2V0IHRoZSBlbnZpcm9ubWVudCB0YXNrIG1hc2sgaGVyZS4KCShDdXJyZW50X1N0YXRlKTogQWRkIHRoaXMgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUKCXN1c3BlbnNpb24gb2JqZWN0LgoJKFNldF9GYWxzZSk6IEFkZCB0aGlzIHByb2NlZHVyZSB0aGF0IHNldHMgdGhlIHN0YXRlIG9mIHRoZSBzdXNwZW5zaW9uCglvYmplY3QgdG8gRmFsc2UuCgkoU2V0X1RydWUpOiBBZGQgdGhpcyBwcm9jZWR1cmUgdGhhdCBzZXRzIHRoZSBzdGF0ZSBvZiB0aGUgc3VzcGVuc2lvbgoJb2JqZWN0IHRvIFRydWUsIHJlbGVhc2luZyB0aGUgdGFzayB0aGF0IHdhcyBzdXNwZW5kZWQsIGlmIGFueS4KCShTdXNwZW5kX1VudGlsX1RydWUpOiBBZGQgdGhpcyBwcm9jZWR1cmUgdGhhdCBibG9ja3MgdGhlIGNhbGxpbmcgdGFzawoJdW50aWwgdGhlIHN0YXRlIG9mIHRoZSBvYmplY3QgaXMgVHJ1ZS4gUHJvZ3JhbV9FcnJvciBpcyByYWlzZWQgaWYKCWFub3RoZXIgdGFzayBpcyBhbHJlYWR5IHdhaXRpbmcgb24gdGhhdCBzdXNwZW5zaW9uIG9iamVjdC4KCShJbml0aWFsaXplKTogQWRkIHRoaXMgcHJvY2VkdXJlIGZvciBpbml0aWFsaXppbmcgdGhlIHN1c3BlbnNpb24KCW9iamVjdC4gSXQgaW5pdGlhbGl6ZXMgdGhlIG11dGV4IGFuZCB0aGUgY29uZGl0aW9uIHZhcmlhYmxlIHdoaWNoIGFyZQoJdXNlZCBmb3Igc3luY2hyb25pemF0aW9uIGFuZCBxdWV1aW5nLCBhbmQgaXQgc2V0cyB0aGUgaW50ZXJuYWwgc3RhdGUKCXRvIEZhbHNlLgoJKEZpbmFsaXplKTogQWRkIHRoaXMgcHJvY2VkdXJlIGZvciBmaW5hbGl6aW5nIHRoZSBzdXNwZW5zaW9uIG9iamVjdCwKCWRlc3Ryb3lpbmcgdGhlIG11dGV4IGFuZCB0aGUgY29uZGl0aW9uIHZhcmlhYmxlLgoKCSogcy10YXNwcmktcG9zaXguYWRzLCBzLXRhc3ByaS12eHdvcmtzLmFkcywgcy10YXNwcmktbWluZ3cuYWRzLAoJcy10YXNwcmktdm1zLmFkcywgcy10YXNwcmktc29sYXJpcy5hZHMsIHMtdGFzcHJpLW9zMi5hZHMsCglzLXRhc3ByaS1kdW1teS5hZHMsIHMtdGFzcHJpLWhwdXgtZGNlLmFkcywgcy10YXNwcmktbGludXguYWRzLAoJcy10YXNwcmktdHJ1NjQuYWRzLCBzLXRhc3ByaS1seW54b3MuYWRzIChTdXNwZW5zaW9uX09iamVjdCk6IE5ldyBvYmplY3QKCXdoaWNoIHByb3ZpZGVzIGEgbG93LWxldmVsIGFic3RyYWN0aW9uICh1c2luZyBvcGVyYXRpbmcgc3lzdGVtCglwcmltaXRpdmVzKSBmb3IgQWRhLlN5bmNocm9ub3VzX1Rhc2tfQ29udHJvbC4KCVRoaXMgb2JqZWN0IGlzIG1hZGUgdXAgYnkgYSBtdXRleCAoZm9yIGVuc3VyaW5nIG11dHVhbCBleGNsdXNpb24pLCBhCgljb25kaXRpb24gdmFyaWFibGUgKGZvciBxdWV1aW5nIHRocmVhZHMgdW50aWwgdGhlIGNvbmRpdGlvbiBpcwoJc2lnbmFsZWQpLCBhIEJvb2xlYW4gKFN0YXRlKSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG9iamVjdCBpcyBvcGVuLAoJYW5kIGEgQm9vbGVhbiAoV2FpdGluZykgcmVmbGVjdGluZyB3aGV0aGVyIHRoZXJlIGlzIGEgdGFzayBhbHJlYWR5CglzdXNwZW5kZWQgb24gdGhpcyBvYmplY3QuCgoJKiBzLWludG1hbi5hZHMsIHMtaW50bWFuLWlyaXguYWRiLCBzLWludG1hbi1pcml4LWF0aHJlYWQuYWRiLAoJcy1pbnRtYW4tZHVtbXkuYWRiLCBzLWludG1hbi1zb2xhcmlzLmFkYiwgcy1pbnRtYW4tdm1zLmFkYiwKCXMtaW50bWFuLXZtcy5hZHMsIHMtaW50bWFuLW1pbmd3LmFkYiwKCShJbml0aWFsaXplX0ludGVycnVwdHMpOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCgkqIHMtaW5tYW9wLXBvc2l4LmFkYiwgcy1pbm1hb3Atdm1zLmFkYiwgcy1pbm1hb3AtZHVtbXkuYWRiLAoJKFNldHVwX0ludGVycnVwdF9NYXNrKTogTmV3IHByb2NlZHVyZS4KCgkqIHMtaW50bWFuLXZ4d29ya3MuYWRzLCBzLWludG1hbi12eHdvcmtzLmFkYjogIFVwZGF0ZSBjb21tZW50cy4KCgkqIHMtaW5tYW9wLmFkcyAoU2V0dXBfSW50ZXJydXB0X01hc2spOiBOZXcgcHJvY2VkdXJlCgoJKiBzLWludGVyci5hZGI6IEFkZCBleHBsaWNpdCBjYWxsIHRvIFNldHVwX0ludGVycnVwdF9NYXNrIG5vdyB0aGF0Cgl0aGlzIGlzIG5vIGxvbmdlciBkb25lIGluIHRoZSBib2R5IG9mIHMtdGFwcm9wCgkoU2VydmVyX1Rhc2spOiBFeHBsaWNpdGVseSB0ZXN0IGZvciBQZW5kaW5nX0FjdGlvbiBpbiBjYXNlCglTeXN0ZW0uUGFyYW1ldGVycy5Ob19BYm9ydCBpcyBUcnVlLgoKCSogcy10YWFzZGUuYWRiOiBBZGQgZXhwbGljaXQgY2FsbCB0byBTZXR1cF9JbnRlcnJ1cHRfTWFzayBub3cgdGhhdCB0aGlzCglpcyBubyBsb25nZXIgZG9uZSBpbiB0aGUgYm9keSBvZiBzLXRhcHJvcAoKMjAwNS0wNi0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzeXN0ZW0tdW5peHdhcmUuYWRzLCBzeXN0ZW0tbGludXgtaWE2NC5hZHMsIHN5c3RlbS1mcmVlYnNkLXg4Ni5hZHMsCglzeXN0ZW0tbHlueG9zLXBwYy5hZHMsIHN5c3RlbS1seW54b3MteDg2LmFkcywgc3lzdGVtLWxpbnV4LXg4Nl82NC5hZHMsCglzeXN0ZW0tdHJ1NjQuYWRzLCBzeXN0ZW0tYWl4LmFkcywgc3lzdGVtLXZ4d29ya3Mtc3BhcmN2OS5hZHMsCglzeXN0ZW0tdnh3b3Jrcy14c2NhbGUuYWRzLCBzeXN0ZW0tc29sYXJpcy14ODYuYWRzLCBzeXN0ZW0taXJpeC1vMzIuYWRzLAoJc3lzdGVtLWlyaXgtbjMyLmFkcywgc3lzdGVtLWhwdXguYWRzLCBzeXN0ZW0tdnh3b3Jrcy1tNjhrLmFkcywKCXN5c3RlbS1saW51eC14ODYuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1taXBzLmFkcywgc3lzdGVtLXZ4d29ya3MtbWlwcy5hZHMsCglzeXN0ZW0tb3MyLmFkcywgc3lzdGVtLWludGVyaXguYWRzLCBzeXN0ZW0tc29sYXJpcy1zcGFyYy5hZHMsCglzeXN0ZW0tc29sYXJpcy1zcGFyY3Y5LmFkcywgc3lzdGVtLXZtcy5hZHMsIHN5c3RlbS1taW5ndy5hZHMsCglzeXN0ZW0tdm1zLXpjeC5hZHMsIHN5c3RlbS12eHdvcmtzLXBwYy5hZHMsIHN5c3RlbS5hZHMsCglzeXN0ZW0tZGFyd2luLXBwYy5hZHMsIHN5c3RlbS12eHdvcmtzLXg4Ni5hZHMsIHN5c3RlbS1saW51eC1wcGMuYWRzLAoJc3lzdGVtLWxpbnV4LWhwcGEuYWRzLCBzeXN0ZW0tdm1zXzY0LmFkcywKCXN5c3RlbS12eHdvcmtzLWFscGhhLmFkczogTWlub3IgY29tbWVudCB1cGRhdGUgZm9yCglBSS0zNjIgKHVuaXQgaXMgUHVyZSkuCgoJKiBhLWNoYWhhbi5hZHMsIGEtY2hhaGFuLmFkYjogTW92ZSBXaWRlX1dpZGUgZnVuY3Rpb25zIHRvIENvbnZlcnNpb25zCglBZGQgcHJhZ21hIFB1cmVfMDUgZm9yIEFJLTM2MgoJTWFrZSByZW1haW5pbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgb2Jzb2xlc2NlbnQgaW4gQWRhIDk1CgoJKiBpbXB1bml0LmFkYjogQ2hhbmdlIGEtc3d1bmhhIHRvIGEtc3d1d2hhIGFuZCBhLXN6dW5oYSB0byBhLXN6dXpoYQoJTWFrZSBBZGEuV2lkZV9DaGFyYWN0ZXJzWy5Vbmljb2RlXSBhdmFpbGFibGUgaW4gQWRhIDk1IG1vZGUKCUFkZCBlbnRyaWVzIGZvciBhLXdpY2h1biBhbmQgYS16Y2h1bmkKCUFkZCBhLXdpZGNoYSBhLXpjaGFyYSBmb3IgQUktMzk1CglBZGQgYS1jaGFjb24gKEFkYS5DaGFyYWN0ZXJzLkNvbnZlcnNpb25zKSB0byBsaXN0IG9mIEFkYSAyMDA1IHJvdXRpbmVzCgoJKiBNYWtlZmlsZS5ydGw6IENoYW5nZSBhLXN3dW5oYSB0byBhLXN3dXdoYSBhbmQgYS1zenVuaGEgdG8gYS1zenV6aGEKCUFkZCBlbnRyaWVzIGZvciBhLXdpY2h1bi5vIGFuZCBhLXpjaHVuaS5vCglFbnRyaWVzIGZvciBhLXdpZGNoYS5vIGFuZCBhLXpjaGFyYS5vCglBZGQgZW50cnkgZm9yIGEtY2hhY29uLm8KCgkqIGEtenRlbmF1LmFkYjogQWRkIHdpdGggb2YgQWRhLkNoYXJhY3RlcnMuQ29udmVyc2lvbnMKCgkqIGEtY2hhY29uLmFkcywgYS1jaGFjb24uYWRiOiBOZXcgZmlsZXMuCgoJKiBhLXRhc2lkZS5hZGIsIGEtZXhzdGF0LmFkYiwgYS1leGNhY2guYWRiOiBBZGQgd2FybmluZ3Mgb2ZmIHRvIGFsbG93CgljYXRlZ29yaXphdGlvbiB2aW9sYXRpb25zLgoKCSogYS1zdHJtYXAuYWRzOiBBZGQgcHJhZ21hIFB1cmVfMDUgZm9yIEFJLTM2MgoJKiBhLXN0cm1hcC5hZHM6IEFkZCBub3RlIG9uIGltcGxpY2l0IGNhdGVnb3JpemF0aW9uIGZvciBBSS0zNjIKCgkqIGEtdGdkaWNvLmFkcywgYS10YXNpZGUuYWRzOiBBZGQgcHJhZ21hIFByZWVsYWJvcmF0ZV8wNSBmb3IgQUktMzYyCgoJKiBwYXItcHJhZy5hZGI6IER1bW15IGVudHJ5IGZvciBwcmFnbWEgUGVyc2lzdGVudF9CU1MKCVNldCBBZGFfVmVyc2lvbl9FeHBsaWNpdCwgZm9yIGltcGxlbWVudGF0aW9uIG9mIEFJLTM2MgoJQWRkIHByb2Nlc3NpbmcgZm9yIHByYWdtYSBQdXJlXzA1IGFuZCBQcmVlbGFib3JhdGVfMDUKCUFkZCBlbnRyeSBmb3IgQXNzZXJ0aW9uX1BvbGljeSBwcmFnbWEKCgkqIHNlbS5hZGI6IE1ha2Ugc3VyZSBwcmVkZWZpbmVkIHVuaXRzIGFyZSBjb21waWxlZCB3aXRoIEdOQVRfTW9kZSB0cnVlCgl3aGVuIG5lZWRlZCBmb3IgcHJvcGVyIHByb2Nlc3Npbmcgb2YgY2F0ZWdvcml6YXRpb24gc3R1ZmYKCgkqIHNlbV9jYXQuYWRiOgoJRm9yIHNldmVyYWwgY2FzZXMsIG1ha2UgZXJyb3JzIGluIHByZWVhbGJvcmF0ZSB1bml0cyB3YXJuaW5ncywKCWluc3RlYWQgb2YgZXJyb3JzLCBpZiBHTkFUX01vZGUgaXMgc2V0LiBGb3IgQUktMzYyLgoKCSogc2VtX2VsYWIuYWRiIChDaGVja19FbGFiX0NhbGwpOiBDYWxsIHRvIG5vbi1zdGF0aWMgc3VicHJvZ3JhbSBpbgoJcHJlZWxhYm9yYXRlIHVuaXQgaXMgbm93IHdhcm5pbmcgaWYgaW4gR05BVCBtb2RlCgoJKiBzLXN0b2VsZS5hZHM6IERvY3VtZW50IEFJLTM2MiBmb3IgcHJhZ21hIHByZWVsYWJvcmF0ZQoKMjAwNS0wNi0xNCAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIHMtcGFyYW1lLXZtcy5hZHMsIHMtcGFyYW1lLWhwdXguYWRzLCBzLXBhcmFtZS12bXMtcmVzdHJpY3QuYWRzLAoJcy1wYXJhbWUtYWU2NTMuYWRzLCBzLXBhcmFtZS5hZHMsIHMtcGFyYW1lLXZ4d29ya3MuYWRzOgoJRGVmYXVsdF9FeGNlcHRpb25fTXNnX01heF9MZW5ndGg6IG5ldyBwYXJhbWV0ZXIuCgoJKiBhLWV4Y2VwdC5hZHM6IChFeGNlcHRpb25fTXNnX01heF9MZW5ndGgpOiBTZXQgdG8KCVN5c3RlbS5QYXJhbWV0ZXJzLkRlZmF1bHRfRXhjZXB0aW9uX01zZ19NYXhfTGVuZ3RoCglBZGQgcHJhZ21hIFByZWVsYWJvcmF0ZV8wNSBmb3IgQUktMzYyCglBZGQgd2FybmluZ3Mgb2ZmIHRvIGFsbG93IGNhdGVnb3JpemF0aW9uIHZpb2xhdGlvbnMgZm9yIEFJLTM2MgoKMjAwNS0wNi0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBnbmF0c3ltLmFkYjogQWRhcHQgdG8gbW9kaWZpY2F0aW9uIG9mIHBhY2thZ2UgU3ltYm9sczogcHJvY2VkdXJlCglQcm9jZXNzIGlzIG5vdyBpbiBwYWNrYWdlIFByb2Nlc3NpbmcuCgoJKiBzeW1ib2xzLmFkcywgc3ltYm9scy5hZGI6CgkoUHJvY2Vzc2luZyk6IE5ldyBwYWNrYWdlLCBjb250YWluaW5nIHByb2NlZHVyZSBQcm9jZXNzCgoJKiBzeW1ib2xzLXZtcy1hbHBoYS5hZGI6CglSZXBsYWNlZCBieSBzeW1ib2xzLXZtcy5hZGIgYW5kIHN5bWJvbHMtcHJvY2Vzc2luZy12bXMtYWxwaGEuYWRiCgoJKiBzeW1ib2xzLXZtcy5hZGIsIHN5bWJvbHMtcHJvY2Vzc2luZy12bXMtYWxwaGEuYWRiLAoJc3ltYm9scy1wcm9jZXNzaW5nLXZtcy1pYTY0LmFkYjogTmV3IGZpbGVzLgoKMjAwNS0wNi0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogbWxpYi10Z3QtbWluZ3cuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBSZXBsYWNlIHRoZSBwcmV2aW91cwoJaW1wbGVtZW50YXRpb24uIFRoaXMgbmV3IHZlcnNpb24gZ2VuZXJhdGVzIHRoZSBwcm9wZXIgRGxsTWFpbiByb3V0aW5lCgl0byBpbml0aWFsaXplIHRoZSBTQUwuIFRoZSBEbGxNYWluIGlzIGdlbmVyYXRlZCBpbiBBZGEgYW5kIGNvbXBpbGVkCgliZWZvcmUgYmVpbmcgYWRkZWQgYXMgb3B0aW9uIHRvIHRoZSBsaWJyYXJ5IGJ1aWxkIGNvbW1hbmQuCgoyMDA1LTA2LTE0ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoJICAgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5jIChfX2duYXRfdG9fY2Fub25pY2FsX2ZpbGVfc3BlYyk6IENoZWNrIGZvciBlcnJvciByZXR1cm5zIGluCgljYWxsIHRvIGRlY2MkdHJhbnNsYXRlX3Ztcy4KCShfX2duYXRfbG9jYXRlX3JlZ3VsYXJfZmlsZSk6IENoZWNrIGlmIHRoZSBwYXRoX3ZhbCBjb250YWlucyBxdW90ZXMuIFdlCgluZWVkIHRvIHJlbW92ZSB0aG9zZSBxdW90ZXMgYmVmb3JlIGNhdGVuYXRpbmcgdGhlIGZpbGVuYW1lLgoJKF9fZ25hdF9sb2NhdGVfZXhlY19vbl9wYXRoKTogaW1wcm92ZW1lbnRzIHRvIHRoZSBXaW4zMiBzZWN0aW9uOgoJKiBhdm9pZCBhbGxvY2F0aW5nIHRoZSBtZW1vcnkgdHdpY2UgZm9yIGJldHRlciBlZmZpY2llbmN5OwoJKiBhbGxvY2F0ZSAzMksgYnVmZmVyIGZvciBlbnZpcm9ubWVudCBleHBhbnNpb24gYXMgc3VnZ2VzdGVkIGJ5IE1TRE47CgkqIHByZXBlbmQgIi47IiB0byB0aGUgcGF0aCBzbyB0aGF0IGN1cnJlbnQgZGlyZWN0b3J5IGlzIHNlYXJjaGVkIHRvby4KCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS1leGNlcHQuYWRiIChFeGNlcHRpb25fSWRlbnRpdHkpOiByZXR1cm4gTnVsbF9JZCBmb3IgbnVsbCBvY2N1cnJlbmNlCglpbnN0ZWFkIG9mIHJhaXNpbmcgQ0UgKEFJLTI0MSkKCUFkZCB3YXJuaW5ncyBvZmYgdG8gYWxsb3cgY2F0ZWdvcml6YXRpb24gdmlvbGF0aW9ucyBmb3IgQUktMzYyCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGFsaS11dGlsLmFkYiwgZ25hdGJpbmQuYWRiOiBSZW1vdmUgcmVmZXJlbmNlcyB0bwoJRm9yY2VfUk1fRWxhYm9yYXRpb25fT3JkZXIuCgoJKiBzd2l0Y2gtYi5hZGI6IFJlbW92ZSByZWNvZ25pdGlvbiBvZiAtZiBzd2l0Y2gKCjIwMDUtMDYtMTQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGEtc3R6dW5iLmFkYiwgYS1zdHdpdW4uYWRiLCBhLXN0cnVuYi5hZGIgKFJlYWxsb2NfRm9yX0NodW5rKTogTmV3CglpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyBzbGlnaHRseSBtb3JlIGVmZmljaWVudC4KCjIwMDUtMDYtMTQgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX0FsbG9jYXRvcl9FeHByZXNzaW9uKTogV2hlbiBhbiBpbml0aWFsaXplZAoJYWxsb2NhdG9yJ3MgZGVzaWduYXRlZCB0eXBlIGlzIGEgY2xhc3Mtd2lkZSB0eXBlLCBhbmQgY29tcGlsaW5nIGZvcgoJQWRhIDIwMDUsIGVtaXQgYSBydW4tdGltZSBjaGVjayB0aGF0IHRoZSBhY2Nlc3NpYmlsaXR5IGxldmVsIG9mIHRoZQoJdHlwZSBnaXZlbiBpbiB0aGUgYWxsb2NhdG9yJ3MgZXhwcmVzc2lvbiBpcyBub3QgZGVlcGVyIHRoYW4gdGhlIGxldmVsCglvZiB0aGUgYWxsb2NhdG9yJ3MgYWNjZXNzIHR5cGUuCgoJKFRhZ2dlZF9NZW1iZXJzaGlwKTogTW9kaWZpZWQgdG8gZ2l2ZXMgc3VwcG9ydCB0byBhYnN0cmFjdCBpbnRlcmZhY2UKCXR5cGVzLgoKCSogYS10YWdzLmFkcywgYS10YWdzLmFkYiAodHlwZSBUeXBlX1NwZWNpZmljX0RhdGEpOiBBZGQgY29tcG9uZW50CglBY2Nlc3NfTGV2ZWwuCgkoRGVzY2VuZGFudF9UYWcpOiBOZXcgcHJlZGVmaW5lZCBmdW5jdGlvbgoJKElzX0Rlc2NlbmRhbnRfQXRfU2FtZV9MZXZlbCk6IE5ldyBwcmVkZWZpbmVkIGZ1bmN0aW9uCgkoR2V0X0FjY2Vzc19MZXZlbCk6IE5ldyBwcml2YXRlIGZ1bmN0aW9uCgkoU2V0X0FjY2Vzc19MZXZlbCk6IE5ldyBwcml2YXRlIHByb2NlZHVyZQoJKElXX01lbWJlcnNoaXApOiBOZXcgZnVuY3Rpb24uIEdpdmVuIHRoZSB0YWcgb2YgYW4gb2JqZWN0IGFuZCB0aGUgdGFnCglhc3NvY2lhdGVkIHdpdGggYW4gaW50ZXJmYWNlLCBldmFsdWF0ZSBpZiB0aGUgb2JqZWN0IGltcGxlbWVudHMgdGhlCglpbnRlcmZhY2UuCgkoUmVnaXN0ZXJfSW50ZXJmYWNlX1RhZyk6IE5ldyBwcm9jZWR1cmUgdXNlZCB0byBpbml0aWFsaXplIHRoZSB0YWJsZSBvZgoJaW50ZXJmYWNlcyB1c2VkIGJ5IHRoZSBJV19NZW1iZXJzaGlwIGZ1bmN0aW9uLgoJKFNldF9PZmZzZXRfVG9fVG9wKTogSW5pdGlhbGl6ZSB0aGUgT2Zmc2V0X1RvX1RvcCBmaWVsZCBpbiB0aGUgcHJvbG9ndWUKCW9mIHRoZSBkaXNwYXRjaCB0YWJsZS4KCShJbmhlcml0X1RTRCk6IE1vZGlmaWVkIHRvIGNvcHkgdGhlIHRhYmxlIG9mIGFuY2VzdG9yIHRhZ3MgcGx1cyB0aGUKCXRhYmxlIG9mIGludGVyZmFjZXMgb2YgdGhlIHBhcmVudC4KCShFeHBhbmRlZF9OYW1lKTogUmFpc2UgVGFnX0Vycm9yIGlmIHRoZSBwYXNzZWQgdGFnIGVxdWFscyBOb19UYWcuCgkoRXh0ZXJuYWxfVGFnKTogUmFpc2UgVGFnX0Vycm9yIGlmIHRoZSBwYXNzZWQgdGFnIGVxdWFscyBOb19UYWcuCgkoUGFyZW50X1RhZyk6IFJldHVybiBOb19UYWcgaW4gdGhlIGNhc2Ugb2YgYSByb290LWxldmVsIHRhZ2dlZCB0eXBlLAoJYW5kIHJhaXNlIFRhZ19FcnJvciBpZiB0aGUgcGFzc2VkIHRhZyBlcXVhbGlzIE5vX1RhZywgdG8gY29uZm9ybSB3aXRoCglBZGEgMjAwNSBzZW1hbnRpY3MgZm9yIHRoZSBuZXcgcHJlZGVmaW5lZCBmdW5jdGlvbi4KCgkqIGV4cF9hdHRyLmFkYiAoRXhwYW5kX05fQXR0cmlidXRlLCBjYXNlIEF0dHJpYnV0ZV9JbnB1dCk6IEdlbmVyYXRlCgljYWxsIHRvIERlc2NlbmRhbnRfVGFnIHJhdGhlciB0aGFuIEludGVybmFsX1RhZy4KCShFeHBhbmRfTl9BdHRyaWJ1dGUsIGNhc2UgQXR0cmlidXRlX091dHB1dCk6IEVtaXQgYSBjaGVjayB0byBlbnN1cmUgdGhhdAoJdGhlIGFjY2Vzc2liaWxpdHkgbGV2ZWwgb2YgdGhlIGF0dHJpYnV0ZSdzIEl0ZW0gcGFyYW1ldGVyIGlzIG5vdCBkZWVwZXIKCXRoYW4gdGhlIGxldmVsIG9mIHRoZSBhdHRyaWJ1dGUncyBwcmVmaXggdHlwZS4gVGFnX0Vycm9yIGlzIHJhaXNlZCBpZgoJdGhlIGNoZWNrIGZhaWxzLiBUaGUgY2hlY2sgaXMgb25seSBlbWl0dGVkIGZvciBBZGFfMDUuCgkoRmluZF9TdHJlYW1fU3VicHJvZ3JhbSk6IElmIGEgVFNTIGV4aXN0cyBvbiB0aGUgdHlwZSBpdHNlbGYgZm9yIHRoZQoJcmVxdWVzdGVkIHN0cmVhbSBhdHRyaWJ1dGUsIHVzZSBpdC4KCShFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlKTogSWYgdGhlIGRlc2lnbmF0ZWQgdHlwZSBpcyBhbiBpbnRlcmZhY2UKCXRoZW4gcmV3cml0ZSB0aGUgcmVmZXJlbmNlZCBvYmplY3QgYXMgYSBjb252ZXJzaW9uIHRvIGZvcmNlIHRoZQoJZGlzcGxhY2VtZW50IG9mIHRoZSBwb2ludGVyIHRvIHRoZSBzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGUuCgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSwgY2FzZSAnQ29uc3RyYWluZWQpOiBSZXR1cm4gZmFsc2UgaWYgdGhpcwoJaXMgYSBkZXJlZmVyZW5jZSBvZiBhbiBvYmplY3Qgd2l0aCBhIGNvbnN0cmFpbmVkIHBhcnRpYWwgdmlldy4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfTl9SZXR1cm5fU3RhdGVtZW50KTogV2hlbiBhIGZ1bmN0aW9uJ3MgcmVzdWx0Cgl0eXBlIGlzIGEgY2xhc3Mtd2lkZSB0eXBlLCBlbWl0IGEgcnVuLXRpbWUgY2hlY2sgdGhhdCB0aGUgYWNjZXNzaWJpbGl0eQoJbGV2ZWwgb2YgdGhlIHJldHVybmVkIG9iamVjdCBpcyBub3QgZGVlcGVyIHRoYW4gdGhlIGxldmVsIG9mIHRoZQoJZnVuY3Rpb24ncyBtYXN0ZXIgKG9ubHkgd2hlbiBjb21waWxpbmcgZm9yIEFkYSAyMDA1KS4KCgkqIGV4cF9kaXNwLmFkcywgZXhwX2Rpc3AuYWRiIChBZGFfQWN0aW9ucywgQWN0aW9uX0lzX1Byb2MsCglBY3Rpb25fTmJfQXJnKTogQWRkIGVudHJpZXMgZm9yIG5ldyBHZXRfQWNjZXNzX0xldmVsIGFuZAoJU2V0X0FjY2Vzc19MZXZlbCByb3V0aW5lcyBpbiB0aGVzZSB0YWJsZXMuCgkoTWFrZV9EVCk6IEdlbmVyYXRlIGEgY2FsbCB0byBzZXQgdGhlIGFjY2Vzc2liaWxpdHkgbGV2ZWwgb2YgdGhlCgl0YWdnZWQgdHlwZSBpbiBpdHMgVFNELgoJKE1ha2VfRFQpOiBDb2RlIGNsZWFudXAuIFRoZSBmdW5jdGlvbmFsaXR5IG9mIGdlbmVyYXRpbmcgYWxsIHRoZQoJc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlcyBoYXMgYmVlbiBtb3ZlZCB0byBmcmVlemVfcmVjb3JkX3R5cGUuCgkoTWFrZV9BYnN0cmFjdF9JbnRlcmZhY2VfRFQpOiBNaW5vciBjb2RlIGNsZWFudXAuCgkoU2V0X0FsbF9EVF9Qb3NpdGlvbik6IENvZGUgY2xlYW51cC4gQXMgcGFydCBvZiB0aGUgY29kZSBjbGVhbnVwCgl0aGlzIHN1YnByb2dyYW0gaW1wbGVtZW50cyBhIG5ldyBhbGdvcml0aG0gdGhhdCBwcm92aWRlcyB0aGUKCXNhbWUgZnVuY3Rpb25hbGl0eSBhbmQgaXQgaXMgbW9yZSBjbGVhciBpbiBjYXNlIG9mIHByaW1pdGl2ZXMKCWFzc29jaWF0ZWQgd2l0aCBhYnN0cmFjdCBpbnRlcmZhY2VzLgoJKFNldF9BbGxfSW50ZXJmYWNlc19EVENfRW50aXR5KTogUmVtb3ZlZC4gQXMgcGFydCBvZiB0aGUgY29kZQoJY2xlYW4gdXAsIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoaXMgc3VicHJvZ3JhbSBpcyBub3cgcHJvdmlkZWQKCWJ5IFNldF9BbGxfRFRfUG9zaXRpb24uCgkoV3JpdGVfRFQpOiBOZXcgc3VicHJvZ3JhbTogYSBkZWJ1Z2dpbmcgcHJvY2VkdXJlIGRlc2lnbmVkIHRvIGJlIGNhbGxlZAoJd2l0aGluIGdkYiB0byBkaXNwbGF5IHRoZSBkaXNwYXRjaCB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIGEgdGFnZ2VkCgl0eXBlLgoJKENvbGxlY3RfQWxsX0ludGVyZmFjZXMpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IGNvbGxlY3RzIHRoZSB3aG9sZSBsaXN0CglvZiBpbnRlcmZhY2VzIHRoYXQgYXJlIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW1wbGVtZW50ZWQgYnkgYSB0YWdnZWQKCXR5cGUuCgkoRGVmYXVsdF9QcmltX09wX1Bvc2l0aW9uKTogTmV3IHN1YnByb2dyYW0gdGhhdCByZXR1cm5zIHRoZSBmaXhlZAoJcG9zaXRpb24gaW4gdGhlIGRpc3BhdGNoIHRhYmxlIG9mIHRoZSBkZWZhdWx0IHByaW1pdGl2ZSBvcGVyYXRpb25zLgoJKEV4cGFuZF9JbnRlcmZhY2VfQWN0dWFscyk6IE5ldyBzdWJwcm9ncmFtIHRvIGdlbmVyYXRlIGNvZGUgdGhhdAoJZGlzcGxhY2VzIGFsbCB0aGUgYWN0dWFscyBjb3JyZXNwb25kaW5nIHRvIGNsYXNzLXdpZGUgaW50ZXJmYWNlcyB0bwoJcmVmZXJlbmNlIHRoZSBpbnRlcmZhY2UgdGFnIG9mIHRoZSBhY3R1YWwgb2JqZWN0LgoJKEV4cGFuZF9JbnRlcmZhY2VfQ29udmVyc2lvbik6IE5ldyBzdWJwcm9ncmFtLiBSZWZlcmVuY2UgdGhlIGJhc2Ugb2YKCXRoZSBvYmplY3QgdG8gZ2l2ZSBhY2Nlc3MgdG8gdGhlIGludGVyZmFjZSB0YWcgYXNzb2NpYXRlZCB3aXRoIHRoZQoJc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlLgoJKEV4cGFuZF9JbnRlcmZhY2VfVGh1bmspOiBOZXcgc3VicHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyB0aGUgY29kZSBvZiB0aGUKCXRodW5rLiBUaGlzIGlzIHJlcXVpcmVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIEMrIEFCSS4KCShNYWtlX0Fic3RyYWN0X0ludGVyZmFjZV9EVCk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgZ2VuZXJhdGUgdGhlCglkZWNsYXJhdGlvbnMgZm9yIHRoZSBzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGVzIGFzc29jaWF0ZWQgd2l0aCBhbgoJYWJzdHJhY3QgaW50ZXJmYWNlLgoJKFNldF9BbGxfSW50ZXJmYWNlc19EVENfRW50aXR5KTogTmV3IHN1YnByb2dyYW0gdGhhdCBzZXRzIHRoZSBEVENfRW50aXR5CglhdHRyaWJ1dGUgZm9yIGVhY2ggcHJpbWl0aXZlIG9wZXJhdGlvbiBjb3ZlcmluZyBpbnRlcmZhY2Ugc3VicHJvZ3JhbXMKCShFeHBhbmRfRGlzcGF0Y2hpbmdfQ2FsbCwgRmlsbF9EVF9FbnRyeSwgTWFrZV9EVCwgU2V0X0FsbF9EVF9Qb3NpdGlvbik6CglUaGVzZSBzdWJwcm9ncmFtcyB3ZXJlIHVwZ3JhZGVkIHRvIGdpdmUgc3VwcG9ydCB0byBhYnN0cmFjdCBpbnRlcmZhY2VzCgoJKiBydHNmaW5kLmFkcyAodHlwZSBSRV9JZCk6IEFkZCBSRV9EZXNjZW5kYW50X1RhZywKCVJFX0lzX0Rlc2NlbmRhbnRfQXRfU2FtZV9MZXZlbCwgUkVfR2V0X0FjY2Vzc19MZXZlbCwgYW5kCglSRV9TZXRfQWNjZXNzX0xldmVsLgoJKFJFX1VuaXRfVGFibGUpOiBBZGQgZW50cmllcyBmb3IgbmV3IEFkYS5UYWdzIG9wZXJhdGlvbnMuCglBZGQgc3VwcG9ydCB0byBjYWxsIHRoZSBmb2xsb3dpZyBuZXcgcnVuLXRpbWUgc3VicHJvZ3JhbXM6CglJV19NZW1iZXJzaGlwLCBSZWdpc3Rlcl9JbnRlcmZhY2VfVGFnLCBhbmQgU2V0X09mZnNldF9Ub19Ub3AKCgkqIHNlbV9jaDMuYWRiIChDb25zdGFudF9SZWRlY2xhcmF0aW9uKTogQWxsb3cgYSBkZWZlcnJlZCBjb25zdGFudCB0bwoJbWF0Y2ggaXRzIGZ1bGwgZGVjbGFyYXRpb24gd2hlbiBib3RoIGhhdmUgYW4gYWNjZXNzIGRlZmluaXRpb24gd2l0aAoJc3RhdGljYWxseSBtYXRjaGluZyBkZXNpZ25hdGVkIHN1YnR5cGVzLgoJKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uKTogRGVsZXRlIGNvbW1lbnRlZCBvdXQgY29kZSB0aGF0IHdhcwoJaW5jb3JyZWN0bHkgc2V0dGluZyB0aGUgc2NvcGUgb2YgYW4gYW5vbnltb3VzIGFjY2VzcyBjb21wb25lbnQncyB0eXBlLgoJKFByb2Nlc3NfRGlzY3JpbWluYW50cyk6IFNldCBJc19Mb2NhbF9Bbm9ueW1vdXNfQWNjZXNzIGZvciB0aGUgdHlwZSBvZgoJYW4gYWNjZXNzIGRpc2NyaW1pbmFudCB3aGVuIHRoZSBjb250YWluaW5nIHR5cGUgaXMgbm9ubGltaXRlZC4KCShNYWtlX0luY29tcGxldGVfVHlwZV9EZWNsYXJhdGlvbik6IENyZWF0ZSBhbiBpbmNvbXBsZXRlIHR5cGUKCWRlY2xhcmF0aW9uIGZvciBhIHJlY29yZCB0eXBlIHRoYXQgaW5jbHVkZXMgc2VsZi1yZWZlcmVudGlhbCBhY2Nlc3MKCWNvbXBvbmVudHMuCgkoQ2hlY2tfQW5vbnltb3VzX0FjY2Vzc19UeXBlcyk6IEJlZm9yZSBmdWxsIGFuYWx5c2lzIG9mIGEgcmVjb3JkIHR5cGUKCWRlY2xhcmF0aW9uLCBjcmVhdGUgYW5vbnltb3VzIGFjY2VzcyB0eXBlcyBmb3IgZWFjaCBzZWxmLXJlZmVyZW50aWFsCglhY2Nlc3MgY29tcG9uZW50LgoJKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uLCBBcnJheV9UeXBlX0RlY2xhcmF0aW9uKTogSW5kaWNhdGUgdGhhdAoJYW4gYWNjZXNzIGNvbXBvbmVudCBpbiB0aGlzIGNvbnRleHQgaXMgYSBMb2NhbF9Bbm9ueW1vdXNfQWNjZXNzLCBmb3IKCXByb3BlciBhY2Nlc3NpYmlsaXR5IGNoZWNrcy4KCShBY2Nlc3NfRGVmaW5pdGlvbik6IFNldCBwcm9wZXJseSB0aGUgc2NvcGUgb2YgdGhlIGFub255bW91cyBhY2Nlc3MgdHlwZQoJY3JlYXRlZCBmb3IgYSBzdGFuZC1hbG9uZSBhY2Nlc3Mgb2JqZWN0LgoJKEZpbmRfVHlwZV9PZl9PYmplY3QpOiBBbiBvYmplY3QgZGVjbGFyYXRpb24gbWF5IGJlIGdpdmVuIHdpdGggYW4gYWNjZXNzCglkZWZpbml0aW9uLgoJKENvbXBsZXRlX1N1YnByb2dyYW1zX0Rlcml2YXRpb24pOiBOZXcgc3VicHJvZ3JhbSB1c2VkIHRvIGNvbXBsZXRlCgl0eXBlIGRlcml2YXRpb24gb2YgcHJpdmF0ZSB0YWdnZWQgdHlwZXMgaW1wbGVtZW50aW5nIGludGVyZmFjZXMuCglJbiB0aGlzIGNhc2Ugc29tZSBpbnRlcmZhY2UgcHJpbWl0aXZlcyBtYXkgaGF2ZSBiZWVuIG92ZXJyaWRlbgoJd2l0aCB0aGUgcGFydGlhbC12aWV3IGFuZCwgaW5zdGVhZCBvZiByZS1jYWxjdWxhdGluZyB0aGVtLCB0aGV5CglhcmUgaW5jbHVkZWQgaW4gdGhlIGxpc3Qgb2YgcHJpbWl0aXZlIG9wZXJhdGlvbnMgb2YgdGhlIGZ1bGwtdmlldy4KCShCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogTW9kaWZpZWQgdG8gZ2l2ZSBzdXBwb3J0IHRvIHByaXZhdGUKCXR5cGVzIGltcGxlbWVuaW5nIGludGVyZmFjZXMuCgkoQWNjZXNzX0RlZmluaXRpb24pOiBSZWplY3QgQUxMIG9uIGFub255bW91cyBhY2Nlc3MgdHlwZXMuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IEluIHRoZSBjYXNlIG9mIEFkYSAyMDA1LCBhbGxvdyBhIHRhZ2dlZAoJdHlwZSBkZXJpdmF0aW9uIHRvIG9jY3VyIGF0IGEgZGVlcGVyIGFjY2Vzc2liaWxpdHkgbGV2ZWwgdGhhbiB0aGUKCXBhcmVudCB0eXBlLgoJRm9yIHRoZSBjYXNlIG9mIGRlcml2YXRpb24gd2l0aGluIGEgZ2VuZXJpYyBib2R5IGhvd2V2ZXIsIGRpc2FsbG93IHRoZQoJZGVyaXZhdGlvbiBpZiB0aGUgZGVyaXZlZCB0eXBlIGhhcyBhbiBhbmNlc3RvciB0aGF0IGlzIGEgZm9ybWFsIHR5cGUKCWRlY2xhcmVkIGluIHRoZSBmb3JtYWwgcGFydCBvZiBhbiBlbmNsb3NpbmcgZ2VuZXJpYy4KCShBbmFseXplX09iamVjdF9EZWNsYXJhdGlvbik6IEZvciBwcm90ZWN0ZWQgb2JqZWN0cywgcmVtb3ZlIHRoZSBjaGVjawoJdGhhdCB0aGV5IGNhbm5vdCBjb250YWluIGludGVycnVwdCBoYW5kbGVycyBpZiBub3QgZGVjbGFyZWQgYXQgbGlicmFyeQoJbGV2ZWwuCgkoQWRkX0ludGVyZmFjZV9UYWdfQ29tcG9uZW50cyk6IE5ldyBzdWJwcm9ncmFtIHRvIGFkZCB0aGUgdGFnIGNvbXBvbmVudHMKCWNvcnJlc3BvbmRpbmcgdG8gYWxsIHRoZSBhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZXMgaW1wbGVtZW50ZWQgYnkgYQoJcmVjb3JkIHR5cGUgb3IgYSBkZXJpdmVkIHJlY29yZCB0eXBlLgoJKEFuYWx5emVfUHJpdmF0ZV9FeHRlbnNpb25fRGVjbGFyYXRpb24sIEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUsCglEZXJpdmVkX1R5cGVfRGVjbGFyYXRpb24sIEZpbmRfVHlwZV9OYW1lLCBJbmhlcml0X0NvbXBvbmVudHMsCglQcm9jZXNzX0Z1bGxfVmlldywgUmVjb3JkX1R5cGVfRGVjbGFyYXRpb24pOiBNb2RpZmllZCB0byBnaXZlCglzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcwoJKENvbGxlY3RfSW50ZXJmYWNlcyk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgY29sbGVjdHMgdGhlIGxpc3Qgb2YKCWludGVyZmFjZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgaW1wbGVtZW50ZWQgYnkgdGhlIGFuY2VzdG9ycwoJKFByb2Nlc3NfRnVsbF9WaWV3KTogU2V0IGZsYWcgSGFzX1BhcnRpYWxfQ29uc3RyYWluZWRfVmlldyBhcHByb3ByaWF0ZWx5Cgl3aGVuIHBhcnRpYWwgdmlldyBoYXMgbm8gZGlzY3JpbWluYW50cyBhbmQgZnVsbCB2aWV3IGhhcyBkZWZhdWx0cy4KCShDb25zdHJhaW5fQWNjZXNzKTogUmVqZWN0IGEgY29uc3RyYWludCBvbiBhIGdlbmVyYWwgYWNjZXNzIHR5cGUKCWlmIHRoZSBkaXNjcmltaW5hbnRzIG9mIHRoZSBkZXNpZ25hdGVkIHR5cGUgaGF2ZSBkZWZhdWx0cy4KCShBY2Nlc3NfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IEFzc29jaWF0ZSB0aGUgSXR5cGUgbm9kZSB3aXRoIHRoZSBpbm5lcgoJZnVsbC10eXBlIGRlY2xhcmF0aW9uIG9yIHN1YnByb2dyYW0gc3BlYy4gVGhpcyBpcyByZXF1aXJlZCB0byBoYW5kbGUKCW5lc3RlZCBhbm9ueW1vdXMgZGVjbGFyYXRpb25zLgoJKEFuYWx5emVfUHJpdmF0ZV9FeHRlbnNpb25fRGVjbGFyYXRpb24sIEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUsCglEZXJpdmVkX1R5cGVfRGVjbGFyYXRpb24sIEZpbmRfVHlwZV9OYW1lLCBJbmhlcml0X0NvbXBvbmVudHMsCglQcm9jZXNzX0Z1bGxfVmlldywgUmVjb3JkX1R5cGVfRGVjbGFyYXRpb24pOiBNb2RpZmllZCB0byBnaXZlCglzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcwoJKERlcml2ZV9TdWJwcm9ncmFtcyk6IEFkZGl0aW9uIG9mIGEgbmV3IGZvcm1hbCB0byBpbmRpY2F0ZSBpZgoJd2UgYXJlIGluIHRoZSBjYXNlIG9mIGFuIGFic3RhY3QtaW50ZXJmYWNlIGRlcml2YXRpb24KCShGaW5kX1R5cGVfT2ZfU3VidHlwZV9JbmRpYyk6IE1vdmVkIGZyb20gdGhlIGJvZHkgb2YgdGhlIHBhY2thZ2UKCXRvIHRoZSBzcGVjaWZpY2F0aW9uIGJlY2F1c2UgaXQgaXMgcmVxdWllZCB0byBhbmFseXplIGFsbCB0aGUKCWlkZW50aWZpZXJzIGZvdW5kIGluIGEgbGlzdCBvZiBpbnRlcmZhY2VzCgoJKiBkZWJ1Zy5hZGI6IENvbXBsZXRlIGRvY3VtZW50YXRpb24gb2YgZmxhZyAiLWduYXRkWiIKCgkqIGV4cF9jaDMuYWRiOiBJbXBsZW1lbnQgY29uZmlnIHZlcnNpb24gb2YgcGVyc2lzdGVudF9ic3MgcHJhZ21hCgkoQ2hlY2tfU3RyZWFtX0F0dHJpYnV0ZXMpOiBVc2UgU3RyZWFtX0F0dHJpYnV0ZV9BdmFpbGFibGUgaW5zdGVhZCBvZgoJdGVzdGluZyBmb3IgVFNTIHByZXNlbmNlIHRvIHByb3Blcmx5IGVuZm9yY2UgdmlzaWJpbGl0eSBydWxlcy4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBDb2RlIGNsZWFudXAuIE1vZGlmaWVkIHRvIGNhbGwgdGhlIHN1YnByb2dyYW0KCU1ha2VfQWJzdHJhY3RfSW50ZXJmYWNlc19EVCB0byBnZW5lcmF0ZSB0aGUgc2Vjb25kYXJ5IHRhYmxlcwoJYXNzb2NpYXRlZCB3aXRoIGFic3RyYWN0IGludGVyZmFjZXMuCgkoQnVpbGRfSW5pdF9Qcm9jZWR1cmUpOiBNb2RpZmllZCB0byBpbml0aWFsaXplIGFsbCB0aGUgdGFncwoJY29ycmVzcG9uZGluZy4KCShDb21wb25lbnRfTmVlZHNfU2ltcGxlX0luaXRpYWxpemF0aW9uKTogU2ltaWxhciB0byBvdGhlciB0YWdzLAoJaW50ZXJmYWNlIHRhZ3MgZG8gbm90IG5lZWQgaW5pdGlhbGl6YXRpb24uCgkoRnJlZXplX1JlY29yZF9UeXBlKTogTW9kaWZpZWQgdG8gZ2l2ZSBzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZQoJdHlwZXMuCgkoRXhwYW5kX05fT2JqZWN0X0RlY2xhcmF0aW9uKTogRG8gbm90IGdlbmVyYXRlIGFuIGluaXRpYWxpemF0aW9uIGZvcgoJYSBzY2FsYXIgdGVtcG9yYXJ5IG1hcmtlZCBhcyBpbnRlcm5hbC4KCgkqIGV4cF9jaDYuYWRiIChBZGRfU2ltcGxlX0NhbGxfQnlfQ29weV9Db2RlKTogSGFuZGxlIHByb3Blcmx5IGFuCglpbi1vdXQgcGFyYW1ldGVyIHRoYXQgaXMgYSBjb21wb25lbnQgaW4gYW4gaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlLAoJd2hvc2UgY29uc3RyYWludCBtaWdodCBkZXBlbmQgb24gZGlzY3JpbWluYW50cywgYW5kIHRoYXQgbWF5IGJlCgltaXNhbGlnbmVkIGJlY2F1c2Ugb2YgcGFja2luZyBvciByZXByZXNlbnRhdGlvbiBjbGF1c2VzLgoJKElzX0xlZ2FsX0NvcHkpOiBOZXcgcHJlZGljYXRlIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcG9zc2libHkKCW1pc2FsaWduZWQgaW4tb3V0IGFjdHVhbCBjYW4gYWN0dWFsbHkgYmUgcGFzc2VkIGJ5IGNvcHkvcmV0dXJuLiBUaGlzCglpcyBhbiBlcnJvciBpbiBjYXNlIHRoZSB0eXBlIGlzIGJ5X3JlZmVyZW5jZSwgYW5kIGEgd2FybmluZyBpZiB0aGlzIGlzCgl0aGUgY29uc2VxdWVuY2Ugb2YgYSBERUMgaW1wb3J0IHByYWdtYSBvbiB0aGUgc3VicHJvZ3JhbS4KCShFeHBhbmRfQ2FsbCwgRnJlZXplX1N1YnByb2dyYW0pOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QKCWludGVyZmFjZSB0eXBlcwoJKEV4cGFuZF9JbmxpbmVkX0NhbGwpOiBNYXJrIHRlbXBvcmFyeSBnZW5lcmF0ZWQgZm9yIHRoZSByZXR1cm4gdmFsdWUgYXMKCWludGVybmFsLCBzbyB0aGF0IG5vIHVzZWxlc3Mgc2NhbGFyIG5vcm1hbGl6YXRpb24gaXMgZ2VuZXJhdGVkIGZvciBpdC4KCShFeHBhbmRfTl9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogU2F2ZSB1bmFuYWx5emVkIGJvZHkgc28gY2FsbHMgdG8KCW51bGwgcHJvY2VkdXJlIGNhbiBhbHdheXMgYmUgaW5saW5lZC4KCShFeHBhbmRfTl9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogSWYgdGhpcyBpcyB0aGUgZGVjbGFyYXRpb24gb2YgYSBudWxsCglwcm9jZWR1cmUsIGdlbmVyYXRlIGFuIGV4cGxpY2l0IGVtcHR5IGJvZHkgZm9yIGl0LgoKCSogZXhwX3V0aWwuYWRzLCBleHBfdXRpbC5hZGIgKEZpbmRfSW50ZXJmYWNlX0FEVCk6IE5ldyBzdWJwcm9ncmFtLgoJR2l2ZW4gYSB0eXBlIGltcGxlbWVudGluZyBhbiBpbnRlcmZhY2UsIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcKCWFjY2Vzc19kaXNwX3RhYmxlIHZhbHVlLgoJKEZpbmRfSW50ZXJmYWNlX1RhZyk6IE5ldyBzdWJwcm9ncmFtLiBHaXZlbiBhIHR5cGUgaW1wbGVtZW50aW5nIGFuCglpbnRlcmZhY2UsIHJldHVybnMgdGhlIHJlY29yZCBjb21wb25lbnQgY29udGFpbmluZyB0aGUgdGFnIG9mIHRoZQoJaW50ZXJmYWNlLgoJKEZpbmRfSW50ZXJmYWNlX1RhZyk6IE5ldyBvdmVybG9hZGVkIHN1YnByb2dyYW0uIFN1YnNpZGlhcnkgdG8gdGhlCglwcmV2aW91cyBvbmVzIHRoYXQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHRhZyBhbmQgYWNjZXNzX2Rpc3BfdGFibGUKCWVudGl0aWVzLgoJKElzX1ByZWRlZmluZWRfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogRGV0ZXJtaW5lcyBpZiBhIHN1YnByb2dyYW0KCWlzIGEgcHJlZGVmaW5lZCBwcmltaXRpdmUgb3BlcmF0aW9uLgoJKEV4cGFuZF9TdWJ0eXBlX0Zyb21fRXhwcik6IElmIHRoZSBleHByZXNzaW9uIGlzIGEgc2VsZWN0ZWQgY29tcG9uZW50Cgl3aXRoaW4gYW4gaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlLCBjb21wdXRlIGl0cyBhY3R1YWwgc3VidHlwZSwgYmVjYXVzZQoJdGhlIGNvbXBvbmVudCBtYXkgZGVwZW5kIG9uIHRoZSBkaXNjcmltaW5hbnRzIG9mIHRoZSBlbmNsb3NpbmcgcmVjb3JkLgoKCSogaS1jcHAuYWRzLCBpLWNwcC5hZGI6CglUaGlzIHBhY2thZ2UgaGFzIGJlZW4gbGVmdCBhdmFpbGFibGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cwoJdmVyc2lvbnMgb2YgdGhlIGZyb250ZW5kLiBBcyBwYXJ0IG9mIHRoZSBuZXcgbGF5b3V0IHRoaXMgaXMgbm93IGEKCWR1bW15IHBhY2thZ2UgdGhhdCB1c2VzIGRlY2xhcmF0aW9ucyBhdmFpbGFibGUgYXQgYS10YWdzLmFkcwoKCSogcGFyLWNoMy5hZGIgKFBfSWRlbnRpZmllcl9EZWNsYXJhdGlvbnMpOiBHaXZlIGFuIGVycm9yIGZvciB1c2Ugb2YKCSJjb25zdGFudCBhY2Nlc3MiIGFuZCAiYWxpYXNlZCBbY29uc3RhbnRdIGFjY2VzcyIgd2hlbiBub3QgY29tcGlsaW5nCgl3aXRoIC1nbmF0MDUuCglTdXBwcmVzcyBBZGEgMjAwNSBrZXl3b3JkIHdhcm5pbmcgaWYgLWduYXR3WSB1c2VkCgkoUF9JZGVudGlmaWVyX0RlY2xhcmF0aW9ucyk6IEFkZCBzdXBwb3J0IGZvciBvYmplY3QgZGVjbGFyYXRpb25zIHdpdGgKCWFjY2VzcyBkZWZpbml0aW9ucy4KCShQcml2YXRlX0V4dGVuc2lvbl9EZWNsYXJhdGlvbik6IENvbXBsZXRlIHRoZSBkb2N1bWVudGF0aW9uCgkoUF9EZXJpdmVkX1R5cGVfRGVmX09yX1ByaXZhdGVfRXh0X0RlY2wpOiBGaWxsIHRoZSBpbnRlZmFjZV9saXN0CglhdHRyaWJ1dGUgaW4gY2FzZSBvZiBwcml2YXRlIGV4dGVuc2lvbiBkZWNsYXJhdGlvbgoJKFBfVHlwZV9EZWNsYXJhdGlvbik6IE1hcmsgYXMgImFic3RyYWN0IiB0aGUgdHlwZSBkZWNsYXJhdGlvbnMKCWNvcnJlc3BvbmRpbmcgd2l0aCBwcm90ZWN0ZWQsIHN5bmNocm9uaXplZCBhbmQgdGFzayBpbnRlcmZhY2VzCgkoUF9EZWNsYXJhdGl2ZV9JdGVtcyk6ICJub3QiIGFuZCAib3ZlcnJpZGluZyIgYXJlIG92ZXJyaWRpbmcgaW5kaWNhdG9ycwoJZm9yIGEgc3VicHJvZ3JhbSBvciBpbnN0YW5jZSBkZWNsYXJhdGlvbi4KCgkqIHNlbV9jaDEyLmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX0luc3RhbnRpYXRpb24pOiBWZXJpZnkgdGhhdCBhbgoJaW5zdGFudGlhdGlvbiB0aGF0IGlzIGEgZGlzcGF0Y2hpbmcgb3BlcmF0aW9uIGhhcyBjb250cm9sbGluZyBhY2Nlc3MKCXBhcmFtZXRlcnMgdGhhdCBhcmUgbnVsbCBleGNsdWRpbmcuCglTYXZlIGFuZCByZXN0b3JlIEFkYV9WZXJzaW9uX0V4cGxpY2l0LCBmb3IgaW1wbGVtZW50YXRpb24gb2YgQUktMzYyCgkoVmFsaWRhdGVfRGVyaXZlZF9UeXBlX0luc3RhbmNlKTogQWRkIGNoZWNrIGZvciBhYnN0cmFjdCBpbnRlcmZhY2UKCXR5cGVzLgoJKEFuYWx5emVfRm9ybWFsX1BhY2thZ2UpOiBFc3RhYmxpc2ggSW5zdGFudGlhdGlvbiBzb3VyY2UgZm9yIHRoZSBjb3B5IG9mCgl0aGUgZ2VuZXJpYyB0aGF0IGlzIGNyZWF0ZWQgdG8gcmVwcmVzZW50IHRoZSBmb3JtYWwgcGFja2FnZS4KCShBbmFseXplX1BhY2thZ2VfSW5zdGFudGlhdGlvbik6IEluc3RhbnRpYXRlIGJvZHkgaW1tZWRpYXRlbHkgaWYgdGhlCglwYWNrYWdlIGlzIGEgcHJlZGVmaW5lZCB1bml0IHRoYXQgY29udGFpbnMgaW5saW5lZCBzdWJwcm9ncmFtcywgYW5kCgl3ZSBhcmUgY29tcGlsaW5nIGZvciBhIENvbmZpZ3VyYWJsZV9SdW5fVGltZS4KCShJbnN0YW50aWF0ZV9Gb3JtYWxfU3VicHJvZ3JhbSk6IEluZGljYXRlIHRoYXQgbnVsbCBkZWZhdWx0IHN1YnByb2dyYW0KCUlmIHRoZSBwcm9ncmFtIGhhcyBhIG51bGwgZGVmYXVsdCwgZ2VuZXJhdGUgYW4gZW1wdHkgYm9keSBmb3IgaXQuCgoJKiBzZW1fY2g2LmFkYiwgc2VtX2NoOS5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbXNfRGVjbGFyYXRpb24pOiBVcGRhdGUKCWVycm9yIG1lc3NhZ2UgY29uZGl0aW9uLCBudWxsIHByb2NlZHVyZXMgYXJlIGNvcnJlY3RseSBkZXRlY3RlZCBub3cuCgkoTmV3X092ZXJsb2FkZWRfRW50aXR5KTogQnlwYXNzIHRyaXZpYWwgb3ZlcnJpZGluZyBpbmRpY2F0b3IgY2hlY2sKCWZvciBzdWJwcm9ncmFtcyBpbiB0aGUgY29udGV4dCBvZiBwcm90ZWN0ZWQgdHlwZXMuIEluc3RlYWQsIHRoZQoJaW5kaWNhdG9yIGlzIGV4YW1pbmVkIGluIFNlbV9DaDkgd2hpbGUgYW5hbHlzaW5nIHRoZSBzdWJwcm9ncmFtCglkZWNsYXJhdGlvbi4KCShDaGVja19PdmVycmlkaW5nX0luZGljYXRvcik6IENoZWNrIGNvbnNpc3RlbmN5IG9mIG92ZXJyaWRpbmcgaW5kaWNhdG9yCglvbiBzdWJwcm9ncmFtIHN0dWJzIGFzIHdlbGwuCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogRGlhZ25vc2UgbnVsbCBwcm9jZWR1cmVzIGRlY2xhcmVkIGF0Cgl0aGUgbGlicmFyeSBsZXZlbC4KCShBbmFsaXplX1N1YnByb2dyYW1fU3BlY2lmaWNhdGlvbik6IFdoZW4gYW5hbHl6aW5nIGEgc3VicHJvZ3JhbSBpbiB3aGljaAoJdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGZvcm1hbCBpcyBhIGNvbmN1cnJlbnQgdHlwZSwgcmVwbGFjZSB0aGlzIHR5cGUKCWJ5IHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZCB0eXBlLgoJKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogVW5kbyB0aGUgcHJldmlvdXMgd29yay4KCShBbmFseXplX1Byb2NlZHVyZV9DYWxsKTogSWYgdGhlIGNhbGwgaGFzIHRoZSBmb3JtIE9iamVjdC5PcCwgdGhlCglhbmFseXNpcyBvZiB0aGUgcHJlZml4IGVuZHMgdXAgYW5hbHl6aW5nIHRoZSBjYWxsIGl0c2VsZiwgYWZ0ZXIgd2hpY2gKCXdlIGFyZSBkb25lLgoJKEhhc19JbnRlcmZhY2VfRm9ybWFscyk6IE5ldyBzdWJwcm9ncmFtIHN1YnNpZGlhcnkgdG8gYW5hbHl6ZQoJc3VicHJvZ3JhbV9zcGVjaWZpY2F0aW9uIHRoYXQgcmV0dXJucyB0cnVlIGlmIHNvbWUgbm9uCgljbGFzcy13aWRlIGludGVyZmFjZSBzdWJwcm9ncmFtIGlzIGZvdW5kCgkoTmV3X092ZXJsb2FkZWRfRW50aXR5KTogTW9kaWZpZWQgdG8gZ2l2ZSBzdXBwb3J0IHRvIGFic3RyYWN0CglpbnRlcmZhY2UgdHlwZXMKCShDb25mb3JtaW5nX1R5cGVzKTogSW4gQWRhIDIwMDUgbW9kZSwgY29uZm9ybWFuY2UgY2hlY2tpbmcgb2YgYW5vbnltb3VzCglhY2Nlc3MgdG8gc3VicHJvZ3JhbXMgbXVzdCBiZSByZWN1cnNpdmUuCgkoSXNfVW5jaGVja2VkX0NvbnZlcnNpb24pOiBJbXByb3ZlIHRoZSB0ZXN0IHRoYXQgcmVjb2duaXplcwoJaW5zdGFudGlhdGlvbnMgb2YgVW5jaGVja2VkX0NvbnZlcnNpb24sIGFuZCBhbGxvd3MgdGhlbSBpbiBib2RpZXMgdGhhdAoJYXJlIHRvIGJlIGlubGluZWQgYnkgdGhlIGZyb250LWVuZC4gV2hlbiB0aGUgYm9keSBjb21lcyBmcm9tIGFuCglpbnN0YW50aWF0aW9uLCBhIHJlZmVyZW5jZSB0byBVbmNoZWNrZWRfQ29udmVyc2lvbiB3aWxsIGJlIGFuCglFeHBhbmRlZF9OYW1lLCBldmVuIHRob3VnaCB0aGUgYm9keSBoYXMgbm90IGJlZW4gYW5hbHl6ZWQgeWV0LgoJUmVwbGFjZSBJc19PdmVycmlkaW5nIGFuZCBOb3RfT3ZlcnJpZGluZyBpbiBzdWJwcm9ncmFtX2luZGljYXRpb24gd2l0aAoJTXVzdF9PdmVycmlkZSBhbmQgTXVzdF9Ob3RfT3ZlcnJpZGUsIHRvIGJldHRlciBleHByZXNzIGludGVudCBvZiBBSS4KCShBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IElmIGFuIG92ZXJyaWRpbmcgaW5kaWNhdG9yIGlzIGdpdmVuLCBjaGVjawoJdGhhdCBpdCBpcyBjb25zaXN0ZW50IHdpdGggdGhlIG92ZXJyaW5kaW5nIHN0YXR1cyBvZiB0aGUgc3VicHJvZ3JhbQoJYXQgdGhpcyBwb2ludC4KCShBbmFseXplX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBJbmRpY2F0ZSB0aGF0IGEgbnVsbCBwcm9jZWR1cmUgaXMKCWFsd2F5cyBpbmxpbmVkLgoJSWYgdGhlIHN1YnByb2dyYW0gaXMgYSBudWxsIHByb2NlZHVyZSwgaW5kaWNhdGUgdGhhdCBpdCBkb2VzIG5vdCBuZWVkCglhIGNvbXBsZXRpb24uCgoJKiBzZW1fZGlzcC5hZGIgKENoZWNrX0NvbnRyb2xsaW5nX1R5cGUpOiBHaXZlIHN1cHBvcnQgdG8gZW50aXRpZXMKCWF2YWlsYWJsZSB0aHJvdWdoIGxpbWl0ZWQtd2l0aCBjbGF1c2VzLgoJKENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IEEgc3R1YiBhY3RzIGxpa2UgYSBib2R5LCBhbmQgdGhlcmVmb3JlIGlzCglhbGxvd2VkIGFzIHRoZSBsYXN0IHByaW1pdGl2ZSBvZiBhIHRhZ2dlZCB0eXBlIGlmIGl0IGhhcyBubyBwcmV2aW91cwoJc3BlYy4KCShPdmVycmlkZV9EaXNwYXRjaGluZ19PcGVyYXRpb24sIENoZWNrX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IE1vZGlmaWVkCgl0byBnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzCgoJKiBzZW1fcmVzLmFkYiAoVmFsaWRfQ29udmVyc2lvbik6IFBlcmZvcm0gYW4gYWNjZXNzaWJpbGl0eSBsZXZlbCBjaGVjawoJaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHRhcmdldCB0eXBlIGlzIGFuIGFub255bW91cyBhY2Nlc3MgdHlwZSBvZiBhbgoJb2JqZWN0IG9yIGNvbXBvbmVudCAodGhhdCBpcywgd2hlbiBJc19Mb2NhbF9Bbm9ueW1vdXNfQWNjZXNzIGlzIHRydWUpLgoJUHJldmVudCB0aGUgc3BlY2lhbCBjaGVja3MgZm9yIGNvbnZlcnNpb25zIG9mIGFjY2VzcyBkaXNjcmltaW5hbnRzIGluCgl0aGUgY2FzZSB3aGVyZSB0aGUgZGlzY3JpbWluYW50IGJlbG9uZ3MgdG8gYSBub25saW1pdGVkIHR5cGUsIHNpbmNlCglzdWNoIGRpc2NyaW1pbmFudHMgaGF2ZSB0aGVpciBhY2Nlc3NpYmlsaXR5IGxldmVsIGRlZmluZWQgaW4gdGhlIHNhbWUKCXdheSBhcyBhIG5vcm1hbCBjb21wb25lbnQgb2YgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlLgoJKFJlc29sdmVfQWxsb2NhdG9yKTogV2hlbiBhbiBhbGxvY2F0b3IncyBkZXNpZ25hdGVkIHR5cGUgaXMgYSBjbGFzcy13aWRlCgl0eXBlLCBjaGVjayB0aGF0IHRoZSBhY2Nlc3NpYmlsaXR5IGxldmVsIG9mIHR5cGUgZ2l2ZW4gaW4gdGhlCglhbGxvY2F0b3IncyBleHByZXNzaW9uIG9yIHN1YnR5cGUgaW5kaWNhdGlvbiBpcyBub3Qgc3RhdGljYWxseSBkZWVwZXIKCXRoYW4gdGhlIGxldmVsIG9mIHRoZSBhbGxvY2F0b3IncyBhY2Nlc3MgdHlwZS4KCShDaGVja19EaXNjcmltaW5hbnRfVXNlKTogRGlhZ25vc2UgZGlzY3JpbWluYW50IGdpdmVuIGJ5IGFuIGV4cGFuZGVkCgluYW1lIGluIGEgZGlzY3JpbWluYW50IGNvbnN0cmFpbnQgb2YgYSByZWNvcmQgY29tcG9uZW50LgoJKFJlc29sdmVfRXhwbGljaXRfRGVyZWZlcmVuY2UpOiBEbyBub3QgY2hlY2sgd2hldGhlciB0aGUgdHlwZSBpcwoJaW5jb21wbGV0ZSB3aGVuIHRoZSBkZXJlZmVyZW5jZSBpcyBhIHVzZSBvZiBhbiBhY2Nlc3MgZGlzY3JpbWluYW50IGluCglhbiBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUuCgkoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBIYW5kbGUgY29udmVyc2lvbnMgdG8gYWJzdHJhY3QgaW50ZXJmYWNlCgl0eXBlcy4KCShWYWxpZF9UYWdnZWRfQ29udmVyc2lvbik6IFRoZSBjb252ZXJzaW9uIG9mIGEgdGFnZ2VkIHR5cGUgdG8gYW4KCWFic3RyYWN0IGludGVyZmFjZSB0eXBlIGlzIGFsd2F5cyB2YWxpZC4KCShWYWxpZF9Db252ZXJzaW9uKTogTW9kaWZpZWQgdG8gZ2l2ZSBzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcwoJKFJlc29sdmVfQWN0dWFscyk6IEVuYWJsZSBmdWxsIGVycm9yIHJlcG9ydGluZyBvbiB2aWV3IGNvbnZlcnNpb25zCgliZXR3ZWVuIHVucmVsYXRlZCBieV9yZWZlcmVuY2UgYXJyYXkgdHlwZXMuCglUaGUgcnVsZSBmb3IgdmlldyBjb252ZXJzaW9ucyBvZiBhcnJheXMgd2l0aCBhbGlhc2VkIGNvbXBvbmVudHMgaXMKCXdlYWtlbmVkIGluIEFkYSAyMDA1LgoJQ2FsbCB0byBvYnNvbGVzY2VudCBzdWJwcm9ncmFtIGlzIG5vdyBjb25zaWRlcmVkIHRvIGJlIGEgdmlvbGF0aW9uIG9mCglwcmFnbWEgUmVzdHJpY3Rpb25zIChOb19PYnNvbGVzY2VudF9GZWF0dXJlcykuCgkoQ2hlY2tfRGlyZWN0X0Jvb2xlYW5fT3BlcmF0b3IpOiBJZiB0aGUgYm9vbGVhbiBvcGVyYXRpb24gaGFzIGJlZW4KCWNvbnN0YW50LWZvbGRlZCwgdGhlcmUgaXMgbm90aGluZyB0byBjaGVjay4KCShSZXNvbHZlX0NvbXBhcmlzb25fT3AsIFJlc29sdmVfRXF1YWxpdHlfT3AsIFJlc29sdmVfQm9vbGVhbl9PcCk6IERlZmVyCgljaGVjayBvbiBwb3NzaWJsZSB2aW9sYXRpb24gb2YgcmVzdHJpY3Rpb24gTm9fRGlyZWN0X0Jvb2xlYW5fT3BlcmF0b3JzCgl1bnRpbCBhZnRlciBleHBhbnNpb24gb2Ygb3BlcmFuZHMsIHRvIHByZXZlbnQgc3B1cmlvdXMgZXJyb3JzIHdoZW4KCW9wZXJhdGlvbiBpcyBjb25zdGFudC1mb2xkZWQuCgoJKiBzZW1fdHlwZS5hZHMsIHNlbV90eXBlLmFkYiAoQ292ZXJzLCBJbnRlcnNlY3RfVHlwZXMsIFNwZWNpZmljX1R5cGUsCglIYXNfQ29tcGF0aWJsZV9UeXBlKTogTW9kaWZpZWQgdG8gZ2l2ZSBzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZQoJdHlwZXMuCgkoSW50ZXJmYWNlX1ByZXNlbnRfSW5fQW5jZXN0b3IpOiBOZXcgZnVuY3Rpb24gdG8gdGhlY2sgaWYgc29tZSBhbmNlc3RvcgoJb2YgYSBnaXZlbiB0eXBlIGltcGxlbWVudHMgYSBnaXZlbiBpbnRlcmZhY2UKCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX0NhbGwpOiBIYW5kbGUgcHJvcGVybHkgYW4gaW5kaXJlY3QgY2FsbCB3aG9zZQoJcHJlZml4IGlzIGEgcGFyYW1ldGVybGVzcyBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gYWNjZXNzX3RvX3Byb2NlZHVyZS4KCShUcmFuc2Zvcm1fT2JqZWN0X09wZXJhdGlvbik6IEhhbmRsZSBwcm9wZXJseSBmdW5jdGlvbiBjYWxscyBvZiB0aGUKCWZvcm0gT2JqLk9wIChYKSwgd2hpY2ggcHJpb3IgdG8gYW5hbHlzaXMgYXBwZWFyIGFzIGluZGV4ZWQgY29tcG9uZW50cy4KCShBbmFseXplX09uZV9DYWxsKTogQ29tcGxldGUgdGhlIGVycm9yIG5vdGlmaWNhdGlvbiB0byBoZWxwIG5ldyBBZGEKCTIwMDUgdXNlcnMuCgkoQW5hbHl6ZV9BbGxvY2F0b3IpOiBGb3IgYW4gYWxsb2NhdG9yIHdpdGhvdXQgYW4gaW5pdGlhbCB2YWx1ZSwgd2hlcmUKCXRoZSBkZXNpZ25hdGVkIHR5cGUgaGFzIGEgY29uc3RyYWluZWQgcGFydGlhbCB2aWV3LCBhIGRpc2NyaW1pbmFudAoJY29uc3RyYWludCBpcyBpbGxlZ2FsLgoKMjAwNS0wNi0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLXRleHRpby5hZGIgKFNldF9Db2wpOiBGaXggdHdvIGVycm9ycyBub3RpY2VkIHJlY2VudGx5LCBoYXZpbmcgdG8KCWRvIHdpdGggdHJlYXRtZW50IG9mIFNldF9Db2wgd2hlbiBwb3NpdGlvbmVkIGF0IGVuZCBvZiBsaW5lIGNoYXJhY3Rlci4KCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYXRyZWUuYWRiOiAoRWxpc3QqKTogUHJvdGVjdCBhZ2FpbnN0IHVuaW5pdGlhbGl6ZWQgZmllbGQKCjIwMDUtMDYtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGNoZWNrcy5hZGIgKEluc3RhbGxfTnVsbF9FeGNsdWRpbmdfQ2hlY2spOiBEbyBub3QgZ2VuZXJhdGUgY2hlY2tzCglmb3IgYW4gYXR0cmlidXRlIHJlZmVyZW5jZSB0aGF0IHJldHVybnMgYW4gYWNjZXNzIHR5cGUuCgkoQXBwbHlfRGlzY3JpbWluYW50X0NoZWNrKTogTm8gbmVlZCBmb3IgY2hlY2sgaWYgKGRlc2lnbmF0ZWQpIHR5cGUgaGFzCgljb25zdHJhaW5lZCBwYXJ0aWFsIHZpZXcuCgoJKEFwcGx5X0Zsb2F0X0NvbnZlcnNpb25fQ2hlY2spOiBHZW5lcmF0ZSBhIHNob3J0LWNpcmN1aXQgZXhwcmVzc2lvbiBmb3IKCWJvdGggYm91bmQgY2hlY2tzLCByYXRoZXIgdGhhbiBhIGNvbmp1bmN0aW9uLgoJKEluc2VydF9WYWxpZF9DaGVjayk6IElmIHRoZSBleHByZXNzaW9uIGlzIGFuIGFjdHVhbCB0aGF0IGlzIGFuIGluZGV4ZWQKCWNvbXBvbmVudCBvZiBhIGJpdC1wYWNrZWQgYXJyYXksIGZvcmNlIGV4cGFuc2lvbiBvZiB0aGUgcGFja2VkIGVsZW1lbnQKCXJlZmVyZW5jZSwgYmVjYXVzZSBpdCBpcyBzcGVjaWZpY2FsbHkgaW5oaWJpdGVkIGVsc2V3aGVyZS4KCjIwMDUtMDYtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogY2xlYW4uYWRiIChDbGVhbl9Qcm9qZWN0KTogQ29ycmVjdGx5IGRlbGV0ZSBleGVjdXRhYmxlIHNwZWNpZmllZCBhcwoJYWJzb2x1dGUgcGF0aCBuYW1lcy4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IEFsbG93IHJlbGF0aXZlIGV4ZWN1dGFibGUgcGF0aCBuYW1lcyB3aXRoCglkaXJlY3RvcnkgaW5mb3JtYXRpb24gZXZlbiB3aGVuIHByb2plY3QgZmlsZXMgYXJlIHVzZWQuCgkoQ2hhbmdlX1RvX09iamVjdF9EaXJlY3RvcnkpOiBGYWlsIGdyYWNlZnVsbHkgd2hlbiB1bmFibGUgdG8gY2hhbmdlCgljdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIG9iamVjdCBkaXJlY3Rvcnkgb2YgYSBwcm9qZWN0LgoJKEduYXRtYWtlKTogUmVtb3ZlIGV4Y2VwdGlvbiBoYW5kbGVyIHRoYXQgY291bGQgbm8gbG9uZ2VyIGJlIGV4ZXJjaXplZAoJKENvbXBpbGVfU291cmNlcy5Db21waWxlKTogVXNlIGRlZXAgY29waWVzIG9mIGFyZ3VtZW50cywgYXMgc29tZSBvZiB0aGVtCgltYXkgYmUgZGVhbGxvY2F0ZWQgYnkgTm9ybWFsaXplX0FyZ3VtZW50cy4KCShDb2xsZWN0X0FyZ3VtZW50cyk6IEVsaW1pbmF0ZSBlbXB0eSBhcmd1bWVudHMKCgkqIGduYXRjbWQuYWRiIChBbGxfUHJvamVjdHMpOiBOZXcgQm9vbGVhbiBmbGFnLCBpbml0aWFsaXplZCB0byBGYWxzZSwKCWFuZCBzZXQgdG8gVHJ1ZSB3aGVuIC1VIGlzIHVzZWQgZm9yIEdOQVQgUFJFVFRZIG9yIEdOQVQgTUVUUklDLgoJKENoZWNrX1Byb2plY3QpOiBSZXR1cm4gRmFsc2Ugd2hlbiBQcm9qZWN0IGlzIE5vX1Byb2plY3QuIFJldHVybiBUcnVlCgl3aGVuIEFsbF9Qcm9qZWN0cyBpcyBUcnVlLgoJKEdOQVRDbWQpOiBSZWNvZ25pemUgc3dpdGNoIC1VIGZvciBHTkFUIFBSRVRUWSBhbmQgR05BVCBNRVRSSUMgYW5kIHNldAoJQWxsX1Byb2plY3RzIHRvIFRydWUuCglNaW5vciByZWZvcm1hdHRpbmcKCjIwMDUtMDYtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiIChJc19Mb2NhbF9Bbm9ueW1vdXNfQWNjZXNzKTogTmV3IGZsYWcgb24KCWFub255bW91cyBhY2Nlc3MgdHlwZXMsIHRvIGluZGljYXRlIHRoYXQgdGhlIGFjY2Vzc2liaWxpdHkgbGV2ZWwgb2YKCXRoZSB0eXBlIGlzIGRldGVybWluZWQgYnkgdGhhdCBvZiB0aGUgZW5jbG9zaW5nIGRlY2xhcmF0aW9uLgoJKEhhc19QZXJzaXN0ZW50X0JTUyk6IE5ldyBmbGFnCgkoU2V0X0lzX1ByaW1pdGl2ZV9XcmFwcGVyKTogVXBncmFkZSB0aGUgYmFycmllciB0byBhbGxvdyB0aGUgdXNhZ2UKCW9mIHRoaXMgYXR0cmlidXRlIHdpdGggZnVuY3Rpb25zLgoJKElzX1ByaW1pdGl2ZV9XcmFwcGVyKTogUmVtb3ZlIHRoZSBiYXJyaWVyLgoJKEhhc19TcGVjaWZpZWRfU3RyZWFtX0lucHV0LCBIYXNfU3BlY2lmaWVkX1N0cmVhbV9PdXRwdXQsCglIYXNfU3BlY2lmaWVkX1N0cmVhbV9SZWFkLCBIYXNfU3BlY2lmaWVkX1N0cmVhbV9Xcml0ZSk6CglOZXcgc3VicHJvZ3JhbXMuCgkoU2V0X0hhc19TcGVjaWZpZWRfU3RyZWFtX0lucHV0LCBTZXRfSGFzX1NwZWNpZmllZF9TdHJlYW1fT3V0cHV0LAoJU2V0X0hhc19TcGVjaWZpZWRfU3RyZWFtX1JlYWQsIFNldF9IYXNfU3BlY2lmaWVkX1N0cmVhbV9Xcml0ZSk6CglOZXcgc3VicHJvZ3JhbXMuCgkoSXNfUHVyZV9Vbml0X0FjY2Vzc19UeXBlKTogTmV3IGZsYWcKCShBYnN0cmFjdF9JbnRlcmZhY2VzKTogQ29tcGxldGUgdGhlIGFzc2VydGlvbiB0byBjb3ZlciBhbGwgdXNhZ2VzLgoJKFNldF9Jc19JbnRlcmZhY2UpOiBDb21wbGV0ZSB0aGUgYXNzZXJ0aW9uIHRvIGNvdmVyIGFsbCB1c2FnZXMuCgkoSXNfUHJpbWl0aXZlX1dyYXBwZXIpOiBOZXcgYXR0cmlidXRlLgoJKElzX09ic29sZXNjZW50KTogTm93IGFwcGxpZXMgdG8gYWxsIGVudGl0aWVzICh0aG91Z2ggaXQgaXMgb25seSBzZXQKCWZvciBzdWJwcm9ncmFtcyBjdXJyZW50bHkpCglOZXcgZmxhZzogIEhhc19Db25zdHJhaW5lZF9QYXJ0aWFsX1ZpZXcsIHRvIGltcGxlbWVudGUgQWRhIDIwMDUgQUktMzYzLAoJd2hpY2ggc29sdmVzIHZhcmlvdXMgcHJvYmxlbXMgY29uY2VybmluZyBhY2Nlc3Mgc3VidHlwZXMuCgkoSGFzX1BlcnNpc3RlbnRfQlNTKTogTmV3IGZsYWcKCShJc19QcmltaXRpdmVfV3JhcHBlciwgU2V0X1ByaW1pdGl2ZV9XcmFwcGVyKTogQ29kZSBjbGVhbnVwLgoJUmVtb3ZlIHRoZXNlIHN1YnByb2dyYW1zIGJlY2F1c2UgdGhpcyBhdHRyaWJ1dGUgaXMgY3VycmVudGx5Cglub3QgdXNlZC4KCU5ldyBlbnRpdHkgZmxhZ3M6CglIYXNfU3BlY2lmaWVkX1N0cmVhbV9JbnB1dCAoRmxhZzE5MCkKCUhhc19TcGVjaWZpZWRfU3RyZWFtX091dHB1dCAoRmxhZzE5MSkKCUhhc19TcGVjaWZpZWRfU3RyZWFtX1JlYWQgKEZsYWcxOTIpCglIYXNfU3BlY2lmaWVkX1N0cmVhbV9Xcml0ZSAoRmxhZzE5MykKCVByZXNlbnQgaW4gYWxsIHR5cGUgYW5kIHN1YnR5cGUgZW50aXRpZXMuIFNldCBmb3IgYSBnaXZlbiB2aWV3IGlmIHRoZQoJY29ycmVzcG9uZGluZyBzdHJlYW0tb3JpZW50ZWQgYXR0cmlidXRlIGhhcyBiZWVuIGRlZmluZWQgYnkgYW4KCWF0dHJpYnV0ZSBkZWZpbml0aW9uIGNsYXVzZS4gV2hlbiBzdWNoIGEgY2xhdXNlIG9jY3VycywgYSBUU1MgaXMgc2V0CglvbiB0aGUgdW5kZXJseWluZyBmdWxsIHZpZXc7IHRoZSBmbGFncyBhcmUgdXNlZCB0byB0cmFjayB2aXNpYmlsaXR5IG9mCgl0aGUgYXR0cmlidXRlIGRlZmluaXRpb24gY2xhdXNlIGZvciBwYXJ0aWFsIG9yIGluY29tcGxldGUgdmlld3MuCgkoSXNfUHVyZV9Vbml0X0FjY2Vzc19UeXBlKTogTmV3IGZsYWcKCUNsYXJpZnkgdXNlIG9mIElzX0ludGVybmFsLgoJKElzX1ByaW1pdGl2ZV9XcmFwcGVyKTogTmV3IGF0dHJpYnV0ZSBwcmVzZW50IGluIHByaW1pdGl2ZSBzdWJwcm9ncmFtcwoJaW50ZXJuYWxseSBnZW5lcmF0ZWQgdG8gd3JhcCB0aGUgaW52b2NhdGlvbiBvZiB0YXNrcyBhbmQgcHJvdGVjdGVkCgl0eXBlcyB0aGF0IGltcGxlbWVudCBpbnRlcmZhY2VzLgoJKEltcGxlbWVudGF0aW9uX0Jhc2VfVHlwZSk6IERvY3VtZW50YXRpb24gY29ycmVjdGlvbgoJKElzX09ic29sZXNjZW50KTogTm93IGFwcGxpZXMgdG8gYWxsIGVudGl0aWVzICh0aG91Z2ggaXQgaXMgb25seSBzZXQKCWZvciBzdWJwcm9ncmFtcyBjdXJyZW50bHkpCglOZXcgZmxhZzogIEhhc19Db25zdHJhaW5lZF9QYXJ0aWFsX1ZpZXcsIHRvIGltcGxlbWVudCBBZGEgMjAwNSBBSS0zNjMsCgl3aGljaCBzb2x2ZXMgdmFyaW91cyBwcm9ibGVtcyBjb25jZXJuaW5nIGFjY2VzcyBzdWJ0eXBlcy4KCgkqIGV4cF9jaDkuYWRiIChUeXBlX0NvbmZvcm1hbnRfUGFyYW1ldGVycyk6IEludHJvZHVjZSBtb2RlIGNvbmZvcm1hbmNlCglmb3IgZXhhbWluZWQgcGFyYW1ldGVycy4gSWRlbnRpZnkgdW5lcXVhbCBwYXJhbWV0ZXIgbGlzdCBsZW5ndGhzIGFzCglub24tY29uZm9ybWFudCBwYXJhbWV0ZXJzLgoJKE92ZXJyaWRpbmdfUG9zc2libGUpOiBEbyBub3QgY2hlY2sgZm9yICJBbGwiIHF1YWxpZmllciBpbiBkZWNsYXJhdGlvbgoJb2YgY29udHJvbGxpbmcgYWNjZXNzIHBhcmFtZXRlciwgZm9sbG93aW5nIHByZXNjcmlwdGlvbiBvZiBBSS00MDQuCgkoQnVpbGRfRW50cnlfV3JhcHBlcl9TcGVjLCBCdWlsZF9FbnRyeV9XcmFwcGVyX0JvZHkpOiBOZXcgc3VicHJvZ3JhbXMKCXRoYXQgYnVpbGQgdGhlIHByb2NlZHVyZSBib2R5IHRoYXQgd3JhcHMgYW4gZW50cnkgaW52b2NhdGlvbgoJKEJ1aWxkX0NvcnJlc3BvbmRpbmdfUmVjb3JkLCBCdWlsZF9Qcm90ZWN0ZWRfU3ViX1NwZWNpZmljYXRpb24sCglFeHBhbmRfTl9Qcm90ZWN0ZWRfQm9keSwgRXhwYW5kX05fUHJvdGVjdGVkX1R5cGVfRGVjbGFyYXRpb24sCglFeHBhbmRfTl9UYXNrX0JvZHksIEV4cGFuZF9OX1Rhc2tfVHlwZV9EZWNsYXJhdGlvbik6IE1vZGlmaWVkIHRvCglnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzCgoJKiBmcmVlemUuYWRiIChGcmVlemVfRW50aXR5KTogSXNzdWUgZXJyb3IgbWVzc2FnZSBpZgoJSXNfUHVyZV9Vbml0X0FjY2Vzc19UeXBlIHNldCwgdW5sZXNzIHdlIGFyZSBpbiBBZGEgMjAwNSBtb2RlIGFuZCB0aGUKCXR5cGUgaGFzIG5vIHN0b3JhZ2UgcG9vbCAoQWRhIDIwMDUpIEFJLTM2Ni4KCUFsc28gbW9kaWZpZWQgdG8gZ2l2ZSBzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcwoJKEZyZWV6ZV9TdWJwcm9ncmFtKTogSXNzdWUgYW4gZXJyb3IgZm9yIGEgZGlzcGF0Y2hpbmcgc3VicHJvZ3JhbSB3aXRoIGFuCglJbmxpbmVfQWx3YXlzIHByYWdtYS4KCgkqIHBhci1jaDkuYWRiIChQX1Rhc2tfSXRlbXMpOiBSZXNlcnZlZCB3b3JkcyAibm90IiBvciAib3ZlcnJpZGluZyIgbWF5Cglub3cgYmVnaW4gYW4gZW50cnkgZGVjbGFyYXRpb24uCgkoUF9FbnRyeV9Pcl9TdWJwcm9ncmFtX1dpdGhfSW5kaWNhdG9yKTogTmV3IHByb2NlZHVyZSBpbgoJUF9Qcm90ZWN0ZWRfT3BlcmF0aW9uX0RlY2xhcmF0aW9uX09wdC4gUGFyc2UgYW4gZW50cnkgZGVjbGFyYXRpb24gb3IKCWEgc3VicHJvZ3JhbSBkZWNsYXJhdGlvbiBwcmVjZWRlZCBieSBhbiBvdmVycmlkaW5nIGluZGljYXRvci4KCShQX1Byb3RlY3RlZF9PcGVyYXRpb25fRGVjbGFyYXRpb25fT3B0KTogQWRkIGNhc2UgZm9yIHBhcnNpbmcgZW50cnkKCWRlY2xhcmF0aW9ucyBvciBzdWJwcm9ncmFtIGRlY2xhcmF0aW9ucyBwcmVjZWRlZCBieSByZXNlcnZlZCB3b3JkcwoJIm5vdCIgb3IgIm92ZXJyaWRpbmciLgoJKFBfRW50cnlfRGVjbGFyYXRpb24pOiBVcGRhdGUgY29tbWVudC4gUGFyc2UgYW5kIGNoZWNrIG92ZXJyaWRpbmcKCWluZGljYXRvciwgc2V0IHNlbWFudGljIGZsYWdzIG9mIGVudHJ5IGRlY2xhcmF0aW9ucy4KCShQX1Rhc2spOiBOZXcgZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHByaXZhdGUgYXBwbGllZAoJdG8gYSB0YXNrIHR5cGUgZGVjbGFyYXRpb24uCgkoUF9Qcm90ZWN0ZWQpOiBOZXcgZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHByaXZhdGUgYXBwbGllZAoJdG8gYSB0YXNrIHR5cGUgZGVjbGFyYXRpb24uCgoJKiBzZW1fY2g3LmFkYiAoUHJlc2VydmVfRnVsbF9BdHRyaWJ1dGVzKTogTW9kaWZpZWQgdG8gaGFuZGxlIHRoZSBjYXNlCglpbiB3aGljaCB0aGUgZnVsbCB2aWV3IG9mIGEgdHlwZSBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlIGlzIGEKCWNvbmN1cnJlbnQgdHlwZS4KCShIYXNfT3ZlcnJpZGluZ19QcmFnbWEpOiBSZW1vdmUgb2Jzb2xldGUgaW1wbGVtZW50YXRpb24gb2YgQUktMjE4LgoJRGVjbGFyZV9Jbmhlcml0ZWRfUHJpdmF0ZV9TdWJwcm9ncmFtcyk6IElmIGFuIGV4cGxpY2l0IG9wZXJhdGlvbgoJb3ZlcnJpZGVzIGFuIG9wZXJhdGlvbiB0aGF0IGlzIGluaGVyaXRlZCBpbiB0aGUgcHJpdmF0ZSBwYXJ0LCBtYXJrIHRoZQoJZXhwbGljaXQgb25lIGFzIG92ZXJyaWRpbmcsIHRvIGVuYWJsZSBvdmVycmlkaW5nIGluZGljYXRvciBjaGVja3MuCgkoUHJlc2VydmVfRnVsbF9BdHRyaWJ1dGVzKTogUHJvcGFnYXRlIElzX1VuY2hlY2tlZF9VbmlvbiBhdHRyaWJ1dGUgZnJvbQoJZnVsbCB2aWV3IHRvIHBhcnRpYWwgdmlldywgdG8gc2ltcGxpZnkgaGFuZGxpbmcgaW4gYmFjay1lbmQuCgoJKiBzcHJpbnQuYWRiOiBQcmludCBpbnRlcmZhY2UgbGlzdHMgd2hlcmUgbmVlZGVkOiBkZXJpdmVkIHR5cGVzLAoJcHJvdGVjdGVkIHR5cGVzLCB0YXNrIHR5cGVzLgoJb3V0cHV0ICJpcyBudWxsIiBmb3IgbnVsbCBwcm9jZWR1cmVzLiBQYXJ0IG9mIGltcGxlbWVudGF0aW9uIG9mCgoJKiBzZW1fY2F0LmFkYiAoVmFsaWRhdGVfQWNjZXNzX1R5cGVfRGVjbGFyYXRpb24pOiBJbXBsZW1lbnQgQUktMzY2CglyZWxheGF0aW9uIG9mIHJ1bGVzIGZvciBhY2Nlc3MgdHlwZXMgaW4gcHVyZSwgc2hhcmVkIHBhc3NpdmUgcGFydGl0aW9ucy4KCgkqIGV4cF9zdHJtLmFkYiAoQnVpbGRfTXV0YWJsZV9SZWNvcmRfUmVhZF9Qcm9jZWR1cmUpOiBSZW9yZ2FuaXplIHRvCglmaXJzdCByZWFkIGRpc2NyaW1pbmFudHMgaW50byB0ZW1wb3Jhcnkgb2JqZWN0cywgcGVyZm9ybWluZyBjaGVja3Mgb24KCXRoZSByZWFkIHZhbHVlcywgdGhlbiBwb3NzaWJseSBwZXJmb3JtaW5nIGRpc2NyaW1pbmFudCBjaGVja3Mgb24gdGhlCglhY3R1YWwgKGlmIGl0IGlzIGNvbnN0cmFpbmVkKSwgYW5kIG9ubHkgZmluYWxseSByZWFkaW5nIHRoZSBjb21wb25lbnRzCglpbnRvIGEgY29uc3RyYWluZWQgdGVtcG9yYXJ5IG9iamVjdC4KCShCdWlsZF9FbGVtZW50YXJ5X0lucHV0X0NhbGwpOiBBZGp1c3QgdGhlIHNwZWNpZmljIGNpcmN1aXRyeSBmb3IgdGhlCgljYXNlIG9mIHJlYWRpbmcgZGlzY3JpbWluYW50cyBvZiBhIG11dGFibGUgcmVjb3JkIHR5cGUgdG8gcmVjb2duaXplCgl0aGUgbmV3IGZvcm0gb2YgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5CglCdWlsZF9NdXRhYmxlX1JlY29yZF9SZWFkX1Byb2NlZHVyZS4KCgkqIGV4cF90c3MuYWRzLCBleHBfdHNzLmFkYiAoTWFrZV9Jbml0X1Byb2NfTmFtZSk6IFJlaW1wbGVtZW50IGluIHRlcm1zCglvZiBhIHNpbXBsZSBjYWxsIHRvIE1ha2VfVFNTX05hbWUuCgkoTWFrZV9UU1NfTmFtZV9Mb2NhbCk6IEFkZCB0aGUgVFNTIG5hbWUgYXMgdGhlIGxhc3QgdGhpbmcgaW4gdGhlIG5hbWUKCWJ1ZmZlciwgaW4gb3JkZXIgZm9yIElzX1RTUyB0byB3b3JrIGNvcnJlY3RseSBvbiBsb2NhbCBUU1MgbmFtZXMuCgoJKiBzZW1fYXR0ci5hZHMsIHNlbV9hdHRyLmFkYiAoUmVzb2x2ZV9BdHRyaWJ1dGUsIGNhc2UgJ0FjY2Vzcyk6IFVzZSBmbGFnCglJc19Mb2NhbF9Bbm9ueW1vdXNfQWNjZXNzIHRvIGNoZWNrIGxlZ2FsaXkgb2YgYXR0cmlidXRlcyBpbiB0aGUKCWNvbnRleHQgb2YgIGFjY2VzcyBjb21wb25lbnRzIGFuZCBzdGFuZC1hbG9uZSBhY2Nlc3Mgb2JqZWN0cy4KCShTdHJlYW1fQXR0cmlidXRlX0F2YWlsYWJsZSk6IEluIEFkYSA5NSBtb2RlLCBhIHN0cmVhbSBhdHRyaWJ1dGUgaXMKCXRyZWF0ZWQgYXMgYXZhaWxhYmxlIGZvciBhIGxpbWl0ZWQgcHJpdmF0ZSB0eXBlIGlmIHRoZXJlIGlzIGFuCglhdHRyaWJ1dGVfZGVmaW5pdGlvbl9jbGF1c2UgdGhhdCBhcHBsaWVzIHRvIGl0cyBmdWxsIHZpZXcsIGJ1dCBub3QgaW4KCW90aGVyIGNhc2VzIHdoZXJlIHRoZSBhdHRyaWJ1dGUgaXMgYXZhaWxhYmxlIGZvciB0aGUgZnVsbCB2aWV3Cgkoc3BlY2lmaWNhbGx5LCB0aGUgc29sZSBmYWN0IHRoYXQgdGhlIGZ1bGwgdmlldyBpcyBub24tbGltaXRlZCBkb2VzIG5vdAoJbWFrZSB0aGUgYXR0cmlidXRlIGF2YWlsYWJsZSBmb3IgdGhlIHBhcnRpYWwgdmlldykuCgkoQnVpbGRfQWNjZXNzX1N1YnByb2dyYW1fVHlwZSk6IERpYWdub3NlIGF0dGVtcHQgdG8gYXBwbHkgJ2FjY2VzcyB0byBhCglub24tb3ZlcmxvYWRlZCBpbnRyaW5zaWMgc3VicHJvZ3JhbS4KCShDaGVja19TdHJlYW1fQXR0cmlidXRlKTogUmVqZWN0IGFuIGF0dHJpYnV0ZSByZWZlcmVuY2UgZm9yIGFuCgl1bmF2YWlsYWJsZSBzdHJlYW0gYXR0cmlidXRlIGV2ZW4gaWYgdGhlIHByZWZpeCBpcyBub3QgYSBsaW1pdGVkIHR5cGUKCShjYXNlIG9mIGEgJ0lucHV0IGF0dHJpYnV0ZSByZWZlcmVuY2UgZm9yIGFuIGFic3RyYWN0LCBub24tY2xhc3N3aWRlCgl0eXBlKQoJKFN0cmVhbV9BdHRyaWJ1dGVfQXZhaWxhYmxlKTogTmV3IGZ1bmN0aW9uIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc3RyZWFtCglhdHRyaWJ1dGUgaXMgYXZhaWxhYmxlIGF0IGEgcGxhY2UuCgkoQ2hlY2tfQXR0cmlidXRlKTogVXNlIFN0cmVhbV9BdHRyaWJ1dGVfQXZhaWxhYmxlIGluc3RlYWQgb2YganVzdAoJdGVzdGluZyBmb3IgVFNTIHByZXNlbmNlIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBiYXNlIHR5cGUuCgkoQW5hbHl6ZV9BdHRyaWJ1dGUpOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8gdGFzayBpbnRlcmZhY2VzLgoJKEFuYWx5emVfQWNjZXNzX0F0dHJpYnV0ZSk6IEFkZCBlcnJvciBjaGVjayBmb3IgdXNlIG9mIGFuIEFjY2VzcyAob3IKCVVucmVzdHJpY3RlZF9BY2Nlc3MpIGF0dHJpYnV0ZSB3aXRoIGEgc3VicHJvZ3JhbSBtYXJrZWQgYXMKCUlubGluZV9BbHdheXMuCgkoQW5hbHl6ZV9BdHRyaWJ1dGUsIGNhc2UgQXR0cmlidXRlX0FkZHJlc3MpOiBBZGQgZXJyb3IgY2hlY2sgZm9yIHVzZSBvZgoJYW4gQWRkcmVzcyBhdHRyaWJ1dGUgd2l0aCBhIHN1YnByb2dyYW0gbWFya2VkIGFzIElubGluZV9BbHdheXMuCglVcGRhdGUgRXZhbF9BdHRyaWJ1dGUgdG8gaGFuZGxlIG5ldyB2YWx1ZSBvZiBXaWR0aCBmcm9tIEFJLTM5NQoKCSogc2VtX2NoMTMuYWRiIChBbmFseXplX1N0cmVhbV9UU1NfRGVmaW5pdGlvbik6IE5ldyBzdWJwcm9ncmFtLgoJKEFuYWx5emVfQXR0cmlidXRlX0RlZmluaXRpb25fQ2xhdXNlLCBjYXNlcyBJbnB1dCwgT3V0cHV0LCBSZWFkLCBXcml0ZSk6CglGYWN0b3IgY29tbW9uIGNvZGUgYWNyb3NzIHRoZSBzdHJlYW0tb3JpZW50ZWQgYXR0cmlidXRlIGNpcmNjdWl0cyBpbnRvCglhIG5ldyBzdWJwcm9ncmFtLCBBbmFseXplX1N0cmVhbV9UU1NfRGVmaW5pdGlvbi4gVGhlIG5ldyB1bmlmb3JtCglwcm9jZXNzaW5nIGlzIGZ1bmN0aW9uYWxseSBpZGVudGljYWwgdG8gdGhlIHByZXZpb3VzIGR1cGxpY2F0ZWQgb25lLAoJZXhjZXB0IHRoYXQgYW4gZXhwcmVzc2lvbiB0aGF0IGRlbm90ZXMgYW4gYWJzdHJhY3Qgc3VicHJvZ3JhbSB3aWxsIG5vdwoJYmUgcmVqZWN0ZWQsIGFzIG1hbmRhdGVkIGJ5IEFJLTE5NSBpdGVtIDUuCgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYiAoVHlwZV9BY2Nlc3NfTGV2ZWwpOiBVc2UgZmxhZwoJSXNfTG9jYWxfQW5vbnltb3VzX0FjY2VzcyB0byBhcHBseSBhY2Nlc3NpYmlsaXR5IGNoZWNrcyB0byBhY2Nlc3MKCWNvbXBvbmVudHMgYW5kIHN0YW5kLWFsb25lIGFjY2VzcyBvYmplY3RzLgoJKEhhc19EaXNjcmltaW5hbnRfRGVwZW5kZW50X0NvbnN0cmFpbnQpOiBNb3ZlZCB0byBzcGVjIGZvciB1c2UKCWVsc2V3aGVyZS4KCShJc19Qb3RlbnRpYWxseV9QZXJzaXN0ZW50X1R5cGUpOiBOZXcgZnVuY3Rpb24KCShJc19EZXBlbmRlbnRfQ29tcG9uZW50X09mX011dGFibGVfT2JqZWN0KTogSWYgdGhlIGVuY2xvc2luZyBvYmplY3QgaXMKCWEgaGVhcC1vYmplY3Qgd2hvc2UgdHlwZSBoYXMgYSBjb25zdHJhaW5lZCBwYXJ0aWFsIHZpZXcsIHRoZSBvYmplY3QgaXMKCXVuY29uc3RyYWluZWQgYW5kIHRoZSBjb21wb25lbnQgbWF5IGRlcGVuZCBvbiBhIGRpc2NyaW1pbmFudCwgbWFraW5nIGl0cwoJcmVuYW1pbmcgaWxsZWdhbC4KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiCgkoTXVzdF9Ob3RfT3ZlcnJpZGUpOiBGbGFnIGFwcGxpY2FibGUgdG8gTl9FbnRyeV9EZWNsYXJhdGlvbi4KCShNdXN0X092ZXJyaWRlKTogRmxhZyBhcHBsaWNhYmxlIHRvIE5fRW50cnlfRGVjbGFyYXRpb24uCglJbmRpY2F0ZSB0aGF0IGludGVyZmFjZV9saXN0IGNhbiBhcHBlYXIgaW4gc2luZ2xlIHRhc2sgYW5kIHNpbmdsZQoJcHJvdGVjdGVkIGRlY2xhcmF0aW9ucy4KCVJlcGxhY2UgSXNfT3ZlcnJpZGluZyBhbmQgTm90X092ZXJyaWRpbmcgd2l0aCBNdXN0X092ZXJyaWRlIGFuZAoJTXVzdF9Ob3RfT3ZlcnJpZGUsIHRvIGJldHRlciBleHByZXNzIGludGVudCBvZiBBSS4KCUlzX092ZXJyaWRpbmcsIE5vdF9PdmVycmlkaW5nOiBBZGEyMDA1IGZsYWdzIHRoYXQgaW5kaWNhdGUgdGhlIHByZXNlbmNlCglvZiBhbiBvdmVycmlkaW5nIGluZGljYXRvciBpbiBhIHN1YnByb2dyYW0gb3IgaW5zdGFuY2UuCglBZGEgMjAwNSAoQUktMjQ4KSBOdWxsX1ByZXNlbnQgY2FuIGFwcGVhciBpbiBhIHByb2NlZHVyZSBzcGVjaWZpY2F0aW9uLgoJQWRkIHRoZSBvdmVycmlkaW5nIGluZGljYXRvciBbW25vdF0gb3ZlcnJpZGluZ10gY29uc3RydWN0IHRvIHRoZQoJZm9sbG93aW5nIGdyYW1tYXIgcHJvZHVjdGlvbnM6CgkgRU5UUllfREVDTEFSQVRJT04KCSBHRU5FUklDX0lOU1RBTlRJQVRJT04KCSBTVUJQUk9HUkFNX1NQRUNJRklDQVRJT04KCgkqIHBhci1jaDEwLmFkYiAoUF9Db21waWxhdGlvbl9Vbml0KTogU3VicHJvZ3JhbSBkZWNsYXJhdGlvbiBvciBib2R5CgljYW4gc3RhcnQgd2l0aCBhbiBvdmVycmlkaW5nIGluZGljYXRvci4KCgkqIHBhci1jaDYuYWRiIChQX1N1YnByb2dyYW0pOiBSZWNvZ25pemUgb3ZlcnJpZGluZyBpbmRpY2F0b3IsIGFuZCBzZXQKCWZsYWdzIGFjY29yZGluZ2x5IG9uIHN1YnJvZ3JhbSBzcGVjaWZpY2F0aW9ucyBvciBpbnN0YW5jZXMuCgoJKiBzZW1fY2g4LmFkYjoKCShBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBGb3IgYSByZW5hbWluZ19hc19ib2R5LCB2ZXJpZnkgdGhhdCB0aGUKCW92ZXJyaWRpbmdfaW5kaWNhdG9yLCBpZiBwcmVzZW50LCBpcyBjb25zaXN0ZW50IHdpdGggc3RhdHVzIG9mIHNwZWMuCglJbXByb3ZlIGVycm9yIG1lc3NhZ2UgZm9yIG51bGwtZXhjbHVkaW5nIGNoZWNrcyBvbiBjb250cm9sbGluZyBhY2Nlc3MKCXBhcmFtZXRlcnMuCgkoQ2hlY2tfSW5fUHJldmlvdXNfV2l0aF9DbGF1c2UpOiBQcm90ZWN0IHRoZSBmcm9udGVuZCBhZ2FpbnN0CglwcmV2aW91c2x5IHJlcG9ydGVkIGNyaXRpY2FsIGVycm9ycyBpbiB0aGUgY29udGV4dCBjbGF1c2VzLgoJU2F2ZSBhbmQgcmVzdG9yZSBBZGFfVmVyc2lvbl9FeHBsaWNpdCwgZm9yIGltcGxlbWVudGF0aW9uIG9mIEFJLTM2MgoJKEFuYWx5emVfU3VicHJvZ3JhbV9SZW5hbWluZyk6IElmIHRoZSBuZXcgZW50aXR5IGlzIGEgZGlzcGF0Y2hpbmcKCW9wZXJhdGlvbiB2ZXJpZnkgdGhhdCBjb250cm9sbGluZyBmb3JtYWxzIG9mIHRoZSByZW5hbWVkIGVudGl0eSB0aGF0CglhcmUgYWNjZXNzIHBhcmFtZXRlcnMgYXJlIGV4cGxpY2l0bHkgbm9uLW51bGwuCgkoRmluZF9FeHBhbmRlZF9OYW1lKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gcHJlZml4IGlzIGFuIGlsbGVnYWwKCXJlZmVyZW5jZSB0byBhIHByaXZhdGUgY2hpbGQgdW5pdC4KCgkqIGV4cF9pbWd2LmFkYiwgcy1pbWd3Y2guYWRzLCBzLWltZ3djaC5hZGIsIHMtdmFsd2NoLmFkYiwKCXMtdmFsd2NoLmFkcywgcy13aWR3Y2guYWRiLCBzLXdpZHdjaC5hZHMsIHMtd3dkY2hhLmFkYiwgcy13d2R3Y2guYWRiOgoJUmV3cml0ZSB0byBjb3JyZXNwb25kIHRvIG5ldyB3aWRlIGNoYXJhY3RlciBuYW1lcyBpbiBBSS0zOTUKCgkqIHBhci1jaDEyLmFkYiAoUF9Gb3JtYWxfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IFJlY29nbml6ZSBudWxsCglkZWZhdWx0IHByb2NlZHVyZXMuCgoyMDA1LTA2LTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBlcnJvdXQuYWRzLCBlcnJvdXQuYWRiIChFcnJvcl9Nc2dfTlcpOiBPbmx5IGVtaXQgd2FybmluZyBvbiB1c2VyCgljb2RlLCBub3Qgb24gdGhlIGJvZGllcyBvZiBwcmVkZWZpbmVkIG9wZXJhdGlvbnMsIHRvIGN1dCBkb3duIG9uCglzcHVyaW91cyBub2lzZS4KCjIwMDUtMDYtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoQWdncl9TaXplX09LKTogQW4gYXJyYXkgd2l0aCBubyBjb21wb25lbnRzIGNhbiBhbHdheXMKCWJlIGV4cGFuZGVkIGluIHBsYWNlLiBUaGUgc2l6ZSBjb21wdXRhdGlvbiBkb2VzIG5vdCByZXF1aXJlIGEKCXN1YnRyYWN0aW9uLCB3aGljaCB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24gb24gYSBjb21waWxlciBidWlsdCB3aXRoCglhc3NlcnRpb25zIHdoZW4gdGhlIHVwcGVyIGJvdW5kIGlzIEludGVnZXInZmlyc3QuCgkoRmxhdHRlbik6IEZvciBhbiBhcnJheSBvZiBjb21wb3NpdGUgY29tcG9uZW50cywgdGFrZSBpbnRvIGFjY291bnQgdGhlCglzaXplIG9mIHRoZSBjb21wb25lbnRzIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIHNhZmUgdG8gZXhwYW5kIHRoZQoJYXJyYXkgaW50byBhIHB1cmVseSBwb3NpdGlvbmFsIHJlcHJlc2VudGF0aW9uLgoKMjAwNS0wNi0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDIuYWRiIChQYXJhbV9FbnRpdHkpOiBUYWtlIHRoZSBjYXNlIG9mIGFuIGV4cGFuZGVkX25hbWUKCWRlbm90aW5nIGEgZm9ybWFsIHBhcmFtZXRlciBpbnRvIGFjY291bnQuCgoyMDA1LTA2LTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2g3LmFkYiAoRmluZF9Ob2RlX1RvX0JlX1dyYXBwZWQpOiBJZiB0aGUgbm9kZSBhcHBlYXJzIHdpdGhpbgoJdGhlIGVudHJ5X2NhbGwgYWx0ZXJuYXRpdmUgb2YgYSBjb25kaXRpb25hbCBlbnRyeSBjYWxsLCB3cmFwIHRoZQoJY29uZGl0aW9uYWwgZW50cnkgY2FsbCBpdHNlbGYuCgoyMDA1LTA2LTE0ICBOaWNvbGFzIFNldHRvbiAgPHNldHRvbkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfZGJ1Zy5hZHMsIGV4cF9kYnVnLmFkYiAoR2V0X1ZhcmlhbnRfUGFydCk6IEZpeCB0aGUgZW5jb2Rpbmcgb2YKCXRoZSAic2ltcGxlX2Nob2ljZSIgbWVtYmVyIGluIGEgdmFyaWFudCByZWNvcmQsIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKCWRlc2NyaXB0aW9uIGluIHRoZSBwYWNrYWdlIHNwZWM6IHRoZSBpbmZvcm1hdGlvbiBvdXRwdXQgZm9yIGEgY29uc3RhbnQKCXNob3VsZCBiZSAiUyBudW1iZXIiLCBub3QgIlNTIG51bWJlciIuCgkoR2V0X0VuY29kZWRfTmFtZSk6IFJldHVybiBhdCBvbmNlIGlmIG5vdCBnZW5lcmF0aW5nIGNvZGUuIEF2b2lkcyBuYW1lCglvdmVyZmxvdyBwcm9ibGVtIHdoZW4gY29tcGlsaW5nIHdpdGggLWduYXRjdCwgZm9yIEFTSVMvZ25hdG1ldHJpY3MuCgoyMDA1LTA2LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZXhwX2Rpc3QuYWRiIChBZGRfUkFDV19QcmltaXRpdmVfRGVjbGFyYXRpb25zX0FuZF9Cb2RpZXMpOiBGb3IgYW4KCVJBQ1cgd2l0aG91dCBhbnkgcHJpbWl0aXZlcywgZG8gbm90IGdlbmVyYXRlIHRoZSBpZiBzdGF0ZW1lbnQgZm9yCglkaXNwYXRjaGluZyBieSBuYW1lIGluIHRoZSBQb2x5T1JCL0RTQSBjYXNlLCBhcyBpdCB3b3VsZCBiZSBtYWxmb3JtZWQKCShpdCB3b3VsZCBoYXZlIGFuIEVsc2lmX1BhcnRzIGxpc3QgdGhhdCBpcyBub3QgTm9fTGlzdCwgYnV0IHdpdGggYQoJbGVuZ3RoIG9mIDApLgoKMjAwNS0wNi0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfaW50ci5hZGIsIHBhci1jaDUuYWRiOiBNaW5vciBmaXggdG8gZXJyb3IgbWVzc2FnZSB0ZXh0CgoyMDA1LTA2LTE0ICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogZmUuaDogQWRkIGVudHJ5IGZvciBPcHQuRXhjZXB0aW9uX0xvY2F0aW9uc19TdXBwcmVzc2VkIHNvIHRoYXQgZ2lnaQoJY2FuIGRldGVybWluZSB3aGV0aGVyIHByYWdtYSBTdXBwcmVzc19FeGNlcHRpb25fTG9jYXRpb25zIGlzIGluIGVmZmVjdC4KCgkqIHV0aWxzMi5jIChidWlsZF9jYWxsX3JhaXNlKTogRG8gbm90IHBhc3MgdGhlIGZpbGUgbmFtZSB0byB0aGUKCWV4Y2VwdGlvbiBoYW5kbGVyIGlmIHByYWdtYSBTdXBwcmVzc19FeGNlcHRpb25fTG9jYXRpb25zIGlzIGluIGVmZmVjdC4KCShidWlsZF9hbGxvY2F0b3IpOiBBZGQgYW5kIHByb2Nlc3MgYXJnIElHTk9SRV9JTklUX1RZUEUuCgoyMDA1LTA2LTE0ICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoKCSogZy1kZWJwb28uYWRiIChEZWFsbG9jYXRlLCBEZXJlZmVyZW5jZSk6IEltcHJvdmUgb3V0cHV0LgoKMjAwNS0wNi0xNCAgTmljb2xhcyBSb2NoZSAgPHJvY2hlQGFkYWNvcmUuY29tPgoKCSogZy1kaW9waXQuYWRiIChXaWxkY2FyZF9JdGVyYXRvcik6IFJldHVybiBkaXJlY3RseSBpZiBQYXRoIGlzIGVxdWFsCgl0byAiIgoJKE5leHRfTGV2ZWwpOiBGaXggbWlub3IgYnVnIGluIGhhbmRsaW5nIG9mIC4uL2RpciBjYXNlCgkoUmVhZCk6IEFkZCBkaXIgc2VwYXJhdG9yIHRvIERpcmVjdG9yeSBuYW1lIHNvIHRoYXQgIiIgaXMgdW5kZXJzdG9vZCBhcwoJICIvIgoKMjAwNS0wNi0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZy1keW5odGEuYWRzLCBnLWR5bmh0YS5hZGIgKFJlc2V0KTogRnJlZSB0aGUgdGFibGUgaXRzZWxmIGFmdGVyCglyZWxlYXNpbmcgdGhlIGl0ZW1zLgoKMjAwNS0wNi0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgkgICAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFkYWNvcmUuY29tPgoKCSogZy1vc19saWIuYWRzLCBnLW9zX2xpYi5hZGIgKE5vbl9CbG9ja2luZ19TcGF3bik6IFR3byBuZXcgdmVyc2lvbnMKCXdpdGggb3V0cHV0IGZpbGUgZGVzY3JpcHRvciBhbmQgd2l0aCBvdXRwdXQgZmlsZSBuYW1lLgoJKER1cCwgRHVwMik6IE5vdyBnbG9iYWwgcHJvY2VkdXJlcyBhcyB0aGV5IGFyZSB1c2VkIGJ5IHR3byBzdWJwcm9ncmFtcwoJKENvcHkpOiBBbGxvY2F0ZSB0aGUgMjAwSyBidWZmZXIgb24gdGhlIGhlYXAgcmF0aGVyIHRoYW4gb24gdGhlIHN0YWNrLgoKMjAwNS0wNi0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCglQUiBhZGEvNjcxNwoJKiBnLXNvY2tldC5hZHMsIGctc29ja2V0LmFkYiAoSW5ldF9BZGRyKTogU3BlY2lhbCBjYXNlIHRoZSBhbGwtb25lcwoJYnJvYWRjYXN0IGFkZHJlc3MuCgkoQ3JlYXRlX1NlbGVjdG9yKTogQmluZCBsaXN0ZW5pbmcgc29ja2V0IHVzZWQgdG8gY3JlYXRlIHRoZSBzaWduYWxsaW5nCglzb2NrZXQgcGFpciB0byAxMjcuMC4wLjEgdG8gbGltaXQgdGhlIHNjb3BlIGZvciAndGhlZnQnIG9mIGNvbm5lY3Rpb24uCglTZXQgbGlzdGVuIGJhY2tsb2cgdG8gMSB0byBlbnN1cmUgdGhhdCB3ZSBkZXRlY3Qgc29ja2V0IHRoZWZ0IGJ5IGEKCWZhaWx1cmUgb2Ygb3VyIG93biBjb25uZWN0KDIpIGNhbGwuCgkoQ2hlY2tfU2VsZWN0b3IpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgdGhlIHNlbGVjdG9yIG1lY2hhbmlzbS4KCShCcm9hZGNhc3RfSW5ldF9BZGRyKTogTmV3IGNvbnN0YW50LgoKMjAwNS0wNi0xNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogbGF5b3V0LmFkYiAoRGlzY3JpbWlmeSk6IFJlbW92ZSByZXNldHRpbmcgb2YgVnR5cGUgdG8gdGhlIHVuZGVybHlpbmcKCXR5cGUgd2hpY2ggdHVybnMgb3V0IHRvIGJlIGFuIGluY29tcGxldGUgYW5kIGluY29ycmVjdCBmaXguCgkoTGF5b3V0X0FycmF5X1R5cGUpOiBVc2UgVW5kZXJseWluZ19UeXBlIHdoZW4gY2hlY2tpbmcgd2hldGhlciB0aGUgc2NvcGUKCW9mIHRoZSB0eXBlIGlzIGRlY2xhcmVkIGluIGEgcmVjb3JkIChmb3IgZGV0ZXJtaW5hdGlvbiBvZiBpbnNlcnRpb24KCXR5cGUpLgoJKFNPX1JlZl9Gcm9tX0V4cHIpOiBUZXN0IHdoZXRoZXIgVnR5cGUgZGVub3RlcyBhIHBhcnRpYWwgb3IgZnVsbCB2aWV3IG9mCglhIHByaXZhdGUgdHlwZSBhbmQgZW5zdXJlIHRoYXQgdGhlIHByaW1hcnkgZW50aXR5IGlzIHVzZWQgZm9yIHRoZSB0eXBlCglvZiB0aGUgbmV3bHkgY3JlYXRlZCBmdW5jdGlvbidzIFYgZm9ybWFsIGJ5IHRha2luZyB0aGUgRXR5cGUgb2YgdGhlCgl2aWV3LgoKMjAwNS0wNi0xNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogbGliLWxvYWQuYWRzLCBsaWItbG9hZC5hZGIgKExvYWRfVW5pdCk6IEFkZGl0aW9uIG9mIGEgbmV3IHBhcmFtZXRlcgoJdGhhdCBpbmRpY2F0ZXMgaWYgd2UgYXJlIHBhcnNpbmcgYSBjb21waWxhdGlvbiB1bml0IGZvdW5kIGluIGEKCWxpbWl0ZWQtd2l0aCBjbGF1c2UuCglJdCBpcyB1c2UgdG8gYXZvaWQgdGhlIGNpcmN1bGFyaXR5IGNoZWNrLgoKCSogcGFyLmFkcywgcGFyLmFkYiAoUGFyKTogQWRkaXRpb24gb2YgYSBuZXcgcGFyYW1ldGVyIHRvIGluZGljYXRlIGlmCgl3ZSBhcmUgcGFyc2luZyBhIGNvbXBpbGF0aW9uIHVuaXQgZm91bmQgaW4gYSBsaW1pdGVkLXdpdGggY2xhdXNlLiBUaGlzCglpcyB1c2UgdG8gYXZvaWQgdGhlIGNpcmN1bGFyaXR5IGNoZWNrLgoKCSogcGFyLWxvYWQuYWRiIChMb2FkKTogSW5kaWNhdGUgTGliLkxvYWRfVW5pdCBpZiB3ZSBhcmUgbG9hZGluZyB0aGUKCXVuaXQgYXMgYSBjb25zZXF1ZW5jZSBvZiBwYXJzaW5nIGEgbGltaXRlZC13aXRoIGNsYXVzZS4gVGhpcyBpcyB1c2VkCgl0byBhdm9pZCB0aGUgY2lyY3VsYXJpdHkgY2hlY2suCgoJKiBzZW1fY2gxMC5hZGI6IFN1cHByZXNzIEFkYSAyMDA1IHVuaXQgd2FybmluZyBpZiAtZ25hdHdZIHVzZWQKCShBbmFseXplX0NvbnRleHQpOiBMaW1pdGVkLXdpdGggY2xhdXNlcyBhcmUgbm93IGFsbG93ZWQKCWluIG1vcmUgY29tcGlsYXRpb24gdW5pdHMuCgkoQW5hbHl6ZV9TdWJ1bml0X0NvbnRleHQsIENoZWNrX1BhcmVudCk6IFByb3RlY3QgdGhlIGZyb250ZW5kCglhZ2FpbnRzIHByZXZpb3VzbHkgcmVwb3J0ZWQgY3JpdGljYWwgZXJyb3JzIGluIGNvbnRleHQgY2xhdXNlcwoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IENvZGUgY2xlYW51cCBwbHVzIHN0YXRpYyBkZXRlY3Rpb24KCW9mIHR3byBmdXJ0aGVyIGVycm9yczogcmVuYW1lZCBzdWJwcm9ncmFtcyBhbmQgcmVuYW1lZCBwYWNrYWdlcwoJYXJlIG5vdCBhbGxvd2VkIGluIGxpbWl0ZWQgd2l0aCBjbGF1c2VzLgoJKEluc3RhbGxfU2libGluZ3MpOiBEbyBub3QgaW5zdGFsbCBwcml2YXRlX3dpdGhfY2xhdXNlcyBvbiB0aGUgcGFja2FnZQoJZGVjbGFyYXRpb24gZm9yIGEgbm9uLXByaXZhdGUgY2hpbGQgdW5pdC4KCShSZV9JbnN0YWxsX1BhcmVudHMpOiBXaGVuIGEgcGFyZW50IG9mIHRoZSBzdWJ1bml0IGlzIHJlaW5zdGFsbGVkLAoJcmVzZXQgdmlzaWJpbGl0eSBvZiBjaGlsZCB1bml0cyBwcm9wZXJseS4KCShJbnN0YWxsX1dpdGhlZF9Vbml0KTogV2hlbiBhIGNoaWxkIHVuaXQgYXBwZWFycyBpbiBhIHdpdGhfY2xhdXNlIG9mIGl0cwoJcGFyZW50LCBpdCBpcyBpbW1lZGlhdGVseSB2aXNpYmxlLgoKMjAwNS0wNi0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWRhY29yZS5jb20+CgoJKiBsaWIteHJlZi5hZHMsIGxpYi14cmVmLmFkYiAoR2VuZXJhdGVfRGVmaW5pdGlvbik6IFRyZWF0IGFueSBlbnRpdHkKCWRlY2xhcmVkIHdpdGhpbiBhbiBpbmxpbmVkIGJvZHkgYXMgcmVmZXJlbmNlZCwgdG8gcHJldmVudCBzcHVyaW91cwoJd2FybmluZ3MuCgkoT3V0cHV0X09uZV9SZWYpOiBJZiBhbiBlbnRpdHkgcmVuYW1lcyBhbiBhcnJheSBjb21wb25lbnQsIGluZGljYXRlIGluCgl0aGUgQUxJIGZpbGUgdGhhdCB0aGlzIGFsaWFzZXMgKHJlbmFtZXMpIHRoZSBhcnJheS4gQ2FwdHVyZSBhcyB3ZWxsCglmdW5jdGlvbiByZW5hbWluZ3MgdGhhdCByZW5hbWUgcHJlZGVmaW5lZCBvcGVyYXRpb25zLgoJQWRkIGluZm9ybWF0aW9uIGFib3V0IGdlbmVyaWMgcGFyZW50IGZvciBwYWNrYWdlIGFuZCBzdWJwcm9ncmFtCglpbnN0YW5jZXMuCgkoR2V0X1R5cGVfUmVmZXJlbmNlKTogRm9yIGEgc3VidHlwZSB0aGF0IGlzIHRoZSByZW5hbWluZyBvZiBhbiBhY3R1YWwgaW4KCWFuIGluc3RhbnRpYXRpb24sIHVzZSB0aGUgZmlyc3Rfc3VidHlwZSB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBnZW5lcmF0ZQoJY3Jvc3MtcmVmZXJlbmNlIGluZm9ybWF0aW9uIGZvciBpbnRlcm5hbCB0eXBlcy4KCUZvciBvYmplY3RzIGFuZCBwYXJhbWV0ZXJzIG9mIGEgZ2VuZXJpYyBwcml2YXRlIHR5cGUsIHJldGFpbiB0aGUgJyonCglpbmRpY2F0b3IgdG8gZGlzdGluZ3Vpc2ggc3VjaCBhbiBlbnRpdHkgZnJvbSBpdHMgdHlwZS4KCgkqIGFsaS5hZHMgKFhyZWZfRW50aXR5X1JlY29yZCk6IE5ldyBmaWVsZHMgSXJlZl9GaWxlX051bSBhbmQgSXJlZl9MaW5lLAoJdG8gc3RvcmUgaW5mb3JtYXRpb24gYWJvdXQgaW5zdGFudGlhdGVkIGVudGl0aWVzLgoKCSogYWxpLmFkYiAoU2Nhbl9BTEkpOiBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyB0aGUgcmVmZXJlbmNlIHRvIHRoZQoJZ2VuZXJpYyBwYXJlbnQKCgkqIHhyZWZfbGliLmFkYiAoU2tpcF9Ub19NYXRjaGluZ19DbG9zaW5nX0JyYWNrZXQpOiBOZXcgc3VicHJvZ3JhbQoJKFBhcnNlX0lkZW50aWZpZXJfSW5mbywgUGFyc2VfVG9rZW4pOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGdlbmVyaWMgcGFyZW50CglpbmZvcm1hdGlvbi4KCjIwMDUtMDYtMTAgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgkgICAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogQWRkIGluaXRpYWxpemUubyB3aGVuIG5lZWRlZC4KCVJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIFJUX0ZMQUdTLgoJQWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzIGZvciBzZGVmYXVsdC5vCgoJKiBpbml0aWFsaXplLmM6IE5ldyBmaWxlLgoKCSogaW5pdC5jIFtWTVNdIERlY2xhcmUgQURBJCBleHRlcm5zIHdlYWsgdG8gZml4IGJ1aWxkIHByb2JsZW0gaW4gSVZNUy4KCVtWTVNdIGNvbmRfc2lnbmFsX3RhYmxlOiBGaXggcHJvYmxlbSBpbiBkZWNsYXJhdGlvbi4KCVtWTVNdIF9fZ25hdF9lcnJvcl9oYW5kbGVyOiByZXdyaXRlLgoJTW92ZSBhbGwgX19nbmF0X2luaXRpYWxpemUoKSByb3V0aW5lcyB0byBpbml0aWFsaXplLmMKCVNwZWNpYWxpemUgdGhlIGZvcm1lciAiaHB1eCIgc2VjdGlvbiB0byAiaHBwYSBocHV4IiwgYXMgdGhpcyBpcyB3aGF0IHRoZQoJc2VjdGlvbiByZWFsbHkgaXMgaGVyZSBmb3IgYW5kIHdlIG5vdyBoYXZlIG90aGVyIGhwdXggcG9ydHMgdGhhdCBuZWVkCglkaWZmZXJlbnQgY29udGVudHMuCgkoX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSkgaTM4Ni1saW51eDogRmlyc3QgdmVyc2lvbiBvZiB0aGlzCglmdW5jdGlvbiBmb3IgdGhpcyB0YXJnZXQuIEFkanVzdCBQQyBieSBvbmUgaW4gdGhlIG1hY2hpbmUgY29udGV4dC4gVGhpcwoJYWRqdXN0bWVudCB3YXMgcHJldmlvdXNseSBkb25lIGluIHRoZSBNRF9GQUxMQkFDS19GUkFNRV9TVEFURV9GT1IsIGJ1dAoJaXQgaXMgbW9yZSByZWxpYWJsZSB0byBkbyB0aGF0IGluIHRoZSBzaWduYWwgaGFuZGxlciBpdHNlbGYuCgkoX19nbmF0X2luc3RhbGxfaGFuZGxlcikgaTM4Ni1saW51eDogU2V0IFNBX1NJR0lORk8gaW4gdGhlIHNpZ2FjdGlvbgoJZmxhZ3MsIHNvIHRoYXQgdGhlIGhhbmRsZXIgaXMgcGFzc2VkIHRoZSBjb250ZXh0IHN0cnVjdHVyZSB0byBhZGp1c3QKCXByaW9yIHRvIHRoZSByYWlzZS4KCShfX2duYXRfZXJyb3JfaGFuZGxlcikgaTM4Ni1saW51eDogQWRqdXN0IHRoZSBzaWduYXR1cmUgdG8gbWF0Y2ggd2hhdCBhCglTQV9TSUdJTkZPIHNpZ2FjdGlvbiBzaG91bGQgbG9vayBsaWtlLiBDYWxsCglfX2duYXRfYWRqdXN0X2NvbnRleHRfZm9yX3JhaXNlIGJlZm9yZSBhY3R1YWxseSByYWlzaW5nLiBDbGVhbnVwIHVudXNlZAoJTWFjaGluZV9TdGF0ZV9PcGVyYXRpb25zIHN0dWZmLgoJQWRkIGNvbmRpdGlvbmFsIGNvZGUgc28gdGhhdCB0aGUgeDg2XzY0IGlzIGFsc28gc3VwcG9ydGVkLgoKMjAwNS0wNi0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogbWRsbC5hZGIgKEdldF9EbGxfTmFtZSk6IE5ldyByb3V0aW5lIHRoYXQgcmV0dXJucyB0aGUgRExMIG5hbWUgZ2l2ZW4KCXRoZSBsaWJyYXJ5IG5hbWUuCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIG9wdC5hZHMsIG9wdC5hZGI6IE5ldyBmbGFncyBmb3IgcGVyc2lzdGVudF9ic3MgbW9kZQoJQWRkIEFkYV9WZXJzaW9uX0V4cGxpY2l0LCBmb3IgaW1wbGVtZW50YXRpb24gb2YgQUktMzYyCglBZGQgQXNzZXJ0aW9uc19FbmFibGVkX0NvbmZpZyBhbmQgYXNzb2NpYXRlZCBoYW5kbGluZwoJTmVlZGVkIHNpbmNlIHNldHRpbmcgY2FuIGJlIGNoYW5nZWQgd2l0aCBBc3NlcnRpb25fUG9saWN5IHByYWdtYQoJQWRkIG5ldyBmbGFnIFdhcm5fT25fQWRhXzIwMDVfQ29tcGF0aWJpbGl0eQoKCSogc3dpdGNoLWMuYWRiOiBSZWNvZ25pemUgLWduYXR3eS9ZCglTZXQgQWRhX1ZlcnNpb25fRXhwbGljaXQsIGZvciBpbXBsZW1lbnRhdGlvbiBvZiBBSS0zNjIKCVRoZSAtZ25hdGcgc3dpdGNoIG5vdyBpbmNsdWRlcyAtZ25hdHl1CgoJKiB1c2FnZS5hZGI6IEFkZCAtZ25hdHd5L1kKCVJlbW92ZSB3cm9uZyBhc3RlcmlzayBvbiAtZ25hdHdYIGxpbmUKCUFkZCBsaW5lIGZvciAtZ25hdHl1IHN3aXRjaAoKMjAwNS0wNi0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBvc2ludC5hZGIgKEFkZF9EZWZhdWx0X1NlYXJjaF9EaXJzKTogUHV0IHNvdXJjZSBhbmQgb2JqZWN0CglkaXJlY3RvcmllcyBvZiBwcm9qZWN0IGZpbGVzIGJlZm9yZSBkaXJlY3RvcmllcyBjb21pbmcgZnJvbQoJQURBX0lOQ0xVREVfUEFUSCBhbmQgQURBX09CSkVDVFNfUEFUSC4KCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xNTYxMwoJKiBwYXItY2gyLmFkYiAoU2Nhbl9QcmFnbWFfQXJndW1lbnQpOiBOZXcgcHJvY2VkdXJlCgkoUF9QcmFnbWEpOiBJbXBsZW1lbnQgUk0gMi44KDQpIGNoZWNrIGZvciBubyBwb3MgYXJncyBhZnRlciBuYW1lZCBhcmdzCgoyMDA1LTA2LTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByZXAuYWRiIChQcmVwcm9jZXNzKTogSWdub3JlIGVycm9yIHdoZW4gc2Nhbm5pbmcgdGhlIGZpcnN0IHRva2VuIG9mCglhIGxpbmUuCgoyMDA1LTA2LTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai1ubXNjLmFkYiAoU3VmZml4X0Zvcik6IENoYW5nZSBkZWZhdWx0IHN1ZmZpeCBmb3IgQysrIHRvICIuY3BwIgoJKENoZWNrX1N0YW5kX0Fsb25lX0xpYnJhcnkpOiBJZiB0aGUgc3BlY2lmaWVkIHJlZmVyZW5jZSBzeW1ib2wgZmlsZSBkb2VzCglub3QgZXhpc3QsIG9ubHkgaXNzdWUgYSB3YXJuaW5nIHdoZW4gdGhlIHN5bWJvbCBwb2xpY3kgaXMgbm90CglDb250cm9sbGVkLiBBbmQsIHdoZW4gc3ltYm9sIHBvbGljeSBpcyBDb21wbGlhbnQsIHNldCB0aGUgc3ltYm9sCglwb2xpY3kgdG8gQXV0b25vbW91cy4KCjIwMDUtMDYtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLXBhcnQuYWRiIChQcmVfUGFyc2VfQ29udGV4dF9DbGF1c2UpOiBDYWxsIFNldF9Jc19Ob3RfTGFzdF9Jbl9MaXN0Cgl3aGVuIHRoZSBwcm9qZWN0IGZpbGUgaW4gYSB3aXRoIGNsYXVzZSBpcyBub3QgdGhlIGxhc3Qgb25lLCB0aGF0IGlzIHRoZQoJcHJvamVjdCBmaWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgYSBjb21tYS4KCSogcHJqLXBwLmFkYjogKEZpcnN0X1dpdGhfSW5fTGlzdCk6IE5ldyBCb29sZWFuIGdsb2JhbCB2YXJpYWJsZQoJKFByaW50KTogSXNzdWUgbGlzdCBvZiBwcm9qZWN0IGZpbGVzIHNlcGFyYXRlZCBieSBjb21tYXMgaW4gd2l0aCBjbGF1c2VzCglhY2NvcmRpbmcgdG8gdGhlIHZhbHVlcyByZXR1cm5lZCBieSBJc19Ob3RfTGFzdF9Jbl9MaXN0LgoJKiBwcmotdHJlZS5hZHMsIHByai10cmVlLmFkYjogKElzX05vdF9MYXN0X0luX0xpc3QpOiBOZXcgZnVuY3Rpb24KCShTZXRfSXNfTm90X0xhc3RfSW5fTGlzdCk6IE5ldyBwcm9jZWR1cmUKCjIwMDUtMDYtMTQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBzLWF0YWNjby5hZHM6IFB1dCBhIHByYWdtYSBOb19TdHJpY3RfQWxpYXNpbmcgb24gT2JqZWN0X1BvaW50ZXIuCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNjbmcuYWRiOiBBZGQgY2FsbCB0byBuZXcgQ2hlY2tfRU9GIHJvdXRpbmUKCShBY2N1bXVsYXRlX0NoZWNrc3VtKTogUHJvcGVybHkgaGFuZGxlIHdpZGUgd2lkZSBjaGFyID49IDIgKiogMjQKCUFkZCBzb21lIGNvbW1lbnRzIHJlZ2FyZGluZyB3aWRlIGNoYXJhY3RlciBoYW5kbGluZwoKCSogc3R5bGUuYWRzLCBzdHlsZWcuYWRzLCBzdHlsZWcuYWRiOiBJbXBsZW1lbnQgbmV3IHN0eWxlIHN3aXRjaCAtZ25hdHl1CgoJKiBzdHlsZXN3LmFkcywgc3R5bGVzdy5hZGI6IEltcGxlbWVudCBuZXcgc3R5bGUgc3dpdGNoIC1nbmF0eXUKCgkqIGctdXRmXzMyLmFkcywgZy11dGZfMzIuYWRiIChJc19VVEZfMzJfTm9uX0dyYXBoaWMpOiBPdGhlcl9Gb3JtYXQKCWNoYXJhY3RlcnMgYXJlIG5vdyBjb25zaWRlcmVkIGdyYXBoaWMgY2hhcmFjdGVycyBhbmQgaGVuY2UgeWllbGQgZmFsc2UKCWluIHRoaXMgY2FsbC4KCgkqIG5tYWtlLmFkdDogTW9kaWZ5IGhlYWRlciBzbyB0aGF0IHhubWFrZSBkb2VzIG5vdCBnZW5lcmF0ZSBvdXRwdXQKCWZpbGVzIHdpdGggbXVsdGlwbGUgYmxhbmsgbGluZXMuCgoJKiB0cmVlcHJzLmFkdDogUmVtb3ZlIGEgYmxhbmsgbGluZSBzbyB0aGF0IG91dHB1dCBmcm9tIHh0cmVlcHJzIGRvZXMKCW5vdCBoYXZlIGFuIGV4dHJhIGJsYW5rIGxpbmUKCjIwMDUtMDYtMTQgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9hZ2dyLmFkYiAoQWdncmVnYXRlX0NvbnN0cmFpbnRfQ2hlY2tzKTogQXBwbHkgYSBjb252ZXJzaW9uIHRvIHRoZQoJZXhwcmVzc2lvbiB3aGVuIHRoZSBjb21wb25lbnQgdHlwZSBpcyBhbiBhbm9ueW1vdXMgYWNjZXNzIHR5cGUgdG8KCWVuc3VyZSB0aGF0IGFwcHJvcHJpYXRlIGFjY2Vzc2liaWxpdHkgY2hlY2tzIGFyZSBkb25lLgoKCSogc2VtX2NoNS5hZGIgKEFuYWx5emVfQXNzaWdubWVudCk6IEFwcGx5IGEgaW1wbGljaXQgY29udmVyc2lvbiB0byB0aGUKCWV4cHJlc3Npb24gb2YgYW4gYXNzaWdubWVudCB3aGVuIHRoZSB0YXJnZXQgb2JqZWN0IGlzIG9mIGFuIGFub255bW91cwoJYWNjZXNzIHR5cGUuIFRoaXMgZW5zdXJlcyB0aGF0IHJlcXVpcmVkIGFjY2Vzc2liaWxpdHkgY2hlY2tzIGFyZSBkb25lLgoJKE9uZV9Cb3VuZCk6IE1vdmUgdGhlIGNoZWNrIGZvciB0eXBlIFVuaXZlcnNhbF9JbnRlZ2VyIHRvCglQcm9jZXNzX0JvdW5kcy4KCShQcm9jZXNzX0JvdW5kcyk6IENoZWNrIHdoZXRoZXIgdGhlIHR5cGUgb2YgdGhlIHByZWFuYWx5emVkIHJhbmdlIGlzCglVbml2ZXJzYWxfSW50ZWdlciwgYW5kIGluIHRoYXQgY2FzZSBzZXQgVHlwIHRvIEludGVnZXJfVHlwZSBwcmlvcgoJdG8gc2V0dGluZyB0aGUgdHlwZSBvZiB0aGUgb3JpZ2luYWwgcmFuZ2UgYW5kIHRoZSBjYWxscyB0byBPbmVfQm91bmQuCgoyMDA1LTA2LTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2FzZS5hZGIgKEV4cGFuZF9PdGhlcnNfQ2hvaWNlKTogSW1wcm92ZSB3YXJuaW5nLgoKMjAwNS0wNi0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2V2YWwuYWRiIChTdWJ0eXBlc19TdGF0aWNhbGx5X01hdGNoKTogVXNlIGRpc2NyaW1pbmFudAoJY29uc3RyYWludCBvZiBmdWxsIHZpZXcgaWYgcHJlc2VudCwgd2hlbiBvdGhlciB0eXBlIGlzIGRpc2NyaW1pbmF0ZWQuCgkoRXZhbF9SZWxhdGlvbmFsX09wKTogUmVjb2duaXplIHRlc3RzIG9mIHBvaW50ZXIgdmFsdWVzIGFnYWluc3QgTnVsbCwKCXdoZW4gdGhlIHBvaW50ZXIgaXMga25vd24gdG8gYmUgbm9uLW51bGwsIGFuZCBlbWl0IGFwcHJvcHJpYXRlIHdhcm5pbmcuCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJUFIgYWRhLzEwNjcxCgkqIHNlbV9wcmFnLmFkYjogSW1wbGVtZW50IHByYWdtYSBQZXJzaXN0ZW50X0JTUwoJUmVtb3ZlIG9ic29sZXRlIHByYWdtYSBQZXJzaXN0ZW50X0RhdGEsIFBlcnNpc3RlbnRfT2JqZWN0CglTZXQgQWRhX1ZlcnNpb25fRXhwbGljaXQsIGZvciBpbXBsZW1lbnRhdGlvbiBvZiBBSS0zNjIKCVRlc3QgQWRhX1ZlcnNpb25fRXhwbGljaXQgZm9yIFByZWVsYWJvcmF0ZV8wNSBhbmQgUHVyZV8wNQoJQWRkIHByb2Nlc3NpbmcgZm9yIHByYWdtYSBQdXJlXzA1IGFuZCBQcmVlbGFib3JhdGVfMDUKCUFkZCBwcm9jZXNzaW5nIGZvciBBc3NlcnRpb25fUG9saWN5IHByYWdtYQoJQWRkIHByYWdtYSBpZGVudGlmaWVycyBmb3IgQXNzZXJ0CgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgQXNzZXJ0KTogQ2hlY2sgbnVtYmVyIG9mIGFyZ3VtZW50cwoJKFByb2Nlc3NfSW5saW5lKTogQWRkaXRpb25hbCBndWFyZCBhZ2FpbnN0IGFuIGlsbGVnYWwgcHJvZ3JhbSwgd2hlcmUgdGhlCglhcmd1bWVudCBvZiB0aGUgcHJhZ21hIGlzIHVuZGVmaW5lZCwgYW5kIHdhcm5pbmdzIG9uIHJlZHVuZGFudAoJY29uc3RydWN0cyBhcmUgZW5hYmxlZC4KCShBbmFseXplX1ByYWdtYSwgY2FzZSBPYnNvbGVzY2VudCk6IEFsbG93IGFuIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudAoJQWRhXzA1IHRvIHRoaXMgcHJhZ21hLCBzcGVjaWZ5aW5nIHRoYXQgdGhlIHByYWdtYSBpcyBvbmx5IGFjdGl2ZSBpbgoJQWRhXzA1IG1vZGUuCgkoQ2hlY2tfQXJnX09yZGVyKTogTmV3IHByb2NlZHVyZQoJQWRkIGFwcHJvcHJpYXRlIGNhbGxzIHRvIHRoaXMgcHJvY2VkdXJlIHRocm91Z2hvdXQKCUFsc28gdGhyb3VnaG91dCwgY2hlY2sgZW50aXR5IG5hbWUgYmVmb3JlIGRvaW5nIGFueSBvdGhlciBjaGVja3MKCgkqIHNuYW1lcy5oIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBwcmFnbWEgUGVyc2lzdGVudF9CU1MKCVJlbW92ZSBvYnNvbGV0ZSBwcmFnbWEgUGVyc2lzdGVudF9EYXRhLCBQZXJzaXN0ZW50X09iamVjdAoJQWRkIGVudHJpZXMgZm9yIHByYWdtYSBQdXJlXzA1IGFuZCBQcmVlbGFib3JhdGVfMDUKCUFkZCBlbnRyaWVzIGZvciBBc3NlcnRpb25fUG9saWN5IHByYWdtYSBhbmQgYXNzb2NpYXRlZCBuYW1lcwoJQWRkIHNvbWUgbmFtZXMgZm9yIHByYWdtYSBhcmd1bWVudCBwcm9jZXNzaW5nCgoJKiB0YnVpbGQuYWRzLCB0YnVpbGQuYWRiOiAoTWFrZV9MaW5rZXJfU2VjdGlvbl9QcmFnbWEpOiBOZXcgZnVuY3Rpb24KCjIwMDUtMDYtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV93YXJuLmFkYiAoV2Fybl9Pbl9Lbm93bl9Db25kaXRpb24pOiBJZiB0aGUgY29uc3RhbnQgZXhwcmVzc2lvbgoJYXBwZWFycyB3aXRoaW4gYSBuZWdhdGlvbiAoZWl0aGVyIGZyb20gc291cmNlIG9yIGFzIGEgcmV3cml0aW5nIG9mCglpbmVxdWFsaXR5KSBhZGp1c3QgdGV4dCBvZiB3YXJuaW5nIGFjY29yZGluZ2x5LgoKMjAwNS0wNi0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHMtc3RyeGRyLmFkYjogRm9sbG93IEFJOTUtMDAxMzIKCjIwMDUtMDYtMTQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtdGFzcmVuLmFkYiAoRXhjZXB0aW9uYWxfQ29tcGxldGVfUmVuZGV6dm91cyk6IEZpeCByYWNlIGNvbmRpdGlvbi4KCjIwMDUtMDYtMTQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCSAgICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogcy10cG9zZW4uYWRiLCBzLXRwb2JvcC5hZGIKCShFeGNlcHRpb25hbF9Db21wbGV0ZV9SZW5kZXp2b3VzKTogU2F2ZSB0aGUgb2NjdXJyZW5jZSBhbmQgbm90IG9ubHkKCXRoZSBleGNlcHRpb24gaWQuCgkoUE9fRG9fT3JfUXVldWUpOiBCZWZvcmUgcXVldWluZyBhIHRhc2sgb24gYW4gZW50cnkgcXVldWUgd2UgY2hlY2sgdGhhdAoJdGhlcmUgaXMgbm8gdmlvbGF0aW9uIG9mIHRoZSBNYXhfRW50cnlfUXVldWVfTGVuZ3RoIHJlc3RyaWN0aW9uIChpZiBpdAoJaGFzIGJlZW4gc2V0KTsgUHJvZ3JhbV9FcnJvciBpcyByYWlzZWQgb3RoZXJ3aXNlLgoJKFJlcXVldWVfQ2FsbCk6IEJlZm9yZSByZXF1ZXVpbmcgdGhlIHRhc2sgb24gdGhlIHRhcmdldCBlbnRyeSBxdWV1ZSB3ZQoJY2hlY2sgdGhhdCB0aGVyZSBpcyBubyB2aW9sYXRpb24gb2YgdGhlIE1heF9FbnRyeV9RdWV1ZV9MZW5ndGgKCXJlc3RyaWN0aW9uIChpZiBpdCBoYXMgYmVlbiBzZXQpOyBQcm9ncmFtX0Vycm9yIGlzIHJhaXNlZCBvdGhlcndpc2UuCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHN0eWxlZy5hZGI6IEZpeCBzZXZlcmFsIHJlbWFpbmluZyBwcm9ibGVtcyBpbiAtZ25hdHl1IHN3aXRjaAoJQmxhbmsgbGluZSBjb3VudCBub3QgcmVzZXQgYXQgc3RhcnQKCVNjYW5uaW5nIG91dHNpZGUgc291cmNlIGJ1ZmZlciBpbiBzb21lIGNhc2VzCglDb25mdXNpbmcgbWVzc2FnZSBmb3IgYmxhbmtzIGF0IGVuZCBvZiBmaWxlCglOb24tZW1wdHkgYmxhbmsgbGluZXMgbm90IHJlY29nbml6ZWQKCgkqIG5tYWtlLmFkdDogTW9kaWZ5IGhlYWRlciBzbyB0aGF0IHhubWFrZSBkb2VzIG5vdCBnZW5lcmF0ZSBvdXRwdXQKCWZpbGVzIHdpdGggbXVsdGlwbGUgYmxhbmsgbGluZXMuCgoJKiB0cmVlcHJzLmFkdDogUmVtb3ZlIGEgYmxhbmsgbGluZSBzbyB0aGF0IG91dHB1dCBmcm9tIHh0cmVlcHJzIGRvZXMKCW5vdCBoYXZlIGFuIGV4dHJhIGJsYW5rIGxpbmUKCjIwMDUtMDYtMTQgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFkYWNvcmUuY29tPgoKCSogc3R5bGVnLWMuYWRiIChCb2R5X1dpdGhfTm9fU3BlYyk6IFJlbW92ZSAnOicgZnJvbSB3YXJuaW5nIG1lc3NhZ2UuCgoyMDA1LTA2LTE0ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoJICAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogdm1zX2NvbnYuYWRzLCB2bXNfY29udi5hZGI6IFJlbW92ZSAiTGlicmFyeSIgY29tbWFuZC4KCVVwZGF0ZSBjb3B5cmlnaHQuCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBlbnRyeSBmb3IgLWduYXR5L1kgW05PXUFEQV8yMDA1X0NPTVBBVElCSUxJVFkKCVJlbW92ZSAiTGlicmFyeSIgY29tbWFuZC4KCUNoYW5nZSBrZXl3b3JkIGZvciBzdHlsZSBjaGVjayAtZ25hdHlkIGZyb20gTk9DUkxGIHRvCglET1NfTElORV9FTkRJTkdTLgoJUmVtb3ZlIHVzZWxlc3Mgc2Vjb25kIHN0eWxlIGNoZWNrIGtleXdvcmQgTk9ORQoJUmVtb3ZlIGhlbHAgZG9jdW1lbnRhdGlvbiBmb3IgaW5leGlzdGVudCBzdHlsZSBjaGVjayBrZXl3b3JkCglSTV9DT0xVTU5fTEFZT1VULgoJQWRkIGhlbHAgZG9jdW1lbnRhdGlvbiBmb3Igc3R5bGUgY2hlY2sga2V5d29yZHMgRE9TX0xJTkVfRU5ESU5HUywKCVVOTkVDRVNTQVJZX0JMQU5LX0xJTkVTIGFuZCBYVFJBX1BBUkVOUwoJQWRkIFVOTkVDRVNTQVJZX0JMQU5LX0xJTkVTIGZvciAtZ25hdHl1CglBZGQgcXVhbGlmaWVycyAvQUxMX1BST0pFQ1RTICgtVSkgZm9yIEdOQVQgUFJFVFRZIGFuZCBHTkFUIE1FVFJJQwoKCSogdWdfd29yZHM6IEFkZCBlbnRyeSBmb3IgLWduYXR5L1kgW05PXUFEQV8yMDA1X0NPTVBBVElCSUxJVFkKCjIwMDUtMDYtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZWdwci5hZGIgKENvbXBpbGVfTGlua19XaXRoX0duYXRtYWtlKTogSW52b2tlIGduYXRtYWtlIHdpdGggLWQgaWYKCWdwcm1ha2Ugd2FzIGludm9rZWQgd2l0aCAtZC4KCShDb21waWxlX1NvdXJjZXMpOiBJZiAtZCB3YXMgdXNlZCwgb3V0cHV0IHRoZSAiY29tcGxldGVkIC4uLiIgbWVzc2FnZQoJZm9yIGVhY2ggY29tcGlsYXRpb24uCgkoU2Nhbl9BcmcpOiBSZWNvZ25pemUgbmV3IHN3aXRjaCAtZAoJV2hlbiAtYyBhbmQgYXQgbGVhc3Qgb25lIG1haW4gaXMgc3BlY2lmaWVkLCBzZXQKCVVuaXF1ZV9Db21waWxlIHRvIFRydWUgdG8gZ3VhcmFudGVlIHRoYXQgbm8gb3RoZXIgc291cmNlcyB3aWxsIGJlCgljb21waWxlZC4KCjIwMDUtMDYtMTQgIE1hdHRoZXcgSGVhbmV5ICA8aGVhbmV5QGFkYWNvcmUuY29tPgoKCSogYS1zd3VuaGEuYWRzLCBhLXN3dW5oYS5hZGI6IFJlbW92ZWQuIFJlcGxhY2VkIGJ5IGEtc3d1d2hhLmFkW3NiXQoJKiBhLXN3dXdoYS5hZHMsIGEtc3d1d2hhLmFkYjogTmV3IGZpbGVzCgoJKiBhLXN6dW5oYS5hZHMsIGEtc3p1bmhhLmFkYjogUmVtb3ZlZCwgcmVwbGFjZWQgYnkgYS1zenV6aGEuYWRbc2JdCgkqIGEtc3p1emhhLmFkcywgYS1zenV6aGEuYWRiOiBOZXcgZmlsZXMuCgoJKiBhLXJidGdzby5hZGIsIGEtY3JidGdvLmFkcywgYS1jcmJ0Z28uYWRiLCBhLWNyYnRnay5hZHMsCglhLWNyYnRnay5hZGIsIGEtY3JibHRyLmFkcywgYS1jb29yc2UuYWRzLCBhLWNvb3JzZS5hZGIsIGEtY29udmVjLmFkcywKCWEtY29udmVjLmFkYiwgYS1jb2ludmUuYWRzLCBhLWNvaW52ZS5hZGIsIGEtY29oYXRhLmFkcywgYS1jb2hhbWEuYWRzLAoJYS1jb2hhbWEuYWRiLCBhLWNpb3JzZS5hZHMsIGEtY2lvcnNlLmFkYiwgYS1jaWhhbWEuYWRzLCBhLWNpaGFtYS5hZGIsCglhLWNpZGxsaS5hZHMsIGEtY2lkbGxpLmFkYiwgYS1jaHRnb3AuYWRzLCBhLWNodGdvcC5hZGIsIGEtY2RsaWxpLmFkcywKCWEtY2RsaWxpLmFkYiwgYS1jb29ybXUuYWRiLCBhLWNpb3JtdS5hZGIsIGEtY2loYXNlLmFkYiwgYS1jb2hhc2UuYWRiLAoJYS1jb2hhc2UuYWRzLCBhLWNpb3JtYS5hZHMsIGEtY29vcm1hLmFkcywgYS1jaW9ybXUuYWRzLCBhLWNvb3JtdS5hZHMsCglhLXN3dW5oYS5hZGIsIGEtc3R1bmhhLmFkYiwgYS1jaW9ybWEuYWRiLCBhLWNvb3JtYS5hZGIsIGEtc2hjYWluLmFkcywKCWEtc2hjYWluLmFkYiwgYS1jaHRna2UuYWRzLCBhLWNodGdrZS5hZGIsIGEtc3R3aWhhLmFkcywgYS1zdHdpaGEuYWRiLAoJYS1zdHJoYXMuYWRiLCBhLXN0emhhcy5hZGI6IHN5bmNocm9uaXplZCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlCglBZGEgMjAwNSBSTS4KCjIwMDUtMDYtMTAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCSAgICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoJICAgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGdpZ2kuaDogKGJ1aWxkX2FsbG9jYXRvcik6IEFkZCBhcmcgSUdOT1JFX0lOSVRfVFlQRS4KCgkqIHRyYW5zLmMgKGNhbGxfdG9fZ251KTogSXNzdWUgYSB3YXJuaW5nIGZvciB1c2VycyBvZiBTdGFybGV0IHdoZW4KCW1ha2luZyBhIHRlbXBvcmFyeSBhcm91bmQgYSBwcm9jZWR1cmUgY2FsbCBiZWNhdXNlIG9mIG5vbi1hZGRyZXNzYWJsZQoJYWN0dWFsIHBhcmFtZXRlci4KCShwcm9jZXNzX2ZyZWV6ZV9lbnRpdHkpOiBJZiBlbnRpdHkgaXMgYSBwcml2YXRlIHR5cGUsIGNhcHR1cmUgc2l6ZQoJaW5mb3JtYXRpb24gdGhhdCBtYXkgaGF2ZSBiZWVuIGNvbXB1dGVkIGZvciB0aGUgZnVsbCB2aWV3LgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fQWxsb2NhdG9yKTogSWYgaGF2ZSBpbml0aWFsaXppbmcgZXhwcmVzc2lvbiwKCWNoZWNrIHR5cGUgZm9yIEhhc19Db25zdHJhaW5lZF9QYXJ0aWFsX1ZpZXcgYW5kIHBhc3MgdGhhdCB0bwoJYnVpbGRfYWxsb2NhdG9yLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fUmV0dXJuX1N0YXRlbWVudCk6IFBhc3MgZXh0cmEgYXJnIHRvCglidWlsZF9hbGxvY2F0b3IuCgoJKiBkZWNsLmMgKGFubm90YXRlX3ZhbHVlKTogUmVtb3ZlIGVhcmx5IHJldHVybiBpZiAtZ25hdFIgaXMgbm90CglzcGVjaWZpZWQuCgkoZ25hdF90b19nbnVfZmllbGQpOiBEb24ndCBtYWtlIGEgcGFja2FibGUgdHlwZSBmb3IgYSBjb21wb25lbnQgY2xhdXNlCglpZiB0aGUgcG9zaXRpb24gaXMgYnl0ZSBhbGlnbmVkLCB0aGUgZmllbGQgaXMgYWxpYXNlZCwgYW5kIHRoZSBjbGF1c2UKCXNpemUgaXNuJ3QgYSBtdWx0aXBsZSBvZiB0aGUgcGFja2FibGUgYWxpZ25tZW50LiBJdCBzZXJ2ZXMgbm8gdXNlZnVsCglwdXJwb3NlIHBhY2tpbmctd2lzZSBhbmQgd291bGQgYmUgcmVqZWN0ZWQgbGF0ZXIgb24uCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIG9iamVjdCk6IFBhc3MgZXh0cmEgYXJnIHRvIGJ1aWxkX2FsbG9jYXRvci4KCglQUiBhZGEvMjA1MTUKCShnbmF0X3RvX2dudV9lbnRpdHkpOiBSZW1vdmUgdXNlIG9mIG1hY3JvIF9XSU4zMiB3aGljaCBpcyB3cm9uZyBpbiB0aGUKCWNvbnRleHQgb2YgY3Jvc3MgY29tcGlsZXJzLiBXZSB1c2UgVEFSR0VUX0RMTElNUE9SVF9ERUNMX0FUVFJJQlVURVMKCWluc3RlYWQuCgkoY3JlYXRlX2NvbmNhdF9uYW1lKTogSWRlbS4KCjIwMDUtMDYtMTAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgQmVuIEJyb3Nnb2wgIDxicm9zZ29sQGFkYWNvcmUuY29tPgoJICAgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCSAgICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhZGFjb3JlLmNvbT4KCSAgICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBnbmF0X3JtLnRleGk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgUGVyc2lzdGVudF9CU1MKCURvY3VtZW50IHNlY29uZCBhcmd1bWVudCAoQWRhXzA1KSBvZiBwcmFnbWEgT2Jzb2xlc2NlbnQKCUFkZCBub3RlIHRoYXQgY2FsbCB0byBzdWJwcm9ncmFtIG1hcmtlZCB3aXRoIHByYWdtYSBPYnNvbGVzY2VudAoJaXMgbm93IGNvbnNpZGVyZWQgdG8gYmUgYSB2aW9sYXRpb24gb2YgcHJvZ3JhbSBSZXN0cmljdGlvbnMKCShOb19PYnNvbGVzY2VudF9GZWF0dXJlcykuCgkoSW1wbGVtZW50YXRpb24gRGVmaW5lZCBQcmFnbWFzKSA8TWFjaGluZV9BdHRyaWJ1dGU+OiBNYWtlIGl0IGNsZWFyCgl0aGF0IG9ubHkgbWFjaGluZS1kZXBlbmRlbnQgYXR0cmlidXRlcyBhcmUgc3VwcG9ydGVkLgoKCSogZ25hdF91Z24udGV4aToKCUNvbW1lbnRlZCBvdXQgbWVudSBsaW5lcyBhbmQgZW1wdHkgc2VjdGlvbiBmb3IgZ25hdGNsZWFuIGV4YW1wbGVzCglEb2N1bWVudCAtZ25hdHd5L1kKCUZpeCBzb21lIG92ZXIgbG9uZyBsaW5lcwoJQ2xhcmlmeSBhbmQgZW5oYW5jZSBkb2N1bWVudGF0aW9uIG9mIEFEQV9QUk9KRUNUX1BBVEguCglSZXdvcmsgc2VjdGlvbiAyLjExLjIoMykgYWJvdXQgbGlua2luZyB3aXRoIGEgbm9uLUdOVSBjb21waWxlci4KCU1lbnRpb24gbmV3IHN3aXRjaCAtZmNhbGxncmFwaC1pbmZvLgoJTWVudGlvbiBuZXcgc3dpdGNoIC1mc3RhY2stdXNhZ2UuCglGb3IgZ25hdHBwLCByZXBsYWNlICctbm90YWInIHdpdGggJy1OJyBhbmQgYWRkIHRoaXMgb3B0aW9uIHRvIEluZGV4CglDb3JyZWN0ZWQgVk1TIGV4YW1wbGUuCglWTVMga2V5d29yZCBmb3Igc3R5bGUgY2hlY2sgLWduYXR5ZCBpcyBET1NfTElORV9FTkRJTkdTLCBubyBOT0NSTEYKCU1pbm9yIHJlZm9ybWF0dGluZwoJQWRkIGRvY3VtZW50YXRpb24gZm9yIC1nbmF0eXUgc3dpdGNoICh1bm5lY2Vzc2FyeSBibGFuayBsaW5lcykKCURvY3VtZW50IG5ldyBzd2l0Y2ggLVUgZm9yIEdOQVQgUFJFVFRZIGFuZCBHTkFUIE1FVFJJQwoJQWRkIG5vdGUgYWJvdXQgU3RkY2FsbCBiZWluZyBoYW5kbGVkIGFzIEMgY29udmVudGlvbiBvbiBub24gV2luZG93cyBPUy4KCVJlbW92ZSBzb21lIGp1bmsgdHlwbyBpbiBkZXNjcmlwdGlvbiBvZiBnbmF0YmluZCAtUyBzd2l0Y2gKCVJlbW92ZSByZWZlcmVuY2UgdG8gRXh0ZW5zaW9uc19BbGxvd2VkIHByYWdtYQoJRG9jdW1lbnQgdGhlIG5ldyBvcmRlciBvZiB0aGUgZGlyZWN0b3JpZXMgdG8gYmUgc2VhcmNoZWQgKHNvdXJjZSBhbmQKCW9iamVjdCBkaXJlY3RvcmllcyBvZiBwcm9qZWN0IGZpbGVzIGJlZm9yZSBkaXJlY3RvcmllcyBpbiBBREFfKl9QQVRICgllbnZpcm9ubWVudCB2YXJpYWJsZXMuCgoJKiBnLXRyYXN5bS5hZHM6IERvY3VtZW50IHRoYXQgSVJJWCBpcyBzdXBwb3J0ZWQKCjIwMDUtMDYtMTAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgaW5pdGlhbGl6ZS5vIHdoZW4gbmVlZGVkLgoJQWRhcHQgdG8gbmV3IFZNUyBwYWNrYWdlIGJvZHkgU3ltYm9scyBhbmQgc3VidW5pdHMKCU5vIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYS1zeXRhY28gaXMgbmVlZGVkIGZvciBWeFdvcmtzLgoKCSogYS13aWNodW4uYWRzLCBhLXdpY2h1bi5hZGIsIGEtemNodW5pLmFkcywgYS16Y2h1bmkuYWRiOiBOZXcgZmlsZXMuCgkqIGEtemNoYXJhLmFkcywgYS13aWRjaGEuYWRzOiBOZXcgZmlsZXMuCgoJKiBzeXN0ZW0taHB1eC1pYTY0LmFkczogTmV3IGZpbGUuCgoJKiBpLXZ4d29yay14ODYuYWRzLCBpLXZ4d29yay5hZHMgKGludENvbnRleHQpOiBBZGQgdGhpcyBmdW5jdGlvbiB3aGljaAoJaXMgaW1wb3J0ZWQgZnJvbSB0aGUgVnhXb3JrcyBrZXJuZWwuCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGctc29saW9wLW1pbmd3LmFkcywgZy1zb2Njb24tdm1zLmFkYiwgYS1zd213Y28uYWRzLCBleHBfc21lbS5hZGIsCglmbWFwLmFkYiwgYS1zem16Y28uYWRzLCBzLXRyYWVudC12bXMuYWRiLCBzLXRyYWVudC12bXMuYWRzLAoJYS1kaXJlaW8uYWRzLCBhLWV4Y3RyYS5hZHMsIGEtZXhleGRhLmFkYiwgYS1leGV4dHIuYWRiLCBhLXN0cmVhbS5hZHMsCglzLXJlc3RyaS5hZHMsIHMtcmVzdHJpLmFkYiwgcy10cmFlbnQuYWRiLCBzLXRyYWVudC5hZHMsIGEtc2xjYWluLmFkYiwKCWEtc3R6aGFzLmFkcywgYS10aWluYXUuYWRiLCBjb21wZXJyLmFkYiwgZXhwX2NoMTEuYWRiLCBnLWJvdWJ1Zi5hZGIsCglnLWNhbGVuZC5hZGIsIGctZGVicG9vLmFkcywgZy1tb3JlZXguYWRzLCBncHJlcC5hZGIsIGctcmVncGF0LmFkcywKCWktY2V4dGVuLmFkcywgaS1vczJ0aHIuYWRzLCBtYWtldXRsLmFkcywgbWVtcm9vdC5hZGIsIG1saWItcHJqLmFkYiwKCW5hbWV0LmFkYiwgbmFtZXQuYWRzLCBwcmotbWFrci5hZGIsIHByai1wcm9jLmFkYiwgc2VtX2Rpc3QuYWRiLAoJc2VtX2VsaW0uYWRzLCBzLXZhbGludC5hZGIsIHMtdmFsbGxpLmFkYiwgcy12YWxsbGkuYWRiLCBzLXZhbGxsaS5hZHMsCglzLXZhbGxsdS5hZGIsIHMtdmFsbGx1LmFkcywgcy12YWxyZWEuYWRiLCBzLXZhbHJlYS5hZHMsIHNjbi5hZGIsCglzLXRhc2luZi5hZGIsIHRhcmdwYXJtLmFkYiwgdW5hbWUuYWRiLCB1bmFtZS5hZHMsIHhubWFrZS5hZGIsCgl4c2luZm8uYWRiLCBhLWRpcmVjdC5hZHM6IFJlbW92ZSBleHRyYSBibGFuayBsaW5lcy4gTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNS0wNi0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHhlaW5mby5hZGI6IEZpeCB0eXBvIGluIGNvbW1lbnQKCjIwMDUtMDYtMTQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHJlcGluZm8uYWRzOiBGaXggdHlwbyBpbiBjb21tZW50CgoyMDA1LTA2LTE0ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzLWZpbmltcC5hZGIgKFBhcmVudF9UYWcpOiBEZWxldGUgdGhpcyBpbXBvcnRlZCBmdW5jdGlvbiAoZnVuY3Rpb24KCVBhcmVudF9UYWcgaXMgbm93IGluIHRoZSB2aXNpYmxlIHBhcnQgb2YgQWRhLlRhZ3MpLgoJKEdldF9EZWVwX0NvbnRyb2xsZXIpOiBDYWxsIEFkYS5UYWdzLlBhcmVudF9UYWcgZGlyZWN0bHkgaW5zdGVhZCBvZgoJdXNpbmcgaW1wb3J0ZWQgZnVuY3Rpb24uCgoyMDA1LTA2LTE0ICBCZXJuYXJkIEJhbm5lciAgPGJhbm5lckBhZGFjb3JlLmNvbT4KCgkqIHZ4YWRkcjJsaW5lLmFkYjogQWRkIHN1cHBvcnQgZm9yIFdpbmRvd3MgaG9zdGVkIHg4NiB2eHdvcmtzLiBTaG91bGQKCWFsc28gYXBwbHkgZm9yIGhhbmRsaW5nIHN1cHBvcnQgZm9yIFZ4U2ltIDY1My4KCjIwMDUtMDYtMTQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB4c25hbWVzLmFkYjogQWRkIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIHNuYW1lcy5oLgoKMjAwNS0wNi0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGdlbi1zb2Njb24uYzogQWRkIElQX01VTFRJQ0FTVF9JRiBjb25zdGFudAoJTWlub3IgcmVmb3JtYXR0aW5nIGFuZCBhZGp1c3RtZW50cyB0byBwcmV2ZW50IHdhcm5pbmdzLgoKMjAwNS0wNi0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogc2VoX2luaXQuYzogRG8gbm90IGluY2x1ZGUgPHN5cy9zdGF0Lmg+LiBUaGlzIGlzIG5vdCBuZWVkZWQuCgoyMDA1LTA2LTAzICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHRyYW5zLmMgKGduYXRfZ2ltcGxpZnlfZXhwcik6IENhbGwKCXJlY29tcHV0ZV90cmVlX2ludmFyYW50X2Zvcl9hZGRyX2V4cHIgd2hlbiB3ZSBjaGFuZ2UKCXRoZSBvcGVyYW5kIG9mIHRoZSBBRERSX0VYUFIuCgoyMDA1LTA1LTMxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtaXNjLmM6IERvbid0IGluY2x1ZGUgZXJyb3JzLmguCgoyMDA1LTA1LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiByYWlzZS5jIChkYik6IEFkZCBBVFRSSUJVVEVfUFJJTlRGXzIuCgoyMDA1LTA1LTI5ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogY2FsLmMsIGRlY2wuYywgaW5pdC5jLCByYWlzZS5jLCB0cmFucy5jLCB1dGlsczIuYzogRml4Cgljb21tZW50IHR5cG9zLgoJKiBnbmF0X3JtLnRleGksIGduYXRfdWduLnRleGk6IEZpeCB0eXBvcy4KCjIwMDUtMDUtMTYgIE5hdGhhbmFlbCBOZXJvZGUgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJUFIgYWRhLzIwMjcwCgkqIE1ha2VmaWxlLmluOiBNYWtlIFRHVF9MSUIgYmVoYXZlIGNvcnJlY3RseS4KCjIwMDUtMDQtMjMgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogbWlzYy5jOiBBZGp1c3Qgd2FybmluZygpIGNhbGxlcnMuCgoyMDA1LTA0LTE2ICBMYXVyZW50IEdVRVJCWSAgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCglQUiBhZGEvMTg4NDcKCSogYS1udWRpcmEuYWRiIChWYWx1ZSk6IENoZWNrIGZvciB2YWxpZCBzdHJpbmcuCgkqIGEtbnVmbHJhLmFkYiAoVmFsdWUpOiBMaWtld2lzZS4KCjIwMDUtMDQtMTEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGxhbmcub3B0OiBSZWZlciB0byB0aGUgR0NDIGludGVybmFscyBkb2N1bWVudGF0aW9uIGluc3RlYWQgb2YgYy5vcHQuCgoyMDA1LTA0LTEwICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWRhaW50LmMsIGluaXQuYywgdHJhY2ViYWsuYzogRml4IGNvbW1lbnQgdHlwb3MuCgkqIGduYXQtc3R5bGUudGV4aSwgZ25hdF9ybS50ZXhpLCBnbmF0X3Vnbi50ZXhpOiBGaXggdHlwb3MuCgoyMDA1LTA0LTA3ICBMYXVyZW50IEdVRVJCWSAgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCSAgICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogTWFrZWZpbGUuaW46IEFkZCBtYWtlIGlmZXEgZGVmaW5lIGZvciBocHBhIGxpbnV4IHRhc2tpbmcgc3VwcG9ydC4KCSogc3lzdGVtLWhwdXguYWRzOiBEZWZpbmUgU2lnbmVkX1plcm9zIHRvIGJlIFRydWUuCgkqIHN5c3RlbS1saW51eC1ocHBhLmFkcywgcy1vc2ludGUtbGludXgtaHBwYS5hZHM6IE5ldyBmaWxlcy4KCjIwMDUtMDQtMDEgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBhZGFpbnQuYywgY2FsLmMsIGRlY2wuYywgZ2lnaS5oLCBnbWVtLmMsIGluaXQuYywgbGluay5jLAoJcmFpc2UuYywgdHJhY2ViYWsuYywgdHJhbnMuYywgdXRpbHMyLmMsIHV0aWxzLmM6IEZpeCBjb21tZW50Cgl0eXBvcy4KCjIwMDUtMDMtMzAgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoZ25hdF9zdWJzdGl0dXRlX2luX3R5cGUpOiBEb24ndCBoYW5kbGUgRklMRV9UWVBFLgoKMjAwNS0wMy0zMCAgQWFyb24gVy4gTGFGcmFtYm9pc2UgIDxhYXJvbmF2YXk2MkBhYXJvbndsLmNvbT4KCgkqIGFkYWludC5jIChfZ25hdF9zZXRfY2xvc2Vfb25fZXhlYyk6IE1hcmsgcGFyYW1ldGVycyB1bnVzZWQuCgoyMDA1LTAzLTI5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX1JlYWxfTGl0ZXJhbCk6IEdlbmVyYXRlIHdhcm5pbmcgaWYgc3RhdGljCglmaXhlZC1wb2ludCBleHByZXNzaW9uIGhhcyB2YWx1ZSB0aGF0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBTbWFsbAoJdmFsdWUuCgoJKiBvcHQuYWRzIChXYXJuX09uX0JhZF9GaXhlZF9WYWx1ZSk6IE5ldyBmbGFnCgoJKiBzLXRhcHJvcC10cnU2NC5hZGIgKFJUX1Jlc29sdXRpb24pOiBSZXR1cm4gYW4gaW50ZWdlciBudW1iZXIgb2YKCW5hbm9zZWNvbmRzLgoKCSogdWdfd29yZHM6IEFkZCBlbnRyeSBmb3IgW05PX11CQURfRklYRURfVkFMVUVTIGZvciAtZ25hdHdiLy1nbmF0d0IKCjIwMDUtMDMtMjkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi10Z3Qtdm1zLWlhNjQuYWRiLCBtbGliLXRndC12bXMtYWxwaGEuYWRiCgkoQnVpbGRfRHluYW1pY19MaWJyYXJ5LlZlcnNpb25fU3RyaW5nKTogUmV0dXJuIHRoZSBlbXB0eSBzdHJpbmcgd2hlbgoJTGliX1ZlcnNpb24gaXMgZW1wdHkgb3Igd2hlbiB0aGUgc3ltYm9sIHBvbGljeSBpcyBub3QgQXV0b25vbW91cy4KCgkqIHN5bWJvbHMtdm1zLWFscGhhLmFkYiAoRmluYWxpemUpOiBGb3Igc3ltYm9sIHBvbGljeSBDb21wbGlhbnQsIHdoZW4KCWEgc3ltYm9sIGlzIG5vdCBpbiB0aGUgcmVmZXJlbmNlIHN5bWJvbCBmaWxlLCBpbmNyZWFzZSB0aGUgTWFqb3IgSUQKCWFuZCBzZXQgdGhlIE1pbm9yIElEIHRvIDAuCglVc2UgZ3NtYXRjaD1sZXF1YWwgaW5zdGVhZCBvZiBnc21hdGNoPWVxdWFsCgoyMDA1LTAzLTI5ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogYWRhaW50LmMgKF9fZ25hdF90b19jYW5vbmljYWxfZmlsZV9zcGVjIFtWTVNdKTogQ2hlY2sgZm9yIGxvZ2ljYWwKCW5hbWUgYW5kIHRyYW5zbGF0ZS4KCjIwMDUtMDMtMjkgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZHMsIGEtdGFncy5hZGIgKEdldF9UU0QpOiBTdWJwcm9ncmFtIHJlbW92ZWQuCgkoSW5oZXJpdF9EVCk6IFRoZSBmaXJzdCBmb3JtYWwgaGFzIGJlZW4gcmVkZWZpbmVkIGFzIGEgVGFnLgoJVGhpcyBhbGxvd3MgdXMgdGhlIHJlbW92YWwgb2YgdGhlIHN1YnByb2dyYW0gR2V0X1RTRC4KCShUU0QpOiBSZXBsYWNlIHRoZSBjYWxsIHRvIEdldF9UU0QgYnkgdGhlIGFjdHVhbCBjb2RlLgoKCSogZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGI6IFJlbW92ZSBzdXBwb3J0IHRvIGNhbGwgR2V0X1RTRC4KCShNYWtlX0RUKTogVXBncmFkZSB0aGUgY2FsbCB0byBJbmhlcml0X1RTRCBhY2NvcmRpbmcgdG8gdGhlCgluZXcgaW50ZXJmYWNlOiB0aGUgZmlyc3QgZm9ybWFsIGlzIG5vdyBhIFRhZy4KCgkqIGktY3BwLmFkcywgaS1jcHAuYWRiIChDUFBfSW5oZXJpdF9EVCk6IFRoZSBmaXJzdCBmb3JtYWwgaGFzIGJlZW4KCXJlZGVmaW5lZCBhcyBhIFRhZy4KCVRoaXMgY2hhbmdlIGFsbG93cyB1cyB0byByZW1vdmUgdGhlIHN1YnByb2dyYW0gR2V0X1RTRC4KCShDUFBfR2V0X1RTRCk6IFN1YnByb2dyYW0gcmVtb3ZlZC4KCShUU0QpOiBSZXBsYWNlIHRoZSBjYWxsIHRvIENQUF9HZXRfVFNEIGJ5IHRoZSBhY3R1YWwgY29kZS4KCgkqIHJ0c2ZpbmQuYWRzOiBSZW1vdmUgc3VwcG9ydCB0byBjYWxsIHRoZSBydW4tdGltZQoJc3VicHJvZ3JhbSBHZXRfVFNECgoyMDA1LTAzLTI5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGVycnV0aWwuYWRiLCBlcnJvdXQuYWRiOgoJTWlub3IgY29tbWVudCB1cGRhdGVzIG9uIExpbmVfVGVybWluYXRvciByZWZlcmVuY2VzCgoJKiBwYXItY2gxMC5hZGI6IEFkZCA/Pz8gY29tbWVudCBhYm91dCBsaW5lIHRlcm1pbmF0b3IKCgkqIHN0eWxlZy5hZGIgKENoZWNrX0xpbmVfVGVybWluYXRvcik6IEFkZCBjaGVjayBmb3IgbmV3IHN3aXRjaCAtZ25hdHlkCgkoY2hlY2sgZG9zIGxpbmUgdGVybWluYXRvcikuCgkoQ2hlY2tfTGluZV9NYXhfTGVuZ3RoKTogTmV3IHByb2NlZHVyZSwgc3BsaXQgb2ZmIGZyb20gdGhlIGV4aXN0aW5nCglDaGVja19MaW5lX1Rlcm1pbmF0b3Igcm91dGluZS4gU2VwYXJhdGluZyB0aGlzIG91dCBhbGxvd3MgLWduYXR5ZiB0bwoJYmUgcHJvcGVybHkgcmVjb2duaXplZC4KCgkqIHN0eWxlZy5hZGI6IEFkZCA/Pz8gY29tbWVudCBmb3IgbGluZSB0ZXJtaW5hdG9yIHJlZmVyZW5jZQoKCSogc2NuZy5hZGIgKENoZWNrX0VuZF9PZl9MaW5lKTogRml4IGJ1ZyBvZiAtZ25hdHlmIGJlaW5nIGlnbm9yZWQKCShDaGVja19FbmRfT2ZfTGluZSk6IEFkZCAtZ25hdHlkIGhhbmRsaW5nIChjaGVjayBkb3MgbGluZSB0ZXJtaW5hdG9ycykKCgkqIHN0eWxlZy5hZHMgKENoZWNrX0xpbmVfVGVybWluYXRvcik6IEFkZCBjaGVjayBmb3IgbmV3IHN3aXRjaCAtZ25hdHlkCgkoY2hlY2sgZG9zIGxpbmUgdGVybWluYXRvcikuCgkoQ2hlY2tfTGluZV9NYXhfTGVuZ3RoKTogTmV3IHByb2NlZHVyZSwgc3BsaXQgb2ZmIGZyb20gdGhlIGV4aXN0aW5nCglDaGVja19MaW5lX1Rlcm1pbmF0b3Igcm91dGluZS4gU2VwYXJhdGluZyB0aGlzIG91dCBhbGxvd3MgLWduYXR5ZiB0bwoJYmUgcHJvcGVybHkgcmVjb2duaXplZC4KCgkqIHN0eWxlc3cuYWRzLCBzdHlsZXN3LmFkYjoKCUFkZCBoYW5kbGluZyBmb3IgbmV3IC1nbmF0eWQgc3dpdGNoIChjaGVjayBkb3MgbGluZSB0ZXJtaW5hdG9yKQoKCSogc3dpdGNoLWMuYWRiOiBSZWNvZ25pemUgbmV3IC1nbmF0eWQgc3dpdGNoIChjaGVjayBkb3MgbGluZSB0ZXJtaW5hdG9yKQoJUmVjb2duaXplIC1nbmF0d2IvLWduYXR3QiBzd2l0Y2hlcwoJSW5jbHVkZSBXYXJuX09uX0JhZF9GaXhlZF9WYWx1ZSBmb3IgLWduYXRnCgoJKiB1c2FnZS5hZGI6CglBZGQgbGluZSBmb3IgbmV3IC1nbmF0eWQgc3dpdGNoIChjaGVjayBkb3MgbGluZSB0ZXJtaW5hdG9yKQoKCSogdXNhZ2UuYWRiOiBBZGQgbGluZXMgZm9yIC1nbmF0d2IvLWduYXR3QgoKCSogdm1zX2RhdGEuYWRzOiBBZGQgZW50cnkgZm9yIE5PQ1JMRiAoLWduYXR5ZCkKCgkqIHZtc19kYXRhLmFkczogW05PX11CQURfRklYRURfVkFMVUVTIHN5bm9ueW0gZm9yIC1nbmF0d2IvLWduYXR3QgoKCSogZ25hdF91Z24udGV4aTogRml4IG92ZXJsb25nIGxpbmVzCglEb2N1bWVudCBuZXcgLWduYXR5ZCBzd2l0Y2gKCURvY3VtZW50IG5ldyAtZ25hdHdiLy1nbmF0d0Igc3dpdGNoZXMKCjIwMDUtMDMtMjkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDQuYWRiIChIYXNfVW5jb25zdHJhaW5lZF9VVV9Db21wb25lbnQpOiBVc2UgdGhlIGJhc2UgdHlwZSBpbgoJb3JkZXIgdG8gcmV0cmlldmUgdGhlIGNvbXBvbmVudCBsaXN0IG9mIHRoZSB0eXBlLCBiZWZvcmUgZXhhbWluaW5nCglpbmRpdmlkdWFsIGNvbXBvbmVudHMuCgoJKiBzZW1fdHlwZS5hZGIgKENvdmVycyk6IFR5cGVzIGFyZSBjb21wYXRpYmxlIGlmIG9uZSBpcyB0aGUgYmFzZSB0eXBlCglvZiB0aGUgb3RoZXIsIGV2ZW4gdGhvdWdoIHRoZWlyIGJhc2UgdHlwZXMgbWlnaHQgZGlmZmVyIHdoZW4gcHJpdmF0ZQoJdmlld3MgYXJlIGludm9sdmVkLgoKMjAwNS0wMy0yOSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoQWRkX1JBU1RfRmVhdHVyZXMsIFBvbHlPUkIgdmVyc2lvbik6IFNldCB0aGUgRnJvbV9BbnksCglUb19BbnkgYW5kIFR5cGVDb2RlIFRTU3Mgb24gUkFTIHR5cGVzIGRpcmVjdGx5IHVzaW5nIFNldF9UU1MsIGluc3RlYWQKCW9mIHVzaW5nIFNldF9SZW5hbWluZ19UU1MuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBUU1MgYm9kaWVzIGFyZSBub3QKCWFuYWx5emVkIGlmIGV4cGFuc2lvbiBpcyBkaXNhYmxlZCAod2hpY2ggY291bGQgb3RoZXJ3aXNlIGNhdXNlIHNwdXJpb3VzCgllcnJvciBtZXNzYWdlcyBpZiBleHBhbnNpb24gaGFzIGJlZW4gZGlzYWJsZWQgZHVlIHRvIHByZXZpb3VzCgkodW5yZWxhdGVkKSBlcnJvcnMpLgoKCSogc2VtX3ByYWcuYWRiIChBbmFseXplX1ByYWdtYSwgY2FzZSBBc3luY2hyb25vdXMpOiBJZiBSQVMgZXhwYW5zaW9uCglpcyBkaXNhYmxlZCwgdGhlIGVudGl0eSBkZW5vdGVkIGJ5IHRoZSBhcmd1bWVudCBpcyB0aGUgYWNjZXNzIHR5cGUKCWl0c2VsZiwgbm90IGFuIHVuZGVybHlpbmcgcmVjb3JkIHR5cGUsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ28gYmFjawoJdG8gdGhlIENvcnJlc3BvbmRpbmdfUmVtb3RlX1R5cGUuCgoyMDA1LTAzLTI5ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfaW50ci5hZGIgKEV4cGFuZF9EaXNwYXRjaGluZ19Db25zdHJ1Y3Rvcl9DYWxsKTogTmV3IHByb2NlZHVyZSB0bwoJZXhwYW5kIGEgY2FsbCB0byBhbiBpbnN0YW5jZSBvZgoJQWRhLlRhZ3MuR2VuZXJpY19EaXNwYXRjaGluZ19Db25zdHJ1Y3RvciBpbnRvIGEgZGlzcGF0Y2hpbmcgY2FsbCB0byB0aGUKCUNvbnN0cnVjdG9yIGFjdHVhbCBvZiB0aGUgaW5zdGFuY2UuIEEgY2xhc3Mtd2lkZSBtZW1iZXJzaGlwCgljaGVjayBpcyBhbHNvIGdlbmVyYXRlZCwgdG8gZW5zdXJlIHRoYXQgdGhlIHRhZyBwYXNzZWQgdG8gdGhlIGluc3RhbmNlCglkZW5vdGVzIGEgdHlwZSBpbiB0aGUgY2xhc3MuCgkoRXhwYW5kX0ludHJpbnNpY19DYWxsKTogQ2FsbCBFeHBhbmRfRGlzcGF0Y2hpbmdfQ29uc3RydWN0b3IgaW4gdGhlIGNhc2UKCW9mIE5hbWVfR2VuZXJpY19EaXNwYXRjaGluZ19Db25zdHJ1Y3Rvci4KCgkqIE1ha2VmaWxlLnJ0bDogQWRkIGEtdGdkaWNvLmFkcyB0byB0aGUgbGlzdCBvZiBsaWJyYXJ5IHVuaXRzIChuZXcgQWRhCgkwNSB1bml0IGZvciBBSS0yNjAtMDIpLgoKCSogYS10Z2RpY28uYWRzOiBOZXcgZmlsZS4KCgkqIGltcHVuaXQuYWRiIChOb25fSW1wX0ZpbGVfTmFtZXNfMDUpOiBBZGQgZW50cnkgImEtdGdkaWNvIiBmb3IgbmV3CglwcmVkZWZpbmVkIEFkYSAwNSBnZW5lcmljIHVuaXQgQWRhLlRhZ3MuR2VuZXJpY19EaXNwYXRjaGluZ19Db25zdHJ1Y3Rvci4KCgkqIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGIgKFByZXNldF9OYW1lcyk6IEFkZCBlbnRyeSBmb3IKCUdlbmVyaWNfRGlzcGF0Y2hpbmdfQ29uc3RydWN0b3IuCgoJUFIgYWRhLzIwMzAwCgkqIHNlbV9jaDguYWRiIChGaW5kX0RpcmVjdF9OYW1lKTogR28gdG8gcm9vdCB0eXBlIGZvciBjaGVjayBvZgoJY2hhcmFjdGVyIHR5cGUgY2FzZXMuCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX1JlbmFtaW5nKTogQWRkIHNwZWNpYWwgaGFuZGxpbmcgZm9yCgl0aGUgY2FzZSBvZiByZW5hbWluZyBvZiBzdHJlYW0gYXR0cmlidXRlcyB3aGVuIHRoZSByZW5hbWluZyBkZW5vdGVzIGEKCWdlbmVyaWMgZm9ybWFsIHN1YnByb2dyYW0gYXNzb2NpYXRpb24gZm9yIGFuIGFic3RyYWN0IGZvcm1hbCBzdWJwcm9ncmFtLgoJQ2hlY2sgdGhhdCB0aGUgYXR0cmlidXRlIGlzIGEgcHJpbWl0aXZlIHN0cmVhbSBhdHRyaWJ1dGUgKGFuZCBub3QKCWEgY2xhc3Mtd2lkZSBzdHJlYW0gYXR0cmlidXRlKSBhbmQgdGhlbiByZXdyaXRlIHRoZSBhdHRyaWJ1dGUgbmFtZQoJYXMgdGhlIG5hbWUgb2YgdGhlIGFwcHJvcHJpYXRlIGNvbXBpbGVyLWdlbmVyYXRlZCBzdHJlYW0gcHJpbWl0aXZlLgoKMjAwNS0wMy0yOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfdXRpbC5hZGIgKFJlbW92ZV9TaWRlX0VmZmVjdHMpOiBQcm9wZXJseSBwcm9wYWdhdGUgYXJndW1lbnRzIHRvCglyZWN1cnNpdmUgY2FsbHMuCgkoSXNfUG9zc2libHlfVW5hbGlnbmVkX09iamVjdCk6IENvcnJlY3QgdHlwbyB0aGF0CglyZXN1bHRlZCBpbiBpbmFjY3VyYXRlIHJlc3VsdCBmb3IgdW5hbGlnbmVkIHNjYWxhcnMgd2l0aGluIHJlY29yZHMuCgoyMDA1LTAzLTI5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfUmVjb3JkX1R5cGUpOiBJZiB0aGUgdHlwZSBvZiB0aGUgY29tcG9uZW50IGlzIGFuCglpdHlwZSB3aG9zZSBwYXJlbnQgaXMgY29udHJvbGxlZCBhbmQgbm90IHlldCBmcm96ZW4sIGRvIG5vdCBjcmVhdGUgYQoJZnJlZXplIG5vZGUgZm9yIHRoZSBpdHlwZSBpZiBleHBhbnNpb24gaXMgZGlzYWJsZWQuCgoyMDA1LTAzLTI5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IERvbid0IGZhaWwgaWYgdGhlIG1haW4gcHJvamVjdCBmaWxlIGlzIGRlY2xhcmVkCglhcyBoYXZpbmcgbm8gQWRhIHNvdXJjZXMuIERvIG5vdCBkaXNwbGF5IG1lc3NhZ2UgIm5vIHNvdXJjZXMgdG8KCWNvbXBpbGUiIGluIHF1aWV0IG91dHB1dC4KCjIwMDUtMDMtMjkgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbiBbVk1TXSAoRVhUUkFfR05BVFRPT0xTKTogQWRkIHZtc19oZWxwIGFuZCBnbmF0LmhscCBhcwoJZXh0cmEgdG9vbHMuCgoyMDA1LTAzLTI5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHBhci1jaDEyLmFkYiAoUF9HZW5lcmljKTogR2l2ZSBiZXR0ZXIgbXNnIGZvciBpbGxlZ2FsIHByaXZhdGUgZ2VuZXJpYwoJY2hpbGQuCgoyMDA1LTAzLTI5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHBhci1jaDMuYWRiIChQX1R5cGVfRGVjbGFyYXRpb24pOiBGaXggYmFkIGVycm9yIHJlY292ZXJ5IGFmdGVyCgltaXNzaW5nIFRZUEUgSW1wcm92ZSB0aGUgZXJyb3IgbWVzc2FnZSBnZW5lcmF0ZWQgd2hlbiBjb21waWxpbmcgYQoJbGltaXRlZCBpbnRlcmZhY2UgaW4gQWRhODMgb3IgQWRhOTUgbW9kZS4KCjIwMDUtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoNC5hZGIgKFBfTmFtZSk6IFdoZW4gYSBiYWQgYXR0cmlidXRlIGlzIHJldHVybmVkLCByZXR1cm4gZXJyb3IsCglyYXRoZXIgdGhhbiBwcm9jZWVkIGFoZWFkIHVzaW5nIGEganVuayBhdHRyaWJ1dGUgbmFtZS4KCjIwMDUtMDMtMjkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLmFkcywgcHJqLmFkYjogKFByb2plY3RfRGF0YSk6IEFkZCBuZXcgY29tcG9uZW50IERpc3BsYXlfTmFtZQoKCSogcHJqLXBhcnQuYWRiIChQYXJzZV9TaW5nbGVfUHJvamVjdCk6IFNldCB0aGUgbG9jYXRpb24gb2YgYSBwcm9qZWN0CglvbiBpdHMgZGVmaW5pbmcgaWRlbnRpZmllciwgcmF0aGVyIHRoYW4gb24gdGhlIHJlc2VydmVkIHdvcmQgInByb2plY3QiLgoKCSogcHJqLXByb2MuYWRiIChFeHByZXNzaW9uKTogQWRhcHQgdG8gdGhlIGZhY3QgdGhhdCBkZWZhdWx0IG9mIGV4dGVybmFsCglyZWZlcmVuY2VzIG1heSBiZSBzdHJpbmcgZXhwcmVzc2lvbnMsIG5vdCBhbHdheXMgbGl0ZXJhbCBzdHJpbmdzLgoJKFJlY3Vyc2l2ZV9Qcm9jZXNzKTogU2V0IERpc3BsYXlfTmFtZSBlcXVhbCB0byBOYW1lCgl3aGVuIExvY2F0aW9uIGlzIE5vX0xvY2F0aW9uLCB0aGF0IGlzIHdoZW4gdGhlcmUgaXMgbm8gYWN0dWFsIGZpbGUuCglHZXQgdGhlIERpc3BsYXlfTmFtZSBvZiB0aGUgcHJvamVjdCBmcm9tIHRoZSBzb3VyY2UsIHdoZW4gaXQgaXMgbm90IGEKCXZpcnR1YWwgcHJvamVjdC4KCShQcm9jZXNzKTogVXNlIHRoZSBEaXNwbGF5X05hbWUgaW4gZXJyb3IgbWVzc2FnZXMKCgkqIHByai1zdHJ0LmFkYiAoRXh0ZXJuYWxfUmVmZXJlbmNlKTogQWxsb3cgZGVmYXVsdCB0byBiZSBzdHJpbmcKCWV4cHJlc3Npb25zLCBub3Qgb25seSBsaXRlcmFsIHN0cmluZ3MuCgoyMDA1LTAzLTI5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai1ubXNjLmFkYiAoQ2hlY2tfU3RhbmRfQWxvbmVfTGlicmFyeSk6IERvIG5vdCBmb3JiaWQgdGhlIHN5bWJvbAoJZmlsZSBhbmQgdGhlIHJlZmVyZW5jZSBzeW1ib2wgZmlsZSB0byBiZSB0aGUgc2FtZSBmaWxlLgoKMjAwNS0wMy0yOSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jYXQuYWRiIChWYWxpZGF0ZV9SZW1vdGVfVHlwZXNfVHlwZV9Db252ZXJzaW9uKTogUGVyZm9ybSBjaGVjayB0bwoJZm9yYmlkIGNvbnZlcnNpb24gb2YgYSBsb2NhbCBhY2Nlc3MtdG8tc3VicHJvZ3JhbSB0eXBlIHRvIGEgcmVtb3RlIG9uZS4KCgkqIHNlbV91dGlsLmFkYiAoV3JvbmdfVHlwZSk6IEZvciBhIHJlY29yZCB0eXBlIHRoYXQgaXMgdGhlIGV4cGFuZGVkCgllcXVpdmFsZW50IHR5cGUgZm9yIGEgcmVtb3RlIGFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGUsIGdvIGJhY2sgdG8gdGhlCglvcmlnaW5hbCBSQVMgZW50aXR5IHdoZW4gZGlzcGxheWluZyBhbiBlcnJvciBtZXNzYWdlLCBzbyB0aGUgY2FzaW5nIGlzCgl0aGUgb3JpZ2luYWwgc291cmNlIGNhc2luZy4KCjIwMDUtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTEuYWRiIChBbmFseXplX1JhaXNlX1N0YXRlbWVudCk6IENoYW5nZSBtZXNzYWdlIGZvciB3YXJuaW5nCglvbiBwYXJhbSB1cGRhdGUuCgoyMDA1LTAzLTI5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBEbyBub3QgZ2VuZXJhdGUgYW4gYWN0dWFsCglzdWJ0eXBlIGlmIGNvZGUgaXMgYmVpbmcgcHJlLWFuYWx5emVkLCB0byBwcmV2ZW50IHVuLWV4cGFuZGVkCglyZWZlcmVuY2VzIHRvIHByb3RlY3RlZCBmb3JtYWxzLCBhbW9uZyBvdGhlcnMuCgkoQW5hbHl6ZV9FeHBsaWNpdF9EZXJlZmVyZW5jZSk6IElmIHRoZSBvdmVybG9hZGVkIHByZWZpeCBpbmNsdWRlcyBzb21lCglpbnRlcnByZXRhdGlvbiB0aGF0IGNhbiBiZSBhIGNhbGwsIGluY2x1ZGUgdGhlIHJlc3VsdCBvZiB0aGUgY2FsbCBhcyBhCglwb3NzaWJsZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgZGVyZWZlcmVuY2UuCgoJKiBzZW1fY2g1LmFkYiAoUHJvY2Vzc19Cb3VuZHMpOiBEZXRlcm1pbmUgdHlwZSBvZiByYW5nZSBieQoJcHJlLWFuYWx5emluZyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIHJhbmdlLCBhbmQgdGhlbiBhbmFseXplIHRoZSByYW5nZQoJd2l0aCB0aGUgZXhwZWN0ZWQgdHlwZS4KCgkqIHNlbV9yZXMuYWRiIChDaGVja19QYXJhbWV0ZXJsZXNzX0NhbGwpOiBGb3IgYW4gZXhwbGljaXQgZGVyZWZlcmVuY2UKCXdpdGggYW4gb3ZlcmxvYWRlZCBwcmVmaXggd2hlcmUgbm90IGFsbCBpbnRlcnByZXRhdGlvbnMgeWllbGQgYW4KCWFjY2VzcyB0byBzdWJwcm9ncmFtLCBkbyBub3QgcmV3cml0ZSBub2RlIGFzIGEgY2FsbC4KCShSZXNvbHZlX0V4cGxpY2l0X0RlcmVmZXJlbmNlKTogUmVjb2duaXplIHRoZSBwcmV2aW91cyBjYXNlIGFuZCByZXdyaXRlCgl0aGUgbm9kZSBhcyBhIGNhbGwgb25jZSB0aGUgY29udGV4dCBpZGVudGlmaWVzIHRoZSBpbnRlcnByZXRhdGlvbiBvZgoJdGhlIHByZWZpeCB3aG9zZSBjYWxsIHlpZWxkcyB0aGUgY29udGV4dCB0eXBlLgoJKFZhbGlkX0NvbnZlcnNpb24pOiBGb3IgdGhlIGNhc2Ugb2YgYSBjb252ZXJzaW9uIGJldHdlZW4KCWxvY2FsIGFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGVzLCBjaGVjayBzdWJ0eXBlIGNvbmZvcm1hbmNlIHVzaW5nCglDaGVja19TdWJ0eXBlX0NvbmZvcm1hbnQgaW5zdGVhZCBvZiBTdWJ0eXBlX0NvbmZvcm1hbnQsIHRvIGhhdmUgYSBtb3JlCglkZXRhaWxlZCBlcnJvciBtZXNzYWdlLgoKMjAwNS0wMy0yOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNi5hZGIgKFNldF9Gb3JtYWxfTW9kZSk6IElmIHRoZSBzdWJ0eXBlIGhhcyBhIG5vbl9udWxsCglpbmRpY2F0b3IsIGluZGljYXRlIHRoYXQgdGhlIGZvcm1hbCBjYW4gbmV2ZXIgYmUgbnVsbC4KCShQcm9jZXNzX0Zvcm1hbHMpOiBJZiBhIGZvcm1hbCBoYXMgYSBub25fbnVsbCBpbmRpY2F0b3IsIGluc2VydCB0aGUKCXJlc3VsdGluZyBzdWJ0eXBlIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgZW5jbG9zaW5nIHN1YnByb2dyYW0gZGVjbCwKCWFuZCBub3QgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY29ycmVzcG9uZGluZyBkZWNsYXJhdGl2ZSBwYXJ0LCB0bwoJcHJldmVudCBhY2Nlc3MgYmVmb3JlIGVsYWJvcmF0aW9uIChBZGEyMDA1KS4KCjIwMDUtMDMtMjkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJUFIgYWRhLzE5OTU2CgkqIHV0aWxzLmMgKGZpbmlzaF9yZWNvcmRfdHlwZSk6IFVzZSB2YXJpYWJsZV9zaXplIHdoZW4gc2V0dGluZyBzaXplcy4KCjIwMDUtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogeHRyZWVwcnMuYWRiLCB4bm1ha2UuYWRiOiBVc2UgU3RyZWFtX0lPIGluc3RlYWQgb2YgVGV4dF9JTyB0bwoJZ3VhcmFudGVlIFVuaXggc3R5bGUgbGluZSB0ZXJtaW5hdG9ycyBmb3IgdGhlIG91dHB1dCBmaWxlcywgZXZlbiB3aGVuCglydW5uaW5nIG9uIHdpbmRvd3MuCgoyMDA1LTAzLTI5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGEtZGlyZWN0LmFkcywgYS1kaXJlY3QuYWRiIChTdGFydF9TZWFyY2gpOiBGcmVlIGFsbG9jYXRlZCBzZWFyY2gKCWJ1ZmZlciBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgoKMjAwNS0wMy0yOSAgRWQgRmFsaXMgIDxmYWxpc0BhZGFjb3JlLmNvbT4KCgkqIGNpby5jOiBVbmRlZmluZSBwdXRjaGFyIGFuZCBnZXRjaGFyIGZvciBWVEhSRUFEUzogaW5jb21wYXRpYmxlIHdpdGgKCVZ4V29ya3MgNjUzIDEuNAoKMjAwNS0wMy0yOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fdXRpbC5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoJKiBnbmF0X3JtLnRleGk6IE1pbm9yIGVkaXRpbmcuCgoyMDA1LTAzLTI5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogUmV3b3JrIGNvbW1lbnQuCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtKSA8Tl9JZGVudGlmaWVyPjogVXNlIGNvcnJlY3QgcHJlZGljYXRlcy4KCjIwMDUtMDMtMjQgIEFhcm9uIFcuIExhRnJhbWJvaXNlICA8YWFyb25hdmF5NjJAYWFyb253bC5jb20+CgoJKiBhZGFpbnQuYyAoX19nbmF0X3BvcnRhYmxlX3NwYXduKTogQWRqdXN0IGNhc3QuCgoyMDA1LTAzLTIzICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pc2MuYyAoTEFOR19IT09LU19UUlVUSFZBTFVFX0NPTlZFUlNJT04pOiBSZW1vdmUuCgoyMDA1LTAzLTE3ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBhZGFpbnQuaCwgYWRhaW50LmMgKF9fZ25hdF93YWl0cGlkKTogTW92ZWQgdG8gZXhwZWN0LmMgd2hlcmUgaXQgaXMKCXVzZWQuCgoJKiBleHBlY3QuYyAoX19nbmF0X3dhaXRwaWQpOiBNb3ZlZCBoZXJlIGZyb20gYWRhaW50LmMuCglSZWltcGxlbWVudCB1bmRlciBXaW4zMiB1c2luZyBXaW4zMiBBUEkuCgoJKF9fZ25hdF9raWxsKSBbV2luMzJdOiBQcm9wZXJseSBjbG9zZSB0aGUgcHJvY2VzcyBoYW5kbGUgYmVmb3JlIGxlYXZpbmcKCXRoaXMgcm91dGluZS4KCjIwMDUtMDMtMTcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBhZGEtdHJlZS5oOiAoREVDTF9SRU5BTUlOR19HTE9CQUxfUCk6IE5ldyBwcmVkaWNhdGUuCgkoREVDTF9SRU5BTUVEX09CSkVDVCk6IE5ldyBhY2Nlc3NvciBtYWNyby4KCShTRVRfREVDTF9SRU5BTUVEX09CSkVDVCk6IE5ldyBzZXR0ZXIgbWFjcm8uCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPEVfVmFyaWFibGU+OiBTdGFiaWxpemUgdGhlIHJlbmFtZWQKCW9iamVjdCBpbiBhbGwgY2FzZXMuICBBdHRhY2ggdGhlIHJlbmFtZWQgb2JqZWN0IHRvIHRoZSBWQVJfREVDTC4KCShnbmF0X3RvX2dudV9maWVsZCk6IERvIG5vdCBsaWZ0IHRoZSByZWNvcmQgd3JhcHBlciBpZiB0aGUgc2l6ZSBvZiB0aGUKCWZpZWxkIGlzIG5vdCBwcmVzY3JpYmVkLgoKCSogbWlzYy5jIChnbmF0X2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgLWduYXRPIHNlcGFyYXRlbHkuCgkoZ25hdF9wcmludF9kZWNsKSA8VkFSX0RFQ0w+OiBOZXcgY2FzZS4KCVByaW50IHRoZSBERUNMX1JFTkFNRURfT0JKRUNUIG5vZGUuCgoJKiBsYW5nLm9wdDogIERlY2xhcmUgc2VwYXJhdGUgLWduYXRPIG9wdGlvbi4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtKSA8Tl9JZGVudGlmaWVyPjogSWYgdGhlIG9iamVjdCBpcyBhIHJlbmFtaW5nCglwb2ludGVyLCByZXBsYWNlIGl0IHdpdGggdGhlIHJlbmFtZWQgb2JqZWN0LgoJPE5fVmFsaWRhdGVfVW5jaGVja2VkX0NvbnZlcnNpb24+OiBXYXJuIGZvciBhIGNvbnZlcnNpb24gdG8gYSBmYXQKCXBvaW50ZXIgdHlwZSBpZiB0aGUgc291cmNlIGlzIG5vdCBhIGZhdCBwb2ludGVyIHR5cGUgd2hvc2UgdW5kZXJseWluZwoJYXJyYXkgaGFzIHRoZSBzYW1lIG5vbi16ZXJvIGFsaWFzIHNldCBhcyB0aGF0IG9mIHRoZSBkZXN0aW5hdGlvbiBhcnJheS4KCjIwMDUtMDMtMTcgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGEtdGFncy5hZHMsIGEtdGFncy5hZGIgKEdldF9FeHBhbmRlZF9OYW1lKTogUmVtb3ZlZC4KCShHZXRfSW5oZXJpdGFuY2VfRGVwdGgpOiBSZW1vdmVkLgoJKFNldF9Jbmhlcml0YW5jZV9EZXB0aCk6IFJlbW92ZWQuCgoJKiBydHNmaW5kLmFkcywgZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGI6IFJlbW92ZSBzdXBwb3J0IHRvIGNhbGwgdGhlCglzdWJwcm9ncmFtIEdldF9FeHBhbmRlZF9OYW1lIGJlY2F1c2UgaXQgaXMgbm90IHJlZmVyZW5jZWQgYnkgdGhlCglmcm9udGVuZC4KCgkqIGktY3BwLmFkcywgaS1jcHAuYWRiIChDUFBfR2V0X0V4cGFuZGVkX05hbWUpOiBSZW1vdmVkLgoJKENQUF9HZXRfSW5oZXJpdGFuY2VfRGVwdGgpOiBSZW1vdmVkLgoJKENQUF9TZXRfSW5oZXJpdGFuY2VfRGVwdGgpOiBSZW1vdmVkLgoKCSogdGJ1aWxkLmFkcywgdGJ1aWxkLmFkYiAoTWFrZV9EVF9Db21wb25lbnQpOiBSZW1vdmVkLgoKMjAwNS0wMy0xNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBjaGVja3MuYWRiIChBcHBseV9BcnJheV9TaXplX0NoZWNrKTogQ29tcGxldGVseSByZW1vdmUgdGhpcyBmb3IgR0NDCgkzLCBzaW5jZSB3ZSBub3cgZXhwZWN0IEdDQyAzIHRvIGRvIGFsbCB0aGUgd29yay4KCjIwMDUtMDMtMTcgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGVpbmZvLmFkYiAoRmlyc3RfUHJpdmF0ZV9FbnRpdHksIFNldF9GaXJzdF9Qcml2YXRlX0VudGl0eSk6IEFkZGl0aW9uCglvZiBvbmUgYmFycmllciB0byBhdm9pZCB3cm9uZyB1c2FnZSBvZiB0aGlzIGF0dHJpYnV0ZS4KCgkqIHNlbV9jaDEyLmFkYiAoRm9ybWFsX0VudGl0eSk6IEZpeCBlcnJvbmVvdXMgdXNhZ2Ugb2YgdGhlIGF0dHJpYnV0ZQoJRmlyc3RfUHJpdmF0ZV9FbnRpdHkuCgoJKiBzZW1fY2g3LmFkYiAoSW5zdGFsbF9WaXNpYmxlX0RlY2xhcmF0aW9ucyk6IEFkZCBhIGJhcnJpZXIgdG8gcHJvdGVjdAoJdGhlIHN1YnByb2dyYW0gYWdhaW5zdCB3cm9uZyB1c2FnZS4KCUFkYXB0IHRoZSBjb2RlIHRvIHRyYXZlcnNlIHRoZSBlbnRpdGllcyBpbiB0aGUKCXNjb3BlIG9mIGEgcmVjb3JkX3R5cGUgYmVjYXVzZSBpbiBhZGRpdGlvbiB0byBpdHMgdXNhZ2UgcmVnYXJkaW5nCglwYWNrYWdlcywgdGhpcyBzdWJwcm9ncmFtIGlzIGFsc28gY2FsbGVkIGJ5IEV4cGFuZF9OX0ZyZWV6ZV9FbnRpdHkKCXRvIGluc3RhbGwgdGhlIHZpc2libGUgZGVjbGFyYXRpb25zIG9mIHRoZSBlbmNsb3Npbmcgc2NvcGUgb2YgYQoJcmVjb3JkX3R5cGVfd2l0aF9wcml2YXRlIHRvIGVzdGFibGlzaCB0aGUgcHJvcGVyIHZpc2liaWxpdHkgYmVmb3JlCglmcmVlemluZyB0aGUgZW50aXR5IGFuZCByZWxhdGVkIHN1YnByb2dyYW1zLgoKMjAwNS0wMy0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoMi5hZGIgKEluX0Fzc2lnbm1lbnRfQ29udGV4dCk6IFJlY29nbml6ZSBzbGljZSBhc3NpZ25tZW50cyB0bwoJZW50cnkgZm9ybWFscy4KCjIwMDUtMDMtMTcgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfY2gzLmFkYiAoQ2hlY2tfQXR0cik6IE5ldyBzdWJwcm9ncmFtLgoJKENoZWNrX1N0cmVhbV9BdHRyaWJ1dGUpOiBNb3ZlIHRoZSBjb2RlIGZvciAxMy4xMy4yKDkvMSkgZW5mb3JjZW1lbnQKCWludG8gYSBuZXcgQ2hlY2tfQXR0ciBzdWJwcm9ncmFtLCBpbiBvcmRlciB0byBwcm92aWRlIGEgbW9yZQoJZXhwbGFuYXRvcnkgZXJyb3IgbWVzc2FnZSAoaW5jbHVkaW5nIHRoZSBuYW1lIG9mIHRoZSBtaXNzaW5nIGF0dHJpYnV0ZSkuCgkoU3RyZWFtX09wZXJhdGlvbl9PSyk6IFJlbmFtZWQgZnJvbSBTdHJlYW1fT3BlcmF0aW9uc19PSy4gVGhpcwoJc3VicHJvZ3JhbSBkZXRlcm1pbmVzIHdoZXRoZXIgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGV4aXN0cyBmb3IgYQoJZ2l2ZW4gc3RyZWFtIGF0dHJpYnV0ZS4KCShNYWtlX1ByZWRlZmluZWRfUHJpbWl0aXZlX1NwZWNzLCBQcmVkZWZpbmVkX1ByaW1pdGl2ZV9Cb2RpZXMpOgoJRGV0ZXJtaW5lIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciBlYWNoIHN0cmVhbQoJYXR0cmlidXRlIHNlcGFyYXRlbHksIGFzIHRoaXMgZGVwZW5kcyBvbiB0aGUgc3BlY2lmaWMgYXR0cmlidXRlLgoKCSogZXhwX3N0cm0uYWRiIChNYWtlX0ZpZWxkX0F0dHJpYnV0ZSk6IEZvciB0aGUgY2FzZSBvZiBhbiBpbGxlZ2FsCglsaW1pdGVkIGV4dGVuc2lvbiB3aGVyZSBhIHN0cmVhbSBhdHRyaWJ1dGUgaXMgbWlzc2luZyBmb3IgYSBsaW1pdGVkCgljb21wb25lbnQgKHdoaWNoIHdpbGwgaGF2ZSBiZWVuIGZsYWdnZWQgaW4gRXhwX0NoMy5TZW1fQXR0ciksIGRvIG5vdAoJZ2VuZXJhdGUgYSBib2d1cyByZWZlcmVuY2UgdG8gdGhlIG1pc3NpbmcgYXR0cmlidXRlIHRvIHByZXZlbnQKCWNhc2NhZGVkIGVycm9ycy4gSW5zdGVhZCwgZ2VuZXJhdGUgYSBudWxsIHN0YXRlbWVudC4KCgkqIHNlbV9hdHRyLmFkYiAoQ2hlY2tfU3RyZWFtX0F0dHJpYnV0ZSk6IEEgc3RyZWFtIGF0dHJpYnV0ZSBpcwoJYXZhaWxhYmxlIGZvciBhIGxpbWl0ZWQgdHlwZSBpZiBpdCBoYXMgYmVlbiBzcGVjaWZpZWQgZm9yIGFuIGFuY2VzdG9yCglvZiB0aGUgdHlwZS4KCjIwMDUtMDMtMTcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfSW5saW5lZF9DYWxsKTogaGFuZGxlIHRoZSBjYXNlIHdoZW4gdGhlIHJlbmFtZWQKCWVudGl0eSBpcyBhbiBvcGVyYXRvci4KCjIwMDUtMDMtMTcgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZGIgKEdldF9QQ1NfTmFtZSk6IE1vdmUgZnJvbSBFeHBfRGlzdCBib2R5IHRvIFNlbV9EaXN0CglzcGVjLCB0byBtYWtlIHRoaXMgcHJlZGljYXRlIGF2YWlsYWJsZSB0byBvdGhlciB1bml0cy4KCgkqIHJ0c2ZpbmQuYWRiIChDaGVja19SUEMpOiBVc2UgU2VtX0Rpc3QuR2V0X1BDU19OYW1lIGluc3RlYWQgb2YKCXJlaW1wbGVtZW50aW5nIGl0LgoKCSogc2VtX2NoOC5hZGI6IERpc2FibGUgZXhwYW5zaW9uIG9mIHJlbW90ZSBhY2Nlc3MtdG8tc3VicHJvZ3JhbSB0eXBlcwoJd2hlbiBubyBkaXN0cmlidXRpb24gcnVudGltZSBsaWJyYXJ5IGlzIGF2YWlsYWJsZS4KCgkqIHNlbV9yZXMuYWRiLCBzZW1fZGlzdC5hZGI6IERpc2FibGUgZXhwYW5zaW9uIG9mIHJlbW90ZQoJYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZXMgd2hlbiBubyBkaXN0cmlidXRpb24gcnVudGltZSBsaWJyYXJ5IGlzCglhdmFpbGFibGUuCgkoR2V0X1BDU19OYW1lKTogTW92ZSBmcm9tIEV4cF9EaXN0IGJvZHkgdG8gU2VtX0Rpc3Qgc3BlYywgdG8gbWFrZSB0aGlzCglwcmVkaWNhdGUgYXZhaWxhYmxlIHRvIG90aGVyIHVuaXRzLgoKCSogc2VtX2Rpc3QuYWRzIChHZXRfUENTX05hbWUpOiBNb3ZlIGZyb20gRXhwX0Rpc3QgYm9keSB0byBTZW1fRGlzdAoJc3BlYywgdG8gbWFrZSB0aGlzIHByZWRpY2F0ZSBhdmFpbGFibGUgdG8gb3RoZXIgdW5pdHMuCgoyMDA1LTAzLTE3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiIChJbnNlcnRfUHJvamVjdF9Tb3VyY2VzKTogTWFrZSBzdXJlIHRoZSBRIGlzIGFsd2F5cwoJaW5pdGlhbGl6ZWQuCgoJKiBwcmotbm1zYy5hZGIgKENoZWNrX0FkYV9OYW1pbmdfU2NoZW1lX1ZhbGlkaXR5KTogQ2hlY2sgTmFtaW5nIGFnYWluc3QKCXRoZSBkZWZhdWx0IGZvciB0aGUgdHJlZSwgbm90IHRoZSBnbG9iYWwgZGVmYXVsdCBuYW1pbmcuCgoJKiBwcmotcHJvYy5hZGIgKFJlY3Vyc2l2ZV9Qcm9jZXNzKTogTm8gbmVlZCB0byBwdXQgdGhlIGRlZmF1bHQgbmFtaW5nCglpbiB0aGUgcHJvamVjdCBkYXRhLCBpdCdzIGFscmVhZHkgdGhlcmUuCgoyMDA1LTAzLTE3ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogTWFrZWZpbGUuaW46IChpYTY0LWhwLSp2bXMqKTogVXNlIHMtY3J0bC12bXM2NC5hZHMuCgoJKiA1eGNydGwuYWRzOiBSZW5hbWVkIHRvLi4uCgkqIHMtY3J0bC12bXM2NC5hZHM6IC4uLnRoaXMgbmV3IGZpbGUKCjIwMDUtMDMtMTcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xOTUxOQoJKiBuYW1ldC5hZGIgKENvcHlfT25lX0NoYXJhY3Rlcik6IFNldCBwcm9wZXIgd2lkZSBjaGFyYWN0ZXIgZW5jb2RpbmcKCWZvciB1cHBlciBoYWxmIGNoYXJhY3RlciBpZiB3ZSBoYXZlIHVwcGVyIGhhbGYgZW5jb2RpbmcuCgoyMDA1LTAzLTE3ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHBhci5hZGIgKFBhcik6IEltcHJvdmVkIG1zZyBmb3IgYXR0ZW1wdCB0byByZWNvbXBpbGUgcHJlZGVmaW5lZCB1bml0CgoyMDA1LTAzLTE3ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTMuYWRiIChOZXdfU3RyZWFtX0Z1bmN0aW9uLCBOZXdfU3RyZWFtX1Byb2NlZHVyZSk6IEZvciBhCgl0YWdnZWQgbGltaXRlZCB0eXBlLCB0aGUgVFNTIGlzIGEgbmV3bHkgYnVpbHQgcmVuYW1pbmcgZGVjbGFyYXRpb246CglpbnNlcnQgaXQgdXNpbmcgU2V0X1RTUywgbm90IENvcHlfVFNTLgoKMjAwNS0wMy0xNyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNC5hZGIgKFRyeV9QcmltaXRpdmVfT3BlcmF0aW9uLCBDbGFzc19XaWRlX09wZXJhdGlvbiBhbmQKCVRyeV9PYmplY3RfT3BlcmF0aW9uKTogQW5hbHl6ZSB0aGUgb2JqZWN0IHRoYXQgaXMgYWNjZXNzaWJsZQoJdGhyb3VnaCB0aGUgcHJlZml4IG9mIHRoZSBzdWJwcm9ncmFtIGNhbGwgYmVmb3JlIHdlIGFwcGx5Cgl0aGUgdHJhbnNmb3JtYXRpb24gb2YgdGhlIG9iamVjdC1vcGVyYXRpb24gbm90YXRpb24uCgoyMDA1LTAzLTE3ICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogcy10YXByb2IuYWRiIChJbml0aWFsaXplX1Byb3RlY3Rpb24pOiBJbml0aWFsaXplIHRoZSBwcm90ZWN0ZWQKCW9iamVjdCdzIG93bmVyIHRvIE51bGxfVGFzay4KCShMb2NrKTogSWYgcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBpbiBlZmZlY3QgYW5kIHRoZSBjYWxsZXIgb2YgdGhpcwoJcHJvY2VkdXJlIGlzIGFscmVhZHkgdGhlIHByb3RlY3RlZCBvYmplY3QncyBvd25lciB0aGVuIFByb2dyYW1fRXJyb3IKCWlzIHJhaXNlZC4gSW4gYWRkaXRpb24gdGhlIHByb3RlY3RlZCBvYmplY3QncyBvd25lciBpcyB1cGRhdGVkLgoJKExvY2tfUmVhZF9Pbmx5KTogSWYgcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBpbiBlZmZlY3QgYW5kIHRoZSBjYWxsZXIKCW9mIHRoaXMgcHJvY2VkdXJlIGlzIGFscmVhZHkgdGhlIHByb3RlY3RlZCBvYmplY3QncyBvd25lciB0aGVuCglQcm9ncmFtX0Vycm9yIGlzIHJhaXNlZC4KCUluIGFkZGl0aW9uIHRoZSBwcm90ZWN0ZWQgb2JqZWN0J3Mgb3duZXIgaXMgdXBkYXRlZC4KCShVbmxvY2spOiBSZW1vdmUgdGhlIG93bmVyc2hpcCBvZiB0aGUgcHJvdGVjdGVkIG9iamVjdC4KCgkqIHMtdGFwcm9iLmFkcyAoUHJvdGVjdGlvbik6IEFkZCB0aGUgZmllbGQgT3duZXIsIHVzZWQgdG8gc3RvcmUgdGhlCglwcm90ZWN0ZWQgb2JqZWN0J3Mgb3duZXIuCglUaGlzIGNvbXBvbmVudCBpcyBuZWVkZWQgZm9yIGRldGVjdGluZyBvbmUgdHlwZSBvZiBwb3RlbnRpYWxseSBibG9ja2luZwoJb3BlcmF0aW9ucyAoZXh0ZXJuYWwgY2FsbHMgb24gYSBwcm90ZWN0ZWQgc3VicHJvZ3JhbSB3aXRoIHRoZSBzYW1lCgl0YXJnZXQgb2JqZWN0IGFzIHRoYXQgb2YgdGhlIHByb3RlY3RlZCBhY3Rpb24pLiBEb2N1bWVudCB0aGUgcmVzdCBvZgoJdGhlIGNvbXBvbmVudHMuCgoJKiBzLXRwb3Nlbi5hZGIsIHMtdHBvYmVuLmFkYiAoSW5pdGlhbGl6ZV9Qcm90ZWN0aW9uX0VudHJpZXMpOgoJSW5pdGlhbGl6ZSB0aGUgcHJvdGVjdGVkIG9iamVjdCdzIG93bmVyIHRvIE51bGxfVGFzay4KCShMb2NrX1JlYWRfT25seV9FbnRyaWVzKTogSWYgcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBpbiBlZmZlY3QgYW5kIHRoZQoJY2FsbGVyIG9mIHRoaXMgcHJvY2VkdXJlIGlzIGFscmVhZHkgdGhlIHByb3RlY3RlZCBvYmplY3QncyBvd25lciB0aGVuCglQcm9ncmFtX0Vycm9yIGlzIHJhaXNlZC4KCURvIG5vdCByYWlzZSBQcm9ncmFtX0Vycm9yIHdoZW4gdGhpcyBwcm9jZWR1cmUgaXMgY2FsbGVkIGZyb20gYQoJcHJvdGVjdGVkIGFjdGlvbi4KCShVbmxvY2tfRW50cmllcyk6IFJlbW92ZSB0aGUgb3duZXJzaGlwIG9mIHRoZSBwcm90ZWN0ZWQgb2JqZWN0LgoJKExvY2tfRW50cmllcyk6IElmIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgaW4gZWZmZWN0IGFuZCB0aGUgY2FsbGVyCglvZiB0aGlzIHByb2NlZHVyZSBpcyBhbHJlYWR5IHRoZSBwcm90ZWN0ZWQgb2JqZWN0J3Mgb3duZXIgdGhlbgoJUHJvZ3JhbV9FcnJvciBpcyByYWlzZWQuCglEbyBub3QgcmFpc2UgUHJvZ3JhbV9FcnJvciB3aGVuIHRoaXMgcHJvY2VkdXJlIGlzIGNhbGxlZCBmcm9tCglhIHByb3RlY3RlZCBhY3Rpb24uCgoJKiBzLXRwb3Nlbi5hZHMsIHMtdHBvYmVuLmFkcyAoUHJvdGVjdGlvbl9FbnRyaWVzKTogQWRkIHRoZSBmaWVsZCBPd25lciwKCXVzZWQgdG8gc3RvcmUgdGhlIHByb3RlY3RlZCBvYmplY3QncyBvd25lci4KCgkqIHMtdHBvYm9wLmFkYiAoUHJvdGVjdGVkX0VudHJ5X0NhbGwpOiBJZiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGluCgllZmZlY3QgYW5kIHRoaXMgcHJvY2VkdXJlIChhIHBvdGVudGlhbGx5IGJsb2NraW5nIG9wZXJhdGlvbikgaXMgY2FsbGVkCglmcm9tIHdoaXRoaW4gYSBwcm90ZWN0ZWQgYWN0aW9uLCBQcm9ncmFtX0Vycm9yIGlzIHJhaXNlZC4KCShUaW1lZF9Qcm90ZWN0ZWRfRW50cnlfQ2FsbCk6IElmIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgaW4gZWZmZWN0CglhbmQgdGhpcyBwcm9jZWR1cmUgKGEgcG90ZW50aWFsbHkgYmxvY2tpbmcgb3BlcmF0aW9uKSBpcyBjYWxsZWQgZnJvbQoJd2hpdGhpbiBhIHByb3RlY3RlZCBhY3Rpb24sIFByb2dyYW1fRXJyb3IgaXMgcmFpc2VkLgoKMjAwNS0wMy0xNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgkgICAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBtbGliLXRndC1kYXJ3aW4uYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBSZW1vdmUgdGhlICItZmluaSIKCXN3aXRjaCwgbm90IHN1cHBvcnRlZCBieSB0aGUgbGlua2VyIG9uIERhcndpbi4gQWRkICdfJyBiZWZvcmUKCTxsaWJyYXJ5PmluaXQsIGFzIHRoaXMgY2hhcmFjdGVyIGlzIGFkZGVkIHVuY29uZGl0aW9uYWxseSBieSB0aGUKCWNvbXBpbGVyLgoJKElzX0FyY2hpdmVfRXh0KTogUmVwbGFjZSB0aGUgd3JvbmcgbGlicmFyeSBleHRlbnNpb24gIi5keWxkIiBieSB0aGUKCWNvcnJlY3Qgb25lICIuZHlsaWIiLiBUaGlzIGZpeGVzIGRldGVjdGlvbiBvZiB0aGUgYXJjaGl2ZSBmaWxlcyB3aGVuCglidWlsZGluZyBsaWJyYXJ5IHByb2plY3RzLgoKMjAwNS0wMy0xNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBzd2l0Y2gtbS5hZGIgKE5vcm1hbGl6ZV9Db21waWxlcl9Td2l0Y2hlcyk6IFJlY29nbml6ZSBzd2l0Y2hlcwoJLWduYXQ4MywgLWduYXQ5NSBhbmQgLWduYXQwNS4KCjIwMDUtMDMtMTcgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBEb2N1bWVudCBnbmF0bWVtIHJlc3RyaWN0aW9uCgoyMDA1LTAzLTE3ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc25hbWVzLmFkYjogRG9jdW1lbnQgbmV3IFRTUyBuYW1lcyBpbnRyb2R1Y2VkIGJ5IGV4cF9kaXN0L2V4cF90c3MKCWNsZWFudXAKCjIwMDUtMDMtMTcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcy1pbnRlcnIuYWRzLCBzLWludGVyci5hZGIsIHNlbV9jaDMuYWRiLCBwcmouYWRzLCBwcmouYWRiLAoJYS1pbnRlcnIuYWRiLCBhLWludGVyci5hZHMsIHMtaW50ZXJyLXNpZ2FjdGlvbi5hZGIsIHMtaW50ZXJyLWR1bW15LmFkYiwKCXMtaW50ZXJyLXZtcy5hZGIsIHMtaW50ZXJyLXZ4d29ya3MuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGNhc2luZy5hZGI6IENvbW1lbnQgaW1wcm92ZW1lbnRzCgoyMDA1LTAzLTE3ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBnLWV4cGVjdC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDUtMDMtMTUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGRvYy9nbmF0X3Vnbl91bncuaW5mbywgZG9jL2duYXRfcm0uaW5mbykKCShkb2MvZ25hdF91Z25fdW53LmR2aSwgZG9jL2duYXRfcm0uZHZpKTogQWRkIGdjYy12ZXJzLnRleGkKCXRvIGRlcGVuZGVuY2llcy4KCjIwMDUtMDMtMTUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi10Z3QtZGFyd2luLmFkYiAoTGlicmFyeV9FeGlzdF9Gb3IsIExpYnJhcnlfRmlsZV9OYW1lX0Zvcik6CglBZGQgbmV3IHBhcmFtZXRlciBJbl9UcmVlIHRvIHNwZWNpZnkgdGhlIHByb2plY3QgdHJlZTogbmVlZGVkCglieSB0aGUgcHJvamVjdCBtYW5hZ2VyLiBBZGFwdCB0byBjaGFuZ2VzIGluIHByb2plY3QgbWFuYWdlcgoJdXNpbmcgbmV3IHBhcmFtZXRlciBJbl9UcmVlLgoKMjAwNS0wMy0xNSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGFkYS90cmVlcHJzLmFkcywgYWRhL2VpbmZvLmgsIGFkYS9zaW5mby5oLAoJYWRhL25tYWtlLmFkYiwgYWRhL25tYWtlLmFkcyk6IFVzZSB1bmlxdWUgc3ViZGlyZWN0b3JpZXMgb2YKCWFkYS9ibGR0b29scyB0byBhdm9pZCBtYWtlIC1qTiBmYWlsdXJlcy4KCjIwMDUtMDMtMTUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmFucy5jIChnbmF0X3RvX2dudSkgPE5fUmV0dXJuX1N0YXRlbWVudD46IFNldCBnbnVfcmVzdWx0Cgl0byBOVUxMX1RSRUUgb24gZW50cnkuCgoyMDA1LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHN5c3RlbS11bml4d2FyZS5hZHMsIHN5c3RlbS1saW51eC1pYTY0LmFkcywgc3lzdGVtLWZyZWVic2QteDg2LmFkcywKCXN5c3RlbS1seW54b3MtcHBjLmFkcywgc3lzdGVtLWx5bnhvcy14ODYuYWRzLCBzeXN0ZW0tbGludXgteDg2XzY0LmFkcywKCXN5c3RlbS10cnU2NC5hZHMsIHN5c3RlbS1haXguYWRzLCBzeXN0ZW0tdnh3b3Jrcy1zcGFyY3Y5LmFkcywKCXN5c3RlbS12eHdvcmtzLXhzY2FsZS5hZHMsIHN5c3RlbS1zb2xhcmlzLXg4Ni5hZHMsIHN5c3RlbS1pcml4LW8zMi5hZHMsCglzeXN0ZW0taXJpeC1uMzIuYWRzLCBzeXN0ZW0taHB1eC5hZHMsIHN5c3RlbS12eHdvcmtzLW02OGsuYWRzLAoJc3lzdGVtLWxpbnV4LXg4Ni5hZHMsIHN5c3RlbS12eHdvcmtzLW1pcHMuYWRzLCBzeXN0ZW0tb3MyLmFkcywKCXN5c3RlbS1pbnRlcml4LmFkcywgc3lzdGVtLXNvbGFyaXMtc3BhcmMuYWRzLAoJc3lzdGVtLXNvbGFyaXMtc3BhcmN2OS5hZHMsIHN5c3RlbS12bXMuYWRzLCBzeXN0ZW0tbWluZ3cuYWRzLAoJc3lzdGVtLXZtcy16Y3guYWRzLCBzeXN0ZW0tdnh3b3Jrcy1wcGMuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1hbHBoYS5hZHMsCglzeXN0ZW0tdm1zXzY0LmFkcywgc3lzdGVtLWRhcndpbi1wcGMuYWRzLCBzeXN0ZW0tdnh3b3Jrcy14ODYuYWRzLAoJc3lzdGVtLWxpbnV4LXBwYy5hZHMsIHN5c3RlbS1saW51eC1hbHBoYS5hZHMsIHN5c3RlbS1saW51eC1zcGFyYy5hZHMsCglzeXN0ZW0tbGludXgtczM5MC5hZHMsIHN5c3RlbS1saW51eC1zMzkweC5hZHM6IEFkZCBsaW5lIGRlZmluaW5nCglDb21waWxlcl9TeXN0ZW1fVmVyc2lvbiB0byBiZSBGYWxzZS4KCgkqIG9wdC5hZHM6IEFkZCBuZXcgZmxhZyBPcHQuQWRkcmVzc19Jc19Qcml2YXRlCgoJKiB0YXJncGFybS5hZHMsIHRhcmdwYXJtLmFkYjogU2V0IG5ldyBmbGFnIE9wdC5BZGRyZXNzX0lzX1ByaXZhdGUKCUFkZCBuZXcgcGFyYW1ldGVyIENvbXBpbGVyX1N5c3RlbV9WZXJzaW9uIHRvIGF2b2lkIGNoZWNraW5nIGZvcgoJY29tcGxldGVuZXNzIG9mIHBhcmFtZXRlcnMgd2hlbiBjb21waWxlciBpcyBjb21waWxpbmcgaXRzZWxmLgoJQWxsb3dzIG9sZCB2ZXJzaW9ucyBvZiBHTkFUIHRvIGJlIGNvbXBpbGVkIHdpdGggbmV3IGNvbXBpbGVyLgoKMjAwNS0wMy0xNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLXRydTY0LmFkcywgcy1vc2ludGUtdHJ1NjQuYWRiIChHZXRfU3RhY2tfQmFzZSk6IE5ldyBmdW5jdGlvbgoJKEhpZGVfWWVsbG93X1pvbmUpOiBOZXcgcHJvY2VkdXJlIHRvIGhpZGUgdGhlIFllbGxvdyBab25lIG9mIHRoZQoJY2FsbGluZyB0aHJlYWQuCgkoU3RhY2tfQmFzZV9BdmFpbGFibGUpOiBOZXcgZmxhZy4KCShHZXRfUGFnZV9TaXplKTogTmV3IG92ZXJsb2FkZWQgZnVuY3Rpb25zIGltcG9ydGVkIGZyb20gQy4KCShQUk9UX05PTkUsIFBST1RfUkVBRCwgUFJPVF9XUklURSwgUFJPVF9FWEVDLCBQUk9UX0FMTCwKCVBST1RfT04sIFBST1RfT0ZGKTogTmV3IGNvbnN0YW50cy4KCShtcHJvdGVjdCk6IE5ldyBmdW5jdGlvbiBpbXBvcnRlZCBmcm9tIEMuCgkocHRocmVhZF90ZWJfdCk6IE5ldyByZWNvcmQgdHlwZS4KCgkqIHMtdGFwcm9wLXRydTY0LmFkYjogKEVudGVyX1Rhc2spOiBJbnZva2UgSGlkZV9ZZWxsb3dfWm9uZS4KCShDcmVhdGVfVGFzayk6IEFjY291bnQgZm9yIHRoZSBZZWxsb3cgWm9uZSBhbmQgdGhlIGd1YXJkIHBhZ2UuCgoyMDA1LTAzLTE1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1saWItdGd0LXRydTY0LmFkYiwgbWxpYi10Z3QtYWl4LmFkYiwgbWxpYi10Z3QtaXJpeC5hZGIsCgltbGliLXRndC1ocHV4LmFkYiwgbWxpYi10Z3QtbGludXguYWRiLCBtbGliLXRndC1zb2xhcmlzLmFkYiwKCW1saWItdGd0LXZtcy1hbHBoYS5hZGIsIG1saWItdGd0LXZtcy1pYTY0LmFkYiwgbWxpYi10Z3QtbWluZ3cuYWRiLAoJbWxpYi10Z3Qtdnh3b3Jrcy5hZGIsIG1saWItdGd0LWx5bnhvcy5hZGIgKExpYnJhcnlfRXhpc3RfRm9yLAoJTGlicmFyeV9GaWxlX05hbWVfRm9yKTogQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZQoJdG8gc3BlY2lmeSB0aGUgcHJvamVjdCB0cmVlOiBuZWVkZWQgYnkgdGhlIHByb2plY3QgbWFuYWdlci4KCUFkYXB0IHRvIGNoYW5nZXMgaW4gcHJvamVjdCBtYW5hZ2VyIHVzaW5nIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZS4KCVJlbW92ZSBsb2NhbCBpbXBvcnRzLCB1c2UgZnVuY3Rpb25zIGluIFN5c3RlbS5DUlRMLgoKCSogbWFrZS5hZGIsIGNsZWFuLmFkYiwgZ25hdGNtZC5hZGIgKFByb2plY3RfVHJlZSk6IE5ldyBjb25zdGFudCBuZWVkZWQKCXRvIHVzZSB0aGUgcHJvamVjdCBtYW5hZ2VyLgoKCSogbWFrZXV0bC5hZHMsIG1ha2V1dGwuYWRiIChMaW5rZXJfT3B0aW9uc19Td2l0Y2hlcyk6IE5ldyBwYXJhbWV0ZXIKCUluX1RyZWUgdG8gZGVzaWduYXRlIHRoZSBwcm9qZWN0IHRyZWUuIEFkYXB0IHRvIGNoYW5nZXMgaW4gdGhlIHByb2plY3QKCW1hbmFnZXIsIHVzaW5nIEluX1RyZWUuCgoJKiBtbGliLXByai5hZHMsIG1saWItcHJqLmFkYiAoQnVpbGRfTGlicmFyeSwgQ2hlY2tfTGlicmFyeSwKCUNvcHlfSW50ZXJmYWNlX1NvdXJjZXMpOiBBZGQgbmV3IHBhcmFtZXRlciBJbl9UcmVlIHRvIHNwZWNpZnkgdGhlCglwcm9qZWN0IHRyZWU6IG5lZWRlZCBieSB0aGUgcHJvamVjdCBtYW5hZ2VyLgoJKEJ1aWxkX0xpYnJhcnkpOiBDaGVjayB0aGF0IEFyZydMZW5ndGggPj0gNiBiZWZvcmUgY2hlY2tpbmcgaWYgaXQKCWNvbnRhaW5zICItLVJUUz0uLi4iLgoKCSogbWxpYi10Z3QuYWRzLCBtbGliLXRndC5hZGIgKExpYnJhcnlfRXhpc3RfRm9yLAoJTGlicmFyeV9GaWxlX05hbWVfRm9yKTogQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0byBzcGVjaWZ5IHRoZQoJcHJvamVjdCB0cmVlOiBuZWVkZWQgYnkgdGhlIHByb2plY3QgbWFuYWdlci4KCgkqIHByai5hZHMsIHByai5hZGI6IE1ham9yIG1vZGlmaWNhdGlvbnMgdG8gYWxsb3cgc2V2ZXJhbCBwcm9qZWN0IHRyZWVzCglpbiBtZW1vcnkgYXQgdGhlIHNhbWUgdGltZS4KCUNoYW5nZSB0YWJsZXMgdG8gZHluYW1pYyB0YWJsZXMgYW5kIGhhc2ggdGFibGVzIHRvIGR5bmFtaWMgaGFzaAoJdGFibGVzLiBNb3ZlIHRhYmxlcyBhbmQgaGFzaCB0YWJsZXMgZnJvbSBQcmouQ29tIChpbiB0aGUgdmlzaWJsZSBwYXJ0KQoJYW5kIFByai5FbnYgKGluIHRoZSBwcml2YXRlIHBhcnQpLiBNb3ZlIHNvbWUgY29uc3RhbnRzIGZyb20gdGhlIHZpc2libGUKCXBhcnQgdG8gdGhlIHByaXZhdGUgcGFydC4gTWFrZSBvdGhlciBjb25zdGFudHMgZGVmZXJyZWQuCgkoUHJvamVjdF9FbXB0eSk6IE1ha2UgaXQgYSB2YXJpYWJsZSwgbm90IGEgZnVuY3Rpb24KCShFbXB0eV9Qcm9qZWN0KTogQWRkIHBhcmFtZXRlciBUcmVlLiBSZXR1cm5zIHRoZSBkYXRhIHdpdGggdGhlIGRlZmF1bHQKCW5hbWluZyBkYXRhIG9mIHRoZSBwcm9qZWN0IHRyZWUgVHJlZS4KCShJbml0aWFsaXplKTogQWZ0ZXIgdXBkYXRpbmcgU3RkX05hbWluZ19EYXRhLCBjb3B5IGl0cyB2YWx1ZSB0byB0aGUKCWNvbXBvbmVudCBOYW1pbmcgb2YgUHJvamVjdCBFbXB0eS4KCShSZWdpc3Rlcl9EZWZhdWx0X05hbWluZ19TY2hlbWUpOiBVc2UgYW5kIHVwZGF0ZSB0aGUgZGVmYXVsdCBuYW1pbmcKCWNvbXBvbmVudCBvZiB0aGUgcHJvamVjdCB0cmVlLCBpbnN0ZWFkIG9mIHRoZSBnbG9iYWwgdmFyaWFibGUKCVN0ZF9OYW1pbmdfRGF0YS4KCShTdGFuZGFyZF9OYW1pbmdfRGF0YSk6IEFkZCBkZWZhdWx0ZWQgcGFyYW1ldGVyIFRyZWUuIElmIHByb2plY3QgdHJlZQoJVHJlZSBpcyBub3QgZGVmYXVsdGVkLCByZXR1cm4gdGhlIGRlZmF1bHQgbmFtaW5nIGRhdGEgb2YgdGhlIFRyZWUuCgkoSW5pdGlhbF9CdWZmZXJfU2l6ZSk6IENvbnN0YW50IG1vdmVkIGZyb20gcHJpdmF0ZSBwYXJ0CgkoRGVmYXVsdF9BZGFfU3BlY19TdWZmaXhfSWQsIERlZmF1bHRfQWRhX0JvZHlfU3VmZml4X0lkLCBTbGFzaF9JZCk7IG5ldwoJdmFyaWFibGVzIGluaXRpYWxpemVkIGluIHByb2NlZHVyZSBJbml0aWFsaXplLgoJKEFkZF9Ub19CdWZmZXIpOiBBZGQgdHdvIGluIG91dCBwYXJhbWV0ZXJzIHRvIHJlcGxhY2UgZ2xvYmFsIHZhcmlhYmxlcwoJQnVmZmVyIGFuZCBCdWZmZXJfTGFzdC4KCShEZWZhdWx0X0FkYV9TcGVjX1N1ZmZpeCwgRGVmYXVsdF9Cb2R5X1NwZWNfU3VmZml4LCBTbGFzaCk6IE5ldwoJZnVuY3Rpb25zLgoJQWRhcHQgdG8gY2hhbmdlcyB0byB1c2UgbmV3IHR5cGUgUHJvamVjdF9UcmVlX1JlZiBhbmQgZHluYW1pYyB0YWJsZXMgYW5kCgloYXNoIHRhYmxlcy4KCShJbml0aWFsaXplLCBSZXNldCwgcmVnaXN0ZXItRGVmYXVsdF9OYW1uZy1TY2hlbWUpOiBBZGQgYSBuZXcgcGFyYW1ldGVyCglmb3IgdGhlIHByb2plY3QgdHJlZS4KCShQcm9qZWN0X1RyZWVfRGF0YSwgUHJvamVjdF9UcmVlX1JlZiwgTm9fUHJvamVjdCk6IERlY2xhcmUgdHlwZXMgYW5kCgljb25zdGFudCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYWNrYWdlIHNwZWMsIHNvIHRoYXQgdGhleSBjYW5lIGJlIHVzZWQKCWluIHN1YnByb2dyYW1zIGJlZm9yZSB0aGVpciBmdWxsIGRlY2xhcmF0aW9ucy4KCShTdGFuZGFyZF9OYW1pbmdfRGF0YSk6IEFkZCBkZWZhdWx0ZWQgcGFyYW1ldGVyIG9mIHR5cGUgUHJvamVjdF9Ob2RlX1JlZgoJKEVtcHR5X1Byb2plY3QpOiBBZGQgcGFyYW1ldGVyIG9mIHR5cGUgUHJvamVjdF9Ob2RlX1JlZgoJKFByaXZhdGVfUHJvamVjdF9UcmVlX0RhdGEpOiBBZGQgY29tcG9uZW50IERlZmF1bHRfTmFtaW5nIG9mIHR5cGUKCU5hbWluZ19EYXRhLgoJKEJ1ZmZlciwgQnVmZmVyX0xhc3QpOiByZW1vdmUgZ2xvYmFsIHZhcmlhYmxlcwoJKEFkZF9Ub19CdWZmZXIpOiBBZGQgdHdvIGluIG91dCBwYXJhbWV0ZXJzIHRvIHJlcGxhY2UgZ2xvYmFsIHZhcmlhYmxlcwoJQnVmZmVyIGFuZCBCdWZmZXJfTGFzdC4KCShDdXJyZW50X1BhY2thZ2VzX1RvX0NoZWNrKTogUmVtb3ZlIGdsb2JhbCB2YXJpYWJsZQoJKEVtcHR5X05hbWUpOiBNb3ZlIHRvIHByaXZhdGUgcGFydAoJKE5vLVN5bWJvbHMpOiBNYWtlIGl0IGEgY29uc3RhbnQKCShQcml2YXRlX1Byb2plY3RfVHJlZV9EYXRhKTogTmV3IHR5cGUgZm9yIHRoZSBwcml2YXRlIHBhcnQgb2YgdGhlCglwcm9qZWN0IHRyZWUgZGF0YS4KCShQcm9qZWN0X1RyZWVfRGF0YSk6IE5ldyB0eXBlIGZvciB0aGUgZGF0YSBvZiBhIHByb2plY3QgdHJlZQoJKFByb2plY3RfVHJlZV9SZWYpOiBOZXcgdHlwZSB0byBkZXNpZ25hdGUgYSBwcm9qZWN0IHRyZWUKCShJbml0aWFsaXplLCBSZXNldCwgcmVnaXN0ZXItRGVmYXVsdF9OYW1uZy1TY2hlbWUpOiBBZGQgYSBuZXcgcGFyYW1ldGVyCglmb3IgdGhlIHByb2plY3QgdHJlZS4KCgkqIHByai1hdHRyLmFkczogQWRkIHdpdGggVGFibGU7IG5lZWRlZCwgYXMgcGFja2FnZSBQcmogbm8gbG9uZ2VyCglpbXBvcnRzIHBhY2thZ2UgVGFibGUuCgoJKiBwcmotY29tLmFkYjogUmVtb3ZlIGVtcHR5LCBubyBsb25nZXIgbmVlZGVkIGJvZHkKCgkqIHByai1jb20uYWRzOiBNb3ZlIG1vc3Qgb2YgdGhlIGNvbnRlbnQgb2YgdGhpcyBwYWNrYWdlIHRvIHBhY2thZ2UgUHJqLgoKCSogcHJqLWRlY3QuYWRzLCBwcmotZGVjdC5hZGIgKFBhcnNlKTogTmV3IHBhcmFtZXRlcnMgSW5fVHJlZSB0bwoJZGVzaWduYXRlIHRoZSBwcm9qZWN0IG5vZGUgdHJlZSBhbmQgUGFja2FnZXNfVG9fQ2hlY2sgdG8gcmVwbGFjZQoJZ2xvYmFsIHZhcmlhYmxlIEN1cnJlbnRfUGFja2FnZXNfVG9fQ2hlY2suCglBZGQgbmV3IHBhcmFtZXRlcnMgSW5fVHJlZSBhbmQgUGFja2FnZXNfVG9fQ2hlY2sgdG8gbG9jYWwgc3VicHJvZ3JhbXMsCgl3aGVuIG5lZWRlZC4gQWRhcHQgdG8gY2hhbmdlcyBpbiBwcm9qZWN0IG1hbmFnZXIgd2l0aCBwcm9qZWN0IG5vZGUgdHJlZQoJSW5fVHJlZS4KCgkqIHByai1lbnYuYWRzLCBwcmotZW52LmFkYjogQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0byBkZXNpZ25hdGUgdGhlCglwcm9qZWN0IHRyZWUgdG8gbW9zdCBzdWJwcm9ncmFtcy4gTW92ZSB0YWJsZXMgYW5kIGhhc2ggdGFibGVzIHRvCglwcml2YXRlIHBhcnQgb2YgcGFja2FnZSBQcmouCglBZGFwdCB0byBjaGFuZ2VzIGluIHByb2plY3QgbWFuYWdlciB1c2luZyBwcm9qZWN0IHRyZWUgSW5fVHJlZS4KCgkqIHByai1tYWtyLmFkYiAoVHJlZSk6IE5ldyBjb25zdGFudCB0byBkZXNpZ25hdGUgdGhlIHByb2plY3Qgbm9kZSB0cmVlCglBZGFwdCB0byBjaGFuZ2UgaW4gcHJvamVjdCBtYW5hZ2VyIHVzaW5nIHByb2plY3Qgbm9kZSB0cmVlIFRyZWUKCgkqIHByai1ubXNjLmFkcywgcHJqLW5tc2MuYWRiIChDaGVja19TdGFuZF9BbG9uZV9MaWJyYXJ5KTogQ29ycmVjdGx5CglkaXNwbGF5IHRoZSBMaWJyYXJ5X1NyY19EaXIgYW5kIHRoZSBMaWJyYXJ5X0Rpci4KCUFkZCBuZXcgcGFyYW1ldGVyIEluX1RyZWUgdG8gZGVzaWduYXRlIHRoZSBwcm9qZWN0IG5vZGUgdHJlZSB0byBtb3N0CglzdWJwcm9ncmFtcy4gQWRhcHQgdG8gY2hhbmdlcyBpbiB0aGUgcHJvamVjdCBtYW5hZ2VyLCB1c2luZyBwcm9qZWN0IHRyZWUKCUluX1RyZWUuCgkoQ2hlY2tfTmFtaW5nX1NjaGVtZSk6IERvIG5vdCBhbHRlciB0aGUgY2FzaW5nIG9uIHBsYXRmb3JtcyB3aGVyZQoJdGhlIGNhc2luZyBvZiBmaWxlIG5hbWVzIGlzIG5vdCBzaWduaWZpY2FudC4KCShDaGVjayk6IEFkZCBuZXcgcGFyYW1ldGVyIEluX1RyZWUgdG8gZGVzaWduYXRlIHRoZQoKCSogcHJqLXBhcnMuYWRzLCBwcmotcGFycy5hZGIgKFBhcnNlKTogQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0bwoJZGVzaWduYXRlIHRoZSBwcm9qZWN0IHRyZWUuCglEZWNsYXJlIGEgcHJvamVjdCBub2RlIHRyZWUgdG8gY2FsbCBQcmouUGFydC5QYXJzZSBhbmQgUHJqLlByb2MuUHJvY2VzcwoKCSogcHJqLXBhcnQuYWRzLCBwcmotcGFydC5hZGIgKEJ1ZmZlciwgQnVmZmVyX0xhc3QpOiBHbG9iYWwgdmFyaWFibGVzLAoJdG8gcmVwbGFjZSB0aG9zZSB0aGF0IHdlcmUgaW4gdGhlIHByaXZhdGUgcGFydCBvZiBwYWNrYWdlIFByai4KCUFkZCBuZXcgcGFyYW1ldGVyIEluX19UcmVlIHRvIGRlc2lnbmF0ZSB0aGUgcHJvamVjdCBub2RlIHRyZWUgdG8gbW9zdAoJc3VicHJvZ3JhbXMuIEFkYXB0IHRvIGNoYW5nZSBpbiBQcmouVHJlZSB3aXRoIHByb2plY3Qgbm9kZSB0cmVlIEluX1RyZWUuCgkoUG9zdF9QYXJzZV9Db250ZXh0X0NsYXVzZSk6IFdoZW4gc3BlY2lmeWluZyB0aGUgcHJvamVjdCBub2RlIG9mIGEgd2l0aAoJY2xhdXNlLCBpbmRpY2F0ZSB0aGF0IGl0IGlzIGEgbGltaXRlZCB3aXRoIG9ubHkgaWYgdGhlcmUgaXMgImxpbWl0ZWQiCglpbiB0aGUgd2l0aCBjbGF1c2UsIG5vdCBuZWNlc3NhcmlseSB3aGVuIEluX0xpbWl0ZWQgaXMgVHJ1ZS4KCShQYXJzZSk6IEFkZCBuZXcgcGFyYW1ldGVyIEluX1RyZWUgdG8gZGVzaWduYXRlIHRoZSBwcm9qZWN0IG5vZGUgdHJlZQoKCSogcHJqLXBwLmFkcywgcHJqLXBwLmFkYiAoUHJldHR5X1ByaW50KTogQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0bwoJZGVzaWduYXRlIHRoZSBwcm9qZWN0IG5vZGUgdHJlZS4gQWRhcHQgdG8gY2hhbmdlIGluIFByai5UcmVlIHdpdGgKCXByb2plY3Qgbm9kZSB0cmVlIEluX1RyZWUuCgoJKiBwcmotcHJvYy5hZHMsIHByai1wcm9jLmFkYiAoUmVjdXJzaXZlX1Byb2Nlc3MpOiBTcGVjaWZ5IHRoZSBwcm9qZWN0Cgl0cmVlIEluX1RyZWUgaW4gdGhlIGNhbGwgdG8gZnVuY3Rpb24gRW1wdHlfUHJvY2VzcyB0byBnaXZlIGl0cyBpbml0aWFsCgl2YWx1ZSB0byB0aGUgcHJvamVjdCBkYXRhIFByb2Nlc3NlZF9EYXRhLgoJQWRkIG5ldyBwYXJhbWV0ZXJzIEluX1RyZWUgdG8gZGVzaWduYXRlIHRoZSBwcm9qZWN0IHRyZWUgYW5kCglGcm9tX1Byb2plY3RfTm9kZV9UcmVlIHRvIGRlc2lnbmF0ZSB0aGUgcHJvamVjdCBub2RlIHRyZWUgdG8gc2V2ZXJhbAoJc3VicHJvZ3JhbXMuIEFkYXB0IHRvIGNoYW5nZSBpbiBwcm9qZWN0IG1hbmFnZXIgd2l0aCBwcm9qZWN0IHRyZWUKCUluX1RyZWUgYW5kIHByb2plY3Qgbm9kZSB0cmVlIEZyb21fUHJvamVjdF9Ob2RlX1RyZWUuCgoJKiBwcmotc3RydC5hZHMsIHByai1zdHJ0LmFkYiAoQnVmZmVyLCBCdWZmZXJfTGFzdCk6IEdsb2JhbCB2YXJpYWJsZXMsCgl0byByZXBsYWNlIHRob3NlIHRoYXQgd2VyZSBpbiB0aGUgcHJpdmF0ZSBwYXJ0IG9mIHBhY2thZ2UgUHJqLgoJQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0byBkZXNpZ25hdGUgdGhlIHByb2plY3Qgbm9kZSB0cmVlIHRvIG1vc3QKCXN1YnByb2dyYW1zLiBBZGFwdCB0byBjaGFuZ2UgaW4gUHJqLlRyZWUgd2l0aCBwcm9qZWN0IG5vZGUgdHJlZSBJbl9UcmVlLgoKCSogcHJqLXRyZWUuYWRzLCBwcmotdHJlZS5hZGI6IEFkZCBuZXcgcGFyYW1ldGVyIG9mIHR5cGUKCVByb2plY3RfTm9kZV9UcmVlX1JlZiB0byBtb3N0IHN1YnByb2dyYW1zLgoJVXNlIHRoaXMgbmV3IHBhcmFtZXRlciB0byBzdG9yZSBwcm9qZWN0IG5vZGVzIGluIHRoZSBkZXNpZ25hdGVkIHByb2plY3QKCW5vZGUgdHJlZS4KCShQcm9qZWN0X05vZGVfVHJlZV9SZWYpOiBOZXcgdHlwZSB0byBkZXNpZ25hdGUgYSBwcm9qZWN0IG5vZGUgdHJlZQoJKFRyZWVfUHJpdmF0ZV9QYXJ0KTogQ2hhbmdlIHRhYmxlIHRvIGR5bmFtaWMgdGFibGUgYW5kIGhhc2ggdGFibGVzIHRvCglkeW5hbWljIGhhc2ggdGFibGVzLgoKCSogcHJqLXV0aWwuYWRzLCBwcmotdXRpbC5hZGI6IEFkZCBuZXcgcGFyYW1ldGVyIEluX1RyZWUgdG8gZGVzaWduYXRlCgl0aGUgcHJvamVjdCB0cmVlIHRvIG1vc3Qgc3VicHJvZ3JhbXMuIEFkYXB0IHRvIGNoYW5nZXMgaW4gcHJvamVjdAoJbWFuYWdlciB1c2luZyBwcm9qZWN0IHRyZWUgSW5fVHJlZS4KCgkqIG1ha2VncHIuYWRiIChQcm9qZWN0X1RyZWUpOiBOZXcgY29uc3RhbnQgbmVlZGVkIHRvIHVzZSBwcm9qZWN0CgltYW5hZ2VyLgoKMjAwNS0wMy0xNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIHMtaW50bWFuLXBvc2l4LmFkYiAoTm90aWZ5X0V4Y2VwdGlvbik6IEFkanVzdCBzaWduYXR1cmUsIGFzIGhhbmRsZXIKCWZvciBzaWdhY3Rpb25zIHdpdGggU0FfU0lHSU5GTyBzZXQuIENhbGwKCV9fZ25hdF9hZGp1c3RfY29udGV4dF9mb3JfcmFpc2UgYmVmb3JlIHJhaXNpbmcsIHRvIHBlcmZvcm0gdGhlCglwb3RlbnRpYWxseSByZXF1aXJlZCBhZGp1c3RtZW50cyB0byB0aGUgbWFjaGluZSBjb250ZXh0IGZvciB0aGUgR0NDCgl1bndpbmRlci4KCgkqIHJhaXNlLmggKF9fZ25hdF9hZGp1c3RfY29udGV4dF9mb3JfcmFpc2UpOiBOZXcgcHJvdG90eXBlLgoKCSogaW5pdC5jIChfX2duYXRfYWRqdXN0X2NvbnRleHRfZm9yX3JhaXNlKSBIUFVYOiBJbml0aWFsIHJldmlzaW9uLgoJQWRqdXN0IFBDIGJ5IG9uZSBpbiB0aGUgcHJvdmlkZWQgbWFjaGluZSBjb250ZXh0LgoJKF9fZ25hdF9pbnN0YWxsX2hhbmRsZXIpIEhQVVg6IFNldCBTQV9TSUdJTkZPIGluIHRoZSBzaWdhY3Rpb24gZmxhZ3MsCglzbyB0aGF0IHRoZSBoYW5kbGVyIGlzIHBhc3NlZCB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgdG8gYWRqdXN0IHByaW9yIHRvCgl0aGUgcmFpc2UuCgkoX19nbmF0X2Vycm9yX2hhbmRsZXIpIEhQVVg6IEFkanVzdCB0aGUgc2lnbmF0dXJlIHRvIG1hdGNoIHdoYXQgYW4KCVNBX1NJR0lORk8gc2lnYWN0aW9uIHNob3VsZCBsb29rIGxpa2UuIENhbGwKCV9fZ25hdF9hZGp1c3RfY29udGV4dF9mb3JfcmFpc2UgYmVmb3JlIGFjdHVhbGx5IHJhaXNpbmcuCgkoX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSk6IERlZmF1bHQgbm9vcCB0byBoZWxwIFBDCglhZGp1c3RtZW50cyBiZWZvcmUgcmFpc2UgZnJvbSBzaWduYWwgaGFuZGxlcnMuCgkoX19nbmF0X2Vycm9yX2hhbmRsZXIpOiBJbmRpcmVjdGx5IGNhbGwgYSBwcmVkaWNhdGUgZnVuY3Rpb24gdG8KCWRldGVybWluZSBpZiBhIGNvbmRpdGlvbiBzaG91bGQgYmUgcmVzaWduYWxlZCBvciBub3QuCgkoX19nbmF0X3NldF9yZXNpZ25hbF9wcmVkaWNhdGUpOiBVc2VyIGludGVyZmFjZSB0byBtb2RpZnkgdGhlIHByZWRpY2F0ZS4KCShfX2duYXRfZGVmYXVsdF9yZXNpZ25hbF9wKTogRGVmYXVsdCBHTkFUIHByZWRpY2F0ZS4KCjIwMDUtMDMtMTUgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBhZGFpbnQuYzogUHJlZml4ICNpbmNsdWRlIG9mIFZNUyBzeXN0ZW0gaGVhZGVyIGZpbGVzIHdpdGggdm1zLwoJW1ZNU10gKEhPU1RfRVhFQ1VUQUJMRV9TVUZGSVgsIEhPU1RfT0JKRUNUX1NVRkZJWCk6IERlZmluZSBmb3IgVk1TLgoJRG8gbm90IGRlZmluZSBhIGR1bW15IGZ1bmN0aW9uICJjb252ZXJ0X2FkZHJlc3NlcyIgdW5kZXIgRGFyd2luLAoJbm90IG5lZWRlZC4KCgkqIHRiLWFsdm1zLmMsIGV4cGVjdC5jOiBQcmVmaXggI2luY2x1ZGUgb2YgVk1TIHN5c3RlbSBoZWFkZXIgZmlsZXMKCXdpdGggdm1zLwoKMjAwNS0wMy0xNSAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiB0cmFjZWJhay5jOiBVbmRlciBEYXJ3aW4sIHVzZSB0aGUgc2FtZSB1bndpbmRpbmcgbWVjaGFuaXNtcyBhcyB1bmRlcgoJUFBDL0FJWC4KCjIwMDUtMDMtMTUgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS1yZWF0aW0uYWRzLCBhLXJlYXRpbS5hZGI6IEFkZCBmdW5jdGlvbnMgTWludXRlcyBhbmQgU2Vjb25kcyBmb3IKCUFJLTM4Ni4KCgkqIGEtcmV0aWRlLmFkczogTWlub3IgY29tbWVudCBjaGFuZ2VzCgoyMDA1LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGEtc3R6dW5iLmFkYiwgYS1zdHp1bmIuYWRiIGEtc3R6dW5iLmFkcywgYS1zdHp1bmIuYWRzLAoJYS1zdHdpdW4uYWRzLCBhLXN0d2l1bi5hZGIsIGEtc3RydW5iLmFkcywgYS1zdHJ1bmIuYWRiOiBNb3ZlCglSZWFsbG9jX0Zvcl9DaHVuayB0byBwcml2YXRlIHBhcnQgb2YgcGFja2FnZS4KCU5ldyBzdWJwcm9ncmFtcyBmb3IgQUktMzAxCgoJKiBhLXN6dXp0aS5hZGIsIGEtc3V0ZWlvLmFkYiwgYS1zd3V3dGkuYWRiOiBJbXByb3ZlIGVmZmljaWVuY3kgb2YKCUdldF9MaW5lIHByb2NlZHVyZS4KCUF2b2lkIHVubmVjZXNzYXJ5IHVzZSBvZiBHZXQvU2V0X1dpZGVfU3RyaW5nCgoyMDA1LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMTM0NzAKCSogYS1zdHVuYXUuYWRzLCBhLXN0dW5hdS5hZGI6CglDaGFuZ2UgaW50ZXJmYWNlIHRvIGFsbG93IGVmZmljaWVudCAoYW5kIGNvcnJlY3QpIGltcGxlbWVudGF0aW9uCglUaGUgcHJldmlvdXMgY2hhbmdlcyB0byBhbGxvdyBleHRyYSBzcGFjZSBpbiB1bmJvdW5kZWQgc3RyaW5ncyBoYWQKCWxlZnQgdGhpcyBpbnRlcmZhY2UgYSBiaXQgYnJva2VuLgoKCSogYS1zdXRlaW8uYWRiOiBBdm9pZCB1bm5lY2Vzc2FyeSB1c2Ugb2YgR2V0L1NldF9TdHJpbmcKCgkqIGctc3BpcGF0LmFkcywgZy1zcGlwYXQuYWRiOiBOZXcgaW50ZXJmYWNlIGZvciBHZXRfU3RyaW5nCglNaW5vciByZWZvcm1hdHRpbmcgKGZ1bmN0aW9uIHNwZWNzKQoKCSogZy1zcGl0Ym8uYWRiOiBOZXcgaW50ZXJmYWNlIGZvciBHZXRfU3RyaW5nCgoJKiBnLXNwaXRiby5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogYS1zd3VuYXUuYWRzLCBhLXN3dW5hdS5hZGI6IE5ldyBpbnRlcmZhY2UgZm9yIEdldF9XaWRlX1N0cmluZwoKCSogYS1zenVuYXUuYWRzLCBhLXN6dW5hdS5hZGI6IE5ldyBpbnRlcmZhY2UgZm9yIEdldF9XaWRlX1dpZGVfU3RyaW5nCgoyMDA1LTAzLTE1ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYXRyZWUuYWRzLCBhdHJlZS5hZGI6IEFkZCBzdXBwb3J0IGZvciBFbGlzdDI0IGZpZWxkCgoJKiBhdHJlZS5oOiBGaXggd3JvbmcgZGVmaW5pdGlvbiBvZiBGaWVsZDI3CglBZGQgc3VwcG9ydCBmb3IgRWxpc3QxNiBmaWVsZAoJQWRkIHN1cHBvcnQgZm9yIEVsaXN0MjQgZmllbGQKCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiIChBYnN0cmFjdF9JbnRlcmZhY2VzLAoJU2V0X0Fic3RyYWN0X0ludGVyZmFjZXMpOiBOZXcgc3VicHJvZ3JhbXMuCgkoQWJzdHJhY3RfSW50ZXJmYWNlX0FsaWFzLCBTZXRfQWJzdHJhY3RfSW50ZXJmYWNlX0FsaWFzKTogTmV3CglzdWJwcm9ncmFtcy4KCShBY2Nlc3NfRGlzcF9UYWJsZSwgU2V0X0FjY2Vzc19EaXNwX1RhYmxlKTogTW9kaWZpZWQgdG8gaGFuZGxlIGEgbGlzdCBvZgoJZW50aXRpZXMgcmF0aGVyIHRoYW4gYSBzaW5nbGUgbm9kZS4KCShJc19JbnRlcmZhY2UsIFNldF9Jc19JbnRlcmZhY2UpOiBOZXcgc3VicHJvZ3JhbQoJKEZpcnN0X1RhZ19Db21wb25lbnQpOiBOZXcgc3ludGVzaXplZCBhdHRyaWJ1dGUKCShOZXh0X1RhZ19Db21wb25lbnQpOiBOZXcgc3ludGhlc2l6ZWQgYXR0cmlidXRlCgkoV3JpdGVfRW50aXR5X0ZsYWdzKTogVXBncmFkZWQgdG8gd3JpdGUgSXNfSW50ZXJmYWNlCgkoV3JpdGVfRmllbGQyNF9OYW1lKTogVXBncmFkZWQgdG8gd3JpdGUgQWJzdHJhY3RfSW50ZXJmYWNlcwoJKFdyaXRlX0ZpZWxkMjVfTmFtZSk6IFVwZ3JhZGVkIHRvIHdyaXRlIEFic3RyYWN0X0ludGVyZmFjZV9BbGlhcwoJKFRhc2tfQm9keV9Qcm9jZWR1cmUpOiBOZXcgc3VicHJvZ3JhbSB0byByZWFkIHRoaXMgYXR0cmlidXRlLgoJKFNldF9UYXNrX0JvZHlfUHJvY2VkdXJlKTogTmV3IHN1YnByb2dyYW0gdG8gc2V0IHRoaXMgYXR0cmlidXRlLgoJKEhhc19Db250cm9sbGVkX0NvbXBvbmVudCk6IE5vdyBhcHBsaWVzIHRvIGFsbCBlbnRpdGllcy4KCVRoaXMgaXMgb25seSBhIGRvY3VtZW50YXRpb24gY2hhbmdlLCBzaW5jZSBpdCBhbHdheXMgd29ya2VkIHRvIGFwcGx5Cgl0aGlzIHRvIG90aGVyIHRoYW4gY29tcG9zaXRlIHR5cGVzICh5aWVsZGluZyBmYWxzZSksIGJ1dCBub3cgdGhpcyBpcwoJb2ZmaWNpYWwuCglVcGRhdGUgZG9jdW1lbnRhdGlvbiBvbiBNdXN0X0JlX0J5dGVfQWxpZ25lZCBmb3IgbmV3IHNwZWMKCgkqIHRidWlsZC5hZGIsIGV4cF9kaXN0LmFkYiwgZXhwX2Rpc3AuYWRiLCBleHBfY2gzLmFkcywgZXhwX2NoMy5hZGIsCglleHBfYXR0ci5hZGIsIGV4cF9hZ2dyLmFkYiwgZXhwX2NoNC5hZGIsIGV4cF9jaDUuYWRiOiBVcGdyYWRlIGFsbCB0aGUKCXVzZXMgb2YgdGhlIEFjY2Vzc19EaXNwX1RhYmxlIGF0dHJpYnV0ZSB0byByZWZlcmVuY2UgdGhlIGZpcnN0IGRpc3BhdGNoCgl0YWJsZSBhc3NvY2lhdGVkIHdpdGggYSB0YWdnZWQgdHlwZS4gQXMKCXBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcywKCUFjY2Vzc19EaXNwX1RhYmxlIGhhcyBiZWVuIHJlZGVmaW5lZCB0byBjb250YWluIGEgbGlzdCBvZiBkaXNwYXRjaAoJdGFibGVzIChyYXRoZXIgdGhhbiBhIHNpbmdsZSBkaXNwYXRjaCB0YWJsZSkuCglTaW1pbGFybHksIHVwZ3JhZGUgYWxsIHRoZSByZWZlcmVuY2VzIHRvIFRhZ19Db21wb25lbnQgYnkgdGhlCgluZXcgYXR0cmlidXRlIEZpcnN0X1RhZ19Db21wb25lbnQuCgkoRmluZF9Jbmhlcml0ZWRfVFNTKTogTW92ZWQgdG8gZXhwX3Rzcy4KCUNsZWFuIHVwIHRlc3QgaW4gRXhwYW5kX05fT2JqZWN0X0RlY2xhcmF0aW9uIGZvciBjYXNlcwoJd2hlcmUgd2UgbmVlZCB0byBkbyBhIHNlcGFyYXRlIGFzc2lnbm1lbnQgb2YgdGhlIGluaXRpYWwgdmFsdWUuCgkoRXhwYW5kX05fT2JqZWN0X0RlY2xhcmF0aW9uKTogSWYgdGhlIGV4cHJlc3Npb24gaW4gdGhlCglkZWNsYXJhdGlvbiBvZiBhIHRhZ2dlZCB0eXBlIGlzIGFuIGFnZ3JlZ2F0ZSwgbm8gbmVlZCB0byBnZW5lcmF0ZSBhbgoJYWRkaXRpb25hbCB0YWcgYXNzaWdubWVudC4KCShGcmVlemVfVHlwZSk6IE5vdyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBUcnVlIGlmIHRoZSBOX0ZyZWV6ZV9FbnRpdHkKCWlzIHRvIGJlIGRlbGV0ZWQuCglCaXQgcGFja2VkIGFycmF5IG9wcyBhcmUgb25seSBjYWxsZWQgaWYgb3BlcmFuZHMgYXJlIGtub3duIHRvIGJlCglhbGlnbmVkLgoJKENvbXBvbmVudF9FcXVhbGl0eSk6IFdoZW4gcmV0dXJuaW5nIGFuIE5fUmFpc2VfUHJvZ3JhbV9FcnJvciBzdGF0ZW1lbnQsCgllbnN1cmUgdGhhdCBpdHMgRXR5cGUgaXMgc2V0IHRvIEVtcHR5IHRvIGF2b2lkIGNvbmZ1c2luZyBHSUdJICh3aGljaAoJZXhwZWN0cyB0aGF0IG9ubHkgZXhwcmVzc2lvbnMgaGF2ZSBhIGJvbmEgZmlkZSB0eXBlKS4KCShNYWtlX1RhZ19DdHJsX0Fzc2lnbm1lbnQpOiBVc2UgQnVpbGRfQWN0dWFsX1N1YnR5cGUgdG8gY29ycmVjdGx5CglkZXRlcm1pbmUgdGhlIGFtb3VudCBvZiBkYXRhIHRvIGJlIGNvcGllZC4KCgkqIHBhci5hZGIgKFBfSW50ZXJmYWNlX1R5cGVfRGVmaW5pdGlvbik6IE5ldyBzdWJwcm9ncmFtIHRoYXQgcGFyc2VzIHRoZQoJbmV3IHN5bnRheCBydWxlIG9mIEFkYSAyMDA1IGludGVyZmFjZXMgKGZvciBBSS0yNTEgYW5kIEFJLTM0NSk6CgkgICAgSU5URVJGQUNFX1RZUEVfREVGSU5JVElPTiA6Oj0KCSAgICAgIFtsaW1pdGVkIHwgdGFzayB8IHByb3RlY3RlZCB8IHN5bmNocm9uaXplZF0gaW50ZXJmYWNlCgkJW0FORCBpbnRlcmZhY2VfbGlzdF0KCgkqIHBhci1jaDMuYWRiIChQX1R5cGVfRGVjbGFyYXRpb24pOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8KCWludGVyZmFjZXMuCgkoUF9EZXJpdmVkX1R5cGVfRGVmX09yX1ByaXZhdGVfRXh0X0RlY2wpOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8KCWludGVyZmFjZXMuCgkoUF9JbnRlcmZhY2VfVHlwZV9EZWZpbml0aW9uKTogTmV3IHN1YnByb2dyYW0gdGhhdCBwYXJzZXMgdGhlIG5ldwoJc3ludGF4IHJ1bGUgb2YgQWRhIDIwMDUgaW50ZXJmYWNlcwoJKFBfSWRlbnRpZmllcl9EZWNsYXJhdGlvbnMpOiBmaXggdHdvIG9jY3VycmVuY2VzIG9mICdSRU5BTUVTJyBpbiBlcnJvcgoJbWVzc2FnZXMgYnkgdGhlIGNvcnJlY3QgUkVOQU1FUyAocXVvdGVzIHJlbW92ZWQpLgoKCSogc2VtX3ByYWcuYWRiOiBVcGdyYWRlIGFsbCB0aGUgcmVmZXJlbmNlcyB0byBUYWdfQ29tcG9uZW50IGJ5IHRoZSBuZXcKCWF0dHJpYnV0ZSBGaXJzdF9UYWdfQ29tcG9uZW50LgoKCSogc2luZm8uYWRzLCBzaW5mby5hZGI6IFJlbW92ZSBPS19Gb3JfU3RyZWFtIGZsYWcsIG5vdCB1c2VkLCBub3QgbmVlZGVkCgkoSW50ZXJmYWNlX0xpc3QsIFNldF9JbnRlcmZhY2VfTGlzdCk6IE5ldyBzdWJwcm9ncmFtcy4KCShJbnRlcmZhY2VfUHJlc2VudCwgU2V0X0ludGVyZmFjZV9QcmVzZW50KTogTmV3IHN1YnByb2dyYW1zLgoJKExpbWl0ZWRfUHJlc2VudCwgU2V0X0xpbWl0ZWRfUHJlc2VudCk6IEF2YWlsYWJsZSBhbHNvIGluIGRlcml2ZWQKCXR5cGUgZGVmaW5pdGlvbiBub2Rlcy4KCShQcm90ZWN0ZWRfUHJlc2VudCwgU2V0X1Byb3RlY3RlZF9QcmVzZW50KTogQXZhaWxhYmxlIGFsc28gaW4KCXJlY29yZCB0eXBlIGRlZmluaXRpb24gYW5kCglkZXJpdmVkIHR5cGUgZGVmaW5pdGlvbiBub2Rlcy4KCShTeW5jaHJvbml6ZWRfUHJlc2VudCwgU2V0X1N5bmNocm9uaXplZF9QcmVzZW50KTogTmV3IHN1YnByb2dyYW1zLgoJKFRhc2tfUHJlc2VudCwgU2V0X1Rhc2tfUHJlc2VudCk6IE5ldyBzdWJwcm9ncmFtLgoJKFRhc2tfQm9keV9Qcm9jZWR1cmUpOiBSZW1vdmVkLgoJKFNldF9UYXNrX0JvZHlfUHJvY2VkdXJlKTogUmVtb3ZlZC4KCVRoZXNlIHN1YnByb2dyYW0gaGF2ZSBiZWVuIHJlbW92ZWQgYmVjYXVzZSB0aGUgYXR0cmlidXRlCglUYXNrX0JvZHlfUHJvY2VkdXJlIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhc2sgdHlwZQoJb3IgdGFzayBzdWJ0eXBlIGVudGl0eSB0byBsZWF2ZSBhIGZpZWxkIGZyZWUgdG8gc3RvcmUgdGhlIGxpc3QKCW9mIGludGVyZmFjZXMgaW1wbGVtZW50ZWQgYnkgYSB0YXNrIChmb3IgQUktMzQ1KQoJQWRkIEV4cHJlc3Npb24gZmllbGQgdG8gTl9SYWlzZV9TdGF0ZW1lbnQgbm9kZSBmb3IgQWRhIDIwMDUgQUktMzYxCgkoTnVsbF9FeGNsdXNpb25fUHJlc2VudCk6IENoYW5nZSB0byBGbGFnMTEsIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGgKCWV4cHJlc3Npb24gZmxhZyBEb19SYW5nZV9DaGVjawoJKEV4Y2VwdGlvbl9KdW5rKTogQ2hhbmdlIHRvIEZsYWc3IHRvIGFjY29tb2RhdGUgYWJvdmUgY2hhbmdlCgkoQm94X1ByZXNlbnQsIERlZmF1bHRfTmFtZSwgU3BlY2lmaWNhdGlvbiwgU2V0X0JveF9QcmVzZW50LAoJU2V0X0RlZmF1bHRfTmFtZSwgU2V0X1NwZWNpZmljYXRpb24pOiBFeHBhbmQgdGhlIGV4cHJlc3Npb24KCSJYIGluIE5fRm9ybWFsX1N1YnByb2dyYW1fRGVjbGFyYXRpb24iIGludG8gdGhlIGNvcnJlc3BvbmRpbmcKCXR3byBjb21wYXJpc29ucy4gUmVxdWlyZWQgdG8gdXNlIHRoZSBjc2luZm8gdG9vbC4KCgkqIGV4cF9jaDExLmFkYiAoRXhwYW5kX05fUmFpc2VfU3RhdGVtZW50KTogRGVhbCB3aXRoIGNhc2Ugd2hlcmUKCSJ3aXRoIHN0cmluZyIgZ2l2ZW4uCgoJKiBzZW1fY2gxMS5hZGIgKEFuYWx5emVfUmFpc2VfU3RhdGVtZW50KTogSGFuZGxlIGNhc2Ugd2hlcmUgc3RyaW5nCglleHByZXNzaW9uIGdpdmVuLgoKCSogcGFyLWNoMTEuYWRiIChQX1JhaXNlX1N0YXRlbWVudCk6IFJlY29nbml6ZSB3aXRoIHN0cmluZyBleHByZXNzaW9uCglpbiAyMDA1IG1vZGUKCgkqIGV4cF9jaDkuYWRiIChCdWlsZF9UYXNrX1Byb2NfU3BlY2lmaWNhdGlvbik6IE1vZGlmaWVkIHRvIHVzZSBlbnRpdHkKCWF0dHJpYnV0ZSBUYXNrX0JvZHlfUHJvY2VkdXJlIHJhdGhlciB0aGFuIHRoZSBvbGQgc2VtYW50aWMgZmllbGQgdGhhdAoJd2FzIGF2YWlsYWJsZSBpbiB0aGUgdGFza190eXBlX2RlY2xhcmF0aW9uIG5vZGUuCgoJKiBwYXItY2gxMi5hZGIgKFBfRm9ybWFsX1R5cGVfRGVmaW5pdGlvbik6IE1vZGlmaWVkIHRvIGhhbmRsZSBmb3JtYWwKCWludGVyZmFjZSB0eXBlIGRlZmluaXRpb25zLgoJKFBfRm9ybWFsX0Rlcml2ZWRfVHlwZV9EZWZpbml0aW9uKTogTW9kaWZpZWQgdG8gaGFuZGxlIHRoZSBsaXN0IG9mCglpbnRlcmZhY2VzLgoKCSogcGFyLWNoOS5hZGIgKFBfVGFzayk6IE1vZGlmaWVkIHRvIGhhbmRsZSB0aGUgbGlzdCBvZiBpbnRlcmZhY2VzIGluIGEKCXRhc2sgdHlwZSBkZWNsYXJhdGlvbi4KCShQX1Byb3RlY3RlZCk6IE1vZGlmaWVkIHRvIGhhbmRsZSB0aGUgbGlzdCBvZiBpbnRlcmZhY2VzIGluIGEKCXByb3RlY3RlZCB0eXBlIGRlY2xhcmF0aW9uLgoKMjAwNS0wMy0xNSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGJpbmRnZW4uYWRiIChHZW5fTWFpbl9DKTogQ2hhbmdlIFdCSSBfX3Bvc2l4X2V4aXQgdG8gZGVjYyRwb3NpeF9leGl0CgkoR2VuX091dHB1dF9GaWxlX0MpOiBMaWtld2lzZS4KCShHZW5fTWFpbl9DKTogSXNzdWUgI2luY2x1ZGUgPHN0ZGxpYi5oPiB0byBhdm9pZCB3YXJuaW5nCgoyMDA1LTAzLTE1ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogY2hlY2tzLmFkYiAoR2V0X0VfRmlyc3RfT3JfTGFzdCk6IFdoZW4gdGhlIGV4cHJlc3Npb24gYmVpbmcgcmV0cmlldmVkCglpcyBhbiBOX1JhaXNlX0NvbnN0cmFpbnRfRXJyb3Igbm9kZSwgY3JlYXRlIGEgbmV3IGNvcHkgb2YgaXQgd2l0aG91dAoJZ29pbmcgdGhyb3VnaCBhIGNhbGwgdG8gRHVwbGljYXRlX1N1YmV4cHIuCgoyMDA1LTAzLTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoJICAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgkgICAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xOTkwMAoJUFIgYWRhLzE5NDA4CglQUiBhZGEvMTkxNDAKCVBSIGFkYS8yMDI1NQoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2ZpZWxkKTogUmVqZWN0IGFsaWFzZWQgY29tcG9uZW50cyB3aXRoIGEKCXJlcHJlc2VudGF0aW9uIGNsYXVzZSB0aGF0IHByZXNjcmliZXMgYSBzaXplIG5vdCBlcXVhbCB0byB0aGUgcm91bmRlZAoJc2l6ZSBvZiB0aGVpciB0eXBlcy4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9Db21wb25lbnQpOiBBbHdheXMgbG9vayBhdAoJT3JpZ2luYWxfUmVjb3JkX0NvbXBvbmVudCBpZiBQcmVzZW50IGFuZCBub3QgdGhlIGVudGl0eS4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9SZWNvcmRfU3VidHlwZSk6IFJld29yayBoYW5kbGluZyBvZiBzdWJ0eXBlcwoJb2YgdGFnZ2VkIGV4dGVuc2lvbiB0eXBlcyBieSBub3QgbWFraW5nIGZpZWxkIGZvciBjb21wb25lbnRzIHRoYXQgYXJlCglpbnNpZGUgdGhlIHBhcmVudC4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1JlY29yZF9UeXBlPjogRml4IHR5cG8gaW4gdGhlIGFsaWdubWVudCBmb3JtdWxhCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9WYXJpYWJsZT46IERvIG5vdCBjb252ZXJ0IGFnYWluIHRoZQoJZXhwcmVzc2lvbiB0byB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0IHdoZW4gdGhlIG9iamVjdCBpcyBjb25zdGFudC4KCVJldmVyc2UgZGVmZXJfZGVidWdfaW5jb21wbGV0ZV9saXN0IGJlZm9yZSB0cmF2ZXJzaW5nIGl0LCBzbyB0aGF0IHRyZWVzCglhcmUgcHJvY2Vzc2VkIGluIHRoZSBvcmRlciBhdCB3aGljaCB0aGV5IHdlcmUgYWRkZWQgdG8gdGhlIGxpc3QuIFRoaXMKCW9yZGVyIGlzIGltcG9ydGFudCB3aGVuIHVzaW5nIHRoZSBzdGFicyBkZWJ1ZyBmb3JtYXQuCglJZiB3ZSBhcmUgZGVmZXJyaW5nIHRoZSBvdXRwdXQgb2YgZGVidWcgaW5mb3JtYXRpb24sIGFsc28gZGVmZXIgdGhpcwoJb3V0cHV0IGZvciBhIGZ1bmN0aW9uIHJldHVybiB0eXBlLgoJV2hlbiBhZGRpbmcgZmllbGRzIHRvIGEgcmVjb3JkLCBwcmV2ZW50IGVtaXR0aW5nIGRlYnVnIGluZm9ybWF0aW9uCglmb3IgaW5jb21wbGV0ZSByZWNvcmRzLCBlbWl0IHRoZSBpbmZvcm1hdGlvbiBvbmx5IHdoZW4gdGhlIHJlY29yZCBpcwoJY29tcGxldGUuCgkoY29tcG9uZW50c190b19yZWNvcmQpOiBOZXcgcGFyYW1ldGVyIGRlZmVyX2RlYnVnLgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0FycmF5X1N1YnR5cGUpOiBDYWxsIGNvcHlfYWxpYXNfc2V0LgoJKGduYXRfdG9fZ251X2ZpZWxkX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoc3Vic3RpdHV0aW9uX2xpc3QsIGFubm90YXRlX3JlcCk6IENhbGwgaXQuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfUmVjb3JkX1N1YnR5cGUpOiBMaWtld2lzZS4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9SZWNvcmRfVHlwZSk6IExpa2V3aXNlLgoJTm8gbG9uZ2VyIHVwZGF0ZSBkaXNjcmltaW5hbnRzIHRvIG5vdCBiZSBhIENPTVBPTkVOVF9SRUYuCgkoY29weV9hbGlhc19zZXQpOiBTdHJpcCBwYWRkaW5nIGZyb20gaW5wdXQgdHlwZTsgYWxzbyBoYW5kbGUKCXVuY29uc3RyYWluZWQgYXJyYXlzIHByb3Blcmx5LgoKCSogZ2lnaS5oICh3cml0ZV9yZWNvcmRfdHlwZV9kZWJ1Z19pbmZvKTogTmV3IGZ1bmN0aW9uLgoJQ29udmVydCB0byB1c2UgQU5TSS1zdHlsZSBwcm90b3R5cGVzLiBSZW1vdmUgdW51c2VkCglkZWNsYXJhdGlvbnMgZm9yIGVtaXRfc3RhY2tfY2hlY2ssIGVsYWJfYWxsX2duYXQgYW5kCglzZXRfc2Vjb25kX2Vycm9yX2VudGl0eS4KCShnbmF0X3RvX2dudV9maWVsZF9kZWNsKTogTmV3IGRlY2wuCgoJKiB1dGlscy5jICh3cml0ZV9yZWNvcmRfdHlwZV9kZWJ1Z19pbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9yZWNvcmRfdHlwZSk6IERlbGVnYXRlIGdlbmVyYXRpb24gb2YgZGVidWcgaW5mb3JtYXRpb24gdG8KCXdyaXRlX3JlY29yZF90eXBlX2RlYnVnX2luZm8uCgkodXBkYXRlX3BvaW50ZXJfdG8pOiBSZW1vdmUgdW5uZWVkZWQgY2FsbHMgdG8gcmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uLgoJKHVwZGF0ZV9wb2ludGVyX3RvKTogRml4IHBhc3RvLgoJKGNvbnZlcnQpIDxVTklPTl9UWVBFPjogQWNjZXB0IHNsaWdodCB0eXBlIHZhcmlhdGlvbnMgd2hlbgoJY29udmVydGluZyB0byBhbiB1bmNoZWNrZWQgdW5pb24gdHlwZS4KCgkqIGV4cF9jaDEzLmFkYiAoRXhwYW5kX05fRnJlZXplX0VudGl0eSk6IElmIEZyZWV6ZV9UeXBlIHJldHVybnMgVHJ1ZSwKCXJlcGxhY2UgdGhlIE5fRnJlZXplX0VudGl0eSB3aXRoIGEgbnVsbCBzdGF0ZW1lbnQuCgoJKiBmcmVlemUuYWRiIChGcmVlemVfRXhwcmVzc2lvbik6IElmIHRoZSBmcmVlemUgbm9kZXMgYXJlIGdlbmVyYXRlZAoJd2l0aGluIGEgY29uc3RyYWluZWQgc3ViY29tcG9uZW50IG9mIGFuIGVuY2xvc2luZyByZWNvcmQsIHBsYWNlIHRoZQoJZnJlZXplIG5vZGVzIGluIHRoZSBzY29wZSBzdGFjayBlbnRyeSBmb3IgdGhlIGVuY2xvc2luZyByZWNvcmQuCgkoVW5kZWxheV9UeXBlKTogTmV3IFN1YnByb2dyYW0uCgkoU2V0X1NtYWxsX1NpemUpOiBQYXNzIFQsIHRoZSB0eXBlIHRvIG1vZGlmeTsgYWxsIGNhbGxlcnMgY2hhbmdlZC4KCShGcmVlemVfRW50aXR5LCBGcmVlemVfUmVjb3JkX1R5cGUpOiBDaGFuZ2UgdGhlIHdheSB3ZSBoYW5kbGUgdHlwZXMKCXdpdGhpbiByZWNvcmRzOyBhbGxvdyB0aGVtIHRvIGhhdmUgZnJlZXplIG5vZGVzIGlmIHRoZWlyIGJhc2UgdHlwZXMKCWFyZW4ndCBmcm96ZW4geWV0LgoKCSogZXhwX3V0aWwuYWRiIChSZW1vdmVfU2lkZV9FZmZlY3RzKTogUHJvcGVybHkgdGVzdCBmb3IKCUV4cGFuc2lvbl9EZWxheWVkIGFuZCBoYW5kbGUgY2FzZSB3aGVuIGl0J3MgaW5zaWRlIGFuCglOX1F1YWxpZmllZF9FeHByZXNzaW9uLgoKCSogc2VtX2NoMy5hZGIgKERlcml2ZWRfVHlwZV9EZWNsYXJhdGlvbik6IE5ldyBwcmVkaWNhdGUKCUNvbWVzX0Zyb21fR2VuZXJpYywgdG8gcmVjb2duaXplIGFjY3VyYXRlbHkgdGhhdCB0aGUgcGFyZW50IHR5cGUgaW4gYQoJZGVyaXZlZCB0eXBlIGRlY2xhcmF0aW9uIGNhbiBiZSB0cmFjZWQgYmFjayB0byBhIGZvcm1hbCB0eXBlLCBiZWNhdXNlCglpdCBpcyBvbmUgb3IgaXMgZGVyaXZlZCBmcm9tIG9uZSwgb3IgYmVjYXVzZSBpdHMgY29tcGxldGlvbiBpcyBkZXJpdmVkCglmcm9tIG9uZS4KCShDb25zdHJhaW5fQ29tcG9uZW50X1R5cGUpOiBJZiBjb21wb25lbnQgY29tZXMgZnJvbSBzb3VyY2UgYW5kIGhhcyBubwoJZXhwbGljaXQgY29uc3RyYWludCwgbm8gbmVlZCB0byBjb25zdHJhaW4gaW4gaW4gYSBzdWJ0eXBlIG9mIHRoZQoJZW5jbG9zaW5nIHJlY29yZC4KCShDb25zdHJhaW5fQWNjZXNzLCBDb25zdHJhaW5fQXJyYXkpOiBBbGxvdyBpdHlwZXMgdG8gYmUgZGVsYXllZC4KCU1pbm9yIGNoYW5nZSB0byBwcm9wYWdhdGUgSXNfQWRhXzIwMDUgZmxhZwoKCSogdHJhbnMuYyAoZ25hdF90b19nbnUsIGNhc2UgTl9BZ2dyZWdhdGUpOiBWZXJpZnkgdGhhdAoJRXhwYW5zaW9uX0RlbGF5ZWQgaXMgRmFsc2UuCgkoYXNzb2NfdG9fY29uc3RydWN0b3IpOiBJZ25vcmUgZmllbGRzIHRoYXQgaGF2ZSBhCglDb3JyZXNwb25kaW5nX0Rpc2NyaW1pbmFudC4KCShnbmF0X3RvX2dudSkgPE5fUmV0dXJuX1N0YXRlbWVudD46IFJlc3RydWN0dXJlLiBJZiB0aGUKCWZ1bmN0aW9uIHJldHVybnMgImJ5IHRhcmdldCIsIGRlcmVmZXJlbmNlIHRoZSB0YXJnZXQgcG9pbnRlciB1c2luZyB0aGUKCXR5cGUgb2YgdGhlIGFjdHVhbCByZXR1cm4gdmFsdWUuCgk8YWxsPjogQmUgcHJlcGFyZWQgZm9yIGEgbnVsbCBnbnVfcmVzdWx0LgoJKHByb2Nlc3NlZF9pbmxpbmVfc3VicHJvZ3JhbXMpOiBDaGVjayBmbGFnX3JlYWxseV9ub19pbmxpbmUKCWluc3RlYWQgb2YgZmxhZ19ub19pbmxpbmUuCgkoc2V0X3NlY29uZF9lcnJvcl9lbnRpdHkpOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9uLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fU2VsZWN0ZWRfQ29tcG9uZW50KTogQ2FsbAoJZ25hdF90b19nbnVfZmllbGRfZGVjbC4KCShhc3NvY190b19jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoKMjAwNS0wMy0xNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHBfcGFrZC5hZGIgKENyZWF0ZV9QYWNrZWRfQXJyYXlfVHlwZSk6IERvIG5vdCBzZXQKCU11c3RfQmVfQnl0ZV9BbGlnbmVkIGZvciBjYXNlcyB3aGVyZSB3ZSBkbyBub3QgbmVlZCB0byB1c2UgYQoJU3lzdGVtLlBhY2tfbm4gdW5pdC4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IENhbGwgRXhwYW5kX0FjdHVhbHMgZm9yIGZ1bmN0aW9ucyBhcyB3ZWxsCglhcyBwcm9jZWR1cmVzLgoJTmVlZGVkIG5vdyB0aGF0IHdlIGRvIHNvbWUgcHJvY2Vzc2luZyBmb3IgSU4gcGFyYW1ldGVycyBhcyB3ZWxsLiBUaGlzCgltYXkgd2VsbCBmaXggc29tZSB1bnJlbGF0ZWQgZXJyb3JzLgoJKEV4cGFuZF9DYWxsKTogSGFuZGxlIGNhc2Ugb2YgdW5hbGlnbmVkIG9iamVjdHMgKGluIHBhcnRpY3VsYXIgdGhvc2UKCXRoYXQgY29tZSBmcm9tIHBhY2tlZCBhcnJheXMpLgoJKEV4cGFuZF9JbmxpbmVkX0NhbGwpOiBJZiB0aGUgc3VicHJvZ3JhbSBpcyBhIHJlbmFtaW5nIGFzIGJvZHksIGFuZCB0aGUKCXJlbmFtZWQgZW50aXR5IGlzIGFuIGluaGVyaXRlZCBvcGVyYXRpb24sIHJlLWV4cGFuZCB0aGUgY2FsbCB1c2luZyB0aGUKCW9yaWdpbmFsIG9wZXJhdGlvbiwgd2hpY2ggaXMgdGhlIG9uZSB0byBjYWxsLgoJRGV0ZWN0IGF0dGVtcHQgdG8gaW5saW5lIHBhcmFtZXRlcmxlc3MgcmVjdXJzaXZlIHN1YnByb2dyYW0uCgkoUmVwcmVzZW50ZWRfQXNfU2NhbGFyKTogRml4IHRvIHdvcmsgcHJvcGVybHkgd2l0aCBwcml2YXRlIHR5cGVzCgkoSXNfUG9zc2libHlfVW5hbGlnbmVkX09iamVjdCk6IE1ham9yIHJld3JpdGUgdG8gZ2V0IGEgbXVjaCBtb3JlCglhY2N1cmF0ZSBlc3RpbWF0ZS4gWWllbGRzIFRydWUgaW4gZmFyIGZld2VyIGNhc2VzIHRoYW4gYmVmb3JlLAoJaW1wcm92aW5nIHRoZSBxdWFsaXR5IG9mIGNvZGUgdGhhdCBkZXBlbmRzIG9uIHRoaXMgdGVzdC4KCgkqIGV4cF91dGlsLmFkYiAoS2lsbF9EZWFkX0NvZGUpOiBGb3IgYSBwYWNrYWdlIGRlY2xhcmF0aW9uLCBpdGVyYXRlCglvdmVyIGJvdGggdmlzaWJsZSBhbmQgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgdG8gcmVtb3ZlIHRoZW0gZnJvbSB0cmVlLAoJYW5kIG1hcmsgc3VicHJvZ3JhbXMgZGVjbGFyZWQgaW4gcGFja2FnZSBhcyBlbGltaW5hdGVkLCB0byBwcmV2ZW50CglzcHVyaW91cyB1c2UgaW4gc3Vic2VxdWVudCBjb21waWxhdGlvbiBvZiBnZW5lcmljIHVuaXRzIGluIHRoZSBjb250ZXh0LgoKCSogZXhwX3V0aWwuYWRzOiBNaW5vciBjbGVhbnVwIGluIHZhcmlhYmxlIG5hbWVzCgoJKiBzZW1fZXZhbC5hZHMsIHNlbV9ldmFsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgkoQ29tcGlsZV9UaW1lX0tub3duX0JvdW5kcyk6IE5ldyBmdW5jdGlvbgoKMjAwNS0wMy0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNy5hZGIgKENvbnZlcnRfVmlldyk6IFVzZSBiYXNlIHR5cGVzIG9mIHVuZGVybHlpbmcgdHlwZXMgd2hlbgoJZGV0ZXJtaW5pbmcgd2hldGhlciBhbiB1bmNoZWNrZWQgY29udmVyc2lvbiBpcyBuZWVkZWQgZm9yIHRoZSBhcmd1bWVudAoJb2YgYW4gaW5pdGlhbGl6YXRpb24gY2FsbC4KCjIwMDUtMDMtMTUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbnRyLmFkYiAoRXhwYW5kX1VuY19Db252ZXJzaW9uKTogQXMgYSB0YXJnZXQgdHlwZSwgdXNlIHRoZSB0eXBlCgl0aGF0IGFwcGVhcnMgaW4gdGhlIGluc3RhbnRpYXRpb24gcmF0aGVyIHRoYW4gdGhlIGludGVybmFsIHN1YnR5cGUKCWdlbmVyYXRlZCBpbiB0aGUgd3JhcHBlciBwYWNrYWdlLCB0byBhdm9pZCBhbm9tYWxpZXMgaW4gZ2lnaSB3aGVuIHRoZQoJdGFyZ2V0IGlzIGRlcml2ZWQgZnJvbSBhIHByaXZhdGUgdHlwZSB3aG9zZSBmdWxsIHZpZXcgaXMgYW4gYWNjZXNzIHR5cGUuCgoyMDA1LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9zbWVtLmFkYiwgc2VtX2F0dHIuYWRiOiBSZW1vdmUgT0tfRm9yX1N0cmVhbSBmbGFnLCBub3QgdXNlZCwKCW5vdCBuZWVkZWQuCglBZGQgZG9jdW1lbnRhdGlvbiB0byByZXBsYWNlIHRoZSB1c2Ugb2YgdGhpcyBmbGFnCglGaXgga2x1ZGdlIGZvciBNYXhpbXVtX0FsaWdubWVudCBvbiB4ODYgc28gdGhhdCBpdCBkb2VzIG5vdCBhcHBseSB0bwoJdGhlIHg4Nl82NC4KCjIwMDUtMDMtMTUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfdHNzLmFkcywgZXhwX3Rzcy5hZGIgKEZpbmRfSW5oZXJpdGVkX1RTUyk6IE5ldyBzdWJwcm9ncmFtLCBtb3ZlZAoJaGVyZSBmcm9tIGV4cF9hdHRyIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBleHBfYXR0ciBhbmQgZXhwX2Rpc3QuCgkoVFNTX05hbWVzKTogUmVuYW1lZCBmcm9tIE9LX1RTU19OYW1lcy4gVGhpcyBhcnJheSBjb250YWlucyB0aGUgbGlzdCBvZgoJYWxsIFRTUyBuYW1lcywgbm90IGEgc3Vic2V0IHRoZXJlb2YsIGFuZCB0aGUgcHJldmlvdXMgbmFtZSBpbnRyb2R1Y2VkCglhbiB1bm5lY2Vzc2FyaWx5IGNvbmZ1c2lvbiB0aGF0IGEgZGlzdGluY3Rpb24gbWlnaHQgZXhpc3QgYmV0d2VlbgoJIk9LIiBUU1MgbmFtZXMgYW5kIHNvbWUgIm5vdCBPSyIgVFNTIG5hbWVzLgoKMjAwNS0wMy0xNSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIGduYXRjaG9wLmFkYiAoTG9jYXRlX0V4ZWN1dGFibGUpOiBOb3JtYWxpemUgdGhlIHBvc3NpYmx5IFZNUyBzdHlsZQoJQ29tbWFuZF9OYW1lLgoKMjAwNS0wMy0xNSAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgYWRhLzIwMjI2CglQUiBhZGEvMjAzNDQKCSogaW5pdC5jIChfX2duYXRfaW5pdGlhbGl6ZSk6IERvIG5vdCBjYWxsIF9fZ25hdF9pbnN0YWxsX1NFSF9oYW5kbGVyKCkKCXdoZW4gSU5fUlRTLiBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGEgYm9vdHN0cmFwIHBhdGggcHJvYmxlbS4KCgkqIG1pc2MuYyAoZ25hdF9wYXJzZV9maWxlKTogQ3JlYXRlIGEgU0VIIChTdHJ1Y3R1cmVkIEV4Y2VwdGlvbiBIYW5kbGVyKQoJdGFibGUgYW5kIHBhc3MgaXQgdG8gX19nbmF0X2luc3RhbGxfU0VIX2hhbmRsZXIoKS4KCShnbmF0X2hhbmRsZV9vcHRpb24pOiBBY2NlcHQgT1BUX2ZSVFNfLCBub3QgT1BUX2ZSVFMuCgoJKiBsYW5nLm9wdDogRml4IHNwZWNpZmljYXRpb24gb2YgLWZSVFM9LgoKMjAwNS0wMy0xNSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCSAgICBCZXJuYXJkIEJhbm5lciAgPGJhbm5lckBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJUFIgYWRhLzY4NTIKCVRoaXMgY2hhbmdlIHdvcmtzIGZpbmUgd2hlbiBnbmF0bGliIGlzIGJ1aWx0IGZyb20gdGhlIGdjYyBkaXJlY3RvcnksCglidXQgZG9lcyBub3Qgd29yayB3aGVuIHVzaW5nIHRoZSBsaWJhZGEgTWFrZWZpbGUsIHNpbmNlIEdDQ19GT1JfVEFSR0VUCglpcyBub3QgcGFzc2VkIHRvIGFkYS9NYWtlZmlsZS5pbiwgc28gbW9yZSB3b3JrIGlzIG5lZWRlZCBieSBhCglNYWtlZmlsZS9jb25maWd1cmUgZXhwZXJ0LgoKCSogTWFrZWZpbGUuaW4oZ25hdGxpYik6IFVzZSAkKEdDQ19GT1JfVEFSR0VUKSBmb3IgY29tcGlsaW5nIGxpYnJhcnkuCglzZXQgR01FTV9MSUIgb24gaWE2NCBsaW51eCB0byBhZGQgb3B0aW9uYWwgc3VwcG9ydCBmb3IgZ25hdG1lbS4KCVNldHVwIGduYXRsaW5rIHN3aXRjaCAtTSBmb3IgeDg2XzY0IGxpbnV4LCBhcyBpdCBpcyBhbHJlYWR5IHNldHVwCglmb3IgTGludXggeDg2LgoJKGduYXRsaWItc2hhcmVkLWRlZmF1bHQpOiBVc2UgR05BVExJQkNGTEFHUyBhcyB3ZWxsLgoJUnVuIHJhbmxpYiBvbiBsaWJnY2NwcmVmaXguYQoJRGVmaW5lIFBSRUZJWF9PQkpTIGZvciBEYXJ3aW4sIHRvIGJ1aWxkIGxpYmdjY3ByZWZpeC4KCShBREFfSU5DTFVERV9TUkNTKTogU3BsaXQgQWRhIHBhY2thZ2VzLgoKMjAwNS0wMy0xNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBNYWtlLWxhbmcuaW46IEFkZCBnLXV0Zl8zMiB1bml0IGZvciBnbmF0IGFuZCBnbmF0YmluZAoKCSogaW1wdW5pdC5hZGI6IEFkZCBHTkFULlVURl8zMgoKCSogc2NuZy5hZGI6IFVzZSBnbmF0LnV0Zl8zMiBpbnN0ZWFkIG9mIHdpZGVjaGFyIGZvciB1dGZfMzIgc3R1ZmYKCgkqIHdpZGVjaGFyLmFkcywgd2lkZWNoYXIuYWRiOiBSZW1vdmUgcmVkdW5kYW50IFVURi0zMiB0YWJsZXMgKHNjbmcKCW5vdyB1c2VzIEdOQVQuVVRGXzMyKS4KCgkqIGctdXRmXzMyLmFkcywgZy11dGZfMzIuYWRiOiBUaGlzIGlzIGEgbmV3IHVuaXQgd2l0aCBmdWxsCgljYXBhYmlsaXRpZXMgZm9yIGNhdGVnb3JpemluZyBjaGFyYWN0ZXJzIHVzaW5nIFVuaWNvZGUgY2F0ZWdvcmllcwoKMjAwNS0wMy0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTAuYWRiIChCdWlsZF9BbmNlc3Rvcl9OYW1lKTogSWYgdGhlIGFuY2VzdG9yIGlzIGFuCglpbnN0YW50aWF0aW9uIHRoYXQgaGFzIGJlZW4gcmV3cml0dGVuIGFzIGEgcGFja2FnZSBib2R5LCByZXRyaWV2ZSBzcGVjCgl0byBnZW5lcmF0ZSBwcm9wZXIgbmFtZSBmb3IgaW1wbGljaXRfd2l0aF9jbGF1c2UuCgkoSW5zdGFsbF9QYXJlbnRzKTogUmVjb2duaXplIGEgcGFyZW50IHRoYXQgaXMgYW4gaW5zdGFudGlhdGlvbiBidXQgaGFzCgliZWVuIHJld3JpdHRlbiBhcyBhIHBhY2thZ2UgZGVjbGFyYXRpb24gZHVyaW5nIGFuYWx5c2lzLgoKMjAwNS0wMy0xNSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoSW5zdGFudGlhdGVfT2JqZWN0KTogSWYgdGhlIGFuYWx5c2lzIG9mIHRoZSBhY3R1YWwKCXBhcmFtZXRlciByZXBvcnRlZCBzb21lIGVycm9yIHdlIGltbWVkaWF0ZWx5IHJldHVybi4gVGhpcyBpbXByb3ZlcyB0aGUKCWJlaGF2aW91ciBvZiB0aGUgZnJvbnRlbmQgaW4gY2FzZSBvZiBlcnJvcnMuCgkoSW5zdGFsbF9QYXJlbnQsIFJlbW92ZV9QYXJlbnQpOiBJbnRyb2R1Y2UgbmV3IGZsYWcKCVBhcmVudF9Vbml0X1Zpc2libGUsIHRvIHByZXNlcnZlIHRoZSBwcm9wZXIgdmlzaWJpbGl0eSBvZiB0aGUgdWx0aW1hdGUKCWFuY2VzdG9yIG9mIGEgZ2VuZXJpYyBjaGlsZCB1bml0LCB3aGVuIHRoZSBjaGlsZCBpcyBiZWluZyBpbnN0YW50aWF0ZWQuCgkoSW5saW5lX0luc3RhbmNlX0JvZHkpOiBJZiB3ZSBhcmUgY29tcGlsaW5nIHRoZSBwcml2YXRlCglwYXJ0IG9yIHRoZSBib2R5IG9mIGEgY2hpbGQgdW5pdCwgcmVzdG9yZSB0aGUgcHJvcGVyIHZpc2liaWxpdHkgb2YgdGhlCglwYXJlbnRzIGFmdGVyIGNvbXBpbGluZyB0aGUgaW5zdGFuY2UgYm9keS4KCjIwMDUtMDMtMTUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE1NjA4CgkqIHNlbV91dGlsLmFkYiAoR2V0X1Rhc2tfQm9keV9Qcm9jZWR1cmUpOiBUeXBlIG1heSBiZSB0aGUgY29tcGxldGlvbgoJb2YgYSBwcml2YXRlIHR5cGUsIGluIHdoaWNoIGNhc2UgaXQgaXMgdW5kZXJseWluZ190eXBlIHRoYXQgZGVub3RlcwoJdGhlIHByb3BlciB0YXNrLiBBbHNvIG1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IGVudGl0eSBhdHRyaWJ1dGUKCXRoYXQgaXMgZGlyZWN0bHkgYXZhaWxhYmxlIGluIHRoZSB0YXNrIHR5cGUgYW5kIHRhc2sgc3VidHlwZSBlbnRpdGllcwoJKEJ1aWxkX0FjdHVhbF9TdWJ0eXBlX09mX0NvbXBvbmVudCk6IEhhbmRsZSBwcm9wZXJseSBtdWx0aWRpbWVuc2lvbmFsCglhcnJheXMgd2hlbiBvdGhlciBkaW1lbnNpb25zIHRoYW4gdGhlIGZpcnN0IGFyZSBjb25zdHJhaW5lZCBieQoJZGlzY3JpbWluYW50cyBvZiBhbiBlbmNsb3NpbmcgcmVjb3JkLgoJKEluc2VydF9FeHBsaWNpdF9EZXJlZmVyZW5jZSk6IElmIHRoZSBwcmVmaXggaXMgYW4gaW5kZXhlZCBjb21wb25lbnQgb3IKCWEgY29tYmluYXRpb24gb2YgaW5kZXhlZCBhbmQgc2VsZWN0ZWQgY29tcG9uZW50cywgZmluZCB1bHRpbWF0ZSBlbnRpdHkKCWFuZCBnZW5lcmF0ZSB0aGUgYXBwcm9wcmlhdGUgcmVmZXJlbmNlIGZvciBpdCwgdG8gc3VwcHJlc3Mgc3B1cmlvdXMKCXdhcm5pbmdzLgoJKE5vdGVfUG9zc2libGVfTW9kaWZpY2F0aW9uKTogSWYgYW4gZW50aXR5IG5hbWUgaGFzIG5vIGVudGl0eSwgcmV0dXJuLgoJKElzX1ZhcmlhYmxlKTogQSBmdW5jdGlvbiBjYWxsIG5ldmVyIGRlbm90ZXMgYSB2YXJpYWJsZS4KCShSZXF1aXJlc19UcmFuc2llbnRfU2NvcGUpOiBGb3IgcmVjb3JkIHR5cGVzLCByZWN1cnNlIG9ubHkgb24KCWNvbXBvbmVudHMsIG5vdCBvbiBpbnRlcm5hbCBzdWJ0eXBlcyB0aGF0IG1heSBoYXZlIGJlZW4gZ2VuZXJhdGVkIGZvcgoJY29uc3RyYWluZWQgY29tcG9uZW50cy4KCjIwMDUtMDMtMTUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX0NvbmNhdGVuYXRpb24pOiBEbyBub3QgY29uc2lkZXIgb3BlcmF0b3JzIG1hcmtlZAoJRWxpbWluYXRlZCBhcyBjYW5kaWRhdGVzIGZvciByZXNvbHV0aW9uLiBCb3RoIGVmZmljaWVudCwgYW5kIGF2b2lkcwoJYW5vbWFsaWVzIHdpdGggb3BlcmF0b3JzIGRlY2xhcmVkIGluIGRlbGV0ZWQgY29kZS4KCShQcm9jZXNzX0ltcGxpY2l0X0RlcmVmZXJlbmNlX1ByZWZpeCk6IFVzZSB0aGlzIHByb2NlZHVyZSB3aGVuZXZlcgoJZXhwYW5zaW9uIGlzIGRpc2FibGVkIChhcyB3aGVuIGNvbXBpbGluZyBhIGdlbmVyaWMpIHRvIHByZXZlbnQgc3B1cmlvdXMKCXdhcm5pbmdzIG9uIHByZWZpeGVzIG9mIHNlbGVjdGVkIGNvbXBvbmVudHMuCgoyMDA1LTAzLTE1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g2LmFkYiAoSXNfUHJpdmF0ZV9EZWNsYXJhdGlvbik6IFZlcmlmeSB0aGF0IHRoZSBkZWNsYXJhdGlvbiBpcwoJYXR0YWNoZWQgdG8gYSBsaXN0IGJlZm9yZSBjaGVja2luZyB3aGV0aGVyIGl0IGFwcGVhcnMgaW4gdGhlIHByaXZhdGUKCWRlY2xhcmF0aW9ucyBvZiB0aGUgY3VycmVudCBwYWNrYWdlLgoJKE1ha2VfSW5lcXVhbGl0eV9PcGVyYXRvcik6IEluc2VydCBkZWNsYXJhdGlvbiBpbiBwcm9wZXIgZGVjbGFyYXRpdmUKCWxpc3QgcmF0aGVyIHRoYW4ganVzdCBzZXR0aW5nIHRoZSBQYXJlbnQgZmllbGQsIHNvIHRoYXQKCUlzX1ByaXZhdGVfRGVjbGFyYXRpb24gY2FuIGhhbmRsZSBpdCBwcm9wZXJseS4KCjIwMDUtMDMtMTUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRiIChBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBJbiBhIGdlbmVyaWMsIGlmIHRoaXMgaXMKCWEgcmVuYW1pbmcgYSBib2R5LCBjaGVjayB0aGF0IHRoZSByZW5hbWVkIHN1YnByb2dyYW0gaW4gbm90IGludHJpbnNpYy4KCShGaW5kX0RpcmVjdF9OYW1lKTogSWYgc2V2ZXJhbCB1c2VfdmlzaWJsZSBlbnRpdGllcyBoaWRlCgllYWNoIG90aGVyLCBhbmQgdGhlIGNvbnRleHQgaXMgYSBwcmVkZWZpbmVkIGZpbGUgY29tcGlsZWQgdGhyb3VnaAoJcnRzZmluZCwga2VlcCBvbmx5IHRoZSBlbnRpdHkgdGhhdCBjb21lcyBmcm9tIGEgcHJlZGVmaW5lZCBmaWxlLgoKMjAwNS0wMy0xNSAgR2VlcnQgQm9zY2ggIDxib3NjaEBhZGFjb3JlLmNvbT4KCgkqIHMtZmF0Z2VuLmFkYiAoVmFsaWQpOiBFeHRlbmQgc3BlY2lhbCBleGNlcHRpb25zIHRvIGFjY291bnQgZm9yIGxvbmcKCWxvbmcgZmxvYXQgcGFkZGluZyB0byBhbHNvIGNvdmVyIEFNRDY0IGFuZCBJQTY0LgoKMjAwNS0wMy0xNSAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogcy1pbWd3Y2guYWRiOiBBZGQgd2l0aCBhbmQgdXNlIG9mIEludGVyZmFjZXMuCgkoSW1nX1dpZGVfQ2hhcmFjdGVyKTogQ2hhbmdlIHR5cGUgb2YgVmFsIHRvIFVuc2lnbmVkXzE2LgoJKEltZ19XaWRlX1dpZGVfQ2hhcmFjdGVyKTogQ2hhbmdlIHR5cGUgb2YgVmFsIHRvIFVuc2lnbmVkXzMyLgoKMjAwNS0wMy0xNSAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBhZGFjb3JlLmNvbT4KCgkqIHN5c2RlcC5jOiBJbXBsZW1lbnQgX19nbmF0X2xvY2FsdGltZV9yIGFzIGNhbGwgdG8gbG9jYWx0aW1lX3Igb24gQUlYLgoKMjAwNS0wMy0xNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiB1c2FnZS5hZGI6IEFkZCBtaXNzaW5nIGxpbmVzIGZvciAtZ25hdDk1IGFuZCAtZ25hdDA1IHN3aXRjaGVzCgoJKiBzZW1fY2g3LmFkYjogTWlub3IgY2hhbmdlIHRvIHByb3BhZ2F0ZSBJc19BZGFfMjAwNSBmbGFnCgoJKiBpLWMuYWRiOiBDbGFyaWZ5IHRoYXQgQUktMjU4IGJlaGF2aW9yIGlzIGFsc28gaW50ZW5kZWQgaW4gQWRhIDk1CgoyMDA1LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtYml0b3BzLmFkYiwgcy1iaXRvcHMuYWRzLAoJcy10YXByb3Atb3MyLmFkYiwgcy1pbnRtYW4tdm1zLmFkcywgcy1pbnRtYW4tdnh3b3Jrcy5hZHMsCglzLXRhcHJvcC12eHdvcmtzLmFkYiwgYS1jYWxkZWwuYWRzLCBhLWNhbGVuZC5hZGIsIGEtdGFzYXR0LmFkYiwKCXRidWlsZC5hZHMsIHMtZmluaW1wLmFkYiwgcy1pbWd3Y2guYWRiLCBzLWludG1hbi5hZHMsIHMtaW50bWFuLmFkcywKCXMtbWVtb3J5LmFkYiwgcy1zb2ZsaW4uYWRzLCBzLXRhYXNkZS5hZHMsIHMtdGFwcm9iLmFkYiwgcy10YXByb3AuYWRzLAoJcy10YXByb3AuYWRzLCBzLXRhc2luaS5hZGIsIHMtdGFzaW5pLmFkcywgcy10YXNpbmkuYWRzLCBzLXRhc2luaS5hZHMsCglzLXRhc2tpbi5hZHMsIHMtdGFzcmVuLmFkYiwgcy10YXNzdGEuYWRiLCBzLXRhc3N0YS5hZHMsIHMtdGFzc3RhLmFkcywKCXMtdGFzdXRpLmFkcywgcy10YXRhYXQuYWRzLCBzLXRhdGFhdC5hZHMsIHMtdGF0YWF0LmFkcywgcy10YXRhYXQuYWRzLAoJcy10cG9iZW4uYWRiLCBzLXRwb2Jlbi5hZGIsIHMtdHBvYm9wLmFkczogVXBkYXRlIGNvbW1lbnRzLiBNaW5vcgoJcmVmb3JtYXR0aW5nLgoKMjAwNS0wMy0xNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHV0aWxzMi5jIChidWlsZF9iaW5hcnlfb3ApOiBGaXggdHlwby4KCjIwMDUtMDMtMTUgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBzLWNydGwuYWRzIChwb3BlbixwY2xvc2UpOiBOZXcgaW1wb3J0cy4KCjIwMDUtMDMtMTUgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCgkqIGNvbXBlcnIuYWRiIChDb21waWxlcl9BYm9ydCk6IHJlbW92ZSByZWZlcmVuY2VzIHRvIG9ic29sZXRlCglwcm9jZWR1cmVzIGluIHRoZSBidWcgYm94ZXMgZm9yIHZhcmlvdXMgR05BVCBidWlsZHMuCgoyMDA1LTAzLTE1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IFNhdmUgYXMgVW5peCB0ZXh0IGZpbGUsIG5vdCBhcyBET1MgdGV4dCBmaWxlCgoyMDA1LTAzLTE1ICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgkgICAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBSZW1vdmUgZXh0ZW5kZWQgaW5saW5lIGFzc2VtYmx5IGV4YW1wbGUsIGFzIGl0IHdhcyBmYXIKCXRvbyBzcGVjaWZpYyBhbmQgbG9uZy13aW5kZWQgdG8gYmUgYXBwcm9wcmlhdGUgZm9yIHRoZSBHTkFUIFVzZXIncwoJR3VpZGUuCglXYXJuIGFib3V0IHVzZSBvZiBHQ0Mgc3dpdGNoZXMgbm90IGRvY3VtZW50ZWQgaW4gdGhlIEdOQVQgVXNlcidzIEd1aWRlLAoJYXMgdGhlc2UgbWF5IGNhdXNlIGdlbmVyYXRlZCBjb2RlIHRvIG5vdCBjb25mb3JtIHRvIEFkYSBzZW1hbnRpY3MuCglSZW1vdmUgbWVudGlvbiBvZiAtZ2R3YXJmLTIgZm9yIHNwYXJjNjQsIHNpbmNlIHRoaXMgaXMgbm93IHRoZSBkZWZhdWx0LgoJQWRkIGRvY3VtZW50YXRpb24gZm9yIC1nbmF0OTUgYW5kIC1nbmF0MDUgc3dpdGNoZXMKCVJlbW92ZSBwYXJhZ3JhcGggZG9jdW1lbnRpbmcgb2Jzb2xldGUgd2F5IHRvIHJlZmVyIHRvIHRoaXJkIHBhcnR5CglsaWJyYXJpZXMuCglBZGQgYSBmZXcgcmVmZXJlbmNlcyB0byBBZGFfMDUgdGhhdCB3ZXJlIG1pc3NpbmcuCglVcGRhdGUgZG9jdW1lbnRhdGlvbiBvbiAtZ25hdFovLWduYXRMLgoJRG9jdW1lbnQgbGltaXRhdGlvbiB3aGVuIHVzaW5nIC1tNjQgdW5kZXIgU29sYXJpcy4KCUNoYW5nZSB0aGUgIk5hbWUgQ2FzaW5nIiBzdWJzZWN0aW9uIG9mIHRoZSBwcmV0dHktcHJpbnRlciBzZWN0aW9uCglhY2NvcmRpbmcgdG8gdGhlIGNoYW5nZXMgaW4gdGhlIGRpY3Rpb25hcnkgcHJvY2Vzc2luZy4KCgkqIGduYXRfcm0udGV4aTogRG9jdW1lbnQgdGhlIEFkYV8wNSBwcmFnbWEuCglTZWN0aW9uIG9uIHJlY29yZCByZXByZXNlbnRhdGlvbiBjbGF1c2VzIGRlc2NyaWJlcyB0aGUgbmV3IG1vcmUKCXJlbGF4ZWQgcnVsZXMgYWJvdXQgcGxhY2VtZW50IG9mIGxhcmdlIHBhY2tlZCBiaXQgYXJyYXkgY29tcG9uZW50cy4KCUFkZCBkb2N1bWVudGF0aW9uIG9mIEdOQVQuVVRGXzMyCgoyMDA1LTAzLTEyICBEYW5pZWwgQmVybGluIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogbWlzYy5jIChnbmF0X3Bvc3Rfb3B0aW9ucyk6IFR1cm4gb2ZmIHN0cnVjdHVyYWwKCWFsaWFzaW5nIGZvciBub3cuCgoyMDA1LTAzLTA4ICBMYXVyZW50IEd1ZXJieSA8bGF1cmVudEBndWVyYnkubmV0PgoKCSogc3lzdGVtLWxpbnV4LXNwYXJjLmFkczogRml4IHR5cG8gaW4gcHJldmlvdXMgY29tbWl0LgoKMjAwNS0wMy0wNyAgSmFtZXMgQS4gTW9ycmlzb24gPHBoeXRob25AZ2NjLmdudS5vcmc+CgkgICAgTGF1cmVudCBHdWVyYnkgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCglQUiBhZGEvMjAwMzUKCSogc3lzdGVtLWxpbnV4LXNwYXJjLmFkczogTmV3LgoJKiBNYWtlZmlsZS5pbjogQWRkIHNwYXJjIGxpbnV4IGVudHJ5LgoKMjAwNS0wMi0yNyAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHNlaF9pbml0LmMgKF9fZ25hdF9TRUhfZXJyb3JfaGFuZGxlcik6IE1hcmsgdGhpcmQgYW5kIGZvdXJ0aAoJcGFyYW1ldGVycyBhcyB1bnVzZWQuCgoyMDA1LTAyLTI2ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCVBhcnRpYWwgbWVyZ2UgZnJvbSBsaWJhZGEtZ25hdHRvb2xzLWJyYW5jaDoKCgkyMDA0LTEyLTAyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCSogTWFrZWZpbGUuaW46IE1vdmUgZ25hdHRvb2xzezEsMXJlLDIsMyw0fSBhbmQgY29ycmVzcG9uZGluZyBmbGFncwoJaW50byBjb2RlIGluIGduYXR0b29scy9NYWtlZmlsZS5pbi4gIFJlbW92ZSBkaXJlY3QgZGVwZW5kZW5jaWVzIG9uCglzdGFtcC10b29scyBieSB0b29scyBjbGF1c2VzLgoJMjAwNC0xMi0wMiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgkqIGNvbmZpZy1sYW5nLmluOiBBZGQgZ25hdHRvb2xzIHRvICRsYW5nX2RpcnMuCgoyMDA1LTAyLTEzICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBhZGEvMTk5NDIKCSogdXRpbHMuYyAoZ25hdF90eXBlX2Zvcl9tb2RlKTogUmV0dXJuIG51bGwgaW5zdGVhZCBvZiBJQ0UgYmVjYXVzZQoJd2UgYXNrZWQgZm9yIGFuIHVua25vd24gbW9kZS4KCjIwMDUtMDItMTIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB1dGlscy5jIChnbmF0X3R5cGVfZm9yX21vZGUpOiBSZXR1cm4gTlVMTCBmb3IgQ09NUExFWCBtb2RlczsKCXZhbGlkYXRlIFNDQUxBUl9JTlRfTU9ERV9QIGJlZm9yZSBjYWxsaW5nIGduYXRfdHlwZV9mb3Jfc2l6ZS4KCjIwMDUtMDItMTAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGluaXQuYyAoX19nbmF0X2luaXRpYWxpemUpOiBNYXJrIHBhcmFtZXRlciBhcyB1bnVzZWQuCgoyMDA1LTAyLTA5ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogZy1leHBlY3Qtdm1zLmFkYiAoTm9uX0Jsb2NraW5nX1NwYXduKTogU2VwYXJhdGUgb3V0LgoJKiBnLWVuYmxzcC12bXMtYWxwaGEuYWRiIGctZW5ibHNwLXZtcy1pYTY0LmFkYjogTmV3IHN1YnVuaXRzLgoKMjAwNS0wMi0wOSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIGduYXRjaG9wLmFkYiAoZHVwLCBkdXAyKSwKCWctZGlyb3BlLmFkYiAoY2xvc2VkaXIsIG9wZW5kaXIsIHJtZGlyKTogUmVmZXJlbmNlIHZpYSBTeXN0ZW0uQ1JUTC4KCgkqIGduYXRsYnIuYWRiIChta2RpciksCgltbGliLXRndC12bXMtaWE2NC5hZGIgKHBvcGVuLCBwbG9zZSk6ICBJbXBvcnQgd2l0aCBkZWNjJCBwcmVmaXguCgoJKiBzLWNydGwuYWRzIChjbG9zZGlyLCBkdXAsIGR1cDIsIG9wZW5kaXIsIHJtZGlyKTogSW1wb3J0LgoKMjAwNS0wMi0wOSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIHMtdHBvcGRlLXZtcy5hZGI6IEFkZCBwcmFnbWEgV2FybmluZ3MgKE9mZikgZm9yIFRhc2tfSWQgY29udmVyc2lvbnMuCgoyMDA1LTAyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnLXpzdHNwbC5hZHM6IE5ldyBmaWxlLgoKCSogYS1jaGFoYW4uYWRzLCBhLWNoYWhhbi5hZGI6IEFkZCBkZWNsYXJhdGlvbnMgZnJvbSBBSS0yODUKCgkqIGEtc3RyaW5nLmFkczogQWRkIHByYWdtYSBBZGFfMDUgZm9yIHdpZGVfd2lkZV9zcGFjZSB0byBnZXQgd2FybmluZyBpbgoJQWRhIDk1IG1vZGUKCUFkZCBkZWZpbml0aW9uIG9mIFdpZGVfV2lkZV9TcGFjZSBmb3IgQUktMjg1CgoJKiBpbXB1bml0LmFkcywgaW1wdW5pdC5hZGIsIHNlbV9jaDEwLmFkYjogQ29tcGxldGUgcmV3cml0ZSBhbmQgbmV3CglpbnRlcmZhY2UgKHRvIHN1cHBvcnQgQWRhIDk1IGFuZCBBZGEgMjAwNSB1bml0cykuCglBZGQgVW5ib3VuZGVkX0lPIGZpbGVzCglBZGQgZW50cmllcyBmb3IgV2lkZV9XaWRlIHBhY2thZ2VzIGZvciBBSS0yODUKCUFkZCBsaXN0IG9mIGNvbnRhaW5lcnMgcGFja2FnZXMgdG8gQWRhIDIwMDUgdW5pdCBsaXN0CgoJKiBhLXN3dXd0aS5hZHMsIGEtc3d1d3RpLmFkYiwgYS1zdXRlaW8uYWRzLCBhLXN1dGVpby5hZGI6IFVwZGF0ZXMgdG8KCXN1cHBvcnQgbmV3IFVuYm91bmRlZF9JTyBwYWNrYWdlIGNsZWFubHkuCgoJKiBnLXV0Zl8zMi5hZHMsIGctdXRmXzMyLmFkYjogTmV3IGZpbGVzLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgZW50cnkgZm9yIGctdXRmXzMyCglBZGQgbmV3IGZpbGVzIGZvciBVbmJvdW5kZWRfSU8KCUFkanVzdCBtYWtlIGZpbGUgZm9yIG5ldyBBSS0yODUgd2lkZSB3aWRlIHBhY2thZ2VzCglBZGQgQUktMzAyIGNvbnRhaW5lcnMgdG8gdGhlIHJ1biB0aW1lLgoKCSogYS1zdHdpYm8uYWRiLCBhLXN0d2liby5hZHMsIGEtc3R3aXN1LmFkYiwgYS1zdHdpc3UuYWRzLAoJYS1zdHJib3UuYWRzLCBhLXN0cmJvdS5hZGIsIGEtc3Ryc3VwLmFkcywgYS1zdHJzdXAuYWRiOiBOZXcKCXN1YnByb2dyYW1zIGZvciBBSS0zMDEuCgoJKiBhLXN0d2l1bi5hZGIsIGEtc3R3aXVuLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogYS1zdHVuYXUuYWRzOiBNaW5vciBjb21tZW50IGNvcnJlY3Rpb24KCgkqIHJ0c2ZpbmQuYWRzLCBydHNmaW5kLmFkYjogQWRkIGRlZmluaXRpb25zIGZvciBXaWRlX1dpZGUgYXR0cmlidXRlcwoJZXRjLgoJQWxzbyBleHRlbmQgVGV4dF9JT19LbHVkZ2UgdG8gc3VwcG9ydCBXaWRlX1dpZGVfVGV4dF9JTwoJKENoZWNrX1JQQyk6IFVwZGF0ZSB0byBtYXRjaCBjaGFuZ2VzIGluIGV4cGFuZGVkIGNvZGUuCglDbGVhbiB1cCB1bnVzZWQgZW50aXR5LgoKCSogZXhwX2NoMy5hZHMsIGV4cF9jaDMuYWRiOiBGaXggdmFyaW91cyBwbGFjZXMgd2hlcmUgV2lkZV9XaWRlX1N0cmluZwoJd2FzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuCglUaGlzIGluY2x1ZGVzIHByb3BlciBpbml0aWFsaXphdGlvbiB3aXRoIE5vcm1hbGl6ZV9TY2FsYXJzLgoJKEdldF9TaW1wbGVfSW5pdF9WYWwpOiBNYWpvciByZXdyaXRlIGZvciBpbml0aWFsaXplIHNjYWxhcnMgYW5kCglub3JtYWxpemUgc2NhbGFycyBjYXNlcyAocGFydGljdWxhcmx5IHRoZSBsYXR0ZXIpIHRvIGRvIGEgYmV0dGVyIGpvYgoJb2YgZmluZGluZyBpbnZhbGlkIHJlcHJlc2VudGF0aW9ucy4KCgkqIHMtc2NhdmFsLmFkcywgcy1zY2F2YWwuYWRiOiBBZGQgdmFsdWVzIGZvciB6ZXJvIGludmFsaWQgdmFsdWVzCgoJKiBzLXN0cm9wcy5hZHMsIHMtc3Ryb3BzLmFkYjogUmVtb3ZlIHN0cmluZyBub3JtYWxpemUgcm91dGluZXMsIG5ldmVyCgl1c2VkCgoJKiBleHBfZGlzdC5hZGI6IEFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUKCShFeHBhbmRfUmVjZWl2aW5nX1N0dWJzX0JvZGllcyk6IEZvciBhIHBhY2thZ2UgZGVjbGFyYXRpb24gdGhhdCBoYXMgYQoJcHJpdmF0ZSBwYXJ0LCBnZW5lcmF0ZSBzdHViIGJvZGllcyBhdCB0aGUgZW5kIG9mIHRoZSBwcml2YXRlIHBhcnQsCglub3QgdGhlIHZpc2libGUgcGFydC4KCShBZGRfUkFDV19QcmltaXRpdmVfT3BlcmF0aW9uc19BbmRfQm9kaWVzKTogQWRkIGxhc3QgbWlzc2luZyBjb2RlIGZvcgoJUG9seU9SQiBzdXBwb3J0LgoJKEFkZF9PYmpfUlBDX1JlY2VpdmVyX0NvbXBsZXRpb24pOiBBZGQgUENTLXNwZWNpZmljIHN1YnByb2dyYW1zIGFuZAoJZ2VuZXJpYyB3cmFwcGVyIHRvIGV4ZWN1dGUgZmluYWwgcHJvY2Vzc2luZyBhZnRlciBjb21wbGV0aW5nIHRoZQoJZXhwYW5zaW9uIG9mIHRoZSBSUEMgcmVjZWl2ZXIgZm9yIGFuIFJBQ1cuCgoJKiBzbmFtZXMuaCwgc25hbWVzLmFkcywgc25hbWVzLmFkYjogQWRkIGRlZmluaXRpb25zIGZvciB3aWRlX3dpZGUKCXBhY2thZ2VzIGFuZCBhdHRyaWJ1dGVzLgoJKFByZXNldF9OYW1lcyk6IEFkZGl0aW9uIG9mIHRoZSBuZXcgcmVzZXJ2ZWQgd29yZHMgb2YgQWRhIDIwMDUsCgl0aGF0IGlzIGludGVyZmFjZSwgb3ZlcnJpZGluZyBhbmQgc3luY2hyb25pemVkLgoJKEdldF9QcmFnbWFfSWQpOiBHaXZlIHN1cHBvcnQgdG8gdGhlIHVzZSBvZiB0aGUgbmV3IHJlc2VydmVkIHdvcmQKCSJpbnRlcmZhY2UiIGFzIGEgcHJhZ21hIG5hbWUuCgkoSXNfUHJhZ21hX05hbWUpOiBHaXZlIHN1cHBvcnQgdG8gdGhlIHVzZSBvZiB0aGUgbmV3IHJlc2VydmVkIHdvcmQKCSJpbnRlcmZhY2UiIGFzIGEgcHJhZ21hIG5hbWUuCgkoUHJlc2V0X05hbWVzKTogQWRkIHN0cmVhbV9zaXplIHN0cmluZyBmb3IgdGhlIFN0cmVhbV9TaXplIEFkYTIwMDUKCWF0dHJpYnV0ZSBpbXBsZW1lbnRhdGlvbi4KCgkqIGV4cF9hdHRyLmFkYiAoRXhwYW5kX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBEbyBub3QgYXBwbHkgdmFsaWRpdHkKCWNoZWNrcyB0byBlbnRpdGllcyB0aGF0IGFyZSBvdXRwdXQgcGFyYW1ldGVycyBvZiBBc20gb3BlcmF0aW9ucy4KCUhhbmRsZSB0aGUgU3RyZWFtX1NpemUgYXR0cmlidXRlLgoJQWRkIGltcGxlbWVudGF0aW9uIG9mIFdpZGVfV2lkZV9WYWx1ZSwgV2lkZV9XaWRlX0ltYWdlLCBXaWRlX1dpZGVfV2lkdGgKCgkqIGV4cF9pbWd2LmFkcywgZXhwX2ltZ3YuYWRiOiBBZGQgc3VwcG9ydCBmb3Igd2lkZSB3aWRlIGNoYXJhY3RlciB0eXBlCgoJKiBzZW1fYXR0ci5hZGIgKEV2YWxfQXR0cmlidXRlKTogUmFpc2UgY29tcGlsZS10aW1lIGNvbnN0cmFpbnQgZXJyb3IKCWZvciBzZWNvbmQgcGFyYW1ldGVyIGJlaW5nIDAuMC4KCUFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUuCgkoQW5hbHl6ZV9BdHRyaWJ1dGUsIEV2YWxfQXR0cmlidXRlKTogSGFuZGxlIHRoZSBTdHJlYW1fU2l6ZSBhdHRyaWJ1dGUuCgoJKiBzLXZhbHdjaC5hZGIsIHMtdmFsd2NoLmFkcywgcy1pbWd3Y2guYWRzLCBzLWltZ3djaC5hZGIsCglzLXdjaHN0dy5hZHMsIHMtd2Noc3R3LmFkYiwgcy13Y2h3dHMuYWRiLCBzLXdjaHd0cy5hZHMsCglzLXdpZHdjaC5hZGIsIHMtd2lkd2NoLmFkcywgcy13d2RjaGEuYWRiLCBzLXd3ZGNoYS5hZHMsCglzLXd3ZGVudS5hZGIsIHMtd3dkZW51LmFkcywgcy13d2R3Y2guYWRiLCBzLXd3ZHdjaC5hZHM6IEFkZCBzdXBwb3J0Cglmb3Igd2lkZSB3aWRlIGNoYXJhY3RlciBjYXNlcy4KCgkqIGNzdGFuZC5hZGI6IENyZWF0ZSBlbnRpdGllcyBmb3IgV2lkZV9XaWRlX0NoYXJhY3RlciBhbmQKCVdpZGVfV2lkZV9TdHJpbmcuCgoJKiBpLWMuYWRzLCBpLWMuYWRiOiBGaXggbm90IHJhaXNpbmcgQ0UgZm9yIG51bGwgd2lkZSBzdHJpbmdzIGluCglhY2NvcmRhbmNlIHdpdGggQUktMjU4LgoJQWRkIG5ldyBkZWNsYXJhdGlvbnMgZm9yIDE2LzMyIGJpdCBDIGNoYXJhY3RlciB0eXBlcyAoUGFydCBvZiBBSTI4NSkKCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiIChJc19PYnNvbGVzY2VudCwgSXNfQWRhXzIwMDUpOiBOZXcgZmxhZwoJKE9ic29sZXNjZW50X1dhcm5pbmcpOiBOZXcgZmllbGQKCShSZXBfQ2xhdXNlKTogTmV3IGxvY2FsIHN1YnByb2dyYW0gdXNlZCB0byBzaGFyZSBjb2RlLiBSZXR1cm5zIHRoZSByZXAKCWNsYXVzZSBmb3Igd2hpY2ggdGhlIG5hbWUgaXMgZ2l2ZW4gaW4gcGFyYW1ldGVyLgoJKEhhc19TdHJlYW1fU2l6ZV9DbGF1c2UpOiBOZXcgcm91dGluZS4KCShTdHJlYW1fU2l6ZV9DbGF1c2UpOiBJZGVtLiBJbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBSZXBfQ2xhdXNlLgoJKEFkZHJlc3NfQ2xhdXNlKTogSW1wbGVtZW50YXRpb24gaXMgbm93IHVzaW5nIFJlcF9DbGF1c2UuCgkoQWxpZ25tZW50X0NsYXVzZSk6IElkZW0uCgkoU2l6ZV9DbGF1c2UpOiBJZGVtLgoKCSogbGliLXhyZWYuYWRiIChHZW5lcmF0ZV9SZWZlcmVuY2UpOiBUZXN0IGZvciByZWZlcmVuY2UgdG8gQWRhIDIwMDUKCWVudGl0eSBpbiBub24tQWRhIDIwMDUgbW9kZSBhbmQgZ2VuZXJhdGUgd2FybmluZy4KCgkqIHBhci1wcmFnLmFkYjogQWRkIGhhbmRsaW5nIG9mIG9uZSBhcmd1bWVudCBmb3JtIGZvciBwcmFnbWEgQWRhXzA1LgoJKFByYWcpOiBDb2RlIGNsZWFudXAuIFJlbW92ZSBvbGQgZ25hdCBwcmFnbWEgIm92ZXJyaWRpbmciCgoJKiBzZW1fcHJhZy5hZGI6IEFkZCBoYW5kbGluZyBvZiBvbmUgYXJndW1lbnQgZm9ybSBmb3IgcHJhZ21hIEFkYV8wNQoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIEVsYWJvcmF0ZSwgRWxhYm9yYXRlX0FsbCk6IERvIG5vdCBkaXNhYmxlIHdhcm5pbmdzCglvbiB0aGUgbmFtZWQgdW5pdCBpZiB0aGUgcHJhZ21hIGlzIG5vdCBpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LAoJc28gdGhhdCBlbGFib3JhdGlvbiBjYWxscyBpbiB0aGUgY3VycmVudCB1bml0IGNhbiBzZXQgdXAgYW4gZWxhYm9yYXRpb24KCWRlcGVuZGVuY3kgb24gdGhlIG5hbWVkIHVuaXQsIGFzIG5lZWRlZC4KCShBbmFseXplX1ByYWdtYSwgY2FzZSBPYnNvbGVzY2VudCk6IEFsbG93IHByYWdtYSB0byBiZSB1c2VkIGZvciBsaWJyYXJ5CglzdWJwcm9ncmFtIGFzIHdlbGwgYXMgZm9yIHN1YnByb2dyYW1zIGRlY2xhcmVkIHdpdGhpbiBhIHBhY2thZ2UuCgkoQW5hbHl6ZV9QcmFnbWEsIFNpZ19GbGFncyk6IENvZGUgY2xlYW51cC4gUmVtb3ZlIHN1cHBvcnQgZm9yIHRoZSBHTkFUCglwcmFnbWEgb3ZlcnJpZGluZy4KCgkqIGtydW5jaC5hZHMsIGtydW5jaC5hZGI6IEFkZCBzcGVjaWFsIGhhbmRsaW5nIG9mIFdpZGVfV2lkZSAoa3J1bmNoZWQKCXRvIHopIHRvIGF2b2lkIHNvbWUgaW5zdGFuY2VzIG9mIGR1cGxpY2F0aW9uIGZvciBXaWRlX1dpZGUgcGFja2FnZXMuCgoJKiBuYW1ldC5hZHMsIG5hbWV0LmFkYjogSW1wbGVtZW50IGVuY29kaW5nIChXV2hoaGhoaGhoKSBmb3Igd2lkZSB3aWRlCgljaGFyYWN0ZXJzLgoKCSogc2NuLmFkYjogQ2hhcl9MaXRlcmFsX1ZhbHVlIGZpZWxkIGlzIG5vdyBhIFVpbnQKCgkqIHNjbmcuYWRiOiBTaWduaWZpY2FudCByZXdyaXRlIHRvIGhhbmRsZSBuZXcgQWRhIDIwMDUgZmVhdHVyZXMKCWFsbG93aW5nIHdpZGUgYW5kIHdpZGUgd2lkZSBjaGFyYWN0ZXJzIGluIHByb2dyYW0gdGV4dCwgZS5nLiBmb3IKCWlkZW50aWZpZXJzLCBhcyBkZXNjcmliZWQgaW4gQUktMjg1LgoJKFNldF9SZXNlcnZlZCk6IE5ldyBwcm9jZWR1cmUsIG1ha2VzIHNldHRpbmcgdXAga2V5d29yZHMgY2xlYW5lci4KCShJbml0aWFsaXplX1NjYW5uZXIpOiBSZWdpc3RlciB0aGUgbmV3IHJlc2VydmVkIHdvcmRzIG9mIEFkYSAyMDA1LgoJKFNjYW4pOiBHaXZlIHN1cHBvcnQgdG8gdGhlIG5ldyByZXNlcnZlZCB3b3Jkcy4KCgkqIHBhci1jaDIuYWRiIChQX0lkZW50aWZpZXIpOiBDb21waWxpbmcgaW4gQWRhOTUgbW9kZSwgZ2VuZXJhdGUgYQoJd2FybmluZyBub3RpZnlpbmcgdGhhdCBpbnRlcmZhY2UsIG92ZXJyaWRpbmcsIGFuZCBzeW5jaHJvbml6ZWQgYXJlCgluZXcgcmVzZXJ2ZWQgd29yZHMuCgkoUF9QcmFnbWEpOiBBbGxvdyB0aGUgdXNlIG9mIHRoZSBuZXcgcmVzZXJ2ZWQgd29yZCAiaW50ZXJmYWNlIiBhcwoJYSBwcmFnbWEgbmFtZS4KCgkqIGduYXRscy5hZGIsIGduYXRiaW5kLmFkYiwKCWFsaS11dGlsLmFkYiwgYmluZGUuYWRiLCBhbGkuYWRzLCBhbGkuYWRiOiBDb2RlIGNsZWFudXAuIFJlbmFtZQoJaWRlbnRpZmllcnMgbmFtZWQgImludGVyZmFjZSIgdG8gIlNBTF9JbnRlcmZhY2UiLgoKCSogYmluZGdlbi5hZGIgKEdlbl9NYWluX0FkYSk6IEFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IFNFSAoJKFN0cnVjdHVyZWQgRXhjZXB0aW9uIGhhbmRsaW5nKS4KCShHZW5fTWFpbl9DKTogSWRlbS4KCgkqIGJpbmRnZW4uYWRiOgoJKEdlbl9NYWluX0FkYSk6IFNldCB0aGUgZGVmYXVsdCBleGl0IGNvZGUgaWYgc3BlY2lmaWVkLgoJKEdlbl9NYWluX0MpOiBMaWtld2lzZS4KCVBhcnQgb2YgKkRDMjAtMDA2LgoJKEdlbl9PdXRwdXRfRmlsZV9DKTogUmVtb3ZlIHJlZHVuZGFudCBvdXRwdXQgb2YgZ25hdF9leGl0X3N0YXR1cy4KCUNvZGUgY2xlYW51cC4gUmVuYW1lIGlkZW50aWZpZXJzIG5hbWVkICJpbnRlcmZhY2UiIHRvICJTQUxfSW50ZXJmYWNlIgoKCSogc3dpdGNoLWIuYWRiLCBiaW5kdXNnLmFkYiwgb3B0LmFkcywgdm1zX2RhdGEuYWRzOiBBZGQgaGFuZGxpbmcgb2YKCW5ldyAtWG5ubiBzd2l0Y2guCgoJKiBtbGliLXByai5hZGIsIG1saWIuYWRiOiBDb2RlIGNsZWFudXAuIFJlbmFtZSBvbmUgaWRlbnRpZmllciB0aGF0CgloYXMgYSBjb2xsaXNpb24gd2l0aCB0aGUgbmV3IEFkYSAyMDA1ICJpbnRlcmZhY2UiIHJlc2VydmVkIHdvcmQuCgoJKiBwYXItY2gzLmFkYiAoUF9EZWZpbmluZ19JZGVudGlmaWVyKTogQ29tcGlsaW5nIGluIEFkYTk1IG1vZGUsCglnZW5lcmF0ZSBhIHdhcm5pbmcgbm90aWZ5aW5nIHRoYXQgaW50ZXJmYWNlLCBvdmVycmlkaW5nLCBhbmQKCXN5bmNocm9uaXplZCBhcmUgbmV3IHJlc2VydmVkIHdvcmRzLgoKCSogc2NhbnMuYWRzIChUb2tlbl9UeXBlKTogQWRkaXRpb24gb2YgdGhlIHRva2VucyBjb3JyZXNwb25kaW5nIHRvIHRoZQoJbmV3IHJlc2VydmVkIHdvcmRzIG9mIEFkYSAyMDA1OiBUb2tfSW50ZXJmYWNlLCBUb2tfT3ZlcnJpZGluZwoJYW5kIFRva19TeW5jaHJvbml6ZWQuCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9BY3R1YWxzKTogQ2hhbmdlIGVycm9yIG1lc3NhZ2VzIHRvIHJlZmVyIHRvCgkiZGlzcGF0Y2hpbmciIHJhdGhlciB0aGFuICJwcmltaXRpdmUiIG9wZXJhdGlvbnMsIHNpbmNlIGRpc3BhdGNoaW5nCgljYWxscyBhcmUgbm93IGFsbG93ZWQgdG8gYWJzdHJhY3QgZm9ybWFsIHN1YnByb2dyYW1zICh3aGljaCBhcmUgbm90CglwcmltaXRpdmUpLgoJQ2hhcl9MaXRlcmFsX1ZhbHVlIGZpZWxkIGlzIG5vdyBhIFVpbnQKCShSZXNvbHZlX1NsaWNlKTogSWYgdGhlIHByZWZpeCBpcyBhbiBhY2Nlc3MgdG8gYW4gdW5jb25zdHJhaW5lZCBhcnJheSwKCWNvbXB1dGUgdGhlIGFjdHVhbCBzdWJ0eXBlIG9mIHRoZSBkZXNpZ25hdGVkIG9iamVjdCB0byBpbXBvc2UgdGhlIHByb3BlcgoJaW5kZXggY29uc3RyYWludHMuCgkoUmVzb2x2ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBEbyBub3QgaW5zZXJ0IGFuIGFjY2VzcyBjaGVjayBpZiB0aGUKCXByZWZpeCBpcyBhbiBhY2Nlc3MgdHlwZTogc3VjaCBhIG5vZGUgaXMgZXhwYW5kZWQgaW50byBhbiBleHBsaWNpdAoJZGVyZWZlcmVuY2UsIG9uIHdoaWNoIHRoZSBhY2Nlc3MgY2hlY2sgaXMgcGVyZm9ybWVkIGFueXdheS4gUmVtb3ZlcwoJZXhwZW5zaXZlIGR1cGxpY2F0ZSBjaGVja3MuCgkoUmVzb2x2ZV9DYWxsKTogVXNlIG5ldyBmbGFnIElzX09ic29sZXNjZW50IGFuZCBmaWVsZAoJT2Jzb2xlc2NlbnRfV2FybmluZyBzbyB0aGF0IHByYWdtYSBPYnNvbGVzY2VudCB3b3JrcyBvbiBsaWJyYXJ5CglzdWJwcm9ncmFtcy4KCUFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUKCShSZXNvbHZlX0FsbG9jYXRvcik6IFJlcGxhY2UgdGhlIGVycm9yIG1lc3NhZ2Ugb24gd3JvbmcgbnVsbC1leGNsdXNpb24KCXZhbHVlIGJ5IGEgd2FybmluZyBtZXNzYWdlLgoJKFJlc29sdmVfVHlwZV9Db252ZXJzaW9uKTogSWYgdGhlIG1peGVkLW1vZGUgZXhwcmVzc2lvbiBpcyBpbnRlcnByZXRlZAoJYXMgZml4ZWQtcG9pbnQsIGFuZCBvbmUgb2YgdGhlIG9wZXJhbmRzIGlzIG5vbi1zdGF0aWMgYW5kIHVuaXZlcnNhbCwgaXQKCWNhbiBvbmx5IGJlIGFuIGlsbGVnYWwgZXhwb25lbnRpYXRpb24gb3BlcmF0aW9uLCBpbiB3aGljaCBjYXNlIHRoZXJlIGlzCglubyByZWFsIHZhbHVlIHRvIHJldHJpZXZlLgoKCSogZXhwX3N0cm0uYWRiOiBBZGQgc3VwcG9ydCBmb3Igd2lkZSB3aWRlIGNoYXJhY3RlciB0eXBlCgkoQnVpbGRfRWxlbWVudGFyeV9JbnB1dF9DYWxsKTogQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGVsZW1lbnQgYnkKCXF1ZXJ5aW5nIHRoZSByZXAgY2hhaW4gdG8gZmluZCB0aGUgU3RyZWFtX0F0dHJpYnV0ZSBhdHRyaWJ1dGUgdmFsdWUuCgkoQnVpbGRfRWxlbWVudGFyeV9Xcml0ZV9DYWxsKTogRGl0dG8uCgoJKiBzZW1fYWdnci5hZGI6IENoYXJfTGl0ZXJhbF9WYWx1ZSBmaWVsZCBpcyBub3cgYSBVaW50CglBZGQgc3VwcG9ydCBmb3Igd2lkZSB3aWRlIGNoYXJhY3RlciB0eXBlCglSZXBsYWNlIHRoZSBlcnJvciBtZXNzYWdlcyBvbiB3cm9uZyBudWxsLWV4Y2x1c2lvbiB2YWx1ZSBieSB3YXJuaW5ncwoJYXMgZGVzY3JpYmVkIGluIEFkYSAyMDA1LgoJKFJlc29sdmVfRXh0ZW5zaW9uX0FnZ3JlZ2F0ZSk6IERvY3VtZW50IHRoZSBmYWN0IHRoYXQgdGhlIGVycm9yCgltZXNzYWdlIG9uIGNsYXNzLXdpZGUgZXhwcmVzc2lvbnMgaW4gZXh0ZW5zaW9ucyBhZ2dyZWdhdGVzLgoKCSogc2VtX2Nhc2UuYWRiOiBBZGQgc3VwcG9ydCBmb3Igd2lkZSB3aWRlIGNoYXJhY3RlciB0eXBlCgoJKiBzZW1fY2gxMy5hZGI6IEFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUKCShBbmFseXplX0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZSk6IEhhbmRsZSB0aGUgU3RyZWFtX1NpemUgYXR0cmlidXRlLgoKCSogc2VtX2NoMy5hZGI6IEFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUKCShQcm9jZXNzX1N1YnR5cGUpOiBJZiBjb25zdHJhaW50IGlzIGlsbGVnYWwgZm9yIHRoZSB0eXBlLCBzZXQgRWtpbmQgb2YKCW5vdy11c2VsZXNzIEl0eXBlLCB0byBwcmV2ZW50IGNhc2NhZGVkIGVycm9ycyBvbiBhIGNvbXBpbGVyIGJ1aWx0Cgl3aXRob3V0IC1nbmF0cC4KCgkqIHNlbV9jaDguYWRiOiBBZGQgd2l0aCBhbmQgdXNlIG9mIFNlbV9EaXNwLgoJKEFuYWx5emVfU3VicHJvZ3JhbV9SZW5hbWluZyk6IFJlcGxhY2UgdW5jbGVhbiB1c2VzIG9mCglDb3JyZXNwb25kaW5nX1NwZWMgd2l0aCBDb3JyZXNwb25kaW5nX0Zvcm1hbF9TcGVjIChhbmQgZGVsZXRlIHNldHRpbmcKCW9mIENvcnJlc3BvbmRpbmdfU3BlYyB0byBFbXB0eSkuCgkoQXR0cmlidXRlX1JlbmFtaW5nKTogUmVwbGFjZSB1c2Ugb2YgQ29ycmVzcG9uZGluZ19TcGVjIHdpdGgKCUNvcnJlc3BvbmRpbmdfIEZvcm1hbF9TcGVjIGFuZCBzaW1wbGlmeSBjb25kaXRpb24uCgkoVXNlX09uZV9QYWNrYWdlKTogQ2hlY2sgdGhhdCBzY29wZSBvZiBob21vbnltIG9mIGlkZW50aWZpZXIgaXMgZGVmaW5lZCwKCWJlZm9yZSBjaGVja2luZyB3aGV0aGVyIGl0IGlzIGEgd3JhcHBlciBwYWNrYWdlLgoJQWRkIHN1cHBvcnQgZm9yIHdpZGUgd2lkZSBjaGFyYWN0ZXIgdHlwZQoKCSogc2VtX2V2YWwuYWRiOiBBZGQgc3VwcG9ydCBmb3Igd2lkZSB3aWRlIGNoYXJhY3RlciB0eXBlLgoJKEV2YWxfQXJpdGhtZXRpY19PcCk6IENoZWNrIGZvciBjb21waWxlIHRpbWUga25vd24gc2lnbmVkIGludGVnZXIKCW92ZXJmbG93IGluIHRoZSBub24tc3RhdGljIGNhc2UuCgkoU3VidHlwZXNfU3RhdGljYWxseV9NYXRjaCk6IEEgZm9ybWFsIHNjYWxhciB0eXBlIGFuZCBpdHMgYmFzZSB0eXBlIGRvCglub3Qgc3RhdGljYWxseSBtYXRjaC4KCgkqIHNlbV91dGlsLmFkYiAoQ29sbGVjdF9QcmltaXRpdmVfT3BlcmF0aW9ucyk6IE1pbm9yIGNoYW5nZSBvZiAiLz0iIHRvCgkibm90IGluIiBmb3IgdGVzdCBvZiBOX0Zvcm1hbF9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uICh3aGljaCBpcyBub3cgYQoJc3VidHlwZSkuCgkoVW5pdF9EZWNsYXJhdGlvbl9Ob2RlKTogRGl0dG8uCgkoSXNfVmFyaWFibGVfUHJlZml4KTogIEZvciB0aGUgY2FzZSBvZiBhbiBpbmRleGVkIGNvbXBvbmVudCB3aG9zZSBwcmVmaXgKCWhhcyBhIHBhY2tlZCBhcnJheSB0eXBlLCB0aGUgcHJlZml4IGhhcyBiZWVuIHJld3JpdHRlbiBpbnRvIGEgdHlwZQoJY29udmVyc2lvbi4gRGV0ZXJtaW5lIHZhcmlhYmxlLW5lc3MgZnJvbSB0aGUgY29udmVydGVkIGV4cHJlc3Npb24uCglIYW5kbGUgd2lkZSB3aWRlIGNoYXJhY3RlciBjYXNlcy4KCgkqIHN0YW5kLmFkczogQWRkIHR5cGVzIFdpZGVfV2lkZV9DaGFyYWN0ZXIgYW5kIFdpZGVfV2lkZV9TdHJpbmcKCgkqIHN0cmluZ3QuYWRzLCBzdHJpbmd0LmFkYjogSGFuZGxlIGZ1bGwgVVRGLTMyIHJhbmdlLgoJUmVtb3ZlIFsiMEEiXSBmcm9tIGNvbW1lbnQsIHNpbmNlIGl0IGNhbiBsb29rIGxpa2UgYSBsaW5lIHRlcm1pbmF0b3IuCglDdXJyZW50bHkgd2UgZG9uJ3QgcGVybWl0IHRoaXMsIGJ1dCB0aGlzIGlzIHVuZGVyIGRpc2N1c3Npb24gYnkgdGhlCglBUkcsIGFuZCBpdCBpcyBlYXN5IGVub3VnaCB0byB1c2UgYSBkaWZmZXJlbnQgZXhhbXBsZS4KCgkqIHMtd2NoY29uLmFkcywgcy13Y2hjbnYuYWRzLCBzLXdjaGNudi5hZGI6IEFkZCBuZXcgc3VicHJvZ3JhbXMgZm9yCgloYW5kbGluZyBVVEYtMzIgZW5jb2RpbmcgZm9yIHdpZGUgd2lkZSBjaGFyYWN0ZXIuCglJbXBsZW1lbnQgbmV3IGJyYWNrZXRzIGNvZGluZyBbImhoaGhoaGhoIl0KCUFkZCBVVEYtOCBlbmNvZGluZ3MgZm9yIGZ1bGwgVVRGLTMyIHJhbmdlCgoJKiB0dHlwZXMuYWRzOiBBZGQgZGVmaW5pdGlvbiBvZiBTdGFuZGFyZF9XaWRlX1dpZGVfQ2hhcmFjdGVyX1NpemUKCgkqIHR5cGVzLmgsIHR5cGVzLmFkcywgdHlwZXMuYWRiOiBXaWRlX1dpZGVfQ2hhcmFjdGVyIG5vdyBoYXMgZnVsbCAzMQoJYml0IHJhbmdlIEFkZCBmdWxsIFVURi0zMiBzdXBwb3J0LgoJKFJUX0V4Y2VwdGlvbl9Db2RlKTogQWRkaXRpb24gb2YgQ0VfTnVsbF9Ob3RfQWxsb3dlZDsgdXNlZCB0bwoJbm90aWZ5IHRoYXQgY29uc3RyYWludCBlcnJvciB3aWxsIGJlIHJhaXNlZCBhdCBydW4tdGltZQoJYmVjYXVzZSBhIG51bGwgdmFsdWUgaXMgYXNzaWduZWQgdG8gYSBudWxsLWV4Y2x1ZGluZyBvYmplY3QuCglSZW1vdmUgc29tZSBvYnNvbGV0ZSBkZWNsYXJhdGlvbnMgYW5kIG1ha2UgQ2hhcl9Db2RlCgl1bnNpZ25lZC4KCgkqIGEtZXhjZXB0LmFkYiAoUmNoZWNrXzMwKTogTmV3IHN1YnByb2dyYW0uIEFkZGl0aW9uIG9mIHRoZSBtZXNzYWdlCgljb3JyZXNwb25kaW5nIHRvIENFX051bGxfTm90X0FsbG93ZWQsIGFuZCBhZGp1c3QgdGhlIG91dHB1dCBvZiBhbGwgdGhlCglSY2hlY2sgc3VicHJvZ3JhbXMuCgoJKiBjaGVja3MuYWRiIChDaGVja19OdWxsX05vdF9BbGxvd2VkKTogUmVwbGFjZSB0aGUgZXJyb3IgbWVzc2FnZSBvbgoJd3JvbmcgbnVsbC1leGNsdXNpb24gdmFsdWUgYnkgYSB3YXJuaW5nIG1lc3NhZ2UuCgkoRW5hYmxlX1JhbmdlX0NoZWNrKTogRG8gcmFuZ2UgY2hlY2sgaWYgdGhlIHByZWZpeCBpcyBhbgoJZXhwbGljaXQgZGVyZWZlcmVuY2Ugd2hvc2UgZGVzaWduYXRlZCBvYmplY3QgaXMgYW4gdW5jb25zdHJhaW5lZCBhcnJheS4KCUN1cnJlbnQgYWxnb3JpdGhtIGZvciByZW1vdmluZyBkdXBsaWNhdGUgY2hlY2tzIGlzIG92ZXItZWFnZXIgaW4gdGhpcwoJY2FzZS4KCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0Fzc2lnbm1lbnQpOiBSZXBsYWNlIHRoZSBlcnJvciBtZXNzYWdlcyBvbiB3cm9uZwoJbnVsbC1leGNsdXNpb24gdmFsdWUgYnkgYSB3YXJuaW5nIG1lc3NhZ2UKCgkqIGF0cmVlLmgsIGF0cmVlLmFkcywgYXRyZWUuYWRiOiBSZW1vdmUgQ2hhcl9Db2RlIGZpZWxkIHN1cHBvcnQKCWNvbXBsZXRlbHkuIEFkZCBzdXBwb3J0IGZvciBVaW50MiBmaWVsZAoKCXNlbV9jaDIuYWRiLCBleHBfY2gxMS5hZGIsIGV4cF9kYnVnLmFkYiwKCWV4cF9wcmFnLmFkYjogQ2hhcl9MaXRlcmFsX1ZhbHVlIGZpZWxkIGlzIG5vdyBhIFVpbnQuCgoJKiBleHBfdXRpbC5hZGIgKEluc2VydF9BY3Rpb25zKTogUmVwbGFjZQoJTl9Gb3JtYWxfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbiBieQoJTl9Gb3JtYWxfe0Fic3RyYWN0fENvbmNyZXRlfV9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uLgoJQ2hhcl9MaXRlcmFsX1ZhbHVlIGZpZWxkIGlzIG5vdyBhIFVpbnQuCgoJKiBzaW5mby5hZHMsIHNpbmZvLmFkYiAoQ29ycmVzcG9uZGluZ19Gb3JtYWxfU3BlYyk6IE5ldyBmdW5jdGlvbgoJZGVmaW5lZCBmb3Igc3VicHJvZ3JhbSByZW5hbWluZyBkZWNsYXJhdGlvbnMuIFdoZW4gc2V0LCB0aGUgZmllbGQKCWluZGljYXRlcyB0aGUgZGVmaW5pbmcgZW50aXR5IG9mIGEgY29ycmVzcG9uZGluZyBmb3JtYWwgc3VicHJvZ3JhbQoJd2hlbiB0aGUgcmVuYW1pbmcgY29ycmVzcG9uZHMgdG8gYSBmb3JtYWwgc3VicHJvZ3JhbSBhc3NvY2lhdGlvbiBpbiBhbgoJaW5zdGFudGlhdGlvbi4KCShTZXRfQ29ycmVzcG9uZGluZ19Gb3JtYWxfU3BlYyk6IE5ldyBwcm9jZWR1cmUgdG8gcmV0dXJuCglDb3JyZXNwb25kaW5nX0Zvcm1hbF9TcGVjIGZpZWxkLgoJTWlub3IgY2hhbmdlcyBvZiAiPSIgdG8gImluIiBpbiB0ZXN0cyBvZiBOX0Zvcm1hbF9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uCgkod2hpY2ggaXMgbm93IGEgc3VidHlwZSkuCglDaGFyX0xpdGVyYWxfVmFsdWUgZmllbGQgaXMgbm93IGEgVWludAoKCSogZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGIgKE1ha2VfRFQpOiBHZW5lcmF0ZSBjb2RlIHRoYXQgbW92ZXMgdGhlCglwb2ludGVyIHRvIHRoZSBiYXNlIG9mIHRoZSBkaXNwYXRjaCB0YWJsZS4KCU1pbm9yIGNoYW5nZXMgdG8gY29tbWVudHMuCgkoQ29udHJvbGxpbmdfVHlwZSk6IE5ldyBmdW5jdGlvbiBmb3IgZGV0ZXJtaW5pbmcgdGhlIHRhZ2dlZCB0eXBlCglhc3NvY2lhdGVkIHdpdGggYSB0YWdnZWQgcHJpbWl0aXZlIHN1YnByb2dyYW0uCgkoRXhwYW5kX0Rpc3BhdGNoaW5nX0NhbGwpOiBBZGQgc3VwcG9ydCBmb3IgYSBjb250cm9sbGluZyBhY3R1YWwgdGhhdCBpcwoJZGlyZWN0bHkgYSB2YWx1ZSBvZiB0eXBlIEFkYS5UYWcgcmF0aGVyIHRoYW4gYSB0YWdnZWQgb2JqZWN0LgoKCSogaS1jcHAuYWRzLCBpLWNwcC5hZGIsIGEtdGFncy5hZHMsIGEtdGFncy5hZGI6IFVwZGF0ZSBkb2N1bWVudGF0aW9uCglkZXNjcmliaW5nIHRoZSBuZXcgbGF5b3V0LgoJKERpc3BhdGNoX1RhYmxlKTogVGhlIGV4cGFuZGVyIGNvbXB1dGVzIHRoZSBhY3R1YWwgYXJyYXkgc2l6ZSwgYWxsb2NhdGVzCgl0aGUgRGlzcGF0Y2hfVGFibGUgcmVjb3JkIGFjY29yZGluZ2x5LCBhbmQgZ2VuZXJhdGVzIGNvZGUgdGhhdCBkaXNwbGFjZXMKCXRoZSBiYXNlIG9mIHRoZSByZWNvcmQgYWZ0ZXIgdGhlIFR5cGVpbmZvX1B0ciBjb21wb25lbnQuIFRoZSBhY2Nlc3MgdG8KCXRoZXNlIGNvbXBvbmVudHMgaXMgZG9uZSBieSBtZWFucyBvZiBsb2NhbCBmdW5jdGlvbnMuCgkoT2Zmc2V0X1RvX1RvcCk6IE5ldyBmdW5jdGlvbi4KCShUeXBlaW5mb19QdHIpOiBOZXcgZnVuY3Rpb24uCgkoR2V0X1RTRCk6IE1vZGlmaWVkIHRvIGFjY2VzcyB0aGUgbmV3IHBvc2l0aW9uIG9mIHRoZSBUU0QuCgkoU2V0X1RTRCk6IE1vZGlmaWVkIHRvIHNhdmUgdGhlIFRTRCBpbiBpdHMgbmV3IHBvc2l0aW9uLgoKCSogcGFyLWNoMTIuYWRiIChQX0Zvcm1hbF9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogQWRkIHBhcnNpbmcgZm9yIHRoZQoJY2FzZSBvZiBmb3JtYWwgYWJzdHJhY3Qgc3VicHJvZ3JhbXMuIEFkZCBjaGVjayBhbmQgbWVzc2FnZSBmb3IgLWduYXQwNS4KCVVwZGF0ZSBjb21tZW50cy4KCgkqIHNlbV9jaDEyLmFkYjogQWRkIHdpdGggYW5kIHVzZSBmb3IgU2VtX0Rpc3AuCgkoQW5hbHl6ZV9Bc3NvY2lhdGlvbnMpOiBNaW5vciBjaGFuZ2UgZnJvbSAiPSIgdG8gImluIiBmb3IgdXNlIG9mCglOX0Zvcm1hbF9TdWJ0eXBlX0RlY2xhcmF0aW9uICh3aGljaCBpcyBub3cgYSBzdWJ0eXBlKS4KCShTZXRfQW5hbHl6ZWRfRm9ybWFsKTogTWlub3IgY2hhbmdlcyBmcm9tICI9IiB0byAiaW4iIGZvciB1c2VzIG9mCglOX0Zvcm1hbF9TdWJ0eXBlX0RlY2xhcmF0aW9uICh3aGljaCBpcyBub3cgYSBzdWJ0eXBlKS4KCShBbmFseXplX0Zvcm1hbF9TdWJwcm9ncmFtKTogQWRkIGhhbmRsaW5nIGZvcgoJTl9Gb3JtYWxfQWJzdHJhY3RfU3VicHJvZ3JhbSwgbWFya2luZyB0aGUgZm9ybWFsIGFzIGFic3RyYWN0IGFuZAoJZGlzcGF0Y2hpbmcsIHNldHRpbmcgdGhlIGNvbnRyb2xsaW5nIHN0YXR1cyBvZiB0aGUgZm9ybWFsIHBhcmFtZXRlcnMKCWFuZCByZXN1bHQsIGFuZCBpc3N1aW5nIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIGNvbnRyb2xsaW5nIHR5cGUgZm9yCgl0aGUgZm9ybWFsIHN1YnByb2dyYW0uCgkoSW5zdGFudGlhdGVfRm9ybWFsX1N1YnByb2dyYW0pOiBSYXRoZXIgdGhhbiBzZXR0aW5nIENvcnJlc3BvbmRpbmdfU3BlYywKCXdoaWNoIGlzIGFuIHVuY2xlYW4gdXNlIG9mIHRoYXQgZmllbGQsIHdlIHNldCB0aGUgbmV3IGZpZWxkCglDb3JyZXNwb25kaW5nX0Zvcm1hbF9TcGVjIHRvIG1ha2UgdGhlIGZvcm1hbCBzdWJwcm9ncmFtIGF2YWlsYWJsZSB0bwoJcHJvY2Vzc2luZyBpbiBBbmFseXplX1N1YnByb2dyYW1fRGVjbGFyYXRpb24uCgkoQW5hbHl6ZV9Gb3JtYWxfe0Rpc2NyZXRlLCBEZWNpbWFsX0ZpeGVkX1BvaW50LCBGaXhlZF9Qb2ludCwKCUZsb2F0aW5nX1BvaW50LCBNb2R1bGFyX0ludGVnZXIsIFNpZ25lZF9JbnRlZ2VyfV9UeXBlOiBNYWtlIGZvcm1hbCB0eXBlCglDb25zdHJhaW5lZCwgc28gdGhhdCBpdCBpcyBpcyBkb2VzIG5vdCBzdGF0aWNhbGx5IG1hdGNoIGl0cyBhbm9ueW1vdXMKCWJhc2UgdHlwZS4KCgkqIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnByb2dyYW1fU3BlY2lmaWNhdGlvbik6IEluY2x1ZGUgdGVzdCBmb3IKCWFic3RyYWN0IGZvcm1hbCBzdWJwcm9ncmFtcyBpbiBlcnJvciBjaGVjayBmb3IgZnVuY3Rpb25zIHJldHVybmluZwoJYWJzdHJhY3QgdHlwZXMuIFNldCBzY29wZSBvZiBuZXcgZGVzaWduYXRvciBmb3IKCWEgcGFyYW1ldGVybGVzcyBzdWJwcm9ncmFtLCBzbyB0aGF0IGl0IGlzIGF2YWlsYWJsZSB3aGVuIGNoZWNraW5nIHRoZQoJYm9keSBmb3IgbmVzdGVkIHN1YnByb2dyYW1zLCBiZWZvcmUgZnVsbCBhbmFseXNpcyBvZiBzYWlkIGJvZHkuCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBXYXJuIG9uIGlubGluaW5nIGJvZGllcyB3aXRoIG5lc3RlZAoJc3VicHJvZ3JhbSBvbmx5IGlmIGlubmVyIG9uZSBjb21lcyBmcm9tIHNvdXJjZS4KCShBbmFseXplX0Z1bmN0aW9uX0NhbGwpOiBJZiB0aGUgY2FsbCBpcyBnaXZlbiBpbiBvYmplY3Qgbm90YXRpb24sIHRoZQoJYW5hbHlzaXMgb2YgdGhlIG5hbWUgcmV3cml0ZXMgdGhlIG5vZGUgYW5kIGFuYWx5emVzIGl0IHdpdGggdGhlIHByb3BlcgoJYXJndW1lbnQgbGlzdC4gQWZ0ZXIgYW5hbHl6aW5nIHRoZSBuYW1lLCBpZiB0aGUgY2FsbCBoYXMgYmVlbiByZXdyaXR0ZW4KCWFuZCB0aGUgcmVzdWx0IHR5cGUgaXMgc2V0LCBubyBmdXJ0aGVyIGFuYWx5c2lzIGlzIG5lZWRlZC4KCShBbmFseXplX1JldHVybl9UeXBlKTogU3Vic2lkaWFyeSB0byBQcm9jZXNzX0Zvcm1hbHM6IGFuYWx5emUgc3VidHlwZQoJbWFyayBpbiBmdW5jdGlvbiBzcGVjaWZpY2F0aW9uLCBpbiBhIGNvbnRleHQgd2hlcmUgdGhlIGZvcm1hbHMgYXJlCgl2aXNpYmxlIGFuZCBoaWRlIG91dGVyIGhvbW9ncmFwaHMuCgoJKiBzZW1fZGlzcC5hZGIgKENoZWNrX0NvbnRyb2xsaW5nX1R5cGUpOiBSZWxheCB0aGUgY2hlY2sgZm9yIHNhbWUgc2NvcGUKCWFzIHRoZSB0YWdnZWQgdHlwZSBmb3IgdGhlIGNhc2VzIG9mIGFic3RyYWN0IGZvcm1hbCBzdWJwcm9ncmFtcyBhbmQKCXJlbmFtaW5ncyBvZiB0aG9zZS4gIENsZWFuIHVwIHNwZWMgY29tbWVudHMuCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfQ29udGV4dCk6IEFkZCBlcnJvciBtZXNzYWdlIHRvIGluZGljYXRlICJhYnN0cmFjdAoJcHJvY2VkdXJlIiwgY292ZXJpbmcgdGhlIGNhc2Ugb2YgYSBjYWxsIHRvIGEgZm9ybWFsIGFic3RyYWN0IHByb2NlZHVyZQoJdGhhdCBoYXMgc3RhdGljYWxseSB0YWdnZWQgb3BlcmFuZHMuCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfQ2FsbCk6IENoZWNrIGZvciB0aGUgY2FzZSBvZiBhbiBhY3R1YWwgZ2l2ZW4gYnkKCWEgdGFnLWluZGV0ZXJtaW5hdGUgZnVuY3Rpb24gY2FsbCB3aG9zZSB0eXBlIGlzIGFuIGFuY2VzdG9yIG9mIHRoZQoJY29udGFpbmluZyBjYWxsJ3MgYXNzb2NpYXRlZCB0YWdnZWQgdHlwZS4gVGhpcyBzaXR1YXRpb24gY2FuIG9jY3VyCglmb3IgaW5oZXJpdGVkIHByaW1pdGl2ZXMgd2l0aCBmdW5jdGlvbiBkZWZhdWx0cy4gSW4gdGhpcyBjYXNlIHdlCgl1c2UgdGhlIHRhZ2dlZCB0eXBlJ3MgdGFnIGRpcmVjdGx5IGFzIHRoZSBjb250cm9sbGluZyBhcmd1bWVudCBmb3IKCXRoZSBjYWxscy4KCShFeHBhbmRfQ2FsbCk6IE5hbWUgY2hhbmdlIG9uIGNhbGwgdG8gRXhwYW5kX0Rpc3BhdGNoX0NhbGwuCgoJKiBzcHJpbnQuYWRiIChTcHJpbnRfTm9kZV9BY3R1YWwpOiBTcGxpdAoJTl9Gb3JtYWxfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbiBpbnRvIHR3byBhbHRlcm5hdGl2ZXMgZm9yIHRoZSBuZXcKCWNhc2VzIE5fRm9ybWFsX0Fic3RyYWN0X1N1YnByb2dyYW1fRGVjbGFyYXRpb24gYW5kCglOX0Zvcm1hbF9Db25jcmV0ZV9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uLgoJQ2hhcl9MaXRlcmFsX1ZhbHVlIGZpZWxkIGlzIG5vdyBhIFVpbnQuCgoJKiB0cmFucy5jOiBHZXQgcmlkIG9mIGp1bmsgVWludDIgcmVmZXJlbmNlLgoJQ2hhcl9MaXRlcmFsX1ZhbHVlIGZpZWxkIGlzIG5vdyBhIFVpbnQuCgkoZ25hdF90b19nbnUsIGNhc2UgTl9BZ2dyZWdhdGUpOiBDaGVjayBUWVBFX1VOQ0hFQ0tFRF9VTklPTl9QLgoJKGdpZ2kpOiBDb3JyZWN0IHRoaXJkIGFyZyB0byBnaW1wbGlmeV9ib2R5LgoKCSogYWRhLXRyZWUuaDogKFRZUEVfVU5DSEVDS0VEX1VOSU9OX1ApOiBOZXcgZmxhZy4KCShUWVBFX0xBTkdfRkxBR18wKTogQ2hlY2sgZm9yIHJlY29yZCBvciB1bmlvbi4KCgkqIHRyZWVwci5hZGI6IENoYXJfTGl0ZXJhbF9WYWx1ZSBmaWVsZCBpcyBub3cgYSBVaW50CgoJKiB1aW50cC5oLCB1aW50cC5hZHMsIHVpbnRwLmFkYjogQWRkIG5ldyByb3V0aW5lcyBVSV9Ub19DQyBhbmQKCVVJX0Zyb21fQ0MuCgoJKiB3aWRlY2hhci5hZHMsIHdpZGVjaGFyLmFkYiAoSXNfVVRGXzMyX05vbl9HcmFwaGljKTogTmV3IGZ1bmN0aW9uCglBZGQgZnVsbCBVVEYtMzIgc3VwcG9ydAoJQ2hhcl9Db2RlIGlzIG5vdyAzMiBiaXRzCgoJKiBzaW5wdXQuYWRzLCBzaW5wdXQuYWRiIChTa2lwX0xpbmVfVGVybWluYXRvcnMpOiBFeHRlbmQgdG8gZGVhbCB3aXRoCgl3aWRlIGNoYXJhY3RlciBVVEZfMzIgbGluZSB0ZXJtaW5hdG9ycy4KCUluaXRpYWxpemUgTWFpbl9Tb3VyY2VfRmlsZSB0byBhdm9pZCBlcnJvciB3aGVuIG5vIG1haW4KCXNvdXJjZSBpcyBsb2FkZWQuCgoJKiBlcnJvdXQuYWRiIChGaW5hbGl6ZSk6IERvIG5vdCBjaGVjayBOdW1fU1JlZl9QcmFnbWFzCgkoTWFpbl9Tb3VyY2VfRmlsZSkgd2hlbiBubyBtYWluIHNvdXJjZSBoYXMgYmVlbiBsb2FkZWQsIHRvIGF2b2lkCglwb3RlbnRpYWwgY3Jhc2guCgoyMDA1LTAyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGEtc3RydW5iLmFkcywgYS1zdHJ1bmIuYWRiOiBBZGQgbWlzc2luZyBwcmFnbWEgQWRhXzA1IHN0YXRlbWVudHMKCUZpeCBuYW1lIG9mIFNldCByb3V0aW5lCgoJKiBhLXN0cmZpeC5hZHMsIGEtc3RyZml4LmFkYjogQWRkIG5ldyBpbmRleCBmdW5jdGlvbnMgZnJvbSBBSS0zMDEgdG8KCWZpeGVkIHBhY2thZ2VzLgoKCSogYS1zdHdpc2UuYWRzLCBhLXN0d2lzZS5hZGIsIGEtc3R3aWZpLmFkcywgYS1zdHdpZmkuYWRiLAoJYS1zdHJzZWEuYWRzLCBhLXN0cnNlYS5hZGI6IEFkZCBuZXcgaW5kZXggZnVuY3Rpb25zIGZyb20gQUktMzAxIHRvCglmaXhlZCBwYWNrYWdlcwoKCSogYS13aXRlaW8uYWRzLCBhLXdpdGVpby5hZGIsIGEtdGV4dGlvLmFkcywgYS10ZXh0aW8uYWRiOiBOZXcgZnVuY3Rpb24KCWZvcm1zIG9mIEdldF9MaW5lIHN1YnByb2dyYW1zIGZvciBBSS0zMDEuCgoJKiBhLXd0Y29hdS5hZGIsIGEtd3Rjb2F1LmFkcywgYS13dGNvaW8uYWRiLCBhLXd0Y29pby5hZHMsCglhLXd0ZWRpdC5hZGIsIGEtd3RlZGl0LmFkYiwgYS13dGVkaXQuYWRzLCBhLXd0dGVzdC5hZGIsCglhLXd0dGVzdC5hZHMsIGEtc3RybWFwLmFkcywgYS1zdHJtYXAuYWRiLCBhLXN0d2ltYS5hZGIsCglhLXN0d2ltYS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDUtMDItMDkgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5jLCBhZGFpbnQuaAoJW1ZNU10gKHRvX3B0cjMyKTogTmV3IGZ1bmN0aW9uLgoJKE1BWUJFX1RPX1BUUjMyKTogTmV3IG1hY3JvLgoJKF9fZ25hdF9wb3J0YWJsZV9zcGF3bixfX2duYXRfcG9ydGFibGVfbm9fYmxvY2tfc3Bhd24pOiBBZGp1c3QgYXJndgoJZm9yIHBvaW50ZXIgc2l6ZS4KCVtWTVNdIChkZXNjcmlwdG9yX3MsIGlsZV9zKTogVXNlIF9fY2hhcl9wdHIzMiBmb3IgYWRyIGZpZWxkLgoJW1ZNU10gKCNkZWZpbmUgZm9yaygpKTogUmVtb3ZlIHNpbmNlIHVubmVjY2Vzc2FyeS4KCShfX2duYXRfc2V0X2Nsb3NlX29uX2V4ZWMpOiBOZXcgcm91dGluZSB0byBzdXBwb3J0CglHTkFULk9TX0xpYi5TZXRfQ2xvc2VfT25fRXhlYy4KCgkqIGctZXhwZWN0LmFkYiAoU2V0X1VwX0NvbW11bmljYXRpb25zKTogTWFyayB0aGUgcGlwZSBkZXNjcmlwdG9ycyBmb3IKCXRoZSBwYXJlbnQgc2lkZSBhcyBjbG9zZS1vbi1leGVjIHNvIHRoYXQgdGhleSBhcmUgbm90IGluaGVyaXRlZCBieSB0aGUKCWNoaWxkLgoKCSogZy1vc19saWIuYWRzLCBnLW9zX2xpYi5hZGIgKFNldF9DbG9zZV9Pbl9FeGVjKTogTmV3IHN1YnByb2dyYW0gdG8KCXNldCBvciBjbGVhciB0aGUgRkRfQ0xPRVhFQyBmbGFnIG9uIGEgZmlsZSBkZXNjcmlwdG9yLgoKMjAwNS0wMi0wOSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSAgICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCVBSIGFkYS8xOTM4NgoJKiBkZWNsLmM6CgkoZ25hdF90b19nbnVfZmllbGQpOiBEbyBub3QgbmVjZXNzYXJpbHkgaW52b2tlIG1ha2VfcGFja2FibGVfdHlwZQoJb24gdGhlIGZpZWxkIGlmIFByYWdtYSBDb21wb25lbnRfQWxpZ25tZW50IChTdG9yYWdlX1VuaXQpLgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBvYmplY3QpOiBEbyBub3QgdHJlYXQgYSByZW5hbWluZyB0aGF0IGhhcwoJc2lkZS1lZmZlY3RzIGFzIGlmIGl0IHdlcmUgYSBjb25zdGFudDsgYWxzbyBtYWtlIFNBVkVfRVhQUiB0byBwcm90ZWN0CglzaWRlLWVmZmVjdHMuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfUmVjb3JkX1N1YnR5cGUpOiBJZiBoYXZlIF9QYXJlbnQsIG1ha2UgYQoJVU5JT05fVFlQRS4KCShtYWtlX2R1bW15X3R5cGUpOiBTZXQgVFlQRV9VTkNIRUNLRURfVU5JT05fUC4KCShjb21wb25lbnRzX3RvX3JlY29yZCk6IFRlc3QgaXQuCglGaXggaW1wcm9wZXIgdXNhZ2Ugb2YgUkVGRVJFTkNFX0NMQVNTX1AuCgoJKiB1dGlsczIuYyAoYnVpbGRfYmluYXJ5X29wLCBjYXNlIE1PRElGWV9FWFBSUCk6IFRyZWF0IFVOSU9OX1RZUEUgYXMKCVJFQ09SRF9UWVBFLgoKCSogdXRpbHMyLmM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIHV0aWxzLmMgKGNvbnZlcnQsIGNhc2UgVU5JT05fVFlQRSk6IENoZWNrIFRZUEVfVU5DSEVDS0VEX1VOSU9OOwoJaGFuZGxlIG90aGVyIGNhc2VzIGxpa2UgUkVDT1JEX1RZUEUuCgoJKiB1dGlscy5jIChnbmF0X3B1c2hkZWNsKTogU2V0IFRSRUVfTk9fV0FSTklORy4KCjIwMDUtMDItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoR2VuX0Fzc2lnbik6IElmIHRoZSBleHByZXNzaW9uIGlzIGFuIGFnZ3JlZ2F0ZSBmb3IgYQoJY29tcG9uZW50IG9mIGFuIGFycmF5IG9mIGFycmF5cyBpbiBhbiBhc3NpZ25tZW50IGNvbnRleHQsIGFuZCB0aGUKCWFnZ3JlZ2F0ZSBoYXMgY29tcG9uZW50IGFzc29jaWF0aW9ucyB0aGF0IHJlcXVpcmUgc2xpZGluZyBvbgoJYXNzaWdubWVudCwgZm9yY2UgcmVhbmFseXNpcyBvZiB0aGUgYWdncmVnYXRlIHRvIGdlbmVyYXRlIGEgdGVtcG9yYXJ5CgliZWZvcmUgdGhlIGFzc2lnbm1lbnQuCgkoTXVzdF9TbGlkZSk6IE1ha2UgZ2xvYmFsIHRvIHRoZSBwYWNrYWdlLCBmb3IgdXNlIGluIEdlbl9Bc3NpZ24uCgoyMDA1LTAyLTA5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX0NvbXBvc2l0ZV9FcXVhbGl0eSk6IElmIGEgY29tcG9uZW50IGlzIGFuCgl1bmNoZWNrZWQgdW5pb24gd2l0aCBubyBpbmZlcmFibGUgZGlzY3JpbWluYW50cywgcmV0dXJuIGEKCVJhaXNlX1Byb2dyYW1fRXJyb3Igbm9kZSwgcmF0aGVyIHRoYW4gaW5zZXJ0aW5nIGl0IGF0IHRoZSBwb2ludCB0aGUKCXR5cGUgaXMgZnJvemVuLgoJKEV4cGFuZF9SZWNvcmRfRXF1YWxpdHksIENvbXBvbmVudF9FcXVhbGl0eSk6IEhhbmRsZSBwcm9wZXJseSB0aGUgY2FzZQoJd2hlcmUgc29tZSBzdWJjb21wb25lbnQgaXMgYW4gdW5jaGVja2VkIHVuaW9uIHdob3NlIGdlbmVyYXRlZCBlcXVhbGl0eQoJY29kZSByYWlzZXMgcHJvZ3JhbSBlcnJvci4KCjIwMDUtMDItMDkgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBnbmF0YmwuYzogW1ZNU10gKF9QT1NJWF9FWElUKTogRGVmaW5lLgoJW1ZNU10gKCNkZWZpbmUgZXhpdCBoYWNrKTogUmVtb3ZlLgoKMjAwNS0wMi0wOSAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogaW5pdC5jIChfX2duYXRfaW5pdGlhbGl6ZSk6IEFkZCBhIG5ldyBwYXJhbWV0ZXIgZWggd2hpY2ggY29udGFpbnMgdGhlCglhZGRyZXNzIG9mIHRoZSBleGNlcHRpb24gcmVnaXN0cmF0aW9uLiBUaGUgV2luMzIgdmVyc2lvbiBvZiB0aGlzCglyb3V0aW5lIGNhbGxzIF9fZ25hdF9pbnN0YWxsX1NFSF9oYW5kbGVyKCkgdG8gaW5pdGlhbGl6ZSB0aGUgU0VICgkoU3RydWN0dXJlZCBFeGNlcHRpb24gSGFuZGxpbmcpIGhhbmRsZXIuCgkoX19nbmF0X2Vycm9yX2hhbmRsZXIpIFtXaW4zMl06IFJlbW92ZWQuIE5vdCBuZWVkZWQgYXMgd2UgdXNlCglTRUggKFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRsaW5nKSBub3cuCgkoX19nbmF0X2luc3RhbGxfaGFuZGxlcikgW1dpbjMyXTogTm90aGluZyB0byBkbyBub3cgYXMgd2UgdXNlIFNFSC4KCShfX2duYXRfaW5pdGlhbGl6ZSBmb3IgcHBjLXZ4d29ya3MpOiBBZGp1c3QgY29tbWVudHMgYW5kIHRoZQoJcHJlcHJvY2Vzc29yIGNvbmRpdGlvbiBwcm90ZWN0aW5nIHRoZSBjYWxsIHRvIHRoZSBleHRyYSBlaCBzZXR1cAoJc3VicHJvZ3JhbSwgd2hpY2ggaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBwcGMgdGFyZ2V0LgoJKF9fZ25hdF9jbGVhcl9leGNlcHRpb25fY291bnQpOiByZXBsYWNlZCByZWZlcmVuY2UgdG8KCXZhcmlhYmxlIHRhc2tJZEN1cnJlbnQgYnkgY2FsbCB0byB0YXNrSWRTZWxmKCksIGNsZWFuZXIuCgoJKiBzZWhfaW5pdC5jOiBOZXcgZmlsZS4KCgkqIE1ha2UtbGFuZy5pbjogKEdOQVRfQURBX09CSlMpOiBBZGQgc2VoX2luaXQuby4KCShHTkFUQklORF9PQkpTKTogSWRlbS4KCgkqIG1pc2MuYyAoZ25hdF9wYXJzZV9maWxlKTogVXBkYXRlIGNhbGwgdG8gX19nbmF0X2luaXRpYWxpemUuIFRoaXMKCXJvdXRpbmUgdGFrZXMgYSBuZXcgcGFyYW1ldGVyIChhIHBvaW50ZXIgdG8gdGhlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24KCWZvciB0aGUgU0VIIChTdHJ1Y3R1cmVkIEV4Y2VwdGlvbiBIYW5kbGluZykgc3VwcG9ydC4KCgkqIHJhaXNlLmg6IChfX2duYXRfaW5zdGFsbF9TRUhfaGFuZGxlcik6IE5ldyBwcm90b3R5cGUuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCgkqIHMtdGFzc3RhLmFkYiAoVGFza19XcmFwcGVyKTogRGVjbGFyZSB0aGUgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbgoJcmVjb3JkIGFuZCBpbml0aWFsaXplIGl0IGJ5IGNhbGxpbmcgX19nbmF0X2luc3RhbGxfU0VIX2hhbmRsZXIuCgoyMDA1LTAyLTA5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IERvIG5vdCBmYWlsIHdoZW4gdGhlIG1haW4gcHJvamVjdCBoYXMgbm8gb2JqZWN0CglkaXJlY3RvcnkuCgoyMDA1LTAyLTA5ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogTWFrZWZpbGUuaW4gW1ZNU10gKExOLExOX1MpOiBEZWZpbmUgYXMgY3AgLXAKCVJlbmFtZSBzLWFzdGhhbi12bXMuYWRiIHRvIHMtYXN0aGFuLXZtcy1hbHBoYS5hZGIuCglbVk1TXTogQWRkIHRyYW5zbGF0aW9ucyBmb3IgZy1lbmJsc3AuYWRiLgoKCSogcy1hc3RoYW4tdm1zLmFkYjogUmVtb3ZlZC4KCSogcy1hc3RoYW4tdm1zLWFscGhhLmFkYjogQWRkZWQuCgoyMDA1LTAyLTA5ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCR05BVF9TUkNTKTogQWRkIHNlaF9pbml0LmMuCgkoTElCR05BVF9PQkpTKTogQWRkIHNlaF9pbml0Lm8uCgoyMDA1LTAyLTA5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE2NTkyCgkqIE1ha2VmaWxlLmluOiBMaW5rIGFsbCBnbmF0IHRvb2xzIHdpdGggLXN0YXRpYy1saWJnY2MsIHNpbmNlCgktc2hhcmVkLWxpYmdjYyBpcyBub3cgdXNlZCBieSBkZWZhdWx0IG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBsaW51eCB3aXRoCglyZWNlbnQgYmludXRpbHMpLgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gTWFrZWZpbGUucHJvbG9nL2dlbmVyaWMsIG5vIGxvbmdlciB1c2VkLgoKMjAwNS0wMi0wOSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmotbWFrci5hZGIgKFByb2Nlc3NfRGlyZWN0b3J5KTogUHV0IGZpbGUgbmFtZSBpbiBjYW5vbmljYWwgY2FzZQoJYmVmb3JlIG1hdGNoaW5nIGFnYWluc3QgdGhlIHBhdHRlcm5zLgoJSWYgZ25hdG5hbWUgaGFzIGJlZW4gaW52b2tlZCBhcyA8cHJlZml4Pi1nbmF0bmFtZQoJdGhlbiBpbnZva2UgdGhlIGNvbXBpbGVyIGFzIDxwcmVmaXg+LWdjYywgbm90IGp1c3QgImdjYyIuCgoyMDA1LTAyLTA5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBDcmVhdGUgQWN0dWFsX1N1YnR5cGUgZXZlbgoJd2l0aCBleHBhbnNpb24gZGlzYWJsZWQuIFRoZSBhY3R1YWwgc3VidHlwZSBpcyBuZWVkZWQgYW1vbmcgb3RoZXIKCXBsYWNlcyB3aGVuIHRoZSBzZWxlY3RlZCBjb21wb25lbnQgYXBwZWFycyBpbiB0aGUgY29udGV4dCBvZiBhIGxvb3AKCWJvdW5kLCBhbmQgZGVub3RlcyBhIHBhY2tlZCBhcnJheS4KCShPcGVyYXRvcl9DaGVjayk6IEFsd2F5cyB1c2UgdGhlIGZpcnN0IHN1YnR5cGUgaW4gdGhlCgllcnJvciBtZXNzYWdlLCB0byBhdm9pZCB0aGUgYXBwZWFyYW5jZSBvZiBpbnRlcm5hbCBiYXNlIHR5cGVzLgoJKFRyYW5zZm9ybV9PYmplY3RfT3BlcmF0aW9uKTogQ29weSBlYWNoIGFjdHVhbCBpbiBmdWxsCgl0byB0aGUgcGFyYW1ldGVyIGFzc29jaWF0aW9ucyBvZiB0aGUgY29uc3RydWN0ZWQgY2FsbCwgcmF0aGVyIHRoYW4KCXVzaW5nIHRoZSBzaGFsbG93IGNvcHkgbWVjaGFuaXNtIG9mIE5ld19Db3B5X0xpc3QuIFRoaXMgZW5zdXJlcyB0aGF0Cgl0aGUgY2hhaW5pbmcgb2YgbmFtZWQgYXNzb2NpYXRpb25zIGlzIGRvbmUgcHJvcGVybHkuCgkoQ29tcGxldGVfT2JqZWN0X09wZXJhdGlvbik6IFJld3JpdGUgbm9kZSwgcmF0aGVyIHRoYW4KCXJlcGxhY2luZyBpdCwgc28gdGhhdCB3ZSBjYW4gdHJhY2UgYmFjayB0byB0aGUgb3JpZ2luYWwgc2VsZWN0ZWQKCWNvbXBvbmVudC4KCgkqIHNlbV9lbGFiLmFkYiAoU2V0X0VsYWJvcmF0aW9uX0NvbnN0cmFpbnQpOiBGb3IgaW5pdGlhbGl6YXRpb24gY2FsbHMsCglhbmQgY2FsbHMgdGhhdCB1c2Ugb2JqZWN0IG5vdGF0aW9uLCBpZiB0aGUgY2FsbGVkIGZ1bmN0aW9uIGlzIG5vdAoJZGVjbGFyZWQgIGluIGEgd2l0aGVkIHVuaXQsIHBsYWNlIHRoZSBlbGFib3JhdGlvbiBjb25zdHJhaW50IG9uIHRoZQoJdW5pdCBpbiB0aGUgY29udGV4dCB0aGF0IG1ha2VzIHRoZSBmdW5jdGlvbiBhY2Nlc3NpYmxlLgoJKENoZWNrX0VsYWJfU3VidHlwZV9EZWNsYXJhdGlvbik6IENoZWNrIHdoZXRoZXIgYSBzdWJ0eXBlIGRlY2xhcmF0aW9uCglpbXBvc2VzIGFuIGVsYWJvcmF0aW9uIGNvbnN0cmFpbnQgYmV0d2VlbiB0d28gcGFja2FnZXMuCgoyMDA1LTAyLTA5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g3LmFkYiAoVW5pbnN0YWxsX0RlY2xhcmF0aW9ucyk6IEV4Y2hhbmdlIGZ1bGwgYW5kIHByaXZhdGUKCXZpZXdzIG9mIGEgcHJpdmF0ZSB0eXBlIGFmdGVyIGhhbmRsaW5nIGl0cyBwcml2YXRlIGRlcGVuZGVudHMsIHRvCgltYWludGFpbiBwcm9wZXIgc3RhY2sgZGlzY2lwbGluZSBiZXR3ZWVuIGVudHJ5IGFuZCBleGl0IGZyb20gdGhlCglwYWNrYWdlLgoKMjAwNS0wMi0wOSAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFkYWNvcmUuY29tPgoKCSogcy1maW5pbXAuYWRiOiAoRmluYWxpemVfTGlzdCk6IE9wdGltaXplIGluIHRoZSBuby1hYm9ydCBjYXNlLgoJTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNS0wMi0wOSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy10cG9yZnQuYWRiIChSZWdpc3Rlcl9Gb3JlaWduX1RocmVhZCk6IEluaXRpYWxpemUgVGFza19JbWFnZVtfTGVuXQoJZmllbGRzIGZvciBmb3JlaWduIHRocmVhZHMuCgoyMDA1LTAyLTA5ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogcy12YWZsb3AuYWRiOiBBZGQgcHJhZ21hIFdhcm5pbmdzIChPZmYpIHRvIGVsaW1pbmF0ZSBpbmZpbml0ZQoJcmVjdXJzaW9uIHdhcm5pbmdzIHdoZW4gY29tcGlsZWQgd2l0aCAtZ25hdGRtLgoKMjAwNS0wMi0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiB1c2FnZS5hZGI6IEFkZCBsaW5lIGZvciBzd2l0Y2ggLWduYXQwNSAoYWxsb3cgQWRhIDIwMDUgZXh0ZW5zaW9ucykKCVNsaWdodCBmaXggdG8gZG9jdW1lbnRhdGlvbiBvZiAtZ25hdHkgd2l0aCBubyBwYXJhbWV0ZXJzCgoJKiB4cl90YWJscy5hZHM6IEFkZCA/Pz8gY29tbWVudCBmb3IgbWlzc2luZyBvdmVyYWxsIGNvbW1lbnQKCgkqIHhzaW5mby5hZGI6IE1ha2UgZGVmYXVsdCBmaWxlIG5hbWUgYmUgc2luZm8uaCwgc2luY2UgdGhpcyBpcyB3aGF0Cgl3ZSBub3cgdXNlIGJ5IGRlZmF1bHQuCgoJKiB4c25hbWVzLmFkYjogQWRqdXN0IGVuZCBvZiBmaWxlIHRlc3QgdG8gbG9vayBmb3IgZml2ZSBzcGFjZSBmb2xsb3dlZAoJYnkgJyMnIGluc3RlYWQgb2Ygc2l4IHNwYWNlcy4gVGhlIGZvcm1hdCBvZiB4c25hbWVzLmFkYiB3YXMgbW9kaWZpZWQKCWluIHRoZSBsYXN0IHVwZGF0ZS4KCgkqIGEtbnVtZXJpLmFkczogQWRkIHJlZmVyZW5jZSB0byBBSS0zODggZm9yIGdyZWVrIGxldHRlciBwaQoJaWRlbnRpZmllci4KCgkqIGNsZWFuLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogZ25hdDFkcnYuYWRiLCBnbmF0ZmluZC5hZGIsIGduYXRsaW5rLmFkYiwgZ25hdG1lbS5hZGIsCglnbmF0bmFtZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJQWRkIDIwMDUgdG8gY29weXJpZ2h0IG91dHB1dCB3aGVuIHV0aWxpdHkgaXMgcnVuCgoJKiBjc2V0cy5hZGI6IEVsaW1pbmF0ZSBvYnNvbGV0ZSBjb21tZW50CgoJKiBkZWJ1Zy5hZGIsIGctc29ja2V0LmFkcywgaS1jb2JvbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZyB0aHJvdWdob3V0CglVcGRhdGUgY29tbWVudHMuCgoJKiBzZW1fZXZhbC5hZHMgKEV2YWxfSW50ZWdlcl9MaXRlcmFsKTogRG8gbm90IGlubGluZSB0aGlzLCBub3QgdXNlZnVsLgoKMjAwNS0wMi0wOSAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBBZGQgdG8gdGhlIGduYXRwcCBzZWN0aW9uIHRoZSBwYXJhZ3JhcGggZGVzY3JpYmluZwoJdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjb21wYWN0IGFuZCBpbmNvbXBhY3QgbGF5b3V0IGFuZCBhZGQgdGhlIHJlY29yZAoJcmVwcmVzZW50YXRpb24gY2xhdXNlIHRvIHRoZSBleGFtcGxlIGlsbHVzdHJhdGluZyBkaWZmZXJlbnQgbGF5b3V0cy4KCUFkZCB0aGUgZGVzY3JpcHRpb24gb2YgJy1BNScgZ25hdHBwIG9wdGlvbiAoImFsaWduICdBVCcga2V5d29yZHMgaW4KCWNvbXBvbmVudCBjbGF1c2VzIikuCgoyMDA1LTAyLTA5ICBGbG9yaWFuIFZpbGxvaW5nICA8dmlsbG9pbmdAYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBGaXggdHlwb3MuCglVc2UgQGNvbW1hbmQgdG8gZGlzcGxheSAnZ2NjJywgJ2duYXRiaW5kJywgZXRjLiBpbnN0ZWQgb2YgQGNvZGUgb3IKCUBmaWxlLgoJTWFrZSBwcm9wZXIgdXNlIG9mIEByZWYsIEB4cmVmIGFuZCBAcHhyZWYgdG8gYXZvaWQgZHVwbGljYXRpb24gb2YgInNlZSIKCWluIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbi4KCjIwMDUtMDItMDkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IFJlbW92ZSBhbGwgbWVudGlvbnMgb2YgRlNVIHRocmVhZHMsIHdoaWNoIGFyZSBubwoJbG9uZ2VyIHN1cHBvcnRlZC4KCVVwZGF0ZSBsaW5rZXIgd3JhcHBlciB3aGVuIGxpbmtpbmcgd2l0aCBub24gR05VIEMrKy4KCjIwMDUtMDItMDkgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6CglEb2N1bWVudCB0aGUgcHJvY2VkdXJlIHRvIGRlYnVnIHRoZSBEbGxNYWluIHJvdXRpbmUgb24gV2luZG93cy4KCUFkZCBub3RlIGFib3V0IC1mdW53aW5kLXRhYmxlcyBhbmQgbWl4ZWQgQWRhIGFuZCBDL0MrKyBwcm9ncmFtbWluZyBpbgoJWkNYIG1vZGUuCglEb2N1bWVudCBuZXcgQklORCBxdWFsaWZlciAvUkVUVVJOX0NPREVTPVZNUy4KCjIwMDUtMDItMDkgIEJlbiBCcm9zZ29sICA8YnJvc2dvbEBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IFdvcmRzbWl0aGluZyBvZiAiR05BVCBhbmQgTGlicmFyaWVzIiBjaGFwdGVyCglFZGl0ZWQgZ25hdG1ldHJpYyBjaGFwdGVyCgoyMDA1LTAyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGduYXRfcm0udGV4aToKCUNoYW5nZXMgdG8gZG9jdW1lbnQgbmV3IHdpZGUgd2lkZSBjaGFyYWN0ZXIgc3VwcG9ydAoJRm9yIEFJLTI4NQoJVXBkYXRlIGRvY3VtZW50YXRpb24gb24gTm9ybWFsaXplX1NjYWxhcnMgYW5kIEluaXRpYWxpemVfU2NhbGFycwoKMjAwNS0wMi0wOSAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogcy10YXByb3AtbWluZ3cuYWRiLCBzLXNvZmxpbi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDUtMDItMDkgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLW9zaW50ZS12eHdvcmtzLmFkcyAodGFza1ByaW9yaXR5R2V0KTogQWRkIHRoaXMgZnVuY3Rpb24gKGltcG9ydGVkCglmcm9tIHRoZSBWeFdvcmtzIGtlcm5lbCkgdGhhdCBpcyBuZWVkZWQgZm9yIGdldHRpbmcgdGhlIGFjdGl2ZQoJcHJpb3JpdHkgb2YgdGhlIGRpZmZlcmVudCB0YXNrcy4KCgkqIHMtYXRhY2NvLmFkcywgcy1hdGFjY28uYWRiIChOb3RoaW5nKTogUmVtb3ZlIHRoaXMgZHVtbXkgcHJvY2VkdXJlLgoJVXNlIGEgcHJhZ21hIEVsYWJvcmF0ZV9Cb2R5IGluIHRoZSBzcGVjIGZpbGUgaW5zdGVhZC4KCU5vdGljZWQgYnkgY29kZSByZWFkaW5nLgoKMjAwNS0wMi0wOSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF91dGlsLmFkczogTWlub3IgY29ycmVjdGlvbiBpbiBjb21tZW50LgoKMjAwNS0wMi0wOSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy10YXByb3AuYWRzIChJbml0aWFsaXplKTogVXBkYXRlIGNvbW1lbnRzLiBSZW1vdmUgcHJhZ21hIElubGluZSwKCXNpbmNlIHRoaXMgcHJvY2VkdXJlIGlzIG5vdyB0b28gY29tcGxleCB0byBiZSB3b3J0aCBpbmxpbmluZy4KCjIwMDUtMDItMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB1dGlscy5jIChnbmF0X2RlZmluZV9idWlsdGluKTogUmVtb3ZlLgoJKGduYXRfaW5zdGFsbF9idWlsdGlucyk6IFVzZSBidWlsZF9jb21tb25fYnVpbHRpbl9ub2Rlcy4KCjIwMDUtMDItMDkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGEtcmJ0Z3NvLmFkYiwgYS1jcmJ0Z28uYWRzLCBhLWNyYnRnby5hZGIsIGEtY3JidGdrLmFkcywKCWEtY3JidGdrLmFkYiwgYS1jcmJsdHIuYWRzLCBhLWNvcHJudS5hZHMsIGEtY29wcm51LmFkYiwKCWEtY29vcnNlLmFkcywgYS1jb29yc2UuYWRiLCBhLWNvbnZlYy5hZHMsIGEtY29udmVjLmFkYiwKCWEtY29udGFpLmFkcywgYS1jb2ludmUuYWRzLCBhLWNvaW52ZS5hZGIsIGEtY29oYXRhLmFkcywKCWEtY29oYW1hLmFkcywgYS1jb2hhbWEuYWRiLCBhLWNpb3JzZS5hZHMsIGEtY2lvcnNlLmFkYiwKCWEtY2loYW1hLmFkcywgYS1jaWhhbWEuYWRiLCBhLWNpZGxsaS5hZHMsIGEtY2lkbGxpLmFkYiwKCWEtY2h0Z29wLmFkcywgYS1jaHRnb3AuYWRiLCBhLWNnY2Fzby5hZHMsIGEtY2djYXNvLmFkYiwKCWEtY2dhcnNvLmFkcywgYS1jZ2Fyc28uYWRiLCBhLWNkbGlsaS5hZHMsIGEtY2RsaWxpLmFkYiwKCWEtY2dhYXNvLmFkYiwgYS1jb29ybXUuYWRiLCBhLWNpb3JtdS5hZGIsIGEtY2loYXNlLmFkYiwKCWEtY2loYXNlLmFkcywgYS1jb2hhc2UuYWRiLCBhLWNvaGFzZS5hZHMsIGEtY2lvcm1hLmFkcywKCWEtY29vcm1hLmFkcywgYS1zd3VuaGEuYWRzLCBhLXN0dW5oYS5hZHMsIGEtY2lvcm11LmFkcywKCWEtY29vcm11LmFkcywgYS1yYnRnc28uYWRzLCBhLXN3dW5oYS5hZGIsIGEtc3R1bmhhLmFkYiwKCWEtY2dhYXNvLmFkcywgYS1jaW9ybWEuYWRiLCBhLWNvb3JtYS5hZGIsIGEtc2VjYWluLmFkYiwKCWEtc2VjYWluLmFkcywgYS1zbGNhaW4uYWRzLCBhLXNsY2Fpbi5hZGIsIGEtc2hjYWluLmFkcywKCWEtc2hjYWluLmFkYiwgYS1jaHRna2UuYWRzLCBhLWNodGdrZS5hZGIsIGEtc3R3aWhhLmFkcywKCWEtc3R3aWhhLmFkYiwgYS1zdHJoYXMuYWRzLCBhLXN0cmhhcy5hZGIsIGEtY2h6bGExLmFkcywKCWEtY2h6bGE5LmFkcywgYS1sZnp0aW8uYWRzLCBhLWxpenRpby5hZHMsIGEtbGxmenRpLmFkcywKCWEtbGxpenRpLmFkcywgYS1zZnp0aW8uYWRzLCBhLXNpenRpby5hZHMsIGEtc3NpenRpLmFkcywKCWEtc3R6Ym91LmFkYiwgYS1zdHpib3UuYWRzLCBhLXN0emZpeC5hZGIsIGEtc3R6Zml4LmFkcywKCWEtc3R6aGFzLmFkYiwgYS1zdHpoYXMuYWRzLCBhLXN0em1hcC5hZGIsIGEtc3R6bWFwLmFkcywKCWEtc3R6c2VhLmFkYiwgYS1zdHpzZWEuYWRzLCBhLXN0enN1cC5hZGIsIGEtc3R6c3VwLmFkcywKCWEtc3R6dW5iLmFkYiwgYS1zdHp1bmIuYWRzLCBhLXN3dW5hdS5hZGIsIGEtc3d1bmF1LmFkcywKCWEtc3ptemNvLmFkcywgYS1zenVuYXUuYWRiLCBhLXN6dW5hdS5hZHMsIGEtc3p1bmhhLmFkYiwKCWEtc3p1bmhhLmFkcywgYS1zenV6dGkuYWRiLCBhLXN6dXp0aS5hZHMsIGEtdGl1bmlvLmFkcywKCWEtd3d1bmlvLmFkcywgYS16dGNvYXUuYWRiLCBhLXp0Y29hdS5hZHMsIGEtenRjb2lvLmFkYiwKCWEtenRjb2lvLmFkcywgYS16dGNzdHIuYWRiLCBhLXp0Y3N0ci5hZHMsIGEtenRkZWF1LmFkYiwKCWEtenRkZWF1LmFkcywgYS16dGRlaW8uYWRiLCBhLXp0ZGVpby5hZHMsIGEtenRlZGl0LmFkYiwKCWEtenRlZGl0LmFkcywgYS16dGVuYXUuYWRiLCBhLXp0ZW5hdS5hZHMsIGEtenRlbmlvLmFkYiwKCWEtenRlbmlvLmFkcywgYS16dGV4aW8uYWRiLCBhLXp0ZXhpby5hZHMsIGEtenRmaWlvLmFkYiwKCWEtenRmaWlvLmFkcywgYS16dGZsYXUuYWRiLCBhLXp0ZmxhdS5hZHMsIGEtenRmbGlvLmFkYiwKCWEtenRmbGlvLmFkcywgYS16dGdlYXUuYWRiLCBhLXp0Z2VhdS5hZHMsIGEtenRpbmF1LmFkYiwKCWEtenRpbmF1LmFkcywgYS16dGluaW8uYWRiLCBhLXp0aW5pby5hZHMsIGEtenRtb2F1LmFkYiwKCWEtenRtb2F1LmFkcywgYS16dG1vaW8uYWRiLCBhLXp0bW9pby5hZHMsIGEtenR0ZXN0LmFkYiwKCWEtenR0ZXN0LmFkcywgYS16enVuaW8uYWRzOiBOZXcgZmlsZXMuIFBhcnQgb2YgbmV3IEFkYSAyMDA1CglsaWJyYXJ5LgoKMjAwNS0wMS0yNyAgTGF1cmVudCBHVUVSQlkgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCgkqIE1ha2VmaWxlLmluOiBGaXggYS1pbnRuYW0uYWRzIGZyb20gcHJldmlvdXMgY29tbWl0LAoJYWRkIDIwMDUgdG8gY29weXJpZ2h0LgoJKiBhLWludG1hbi1ydGVtcy5hZHM6IFJlbmFtZWQgdG8uLi4KCSogYS1pbnRuYW0tcnRlbXMuYWRzOgoKMjAwNS0wMS0yNyAgTGF1cmVudCBHVUVSQlkgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCgkqIE1ha2VmaWxlLmluOiBSZW5hbWUgR05BVCBSVEVNUyBzcGVjaWZpYyBmaWxlcy4KCSogNXJ0cG9wc3AuYWRiLCA0cmludG5hbS5hZHMsIDVyb3NpbnRlLmFkYiwKCTVyb3NpbnRlLmFkcywgNXJwYXJhbWUuYWRiOiBSZXBsYWNlZCBieSBmaWxlcyBiZWxvdy4KCSogcy10cG9wc3AtcnRlbXMuYWRiLCBhLWludG1hbi1ydGVtcy5hZHMsIHMtb3NpbnRlLXJ0ZW1zLmFkYiwKCXMtb3NpbnRlLXJ0ZW1zLmFkcywgcy1wYXJhbWUtcnRlbXMuYWRiOiBSZXBsYWNlIGZpbGVzIGFib3ZlLgoKMjAwNS0wMS0yNyAgSm9lbCBTaGVycmlsbCA8am9lbC5zaGVycmlsbEBvYXJjb3JwLmNvbT4KCSAgICBMYXVyZW50IEdVRVJCWSA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8xOTQ4OAoJKiA1cm9zaW50ZS5hZHM6IEFkZCBOb19LZXkgY29uc3RhbnQuCgkqIDVydHBvcHNwLmFkYjogSW5pdGlhbGl6ZSBBVENCX0tleSB3aXRoIE5vX0tleSBhbmQgZml4IHN0eWxlLgoJKiBnc29ja2V0Lmg6IERvIG5vdCBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+IHdpdGggUlRFTVMgZWl0aGVyLgoKMjAwNS0wMS0yNiAgTGF1cmVudCBHVUVSQlkgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCglQUiBhZGEvMTk0MTQKCSogaS1jb2JvbC5hZGIgKFZhbGlkX051bWVyaWMpOiBIYW5kbGUgemVybyBsZW5ndGggY2FzZS4KCjIwMDUtMDEtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYWxwaGEtbGludXgsIExJQkdOQVRfVEFSR0VUX1BBSVJTKTogVXNlCglhLWludG5hbS1saW51eC5hZHMgYW5kIHN5c3RlbS1saW51eC1hbHBoYS5hZHMuCgkqIGEtaW50bmFtLWxpbnV4LWFscGhhLmFkczogUmVtb3ZlIGZpbGUuCgkqIHMtb3NpbnRlLWxpbnV4LWFscGhhLmFkcyAoU0lHVU5VU0VELCBTSUdTVEtGTFQsIFNJR0xPU1QpOiBOZXcuCgkqIHN5c3RlbS1saW51eC1hbHBoYS5hZHM6IE5ldyBmaWxlLgoKMjAwNS0wMS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJUFIgYWRhLzEzNDcwCgkqIGEtc3R1bmF1LmFkYiAoR2V0X1N0cmluZyk6IERvbid0IHJldHVybiBVLlJlZmVyZW5jZSwgYnV0IFJldCB0aGF0IGlzCglzZXQgdG8gdGhlIG5ldyBzdHJpbmcuCgoyMDA1LTAxLTE4ICBUb29uIE1vZW5lICA8dG9vbkBtb2VuZS5pbmRpdi5ubHV1Zy5ubD4KCgkqIHN5c3RlbS1saW51eC1wcGMuYWRzOiBTZXQgWkNYX0J5X0RlZmF1bHQgYW5kIEdDQ19aQ1hfU3VwcG9ydAoJdG8gVHJ1ZS4KCjIwMDUtMDEtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTElCR05BVF9UQVJHRVRfUEFJUlMsIFRPT0xTX1RBUkdFVF9QQUlSUywgTUlTQ0xJQiwKCVRIUkVBRFNMSUIsIEdOQVRMSUJfU0hBUkVELCBQUkVGSVhfT0JKUywgTElCUkFSWV9WRVJTSU9OKTogU3BlY2lhbGl6ZQoJZm9yIGFscGhhLWxpbnV4LgoJKiBzLW9zaW50ZS1saW51eC1hbHBoYS5hZHMsIGEtaW50bmFtLWxpbnV4LWFscGhhLmFkczogTmV3IGZpbGVzLgoKMjAwNS0wMS0xNCAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiBzeXN0ZW0tZGFyd2luLXBwYy5hZHMgKFpDWF9CeV9EZWZhdWx0KTogQ2hhbmdlIHRvIFRydWUuCgkoR0NDX1pDWF9TdXBwb3J0KTogTGlrZXdpc2UuCgoyMDA1LTAxLTExICBCYXN0aWFuIEJsYW5rICA8d2FsZGlAZGViaWFuLm9yZz4KCgkqIHN5c3RlbS1saW51eC1zMzkwLmFkczogRGVmaW5lIFByZWFsbG9jYXRlZF9TdGFja3MuCgkqIHN5c3RlbS1saW51eC1zMzkweC5hZHM6IExpa2V3aXNlLgoKMjAwNS0wMS0wNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogZ25hdF91Z24udGV4aTogRml4IHRleGkgZXJyb3JzIHdpdGggbnVsbCB2YXJpYWJsZXMuCgoyMDA1LTAxLTAzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZ2VuLXNvY2Nvbi5jOiBOZXcgdXRpbGl0eSBwcm9ncmFtIHRvIGdlbmVyYXRlIGctc29jY29uLmFkcwoJYXV0b21hdGljYWxseS4KCgkqIHNvY2tldC5jLCBnc29ja2V0Lmg6IFNwbGl0IGluY2x1c2lvbiBvZiBzeXN0ZW0gaGVhZGVyIGZpbGVzIGludG8gYQoJZ3NvY2tldC5oIGZpbGUgc2VwYXJhdGVkIGZyb20gc29ja2V0LmMsIHRvIGFsbG93IHJldXNlIGluIGdlbi1zb2Njb24uYy4KCgkqIGctc29jY29uLmFkcywgZy1zb2Njb24tdW5peHdhcmUuYWRzLCBnLXNvY2Nvbi10cnU2NC5hZHMsCglnLXNvY2Nvbi1haXguYWRzLCBnLXNvY2Nvbi1pcml4LmFkcywgZy1zb2Njb24taHB1eC5hZHMsCglnLXNvY2Nvbi1pbnRlcml4LmFkcywgZy1zb2Njb24tc29sYXJpcy5hZHMsIGctc29jY29uLW1pbmd3LmFkcywKCWctc29jY29uLXZ4d29ya3MuYWRzLCBnLXNvY2Nvbi1mcmVlYnNkLmFkczogTm90ZSB0aGF0IHRoZXNlIGZpbGVzCglzaG91bGQgbm90IGJlIGVkaXRlZCBieSBoYW5kIGFueW1vcmUsIGJ1dCBzaG91bGQgYmUgcmVnZW5lcmF0ZWQgdXNpbmcKCWdlbi1zb2Njb24uCgoyMDA1LTAxLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBzLWF0YWNjby5hZHMsIGEtZGlyZWlvLmFkYjogUHJvdGVjdCB1c2Ugb2YgJ0NvbnN0cmFpbmVkIGJ5IHdhcm5pbmdzCglvbi9vZmYsIHNpbmNlIHRoaXMgaXMgYW4gb2Jzb2xlc2NlbnQgZmVhdHVyZSwgZm9yIHdoaWNoIHdlIG5vdyBnZW5lcmF0ZQoJYSB3YXJuaW5nLgoKCSogc2VtX2F0dHIuYWRiIChBbmFseXplX0F0dHJpYnV0ZSwgY2FzZSBDb25zdHJhaW5lZCk6IElzc3VlIHdhcm5pbmcgaWYKCXdhcm5pbmcgbW9kZSBpcyBzZXQgYW5kIG9ic29sZXNjZW50IHVzYWdlIG9mIHRoaXMgYXR0cmlidXRlIG9jY3Vycy4KCShSZXNvbHZlX0FjY2VzcywgY2FzZSAnQWNjZXNzKTogTm90ZSB0aGF0IEdOQVQgdXNlcyB0aGUgY29udGV4dCB0eXBlIHRvCglkaXNhbWJpZ3VhdGUgb3ZlcmxvYWRlZCBwcmVmaXhlcywgaW4gYWNjb3JkYW5jZSB3aXRoIEFJLTIzNS4gR05BVCBjb2RlCglwcmVkYXRlcywgYW5kIHBhcnRseSBtb3RpdmF0ZXMsIHRoZSBhZG9wdGlvbiBvZiB0aGUgQUkuCglJbXBsZW1lbnQgbmV3IEFkYSAyMDA1IGF0dHJpYnV0ZSBNb2QKCgkqIGV4cF9hdHRyLmFkYiAoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSk6IEltcGxlbWVudCBBZGEgMjAwNQoJYXR0cmlidXRlIE1vZC4KCgkqIHBhci1jaDQuYWRiIChQX05hbWUpOiBJbiBBZGEgMjAwNSBtb2RlLCByZWNvZ25pemUgbmV3IGF0dHJpYnV0ZSBNb2QKCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgZW50cnkgZm9yIE5vX0RlcGVuZGVuY2UgZm9yCglwcmFnbWEgcmVzdHJpY3Rpb25zLgoJTmV3IGVudHJ5IGZvciBBZGEgMjAwNSBhdHRyaWJ1dGUgTW9kLgoKCSogcGFyLXByYWcuYWRiOgoJQWRkIHJlY29nbml0aW9uIG9mIG5ldyBwcmFnbWEgUmVzdHJpY3Rpb25zIE5vX0RlcGVuZGVuY2UKCVJlY29nbml6ZSByZXN0cmljdGlvbiBOb19PYnNvbGVzY2VudF9GZWF0dXJlcyBhdCBwYXJzZSB0aW1lCgoJKiBiY2hlY2suYWRiOiBBZGQgY2lyY3VpdHJ5IGZvciBjaGVja2luZyBmb3IgY29uc2lzdGVuY3kgb2YKCU5vX0RlcGVuZGVuY2UgcmVzdHJpY3Rpb25zLgoKCSogbGliLXdyaXQuYWRzLCBsaWItd3JpdC5hZGI6IE91dHB1dCBuZXcgUiBsaW5lcyBmb3IgTm9fRGVwZW5kZW5jZQoJcmVzdHJpY3Rpb25zLgoKCSogcmVzdHJpY3QuYWRzLCByZXN0cmljdC5hZGI6IEFkZCBzdWJwcm9ncmFtcyB0byBkZWFsIHdpdGgKCU5vX0RlcGVuZGVuY2UgcmVzdHJpY3Rpb25zLgoKCSogcnRzZmluZC5hZGI6IENoZWNrIHRoYXQgaW1wbGljaXQgd2l0aCdzIGRvIG5vdCB2aW9sYXRlIE5vX0RlcGVuZGVuY2UKCXJlc3RyaWN0aW9ucy4KCgkqIHNlbV9jaDMuYWRiLCBzZW1fY2gxMS5hZGIsIHNlbV9jaDEzLmFkYiwgbGliLXhyZWYuYWRiLAoJc2VtX2F0dHIuYWRiOiBBZGQgY2hlY2sgZm9yIG5ldyByZXN0cmljdGlvbiBOb19PYnNvbGVzY2VudF9GZWF0dXJlcwoKCSogc2NuLmFkcywgcHJqLWVyci5hZHMsIHByai1lcnIuYWRiLCBhbGktdXRpbC5hZGIsIGdwcmVwLmFkYjogQWRkIG5ldwoJZHVtbXkgcGFyYW1ldGVyIHRvIHNjbmcgaW5zdGFudGlhdGlvbi4KCU5lZWRlZCBmb3IgbmV3IHJlc3RyaWN0aW9uIE5vX09ic29sZXNjZW50X0ZlYXR1cmVzCgoJKiBzY24uYWRiOiAoT2Jzb2xlc2NlbnRfQ2hlY2spOiBOZXcgcHJvY2VkdXJlCglOZWVkZWQgZm9yIG5ldyByZXN0cmljdGlvbiBOb19PYnNvbGVzY2VudF9GZWF0dXJlcwoKCSogc2NuZy5hZHMsIHNjbmcuYWRiOiBBbHdheXMgYWxsb3cgd2lkZSBjaGFyYWN0ZXJzIGluIEFkYSAyMDA1IG1vZGUsIGFzCglzcGVjaWZpZWQgYnkgQUktMjg1LCBuZWVkZWQgZm9yIGltcGxlbWVudGF0aW9uIG9mIEFJLTM4OCAoYWRkaW5nIGdyZWVrCglwaSB0byBBZGEuTnVtZXJpY3MpLgoJQWRkIG5ldyBnZW5lcmljIGZvcm1hbCB0byBzY25nLCBuZWVkZWQgZm9yIG5ldyByZXN0cmljdGlvbgoJTm9fT2Jzb2xlc2NlbnRfRmVhdHVyZXMuCgoJKiBzLXJpZGVudC5hZHM6IEFkZCBuZXcgcmVzdHJpY3Rpb24gTm9fT2Jzb2xlc2NlbnRfRmVhdHVyZXMuCgoJKiBhbGkuYWRzLCBhbGkuYWRiOiBBZGp1c3RtZW50cyBmb3IgcmVhZGluZyBuZXcgTm9fRGVwZW5kZW5jZQoJcmVzdHJpY3Rpb25zIGxpbmVzLgoJKFNjYW5fQUxJKTogV2hlbiBmaW5kaW5nIGFuIHVuZXhwZWN0ZWQgY2hhcmFjdGVyIG9uIGFuIFIgbGluZSwgcmFpc2UKCWV4Y2VwdGlvbiBCYWRfUl9MaW5lLCBpbnN0ZWFkIG9mIGNhbGxpbmcgRmF0YWxfRXJyb3IsIHNvIHRoYXQsIHdoZW4KCUlnbm9yZV9FcnJvcnMgaXMgVHJ1ZSwgZGVmYXVsdCByZXN0cmljdGlvbnMgYXJlIHNldCBhbmQgc2Nhbm5pbmcgb2YgdGhlCglBTEkgZmlsZSBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBsaW5lLiBBbHNvLCB3aGVuIEJhZF9SX0xpbmUgaXMgcmFpc2VkCglhbmQgSWdub3JlX0Vycm9ycyBpcyBUcnVlLCBza2lwIHRvIHRoZSBlbmQgb2YgbGUgbGluZS4KCgkqIHNlbV9jaDEwLmFkYjogQ2hlY2sgdGhhdCBleHBsaWNpdCB3aXRoJ3MgZG8gbm90IHZpb2xhdGUKCU5vX0RlcGVuZGVuY2UgcmVzdHJpY3Rpb25zLgoJKEluc3RhbGxfV2l0aGVkX1VuaXQpOiBBZGQgY29kZSB0byBpbXBsZW1lbnQgQUktMzc3IGFuZCBkaWFnbm9zZQoJaWxsZWdhbCBjb250ZXh0IGNsYXVzZXMgY29udGFpbmluZyBjaGlsZCB1bml0cyBvZiBpbnN0YW5jZS4KCgkqIHNlbV9wcmFnLmFkYjogUHJvY2Vzc2luZyBhbmQgY2hlY2tpbmcgZm9yIG5ldyBOb19EZXBlbmRlbmNlCglyZXN0cmljdGlvbnMuCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgUHNlY3RfT2JqZWN0KTogQ2FsbCBDaGVja19BcmdfSXNfRXh0ZXJuYWxfTmFtZSB0bwoJYW5hbHl6ZSBhbmQgY2hlY2sgdGhlIEV4dGVybmFsIGFyZ3VtZW50LgoKCSogYS1udW1lcmkuYWRzOiBBZGQgZ3JlZWsgbGV0dGVyIHBpIGFzIGFsdGVybmF0aXZlIHNwZWxsaW5nIG9mIFBpCgoyMDA1LTAxLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGF0cmVlLmFkYjogQWRkIGEgZmlmdGggY29tcG9uZW50IHRvIGVudGl0aWVzCglUaGlzIGFsbG93cyB1cyB0byBhZGQgMzIgZmxhZ3MgYW5kIGZvdXIgbmV3IGZpZWxkcwoKCSogYXRyZWUuYWRzOiBBZGQgYSBmaWZ0aCBjb21wb25lbnQgdG8gZW50aXRpZXMKCVRoaXMgYWxsb3dzIHVzIHRvIGFkZCAzMiBmbGFncyBhbmQgZm91ciBuZXcgZmllbGRzCgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYjogRG9jdW1lbnQgbmV3IGZpZWxkcyBhbmQgbmV3IGZsYWdzIG5vdyBhdmFpbGFibGUKCUFkZCByb3V0aW5lcyBmb3IgcHJpbnRpbmcgbmV3IGZpZWxkcwoKCSogdHJlZXByLmFkYjogQ2FsbCByb3V0aW5lcyB0byBwcmludCBvdXQgYWRkaXRpb25hbCBmaWVsZHMgaWYgcHJlc2VudAoKMjAwNS0wMS0wMyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYmxkLmFkcywgYmxkLmFkYiwgYmxkLWlvLmFkcywgYmxkLWlvLmFkYiwgZ3ByY21kLmFkYiwKCWdwcjJtYWtlLmFkcywgZ3ByMm1ha2UuYWRiOiBSZW1vdmUgZ3ByMm1ha2UsIHJlcGxhY2VkIGJ5IGdwcm1ha2UuCgoJKiBNYWtlZmlsZS5pbjogQWRkIHN1cHBvcnQgdG8gYnVpbGQgc2hhcmVkIEFkYSBsaWJyYXJpZXMgb24gc29sYXJpcyB4ODYKCVJlbW92ZSBncHIybWFrZSwgcmVwbGFjZWQgYnkgZ3BybWFrZS4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIGduYXRtZW0gYW5kIGxpYmFkZHIybGluZS4KCUFkZCBpbmRlcHN3LmFkYjxpbmRlcHN3LWxpbnV4LmFkYiB0byBUT09MU19UQVJHRVRfUEFJUlMgZm9yIElBNjQgbGludXguCgkoZ25hdGxpYi1zaGFyZWQtZGFyd2luKTogQWRkICItZm5vLWNvbW1vbiIgdG8gR05BVExJQkNGTEFHUy4KCUFkZCBzdXBwb3J0IGZvciBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIEFkYS5OdW1lcmljcy5BdXggZm9yIERhcndpbjogdXNlCglhLW51bWF1eC1kYXJ3aW4uYWRzIGFuZCBhLW51bWF1eC1kYXJ3aW4uYWRiCglFbmFibGUgbWxpYi10Z3QtbHlueG9zLmFkYiBvbiBseW54b3MuCgoJKiBNYWtlLWxhbmcuaW46IFJlbW92ZSBydWxlcyBmb3IgZ3ByMm1ha2UuCglXaGVuIGdlbmVyYXRpbmcgc2RlZmF1bHQuYWRiLCBkbyBub3QgY2FsbCBSZWxvY2F0ZV9QYXRoCglvbiBTMyBmb3IgZnVuY3Rpb24gVGFyZ2V0X05hbWUsIGFzIGl0IGlzIG5vdCBhIHBhdGguCglSZW1vdmUgcmVmZXJlbmNlcyB0byBnbmF0bWVtIGFuZCBsaWJhZGRyMmxpbmUuCgoJKiBhLW51bWF1eC1kYXJ3aW4uYWRzLCBhLW51bWF1eC1kYXJ3aW4uYWRiLCBnLXNvY2Nvbi1kYXJ3aW4uYWRzOiBOZXcKCWZpbGVzLgoKMjAwNS0wMS0wMyAgU2FtdWVsIFRhcmRpZXUgIDx0YXJkaWV1QGFkYWNvcmUuY29tPgoKCSogY2hlY2tzLmFkYiAoQXBwbHlfQWxpZ25tZW50X0NoZWNrKTogR2VuZXJhdGUgYSB3YXJuaW5nIGlmIGFuIG9iamVjdAoJYWRkcmVzcyBpcyBpbmNvbXBhdGlibGUgd2l0aCBpdHMgYmFzZSB0eXBlIGFsaWdubWVudCBjb25zdHJhaW50cyB3aGVuCgl0aGlzIGNhbiBiZSBkZWNpZGVkIHN0YXRpY2FsbHkuCgoyMDA1LTAxLTAzICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChjb21wYXRpYmxlX3NpZ25hdHVyZXNfcCk6IE5ldyBmdW5jdGlvbi4gVGhlIGludGVuZGVkIHB1cnBvc2UKCWlzIHRvIGNoZWNrIGlmIHR3byBmdW5jdGlvbiBzaWduYXR1cmVzIGZvciBhIGNhbGwtc2l0ZSBhbmQgYSBjYWxsZWUgYXJlCgljb21wYXRpYmxlIGVub3VnaCBmb3IgdGhlIGNhbGwgdG8gYmUgdmFsaWQuIFRoZSB1bmRlcmx5aW5nIHB1cnBvc2UgaXMKCXRvIGNoZWNrIGlmIGEgY2FsbCB0byBhIG1hcHBlZCBidWlsdGluIGlzIHVzaW5nIHRoZSByaWdodCBpbnRlcmZhY2UuCglUaGUgY3VycmVudCBjb2RlIGFjdHVhbGx5IGRvZXMgbm90IGNoZWNrIGFudHloaW5nIC0gdGhpcyBhIHBsYWNlaG9sZGVyCglmb3IgZnV0dXJlIHJlZmluZW1lbnRzLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfU3VicHJvZ3JhbV9DYWxsPjogQWRkIHByZWxpbWluYXJ5IGJpdHMgdG8gaGFuZGxlCglidWlsdGluIGNhbGxzIGZvciBjb252ZW50aW9uIEludHJpbnNpYy4KCgkqIGdpZ2kuaCAoYnVpbHRpbl9kZWNsX2Zvcik6IERlY2xhcmUgKG5ldyBmdW5jdGlvbikuCgoJKiB1dGlscy5jIChnbmF0X2luc3RhbGxfYnVpbHRpbnMpOiBJbnN0YWxsIHRoZSB0YXJnZXQgc3BlY2lmaWMgYnVpbHRpbnMuCgkoYnVpbHRpbl9kZWNsX2Zvcik6IE5ldyBmdW5jdGlvbiwgcHJvdmlkZSBhIGR1bW15IGJvZHkgZm9yIG5vdy4KCjIwMDUtMDEtMDMgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAYWRhY29yZS5jb20+CgoJKiBldmFsX2ZhdC5hZGI6IChFcHNfTW9kZWwsRXBzX0Rlbm9ybSk6IFJlbW92ZSwgbm8gbG9uZ2VyIHVzZWQuCgkoU3VjYyk6IFJlLWltcGxlbWVudCB1c2luZyBTY2FsaW5nLCBFeHBvbmVudCBhbmQgQ2VpbGluZyBhdHRyaWJ1dGVzLgoJKFByZWQpOiBJbXBsZW1lbnQgaW4gdGVybXMgb2YgU3VjYy4KCgkqIHRyYW5zLmMgKGNvbnZlcnRfd2l0aF9jaGVjayk6IFJlaW1wbGVtZW50IGNvbnZlcnNpb24gb2YgZmxvYXQgdG8KCWludGVnZXIuCgoyMDA1LTAxLTAzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBleHBfYWdnci5hZGIgKFBhY2tlZF9BcnJheV9BZ2dyZWdhdGVfSGFuZGxlZCk6IFRoZSB2YWx1ZXMgb2YgdGhlCglib3VuZHMgY2FuIGJlIG5lZ2F0aXZlLCBhbmQgbXVzdCBiZSBkZWNsYXJlZCBJbnQsIG5vdCBOYXQuCgoJKiBzZW1fZWxpbS5hZGIgKExpbmVfTnVtX01hdGNoKTogQ29ycmVjdCB3cm9uZyBjb2RlIHdoZW4gaW5kZXggaW4gYW4KCWFycmF5IGlzIGNoZWNrZWQgYWZ0ZXIgdXNpbmcgdGhlIGluZGV4IGluIHRoZSBhcnJheS4KCgkqIG1ha2VncHIuYWRiIChBZGRfU3dpdGNoZXMpOiBDaGVjayBpZiB0aGVyZSBpcyBhIHBhY2thZ2UgZm9yIHRoZQoJcHJvY2Vzc29yLiBJZiB0aGVyZSBpcyBubyBwYWNrYWdlLCBkbyBub3QgbG9vayBmb3Igc3dpdGNoZXMuCgoyMDA1LTAxLTAzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2gzLmFkYiAoU3RyZWFtX09wZXJhdGlvbnNfT0spOiBQcmVkaWNhdGUgdG8gZGV0ZXJtaW5lIHdoZW4gdGhlCglnZW5lcmF0aW9uIG9mIHByZWRlZmluZWQgc3RyZWFtIG9wZXJhdGlvbnMgKHNwZWNzIGFuZCBib2RpZXMpIHNob3VsZAoJcHJvY2VlZC4gVW5kZXIgdmFyaW91cyByZXN0cmljdGlvbnMgdGhlc2Ugc3VicHJvZ3JhbXMgbXVzdCBub3QgYmUKCWdlbmVyYXRlZC4KCjIwMDUtMDEtMDMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZGI6CglEZWNsYXJlIHN1YnByb2dyYW0gaW5kZXggaW4gQnVpbGRfUlBDX1JlY2VpdmVyX0JvZHksIHRvIHJlZHVjZSB0aGUKCWFtb3VudCBvZiBQQ1Mtc3BlY2lmaWMgY29kZSBpbiBSQUNXIHN0dWJzIGdlbmVyYXRpb24uCgkoQ29weV9TcGVjaWZpY2F0aW9uKTogU2V0IEV0eXBlIG9uIGNvcGllZCBmb3JtYWwgcGFyYW1ldGVyIGVudGl0aWVzLCBhcwoJdGhpcyBpbmZvcm1hdGlvbiBpcyBuZWVkZWQgZm9yIFBvbHlPUkIgc3R1YnMgZ2VuZXJhdGlvbi4KCShQb2x5T1JCX1N1cHBvcnQuQnVpbGRfU3VicHJvZ3JhbV9SZWNlaXZpbmdfU3R1YnMpOiBSZW1vdmUgdW51c2VkCgl2YXJpYWJsZSBEeW5hbWljX0FzeW5jLgoJKEJ1aWxkX1N1YnByb2dyYW1fUmVjZWl2aW5nX1N0dWJzKTogTWFrZSBQQ1Mtc3BlY2lmaWMKCShCdWlsZF9SUENfUmVjZWl2ZXJfU3BlY2lmaWNhdGlvbik6IE1ha2UgZ2VuZXJpYyBhZ2FpbiwgYXMgcmVjZW50CgljaGFuZ2VzIGhhdmUgYWxsb3dlZCBSUEMgcmVjZWl2ZXJzIHRvIGhhdmUgdGhlIHNhbWUgcHJvZmlsZSBmb3IgYm90aAoJdmFyaWFudHMgb2YgdGhlIFBDUy4KCVJlb3JnYW5pc2UgUlBDIHJlY2VpdmVyIGdlbmVyYXRpb24gdG8gcmVkdWNlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlCglzdHJ1Y3R1cmUgb2YgR0FSTElDIGFuZCBQb2x5T1JCIFJQQyByZWNlaXZlcnMuCgkoQWRkX1JlY2VpdmluZ19TdHVic19Ub19EZWNsYXJhdGlvbnMpOiBNYWtlIHRoaXMgc3VicHJvZ3JhbQoJUENTLXNwZWNpZmljLgoJU2ltcGxpZnkgZWxhYm9yYXRpb24gY29kZSBmb3IgUkNJIHBhY2thZ2VzLgoKCSogcy1wYXJpbnQuYWRzLCBzLXBhcmludC5hZGIsIHJ0c2ZpbmQuYWRzOiBSZW9yZ2FuaXNlIFJQQyByZWNlaXZlcgoJZ2VuZXJhdGlvbiB0byByZWR1Y2UgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgc3RydWN0dXJlIG9mIEdBUkxJQyBhbmQKCVBvbHlPUkIgUlBDIHJlY2VpdmVycy4KCgkqIHMtc3RyYXR0LmFkYjogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDUtMDEtMDMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfY2g3LmFkcyAoTWFrZV9GaW5hbF9DYWxsKTogUmV3cml0ZSBjb21tZW50ICh3YXMgaW5jb3JyZWN0bHkKCWNvcGllZCBmcm9tIE1ha2VfSW5pdF9DYWxsKS4KCgkqIGV4cF9zdHJtLmFkYiAoQnVpbGRfTXV0YWJsZV9SZWNvcmRfUmVhZF9Qcm9jZWR1cmUpOiBEbyBjb21wb25lbnQKCXJlYWRzIGFuZCBhc3NpZ25tZW50cyBvbiBhIHRlbXBvcmFyeSB2YXJpYWJsZSBkZWNsYXJlZCB3aXRoIGFwcHJvcHJpYXRlCglkaXNjcmltaW5hbnRzLgoKMjAwNS0wMS0wMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBpLWMuYWRiIChUb19DKTogUmFpc2UgQ0UgaWYgc3RyaW5nIGlzIG51bGwgYW5kIEFwcGVuZF9OdWxsCgoyMDA1LTAxLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGktY3N0cmluLmFkYiAoVXBkYXRlKTogRG8gbm90IGFwcGVuZCBhIG51bGwgaW4gZm9ybSBjYWxsZWQgd2l0aCBhCglTdHJpbmcuIFRoaXMgYXZvaWRzIHVuaW50ZW5kZWQgYmVoYXZpb3IuCgoyMDA1LTAxLTAzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE3NTI3CgkqIGluaXQuYzogRml4IHdhcm5pbmdzIG9uIEZyZWUgQlNEIHNlY3Rpb24uCgoyMDA1LTAxLTAzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE2OTQ5CgkqIHNpbmZvLmFkczogRml4IG9ic29sZXRlIHJlZmVyZW5jZSB0byB4c2luZm8uc3B0IChyZXBsYWNlZCBieQoJeHNpbmZvLmFkYikuCgoyMDA1LTAxLTAzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiIChDb2xsZWN0X0FyZ3VtZW50c19BbmRfQ29tcGlsZSk6IERvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkCglsaWJyYXJpZXMgd2hlbiBVbmlxdWVfQ29tcGlsZSBpcyBUcnVlICgtdSBzd2l0Y2gpLgoJKEduYXRtYWtlKTogZGl0dG8uCgoyMDA1LTAxLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIG5hbWV0LmFkYiAoR2V0X0RlY29kZWRfTmFtZV9XaXRoX0JyYWNrZXRzKTogRml4IGNhc2Ugb2Ygbm90IGFsbG93aW5nCgl1cHBlciBjYXNlIGxldHRlciBvciB1bmRlcnNjb3JlIGFmdGVyIFcsIGFzIGFsbG93ZWQgYnkgc3BlYy4KCjIwMDUtMDEtMDMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLWRhcndpbi5hZHMsIHMtb3NpbnRlLWRhcndpbi5hZGI6IENsZWFuIHVwCglkYXJ3aW4gcG9ydCBieSB1c2luZyBwcm9wZXIgdHlwZSBkZWZpbml0aW9ucyBmcm9tIGhlYWRlciBmaWxlcy4KCVVzZSBTSUdURVJNIGluc3RlYWQgb2YgU0lHQUJSVCBmb3IgU0lHQURBQUJPUlQuCgoyMDA1LTAxLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHBhci5hZGI6IEVuaGFuY2UgZXJyb3IgbWVzc2FnZSBoYW5kbGluZyBmb3IgY29uZmlndXJhdGlvbiBmaWxlCglwcmFnbWFzLgoKMjAwNS0wMS0wMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzLWFyaXQ2NC5hZGIgKERvdWJsZV9EaXZpZGUpOiBQdXQgYmFjayBjaGFuZ2VzIHRoYXQgZ290IGFjY2lkZW50YWxseQoJcmVtb3ZlZCBkdXJpbmcgdGhlIHByZXZpb3VzIHVwZGF0ZSAodGVzdCBwcm9wZXJseSBmb3IgY2FzZSBvZiBkaXZpZGluZwoJbGFyZ2VzdCBuZWdhdGl2ZSBudW1iZXIgYnkgLTEsIHdoaWNoIGdlbmVyYXRlcyBvdmVyZmxvdykuCgoyMDA1LTAxLTAzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKEFuYWx5emVfUGFja2FnZV9JbnN0YW50aWF0aW9uKTogQ3JlYXRlIGEgc2VwYXJhdGUgbm9kZQoJdG8gdXNlIGFzIHRoZSBkZWZpbmluZyBpZGVudGlmaWVyIGZvciBhIGZvcm1hbCBwYWNrYWdlLgoJKFJlbW92ZV9QYXJlbnQpOiBJZiB0aGUgaW5zdGFuY2UgdGFrZXMgcGxhY2Ugd2l0aGluIChhbiBpbnN0YW5jZSBvZikKCWEgc2libGluZywgcHJlc2VydmUgcHJpdmF0ZSBkZWNsYXJhdGlvbnMgb2YgY29tbW9uIHBhcmVudC4KCjIwMDUtMDEtMDMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChIYXNfRml4ZWRfT3ApOiBOZXcgcHJlZGljYXRlIGluIENoZWNrX0FyaXRobWV0aWNfUGFpciwKCXRvIGRldGVybWluZSB3aGV0aGVyIG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgYSBmaXhlZC1wb2ludCB0eXBlIGZvcgoJd2hpY2ggYSB1c2VyLWRlZmluZWQgbXVsdGlwbGljYXRpb24gb3IgZGl2aXNpb24gb3BlcmF0aW9uIG1pZ2h0IGJlCglkZWZpbmVkLgoKCSogc2VtX3Jlcy5hZGIgKFZhbGlkX0NvbnZlcnNpb24pOiBUaGUgbGVnYWxpdHkgcnVsZXMgZm9yIGNvbnZlcnNpb25zCglvZiBhY2Nlc3MgdHlwZXMgYXJlIHN5bW1ldHJpYyBpbiBBZGEgMjAwNTogZWl0aGVyIGRlc2lnbmF0ZWQgdHlwZSBjYW4KCWJlIHVuY29uc3RyYWluZWQuCgoyMDA1LTAxLTAzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHMtZmlsZWlvLmFkYiAoVGVtcF9GaWxlX1JlY29yZCk6IENoYW5nZSBsZW5ndGggb2Ygc3RyaW5nIGNvbXBvbmVudAoJTmFtZSBmcm9tIExfdG1wbmFtICsgMSB0byBtYXhfcGF0aF9sZW4gKyAxLgoKMjAwNS0wMS0wMyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy10YXNpbmkuYWRzLCBzLXRhc2luaS5hZGIgKFVuZGVmZXJfQWJvcnRpb24pOiBIYW5kbGUgY2FzZSBvZgoJU2VsZl9JZC5EZWZlcnJhbF9MZXZlbCA9IDAuCgkoRG9fUGVuZGluZ19BY3Rpb24pOiBNb3ZlIHRoaXMgZnVuY3Rpb24gdG8gdGhlIHNwZWMuCgoJKiBzLXRhc3Jlbi5hZGIgKFNlbGVjdGl2ZV9XYWl0IFtUZXJtaW5hdGVfU2VsZWN0ZWRdKTogQ2FsbAoJRG9fUGVuZGluZ19BY3Rpb24gZXhwbGljaXRlbHkgd2hlbiBuZWVkZWQsIGluIGNhc2Ugd2UncmUgdXNpbmcKCU5vX0Fib3J0IHJlc3RyaWN0aW9ucy4KCgkqIHMtdGFzc3RhLmFkYiAoQ3JlYXRlX1Rhc2spOiBJZiBBYm9ydCBpcyBub3QgYWxsb3dlZCwgcmVzZXQgdGhlCglkZWZlcnJhbCBsZXZlbCBzaW5jZSBpdCB3aWxsIG5vdCBnZXQgY2hhbmdlZCBieSB0aGUgZ2VuZXJhdGVkIGNvZGUuCglLZWVwaW5nIGEgZGVmYXVsdCB2YWx1ZSBvZiAxIHdvdWxkIHByZXZlbnQgc29tZSBvcGVyYXRpb25zIChlLmcuCglzZWxlY3Qgb3IgZGVsYXkpIHRvIHByb2NlZWQgc3VjY2Vzc2Z1bGx5LgoKMjAwNS0wMS0wMyAgQmVuIEJyb3Nnb2wgIDxicm9zZ29sQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCgkqIHVnX3dvcmRzLCBnbmF0X3Vnbi50ZXhpOiBBZGRlZCBhbHBoYS1pdm1zIHRyYW5zaXRpb25pbmcgc2VjdGlvbiB0bwoJcG9ydGluZyBndWlkZSBjaGFwdGVyICh2bXMgdmVyc2lvbikuCglSZXZpc2VkIGRvYyB0aXRsZSAocmVtb3ZlZCAiZm9yIG5hdGl2ZSBwbGF0Zm9ybXMiKSBhbmQgc3VidGl0bGUuCglBZGQgZGlzY3Vzc2lvbiBvbiB3YXJuaW5nIGZsYWcgZm9yIG9ic29sZXNjZW50IGZlYXR1cmVzLiBGaXJzdCB3ZQoJbm90ZSB0aGF0IGl0IGFwcGxpZXMgdG8gb2Jzb2xldGUgR05BVCBmZWF0dXJlcywgd2hpY2ggd2FzIHByZXZpb3VzbHkKCW9taXR0ZWQuIFNlY29uZCB3ZSBjb250cmFzdCB0aGUgYmVoYXZpb3Igd2l0aCB0aGF0IG9mIHRoZSBuZXcKCUFkYSAyMDA1IEFJLTM2OCByZXN0cmljdGlvbiBOb19PYnNvbGVzY2VudF9GZWF0dXJlcy4KCVByZWxpbWluYXJ5IHJld3JpdGluZyBvZiBHTkFUICYgbGlicmFyaWVzIGNoYXB0ZXIgaW4gb3JkZXIgdG8gdGFrZQoJaW50byBhY2NvdW50IGRlZmF1bHQgcHJvamVjdCBsb2NhdGlvbnMgJiBuZXcgcHJvamVjdCBtYW5hZ2VyCgljYXBhYmlsaXRpZXMuCgoyMDA1LTAxLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGNzdGFuZC5hZGIgKENyZWF0ZV9PcGVyYXRvcnMpOiBDbGVhbiB1cCBmb3JtYXQgYW5kIGRvY3VtZW50YXRpb24gb2YKCXVuYXJ5IGFuZCBiaW5hcnkgb3BlcmF0b3IgcmVzdWx0IHRhYmxlcy4gTm8gY2hhbmdlIGluIGNvZGUsIGp1c3QKCXJlZm9ybWF0dGluZyBhbmQgYWRkaXRpb24gb2YgY29tbWVudHMuCgoJKiBlcnJvdXQuYWRzLCBnbmF0ZmluZC5hZGIsIHMtbWFjY29kLmFkcywgc2VtLmFkYiwKCXNlbV9jaDIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGF0cmVlLmFkcywgZWxpc3RzLmFkcywgbGliLmFkcywgbmFtZXQuYWRzLCBubGlzdHMuYWRzLCByZXBpbmZvLmFkcywKCXNpbnB1dC5hZHMsIHN0cmluZ3QuYWRzLCB1aW50cC5hZHMsIHVyZWFscC5hZHM6IE1pbm9yIGNsYXJpZmljYXRpb24gdG8KCWNvbW1lbnRzIGZvciBUcmVlX1JlYWQgYW5kIFRyZWVfV3JpdGUuCgoyMDA1LTAxLTAzICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBleHBfYXR0ci5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDUtMDEtMDMgIFJvbWFpbiBCZXJyZW5kb25uZXIgIDxiZXJyZW5kb0BhZGFjb3JlLmNvbT4KCgkqIGNvbXBlcnIuYWRiIChDb21waWxlcl9BYm9ydCk6IEFkZCBzcGVjaWFsaXplZCBtZXNzYWdlIGZvciBHQVAKCXZlcnNpb25zLgoKMjAwNS0wMS0wMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX3Bha2QuYWRiIChDcmVhdGVfUGFja2VkX0FycmF5X1R5cGUpOiBBZGQgYSBndWFyZCB0byBjaGVjawoJd2hldGhlciB0aGUgYW5jZXN0b3IgdHlwZSBpcyBwcml2YXRlLCBhcyBtYXkgYmUgdGhlIGNhc2Ugd2l0aCBuZXN0ZWQKCWluc3RhbnRpYXRpb25zLgoKMjAwNC0xMi0zMCAgU29oYWlsIFNvbWFuaSA8c29oYWlsQHNvaGFpbHNvbWFuaS5jb20+CgoJUFIgYWRhLzE5MTI4CgkqIHRyYW5zLmMgKGduYXRfdG9fZ251KTogRml4IHR5cG86IFVzZSBjb3JyZWN0IHJldHVybiB2YXJpYWJsZS4KCjIwMDQtMTItMjMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAbGliZXJ0eXN1cmYuZnI+CgoJKiB0cmFucy5jIChBdHRyaWJ1dGVfdG9fZ251KTogQWRqdXN0IGNhbGwgdG8gZ2V0X2lubmVyX3JlZmVyZW5jZS4KCSogdXRpbHMyLmMgKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgoyMDA0LTEyLTIyICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJhbnMuYyAobWFya192aXNpdGVkKTogU2V0IFRZUEVfU0laRVNfR0lNUExJRklFRC4KCjIwMDQtMTItMTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmFucy5jIChnaWdpKTogVXBkYXRlIGdpbXBsaWZ5X2JvZHkgY2FsbC4KCjIwMDQtMTItMDkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGduYXRfc3Vic3RpdHV0ZV9pbl90eXBlKTogUmVtb3ZlIFNFVF9UWVBFIGNhc2UuCgoyMDA0LTEyLTA3ICBFZCBGYWxpcyAgPGZhbGlzQGFkYWNvcmUuY29tPgoKCSogcy1pbnRtYW4tdnh3b3Jrcy5hZGIgKE5vdGlmeV9FeGNlcHRpb24pOiByZW1vdmVkIHVzZWxlc3MgY2hlY2sgZm9yCgljdXJyZW50IHRhc2sgYmVpbmcgc3VzcGVuZGVkLgoKCSogaW5pdC5jIChfX2duYXRfY2xlYXJfZXhjZXB0aW9uKTogYWRkZWQgdG8gcmVzZXQgVnhXb3JrcyBleGNlcHRpb24KCWNvdW50LgoJKF9fZ25hdF9tYXBfc2lnbmFsKTogcmVtb3ZlZCB0ZXN0IGZvciBjdXJyZW50IHRhc2sgYmVpbmcgc3VzcGVuZGVkLgoKMjAwNC0xMi0wNyAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogYS1leGV4cHIuYWRiIChPdGhlcnNfVmFsdWUsIEFsbF9PdGhlcnNfVmFsdWUpOiBDaGFuZ2UgaW5pdGlhbCB2YWx1ZXMKCWZyb20gMTYjQkVFRiMgdG8gMTYjN0ZGRiMgdG8gYXZvaWQgZXhjZWVkaW5nIEludGVnZXInTGFzdCBvbiAxNi1iaXQKCXRhcmdldHMgKHN1Y2ggYXMgQUFNUCkuCgoyMDA0LTEyLTA3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBhdHJlZS5hZGIgKFZpc2l0X0l0eXBlKTogQ3JlYXRlIGEgbmV3IG5hbWUgZm9yIHRoZSBnZW5lcmF0ZWQgaXR5cGUsCgliZWNhdXNlIHRoZSBiYWNrLWVuZCBtYXkgb3RoZXJ3aXNlIHRyZWF0IGl0IGFzIGEgcmVkZWZpbml0aW9uIG9mIHRoZQoJb2xkIHN5bWJvbC4KCjIwMDQtMTItMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBiYWNrX2VuZC5hZGIgKFNjYW5fQmFja19FbmRfU3dpdGNoZXMpOiBBY2NlcHQgLS1wYXJhbS4KCgkqIGxhbmctc3BlY3MuaDogQWNjZXB0IC0tcGFyYW0uCgoyMDA0LTEyLTA3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2UuYWRiIChDaGVja19NYWlucywgU3dpdGNoZXNfT2YpOiBBZGFwdCB0byBuYW1lIGNoYW5nZXMgaW4KCXBhY2thZ2UgUHJqIChDdXJyZW50X1NwZWNfU3VmZml4ID0+IEFkYV9TcGVjX1N1ZmZpeCwKCUN1cnJlbnRfQm9keV9TdWZmaXggPT4gQWRhX0JvZHlfU3VmZml4KS4KCVRha2UgaW50byBhY2NvdW50IEV4dGVybmFsbHlfQnVpbHQgYXR0cmlidXRlLgoKCSogY2xlYW4uYWRiIChJbl9FeHRlbnNpb25fQ2hhaW4pOiBBbHdheXMgcmV0dXJuIEZhbHNlIHdoZW4gb25lIG9mIHRoZQoJcGFyYW1ldGVyIGlzIE5vX1Byb2plY3QuCgkoQ2xlYW5fUHJvamVjdCk6IEFkYXB0IHRvIGNoYW5nZXMgaW4gcGFja2FnZSBQcmogKExhbmdfQWRhID0+CglBZGFfTGFuZ3VhZ2VfSW5kZXgpLgoJKEduYXRjbGVhbik6IEFkYXB0IHRvIGNoYW5nZSBpbiBwYWNrYWdlIFByai5QYXJzIChubyBwYXJhbWV0ZXIKCVByb2Nlc3NfTGFuZ3VhZ2VzIGZvciBwcm9jZWR1cmUgUGFyc2UpLgoKCSogZ25hdGNtZC5hZGIgKENhcmdfU3dpdGNoZXMpOiBOZXcgdGFibGUuCgkoR05BVENtZCk6IFB1dCBhbGwgc3dpdGNoZXMgZm9sbG93aW5nIC1jYXJncyBpbiB0aGUgQ2FyZ19Td2l0Y2hlcyB0YWJsZS4KCUFkYXB0IHRvIG5hbWUgY2hhbmdlcyBpbiBwYWNrYWdlIFByaiAoQ3VycmVudF9TcGVjX1N1ZmZpeCA9PgoJQWRhX1NwZWNfU3VmZml4LCBDdXJyZW50X0JvZHlfU3VmZml4ID0+IEFkYV9Cb2R5X1N1ZmZpeCkuCgoJKiBtbGliLXByai5hZGI6IEFkYXB0IHRvIGNoYW5nZXMgaW4gcGFja2FnZXMgUHJqIGFuZCBQcmouQ29tOiB0eXBlCglIZWFkZXJfTnVtIGFuZCBmdW5jdGlvbiBIYXNoIGFyZSBub3cgZGVjbGFyZWQgaW4gcGFja2FnZSBQcmosCglub3QgUHJqLkNvbS4KCgkqIHByai5hZGIgKFN1ZmZpeF9PZik6IE5ldyBmdW5jdGlvbi4KCShTZXQgKFN1ZmZpeCkpOiBOZXcgcHJvY2VkdXJlLgoJKEhhc2gpOiBPbmUgZnVuY3Rpb24gbW92ZWQgZnJvbSBQcmouQ29tCgkoSXNfUHJlc2VudCwgTGFuZ3VhZ2VfUHJvY2Vzc2luZ19EYXRhX09mKTogTmV3IGZ1bmN0aW9ucwoJKFNldCk6IFR3byBuZXcgcHJvY2VkdXJlcwoJKEFkZF9MYW5ndWFnZV9OYW1lLCBEaXNwbGF5X0xhbmd1YWdlX05hbWUpOiBOZXcgcHJvY2VkdXJlcwoKCSogcHJqLmFkczogKFN1ZmZpeF9PZik6IE5ldyBmdW5jdGlvbgoJKFNldCAoU3VmZml4KSk6IE5ldyBwcm9jZWR1cmUKCUFkZCBzZXZlcmFsIHR5cGVzIGFuZCB0YWJsZXMgZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnQuCgkoSGVhZGVyX051bSk6IFR5cGUgbW92ZWQgZnJvbSBQcmouQ29tCgkoSGFzaCk6IFR3byBmdW5jdGlvbnMgbW92ZWQgZnJvbSBQcmouQ29tCgkoSXNfUHJlc2VudCwgTGFuZ3VhZ2VfUHJvY2Vzc2luZ19EYXRhX09mKTogTmV3IGZ1bmN0aW9ucwoJKFNldCk6IFR3byBuZXcgcHJvY2VkdXJlcwoJKEFkZF9MYW5ndWFnZV9OYW1lLCBEaXNwbGF5X0xhbmd1YWdlX05hbWUpOiBOZXcgcHJvY2VkdXJlcwoJKE5hbWluZyk6IENvbXBvbmVudCBuYW1lIGNoYW5nZXM6CglDdXJyZW50X1NwZWNfU3VmZml4ID0+IEFkYV9TcGVjX1N1ZmZpeCwKCUN1cnJlbnRfQm9keV9TdWZmaXggPT4gQWRhX0JvZHlfU3VmZml4LiBBZGQgbmV3IGNvbXBvbmVudHM6CglJbXBsX1N1ZmZpeGVzLCBTdXBwX1N1ZmZpeGVzLgoJKFByb2plY3RfRGF0YSk6IE5ldyBjb21wb25lbnRzOiBFeHRlcm5hbGx5X0J1aWx0LCBTdXBwX0xhbmd1YWdlcywKCUZpcnN0X0xhbmd1YWdlX1Byb2Nlc3NpbmcsIFN1cHBfTGFuZ3VhZ2VfUHJvY2Vzc2luZywgRGVmYXVsdF9MaW5rZXIsCglEZWZhdWx0X0xpbmtlcl9QYXRoLgoKCSogcHJqLWF0dHIuYWRiOiBBZGQgbmV3IGF0dHJpYnV0ZXMgQWRhX1Jvb3RzIGFuZCBFeHRlcm5hbGx5X0J1aWx0IGFuZAoJbmV3IHBhY2thZ2UgTGFuZ3VhZ2VfUHJvY2Vzc2luZyB3aXRoIGl0cyBhdHRyaWJ1dGVzIChDb21waWxlcl9Ecml2ZXIsCglDb21waWxlcl9LaW5kLCBEZXBlbmRlbmN5X09wdGlvbiwgQ29tcHV0ZV9EZXBlbmRlbmN5LCBJbmNsdWRlX09wdGlvbiwKCUJpbmRlcl9Ecml2ZXIsIERlZmF1bHRfTGlua2VyKS4KCgkqIHByai1jb20uYWRzLCBwcmotY29tLmFkYiAoSGFzaCk6IEZ1bmN0aW9uIG1vdmVkIHRvIHBhY2thZ2UgUHJqLgoJKEhlYWRlcl9OdW0pOiBUeXBlIG1vdmVkIHRvIHBhY2thZ2UgUHJqCgoJKiBwcmotZW52LmFkYjogQWRhcHQgdG8gbmFtZSBjaGFuZ2VzIGluIHBhY2thZ2UgUHJqCgkoQ3VycmVudF9TcGVjX1N1ZmZpeCA9PiBBZGFfU3BlY19TdWZmaXgsCglDdXJyZW50X0JvZHlfU3VmZml4ID0+IEFkYV9Cb2R5X1N1ZmZpeCkuCgoJKiBwcmotZXh0LmFkYjogQWRkIHRoZSBkZWZhdWx0IHByb2plY3QgZGlyICg8cHJlZml4Pi9sb2cvZ25hdCkgYnkKCWRlZmF1bHQgdG8gdGhlIHByb2plY3QgcGF0aCwgZXhjZXB0IHRoZSAiLSIgaXMgb25lIG9mIHRoZSBkaXJlY3RvcmllcwoJaW4gZW52IHZhciBBREFfUFJPSkVDVF9QQVRILgoJKEN1cnJlbnRfUHJvamVjdF9QYXRoKTogR2xvYmFsIHZhcmlhYmxlLCByZXBsYWNpbmcgUHJvamVjdF9QYXRoCgl0aGF0IHdhcyBpbiB0aGUgYm9keSBvZiBQcmouUGFydC4KCShQcm9qZWN0X1BhdGgpOiBOZXcgZnVuY3Rpb24KCShTZXRfUHJvamVjdF9QYXRoKTogTmV3IHByb2NlZHVyZQoJSW5pdGlhbGl6ZSBDdXJyZW50X1Byb2plY3RfUGF0aCBkdXJpbmcgZWxhYm9yYXRpb24gb2YgdGhlIHBhY2thZ2UKCVJlbW92ZSBkZXBlbmRlbmN5IG9uIFByai5Db20sIG5vIGxvbmdlciBuZWVkZWQKCgkqIHByai1leHQuYWRzIChQcm9qZWN0X1BhdGgpOiBOZXcgZnVuY3Rpb24KCShTZXRfUHJvamVjdF9QYXRoKTogTmV3IHByb2NlZHVyZQoKCSogcHJqLW5tc2MuYWRiIChCb2R5X1N1ZmZpeF9PZik6IE5ldyBmdW5jdGlvbi4gUmV0dXJucyAuPGxhbmc+IHdoZW4gbm8KCXN1ZmZpeCBpcyBkZWZpbmVkIGZvciBsYW5ndWFnZSA8bGFuZz4uCgkoRmluZF9Tb3VyY2VzLCBSZWNvcmRfT3RoZXJfU291cmNlcyk6IFVzZSBCb2R5X1N1ZmZpeF9PZiwgaW5zdGVhZCBvZgoJYWNjZXNzaW5nIGRpcmVjdGx5IHRoZSBjb21wb25lbnRzIG9mIE5hbWluZy4KCShMb29rX0Zvcl9Tb3VyY2VzKTogVXNlIFNldCAoU3VmZml4KSB0byBzZXQgdGhlIHN1ZmZpeCBvZiBhIGxhbmd1YWdlLgoJUmVvcmdhbmlzZSBvZiB0aGlzIHBhY2thZ2UuCglCcmVhayBwcm9jZWR1cmUgQ2hlY2sgaW4gc2V2ZXJhbCBwcm9jZWR1cmVzLgoKCSogcHJqLW5tc2MuYWRzOiBSZXBsYWNlIGFsbCBwcm9jZWR1cmVzIChBZGFfQ2hlY2ssCglPdGhlcl9MYW5ndWFnZXNfQ2hlY2sgYW5kIExhbmd1YWdlX0luZGVwZW5kZW50X0NoZWNrKSB3aXRoIGEgc2luZ2xlCglwcm9jZWR1cmUgQ2hlY2suCgoJKiBwcmotcGFycy5hZHMsIHByai1wYXJzLmFkYiAoUGFyc2UpOiBSZW1vdmUgcGFyYW1ldGVyCglQcm9jZXNzX0xhbmd1YWdlcywgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIHByai1wYXJ0LmFkYiAoUHJvamVjdF9QYXRoKTogTW92ZSB0byB0aGUgYm9keSBvZiBQcmouRXh0IGFzCglDdXJyZW50X1Byb2plY3RfUGF0aC4KCVJlbW92ZSBlbGFib3JhdGlvbiBjb2RlLCBtb3ZlZCB0byB0aGUgYm9keSBvZiBQcmouRXh0CglVc2UgbmV3IGZ1bmN0aW9uIFByai5FeHQuUHJvamVjdF9QYXRoIGluc3RlYWQgb2Ygb2xkIHZhcmlhYmxlCglQcm9qZWN0X1BhdGguCgkoUG9zdF9QYXJzZV9Db250ZXh0X0NsYXVzZSk6IEdldCBSZXNvbHZlZF9QYXRoIGFzIGEgY2FzZS1zZW5zaXRpdmUgcGF0aC4KCVdoZW4gY29tcGFyaW5nIHdpdGggcHJvamVjdCBwYXRocyBvbiB0aGUgc3RhY2ssIGZpcnN0IHB1dCB0aGUgcmVzb2x2ZWQKCXBhdGggaW4gY2Fub25pY2FsIGNhc2UuCgkoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBTZXQgdGhlIHBhdGggbmFtZSBvZiB0aGUgcHJvamVjdCBmaWxlIGluIHRoZQoJdHJlZSB0byB0aGUgbm9ybWFsaXplZCBwYXRoLgoKCSogcHJqLXByb2MuYWRzLCBwcmotcHJvYy5hZGIgKENoZWNrLCBSZWN1cnNpdmVfQ2hlY2ssIFByb2Nlc3MpOiBSZW1vdmUKCXBhcmFtZXRlciBQcm9jZXNzX0xhbmd1YWdlcywgbm8gbG9uZ2VyIG5lZWRlZC4KCShSZWN1cnNpdmVfQ2hlY2spOiBDYWxsIFByai5ObXNjLkNoZWNrLCBpbnN0ZWFkIG9mIEFkYV9DaGVjayBhbmQKCU90aGVyX0xhbmd1YWdlc19DaGVjay4KCgkqIHByai10cmVlLmFkcyAoUHJvamVjdF9OYW1lX0FuZF9Ob2RlKTogTmV3IGNvbXBvbmVudCBDYW5vbmljYWxfUGF0aAoJdG8gc3RvcmUgdGhlIHJlc29sdmVkIGNhbm9uaWNhbCBwYXRoIG9mIHRoZSBwcm9qZWN0IGZpbGUuCglSZW1vdmUgZGVwZW5kZW5jeSB0byBQcmouQ29tLCBubyBsb25nZXIgbmVlZGVkCgoJKiBwcmotdXRpbC5hZGI6IEFkYXB0IHRvIG5hbWUgY2hhbmdlcyBpbiBwYWNrYWdlIFByagoJKEN1cnJlbnRfU3BlY19TdWZmaXggPT4gQWRhX1NwZWNfU3VmZml4LCBDdXJyZW50X0JvZHlfU3VmZml4ID0+CglBZGFfQm9keV9TdWZmaXgpLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYjogTmV3IHN0YW5kYXJkIG5hbWVzOiBBZGFfUm9vdHMsIEJpbmRlcl9Ecml2ZXIsCglDb21waWxlcl9Ecml2ZXIsIENvbXBpbGVyX0tpbmQsIENvbXB1dGVfRGVwZW5kZW5jeSwgRGVmYXVsdF9MaW5rZXIsCglFeHRlcm5hbGx5X0J1aWx0LCBJbmNsdWRlX09wdGlvbiwgTGFuZ3VhZ2VfUHJvY2Vzc2luZy4KCgkqIG1ha2VncHIuYWRiOiBOdW1lcm91cyBjaGFuZ2VzIGR1ZSB0byBjaGFuZ2VzIGluIHBhY2thZ2VzCglQcmogYW5kIFByai5ObXNjLgoKCSogZ25hdGxzLmFkYjogQWRkIHRoZSBkZWZhdWx0IHByb2plY3QgZGlyICg8cHJlZml4Pi9sb2cvZ25hdCkgYnkKCWRlZmF1bHQgdG8gdGhlIHByb2plY3QgcGF0aCwgZXhjZXB0IHdoZSAiLSIgaXMgb25lIG9mIHRoZSBkaXJlY3RvcmllcwoJaW4gZW52IHZhciBBREFfUFJPSkVDVF9QQVRILgoJKEduYXRscyk6IEluIHZlcmJvc2UgbW9kZSwgYWRkIHRoZSBuZXcgc2VjdGlvbiAiUHJvamVjdCBTZWFyY2ggUGF0aDoiCgoyMDA0LTEyLTA3ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGRlYnVnLmFkYjogRG9jdW1lbnQgdGhhdCAtZ25hdGRBIGF1dG9tYXRpY2FsbHkgc2V0cyAtZ25hdFIzbQoKCSogZ25hdDFkcnYuYWRiIChHbmF0MWRydik6IElmIGRlYnVnIGZsYWcgQSBzZXQsIHRoZW4gYXV0b21hdGljYWxseQoJc2V0IC1nbmF0UjNtIG1vZGUuCgoJKiByZXBpbmZvLmFkYiAoTGlzdF9SZXBfSW5mbyk6IFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIG9mIC1nbmF0ZEEKCWZsYWcuIE5vIGxvbmdlciBuZWVkZWQgbm93IHRoYXQgd2UgaGFuZGxlIHRoaXMgaW4gZ25hdDFkcnYuYWRiLgoKCSogcmVwaW5mby5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNC0xMi0wNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCSAgICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKG1heWJlX3BhZF90eXBlKTogVXNlIFRZUEVfU0laRV9VTklUIG9mIHRoZSBpbnB1dCB0eXBlIGZvcgoJVFlQRV9TSVpFX1VOSVQgb2YgcmVzdWx0IHR5cGUgaWYgU0laRSBpcyBub3Qgc3BlY2lmaWVkLgoJKG1ha2VfYWxpZ25pbmdfdHlwZSk6IFBhc3MgLTEgYXMgQUREUkVTU0FCTEUgdG8gcHJldmVudCB0aGUgY3JlYXRpb24KCW9mIGEgYml0ZmllbGQsIHdoaWNoIHdlIGtub3cgaXMgdXNlbGVzcyBhbmQgY2F1c2VzIHRyb3VibGUgYmVjYXVzZSBvZgoJYWxpZ25tZW50IGltcGxpY2F0aW9ucy4KCgkqIHV0aWxzLmMgKGNyZWF0ZV92YXJfZGVjbCk6IFNldCBERUNMX0NPTU1PTiBhZ2FpbiBvbiB0YXJnZXRzIHdpdGhvdXQKCUJTUyBzZWN0aW9ucy4KCShwcm9jZXNzX2F0dHJpYnV0ZXMpOiBDbGVhciBERUNMX0NPTU1PTiBhZ2FpbiB3aGVuIGEgc2VjdGlvbiBhdHRyaWJ1dGUKCWlzIHByZXNlbnQuCgkoZmluaXNoX3JlY29yZF90eXBlKTogSW5kZXBlbmRlbnRseSB0cmFjayBpZiBSRUNPUkRfVFlQRSBoYXMgU0laRSBhbmQvb3IKCVNJWkVfVU5JVCBhbHJlYWR5IHNldCBhbmQgdXNlIHRvIGNvbXB1dGUgZmluYWwgU0laRSBhbmQgU0laRV9VTklULgoJKGNyZWF0ZV9maWVsZF9kZWNsKTogU3BlY2lhbCBjYXNlIEFERFJFU1NBQkxFIG5lZ2F0aXZlIHRvIG1lYW4KCSJubyBiaXRmaWVsZCBjcmVhdGlvbiIsIHRvIGJlIHVzZWQgYnkgbWFrZV9hbGlnbmluZ190eXBlLiBEb24ndAoJcmVzdHJpY3QgYml0ZmllbGQgY3JlYXRpb24gdG8gIUFERFJFU1NBQkxFIGFueSBtb3JlLCBhcyBzb21lIEJMS21vZGUKCWZpZWxkcyBjbGFpbWVkIGFkZHJlc3NhYmxlIHN0aWxsIGhhdmUgdG8gYmUgYml0ZmllbGRzLiBVc2UKCXZhbHVlX2ZhY3Rvcl9wIGluc3RlYWQgb2YgYSByYXcgYmlub3AgY29uc3RydWN0aW9uIHRvIGNoZWNrIGZvciB0aGUKCXBvc2l0aW9uJ3MgYWxpZ25tZW50LgoKMjAwNC0xMi0wNyAgR2VlcnQgQm9zY2ggIDxib3NjaEBhZGFjb3JlLmNvbT4KCgkqIGV2YWxfZmF0LmFkYjogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCjIwMDQtMTItMDcgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX0luZGV4ZWRfQ29tcG9uZW50KTogRm9yIGFuIGluZGV4ZWQgY29tcG9uZW50Cgl3aXRoIGFuIGltcGxpY2l0IGRlcmVmZXJlbmNlIGFzIGl0cyBwcmVmaXgsIHVzZQoJSW5zZXJ0X0V4cGxpY2l0X0RlcmVmZXJlbmNlIGluc3RlYWQgb2YgbWVyZWx5IHJld3JpdGluZyB0aGUgcHJlZml4IGludG8KCWFuIGV4cGxpY2l0IGRlcmVmZXJlbmNlLiBUaGlzIGVuc3VyZXMgdGhhdCBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwKCXByZWZpeCBpcyBnZW5lcmF0ZWQsIGlmIGFwcHJvcHJpYXRlLgoKCSogc2VtX3V0aWwuYWRiIChJbnNlcnRfRXhwbGljaXRfRGVyZWZlcmVuY2UpOiBXaGVuIGFuIGltcGxpY2l0CglkZXJlZmVyZW5jZSBpcyByZXdyaXR0ZW4gdG8gYW4gZXhwbGljaXQgb25lLCBnZW5lcmF0ZSBhIHJlZmVyZW5jZSB0bwoJdGhlIGVudGl0eSBkZW5vdGVkIGJ5IGl0cyBwcmVmaXggdXNpbmcgdGhlIG9yaWdpbmFsIHByZWZpeCBub2RlLCBzbwoJdGhlIGRlcmVmZXJlbmNlIGNhbiBiZSBwcm9wZXJseSByZWNvcmRlZCBhcyBhIHJlYWQgb2YgdGhlIGRlbm90ZWQKCWFjY2VzcyB2YWx1ZSwgaWYgYXBwcm9wcmlhdGUuCgoJKiBzZW1fd2Fybi5hZGIgKE91dHB1dF9VbnJlZmVyZW5jZWRfTWVzc2FnZXMpOiBEbyBub3QgYWJzdGFpbiBmcm9tCgllbWl0dGluZyAnYXNzaWduZWQgYnV0IG5ldmVyIHJlYWQnIHdhcm5pbmcgb24gYSB2YXJpYWJsZSBvbiB0aGUgYmFzaXMKCXRoYXQgaXQgaGFzIGFuIGFjY2VzcyB0eXBlLgoJKENoZWNrX1JlZmVyZW5jZXMpOiBFbWl0IHVucmVmZXJlbmNlZCB3YXJuaW5nIHdoZW4gdGhlIHNjb3BlIGlzIGEKCXN1YnByb2dyYW0gYm9keS4KCjIwMDQtMTItMDcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IEFkZCBjb21tZW50IG9uIGhhbmRsaW5nIG9mIGJhY2sgZW5kCglpbnRyaW5zaWMKCgkqIGV4cF9pbnRyLmFkYiAoRXhwYW5kX0ludHJpbnNpY19DYWxsKTogSWdub3JlIHVucmVjb2duaXplZCBpbnRyaW5zaWMsCglsZWF2aW5nIGNhbGwgdW5jaGFuZ2VkLgoJVGhpcyBkZWFscyB3aXRoIHRoZSBjYXNlIHdoZXJlIHRoZSBwcmFnbWEgSW1wb3J0IHNwZWNpZmllZAoJYW4gZXh0ZXJuYWwgbmFtZSwgdG8gYmUgaGFuZGxlZCBieSB0aGUgYmFjayBlbmQuCgoJKiBzZW1fcHJhZy5hZGIgKFByb2Nlc3NfSW1wb3J0X09yX0ludGVyZmFjZSk6IERvIG5vdCBjaGVjayB2YWxpZGl0eSBvZgoJc3VicHJvZ3JhbSB3aGljaCBpcyBJbXBvcnRlZCB3aXRoIGNvbnZlbnRpb24gSW50cmluc2ljIGlmIGFuCglFeHRlcm5hbF9OYW1lIGFyZ3VtZW50IGlzIHNwZWNpZmllZC4KCShQcm9jZXNzX0ltcG9ydF9Pcl9JbnRlcmZhY2UpOiBQcm9wZXJseSBkaWFnbm9zZSBsaW5rIG5hbWUgYXJndW1lbnQuCgkoSW5saW5pbmdfTm90X1Bvc3NpYmxlKTogTmV3IG5hbWUgZm9yIENhbm5vdF9JbmxpbmUsIHRvIGF2b2lkIGNvbmZ1c2lvbgoJd2l0aCBTZW1fQ2g2LkNhbm5vdF9JbmxpbmUuCgkoUHJvY2Vzc19JbmxpbmUpOiBQcm92aWRlIHNlcGFyYXRlIHdhcm5pbmcgZm9yIGluYXBwbGljYWJsZSBpbmxpbmUKCXByYWdtYS4KCShDYW5ub3RfSW5saW5lKTogUmVqZWN0IHN1YnByb2dyYW1zIHRoYXQgaGF2ZSBhbiBhdF9lbmQgaGFuZGxlciwgc28gdGhhdAoJdHJlYXRtZW50IGlzIHVuaWZvcm0gb24gZGlmZmVyZW50IHRhcmdldHMuCgoyMDA0LTEyLTA3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2g3LmFkYiAoRXhwYW5kX0NsZWFudXBfQWN0aW9ucyk6IElmIHN0YXRlbWVudCBzZXF1ZW5jZSBvZgoJY29uc3RydWN0IGlzIHJld3JpdHRlbiwgcHJlc2VydmUgZW5kIGxhYmVsIHRvIHBlcm1pdCBzb3VyY2UgbmF2aWdhdGlvbi4KCjIwMDQtMTItMDcgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZGIgKFNwZWNpZmljX0J1aWxkX0dlbmVyYWxfQ2FsbGluZ19TdHVicywKCVNwZWNpZmljX0J1aWxkX1N0dWJfVGFyZ2V0KTogTmV3IHN1YnByb2dyYW1zLgoJKEJ1aWxkX1N1YnByb2dyYW1fQ2FsbGluZ19TdHVicyk6IE1ha2UgdGhpcyBwcm9jZWR1cmUgaW5kZXBlbmRlbnQgZnJvbQoJdGhlIFBDUyBpbXBsZW1lbnRhdGlvbiB1c2VkLCB1c2luZyB0aGUgYWJvdmUgUENTLWN1c3RvbWl6ZWQgc3VicHJvZ3JhbXMuCglNaW5vciByZWZvcm1hdHRpbmcuCgkoUG9seU9SQl9TdXBwb3J0LkhlbHBlcnMpOiBOZXcgc3VidW5pdCBjb250YWluaW5nIHN1cHBvcnRpbmcgc3VicHJvZ3JhbXMKCWZvciBnZW5lcmF0aW9uIG9mIERTQSBjb2RlIHRhcmdldGVkIHRvIHRoZSBQb2x5T1JCIFBDUy4KCShBZGRfU3R1Yl9UeXBlKTogUmV3cml0ZSB0byBpc29sYXRlIHRoZSBwYXJ0cyB0aGF0IGFyZSBzcGVjaWZpYyB0byBvbmUKCWltcGxlbWVudGF0aW9uIG9mIHRoZSBwYXJ0aXRpb24gY29tbXVuaWNhdGlvbiBzdWJzeXN0ZW0gaW4gYW5jaWxsYXJ5CglzdWJwcm9ncmFtcy4KCShTcGVjaWZpY19CdWlsZF9TdHViX1R5cGUsIEdBUkxJQ19TdXBwb3J0LkJ1aWxkX1N0dWJfVHlwZSwKCVBvbHlPUkJfU3VwcG9ydC5CdWlsZF9TdHViX1R5cGUpOiBOZXcgc3Vicm9ncmFtcyBjb250YWluaW5nIHRoZQoJUENTLXNwZWNpZmljIHBhcnQgb2YgQWRkX1N0dWJfVHlwZS4KCShJbnNlcnRfUGFydGl0aW9uX0NoZWNrKTogVXNlIHJ1bnRpbWUgbGlicmFyeSBmdW5jdGlvbiB0byBwZXJmb3JtCglFLjQoMTkpIGNoZWNrLgoKCSogcnRzZmluZC5hZHM6IE5ldyBlbnRpdHkgU3lzdGVtLlBvbHlPUkJfSW50ZXJmYWNlLk1ha2VfUmVmCgkoUkVfU2FtZV9QYXJ0aXRpb24pOiBOZXcgZW50aXR5LCBmcm9tIHMtcGFyaW50LgoKCSogcy1wYXJpbnQuYWRzLCBzLXBhcmludC5hZGIgKFNhbWVfUGFydGl0aW9uKTogTmV3IHN1YnByb2dyYW0uCgoyMDA0LTEyLTA3ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBnbmF0bWVtLmFkYiwgZ25hdG5hbWUuYWRiLCBnbmF0c3ltLmFkYiwgZ3ByY21kLmFkYiwgdm1zX2NvbnYuYWRiOgoJT3V0cHV0IHRoZSBjb3B5cmlnaHQgbWVzc2FnZSBvbiBhIHNlcGFyYXRlIGxpbmUgZnJvbSB0aGUgdmVyc2lvbgoJbWVzc2FnZS4KCjIwMDQtMTItMDcgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgoKCSogZy1vc19saWIuYWRiIChTcGF3bik6IEV4cGxpY2l0bHkgaW5pdGlhbGl6ZSBTYXZlZF9FcnJvciB0byBhdm9pZCBhCgljb21waWxlLXRpbWUgd2FybmluZy4KCjIwMDQtMTItMDcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1yZWdwYXQuYWRiOiAoTWF0Y2gpOiBDaGFuZ2UgYSBtaXN1c2Ugb2Ygb3IgdG8gb3IgZWxzZQoKMjAwNC0xMi0wNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogbGliLXhyZWYuYWRiOgoJKEdlbmVyYXRlX1JlZmVyZW5jZSk6IEhhbmRsZSBwcm9wZXJseSBhIHJlZmVyZW5jZSB0byBhbiBlbnRyeSBmb3JtYWwsCgkgd2hlbiBhbiBhY2NlcHQgc3RhdGVtZW50IGhhcyBhIHByYWdtYSBVbnJlZmVyZW5jZWQgZm9yIGl0LgoKCSogc2VtX2NoOS5hZGIgKEFuYWx5emVfQWNjZXB0X1N0YXRlbWVudCk6IFJlc2V0IHRoZSBJc19SZWZlcmVuY2VkIGZsYWcKCWFuZCB0aGUgSGFzX1ByYWdtYV9VbnJlZmVyZW5jZWQgZmxhZyBmb3IgZWFjaCBmb3JtYWwgYmVmb3JlIGFuYWx5emluZwoJdGhlIGJvZHksIHRvIGVuc3VyZSB0aGF0IHdhcm5pbmdzIGFyZSBwcm9wZXJseSBlbWl0dGVkIGZvciBlYWNoIGFjY2VwdAoJc3RhdGVtZW50IG9mIGEgZ2l2ZW4gdGFzayBlbnRyeS4KCjIwMDQtMTItMDcgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIHN1cHBvcnQgZm9yIGZvcmVpZ24gdGhyZWFkcyBvbiBWTVMuCgoyMDA0LTEyLTA3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogbWlzYy5jIChnbmF0X3R5cGVzX2NvbXBhdGlibGVfcCwgTEFOR19IT09LU19UWVBFU19DT01QQVRJQkxFX1ApOgoJUmVtb3ZlLgoJKExBTkdfSE9PS1NfUkVEVUNFX0JJVF9GSUVMRF9PUEVSQVRJT05TKTogTmV3LgoKCSogYWRhaW50Lmg6IChfX2duYXRfZHVwLCBfX2duYXRfZHVwMik6IEFkZCBtaXNzaW5nIGRlY2xzLgoKCSogdHJhbnMuYyAoRXhjZXB0aW9uX0hhbmRsZXJfdG9fZ251X3NqbGopOiBBbHNvIGhhbmRsZSByZW5hbWVkCglleGNlcHRpb24uCgkoY2FsbF90b19nbnUpOiBDb252ZXJ0IHRvIGFjdHVhbCBERUNMX0FSR19UWVBFLCBub3QgdmFyaWFudCBvZiBpdC4KCjIwMDQtMTItMDcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogbmxpc3RzLmFkYiAoUHJlcGVuZF9EZWJ1Zyk6IFJlbW92ZSBwYXJhbWV0ZXJzIGFuZCBuZXN0IHdpdGhpbgoJUHJlcGVuZC4KCShSZW1vdmVfTmV4dF9EZWJ1Zyk6IFNhbWUgZml4CgoJKiBubGlzdHMuYWRzOiBDb3JyZWN0IGJhZCBjb21tZW50cyBmb3IgUHJldiBhbmQgUHJldl9Ob25fUHJhZ21hICh3ZSBkbwoJbWFpbnRhaW4gYmFjayBwb2ludGVycyBub3csIHRob3VnaCB3ZSBkaWQgbm90IHVzZWQgdG8sIGFuZCBjb21tZW50cwoJd2VyZSBvdXQgb2YgZGF0ZSkuCgkoUHJlcGVuZCk6IFJlbW92ZSBwcmFnbWEgSW5saW5lLgoJKFJlbW92ZV9OZXh0KTogU2FtZSBjbGVhbnVwCgoyMDA0LTEyLTA3ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNC5hZGIgKFByb2Nlc3NfSW1wbGljaXRfRGVyZWZlcmVuY2VfUHJlZml4KTogTmV3IHN1YnByb2dyYW0KCXVzZWQgdG8gcmVjb3JkIGFuIGltcGxpY2l0IGRlcmVmZXJlbmNlIGFzIGEgcmVhZCBvcGVyYXRpb24gb24gaXRzCglwcmVmaXggd2hlbiBvcGVyYXRpbmcgdW5kZXIgLWduYXRjLiBOZWNlc3NhcnkgdG8gYXZvaWQgc3B1cmlvdXMKCSd2YXJpYWJsZSBhc3NpZ25lZCBidXQgbmV2ZXIgcmVhZCcgd2FybmluZ3MgaW4gdGhhdCBtb2RlLgoJKFByb2Nlc3NfSW5kZXhlZF9Db21wb25lbnQsIEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogV2hlbiB0aGUgcHJlZml4CglpcyBhIG5vbi1vdmVybG9hZGVkIGltcGxpY2l0IGRlcmVmZXJlbmNlLCBjYWxsIHRoZSBhYm92ZSBzdWJwcm9ncmFtIHRvCgllbnN1cmUgcHJvcGVyIHJlY29yZGluZyBvZiByZWZlcmVuY2VzLgoKMjAwNC0xMi0wNyAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNS5hZGIgKE9uZV9Cb3VuZCk6IFJlbW92ZSBjYWxsIHRvIFJlc29sdmUsIGFzIHRoZSBib3VuZCBuZWVkcwoJdG8gYmUgcmVzb2x2ZWQgbGF0ZXIgYXMgcGFydCBvZiBBbmFseXplX0l0ZXJhdGlvbl9TY2hlbWUncyBjYWxsIHRvCglNYWtlX0luZGV4LgoKMjAwNC0xMi0wNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoOC5hZGIgKEZpbmRfVHlwZSk6IElmIG5vZGUgaXMgYSByZWZlcmVuY2UgdG8gJ0Jhc2UgYW5kIHRoZQoJcHJlZml4IGlzIG5vdCBhIHNjYWxhciB0eXBlLCBwbGFjZSBlcnJvciBtZXNzYWdlIG9uIHByZWZpeCwgbm90IG9uCgl0eXBlIGVudGl0eS4KCjIwMDQtMTItMDcgIEJlcm5hcmQgQmFubmVyICA8YmFubmVyQGFkYWNvcmUuY29tPgoKCSogdnhhZGRyMmxpbmUuYWRiOiBBZGQgc3VwcG9ydCBmb3IgeDg2IHZ4d29ya3MKCjIwMDQtMTItMDcgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnLXNvY2tldC5hZHMgKEdldF9Ib3N0X0J5X0FkZHJlc3MsIEdldF9Ib3N0X0J5X05hbWUpOiBDbGFyaWZ5Cglkb2N1bWVudGF0aW9uIG9mIHRoZSBiZWhhdmlvdXIgb2YgdGhlc2UgZnVuY3Rpb25zIHdoZW4gcGFzc2VkIGFuIElQCglhZGRyZXNzIHRoYXQgaGFzIG5vIHJlY29yZCBpbiB0aGUgc3lzdGVtIGhvc3RzIGRhdGFiYXNlIGFuZCBubyByZXZlcnNlCglyZWNvcmQgaW4gdGhlIEROUy4KCgkqIGNzdGFuZC5hZGIsIGEtdGFncy5hZHM6IEZpeCB0eXBvcyBpbiBjb21tZW50LgoKMjAwNC0xMi0wNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfY2gyLmFkYiwgZXhwX2NoMy5hZGIsIGV4cF9jaDUuYWRiLCBleHBfY2g4LmFkYiwKCWV4cF9jaDkuYWRiLCBleHBfcGFrZC5hZGIsIGludGVyZmFjLmFkcywgc2VtX2NoNi5hZGIsCglzZW1fY2g3LmFkYiwgc2VtX2NoMTAuYWRiLCBzZW1fY2gxMy5hZGIsIHNlbV9jaDMuYWRiLAoJcy1wb29zaXouYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIG1ha2UuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUFkZCBzb21lID8/PyBjb21tZW50cyBhc2tpbmcgZm9yIG1vcmUgY29tbWVudHMKCgkqIHMtcG9vc2l6LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglBZGQgY29tbWVudHMgb24gYWxpZ25tZW50IHJlcXVpcmVtZW50CgoJKiBzaW5mby5hZHM6IFJlbW92ZSBvYnNvbGV0ZSBjb21tZW50IGFuZCBmaXggdHlwby4KCjIwMDQtMTItMDcgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoJICAgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFkYWNvcmUuY29tPgoKCSogZ25hdF91Z24udGV4aTogVXBkYXRlIHRoZSBzZWN0aW9uICJUaGUgR05BVCBEcml2ZXIgYW5kIFByb2plY3QKCUZpbGVzIiB3aXRoIHRoZSBuZXcgdG9vbCBhbmQgcGFja2FnZSBuYW1lcy4KCVJlZm9ybWF0dGluZyB0byBzdXBwcmVzcyBtb3N0IG9mIHRoZSB3YXJuaW5ncyBmb3IgbGluZSB0b28gbG9uZwoJRG9jdW1lbnQgdGhlIG5ldyBzZWN0aW9uICJQcm9qZWN0IFNlYXJjaCBQYXRoOiIgaW4gdGhlIG91dHB1dCBvZgoJZ25hdGxzIC12LgoJQWRkIGduYXRtZXRyaWMgc2VjdGlvbgoKMjAwNC0xMi0wNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiB2bXNfZGF0YS5hZHM6IENvcnJlY3QgR05BVCBNRVRSSUMgcXVhbGlmaWVyczogLUktLCAtSWRpciBhbmQKCS1nbmF0ZWM9IGFyZSBub3QgZGlyZWN0IHN3aXRjaGVzIG9mIGduYXRtZXRyaWMuIENoYW5nZWQgLWVpcyB0byAtZXBzCglhbmQgLWVpdCB0byAtZXB0LiBBZGRlZCBxdWFsaWZpZXIKCS9FTEVNRU5UX01FVFJJQ1M9Q09OU1RSVUNUX05FU1RJTkdfTUFYIGZvciBuZXcgc3dpdGNoIC1lYy4KCjIwMDQtMTEtMjcgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKGFkYS90cmFucy5vKTogRGVwZW5kIG9uICQoRVhQUl9IKS4KCjIwMDQtMTEtMjUgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGctc29jdGhpLW1pbmd3LmFkcywgZy1zb2N0aGktdm1zLmFkczogUmVtb3ZlIENfUmVhZCBhbmQgQ19Xcml0ZSBmcm9tCglpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB1bml0IEdOQVQuU29ja2V0cy5UaGluLAoJYXMgdGhlaXIgdXNhZ2UgZm9yIHNvY2tldHMgaXMgbm9uLXBvcnRhYmxlICh1c2luZyB0aGUgcmVhZCBhbmQgd3JpdGUKCWZ1bmN0aW9ucyBmcm9tIHRoZSBzeXN0ZW0gcnVudGltZSBsaWJyYXJ5IGlzIGZpbmUgb24gVU5JWCBidXQgd29uJ3QKCXdvcmsgdW5kZXIgV2luZG93cykuCgoJKiBtaW5ndzMyLmg6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoKMjAwNC0xMS0yNSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYWRhLXRyZWUuaDogTWlub3IgcmVmb3JtYXR0aW5nIG9mIHByZXZpb3VzIGNoYW5nZSB0byBhdm9pZCBsaW5lcwoJbG9uZ2VyIHRoYW4gNzkgY2hhcmFjdGVycy4KCjIwMDQtMTEtMjUgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiB0Yi1nY2MuYzogR0NDIGluZnJhc3RydWN0dXJlIGJhc2VkIGltcGxlbWVudGF0aW9uIG9mCglfX2duYXRfYmFja3RyYWNlLgoKMjAwNC0xMS0yNCAgU3RldmVuIEJvc3NjaGVyICA8c3RldmVuYkBzdXNlLmRlPgoKCSogbWlzYy5jIChnbmF0X3Bvc3Rfb3B0aW9ucyk6IERvbid0IGNsZWFyCglmbGFnX2lubGluZV9mdW5jdGlvbnMuCgoyMDA0LTExLTIyICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBhZGEvMTc5ODYKCSogYWRhLXRyZWUuaCAobGFuZ190cmVlX25vZGUpOiBTZXQgY2hhaW5fbmV4dCB0byBiZSB0aGUgY2hhaW4gb2YgdGhlCgl0cmVlLgoKMjAwNC0xMS0yMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogc3R5bGVzdy5hZGI6IENoYW5nZSBTdHlsZV9DaGVja19TdWJwcm9ncmFtX09yZGVyIHRvCglTdHlsZV9DaGVja19PcmRlcl9TdWJwcm9ncmFtcy4KCjIwMDQtMTEtMTggIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5oLCBhZGFpbnQuYwoJKF9fZ25hdF9wb3J0YWJsZV9zcGF3bik6IEZpeCBjYXN0IG9mIHNwYXdudnAgdGhpcmQgcGFyYW1ldGVyCgl0byBhdm9pZCB3YXJuaW5ncy4KCUFkZCBhbHNvIGEgY2FzdCB0byBraWxsIGFub3RoZXIgd2FybmluZy4KCSh3aW4zMl9ub19ibG9ja19zcGF3bik6IEluaXRpYWxpemUgQ3JlYXRlUHJvY2VzcydzIGR3Q3JlYXRpb25GbGFncwoJcGFyYW1ldGVyIHdpdGggdGhlIHByaW9yaXR5IGNsYXNzIG9mIHRoZSBwYXJlbnQgcHJvY2VzcyBpbnN0ZWFkIG9mCglhbHdheXMgdXNpbmcgdGhlIE5PUk1BTF9QUklPUklUWV9DTEFTUy4KCShfX2duYXRfZHVwKTogTmV3IGZ1bmN0aW9uLgoJKF9fZ25hdF9kdXAyKTogTmV3IGZ1bmN0aW9uLgoJKF9fZ25hdF9pc19zeW1ib2xpY19saW5rKTogRW5hYmxlIHRoZSBlZmZlY3RpdmUgYm9keSBvZiB0aGlzCglmdW5jdGlvbiB3aGVuIF9fQVBQTEVfXyBpcyBkZWZpbmVkLgoKCSogZy1vc19saWIuYWRzLCBnLW9zX2xpYi5hZGIgKFNwYXduKTogVHdvIG5ldyBwcm9jZWR1cmVzLgoJVXBkYXRlIGNvbW1lbnRzLgoKMjAwNC0xMS0xOCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGEtZXhleHByLmFkYiAoT3RoZXJzX1ZhbHVlLCBBbGxfT3RoZXJzX1ZhbHVlKTogTmV3IHZhcmlhYmxlcywgdGhlCglhZGRyZXNzIG9mIHdoaWNoIG1heSBiZSB1c2VkIHRvIHJlcHJlc2VudCAib3RoZXJzIiBhbmQgImFsbCBvdGhlcnMiCgljaG9pY2VzIGluIGV4Y2VwdGlvbiB0YWJsZXMsIGluc3RlYWQgb2YgdGhlIGN1cnJlbnQgaGFyY29kZWQKCSh2b2lkICopMCBhbmQgKHZvaWQgKikxLgoJKFNldHVwX0V4Y2VwdGlvbik6IERvIG5vdGhpbmcgaW4gdGhlIEdOQVQgU0pMSiBjYXNlLgoKCSogZ2lnaS5oIChvdGhlcnNfZGVjbCwgYWxsX290aGVyc19kZWNsKTogTmV3IGRlY2xzIHJlcHJlc2VudGluZyB0aGUKCW5ldyBPdGhlcnNfVmFsdWUgYW5kIEFsbF9PdGhlcnNfVmFsdWUgb2JqZWN0cy4KCShzdHJ1Y3QgYXR0cmliKTogUmVuYW1lICJhcmciIGNvbXBvbmVudCBhcyAiYXJncyIsIHNpbmNlIEdDQyBleHBlY3RzIGEKCWxpc3Qgb2YgYXJndW1lbnRzIGluIHRoZXJlLgoKCSogcmFpc2UuYyAoR05BVF9PVEhFUlMsIEdOQVRfQUxMX09USEVSUyk6IEFyZSBub3cgdGhlIGFkZHJlc3Mgb2YgdGhlCgljb3JyZXNwb25kaW5nIG9iamVjdHMgZXhwb3J0ZWQgYnkgYS1leGV4cHIsIGluc3RlYWQgb2YgaGFyZGNvZGVkIGR1bW15CglhZGRyZXNzZXMuCgoJKiB0cmFucy5jIChFeGNlcHRpb25fSGFuZGxlcl90b19nbnVfemN4KTogVXNlIHRoZSBhZGRyZXNzIG9mCglvdGhlcnNfZGVjbCBhbmQgYWxsX290aGVyc19kZWNsIGluc3RlYWQgb2YgaGFyZGNvZGVkIGR1bW15IGFkZHJlc3NlcwoJdG8gcmVwcmVzZW50ICJvdGhlcnMiIGFuZCAiYWxsIG90aGVycyIgY2hvaWNlcywgd2hpY2ggaXMgY2xlYW5lciBhbmQKCW1vcmUgZmxleGlibGUgd2l0aCByZXNwZWN0IHRvIHRoZSBwb3NzaWJsZSBlaCBwb2ludGVyIGVuY29kaW5nIHBvbGljaWVzLgoKCSogdXRpbHMuYyAoaW5pdF9naWdpX2RlY2xzKTogSW5pdGlhbGl6ZSBvdGhlcnNfZGVjbCBhbmQgYWxsX290aGVyc19kZWNsLgoJKHByb2Nlc3NfYXR0cmlidXRlcyk6IEFjY291bnQgZm9yIHRoZSBuYW1pbmcgY2hhbmdlIG9mIHRoZSAiYXJncyIKCWF0dHJpYnV0ZSBsaXN0IGVudHJ5IGNvbXBvbmVudC4KCgkqIGRlY2wuYyAoYnVpbGRfYXR0cl9saXN0KTogUmVuYW1lIGludG8gcHJlcGVuZF9hdHRyaWJ1dGVzIHRvIGFsbG93CgljdW11bGF0aW5nIGF0dHJpYnV0ZXMgZm9yIGRpZmZlcmVudCBlbnRpdGllcyBpbnRvIGEgc2luZ2xlIGxpc3QuCgkoZ25hdF90b19nbnVfZW50aXR5KTogVXNlIHByZXBlbmRfYXR0cmlidXRlcyB0byBidWlsZCB0aGUgbGlzdCBvZgoJYXR0cmlidXRlcyBmb3IgdGhlIGN1cnJlbnQgZW50aXR5IGFuZCBwcm9wYWdhdGUgZmlyc3Qgc3VidHlwZQoJYXR0cmlidXRlcyB0byBvdGhlciBzdWJ0eXBlcy4KCTxFX1Byb2NlZHVyZT46IEF0dHJpYnV0ZSBhcmd1bWVudHMgYXJlIGF0dHItPmFyZ3MgYW5kIG5vdAoJYXR0ci0+YXJnIGFueSBtb3JlLgoJKGJ1aWxkX2F0dHJfbGlzdCk6IERpdHRvLiBNYWtlIGF0dHItPmFyZ3MgYSBUUkVFX0xJU1Qgd2hlbiB0aGVyZSBpcyBhbgoJYXJndW1lbnQgcHJvdmlkZWQsIGFzIHRoaXMgaXMgd2hhdCBHQ0MgZXhwZWN0cy4gVXNlIE5VTExfVFJFRSBpbnN0ZWFkCglvZiAwIGZvciB0cmVlcy4KCjIwMDQtMTEtMTggIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS1zdG1hY28uYWRzLCBleHBfdXRpbC5hZHMsIGV4cF91dGlsLmFkYiwgaS1jcHAuYWRzLCBpLWNwcC5hZGI6CglNaW5vciByZWZvcm1hdHRpbmcgdGhyb3Vnb3V0IChpbmNsdWRpbmcgbmV3IGZ1bmN0aW9uIHNwZWNzKQoJQWRkID8/PyBjb21tZW50cyBhc2tpbmcgZm9yIGNsYXJpZmljYXRpb24uCgoyMDA0LTExLTE4ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogYnV0aWwuYWRzLCBidXRpbC5hZGIsIGJpbmRnZW4uYWRiIChHZXRfVW5pdF9OYW1lX1N0cmluZyk6IFJlbW92ZQoJaW5jb21wbGV0ZSBkdXBsaWNhdGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBzdWJwcm9ncmFtIGZyb20gYnV0aWwuCgoyMDA0LTExLTE4ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZXhwX2Rpc3QuYWRiIChCdWlsZF9SUENfUmVjZWl2ZXJfQm9keSk6IE5ldyBzdWJwcm9ncmFtLiBUaGlzCglwcm9jZWR1cmVzIGZhY3RvcnMgdGhlIGNvbW1vbiBwcm9jZXNzaW5nIGZvciBidWlsZGluZyBhbiBSUEMgcmVjZWl2ZXIKCWZvciBhbiBSQ0kgcGFja2FnZSBvciBhbiBSQUNXIHR5cGUuCglTdHlsaXN0aWMgY2xlYW51cDogY2hhbmdlICcvPSBFbXB0eScgdG8gJ1ByZXNlbnQgKCknOyBtb3ZlIGJvZHkgb2YKCUJ1aWxkX1JlbW90ZV9TdWJwcm9ncmFtX1Byb3h5X1R5cGUgaW50byBwcm9wZXIgYWxwaGFiZXRpY2FsIG9yZGVyLgoJKEdldF9QQ1NfTmFtZSk6IE5ldyBzdWJwcm9ncmFtLiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBQQ1MgY3VycmVudGx5CglpbiB1c2UuCgkoU3BlY2lmaWNfQWRkX1JBQ1dfRmVhdHVyZXMpOiBOZXcgc3VicHJvZ3JhbS4gUENTLXNwZWNpZmljIHBhcnQgb2YKCUFkZF9SQUNXX0ZlYXR1cmVzLgoJKFNwZWNpZmljX0FkZF9SQVNUX0ZlYXR1cmVzKTogTmV3IHN1YnByb2dyYW0uIFBDUy1zcGVjaWZpYyBwYXJ0IG9mCglBZGRfUkFTVF9GZWF0dXJlcy4KCShBc3NpZ25fU3VicHJvZ3JhbV9JZGVudGlmaWVyKTogTmV3IHN1YnByb2dyYW0uIFByb3Zpc2lvbiBmb3IgYXNzaWduaW5nCglkaXN0cmlidXRpb24gc3VicHJvZ3JhbSBpZGVudGlmaWVycyB0aGF0IGFyZSBlaXRoZXIgc3VicHJvZ3JhbSBudW1iZXJzCglvciBzdHJpbmdzLgoJKEdldF9TdWJwcm9ncmFtX0lkcyk6IE5ldyBzdWJwcm9ncmFtLiBSZXRyaWV2ZSBib3RoIHRoZSBudW1lcmljIGFuZAoJc3RyaW5nIGRpc3RyaWJ1dGlvbiBpZGVudGlmaWVycyBhc3NpZ25lZCB0byBhIGdpdmVuIHN1YnByb2dyYW0uCgkoR2V0X1N1YnByb2dyYW1fSWQpOiBSZWltcGxlbWVudCBpbiB0ZXJtcyBvZiBHZXRfU3VicHJvZ3JhbV9JZHMuCgkoQWRkX1JBU19EZXJlZmVyZW5jZV9UU1MpOiBBZGQgY29tbWVudHMuCgkoQnVpbGRfR2VuZXJhbF9DYWxsaW5nX1N0dWJzKTogTm90ZSB0aGF0IHRoZSBSQUNXX1R5cGUgZm9ybWFsIHBhcmFtZXRlcgoJaXMgbm90IHJlZmVyZW5jZWQgeWV0IGJlY2F1c2UgaXQgd2lsbCBiZSB1c2VkIGJ5IHRoZSBQb2x5T1JCIERTQQoJaW1wbGVtZW50YXRpb24uCgkoSW5zZXJ0X1BhcnRpdGlvbl9DaGVjayk6IFJlbW92ZSBmb3NzaWxlIGNvZGUuCgkoRmlyc3RfUkNJX1N1YnByb2dyYW1fSWQpOiBEb2N1bWVudCB0aGlzIGNvbnN0YW50LgoJKEFkZF9SQVNfQWNjZXNzX1RTUyk6IENvcnJlY3QgdGhlIHNldHRpbmcgb2YgdGhlIEV0eXBlIG9mIHRoZQoJUkFTX0FjY2VzcyBUU1MuCgkoR2V0X1BrZ19OYW1lX1N0cmluZyk6IFJlbW92ZSBzdWJwcm9ncmFtLiBVc2FnZSBvY2N1cnJlbmNlcyBhcmUKCXJlcGxhY2VkIHdpdGggY2FsbHMgdG8gR2V0X0xpYnJhcnlfVW5pdF9OYW1lX1N0cmluZy4gUHJldmlvdXNseSB0aGVyZQoJd2VyZSBzZXZlcmFsIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjb2RlIGluIGRpZmZlcmVudCBsb2NhdGlvbnMgaW4gdGhlCgljb21waWxlcjsgdGhpcyBjaGVja2luIGNvbXBsZXRlcyB0aGUgcmVwbGFjZW1lbnQgb2YgYWxsIG9mIHRoZXNlCglpbnN0YW5jZXMgd2l0aCBjYWxscyB0byBhIGNvbW1vbiBzdWJwcm9ncmFtLgoJTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogc2VtX2Rpc3QuYWRiOiBSZW1vdmUgY29tbWVudCBub3RpbmcgdGhhdCBSUEMgcmVjZWl2ZXIgZ2VuZXJhdGlvbgoJc2hvdWxkIGJlIGRpc2FibGVkIGZvciBSQUNXcyB0aGF0IGltcGxlbWVudCBSQVNzLgoJKFByb2Nlc3NfUGFydGl0aW9uX0lkKTogVXNlIG5ldyBzdWJwcm9ncmFtIEdldF9MaWJyYXJ5X1VuaXRfTmFtZV9TdHJpbmcuCgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYiAoSGFzX1N0cmVhbSk6IE5ldyBmdW5jdGlvbgoJKEdldF9MaWJyYXJ5X1VuaXRfTmFtZV9TdHJpbmcpOiBOZXcgc3VicHJvZ3JhbSB0byByZXRyaWV2ZSB0aGUgZnVsbHkKCXF1YWxpZmllZCBuYW1lIG9mIGEgbGlicmFyeSB1bml0IGludG8gdGhlIG5hbWUgYnVmZmVyLgoJKE5vdGVfUG9zc2libGVfTW9kaWZpY2F0aW9uKTogR2VuZXJhdGUgYSByZWZlcmVuY2Ugb25seQoJaWYgdGhlIGNvbnRleHQgY29tZXMgZnJvbSBzb3VyY2UuCgoJKiBzbmFtZXMuYWRzIChQQ1NfTmFtZXMpOiBOZXcgc3VidHlwZSBjb3JyZXNwb25kaW5nIHRvIG5hbWVzIG9mCglzdXBwb3J0ZWQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBQYXJ0aXRpb24gQ29tbXVuaWNhdGlvbiBTdWJzeXN0ZW0KCShQQ1MpIChpLmUuIHRoZSBydW50aW1lIGxpYnJhcnkgc3VwcG9ydCBtb2R1bGVzIGZvciB0aGUgZGlzdHJpYnV0ZWQKCXN5c3RlbXMgYW5uZXgpLgoKMjAwNC0xMS0xOCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZWluZm8uYWRzLCBlaW5mby5hZGI6IFJlbW92ZSBJc19Qc2VjdGVkIGZsYWcsIG5vIGxvbmdlciB1c2VkCgkoSGFzX1JlcF9QcmFnbWEpOiBOZXcgZnVuY3Rpb24KCShIYXNfQXR0cmlidXRlX0RlZmluaXRpb25fQ2xhdXNlKTogTmV3IGZ1bmN0aW9uCgkoUmVjb3JkX1JlcF9QcmFnbWEpOiBNb3ZlZCBoZXJlIGZyb20gc2VtX2NoMTMuYWRiCgkoR2V0X1JlcF9QcmFnbWEpOiBSZW1vdmUganVuayBrbHVkZ2UgZm9yIFN0cmVhbV9Db252ZXJ0IHByYWdtYQoKCSogc2VtX2NoMTMuYWRzLCBzZW1fY2gxMy5hZGIgKFJlY29yZF9SZXBfUHJhZ21hKTogTW92ZWQgdG8gZWluZm8uYWRiCgoJKiBleHBfcHJhZy5hZGI6IChFeHBhbmRfUHJhZ21hX0NvbW1vbl9PYmplY3QpOiBOZXcgcHJvY2VkdXJlCgkoRXhwYW5kX1ByYWdtYV9Qc2VjdF9PYmplY3QpOiBOZXcgcHJvY2VkdXJlCglUaGVzZSBwcm9jZWR1cmVzIGNvbnRhaW4gdGhlIHJldmlzZWQgYW5kIGNsZWFuZWQgdXAgcHJvY2Vzc2luZyBmb3IKCXRoZXNlIHR3byBwcmFnbWFzLiBUaGlzIHByb2Nlc3Npbmcgd2FzIGZvcm1lcmx5IGluIFNlbV9QcmFnLCBidXQKCWlzIG1vcmUgYXBwcm9wcmlhdGVseSBtb3ZlZCBoZXJlLiBUaGUgY2xlYW51cCBpbnZvbHZlcyBtYWtpbmcgc3VyZQoJdGhhdCB0aGUgcHJhZ21hcyBhcmUgcHJvcGVybHkgYXR0YWNoZWQgdG8gdGhlIHRyZWUsIGFuZCB0aGF0IG5vCglub2RlcyBhcmUgaW1wcm9wZXJseSBzaGFyZWQuCgoJKiBzZW1fcHJhZy5hZGI6IE1vdmUgZXhwYW5zaW9uIG9mIENvbW1vbl9PYmplY3QgYW5kIFBzZWN0X09iamVjdAoJcHJhZ21hcyB0byBFeHBfUHJhZywgd2hpY2ggaXMgbW9yZSBhcHByb3ByaWF0ZS4KCUF0dGFjaCB0aGVzZSB0d28gcHJhZ21hcyB0byB0aGUgUmVwX0l0ZW0gY2hhaW4gVXNlIFJlcF9JdGVtIGNoYWluIHRvCgljaGVjayBmb3IgZHVwbGljYXRlcyBSZW1vdmUgdXNlIG9mIElzX1BzZWN0ZWQgZmxhZywgbm8gbG9uZ2VyIG5lZWRlZC4KCVVzZSBuZXcgTWFrZV9TdHJpbmdfTGl0ZXJhbCBmdW5jdGlvbiB3aXRoIHN0cmluZy4KCgkqIGV4cF9hdHRyLmFkYiAoRXhwYW5kX0ZwdF9BdHRyaWJ1dGUpOiBUaGUgZmxvYXRpbmctcG9pbnQgYXR0cmlidXRlcwoJdGhhdCBhcmUgZnVuY3Rpb25zIHJldHVybiB1bml2ZXJzYWwgdmFsdWVzLCB0aGF0IGhhdmUgdG8gYmUgY29udmVydGVkCgl0byB0aGUgY29udGV4dCB0eXBlLgoJVXNlIG5ldyBNYWtlX1N0cmluZ19MaXRlcmFsIGZ1bmN0aW9uIHdpdGggc3RyaW5nLgoJKEdldF9TdHJlYW1fQ29udmVydF9QcmFnbWEpOiBOZXcgZnVuY3Rpb24sIHJlcGxhY2VzIHRoZSB1c2Ugb2YKCUdldF9SZXBfUHJhZ21hLCB3aGljaCBoYWQgdG8gYmUga2x1ZGdlZCB0byB3b3JrIGluIHRoaXMgY2FzZS4KCgkqIGZyZWV6ZS5hZGI6IFVzZSBuZXcgSGFzX1JlcF9QcmFnbWEgZnVuY3Rpb24KCgkqIGV4cF9pbnRyLmFkYiwgZXhwX2NoMy5hZGIsIHNlbV9hdHRyLmFkYjogVXNlIG5ldyBNYWtlX1N0cmluZ19MaXRlcmFsCglmdW5jdGlvbiB3aXRoIHN0cmluZy4KCVVzZSBuZXcgSGFzX1JlcF9QcmFnbWEgZnVuY3Rpb24uCgoJKiB0YnVpbGQuYWRzLCB0YnVpbGQuYWRiIChNYWtlX1N0cmluZ19MaXRlcmFsKTogTmV3IGZ1bmN0aW9uLCB0YWtlcwoJc3RyaW5nIGFyZ3VtZW50LgoKMjAwNC0xMS0xOCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBlcnJvdXQuYWRzLCBlcnJvdXQuYWRiOiAoRmlyc3RfU2xvYyk6IE5ldyBmdW5jdGlvbgoKCSogcGFyLWNoNS5hZGIgKFBfQ29uZGl0aW9uKTogQ2hlY2sgZm9yIHJlZHVuZGFudCBwYXJlbnMgaXMgbm93IGEgc3R5bGUKCWNoZWNrICgtZ25hdHl4KSBpbnN0ZWFkIG9mIGJlaW5nIGluY2x1ZGVkIGFzIGEgcmVkdW5kYW50IGNvbnN0cnVjdAoJd2FybmluZy4KCgkqIHNlbV9jaDYuYWRiOiBDaGFuZ2UgbmFtZSBTdHlsZV9DaGVja19TdWJwcm9ncmFtX09yZGVyIHRvCglTdHlsZV9DaGVja19PcmRlcl9TdWJwcm9ncmFtcy4KCgkqIHN0eWxlLmFkcywgc3R5bGVnLmFkcywgc3R5bGVnLmFkYiwgc3R5bGVnLWMuYWRiLCBzdHlsZXN3LmFkcywKCXN0eWxlc3cuYWRiOiBBZGQgU3R5bGVfQ2hlY2tfWHRyYV9QYXJlbnMKCgkqIHVzYWdlLmFkYjogQWRkIGxpbmUgZm9yIC1nbmF0eXggKGNoZWNrIGV4dHJhIHBhcmVucykKCgkqIHZtc19kYXRhLmFkczogQWRkIGVudHJ5IGZvciBTVFlMRV9DSEVDS1M9WFRSQV9QQVJFTlMgPT4gLWduYXR5eAoKMjAwNC0xMS0xOCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX1NlbGVjdGVkX0NvbXBvbmVudCk6IElmIHRoZSBjb21wb25lbnQgaXMgdGhlCglkaXNjcmltaW5hbnQgb2YgYSBjb25zdHJhaW5lZCBzdWJ0eXBlLCBhbmFseXplIHRoZSBjb3B5IG9mIHRoZQoJY29ycmVzcG9uZGluZyBjb25zdHJhaW50LCBiZWNhdXNlIGluIHNvbWUgY2FzZXMgaXQgbWF5IGJlIG9ubHkKCXBhcnRpYWxseSBhbmFseXplZC4KCVJlbW92ZXMgbG9uZy1saXZlZCA/Pz8gY29tbWVudHMuCgoJKiBleHBfY2g3LmFkYiAoRXN0YWJsaXNoX1RyYW5zaWVudF9TY29wZSk6IFJlbW92ZSBjb21wbGV4IGNvZGUgdGhhdAoJaGFuZGxlZCBjb250cm9sbGVkIG9yIHNlY29uZGFyeS1zdGFjayBleHByZXNzaW9ucyB3aXRoaW4gdGhlCglpdGVyYXRpb25fc2NoZW1lIG9mIGEgbG9vcC4KCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0l0ZXJhdGlvbl9TY2hlbWUpOiBCdWlsZCBhIGJsb2NrIHRvIGV2YWx1YXRlCglib3VuZHMgdGhhdCBtYXkgY29udGFpbiBmdW5jdGlvbnMgY2FsbHMsIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzIHdoZW4KCXRoZSBib3VuZCBjb250YWlucyBhIGNhbGwgdG8gYSBmdW5jdGlvbiB0aGF0IHVzZXMgdGhlIHNlY29uZGFyeSBzdGFjay4KCShDaGVja19Db21wbGV4X0JvdW5kcyk6IFN1YnNpZGlhcnkgb2YgQW5hbHl6ZV9JdGVyYXRpb25fU2NoZW1lLCB0bwoJZ2VuZXJhdGUgdGVtcG9yYXJpZXMgZm9yIGxvb3AgYm91bmRzIHRoYXQgbWlnaHQgY29udGFpbiBmdW5jdGlvbiBjYWxscwoJdGhhdCByZXF1aXJlIHNlY29uZGFyeSBzdGFjayBhbmQvb3IgZmluYWxpemF0aW9uIGFjdGlvbnMuCgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9JbmRleGVkX0NvbXBvbmVudF9Gb3JtKTogSWYgdGhlIHByZWZpeCBpcyBhCglzZWxlY3RlZCBjb21wb25lbnQgYW5kIHRoZSBzZWxlY3RvciBpcyBvdmVybG9hZGFibGUgKG5vdCBqdXN0IGEKCWZ1bmN0aW9uKSB0cmVhdCBhcyBmdW5jdGlvbiBjYWxsLCBBbmFseXplX0NhbGwgd2lsbCBkaXNhbWJpZ3VhdGUgaWYKCW5lY2Vzc2FyeS4KCShBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IERvIG5vdCBnZW5lcmF0ZSBhbiBhY3R1YWwgc3VidHlwZSBmb3IgdGhlCglzZWxlY3RlZCBjb21wb25lbnQgaWYgZXhwYW5zaW9uIGlzIGRpc2FibGVkLiBUaGUgYWN0dWFsIHN1YnR5cGUgaXMgb25seQoJbmVlZGVkIGZvciBjb25zdHJhaW50IGNoZWNrcy4KCShBbmFseXplX0FsbG9jYXRvcik6IElmIHJlc3RyaWN0aW9uIE5vX1N0cmVhbXMgaXMgc2V0LCB0aGVuIGRvCglub3QgcGVybWl0IG9iamVjdHMgdG8gYmUgZGVjbGFyZWQgb2YgYSBzdHJlYW0gdHlwZSwgb3Igb2YgYQoJY29tcG9zaXRlIHR5cGUgY29udGFpbmluZyBhIHN0cmVhbS4KCgkqIHJlc3RyaWN0LmFkczogUmVtb3ZlIHRoZSBhLXN0cmVhbSBlbnRyeSBmcm9tIFVuaXRfQXJyYXksIHNpbmNlCglOb19TdHJlYW1zIG5vIGxvbmdlciBwcm9oaWJpdHMgd2l0aCdpbmcgdGhpcyBwYWNrYWdlLgoKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBJZiB0aGUgcGFyZW50IHR5cGUgaGFzCglkaXNjcmltaW5hbnRzLCBidXQgdGhlIHBhcmVudCBiYXNlIGhhcyB1bmtub3duIGRpc2NyaW1pbmFudHMsIHRoZXJlIGlzCglubyBkaXNjcmltaW5hbnQgY29uc3RyYWludCB0byBpbmhlcml0LiBTdWNoIGEgZGlzY3JlcGFuY3kgY2FuIGFyaXNlCgl3aGVuIHRoZSBhY3R1YWwgZm9yIGEgZm9ybWFsIHR5cGUgd2l0aCB1bmtub3duIGRpc2NyaW1pbmFudHMgaXMgYQoJc2ltaWxhciBwcml2YXRlIHR5cGUgd2hvc2UgZnVsbCB2aWV3IGhhcyBkaXNjcmltaW5hbnRzLgoJKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogSWYgcmVzdHJpY3Rpb24gTm9fU3RyZWFtcyBpcyBzZXQsIHRoZW4KCWRvIG5vdCBwZXJtaXQgb2JqZWN0cyB0byBiZSBkZWNsYXJlZCBvZiBhIHN0cmVhbSB0eXBlLCBvciBvZiBhCgljb21wb3NpdGUgdHlwZSBjb250YWluaW5nIGEgc3RyZWFtLgoKMjAwNC0xMS0xOCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2RidWcuYWRzOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHNpbXBsZXIgZW5jb2RpbmcgZm9yCglwcm90ZWN0ZWQgb3BlcmF0aW9ucy4KCgkqIGV4cF9jaDkuYWRiIChCdWlsZF9TZWxlY3RlZF9OYW1lKTogRG8gbm90IGluY2x1ZGUgIlBUIiBzdWZmaXggaW4KCWdlbmVyYXRlZCBuYW1lLCBpdCBjb21wbGljYXRlcyBkZWNvZGluZyBpbiBnZGIgYW5kIGhpbmRlcnMgZGVidWdnaW5nCglvZiBwcm90ZWN0ZWQgb3BlcmF0aW9ucy4KCShCdWlsZF9CYXJyaWVyX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24pOiBTZXQgdGhlIE5lZWRzX0RlYnVnX0luZm8KCWZsYWcgZm9yIHRoZSBwcm90ZWN0ZWQgZW50cnkgYmFycmllciBmdW5jdGlvbi4KCShCdWlsZF9Qcm90ZWN0ZWRfRW50cnlfU3BlY2lmaWNhdGlvbik6IFNldCB0aGUgTmVlZHNfRGVidWdfSW5mbwoJZmxhZyBmb3IgdGhlIHByb3RlY3RlZCBlbnRyeSBmdW5jdGlvbi4KCjIwMDQtMTEtMTggIE5pY29sYXMgU2V0dG9uICA8c2V0dG9uQGFkYWNvcmUuY29tPgoKCSogZXhwZWN0LmM6IERlZmluZSBfX3VuaXhfXyB3aGVuIF9fQVBQTEVfXyBpcyBkZWZpbmVkLgoKCSogTWFrZWZpbGUuaW46IEluZm9ybSB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIEdNRU1fTElCIGluIHRoZQoJRGFyd2luLXNwZWNpZmljIHNlY3Rpb24uCgoJKiBsYW5nLXNwZWNzLmg6IENoYW5nZSB0aGUgcGxhY2VtZW50IG9mIHRoZSAlMSBtYXJrZXIuCglXb3JrcyBhcm91bmQgdGhlIGZhY3QgdGhhdCBnY2MgYWRkcyAtZlBJQyBieSBkZWZhdWx0IHVuZGVyIERhcndpbi4KCjIwMDQtMTEtMTggIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9wYWtkLmFkYiAoQ29udmVydF9Ub19QQVRfVHlwZSk6IEFmdGVyIHJlcGxhY2luZyB0aGUgb3JpZ2luYWwKCXR5cGUgb2YgdGhlIG9iamVjdCB3aXRoIHRoZSBwYWNrZWQgYXJyYXkgdHlwZSwgc2V0IHRoZSBBbmFseXplZCBmbGFnCglvbiB0aGUgb2JqZWN0IGlmIGl0IGlzIGFuIGVudGl0eSBvciBzaW1wbGUgaW5kZXhlZCBjb21wb25lbnQsIHRvIGF2b2lkCglzcHVyaW91cyB0eXBlIGVycm9ycy4KCjIwMDQtMTEtMTggIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGduYXQxZHJ2LmFkYiwgZ25hdGJpbmQuYWRiLCBnbmF0Y2hvcC5hZGIsIGduYXRmaW5kLmFkYiwgZ25hdGxpbmsuYWRiLAoJZ25hdGxzLmFkYiwgZ25hdHhyZWYuYWRiLCBncHJlcC5hZGI6IE91dHB1dCB0aGUgY29weXJpZ2h0IG1lc3NhZ2Ugb24gYQoJc2VwYXJhdGUgbGluZSBmcm9tIHRoZSB2ZXJzaW9uIG1lc3NhZ2UuCgoyMDA0LTExLTE4ICBFZCBGYWxpcyAgPGZhbGlzQGFkYWNvcmUuY29tPgoKCSogaW5pdC5jIChfX2duYXRfbWFwX3NpZ25hbCk6IG1hcCBTSUdTRUdWIHRvIFN0b3JhZ2VfRXJyb3IgZm9yIEFFNjUzCgl2dGhyZWFkcy4KCShpbml0X2Zsb2F0KTogRWxpbWluYXRlIGluaXRpYWxpemF0aW9uIG9mIGZsb2F0aW5nIHBvaW50IHN0YXR1cyBmb3IKCUFFNjUzLiBUaGUgaW5zdHJ1Y3Rpb25zIGhhdmUgbm8gZWZmZWN0IGZvciB2VGhyZWFkcy4KCjIwMDQtMTEtMTggIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogSW52b2tlIGduYXRsaW5rIHdpdGggLXNoYXJlZC1saWJnY2Mgd2hlbgoJZ25hdGJpbmQgaXMgaW52b2tlZCB3aXRoIC1zaGFyZWQuCgoyMDA0LTExLTE4ICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogcy10cG9zZW4uYWRiIChMb2NrX0VudHJ5KTogUmVtb3ZlIHRoZSBjb2RlIGZvciByYWlzaW5nIFByb2dyYW1fRXJyb3IKCWZvciBEZXRlY3RfQmxvY2tpbmcgd2hpY2ggaXMgcmVkdW5kYW50IHdpdGggdGhlIGNoZWNrIGRvbmUgd2l0aGluIHRoZQoJcHJvY2VkdXJlIFByb3RlY3RlZF9TaW5nbGVfRW50cnlfQ2FsbC4KCShMb2NrX1JlYWRfT25seV9FbnRyeSk6IFJlbW92ZSB0aGUgY29kZSBmb3IgcmFpc2luZyBQcm9ncmFtX0Vycm9yIGZvcgoJRGV0ZWN0X0Jsb2NraW5nIHdoaWNoIGlzIHJlZHVuZGFudCB3aXRoIHRoZSBjaGVjayBkb25lIHdpdGhpbiB0aGUKCXByb2NlZHVyZSBQcm90ZWN0ZWRfU2luZ2xlX0VudHJ5X0NhbGwuCgoyMDA0LTExLTE4ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2VncHIuYWRiIChDb21waWxlKTogUHV0IHRoZSBjb21waWxpbmcgc3dpdGNoZXMgKGluIHBhY2thZ2UKCUNvbXBpbGVyIGFuZCBvbiB0aGUgY29tbWFuZCBsaW5lKSBpbW1lZGlhdGVseSBhZnRlciAiLWMiLCBpbnN0ZWFkIG9mCglhdCB0aGUgZW5kIG9mIHRoZSBjb21tYW5kIGxpbmUgaW52b2NhdGlvbiBvZiB0aGUgY29tcGlsZXIsIHdoZW4KCWNvbXBpbGluZyBhIG5vbi1BZGEgZmlsZS4KCShCdWlsZF9HbG9iYWxfQXJjaGl2ZSk6IFdoZW4gdGhlcmUgaXMgbm8gbmVlZCB0byByZWJ1aWxkIHRoZSBhcmNoaXZlLAoJc2V0IEdsb2JhbF9BcmNoaXZlX0V4aXN0cywgc28gdGhhdCB0aGUgYXJjaGl2ZSBpcyBwYXNzZWQgdG8gdGhlIGxpbmtlcgoJaWYgb25lIGlzIG5lZWRlZC4KCjIwMDQtMTEtMTggIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFkYWNvcmUuY29tPgoKCSogZ25hdF91Z24udGV4aToKCVJlbW92ZSBleHRyYSBwYXJlbiBjaGVjayBmcm9tIGxpc3Qgb2YgY2hlY2tzIGZvciByZWR1bmRhbnQgY29uc3RydWN0cwoJQWRkIGRvY3VtZW50YXRpb24gb2YgbmV3IC1nbmF0eXggc3R5bGUgY2hlY2sgKGNoZWNrIGV4dHJhIHBhcmVucykKCVJlbW92ZSBwYXJhZ3JhcGggYWJvdXQgZ25hdGVsaW0gZGVidWcgb3B0aW9ucy4KCgkqIGduYXRfcm0udGV4aTogRG9jdW1lbnQgdGhhdCBBZGEuU3RyZWFtcyBub3cgZm9yYmlkcyBjcmVhdGluZyBzdHJlYW0KCW9iamVjdHMgcmF0aGVyIHRoYW4gZm9yYmlkZGluZyBkZXBlbmRlbmNpZXMgb24gdGhlIHBhY2thZ2UgQWRhLlN0cmVhbXMuCgoJKiBzaW5mby5hZHM6IEFkZCA/Pz8gbm90ZSB0aGF0IHdlIHNob3VsZCBkb2N1bWVudCBwcmFnbWFzIHBhc3NlZCB0bwoJYmFjayBlbmQuCgoJKiBnLWV4cGVjdC5hZHM6IEZpeCBhIGZldyB0eXBvcyBpbiB0aGUgY29tbWVudHMuCgoyMDA0LTExLTA5ICBKb3NlcGggUy4gTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pc2MuYyAoZ25hdF9oYW5kbGVfb3B0aW9uKTogVXNlICU8IGFuZCAlPiBmb3IgcXVvdGluZyBpbgoJd2FybmluZyBtZXNzYWdlLgoKMjAwNC0xMS0wOCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBhLW51bWF1eC14ODYuYWRiIChUYW4pOiBGaXggZmRpdnAgc3ludGF4LgoKMjAwNC0xMS0wNyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWduYXRsaWIpOiBSZW1vdmUgc3B1cmlvdXMgaHlwaGVuLgoKMjAwNC0xMS0wMiAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJUFIgYWRhLzE4MjI4CgkqIE1ha2VmaWxlLmluIChkYXJ3aW4pOiBTZXQgc29leHQgdG8gLmR5bGliLgoKMjAwNC0xMC0yNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGctc29jdGhpLXZtcy5hZGIsIGctc29jdGhpLW1pbmd3LmFkYiwgZy1zb2N0aGktdnh3b3Jrcy5hZHM6CgkoQ19Xcml0ZXYpOiBDaGFuZ2UgTVNHX0ZvcmNlZF9GbGFncyB0byBDb25zdGFudHMuTVNHX0ZvcmNlZF9GbGFncyBhcwoJdGhlcmUgaXMgbm8gdXNlIG9mIEdOQVQuU29ja2V0cy5Db25zdGFudHMuCglSZW1vdmUgcmVtYWluaW5nIHByYWdtYSBJbXBvcnQgZm9yIENfV3JpdGUKCVJlbW92ZSBDX1JlYWQgYW5kIENfV3JpdGUgZnJvbSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB1bml0CglHTkFULlNvY2tldHMuVGhpbiwgYXMgdGhlaXIgdXNhZ2UgZm9yIHNvY2tldHMgaXMgbm9uLXBvcnRhYmxlICh1c2luZwoJdGhlIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9ucyBmcm9tIHRoZSBzeXN0ZW0gcnVudGltZSBsaWJyYXJ5IGlzIGZpbmUKCW9uIFVOSVggYnV0IHdvbid0IHdvcmsgdW5kZXIgV2luZG93cykuCgoJKiBnLXNvY2tldC5hZGI6IChBYm9ydF9TZWxlY3Rvcik6IFVzZSBDX1NlbmQgaW5zdGVhZCBvZiBDX1dyaXRlLgoJKENoZWNrX1NlbGVjdG9yKTogVXNlIENfUmVjdiBpbnN0ZWFkIG9mIENfUmVhZC4KCVNlbGVjdG9ycyBhcmUgdGhlIEdOQVQuU29ja2V0cyBhYnN0cmFjdGlvbiB0byBwZXJmb3JtIGEgc2VsZWN0KCkKCWNhbGwgb24gYSBzZXQgb2YgZGVzY3JpcHRvcnMuIFRvIGFsbG93IGFib3J0aW9uIG9mIGFuIG9uZ29pbmcKCXNlbGVjdCBvcGVyYXRpb24sIHNvbWUgZGF0YSBpcyB3cml0dGVuIHRvIGEgZGVkaWNhdGVkIHNvY2tldCB0aGF0CglpcyBhbHdheXMgbW9uaXRvcmVkLgoJVW5kZXIgV2luZG93cywgdGhlIHdyaXRlIGFuZCByZWFkIGxpYnJhcnkgZnVuY3Rpb25zIGNhbm5vdCBvcGVyYXRlCglvbiBzb2NrZXRzLCBzbyB3ZSBuZWVkIHRvIHVzZSBzZW5kIGFuZCByZWN2IGluc3RlYWQsIHdoaWNoIGlzIHBvcnRhYmxlCglhY3Jvc3MgYWxsIHN1cHBvcnRlZCBwbGF0Zm9ybXMuCgoJKiBnLXNvY3RoaS5hZHM6IFJlbW92ZSBDX1JlYWQgYW5kIENfV3JpdGUgZnJvbSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbgoJdW5pdCBHTkFULlNvY2tldHMuVGhpbiwgYXMgdGhlaXIgdXNhZ2UgZm9yIHNvY2tldHMgaXMgbm9uLXBvcnRhYmxlCgkodXNpbmcgdGhlIHJlYWQgYW5kIHdyaXRlIGZ1bmN0aW9ucyBmcm9tIHRoZSBzeXN0ZW0gcnVudGltZSBsaWJyYXJ5IGlzCglmaW5lIG9uIFVOSVggYnV0IHdvbid0IHdvcmsgdW5kZXIgV2luZG93cykuCgoyMDA0LTEwLTI2ICBOaWNvbGFzIFNldHRvbiAgPHNldHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogbWxpYi10Z3QtZGFyd2luLmFkYjogTmV3IGZpbGUuCgoJKiBtbGliLXRndC10cnU2NC5hZGIsIG1saWItdGd0LWFpeC5hZGIsIG1saWItdGd0LWlyaXguYWRiLAoJbWxpYi10Z3QtaHB1eC5hZGIsIG1saWItdGd0LWxpbnV4LmFkYiwgbWxpYi10Z3Qtc29sYXJpcy5hZGIsCgltbGliLXRndC12bXMtYWxwaGEuYWRiLCBtbGliLXRndC12bXMtaWE2NC5hZGIsCgltbGliLXRndC1taW5ndy5hZGIsIG1saWItdGd0LXZ4d29ya3MuYWRiIChBcmNoaXZlX0luZGV4ZXJfT3B0aW9ucyk6IE5ldwoJc3VicHJvZ3JhbSBib2R5LgoKCSogTWFrZWZpbGUuaW46IEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzIHVuZGVyIERhcndpbi4KCShFWFRSQV9HTkFUUlRMX05PTlRBU0tJTkdfT0JKUywgcHBjLXZ4d29ya3MpOiBBZGQgcy12eHdleGMubywgY29udGFpbmluZwoJdGhlIGxvdyBsZXZlbCBFSCBpbml0IHN1YnByb2dyYW0gdG8gYmUgY2FsbGVkIGZyb20gX19nbmF0X2luaXRpYWxpemUuCgoJKiBtbGliLXRndC5hZHMsIG1saWItdGd0LmFkYiAoQXJjaGl2ZV9JbmRleGVyX09wdGlvbnMpOiBOZXcgc3VicHJvZ3JhbSwKCWluZGljYXRlcyB3aGljaCBvcHRpb25zIHRvIHBhc3MgdG8gdGhlIGFyY2hpdmUgaW5kZXhlci4KCgkqIG1saWItdXRsLmFkYjogQWRkIHN1cHBvcnQgZm9yIGNhbGxpbmcgcmFubGliIHdpdGggYWRkaXRpb25hbAoJb3B0aW9ucy4gVGhpcyBpcyBuZWVkZWQgZm9yIGluc3RhbmNlIHVuZGVyIE1hYyBPUyBYLgoJKFJhbmxpYl9PcHRpb25zKTogTmV3IGdsb2JhbCB2YXJpYWJsZSwgdXNlZCB0byBzdG9yZSB0aGUgcG90ZW50aWFsCglvcHRpb25zIHRvIHBhc3MgdG8gcmFubGliLgoJKEFyKTogVXNlIFJhbmxpYl9PcHRpb25zIHdoZW4gc3Bhd25pbmcgcmFubGliLgoJKEluaXRpYWxpemUpOiBTZXQgdGhlIHZhbHVlIG9mIHJhbmxpYiBvcHRpb24uCgoyMDA0LTEwLTI2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBzLXBhcmFtZS1saW51eC5hZGIgKE1pbmltdW1fU3RhY2tfU2l6ZSk6IEFkanVzdCB0byByZXR1cm4gMTJLCglpbnN0ZWFkIG9mIDhLLCB0byByZWZsZWN0IHRoZSByZWFsIHBvdGVudGlhbCBuZWVkcyBmb3Igc3RhY2stY2hlY2tpbmcKCWluIHRoZSBaQ1ggY2FzZS4KCjIwMDQtMTAtMjYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIHMtcGFyYW1lLW1pbmd3LmFkYiAoRGVmYXVsdF9TdGFja19TaXplKTogQWRkIHNvbWUgY29tbWVudHMuCgoJKiBzLXRhcHJvcC1taW5ndy5hZGIgKENyZWF0ZV9UYXNrKTogU2V0IGluaXRpYWwgc3RhY2sgc2l6ZSB0byAxMDI0LiBPbgoJV2luZG93cyBvbmx5IHRoZSBpbml0aWFsIHRocmVhZCBzdGFjayBzaXplIGNhbiBiZSBzZXQgc28gaXQgaXMgZ29vZCB0bwoJc3RhcnQgd2UgYSBsb3cgc3RhY2sgc2l6ZS4KCVRoZSBPUyB3aWxsIGFkanVzdCB0aGUgc2l6ZSBhcyBuZWVkZWQuCgoyMDA0LTEwLTI2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgkgICAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIGV4cGVjdC5jLCBhZGFpbnQuYywgbGluay5jLCBzeXNkZXAuYyAodW5peCBzZWN0aW9ucyk6IEd1YXJkIHdpdGgKCSJfX3VuaXhfXyIgaW5zdGVhZCBvZiAidW5peCIuCglUaGUgbGF0dGVyIGlzIGltcGxpY2l0bHkgZGVmaW5lZCBieSBnY2MzLjIgYnV0IG5vdCBieSBnY2MgPj0gMy40LCBzbyB0aGUKCXNlY3Rpb25zIHdlcmUganVzdCBtaXN0YWtlbmx5IGlnbm9yZWQuIFRoZSBmb3JtZXIgaXMKCWltcGxpY2l0ZWx5IGRlZmluZWQgYnkgZ2NjMi44LCBnY2MzLjIgYW5kIGdjYzMuNC4KCVVwZGF0ZSAjaWZkZWYgcHJlcHJvY2Vzc29yIG1hY3JvIHRvIGRldGVjdCB0aGUgc3ltYm9sIF9faHB1eF9fIGluc3RlYWQKCW9mIGhwdXguIFRoaXMgcHJldmVudHMgYW4gdW53YW50ZWQgZGVmaW5pdGlvbiBvZiB0aGUgc3ltYm9sCgljb252ZXJ0X2FkZHJlc3NlcyBpbiBhZGFpbnQuby4KCjIwMDQtMTAtMjYgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIGEtZXhleHByLmFkYiAoU2V0dXBfS2V5KTogQ2hhbmdlIGluaXRpYWwgdmFsdWUgdG8gMTYjREVBRCMsIGZvcgoJY29tcGF0aWJpbGl0eSB3aXRoIHR5cGUgVW53aW5kX1dvcmQgb24gMTYtYml0IHRhcmdldHMgc3VjaCBhcyBBQU1QLgoKMjAwNC0xMC0yNiAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFjdC1ldXJvcGUuZnI+CgoJKiBhLWZpbGljby5hZHMsIGEtZmlsaWNvLmFkYjogZml4IGluY29ycmVjdCBoZWFkZXIuCgoyMDA0LTEwLTI2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBhLXN0c3Rpby5hZHM6IEZpeCB0eXBvIGluIGlkZW50aWZpZXIKCjIwMDQtMTAtMjYgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9jaDQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA0LTEwLTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBjaGVja3MuYWRiIChFeHByX0tub3duX1ZhbGlkKTogSWYgZmxvYXRpbmctcG9pbnQgdmFsaWRpdHkgY2hlY2tzIGFyZQoJZW5hYmxlZCwgY2hlY2sgdGhlIHJlc3VsdCBvZiB1bmFyeSBhbmQgYmluYXJ5IG9wZXJhdGlvbnMgd2hlbiB0aGUKCWV4cHJlc3Npb24gaXMgdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50LgoKMjAwNC0xMC0yNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBjbGVhbi5hZGIgKERlbGV0ZSk6IERvIG5vdCBvdXRwdXQgd2FybmluZ3Mgd2hlbiBpbiBxdWlldCBvdXRwdXQgYW5kCglub3QgaW4gdmVyYm9zZSBtb2RlLgoJKEZvcmNlX0RlbGV0aW9ucyk6IE5ldyBCb29sZWFuIGZsYWcsIGRlZmF1bHRlZCB0byBGYWxzZQoJKERlbGV0ZSk6IE9ubHkgZGVsZXRlIGEgZmlsZSBpZiBpdCBpcyB3cml0YWJsZSwgYW5kIHdoZW4KCUZvcmNlX0RlbGV0aW9ucyBpcyBUcnVlLgoJKFBhcnNlX0NtZF9MaW5lKTogTmV3IHN3aXRjaCAtZjogc2V0IEZvcmNlX0RlbGV0aW9ucyB0byBUcnVlCgkoVXNhZ2UpOiBMaW5lIGZvciBuZXcgc3dpdGNoIC1mCgkoQ2xlYW5fRGlyZWN0b3J5KTogVXNlIEdOQVQuT1NfTGliLlNldF9Xcml0YWJsZSBpbnN0ZWFkIG9mIHJvbGxpbmcgb3VyCglvd24uCgoyMDA0LTEwLTI2ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2ZpZWxkKTogVXNlIHRoZSB0eXBlIG9mIHRoZSBpbm5lciBvYmplY3QgZm9yIGEKCUpNIHR5cGUgb25seSBpZiBpdHMgc2l6ZSBtYXRjaGVzIHRoYXQgb2YgdGhlIHdyYXBwZXIuICBXaGVuIGEgc2l6ZSBpcwoJcHJlc2NyaWJlZCBhbmQgdGhlIGZpZWxkIGlzIG5vdCBhbGlhc2VkLCByZW1vdmUgdGhlIHdyYXBwZXIgb2YgYSBKTQoJdHlwZSBvbmx5IGlmIHRoZSBzaXplIGlzIG5vdCBncmVhdGVyIHRoYW4gdGhhdCBvZiB0aGUgcGFja2VkIGFycmF5LgoJKGduYXRfdG9fZ251X2VudGl0eSk6IENoYW5nZSB0aGUgZXh0ZW5zaW9uIG9mIHBhY2tlZCBhcnJheSB3cmFwcGVycwoJZnJvbSBMSk0gdG8gSk0uCgoyMDA0LTEwLTI2ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogZXZhbF9mYXQuYWRiIChFcHNfTW9kZWwsRXBzX0Rlbm9ybSk6IFJlbW92ZSwgbm8gbG9uZ2VyIHVzZWQuCgkoU3VjYyk6IFJlLWltcGxlbWVudCB1c2luZyBTY2FsaW5nLCBFeHBvbmVudCBhbmQgQ2VpbGluZyBhdHRyaWJ1dGVzLgoJKFByZWQpOiBJbXBsZW1lbnQgaW4gdGVybXMgb2YgU3VjYy4KCjIwMDQtMTAtMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoU2FmZV9Db21wb25lbnQpOiBBbiBhZ2dyZWdhdGUgY29tcG9uZW50IHRoYXQgaXMgYW4KCXVuY2hlY2tlZCBjb252ZXJzaW9uIGlzIHNhZmUgZm9yIGluLXBsYWNlIHVzZSBpZiB0aGUgZXhwcmVzc2lvbiBvZiB0aGUKCWNvbnZlcnNpb24gaXMgc2FmZS4KCShFeHBhbmRfQXJyYXlfQWdncmVnYXRlKTogQW4gYWdncmVnYXRlIHRoYXQgaW5pdGlhbGl6ZXMgYW4gYWxsb2NhdG9yIG1heQoJYmUgZXhwYW5kYWJsZSBpbiBwbGFjZSBldmVuIGlmIHRoZSBhZ2dyZWdhdGUgZG9lcyBub3QgY29tZSBmcm9tIHNvdXJjZS4KCShDb252ZXJ0X0FycmF5X0FnZ3JfSW5fQWxsb2NhdG9yKTogTmV3IHByb2NlZHVyZSB0byBpbml0aWFsaXplIHRoZQoJZGVzaWduYXRlZCBvYmplY3Qgb2YgYW4gYWxsb2NhdG9yIGluIHBsYWNlLCByYXRoZXIgdGhhbiBidWlsZGluZyBpdAoJZmlyc3Qgb24gdGhlIHN0YWNrLiBUaGUgcHJldmlvdXMgc2NoZW1lIGZvcmNlcyBhIGZ1bGwgY29weSBvZiB0aGUgYXJyYXksCglhbmQgbWF5IGJlIGFsdG9nZXRoZXIgdW5zdXNhYmxlIGlmIHRoZSBzaXplIG9mIHRoZSBhcnJheSBpcyB0b28gbGFyZ2UKCWZvciBzdGFjayBhbGxvY2F0aW9uLgoKMjAwNC0xMC0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fT3BfRXEpOiBNYWtlIHN1cmUgd2UgZXhwYW5kIGEgbG9vcCBmb3IgYXJyYXkKCWNvbXBhcmVzIGlmIHRoZSBjb21wb25lbnQgaXMgYXRvbWljLgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9Bc3NpZ25fQXJyYXkpOiBNYWtlIHN1cmUgd2UgZXhwYW5kIGEgbG9vcCBmb3IKCWFycmF5IGFzc2lnbm1lbnQgaWYgdGhlIGNvbXBvbmVudCB0eXBlIGlzIGF0b21pYy4KCjIwMDQtMTAtMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0FjdHVhbHMpOiBJZiB0aGUgYWN0dWFsIGZvciBhbiBpbi1vdXQgcGFyYW1ldGVyCglpcyBhbGlhc2VkIGFuZCBpcyBhIGJ5X3JlZmVyZW5jZSB0eXBlLCBkbyBub3QgcGFzcyBieSBjb3B5LgoJKEV4cGFuZF9OX0Z1bmN0aW9uX0NhbGwpIDxSaHNfT2ZfQXNzaWduX09yX0RlY2w+OiBOZXcgZnVuY3Rpb24gdG8KCWRldGVjdCB3aGV0aGVyIHRoZSBjYWxsIGlzIGluIHRoZSByaWdodCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgb3IKCXRoZSBleHByZXNzaW9uIG9mIGFuIG9iamVjdCBkZWNsYXJhdGlvbi4gIFJlY3Vyc2Ugb24gY29tcG9uZW50Cglhc3NvY2lhdGlvbiB3aXRoaW4gYWdncmVnYXRlcy4KCUNhbGwgaXQgaW4gdGhlIGNvbmRpdGlvbiB0aGF0IGRldGVybWluZXMgd2hldGhlciB0aGUgdGVtcG9yYXJ5IGlzCgluZWNlc3NhcnkgZm9yIGNvcnJlY3Qgc3RhY2stY2hlY2tpbmcuCgoyMDA0LTEwLTI2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBleHBfZGlzdC5hZGIgKEJ1aWxkX0dlbmVyYWxfQ2FsbGluZ19TdHVicyk6IE5ldyBmb3JtYWwgcGFyYW1ldGVyCglSQUNXX1R5cGUsIHVzZWQgaW4gdGhlIFBvbHlPUkIgdmVyc2lvbi4KCVJlbmFtZSBSQ0lfSW5mbyB0byBSQ0lfTG9jYXRvciwgZm9yIGNvbnNpc3RlbmN5IGJldHdlZW4gdGhlIFBvbHlPUkIKCXZlcnNpb24gYW5kIHRoZSBHQVJMSUMgdmVyc2lvbi4KCgkqIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGIsIHMtcGFyaW50LmFkcywgcy1wYXJpbnQuYWRiOgoJUmVuYW1lIFJDSV9JbmZvIHRvIFJDSV9Mb2NhdG9yIGZvciBiZXR0ZXIgY29uc2lzdGVuY3kgYmV0d2VlbiB0aGUKCUdBUkxJQyBhbmQgUG9seU9SQiB2ZXJzaW9ucyBvZiB0aGUgZGlzdHJpYnV0ZWQgc3lzdGVtcyBhbm5leC4KCShEU0FfSW1wbGVtZW50YXRpb25fTmFtZSk6IFRoaXMgZW51bWVyYXRpb24gbGlzdHMgdGhlIHBvc3NpYmxlCglpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFBhcnRpdGlvbiBDb21tdW5pY2F0aW9uIFN1YnN5c3RlbSBmb3IgdGhlCglEaXN0cmlidXRlZCBTeXN0ZW1zIEFubmV4IChEU0EpLiBUaGUgdGhyZWUgYXZhaWxhYmxlIGltcGxlbWVudGF0aW9ucwoJYXJlIHRoZSBkdW1teSBzdHViIGltcGxlbWVudGF0aW9uIChOb19EU0EpLCBhbmQgdHdvIHZlcnNpb25zIGJhc2VkIG9uCgl0d28gZGlmZmVyZW50IGRpc3RyaWJ1dGlvbiBydW50aW1lIGxpYnJhcmllczogR0FSTElDIGFuZCBQb2x5T1JCLiBCb3RoCgl0aGUgR0FSTElDIFBDUyBhbmQgdGhlIFBvbHlPUkIgUENTIGFyZSBwYXJ0IG9mIHRoZSBHTEFERSBkaXN0cmlidXRpb24KCXRlY2hub2xvZ3kuCglDaGFuZ2UgdGhlIGxpdGVyYWwgR0xBREVfRFNBIHRvIEdBUkxJQ19EU0EgdG8gYWNjdXJhdGVseSBkZXNjcmliZQoJdGhhdCBvcmdhbml6YXRpb24uCgoJKiBydHNmaW5kLmFkczogUmVuYW1lIFJDSV9JbmZvIHRvIFJDSV9Mb2NhdG9yIGZvciBiZXR0ZXIgY29uc2lzdGVuY3kKCWJldHdlZW4gdGhlIEdBUkxJQyBhbmQgUG9seU9SQiB2ZXJzaW9ucyBvZiB0aGUgZGlzdHJpYnV0ZWQgc3lzdGVtcwoJYW5uZXguCglSZW1vdmUgUkVfVW5ib3VuZGVkX1JlY2xhaW1fUG9vbCBzaW5jZSBpdCBpcyB1bnVzZWQuCgoyMDA0LTEwLTI2ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAZ25hdC5jb20+CgoJKiBnbmF0MWRydi5hZGI6IFN1cHByZXNzIGNhbGxpbmcgdGhlIGJhY2sgZW5kIHdoZW4KCUZyb250ZW5kX0xheW91dF9Pbl9UYXJnZXQgaXMgdHJ1ZS4KCjIwMDQtMTAtMjYgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGctb3NfbGliLmFkcywgZy1vc19saWIuYWRiIChTZXRfRXhlY3V0YWJsZSwgU2V0X1dyaXRhYmxlLAoJU2V0X1JlYWRfT25seSk6IE5ldyBzdWJwcm9ncmFtcy4KCVRoZXNlIG5ldyByb3V0aW5lcyBhbGxvdyB0aGUgdXNlciB0byBzZXQgb3IgdW5zZXQgdGhlIE93bmVyIGV4ZWN1dGUKCWFuZCBPd25lciB3cml0ZSBwZXJtaXNzaW9uIGZsYWdzIG9uIGEgZmlsZS4KCgkqIG1ha2VncHIuYWRiLCBtbGliLmFkYiwgbWxpYi1wcmouYWRiOiBVc2UKCUdOQVQuT1NfTGliLlNldF9FeGVjdXRhYmxlIGluc3RlYWQgb2Ygcm9sbGluZyBvdXIgb3duLgoKMjAwNC0xMC0yNiAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBnbmF0LmNvbT4KCgkqIGktY3BwLmFkcywgaS1jcHAuYWRiOiBDaGFuZ2UgbGF5b3V0IG9mIFZUYWJsZSBmb3IgbmV3IEMrKyBBQkkuCgoyMDA0LTEwLTI2ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBpbml0LmMgKF9fZ25hdF9lcnJvcl9oYW5kbGVyKSBbV2luMzJdOiBJbnN0ZWFkIG9mIHRyeWluZyB0byByZWFkIHRoZQoJbWVtb3J5IGJlZm9yZSB0aGUgZmF1bHRpbmcgcGFnZSB3ZSBwcm9wZXJseSB0ZXN0IHRoZSBwcm9jZXNzIHJlYWQKCWFjY2VzcyBmb3IgdGhpcyBhZGRyZXNzIHVzaW5nIGFwcHJvcHJpYXRlIFdpbjMyIHJvdXRpbmUuCgkoSFBVWCBzZWN0aW9ucyk6IGd1YXJkIHdpdGggIl9faHB1eF9fIiBpbnN0ZWFkIG9mICJocHV4Ii4KCjIwMDQtMTAtMjYgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogbGliLXhyZWYuYWRiIChHZW5lcmF0ZV9SZWZlcmVuY2UpOiBEb24ndCBjb21wbGFpbiBhYm91dCByZWZlcmVuY2UgdG8KCWVudHJ5IHBhcmFtZXRlciBpZiBwcmFnbWEgVW5yZWZlcmVuY2VkIHNldCwgc2luY2Ugd2UgZG8gbm90IHByb3Blcmx5CgloYW5kbGUgdGhlIGNhc2Ugb2YgbXVsdGlwbGUgcGFyYW1ldGVycy4KCjIwMDQtMTAtMjYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogcHJqLWVudi5hZGI6IChDb250YWluc19BTElfRmlsZXMpOiBOZXcgQm9vbGVhbiBmdW5jdGlvbgoJKEFkYV9PYmplY3RzX1BhdGguQWRkKTogRm9yIGEgbGlicmFyeSBwcm9qZWN0LCBhZGQgdG8gdGhlIG9iamVjdCBwYXRoCgl0aGUgbGlicmFyeSBkaXJlY3Rvcnkgb25seSBpZiB0aGVyZSBpcyBubyBvYmplY3QgZGlyZWN0b3J5IG9yIGlmIHRoZQoJbGlicmFyeSBkaXJlY3RvcnkgY29udGFpbnMgQUxJIGZpbGVzLgoJKFNldF9BZGFfUGF0aHMuQWRkLlJlY3Vyc2l2ZV9BZGQpOiBEaXR0bwoKMjAwNC0xMC0yNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotbm1zYy5hZGIgKExhbmd1YWdlX0luZGVwZW5kZW50X0NoZWNrKTogRG8gbm90IGZvcmJpZCB2aXJ0dWFsCglleHRlbnNpb24gb2YgbGlicmFyeSBwcm9qZWN0cy4KCgkqIHByai1wYXJ0LmFkYjogSWYgZW52IHZhciBBREFfUFJPSkVDVF9QQVRIIGlzIG5vdCBkZWZpbmVkLCBwcm9qZWN0CglwYXRoIGRlZmF1bHRzIHRvICIuOjxwcmVmaXg+L2xpYi9nbmF0Ii4KCShQYXJzZSk6IEZvciBhbiBleHRlbmRpbmcgYWxsIHByb2plY3QsIGFsbG93IGRpcmVjdCBpbXBvcnQgb2YgYSBwcm9qZWN0Cgl0aGF0IGlzIHZpcnR1YWxseSBleHRlbmRlZC4KCgkqIHByai1wcm9jLmFkYiAoSW1wb3J0ZWRfT3JfRXh0ZW5kZWRfUHJvamVjdF9Gcm9tKTogSWYgYSBwcm9qZWN0IHdpdGgKCXRoZSBzcGVjaWZpZWQgbmFtZSBpcyBkaXJlY3RseSBpbXBvcnRlZCwgcmV0dXJuIGl0cyBJRC4gT3RoZXJ3aXNlLCBpZgoJYW4gZXh0ZW5zaW9uIG9mIHRoaXMgcHJvamVjdCBpcyBpbXBvcnRlZCwgcmV0dXJuIHRoZSBJRCBvZiB0aGUKCWV4dGVuc2lvbi4KCjIwMDQtMTAtMjYgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcy1hcml0NjQuYWRiOiAoTGUzKTogTmV3IGZ1bmN0aW9uLCB1c2VkIGJ5IFNjYWxlZF9EaXZpZGUKCShTdWIzKTogTmV3IHByb2NlZHVyZSwgdXNlZCBieSBTY2FsZWRfRGl2aWRlCgkoU2NhbGVkX0RpdmlkZSk6IFN1YnN0YW50aWFsIHJld3JpdGUsIGF2b2lkIGR1cGxpY2F0ZWQgY29kZSwgYW5kIGFsc28KCWNvcnJlY3QgbW9yZSB0aGFuIG9uZSBpbnN0YW5jZSBvZiBmYWlsdXJlIHRvIHByb3BhZ2F0ZSBjYXJyaWVzCgljb3JyZWN0bHkuCgkoRG91YmxlX0RpdmlkZSk6IEhhbmRsZSBvdmVyZmxvdyBjYXNlIG9mIGxhcmdlc3QgbmVnYXRpdmUgbnVtYmVyCglkaXZpZGVkIGJ5IG1pbnVzIG9uZS4KCgkqIHMtYXJpdDY0LmFkcyAoRG91YmxlX0RpdmlkZSk6IERvY3VtZW50IHRoYXQgb3ZlcmZsb3cgY2FuIG9jY3VyIGluCgl0aGUgY2FzZSBvZiBhIHF1b3RpZW50IHZhbHVlIG91dCBvZiByYW5nZS4KCUZpeCBjb21tZW50cy4KCjIwMDQtMTAtMjYgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcy1iaXRvcHMuYWRiIChCaXRfRXEpOiBSZW1vdmUgcmVkdW5kYW50IGNoZWNrLgoKCSogcy1iaXRvcHMuYWRzOiBNaW5vciBjb21tZW50IHVwZGF0ZXMKCUNoYW5nZSBzb21lIG9jY3VycmVuY2VzIG9mIEFkZHJlc3MgdG8gU3lzdGVtLkFkZHJlc3MKCgkqIHMtY2Fyc2k4LmFkczogRml4IG1pbm9yIGN1dC1hbmQtcGFzdGUgZXJyb3IgaW4gY29tbWVudHMKCjIwMDQtMTAtMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9hdHRyLmFkYiAoUmVzb2x2ZV9BdHRyaWJ1dGUsIGNhc2UgJ0FjY2Vzcyk6IEFwcGx5IHByb3BlcgoJYWNjZXNzaWJpbGl0eSBjaGVjayB0byBwcmVmaXggdGhhdCBpcyBhIHByb3RlY3RlZCBvcGVyYXRpb24uCgoyMDA0LTEwLTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKE9wdGlvbmFsX1N1YnVuaXQpOiBJZiBmaWxlIG9mIGV4cGVjdGVkIHN1YnVuaXQgaXMKCWVtcHR5LCBwb3N0IG1lc3NhZ2Ugb24gc3R1Yi4KCjIwMDQtMTAtMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKEluX01haW5fQ29udGV4dCk6IFByZWRpY2F0ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUKCWN1cnJlbnQgaW5zdGFuY2UgYXBwZWFycyB3aXRoaW4gYSB1bml0IHRoYXQgaXMgZGlyZWN0bHkgaW4gdGhlIGNvbnRleHQKCW9mIHRoZSBtYWluIHVuaXQuCglVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBib2R5IG9mIHRoZSBpbnN0YW5jZSBzaG91bGQgYmUgYW5hbHl6ZWQKCWltbWVkaWF0ZWx5IGFmdGVyIGl0cyBzcGVjLCB0byBtYWtlIGl0cyBzdWJwcm9ncmFtIGJvZGllcyBhdmFpbGFibGUKCWZvciBmcm9udC1lbmQgaW5saW5pbmcuCgkoQW5hbHl6ZV9Gb3JtYWxfQXJyYXlfVHlwZSk6IENsZWFudXAgY29uZGl0aW9uIHRoYXQgY2hlY2tzIHRoYXQgcmFuZ2UKCWNvbnN0cmFpbnQgaXMgbm90IGFsbG93ZWQgb24gdGhlIGNvbXBvbmVudCB0eXBlIChBQVJNIDEyLjUuMygzKSkKCjIwMDQtMTAtMjYgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX2NoMTMuYWRiIChBbmFseXplX0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZSwgY2FzZQoJJ1N0b3JhZ2VfUG9vbCk6IGVuaGFuY2UsIGRvY3VtZW50ICYgbGltaXQgZGV0ZWN0aW9uIG9mIG5vbi1zaGFyYWJsZQoJaW50ZXJuYWwgcG9vbHMuCgoJKiBpbXB1bml0LmFkYjogTWFrZSBTeXN0ZW0uUG9vbF9HbG9iYWwgYW5kIFN5c3RlbS5Qb29sX0xvY2FsIHZpc2libGUuCgoJKiBzLXBvb2dsby5hZHM6IEFkZCBtb3JlIGRvY3VtZW50YXRpb24gbm93IHRoYXQgdGhpcyBwb29sIGlzIHByb3Blcmx5Cglkb2N1bWVudGVkLgoKMjAwNC0xMC0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMy5hZGIgKENvbXBsZXRlX1ByaXZhdGVfU3VidHlwZSk6IElmIHRoZSBmdWxsIHZpZXcgaXMgYSB0YXNrCglvciBwcm90ZWN0ZWQgdHlwZSB3aXRoIGRpc2NyaW1pbmFudHMsIGRvIG5vdCBjb25zdHJhaW4gdGhlCgljb3JyZXNwb25kaW5nIHJlY29yZCB0eXBlIGlmIHRoZSBzdWJ0eXBlIGRlY2xhcmF0aW9uIGhhcyBubwoJZGlzY3JpbWluYW50IGNvbnN0cmFpbnRzLiBUaGlzIGNhbiBiZSB0aGUgY2FzZSBpbiBzb3VyY2UgY29kZSwgb3IgaW4KCXRoZSBzdWJ0eXBlIGRlY2xhcmF0aW9uIGNyZWF0ZWQgdG8gcmVuYW1lIGFuIGFjdHVhbCB0eXBlIHdpdGhpbiBhbgoJaW5zdGFudGlhdGlvbi4KCjIwMDQtMTAtMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IElmIGJvZHkgaXMgYSBzdWJ1bml0IGZvciBhCglkaWZmZXJlbnQga2luZCBvZiBzdHViIChwb3NzaWJseSB3cm9uZyBuYW1lIGZvciBmaWxlKSwgZG8gbm90IGNoZWNrCglmb3IgY29uZm9ybWFuY2UuCgkoVXNlc19TZWNvbmRhcnlfU3RhY2spOiBOZXcgc3Vic2lkaWFyeSB0byBCdWlsZF9Cb2R5X1RvX0lubGluZS4gSWYgYm9keQoJaW5jbHVkZXMgY2FsbCB0byBzb21lIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiB1bmNvbnN0cmFpbmVkIHR5cGUsIGRvCglub3QgaW5saW5lLgoKMjAwNC0xMC0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2VsYWIuYWRiIChDaGVja19FbGFiX0NhbGwpOiBEbyBub3QgY2hlY2sgYSBjYWxsIHRoYXQgZG9lcyBub3QKCWFwcGVhciBpbiB0aGUgY29kZSBmb3IgdGhlIG1haW4gdW5pdC4gRGVwZW5kZW5jaWVzIGFtb25nIHVuaXRzIGluIHRoZQoJY29udGV4dCBvZiB0aGUgbWFpbiB1bml0IGFyZSBlc3RhYmxpc2hlZCB3aGVuIHRob3NlIG90aGVyIHVuaXRzIGFyZQoJY29tcGlsZWQuIE90aGVyd2lzZSBzcHVyaW91cyBlbGFib3JhdGlvbiBjb25zdHJhaW50cyBjYW4gZ2VuZXJhdGUKCWluY29ycmVjdCBlbGFib3JhdGlvbiBjaXJjdWxhcml0aWVzLgoKMjAwNC0xMC0yNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoJICAgIEVkIFNjaG9uYmVyZyAgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fdXRpbC5hZGIgKElzX0FsaWFzZWRfVmlldyk6IERlZmVuZCBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHRoaXMKCXN1YnByb2dyYW0gaXMgY2FsbGVkIHdpdGggYSBwYXJhbWV0ZXIgdGhhdCBpcyBub3QgYW4gb2JqZWN0IG5hbWUuIFRoaXMKCXNpdHVhdGlvbiBhcmlzZXMgZm9yIHNvbWUgY2FzZXMgb2YgaWxsZWdhbCBjb2RlLCB3aGljaCBpcyBkaWFnbm9zZWQKCWxhdGVyLCBhbmQgaW4gdGhpcyBjYXNlIGl0IGlzIHdyb25nIHRvIGNhbGwgSXNfQWxpYXNlZCwgYXMgdGhhdCBtaWdodAoJY2F1c2UgYSBjb21waWxlciBjcmFzaC4KCShFeHBsYWluX0xpbWl0ZWRfVHlwZSk6IFJlZmluZSBwcmV2aW91cyBmaXggdG8gaW5jbHVkZQoJaW5oZXJpdGVkIGNvbXBvbmVudHMgb2YgZGVyaXZlZCB0eXBlcywgdG8gcHJvdmlkZSBjb21wbGV0ZSBpbmZvcm1hdGlvbi4KCgkqIGV4cF9jaDkuYWRiIChTZXRfUHJpdmFscyk6IFNldCB0aGUgRWtpbmQgb2YgdGhlIGFjdHVhbCBvYmplY3QgdGhhdAoJaXMgdGhlIHByaXZhbCBmb3IgYSBwcm90ZWN0ZWQgb2JqZWN0LgoJSXQgaXMgbmVjZXNzYXJ5IHRvIG1hcmsgdGhpcyBlbnRpdHkgYXMgYSB2YXJpYWJsZSwgaW4gYWRkaXRpb24gdG8KCWZsYWdnaW5nIGl0IGFzIEFsaWFzZWQsIGJlY2F1c2UgU2VtX1V0aWwuSXNfQWxpYXNlZF9WaWV3IGhhcyBiZWVuCgltb2RpZmllZCB0byBhdm9pZCBjaGVja2luZyB0aGUgQWxpYXNlZCBmbGFnIG9uIGVudGl0aWVzIHRoYXQgYXJlIG5vdAoJb2JqZWN0cy4gKENoZWNraW5nIHRoYXQgZmxhZyBmb3Igbm9uLW9iamVjdHMgaXMgZXJyb25lb3VzIGFuZCBjb3VsZAoJbGVhZCB0byBhIGNvbXBpbGVyIGNyYXNoKS4KCjIwMDQtMTAtMjYgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcy1mYXRnZW4uYWRiIChQcmVkKTogRml4IHJlZHVuZGFudCB0ZXN0IGZvciBYID4gMC4wLCBzaW5jZSBpZgoJWF9GcmFjID0gMC41LCB0aGVuIHdlIGtub3cgdGhhdCB0aGUgbnVtYmVyIFggbXVzdCBiZSBwb3NpdGl2ZS4KCShTdWNjKTogUmVtb3ZlIHRoZSBzYW1lIHJlZHVuZGFudCB0ZXN0LCBhbmQgYWxzbyBmaXggdGhlIHByaW1hcnkgdGVzdAoJdG8gdGVzdCBmb3IgWF9GcmFjID0gLTAuNSAodXNlZCB0byBiZSAwLjUpIHdoaWNoIGlzIGNsZWFybHkgd3JvbmcuCglNaW5vciByZWZvcm1hdHRpbmcKCShEZWNvbXBvc2UpOiBBZGQgZnVsbGVyIGNvbW1lbnRzIHRvIHNwZWMKCjIwMDQtMTAtMjYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIHRyYWNlYmFrLmMgKElTX0JBRF9QVFIpOiBVc2UgSXNCYWRDb2RlUHRyIG9uIFdpbjMyIHRvIGNoZWNrIGZvciBwdHIKCXZhbGlkaXR5IChwcm9jZXNzIG11c3QgaGF2ZSByZWFkIGFjY2VzcykuIFNldCB0byAwIGluIGFsbCBvdGhlciBjYXNlcy4KCShTVE9QX0ZSQU1FKTogTm93IGNoZWNrIGZvciBwdHIgdmFsaWRpdHkgdG8gYXZvaWQgYSBzZWdtZW50YXRpb24KCXZpb2xhdGlvbiBvbiBXaW4zMi4KCShWQUxJRF9TVEFDS19GUkFNRSk6IENoZWNrIGZvciBwdHIgdmFsaWRpdHkgb24gV2luMzIgdG8gYXZvaWQgYQoJc2VnbWVudGF0aW9uIHZpb2xhdGlvbi4KCjIwMDQtMTAtMjYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIHRyYW5zLmMgKGNhbGxfdG9fZ251KTogRm9yIGFuIChpbi0pb3V0IHBhcmFtZXRlciBwYXNzZWQgYnkgcmVmZXJlbmNlCgl3aG9zZSB0eXBlIGlzIGEgY29uc3RydWN0ZWQgc3VidHlwZSBvZiBhbiBhbGlhc2VkIG9iamVjdCB3aXRoIGFuCgl1bmNvbnN0cmFpbmVkIG5vbWluYWwgc3VidHlwZSwgY29udmVydCB0aGUgYWN0dWFsIHRvIHRoZSBjb25zdHJ1Y3RlZAoJc3VidHlwZSBiZWZvcmUgdGFraW5nIGl0cyBhZGRyZXNzLgoKMjAwNC0xMC0yNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBhLWRpcnZhbC5hZHMsIGEtZGlydmFsLmFkYiwgYS1kaXJ2YWwtdm1zLmFkYiwgYS1kaXJ2YWwtbWluZ3cuYWRiCgkoSXNfUGF0aF9OYW1lX0Nhc2VfU2Vuc2l0aXZlKTogTmV3IGZ1bmN0aW9uCgoJKiBhLWRpcmVjdC5hZGIgKFRvX0xvd2VyX0lmX0Nhc2VfSW5zZW5zaXRpdmUpOiBOZXcgcHJvY2VkdXJlCgkoQmFzZV9OYW1lLCBTaW1wbGVfTmFtZSwgQ3VycmVudF9EaXJlY3RvcnksIENvbXBvc2UsCglDb250YWluaW5nX0RpcmVjdG9yeSwgRnVsbF9OYW1lKTogQ2FsbCBUb19Mb3dlcl9JZl9DYXNlX0luc2Vuc2l0aXZlIG9uCgl0aGUgcmVzdWx0LgoKMjAwNC0xMC0yNiAgQ3lyaWxsZSBDb21hciAgICA8Y29tYXJAYWN0LWV1cm9wZS5mcj4KCSAgICBWYXNpbGl5IEZvZmFub3YgIDxmb2Zhbm92QGFjdC1ldXJvcGUuZnI+CgkgICAgVmluY2VudCBDZWxpZXIgICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ25hdF91Z24udGV4aTogR2VuZXJhbGl6ZSAiZmluZGluZyBtZW1vcnkgcHJvYmxlbXMiIHNlY3Rpb24gaW50byBhCgkibWVtb3J5IG1hbmFnZW1lbnQgaXNzdWVzIiBzZWN0aW9uIGFuZCBkb2N1bWVudCBzb21lIG9mIHRoZSB1c2VmdWwKCW1lbW9yeSBwb29scyBwcm92aWRlZCBhcyBwYXJ0IG9mIHRoZSBHTkFUIGxpYnJhcnkuCglSZW1vdmUgInZpcnR1YWwiIGZyb20gZGVjbGFyYXRpb24gb2YgQTo6bWV0aG9kMiBpbgoJdGhlIHNpbXBsZSBleGFtcGxlIG9mIEFkYS9DKysgbWl4ZWQgc3lzdGVtLgoJTGlicmFyeSBQcm9qZWN0cyBtYXkgYmUgdmlydHVhbGx5IGV4dGVuZGVkOiB0aGVpciB2aXJ0dWFsIGV4dGVuc2lvbnMKCWFyZSBub3QgTGlicmFyeSBQcm9qZWN0cy4KCUFkZGVkIHNlY3Rpb24gb24gZXh0ZW5kaW5nIHByb2plY3QgaGllcmFyY2hpZXMuCgoyMDA0LTEwLTE5ICBBYXJvbiBXLiBMYUZyYW1ib2lzZSAgPGFhcm9uYXZheTYyQGFhcm9ud2wuY29tPgoKCSogYWRhaW50LmMgKF9fZ25hdF9nZXRfbGlicmFyaWVzX2Zyb21fcmVnaXN0cnkpOiBDYXN0IHZhbHVlCgl0byBMUEJZVEUuCgkoX19nbmF0X3BvcnRhYmxlX3NwYXduKTogUmVtb3ZlIGNvbnN0LgoKCSogbWluZ3czMi5oIChNQVhQQVRITEVOKTogQ2hlY2sgZm9yIHByZXZpb3VzIGRlZmluaXRpb24uCgoyMDA0LTEwLTE3ICBNYXR0aGlhcyBLbG9zZSAgPGRva29AZGViaWFuLm9yZz4KCgkqIGduYXR2c24uYWRzOiBTZXQgZ25hdCBsaWJyYXJ5IHZlcnNpb24gdG8gNC4wLgoKMjAwNC0xMC0wNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtbGliLXRndC5hZHM6IChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBOZXcgcGFyYW1ldGVyIE9wdGlvbnNfMgoKMjAwNC0xMC0wNCAgTGF1cmVudCBHVUVSQlkgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCglQUiBhZGEvMTUxNTYKCSogTWFrZWZpbGUuaW46IERlZmluZSBhbmQgdXNlIFJBTkxJQl9GTEFHUy4KCjIwMDQtMTAtMDQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIHRyYWNlYmFrLmM6IEFsd2F5cyBzZXQgTE9XRVNUX0FERFIgdG8gMCBvbiBXaW4zMiAoYXMgZG9uZSBvbiBhbGwKCW90aGVyIHg4NiBwbGF0Zm9ybXMpLgoKMjAwNC0xMC0wNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogcy10YXNzdGEuYWRiIChUYXNrX1dyYXBwZXIpOiBNYWtlIGl0IENvbnZlbnRpb24gQywgd2hpY2ggbWFrZXMgc2Vuc2UKCWluIGdlbmVyYWwgYW5kIHRyaWdnZXJzIHN0YWNrIGFsaWdubWVudCBhZGp1c3RtZW50IGZvciB0aHJlYWQgZW50cnkKCXBvaW50cyBvbiB0YXJnZXRzIHdoZXJlIHRoaXMgaXMgbmVjZXNzYXJ5LgoKMjAwNC0xMC0wNCAgQmVybmFyZCBCYW5uZXIgIDxiYW5uZXJAZ25hdC5jb20+CgoJUFIgYWRhLzEzODk3CgkqIE1ha2VmaWxlLmluOiBBZGQgc2VjdGlvbiBmb3IgcG93ZXJwYyBsaW51eAoJQWRkIHZhcmlhbnQgaS12eHdvcmsteDg2LmFkcwoKCSogaS12eHdvcmsteDg2LmFkcywgc3lzdGVtLWxpbnV4LXBwYy5hZHM6IE5ldyBmaWxlcy4KCjIwMDQtMTAtMDQgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGluaXQuYyAoX19nbmF0X2luaXRpYWxpemUpOiBDYWxsIGFuIEFkYSBzdWJwcm9ncmFtIHRvIHBlcmZvcm0gdGhlCgl0YWJsZSByZWdpc3RyYXRpb24gY2FsbHMgd2hlbiBuZWVkIGJlLiBFbnN1cmVzIG5vIHJlZmVyZW5jZSB0byB0aGUgY3J0CgljdG9ycyBzeW1ib2wgYXJlIGlzc3VlZCBpbiB0aGUgU0pMSiBjYXNlLCB3aGljaCBhdm9pZHMgcG9zc2libGUKCXVuZGVmaW5lZCBzeW1ib2wgZXJyb3JzIGluIHRoZSBjYXNlIG9mIG1vZHVsZXMgdG8gYmUgc3RhdGljYWxseSBsaW5rZWQKCXdpdGggdGhlIGtlcm5lbC4KCjIwMDQtMTAtMDQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHNlbV9jaDQuYWRiIChUcnlfT2JqZWN0X09wZXJhdGlvbik6IFJlZm9ybWF0IHRoZSBjb2RlIHRvIGV4cGFuZAoJaW4tbGluZSB0aGUgY29kZSBjb3JyZXNwb25kaW5nIHRvIHN1YnByb2dyYW0gQW5hbHl6ZV9BY3R1YWxzLiBJbgoJYWRkaXRpb24sIGFuYWx5emUgdGhlIGFjdHVhbHMgb25seSBpbiBjYXNlIG9mIHN1YnByb2dyYW0gY2FsbC4KCjIwMDQtMTAtMDQgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiBzLXZ4d29yay14ODYuYWRzOiAoRlBfQ09OVEVYVCk6IERlZmluZWQgdG8gYmUgY29ycmVjdCBzaXplCgoyMDA0LTEwLTA0ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogZy1kaXJvcGUuYWRzIChCYXNlX05hbWUpOiBDbGFyaWZ5IHRoZSBtZWFuaW5nIG9mIHRoZSBTdWZmaXggcGFyYW1ldGVyCglpbiB0aGUgZG9jdW1lbnRhdGlvbi4KCjIwMDQtMTAtMDQgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2NoNS5hZGIgKFVuYmxvY2tlZF9FeGl0X0NvdW50KTogTm93IHVzZWQgZm9yIGJsb2NrcyBhcyB3ZWxsIGFzCglJRiBhbmQgQ0FTRS4KCShBbmFseXplX0Jsb2NrX1N0YXRlbWVudCk6IEFkZCBjaXJjdWl0cnkgdG8gZGV0ZWN0IGZvbGxvd2luZyBkZWFkIGNvZGUKCShDaGVja19VbnJlYWNoYWJsZV9Db2RlKTogSGFuZGxlIGNhc2Ugb2YgYmxvY2sgZXhpdAoKMjAwNC0xMC0wNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBnLXNwaXBhdC5hZGI6IChYTWF0Y2gpOiBBdm9pZCB3YXJuaW5nIGZvciBMb2dpY19FcnJvciBjYWxsCgkoWE1hdGNoRCk6IEF2b2lkIHdhcm5pbmcgZm9yIExvZ2ljX0Vycm9yIGNhbGwKCjIwMDQtMTAtMDQgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZXhwX2NoNC5hZGIgKElzX1Byb2NlZHVyZV9BY3R1YWwpOiBDb3JyZWN0IHNvIHRoYXQgdGhpcyBkb2VzIG5vdAoJY29uc2lkZXIgZXhwcmVzc2lvbnMgYnVyaWVkIHdpdGhpbiBhIHByb2NlZHVyZSBhY3R1YWwgdG8gYmUgYW4gYWN0dWFsLgoJVGhpcyBjYXVzZWQgc29tZSBibG93dXBzIHdpdGggdXNlcyBvZiBwYWNrZWQgc2xpY2VzIHdpdGhpbiBhIHByb2NlZHVyZQoJYWN0dWFsLgoKMjAwNC0xMC0wNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfY2gzLmFkYiAoTmVlZHNfU2ltcGxlX0luaXRpYWxpemF0aW9uKTogTW9kdWxhciBwYWNrZWQgYXJyYXlzIG5vCglsb25nZXIgbmVlZCB0byBiZSBpbml0aWFsaXplZCB0byB6ZXJvLgoJKEdldF9TaW1wbGVfSW5pdF9WYWwpOiBNb2R1bGFyIHBhY2tlZCBhcnJheXMgbm8gbG9uZ2VyIG5lZWQgdG8gYmUKCWluaXRpYWxpemVkIHRvIHplcm8uCgoJKiBjaGVja3MuYWRiIChFeHByX0tub3duX1ZhbGlkKTogUGFja2VkIGFycmF5cyBhcmUgbm93IGFsd2F5cwoJY29uc2lkZXJlZCB2YWxpZCwgZXZlbiBpZiB0aGUgcmVwcmVzZW50YXRpb24gaXMgbW9kdWxhci4gVGhhdCdzIGNvcnJlY3QKCW5vdyB0aGF0IHdlIG5vIGxvbmdlciBpbml0aWFsaXplIHBhY2tlZCBtb2R1bGFyIGFycmF5cyB0byB6ZXJvLgoKCSogZXhwX2RidWcuYWRzOiBDbGFyaWZ5IGRvY3VtZW50YXRpb24gb24gaGFuZGxpbmcgb2YgUEFEIGFuZCBKTQoJc3VmZml4ZXMuIFRoZXNlIGFyZSBub3cgZG9jdW1lbnRlZCBhcyB0aGUgb25seSBjYXNlcyBpbiB3aGljaCB0aGUKCWRlYnVnZ2VyIGlnbm9yZXMgb3V0ZXIgcmVjb3Jkcy4KCVByZXZpb3VzbHksIHRoZSBzcGVjIGFsbG93ZWQgYXJiaXRyYXJ5IHN1ZmZpeGVzIGZvciB0aGlzIHB1cnBvc2UuCglDaGFuZ2UgbmFtZSBvZiBMSk0gdG8gSk0gZm9yIHBhY2tlZCBhcnJheSBwYWQgcmVjb3JkcwoJQ3JlYXRlIHNlcGFyYXRlIHNlY3Rpb24gb24gcGFja2VkIGFycmF5IGhhbmRsaW5nLCBhbmQgYWRkIGEgd2hvbGUgbmV3CglzZXQgb2YgY29tbWVudHMgdG8gdGhpcyBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlIHNpdHVhdGlvbiB3aXRoIHBhY2tlZAoJbW9kdWxhciB0eXBlcyBhbmQganVzdGlmaWNhdGlvbiByZXF1aXJlbWVudHMgZGVwZW5kaW5nIG9uIGVuZGlhbm5lc3MuCgoyMDA0LTEwLTA0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGEtZXhjZXB0LmFkYjogQWRkIGEgY29tbWVudCBmb3IgbGFzdCBjaGFuZ2UKCgkqIGVpbmZvLmFkczogTWlub3Igc3BlbGxpbmcgY29ycmVjdGlvbiBpbiBjb21tZW50CgoJKiBleHBfcGFrZC5hZGIsIGduYXRkbGwuYWRiLCBwcmotYXR0ci5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX2NoMTEuYWRiOiBGaXggYSBjYXNlIG9mIHVzaW5nIHwgaW5zdGVhZCBvZiBcIGZvciBjb250aW51YXRpb24KCW1lc3NhZ2VzLgoKCSogc2VtX3V0aWwuYWRzOiBNaW5vciBjb21tZW50IHVwZGF0ZQoKMjAwNC0xMC0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoNi5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogRG8gbm90IHRyZWF0IElubGluZSBhcwoJSW5saW5lX0Fsd2F5cyB3aGVuIGluIENvbmZpZ3VyYWJsZV9SdW5fVGltZSBtb2RlLgoKCSogc2VtX3ByYWcuYWRiIChQcm9jZXNzX0NvbnZlbnRpb24pOiBJZiBlbnRpdHkgaXMgYW4gaW5oZXJpdGVkCglzdWJwcm9ncmFtLCBhcHBseSBjb252ZW50aW9uIHRvIHBhcmVudCBzdWJwcm9ncmFtIGlmIGluIHNhbWUgc2NvcGUuCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgSW5saW5lKTogRG8gbm90IHRyZWF0IElubGluZSBhcyBJbmxpbmVfQWx3YXlzCgl3aGVuIGluIENvbmZpZ3VyYWJsZV9SdW5fVGltZSBtb2RlLgoKMjAwNC0xMC0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBTZXQgRmlyc3QvTGFzdCBlbnRpdHkgb2YKCWNsYXNzX3dpZGUgdHlwZSBhZnRlciBjb21wb25lbnQgbGlzdCBoYXMgYmVlbiBpbmhlcml0ZWQuCgoyMDA0LTEwLTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKENoZWNrX0dlbmVyaWNfQWN0dWFscyk6IE5ldyBwcmVkaWNhdGUKCURlbm90ZXNfUHJldmlvdXNfQWN0dWFsLCB0byBoYW5kbGUgcHJvcGVybHkgdGhlIGNhc2Ugb2YgYSBwcml2YXRlCglhY3R1YWwgdGhhdCBpcyBhbHNvIHRoZSBjb21wb25lbnQgdHlwZSBvZiBhIHN1YnNlcXVlbnQgYXJyYXkgYWN0dWFsLgoJVGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBmaXJzdCBhY3R1YWwgaXMgbm90IGFmZmVjdGVkIHdoZW4gdGhlCglzZWNvbmQgaXMgaW5zdGFsbGVkLgoJKFByb2Nlc3NfTmVzdGVkX0Zvcm1hbCk6IFN1YnNpZGlhcnkgb2YgSW5zdGFudGlhdGVfRm9ybWFsX1BhY2thZ2UsIHRvCgltYWtlIGZ1bGx5IHJlY3Vyc2l2ZSB0aGUgdHJlYXRtZW50IG9mIGZvcm1hbHMgb2YgcGFja2FnZXMgZGVjbGFyZWQKCXdpdGggYSBib3guCgkoUmVzdG9yZV9OZXN0ZWRfRm9ybWFsKTogU3Vic2lkaWFyeSBvZiBSZXN0b3JlX1ByaXZhdGVfVmlld3MsIHRvIHVuZG8KCXRoZSBhYm92ZSBvbiBleGl0IGZyb20gYW4gaW5zdGFudGlhdGlvbi4KCShEZW5vdGVzX0Zvcm1hbF9QYWNrYWdlKTogV2hlbiBjYWxsZWQgZnJvbSBSZXN0b3JlX1ByaXZhdGVfVmlld3MsIGlnbm9yZQoJY3VycmVudCBpbnN0YW50aWF0aW9uIHdoaWNoIGlzIG5vdyBjb21wbGV0ZS4KCShBbmFseXplX1BhY2thZ2VfSW5zdGFudGlhdGlvbik6IE5vIGluc3RhbnRpYXRlZCBib2R5IGlzIG5lZWRlZCBpZiB0aGUKCW1haW4gdW5pdCBpcyBnZW5lcmljLiBFZmZpY2llbnQsIGFuZCBhdm9pZCBhbm9tYWxpZXMgd2hlbiBhIGluc3RhbmNlCglhcHBlYXJzIGluIGEgcGFja2FnZSBhY2Nlc3NlZCB0aHJvdWdoIHJ0c2ZpbmQuCgoyMDA0LTEwLTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX05fRnVuY3Rpb25fQ2FsbCk6IElmIHN0YWNrIGNoZWNraW5nIGlzIGVuYWJsZWQsCglkbyBub3QgZ2VuZXJhdGUgYSBkZWNsYXJhdGlvbiBmb3IgYSB0ZW1wb3JhcnkgaWYgdGhlIGNhbGwgaXMgcGFydCBvZiBhCglsaWJyYXJ5LWxldmVsIGluc3RhbnRpYXRpb24uCgoyMDA0LTEwLTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fdXRpbC5hZGIgKEV4cGxhaW5fTGltaXRlZF9UeXBlKTogSWdub3JlIGludGVybmFsIGNvbXBvbmVudHMgd2hlbgoJc2VhcmNoaW5nIGZvciBhIGxpbWl0ZWQgY29tcG9uZW50IHRvIGZsYWcuCgoJKiBleHBfYXR0ci5hZGIgKEZyZWV6ZV9TdHJlYW1fU3VicHJvZ3JhbSk6IFN1YnNpZGlhcnkgcHJvY2VkdXJlIHRvCglleHBhbnNpb24gb2YgSW5wdXQsIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGltcGxpY2l0IGNhbGwKCWdlbmVyYXRlZCBieSB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZSBtdXN0IGZyZWV6ZSB0aGUgdXNlci1kZWZpbmVkCglzdHJlYW0gc3VicHJvZ3JhbS4gVGhpcyBpcyBvbmx5IHJlbGV2YW50IHRvICdJbnB1dCwgYmVjYXVzZSBpdCBjYW4KCWFwcGVhciBpbiBhbiBvYmplY3QgZGVjbGFyYXRpb24sIHByaW9yIHRvIHRoZSBib2R5IG9mIHRoZSBzdWJwcm9ncmFtLgoKCSogc2VtX2NoMTMuYWRiIChSZXBfSXRlbV9Ub29fTGF0ZSk6IE1ha2UgdGhlIGVycm9yIG5vbi1zZXJpb3VzLCBzbyB0aGF0CglleHBhbnNpb24gY2FuIHByb2NlZWQgYW5kIGZ1cnRoZXIgZXJyb3JzIHVuY292ZXJlZC4KCShNaW5vciBjbGVhbiB1cCk6IEZpeCBjYXNlcyBvZiB1c2luZyB8IGluc3RlYWQgb2YgXCBmb3IgY29udGludWF0aW9uCgltZXNzYWdlcy4KCjIwMDQtMTAtMDQgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjdWludHAuYywgZGVjbC5jLCB1dGlsczIuYzogVXNlIGdjY19hc3NlcnQgYW5kIGdjY191bnJlYWNoYWJsZS4KCgkqIHRyYW5zLmMgKGFzc29jX3RvX2NvbnN0cnVjdG9yKTogRml4IHVudXNlZCB2YXIgd2FybmluZyBpZiBubyBjaGVja2luZy4KCShnbmF0X2dpbXBsaWZ5X2V4cHIsIGNhc2UgQUREUl9FWFBSKTogRml4IGVycm9yIGluIGxhc3QgY2hhbmdlLgoJVXNlIGdjY19hc3NlcnQgYW5kIGdjY191bnJlYWNoYWJsZS4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIG9iamVjdCk6IENoZWNrIGFuZCBwcm9jZXNzIGEKCXNwZWNpZmllZCBhbGlnbm1lbnQgYmVmb3JlIHZhbGlkYXRpbmcgc2l6ZS4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX01vZHVsYXJfSW50ZWdlcl9TdWJ0eXBlPjogQ3JlYXRlIGEKCXN0cmlwcGVkLWRvd24gZGVjbGFyYXRpb24gZm9yIHRoZSB0eXBlIG9mIHRoZSBpbm5lciBmaWVsZCB3aGVuIG1ha2luZwoJYSBKTSB0eXBlLgoKCSogdXRpbHMuYyAoZmluaXNoX3JlY29yZF90eXBlKTogRG8gbm90IGNvbXB1dGUgdGhlIHNpemUgaW4gdW5pdHMKCWluY3JlbWVudGFsbHkuIEluc3RlYWQgY29tcHV0ZSBpdCBvbmNlIGZvciB0aGUgcmVwIGNsYXVzZSBjYXNlLgoJVXNlIGdjY19hc3NlcnQgYW5kIGdjY191bnJlYWNoYWJsZS4KCjIwMDQtMTAtMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogYS1kaXJ2YWwtbWluZ3cuYWRiIChJbnZhbGlkX0NoYXJhY3Rlcik6IEFkZCAnXCcgYXMgaW52YWxpZCBjaGFyYWN0ZXIKCWluIGZpbGUgbmFtZS4KCShJc19WYWxpZF9QYXRoX05hbWUpOiBUYWtlICcvJyBhcyBhIGRpcmVjdG9yeSBzZXBhcmF0b3IuCgoyMDA0LTEwLTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1wYXJ0LmFkYiAoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBDYWxsIElzX0V4dGVuZGluZ19BbGwKCShFeHRlbmRlZF9Qcm9qZWN0KSBvbmx5IGlmIEV4dGVuZGVkX1Byb2plY3QgaXMgZGVmaW5lZCwgdG8gYXZvaWQKCWFzc2VydGlvbiBlcnJvci4KCShQb3N0X1BhcnNlX0NvbnRleHRfQ2xhdXNlKTogQWx3YXlzIGNhbGwgU2V0X1BhdGhfTmFtZV9PZiB3aXRoIGEKCXJlc29sdmVkIHBhdGguCgkoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBEaXR0by4KCgkqIHByai1lbnYuYWRiIChTZXRfQWRhX1BhdGhzLkFkZC5SZWN1cnNpdmVfQWRkKTogRG8gbm90IGNhbGwKCUFkZF9Ub19Qcm9qZWN0X1BhdGggZm9yIHZpcnR1YWwgcHJvamVjdHMuCgoyMDA0LTEwLTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1saWItdGd0LXRydTY0LmFkYiwgbWxpYi10Z3QtYWl4LmFkYiwgbWxpYi10Z3QtaXJpeC5hZGIsCgltbGliLXRndC1ocHV4LmFkYiwgbWxpYi10Z3QtbGludXguYWRiLCBtbGliLXRndC1zb2xhcmlzLmFkYiwKCW1saWItdGd0LXZtcy1hbHBoYS5hZGIsIG1saWItdGd0LXZtcy1pYTY0LmFkYiwgbWxpYi10Z3QtbWluZ3cuYWRiLAoJbWxpYi10Z3Qtdnh3b3Jrcy5hZGIsIG1saWItdGd0LmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogTmV3CglwYXJhbWV0ZXIgT3B0aW9uc18yLgoKCSogbWxpYi1wcmouYWRzLCBtbGliLXByai5hZGIgKEJ1aWxkX0xpYnJhcnkpOiBDYWxsCglCdWlsZF9EeW5hbWljX0xpYnJhcnkgd2l0aCBhbiBlbXB0eSBPcHRpb25zXzIuCgoJKiBtbGliLXV0bC5hZHMsIG1saWItdXRsLmFkYiAoR2NjKTogUGFyYW1ldGVyIE9wdGlvbnNfMiBoYXMgbm8KCWRlZmF1bHQgYW55bW9yZS4KCgkqIG1ha2VncHIuYWRiIChHZXRfSW1wb3J0ZWRfRGlyZWN0b3JpZXMuYWRkKTogUmVtb3ZlIHRyYWlsaW5nCglkaXJlY3Rvcnkgc2VwYXJhdG9yLCBpZiBhbnkuCgkoR3BybWFrZSk6IERvIG5vdCBhbGxvdyBtYWlucyBvbiB0aGUgY29tbWFuZCBsaW5lIGZvciBsaWJyYXJ5IHByb2plY3RzLgoJRG8gbm90IGF0dGVtcHQgdG8gbGluayB3aGVuIHRoZSBwcm9qZWN0IGlzIGEgbGlicmFyeSBwcm9qZWN0LgoJKExpYnJhcnlfT3B0cyk6IE5ldyB0YWJsZSB0byBzdG9yZSBMaWJyYXJ5X09wdGlvbnMuCgkoQnVpbGRfTGlicmFyeSk6IElmIExpYnJhcnlfT3B0aW9ucyBpcyBzcGVjaWZpZWQsIHBhc3MgdGhlc2Ugb3B0aW9ucwoJd2hlbiBidWlsZGluZyBhIHNoYXJlZCBsaWJyYXJ5LgoKMjAwNC0xMC0wNCAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogcy10cG9zZW4uYWRiIChTZXJ2aWNlX0VudHJ5KTogVGhlIG9iamVjdCBtdXN0IGJlIGFsd2F5cyB1bmxvY2tlZCBhdAoJdGhlIGVuZCBvZiB0aGlzIHByb2NlZHVyZSBub3cgdGhhdCB0aGUgdW5sb2NrIG9wZXJhdGlvbiB3YXMgaW5zZXJ0ZWQKCWJ5IHRoZSBleHBhbmRlci4KCjIwMDQtMTAtMDQgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIHRhcmdwYXJtLmFkcywgdGFyZ3Bhcm0uYWRiIChUYXJncGFybV9UYWdzKTogQWRkIFBBUyB2YWx1ZQoJY29ycmVzcG9uZGluZyB0byB0aGUgUHJlYWxsb2NhdGVkX1N0YWNrcyBmbGFncyBpbiBTeXN0ZW0uCgkoR2V0X1RhcmdldF9QYXJhbWV0ZXJzKTogSW5jbHVkaW5nIHRoZSBwcm9jZXNzaW5nIGZvcgoJUHJlYWxsb2NhdGVkX1N0YWNrcy4KCgkqIHN5c3RlbS5hZHMsIHN5c3RlbS12eHdvcmtzLXg4Ni5hZHMsIHN5c3RlbS1kYXJ3aW4tcHBjLmFkcywKCXN5c3RlbS12bXNfNjQuYWRzLCBzeXN0ZW0tdW5peHdhcmUuYWRzLCBzeXN0ZW0tbGludXgtaWE2NC5hZHMsCglzeXN0ZW0tZnJlZWJzZC14ODYuYWRzLCBzeXN0ZW0tbHlueG9zLXBwYy5hZHMsIHN5c3RlbS1seW54b3MteDg2LmFkcywKCXN5c3RlbS1saW51eC14ODZfNjQuYWRzLCBzeXN0ZW0tdHJ1NjQuYWRzLCBzeXN0ZW0tYWl4LmFkcywKCXN5c3RlbS12eHdvcmtzLXNwYXJjdjkuYWRzLCBzeXN0ZW0tdnh3b3Jrcy14c2NhbGUuYWRzLAoJc3lzdGVtLXNvbGFyaXMteDg2LmFkcywgc3lzdGVtLWlyaXgtbzMyLmFkcywgc3lzdGVtLWlyaXgtbjMyLmFkcywKCXN5c3RlbS1ocHV4LmFkcywgc3lzdGVtLXZ4d29ya3MtbTY4ay5hZHMsIHN5c3RlbS1saW51eC14ODYuYWRzLAoJc3lzdGVtLXZ4d29ya3MtbWlwcy5hZHMsIHN5c3RlbS1vczIuYWRzLCBzeXN0ZW0taW50ZXJpeC5hZHMsCglzeXN0ZW0tc29sYXJpcy1zcGFyYy5hZHMsIHN5c3RlbS1zb2xhcmlzLXNwYXJjdjkuYWRzLCBzeXN0ZW0tdm1zLmFkcywKCXN5c3RlbS1taW5ndy5hZHMsIHN5c3RlbS12bXMtemN4LmFkcywgc3lzdGVtLXZ4d29ya3MtcHBjLmFkcywKCXN5c3RlbS12eHdvcmtzLWFscGhhLmFkczogQWRkIHRoZSBmbGFnIFByZWFsbG9jYXRlZF9TdGFja3MsIHRoYXQgaXMKCXVzZWQgdG8gc2lnbmFsIHdoZXRoZXIgdGhlIGNvbXBpbGVyIGNyZWF0ZXMgdGhlIHJlcXVpcmVkIHN0YWNrcyBhbmQKCWRlc2NyaXB0b3JzIGZvciB0aGUgZGlmZmVyZW50IHRhc2tzICh3aGVuIFRydWUpIG9yIGl0IGlzIGRvbmUgYnkgdGhlCgl1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gYXQgcnVuIHRpbWUgKHdoZW4gRmFsc2UpLgoJSXQgaXMgaW5pdGlhbGx5IHNldCB0byBGYWxzZSBpbiBhbGwgdGFyZ2V0cy4KCgkqIGV4cF9jaDkuYWRiIChFeHBhbmRfTl9UYXNrX1R5cGVfRGVjbGFyYXRpb24pOiBDcmVhdGUgdGhlIHRhc2sgc3RhY2sKCWlmIGl0IGlzIHN1cHBvcnRlZCBieSB0aGUgdGFyZ2V0LgoJKE1ha2VfVGFza19DcmVhdGVfQ2FsbCk6IFBhc3MgdGhlIHN0YWNrIGFkZHJlc3MgaWYgaXQgaGFzIGJlZW4KCXByZXZpb3VzbHkgY3JlYXRlZC4gT3RoZXJ3aXNlIHBhc3MgYSBOdWxsX0FkZHJlc3MuCgoJKiBzbmFtZXMuYWRiOiBBZGQgX3N0YWNrLgoKCSogc25hbWVzLmFkczogQWRkIE5hbWVfdVN0YWNrLiBSZXF1aXJlZCB0byBhbGxvdyB0aGUgZXhwYW5kZXIgdG8KCXN0YXRpY2FsbHkgYWxsb2NhdGVkIHRhc2sgc3RhY2tzLgoKCSogcy10YXJlc3QuYWRzLCBzLXRhcmVzdC5hZGIgKENyZWF0ZV9SZXN0cmljdGVkX1Rhc2spOiBBZGQKCVN0YWNrX0FkZHJlc3MgYXJndW1lbnQuCglDaGVjayB0aGF0IGl0cyB2YWx1ZSBpcyBlcXVhbCB0byBOdWxsX0FkZHJlc3MgYmVjYXVzZSB0aGlzIHRhcmdldCBkb2VzCglub3Qgc3VwcG9ydCB0aGUgc3RhdGljIHN0YWNrIGFsbG9jYXRpb24uCgoyMDA0LTEwLTA0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiB1c2FnZS5hZGI6IENoYW5nZSAicHJhZ21hIGlubGluZSIgdG8gInByYWdtYSBJbmxpbmUiIGluIGluZm9ybWF0aW9uCglhbmQgZXJyb3IgbWVzc2FnZXMKCjIwMDQtMTAtMDQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9kaXN0LmFkYjogU3BsaXQgZGVjbGFyYXRpb24gb2YgYXN5bmNocm9ub3VzIGZsYWcgb3V0IG9mCglBZGRfUkFDV19SZWFkX0F0dHJpYnV0ZS4KCU1pbm9yIHJlZm9ybWF0dGluZyBmb3IgYmV0dGVyIGFsaWdubWVudCB3aXRoIFBvbHlPUkIgdmVyc2lvbi4KCVN0b3JlIHRoZSBlbnRpdHkgZm9yIHRoZSBhc3luY2hyb25vdXMgZmxhZyBvZiBhbiBSQUNXLCByYXRoZXIgdGhhbiB0aGUKCWV4cHJlc3Npb24sIGluIHRoZSBhc3luY2hyb25vdXMgZmxhZ3MgdGFibGUuIFRoaXMgd2lsbCBhbGxvdyB0aGlzIGZsYWcKCXRvIGJlIHVzZWQgaW4gb3RoZXIgc3VicHJvZ3JhbXMgYmVzaWRlIEFkZF9SQUNXX1JlYWRfQXR0cmlidXRlLgoKMjAwNC0xMC0wNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZy1zb2NrZXQuYWRzLCBnLXNvY2tldC5hZGIsIGctc29jdGhpLmFkYiwgc29ja2V0LmMsCglnLXNvY2Nvbi1haXguYWRzLCBnLXNvY2Nvbi1pcml4LmFkcywgZy1zb2Njb24taHB1eC5hZHMsCglnLXNvY2Nvbi1pbnRlcml4LmFkcywgZy1zb2Njb24tc29sYXJpcy5hZHMsIGctc29jY29uLXZtcy5hZGIsCglnLXNvY2Nvbi1taW5ndy5hZHMsIGctc29jY29uLXZ4d29ya3MuYWRzLCBnLXNvY2Nvbi1mcmVlYnNkLmFkcywKCWctc29jY29uLmFkcywgZy1zb2Njb24tdW5peHdhcmUuYWRzLCBnLXNvY2Nvbi10cnU2NC5hZHM6ICBBZGQgbmV3Cglzb2NrZXRzIGNvbnN0YW50IE1TR19OT1NJR05BTCAoTGludXgtc3BlY2lmaWMpLgoJQWRkIG5ldyBzb2NrZXRzIGNvbnN0YW50IE1TR19Gb3JjZWRfRmxhZ3MsIGxpc3Qgb2YgZmxhZ3MgdG8gYmUgc2V0IG9uCglhbGwgU2VuZCBvcGVyYXRpb25zLgoJRm9yIExpbnV4LCBzZXQgTVNHX05PU0lHTkFMIG9uIGFsbCBzZW5kIG9wZXJhdGlvbnMgdG8gcHJldmVudCB0aGVtCglmcm9tIHRyaWdlcnJpbmcgU0lHUElQRS4KCVJlbmFtZSBjb21wb25lbnRzIHRvIGF2b2lkIGNsYXNoIHdpdGggQWRhIDIwMDUgcG9zc2libGUgcmVzZXJ2ZWQKCXdvcmQgJ2ludGVyZmFjZScuCgkoQ2hlY2tfU2VsZWN0b3IpOiBXaGVuIHRoZSBzZWxlY3Qgc3lzdGVtIGNhbGwgcmV0dXJucyB3aXRoIGFuIGVycm9yCgljb25kaXRpb24sIHByb3BhZ2F0ZSBTb2NrZXRfRXJyb3IgdG8gdGhlIGNhbGxlci4KCjIwMDQtMTAtMDEgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIG1pc2MuYyAoZ25hdF9leHBhbmRfYm9keSk6IFVwZGF0ZSBjYWxsIG9mIHRyZWVfcmVzdF9vZl9jb21waWxhdGlvbi4KCjIwMDQtMDktMjMgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCVBSIGFkYS8xNzU0MAoJKiBzZW1fcHJhZy5hZGIgKFByb2Nlc3NfSW1wb3J0X09yX0ludGVyZmFjZSk6IERvbid0IHNldCBJc19QdWJsaWMgaGVyZSwKCWluc3RlYWQgZG8gdGhpcyBhdCBmcmVlemUgdGltZSAod2Ugd29uJ3QgZG8gaXQgaWYgdGhlcmUgaXMgYW4gYWRkcmVzcwoJY2xhdXNlKS4KCUNoYW5nZSAicHJhZ21hIGlubGluZSIgdG8gInByYWdtYSBJbmxpbmUiIGluIGluZm9ybWF0aW9uIGFuZCBlcnJvcgoJbWVzc2FnZXMuCglNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBmcmVlemUuYWRiIChDaGVja19BZGRyZXNzX0NsYXVzZSk6IFJlbW92ZSBwcmV2aW91cyBjaGFuZ2UsIG5vdCB0aGUKCXJpZ2h0IHdheSBvZiBkb2luZyB0aGluZ3MgYWZ0ZXIgYWxsLgoJKEZyZWV6ZV9FbnRpdHkpOiBGb3Igb2JqZWN0LCBzZXQgSXNfUHVibGljIGZvciBpbXBvcnRlZCBlbnRpdGllcwoJdW5sZXNzIHRoZXJlIGlzIGFuIGFkZHJlc3MgY2xhdXNlIHByZXNlbnQuCgoyMDA0LTA5LTIxICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPEVfR2VuZXJhbF9BY2Nlc3NfVHlwZT46IENoZWNrIGZvciBhCglkdW1teSBkZXNpZ25hdGVkIHR5cGUgdmlhIFRZUEVfTU9ERSBpbnN0ZWFkIG9mIENPTVBMRVRFX1RZUEVfUC4gVGhpcwoJZW5zdXJlcyBwcm9wZXIgaGFuZGxpbmcgb2YgdHlwZXMgd2l0aCByZXAgY2xhdXNlcywgd2hpY2ggbWlnaHQgaGF2ZQoJdGhlaXIgVFlQRV9TSVpFIHNldCBhbHJlYWR5LgoKMjAwNC0wOS0yMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X3R5cGUsIGNhc2UgRV9Nb2R1bGFyX0ludGVnZXJfVHlwZSk6IFdyYXAgbW9kdWxhcgoJcGFja2VkIGFycmF5IHR5cGVzIGluIGJvdGggbGl0dGxlLSBhbmQgYmlnLWVuZGlhbiBjYXNlcy4gVGhpcyBjaGFuZ2UKCWVuc3VyZXMgdGhhdCB3ZSBubyBsb25nZXIgY291bnQgb24gdGhlIHVudXNlZCBiaXRzIGJlaW5nIGluaXRpYWxpemVkCglmb3Igc3VjaCB0eXBlcyAoYW5kIGluIHBhcnRpY3VsYXIgZW5zdXJlcyB0aGF0IGVxdWFsaXR5IHRlc3Rpbmcgd2lsbAoJb25seSByZWFkIHRoZSByZWxldmFudCBiaXRzKS4KCUNoYW5nZSBuYW1lIFRZUEVfTEVGVF9KVVNUSUZJRURfTU9EVUxBUl9QIHRvIFRZUEVfSlVTVElGSUVEX01PRFVMQVJfUAoJVGhlc2UgY2hhbmdlcyBtZWFuIHRoYXQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gaW5pdGlhbGl6ZSBzbWFsbCBwYWNrZWQKCWFycmF5cy4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1JlY29yZF9TdWJ0eXBlPjogQXBwbHkgdGhlIHNhbWUKCW9wdGltaXphdGlvbiB0byBhbiBMSk0gZmllbGQgYXMgdG8gaXRzIHBhcmVudCBmaWVsZC4KCgkqIGFkYS10cmVlLmgsIHRyYW5zLmMsIHV0aWxzLmMsIHV0aWxzMi5jOgoJQ2hhbmdlIG5hbWUgVFlQRV9MRUZUX0pVU1RJRklFRF9NT0RVTEFSX1AgdG8gVFlQRV9KVVNUSUZJRURfTU9EVUxBUl9QCgoyMDA0LTA5LTIwICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB1dGlscy5jIChnbmF0X2ZpbmFsaXplKTogUmVtb3ZlLgoJKGVuZF9zdWJwcm9nX2JvZHkpOiBEaXJlY3RseSBjYWxsIGNncmFwaF9maW5hbGl6ZV9mdW5jdGlvbjsKCWRvIG5vdCBsb3dlciB0aGUgbmVzdGVkIGZ1bmN0aW9ucy4KCjIwMDQtMDktMjAgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCVBSIGFkYS8xNzU0MAoJKiBmcmVlemUuYWRiIChDaGVja19BZGRyZXNzX0NsYXVzZSk6IFJlc2V0IElzX0ltcG9ydGVkIGFuZCBJc19QdWJsaWMKCWlmIGFuIGFkZHJlc3MgY2xhdXNlIGlzIHByZXNlbnQsIHNpbmNlIHRoYXQgbWVhbnMgdGhhdCB0aGUgSW1wb3J0CglzaG91bGQgYmUgaWdub3JlZC4KCjIwMDQtMDktMjAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogNXRzeXN0ZW0uYWRzOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCjIwMDQtMDktMTcgIEplZmZyZXkgRC4gT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFkYS10cmVlLmRlZjogVXNlIHRyZWVfY29kZV9jbGFzcyBlbnVtZXJhdGlvbiBjb25zdGFudHMKCWluc3RlYWQgb2YgY29kZSBsZXR0ZXJzLgoJKiBhZGEtdHJlZS5oLCBkZWNsLmMsIG1pc2MuYywgdHJhbnMuYywgdXRpbHMuYywgdXRpbHMyLmM6CglVcGRhdGUgZm9yIG5ldyB0cmVlLWNsYXNzIGVudW1lcmF0aW9uIGNvbnN0YW50cy4KCjIwMDQtMDktMTcgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogcHJqLWF0dHItcG0uYWRzLCBwcmotYXR0ci1wbS5hZGI6IE5ldyBmaWxlcywgdG8gc3BsaXQgc29tZSBwcml2YXRlCgljYXBhYmlsaXRpZXMgb2YgdGhlIGdlbmVyYWwgcHJvamVjdCBtYW5hZ2VyLgoKMjAwNC0wOS0wOSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBhLWRpcmVjdC5hZHM6IEFkZCBwcmFnbWEgQWRhXzA1CgkoRGlyZWN0b3J5X0VudHJ5X1R5cGUpOiBHaXZlIGRlZmF1bHQgdmFsdWUgdG8gY29tcG9uZW50IEtpbmQgdG8gYXZvaWQKCW5vdCBpbml0aWFsaXplZCB3YXJuaW5ncy4KCgkqIGEtZGlyZWN0LmFkYiAoQ3VycmVudF9EaXJlY3RvcnkpOiBSZW1vdmUgZGlyZWN0b3J5IHNlcGFyYXRvciBhdCB0aGUKCWVuZC4KCShEZWxldGVfRGlyZWN0b3J5LCBEZWxldGVfVHJlZSk6IFJhaXNlIE5hbWVfRXJyb3IgaWYgRGlyZWN0b3J5IGlzIG5vdAoJYW4gZXhpc3RpbmcgZGlyZWN0b3J5LgoJKEZldGNoX05leHRfRW50cnkpOiBHaXZlIGRlZmF1bHQgdmFsdWUgdG8gdmFyaWFibGUgS2luZCB0byBhdm9pZCB3YXJuaW5nCgkoU2l6ZSAoU3RyaW5nKSk6IEZ1bmN0aW9uIENfU2l6ZSByZXR1cm5zIExvbmdfSW50ZWdlciwgbm90IEZpbGVfU2l6ZS4KCUNvbnZlcnQgdGhlIHJlc3VsdCB0byBGaWxlX1NpemUuCgoJKiBwcmouYWRzOiAoUHJvamVjdF9FcnJvcik6IE5ldyBleGNlcHRpb24KCgkqIHByai1hdHRyLmFkYjogRXhjZXB0IGluIHByb2NlZHVyZSBJbml0aWFsaXplLCBGYWlsIGNvbWVzIGZyb20KCVByai5Db20sIG5vdCBmcm9tIE9zaW50LgoJKEF0dHJzLCBQYWNrYWdlX0F0dHJpYnV0ZXMpOiBUYWJsZXMgbW92ZWQgdG8gcHJpdmF0ZSBwYXJ0IG9mIHNwZWMKCShBZGRfQXR0cmlidXRlLCBBZGRfVW5rbm93bl9QYWNrYWdlKTogTW92ZWQgdG8gbmV3IGNoaWxkIHBhY2thZ2UKCVByai5BdHRyLlBNLgoJKFJlZ2lzdGVyX05ld19QYWNrYWdlIChOYW1lLCBBdHRyaWJ1dGVzKSwgUmVnaXN0ZXJfTmV3X0F0dHJpYnV0ZSk6IFJhaXNlCglQcmouUHJvamVjdF9FcnJvciBhZnRlciBjYWxsIHRvIEZhaWwuCgkoUmVnaXN0ZXJfTmV3X1BhY2thZ2UgKE5hbWUsIElkKSk6IFNldCBJZCB0byBFbXB0eV9QYWNrYWdlIGFmdGVyIGNhbGxpbmcKCUZhaWwuIENoZWNrIHRoYXQgcGFja2FnZSBuYW1lIGlzIG5vdCBhbHJlYWR5IGluIHVzZS4KCgkqIHByai1hdHRyLmFkczogQ29tbWVudCB1cGRhdGVzIHRvIGluZGljYXRlIHRoYXQgYWxsIHN1YnByb2dyYW1zIG1heSBiZQoJdXNlZCBieSB0b29scywgbm90IG9ubHkgYnkgdGhlIHByb2plY3QgbWFuYWdlciwgYW5kIHRvIGluZGljYXRlIHRoYXQKCWV4Y2VwdGlvbiBQcmouUHJqX0Vycm9yIG1heSBiZSByYWlzZWQgaW4gY2FzZSBvZiBwcm9ibGVtLgoJKEFkZF9Vbmtub3duX1BhY2thZ2UsIEFkZF9BdHRyaWJ1dGUpOiBNb3ZlZCB0byBuZXcgY2hpbGQgcGFja2FnZQoJUHJqLkF0dHIuUE0uCgkoQXR0cnMsIFBhY2thZ2VfQXR0cmlidXRlcyk6IFRhYmxlIGluc3RhbnRpYXRpb25zIG1vdmVkIGZyb20gdGhlIGJvZHkgdG8KCXRoZSBwcml2YXRlIHBhcnQgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIFByai5BdHRyLlBNIGJvZHkuCgoJKiBwcmotZGVjdC5hZGIgKFBhcnNlX1BhY2thZ2VfRGVjbGFyYXRpb24pOiBDYWxsIEFkZF9Vbmtub3duX1BhY2thZ2UKCWZyb20gbmV3IHBhY2thZ2UgUHJqLkF0dHIuUE0uCgkoUGFyc2VfQXR0cmlidXRlX0RlY2xhcmF0aW9uKTogQ2FsbCBBZGRfQXR0cmlidXRlIGZyb20gbmV3IHBhY2thZ2UKCVByai5BdHRyLlBNLgoKCSogTWFrZWZpbGUuaW46IEFkZCBwcmotYXR0ci1wbS5vIHRvIGduYXRtYWtlIG9iamVjdCBsaXN0CgoJKiBnbmF0YmluZC5hZGIgKEduYXRiaW5kKTogQ29ycmVjdCB3YXJuaW5nIG1lc3NhZ2UgKEVsYWJvcmF0aW9uX0NoZWNrCglpbnN0ZWFkIG9mIEVsYWJvcmF0aW9uX0NoZWNrcykuCgoJKiBhLWNhbGVuZC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNC0wOS0wOSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGdpZ2kuaCAobWF5YmVfcGFkX3R5cGUpOiBOZXcgZGVjbGFyYXRpb24uCgkoY3JlYXRlX3N1YnByb2dfdHlwZSk6IE5ldyBhcmcgUkVUVVJOU19CWV9UQVJHRVRfUFRSLgoKCSogYWRhLXRyZWUuaDogKFRZUEVfUkVUVVJOU19CWV9UQVJHRVRfUFRSX1ApOiBOZXcgbWFjcm8uCgoJKiBjdWludHAuYzogQ29udmVydCB0byB1c2UgYnVpbGROLgoKCSogZGVjbC5jIChtYXliZV9wYWRfdHlwZSk6IE5vIGxvbmdlciBzdGF0aWMuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfRnVuY3Rpb24pOiBIYW5kbGUgY2FzZSBvZiByZXR1cm5pbmcgYnkKCXRhcmdldCBwb2ludGVyLgoJQ29udmVydCB0byB1c2UgYnVpbGROLgoKCSogdHJhbnMuYyAoY2FsbF90b19nbnUpOiBBZGQgYXJnIEdOVV9UQVJHRVQ7IHN1cHBvcnQKCVRZUEVfUkVUVVJOU19CWV9UQVJHRVRfUFRSX1AuICBBbGwgY2FsbGVycyBjaGFuZ2VkLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBDYWxsIGNhbGxfdG9fZ251IGlmIGNhbGwgb24KCVJIUy4KCShnbmF0X3RvX2dudSwgY2FzZSBOX1JldHVybik6IEhhbmRsZSBUWVBFX1JFVFVSTl9CWV9UQVJHRVRfUFRSX1AuCgkoZ25hdF9naW1wbGlmeV9leHByLCBjYXNlIEFERFJfRVhQUik6IE5ldyBjYXNlLgoJQ29udmVydCB0byB1c2UgYnVpbGROLgoKCSogdXRpbHMyLmMgKGduYXRfYnVpbGRfY29uc3RydWN0b3IpOiBBbHNvIHNldCBUUkVFX0lOVkFSSUFOVCBhbmQKCVRSRUVfUkVBRE9OTFkgZm9yIGNvbnN0LgoJQ29udmVydCB0byB1c2UgYnVpbGROLgoKCSogdXRpbHMuYyAoY3JlYXRlX3N1YnByb2dfdHlwZSk6IE5ldyBvcGVyYW5kIFJFVFVSTlNfQllfVEFSR0VUX1BUUi4KCShjcmVhdGVfdmFyX2RlY2wpOiBSZWZpbmUgd2hlbiBUUkVFX1NUQVRJQyBpcyBzZXQuCglDb252ZXJ0IHRvIHVzZSBidWlsZE4uCgoyMDA0LTA5LTA5ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAZ25hdC5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBEZWxldGUgdGV4dCByZWxhdGluZyB0byBjaGVja2luZyBvZiBhbGkgYW5kIG9iamVjdAoJY29uc2lzdGVuY3kuCgoJKiBhLWV4Y2VwdC5hZGIgKFJjaGVja18qKTogQWRkIHByYWdtYXMgTm9fUmV0dXJuIGZvciBlYWNoIG9mIHRoZXNlCglyb3V0aW5lcy4KCjIwMDQtMDktMDkgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBEZXRlY3RfQmxvY2tpbmcgdG8gdGhlIGxpc3Qgb2YgY29uZmlndXJhdGlvbgoJcHJhZ21hcyByZWNvZ25pemVkIGJ5IEdOQVQuCgoJKiBnbmF0X3JtLnRleGk6IERvY3VtZW50IHByYWdtYSBEZXRlY3RfQmxvY2tpbmcuCgoJKiBzLXNvbGl0YS5hZGIgKFRpbWVkX0RlbGF5X1QpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlLAoJcmFpc2UgUHJvZ3JhbV9FcnJvciBpZiBjYWxsZWQgZnJvbSBhIHByb3RlY3RlZCBvcGVyYXRpb24uCgoJKiBzLXRhcHJvYi5hZGIgKExvY2spOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlIGluY3JlYXNlCgl0aGUgcHJvdGVjdGVkIGFjdGlvbiBuZXN0aW5nIGxldmVsLgoJKExvY2tfUmVhZF9Pbmx5KTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSBpbmNyZWFzZSB0aGUKCXByb3RlY3RlZCBhY3Rpb24gbmVzdGluZyBsZXZlbC4KCShVbmxvY2spOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlIGRlY3JlYXNlIHRoZSBwcm90ZWN0ZWQKCWFjdGlvbiBuZXN0aW5nIGxldmVsLgoKCSogcy10YXNraW4uYWRiIChJbml0aWFsaXplX0FUQ0IpOiBJbml0aWFsaXplIHRvIDAgdGhlCglQcm90ZWN0ZWRfQWN0aW9uX05lc3RpbmcuCgoJKiBzLXRhc2tpbi5hZHM6IEFkZGluZyB0aGUgZmllbGQgUHJvdGVjdGVkX0FjdGlvbl9OZXN0aW5nIHRvIHRoZQoJQ29tbW9uX0FUQ0IgcmVjb3JkLiBJdCBjb250YWlucyB0aGUgZHluYW1pYyBsZXZlbCBvZiBwcm90ZWN0ZWQgYWN0aW9uCgluZXN0aW5nIGZvciBlYWNoIHRhc2suIEl0IGlzIG5lZWRlZCBmb3IgY2hlY2tpbmcgd2hldGhlciBwb3RlbnRpYWxseQoJYmxvY2tpbmcgb3BlcmF0aW9ucyBhcmUgY2FsbGVkIGZyb20gcHJvdGVjdGVkIG9wZXJhdGlvbnMuCgkoRGV0ZWN0X0Jsb2NraW5nKTogQWRkaW5nIGEgQm9vbGVhbiBjb25zdGFudCByZWZsZWN0aW5nIHdoZXRoZXIgcHJhZ21hCglEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlIG9yIG5vdCBpbiB0aGUgcGFydGl0aW9uLgoKCSogcy10YXNyZW4uYWRiIChDYWxsX1NpbXBsZSk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUsCglyYWlzZSBQcm9ncmFtX0Vycm9yIGlmIGNhbGxlZCBmcm9tIGEgcHJvdGVjdGVkIG9wZXJhdGlvbi4KCShUYXNrX0VudHJ5X0NhbGwpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlLCByYWlzZQoJUHJvZ3JhbV9FcnJvciBpZiBjYWxsZWQgZnJvbSBhIHByb3RlY3RlZCBvcGVyYXRpb24uCgkoVGltZWRfVGFza19FbnRyeV9DYWxsKTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSwgcmFpc2UKCVByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLgoKCSogcy10YXNzdGEuYWRiIChBYm9ydF9UYXNrcyk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUsCglyYWlzZSBQcm9ncmFtX0Vycm9yIGlmIGNhbGxlZCBmcm9tIGEgcHJvdGVjdGVkIG9wZXJhdGlvbi4KCgkqIHMtdHBvYmVuLmFkYiAoTG9ja19FbnRyaWVzKTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSwKCXJhaXNlIFByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLCBhbmQgaW5jcmVhc2UKCXRoZSBwcm90ZWN0ZWQgYWN0aW9uIG5lc3RpbmcgbGV2ZWwuCgkoTG9ja19SZWFkX09ubHlfRW50cmllcyk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUsIHJhaXNlCglQcm9ncmFtX0Vycm9yIGlmIGNhbGxlZCBmcm9tIGEgcHJvdGVjdGVkIG9wZXJhdGlvbiwgYW5kIGluY3JlYXNlIHRoZQoJcHJvdGVjdGVkIGFjdGlvbiBuZXN0aW5nIGxldmVsLgoJKFVubG9ja19FbnRyaWVzKTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSBkZWNyZWFzZSB0aGUKCXByb3RlY3RlZCBhY3Rpb24gbmVzdGluZyBsZXZlbC4KCgkqIHMtdHBvc2VuLmFkYiAoTG9ja19FbnRyeSk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUsCglyYWlzZSBQcm9ncmFtX0Vycm9yIGlmIGNhbGxlZCBmcm9tIGEgcHJvdGVjdGVkIG9wZXJhdGlvbiwgYW5kIGluY3JlYXNlCgl0aGUgcHJvdGVjdGVkIGFjdGlvbiBuZXN0aW5nIGxldmVsLgoJKExvY2tfUmVhZF9Pbmx5X0VudHJ5KTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSwgcmFpc2UKCVByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLCBhbmQgaW5jcmVhc2UgdGhlCglwcm90ZWN0ZWQgYWN0aW9uIG5lc3RpbmcgbGV2ZWwuCgkoUHJvdGVjdGVkX1NpbmdsZV9FbnRyeV9DYWxsKTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSwKCXJhaXNlIFByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLgoJKFRpbWVkX1Byb3RlY3RlZF9TaW5nbGVfRW50cnlfQ2FsbCk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcwoJYWN0aXZlLCByYWlzZSBQcm9ncmFtX0Vycm9yIGlmIGNhbGxlZCBmcm9tIGEgcHJvdGVjdGVkIG9wZXJhdGlvbi4KCShVbmxvY2tfRW50cnkpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlIGRlY3JlYXNlIHRoZQoJcHJvdGVjdGVkIGFjdGlvbiBuZXN0aW5nIGxldmVsLgoKCSogc2VtX3V0aWwuYWRiIChDaGVja19Qb3RlbnRpYWxseV9CbG9ja2luZ19PcGVyYXRpb24pOiBSZW1vdmUgdGhlCglpbnNlcnRpb24gb2YgdGhlIHN0YXRlbWVudCByYWlzaW5nIFByb2dyYW1fRXJyb3IuIFRoZSBydW4gdGltZQoJY29udGFpbnMgdGhlIHJlcXVpcmVkIG1hY2hpbmVyeSBmb3IgaGFuZGxpbmcgdGhhdC4KCgkqIHNlbV91dGlsLmFkczogQ2hhbmdlIGNvbW1lbnQgYXNzb2NpYXRlZCB0byBwcm9jZWR1cmUKCUNoZWNrX1BvdGVudGlhbGx5X0Jsb2NraW5nX09wZXJhdGlvbi4KCVRoaXMgcHJvY2VkdXJlIGRvZXMgbm90IGluc2VydCBhIGNhbGwgZm9yIHJhaXNpbmcgdGhlIGV4Y2VwdGlvbiBiZWNhdXNlCgl0aGF0IGlzIGN1cnJlbnRseSBkb25lIGJ5IHRoZSBydW4gdGltZS4KCgkqIHJhaXNlLmggKF9fZ25hdF9zZXRfZ2xvYmFscyk6IFBhc3MgdGhlIGRldGVjdF9ibG9ja2luZyBwYXJhbWV0ZXIuCgoJKiBpbml0LmM6IEFkZCB0aGUgZ2xvYmFsIHZhcmlhYmxlIF9fZ2xfZGV0ZWN0X2Jsb2NraW5nIHRoYXQgaW5kaWNhdGVzCgl3aGV0aGVyIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlICgxKSBvciBub3QgKDApLiBOZWVkZWQgZm9yCgltYWtpbmcgdGhlIHByYWdtYSBhdmFpbGFibGUgYXQgcnVuIHRpbWUuCgkoX19nbmF0X3NldF9nbG9iYWxzKTogUGFzcyBhbmQgdXBkYXRlIHRoZSBkZXRlY3RfYmxvY2tpbmcgcGFyYW1ldGVyLgoKCSogbGliLXdyaXQuYWRiIChXcml0ZV9BTEkpOiBTZXQgdGhlIERCIGZsYWcgaW4gdGhlIGFsaSBmaWxlIGlmCglwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZS4KCgkqIGxpYi13cml0LmFkczogRG9jdW1lbnQgdGhlIERldGVjdF9CbG9ja2luZyBmbGFnIChEQikgaW4gYWxpIGZpbGVzLgoKCSogYWxpLmFkYiAoU2Nhbl9BTEkpOiBTZXQgdGhlIERldGVjdF9CbG9ja2luZyB2YWx1ZSB0byB0cnVlIGlmIHRoZSBmbGFnCglEQiBpcyBmb3VuZCBpbiB0aGUgYWxpIGZpbGUuIEFueSB1bml0IGNvbXBpbGVkIHdpdGggcHJhZ21hCglEZXRlY3RfQmxvY2tpbmcgYWN0aXZlIGZvcmNlcyBpdHMgZWZmZWN0IGluIHRoZSB3aG9sZSBwYXJ0aXRpb24uCgoJKiBhLXJldGlkZS5hZGIgKERlbGF5X1VudGlsKTogUmFpc2UgUHJvZ3JhbV9FcnJvciBpZiBwcmFnbWEKCURldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUgYW5kIGRlbGF5IGlzIGNhbGxlZCBmcm9tIGEgcHJvdGVjdGVkCglvcGVyYXRpb24uCgoJKiBiaW5kZ2VuLmFkYiAoR2VuX0FkYWluaXRfQWRhKTogV2hlbiBnZW5lcmF0aW5nIHRoZSBjYWxsIHRvCglfX2duYXRfc2V0X2dsb2JhbHMsIHBhc3MgMSBhcyBEZXRlY3RfQmxvY2tpbmcgcGFyYW1ldGVyIGlmIHByYWdtYQoJRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSAoMCBvdGhlcndpc2UpLgoJKEdlbl9BZGFpbml0X0MpOiBXaGVuIGdlbmVyYXRpbmcgdGhlIGNhbGwgdG8gX19nbmF0X3NldF9nbG9iYWxzLCBwYXNzIDEKCWFzIERldGVjdF9CbG9ja2luZyBwYXJhbWV0ZXIgaWYgcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUgKDAKCW90aGVyd2lzZSkuCgoyMDA0LTA5LTA5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0X3JtLnRleGk6IFJlbmFtZSBHTkFULlBlcmZlY3RfSGFzaC5HZW5lcmF0b3JzIHRvCglHTkFULlBlcmZlY3RfSGFzaF9HZW5lcmF0b3JzLCBhbmQgcmVtb3ZlIHRoZSBlbXB0eSBHTkFULlBlcmZlY3RfSGFzaAoJcGFja2FnZS4KCgkqIHMtcGFyaW50LmFkcywgcy1wYXJpbnQuYWRiIChHZXRfUkFTX0luZm8pOiBOZXcgc3VicHJvZ3JhbS4KCShSZWdpc3Rlcl9SZWNlaXZpbmdfU3R1Yik6IEFkZCBTdWJwX0luZm8gZm9ybWFsIHBhcmFtZXRlci4KCVVwZGF0ZSBBUEkgaW4gcGxhY2Vob2xkZXIgaW1wbGVtZXRhdGlvbiBvZiBzLXBhcmludCB0byByZWZsZWN0IGNoYW5nZXMKCWluIGRpc3RyaWJ1dGlvbiBydW50aW1lIGxpYnJhcnkuCgoJKiBzZW1fY2gzLmFkYiAoRXhwYW5kX0Rlcml2ZWRfUmVjb3JkKTogUmVuYW1lIHRvCglFeHBhbmRfUmVjb3JkX0V4dGVuc2lvbi4KCgkqIHNlbV9kaXNwLmFkYiAoQ2hlY2tfQ29udHJvbGxpbmdfRm9ybWFscyk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IKCXByaW1pdGl2ZSBvcGVyYXRpb25zIG9mIHBvdGVudGlhbGx5IGRpc3RyaWJ1dGVkIG9iamVjdCB0eXBlcyB0aGF0IGhhdmUKCW5vbi1jb250cm9sbGluZyBhbm9ueW1vdXMgYWNjZXNzIGZvcm1hbHMuCgoJKiBzZW1fZGlzdC5hZHMsIHNlbV9kaXN0LmFkYiAoQnVpbGRfUkFTX1ByaW1pdGl2ZV9TcGVjaWZpY2F0aW9uKTogTmV3CglzdWJwcm9ncmFtLgoJTmV3IGltcGxlbWVudGF0aW9uIG9mIGV4cGFuc2lvbiBmb3IgcmVtb3RlIGFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGVzLAoJYmFzZWQgb24gdGhlIFJBQ1cgaW5mcmFzdHJ1Y3R1cmUuCglUaGlzIHZlcnNpb24gb2Ygc2VtX2Rpc3QgaXMgY29tcGF0aWJsZSB3aXRoIFBvbHlPUkIvRFNBIGFzIHdlbGwgYXMKCUdMQURFLgoKCSogc2VtX3ByYWcuYWRiIChBbmFseXplX1ByYWdtYSwgY2FzZSBQcmFnbWFfQXN5bmNocm9ub3VzKTogRm9yIGEgcHJhZ21hCglBc3luY2hycm9ub3VzIHRoYXQgYXBwbGllcyB0byBhIHJlbW90ZSBhY2Nlc3MtdG8tc3VicHJvZ3JhbSB0eXBlLCBtYXJrCgl0aGUgdW5kZXJseWluZyBSQUNXIHR5cGUgYXMgYXN5bmNocm9ub3VzLgoKCSogbGluay5jOiBGcmVlQlNEIHVzZXMgR05VIGxkOiBzZXQgX19nbmF0X29iamxpc3RfZmlsZV9zdXBwb3J0ZWQgYW5kCgkgX19nbmF0X3VzaW5nX2dudV9saW5rZXIgdG8gMS4KCgkqIE1ha2VmaWxlLnJ0bCwgaW1wdW5pdC5hZGIsIGctcGVyaGFzLmFkcywgZy1wZWhhZ2UuYWRzLAoJZy1wZWhhZ2UuYWRiOiBSZW5hbWUgR05BVC5QZXJmZWN0X0hhc2guR2VuZXJhdG9ycyB0bwoJR05BVC5QZXJmZWN0X0hhc2hfR2VuZXJhdG9ycywgYW5kIHJlbW92ZSB0aGUgZW1wdHkKCUdOQVQuUGVyZmVjdF9IYXNoIHBhY2thZ2UuCgoJKiBhdHJlZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZXhwX2NoMy5hZGIgKEV4cGFuZF9EZXJpdmVkX1JlY29yZCk6IFJlbmFtZSB0bwoJRXhwYW5kX1JlY29yZF9FeHRlbnNpb24uCgkoQnVpbGRfUmVjb3JkX0luaXRfUHJvYy5CdWlsZF9Bc3NpZ25tZW50KTogVGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBpbgoJYSBjb21wb25lbnQgZGVjbGFyYXRpb24gbXVzdCByZW1haW4gYXR0YWNoZWQgYXQgdGhhdCBwb2ludCBpbiB0aGUKCXRyZWUgc28gTmV3X0NvcHlfVHJlZSBjb3BpZXMgaXQgaWYgdGhlIGVuY2xvc2luZyByZWNvcmQgdHlwZSBpcyBkZXJpdmVkLgoJSXQgaXMgdGhlcmVmb3JlIG5lY2Vzc2FyeSB0byB0YWtlIGEgY29weSBvZiB0aGUgZXhwcmVzc2lvbiB3aGVuIGJ1aWxkaW5nCgl0aGUgY29ycmVzcG9uZGluZyBhc3NpZ25tZW50IHN0YXRlbWVudCBpbiB0aGUgaW5pdCBwcm9jLgoJQXMgYSBzaWRlIGVmZmVjdCwgaW4gdGhlIGNhc2Ugb2YgYSBkZXJpdmVkIHJlY29yZCB0eXBlLCB3ZSBub3cgc2VlIHRoZQoJb3JpZ2luYWwgZXhwcmVzc2lvbiwgd2l0aG91dCBhbnkgcmV3cml0aW5nIHRoYXQgY291bGQgaGF2ZSBvY2N1cnJlZAoJZHVyaW5nIGV4cGFuc2lvbiBvZiB0aGUgYW5jZXN0b3IgdHlwZSdzIGluaXQgcHJvYywgYW5kIHdlIGRvIG5vdCBuZWVkCgl0byBnbyBiYWNrIHRvIE9yaWdpbmFsX05vZGUuCgoJKiBleHBfY2gzLmFkcyAoRXhwYW5kX0Rlcml2ZWRfUmVjb3JkKTogUmVuYW1lIHRvCglFeHBhbmRfUmVjb3JkX0V4dGVuc2lvbi4KCgkqIGV4cF9kaXN0LmFkcywgZXhwX2Rpc3QuYWRiIChVbmRlcmx5aW5nX1JBQ1dfVHlwZSk6IE5ldyBzdWJwcm9ncmFtLgoJUmV0dXJucyB0aGUgUkFDVyB0eXBlIHVzZWQgdG8gaW1wbGVtZW50IGEgcmVtb3RlIGFjY2Vzcy10by1zdWJwcm9ncmFtCgl0eXBlLgoJKEFkZF9SQVNfUHJveHlfQW5kX0FuYWx5emUsIEJ1aWxkX1JlbW90ZV9TdWJwcm9ncmFtX1Byb3h5X1R5cGUpOgoJTmV3IHN1YnByb2dyYW1zLiBVc2VkIHRvIGNyZWF0ZSBhIHByb3h5IHRhZ2dlZCBvYmplY3QgZm9yIGEgcmVtb3RlCglzdWJwcm9ncmFtLiBUaGUgcHJveHkgb2JqZWN0IGlzIHVzZWQgYXMgdGhlIGRlc2lnbmF0ZWQgb2JqZWN0Cglmb3IgUkFTIHZhbHVlcyBvbiB0aGUgc2FtZSBwYXJ0aXRpb24gKHVubGVzcyBBbGxfQ2FsbHNfUmVtb3RlIGFwcGxpZXMpLgoJKEJ1aWxkX0dldF9VbmlxdWVfUlBfQ2FsbCk6IE5ldyBzdWJwcm9ncmFtLiBCdWlsZCBhIGNhbGwgdG8KCVN5c3RlbS5QYXJ0aXRpb25fSW50ZXJmYWNlLkdldF9VbmlxdWVfUmVtb3RlX1BvaW50ZXIuCgkoQWRkX1JBU19BY2Nlc3NfVFNTLCBBZGRfUkFTX0RlcmVmZXJlbmNlX1RTUyk6CglSZW5hbWVkIGZyb20gQWRkX1JBU18qX0F0dHJpYnV0ZS4KCShBZGRfUmVjZWl2aW5nX1N0dWJzX1RvX0RlY2xhcmF0aW9ucyk6IEdlbmVyYXRlIGEgdGFibGUgb2YgbG9jYWwKCXN1YnByb2dyYW1zLgoJTmV3IGltcGxlbWVudGF0aW9uIG9mIGV4cGFuc2lvbiBmb3IgcmVtb3RlIGFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGVzLAoJYmFzZWQgb24gdGhlIFJBQ1cgaW5mcmFzdHJ1Y3R1cmUuCgoJKiBleHBfZGlzdC5hZHMgKENvcHlfU3BlY2lmaWNhdGlvbik6IFVwZGF0ZSBjb21tZW50IHRvIG5vdGUgdGhhdCB0aGlzCglmdW5jdGlvbiBjYW4gY29weSB0aGUgc3BlY2lmaWNhdGlvbiBmcm9tIGVpdGhlciBhIHN1YnByb2dyYW0KCXNwZWNpZmljYXRpb24gb3IgYW4gYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZSBkZWZpbml0aW9uLgoKMjAwNC0wOS0wOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX3R5cGUuYWRiIChEaXNhbWJpZ3VhdGUpOiBIYW5kbGUgcHJvcGVybHkgYW4gYWNjaWRlbnRhbCBhbWJpZ3VpdHkKCWluIGFuIGluc3RhbmNlLCBiZXR3ZWVuIGFuIGV4cGxpY2l0IHN1YnByb2dyYW0gYW4gb25lIGluaGVyaXRlZCBmcm9tIGEKCXR5cGUgZGVyaXZlZCBmcm9tIGFuIGFjdHVhbC4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfTl9TdWJwcm9ncmFtX0JvZHkpOiBJZiBwb2xsaW5nIGlzIGVuYWJsZWQsIGRvIG5vdAoJYWRkIGEgcG9sbGluZyBjYWxsIGlmIHRoZSBzdWJwcm9ncmFtIGlzIHRvIGJlIGlubGluZWQgYnkgdGhlIGJhY2stZW5kLAoJdG8gYXZvaWQgcmVwZWF0ZWQgY2FsbHMgd2l0aCBtdWx0aXBsZSBpbmxpbmluZ3MuCgoJKiBjaGVja3MuYWRiIChBcHBseV9BbGlnbm1lbnRfQ2hlY2spOiBJZiB0aGUgZXhwcmVzc2lvbiBpbiB0aGUgYWRkcmVzcwoJY2xhdXNlIGlzIGEgY2FsbCB3aG9zZSBuYW1lIGlzIG5vdCBhIHN0YXRpYyBlbnRpdHkgKGUuZy4gYSBkaXNwYXRjaGluZwoJY2FsbCksIHRyZWF0IGFzIGR5bmFtaWMuCgoyMDA0LTA5LTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGctdHJhc3ltLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBleHBfY2gzLmFkYiAoQ29tcG9uZW50X05lZWRzX1NpbXBsZV9Jbml0aWFsaXphdGlvbik6IERvbid0IGV4Y2VwdAoJcGFja2VkIGFycmF5cywgc2luY2UgdW51c2VkIGJpdHMgYXJlIGV4cGVjdGVkIHRvIGJlIHplcm8gZm9yIGEKCWNvbXBhcmlzb24uCgoyMDA0LTA5LTA5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiBleHBfcGFrZC5hZHM6IEZpeCBhbiBpbmFjdXJyYWN5IGFuZCBhIGNvdXBsZSBvZiB0eXBvcyBpbiB0aGUgaGVhZAoJY29tbWVudC4KCjIwMDQtMDktMDkgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIG1kbGwuYWRzLCBtZGxsLmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogTmV3IHBhcmFtZXRlciBNYXBfRmlsZSB0bwoJZW5hYmxlIG1hcCBmaWxlIGdlbmVyYXRpb24uIEFkZCB0aGUgcmlnaHQgb3B0aW9uIHRvIGdlbmVyYXRlIHRoZSBtYXAKCWZpbGUgaWYgTWFwX0ZpbGUgaXMgc2V0IHRvIFRydWUuCgoJKiBnbmF0ZGxsLmFkYiAoR2VuX01hcF9GaWxlKTogTmV3IHZhcmlhYmxlLgoJKFN5bnRheCk6IEFkZCBpbmZvIGFib3V0IG5ldyAtbSAoTWFwX0ZpbGUpIG9wdGlvbi4KCShQYXJzZV9Db21tYW5kX0xpbmUpOiBBZGQgc3VwcG9ydCBmb3IgLW0gb3B0aW9uLgoJKGduYXRkbGwpOiBQYXNzIEdlbl9NYXBfRmlsZSB0byBCdWlsZF9EeW5hbWljX0xpYnJhcnkgY2FsbHMuCglNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA0LTA5LTA5ICBMYXVyZW50IFBhdXRldCAgPHBhdXRldEBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdGxzLmFkYjogQWRkIGEgdmVyeSB2ZXJib3NlIG1vZGUgLVYuIFN1Y2ggbW9kZSBpcyByZXF1aXJlZCBieSB0aGUKCW5ldyBnbmF0ZGlzdCBpbXBsZW1lbnRhdGlvbi4KCURlZmluZSBhIHN1YnBhY2thZ2UgaXNvbGF0aW5nIHRoZSBvdXRwdXQgcm91dGluZXMgc3BlY2lmaWMgdG8gdGhpcwoJdmVyYm9zZSBtb2RlLgoKMjAwNC0wOS0wOSAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5ydGw6IChHTkFUUlRMX05PTlRBU0tJTkdfT0JKUyk6IEFkZCBnLWR5bmh0YS4KCgkqIGduYXRfdWduLnRleGkgKE1haW4gU3VicHJvZ3JhbXMpOiBGaXggdHlwby4gRGVkdWNlZCwgbm90IGRlZHVjdGVkLgoKMjAwNC0wOS0wOSAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFjdC1ldXJvcGUuZnI+CgoJKiBvcHQuYWRiIChTZXRfT3B0X0NvbmZpZ19Td2l0Y2hlcyk6IFVzZSBBZGFfVmVyc2lvbl9SdW50aW1lIHRvIGNvbXBpbGUKCWludGVybmFsIHVuaXQuCgoJKiBvcHQuYWRzOiBBZGQgQWRhX1ZlcnNpb25fUnVudGltZSBjb25zdGFudCB1c2VkIHRvIGRlY2lkZSB3aGljaAoJdmVyc2lvbiBvZiB0aGUgbGFuZ3VhZ2UgaXMgdXNlZCB0byBjb21waWxlIHRoZSBydW4gdGltZS4KCjIwMDQtMDktMDkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX3V0aWwuYWRiIChSZXF1aXJlc19UcmFuc2llbnRfU2NvcGUpOiBSZS1lbmFibGUgaGFuZGxpbmcKCW9mIHZhcmlhYmxlIGxlbmd0aCB0ZW1wb3JhcmllcyBmb3IgZnVuY3Rpb24gcmV0dXJuIG5vdyB0aGF0IHRoZQoJYmFjay1lbmQgYW5kIGdpZ2kgc3VwcG9ydCBpdC4KCjIwMDQtMDktMDEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBtaXNjLmMgKGduYXRfcHJpbnRfdHlwZSk6IFVzZSBUWVBFX1JNX1NJWkVfTlVNLgoKCSogdHJhbnMuYyAoc3RydWN0IHN0bXRfZ3JvdXApOiBEZWxldGUgZmllbGQgR0xPQkFMLgoJKGduYXRfaW5pdF9zdG10X2dyb3VwKTogRG8gbm90IGluaXRpYWxpemUgaXQuCgkoY2FsbF90b19nbnUpOiBVc2Ugc2F2ZV9leHByLCBub3QgcHJvdGVjdF9tdWx0aXBsZV9ldmFsLgoJKEV4Y2VwdGlvbl9IYW5kbGVyX3RvX2dudV9zamxqKTogQ2FsbCBidWlsZF9pbnRfY3N0LCBub3QgYnVpbGRfaW50XzIKCShnbmF0X3RvX2dudSwgY2FzZSBOX0NoYXJhY3Rlcl9MaXRlcmFsLCBOX1N0cmluZ19MaXRlcmFsKTogTGlrZXdpc2UuCgkoZ25hdF90b19nbnUsIGNhc2UgTl9Db21waWxhdGlvbl9Vbml0KTogRG8gbm90IHNldCBHTE9CQUwgaW4gc3RtdCBncm91cC4KCShzdGFydF9zdG10X2dyb3VwKTogTGlrZXdpc2UuCgkoYWRkX3N0bXQsIGFkZF9kZWNsX2V4cHIpOiBSZXdvcmsgaGFuZGxpbmcgb2YgZ2xvYmFsIERFQ0xfRVhQUnMuCgoJKiB1dGlsczIuYyAoZ2djLmgpOiBJbmNsdWRlLgoJKGJ1aWxkX2NhbGxfcmFpc2UpOiBDYWxsIGJ1aWxkX2ludF9jc3QsIG5vdCBidWlsZF9pbnRfMi4KCgkqIHV0aWxzLmMgKGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBGaXggYXJnIHRvCglidWlsZF9jb21tb25fdHJlZV9ub2Rlcy4KCShjcmVhdGVfc3VicHJvZ190eXBlKTogRG8gbm90IHVzZSBTRVRfVFlQRV9DSV9DT19MSVNULgoJKGduYXRfZGVmaW5lX2J1aWx0aW4pOiBTZXQgYnVpbHRfaW5fZGVjbHMuCgkoaW5pdF9naWdpX2RlY2xzKTogQ2FsbCBidWlsZF9pbnRfY3N0LCBub3QgYnVpbGRfaW50XzIuCgoJKiBhZGEtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsLCBzdHJ1Y3QgbGFuZ190eXBlKTogRmllbGQgaXMgdHlwZSB0cmVlLgoJKEdFVF9UWVBFX0xBTkdfU1BFQ0lGSUMsIFNFVF9UWVBFX0xBTkdfU1BFQ0lGSUMpOiBOZXcgbWFjcm9zLgoJKEdFVF9ERUNMX0xBTkdfU1BFQ0lGSUMsIFNFVF9ERUNMX0xBTkdfU1BFQ0lGSUMpOiBMaWtld2lzZS4KCShUWVBFX0NJX0NPX0xJU1QsIFNFVF9UWVBFX0NJX0NPX0xJU1QsIFRZUEVfTU9EVUxFLAoJU0VUX1RZUEVfTU9EVUxFKTogVXNlIHRoZW0uCgkoVFlQRV9JTkRFWF9UWVBFLCBTRVRfVFlQRV9JTkRFWF9UWVBFLCBUWVBFX0RJR0lUU19WQUxVRSk6IExpa2V3aXNlLgoJKFNFVF9UWVBFX0RJR0lUU19WQUxVRSwgVFlQRV9VTkNPTlNUUkFJTkVEX0FSUkFZKTogTGlrZXdpc2UuCgkoU0VUX1RZUEVfVU5DT05TVFJBSU5FRF9BUlJBWSwgVFlQRV9BREFfU0laRSwKCVNFVF9UWVBFX0FEQV9TSVpFKTogTGlrZXdpc2UuCgkoVFlQRV9BQ1RVQUxfQk9VTkRTLCBTRVRfVFlQRV9BQ1RVQUxfQk9VTkRTKTogTGlrZXdpc2UuCgkoREVDTF9DT05TVF9DT1JSRVNQT05ESU5HX1ZBUiwKCVNFVF9ERUNMX0NPTlNUX0NPUlJFU1BPTkRJTkdfVkFSKTogTGlrZXdpc2UuCgkoREVDTF9PUklHSU5BTF9GSUVMRCwgU0VUX0RFQ0xfT1JJR0lOQUxfRklFTEQpOiBMaWtld2lzZS4KCShUWVBFX1JNX1NJWkVfSU5ULCBUWVBFX1JNX1NJWkVfRU5VTSwgU0VUX1RZUEVfUk1fU0laRV9FTlVNKTogRGVsZXRlZC4KCShUWVBFX1JNX1NJWkVfTlVNKTogTmV3IG1hY3JvLgoJKFRZUEVfUk1fU0laRSk6IE1vZGlmaWVkIHRvIHVzZSBhYm92ZS4KCgkqIGN1aW50cC5jOiAoYnVpbGRfY3N0X2Zyb21faW50KTogTmV3IGZ1bmN0aW9uLgoJKFVJX1RvX2dudSk6IFVzZSBpdC4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KTogVXNlIFRZUEVfUk1fU0laRV9OVU0uCgkobWFrZV90eXBlX2Zyb21fc2l6ZSk6IEF2b2lkIGNoYW5naW5nIFRZUEVfVU5TSUdORUQgb2YgYSB0eXBlLgoJKGduYXRfc3Vic3RpdHV0ZV9pbl90eXBlLCBjYXNlIEFSUkFZX1RZUEUpOiBJZiBvbGQgaGFkIGEKCU1JTl9FWFBSIGZvciB0aGUgc2l6ZSwgY29weSBpdCBpbnRvIG5ldy4KCjIwMDQtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9DYWxsKTogUHJvcGVybHkgaGFuZGxlIHZhbGlkaXR5IGNoZWNrcyBmb3IKCXBhY2tlZCBpbmRleGVkIGNvbXBvbmVudCB3aGVyZSBhcnJheSBpcyBhbiBJTiBPVVQgZm9ybWFsLiBUaGlzCglnZW5lcmF0ZWQgZ2FyYmFnZSBjb2RlIHByZXZpb3VzbHkuCgoJKiBnbmF0X3Vnbi50ZXhpOiBEb2N1bWVudCAtZnZlcmJvc2UtYXNtCgoJKiBnbmF0LXN0eWxlLnRleGk6IE1pbm9yIHVwZGF0ZXMgKG5vdGUgdGhhdCBib29sZWFuIGNvbnN0YW50cyBhbmQKCXZhcmlhYmxlcyBhcmUgam9pbmVkIHdpdGggQU5EL09SIHJhdGhlciB0aGFuIHNob3J0IGNpcmN1aXQgZm9ybXMpLgoKMjAwNC0wOS0wMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX3V0aWwuYWRiIChTYWZlX1VuY2hlY2tlZF9UeXBlX0NvbnZlcnNpb24pOiBDb252ZXJzaW9uIGlzIHNhZmUgaWYKCWl0IGlzIGFuIHVwd2FyZCBjb252ZXJzaW9uIG9mIGFuIHVudGFnZ2VkIHR5cGUgd2l0aCBubyByZXByZXNlbnRhdGlvbgoJY2hhbmdlLgoKMjAwNC0wOS0wMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogcnRzZmluZC5hZHM6IE1vdmUgUkNJX1N1YnBfSW5mbyBhbmQgUkNJX1N1YnBfSW5mb19BcnJheSB0bwoJU3lzdGVtLlBhcnRpdGlvbl9JbnRlcmZhY2UuCgoJKiBjaGVja3MuYWRiIChBcHBseV9BY2Nlc3NfQ2hlY2tzKTogRG8gbm90IGdlbmVyYXRlIGNoZWNrcyB3aGVuCglleHBhbmRlciBpcyBub3QgYWN0aXZlIChidXQgY2hlY2sgZm9yIHVuc2V0IHJlZmVyZW5jZSB0byBwcmVmaXggb2YKCWRlcmVmZXJlbmNlKS4KCgkqIHNlbV9wcmFnLmFkYiAoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgUHJhZ21hX0RlYnVnKTogVW5pZm9ybWx5IHJld3JpdGUKCXByYWdtYSBEZWJ1ZyBhcyBhbiBpZiBzdGF0ZW1lbnQgd2l0aCBhIGNvbnN0YW50IGNvbmRpdGlvbiwgZm9yCgljb25zaXN0ZW50IHRyZWF0bWVudCBvZiBlbnRpdHkgcmVmZXJlbmNlcyBjb250YWluZWQgd2l0aGluIHRoZQoJZW5jbG9zZWQgcHJvY2VkdXJlIGNhbGwuCgoyMDA0LTA5LTAxICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGJpbmRnZW4uYWRiOiAoU2V0X0VBX0xhc3QpOiBOZXcgcHJvY2VkdXJlCgkoR2VuX0V4Y2VwdGlvbl9UYWJsZV9BZGEsIEdlbl9FeGNlcHRpb25fVGFibGVfQyk6IFVzZSBuZXcgcHJvY2VkdXJlCglTZXRfRUFfTGFzdC4KCShHZW5fQWRhZmluYWxfQWRhKTogSWYgbm8gZmluYWxpemF0aW9uLCBhZGFmaW5hbCBkb2VzIG5vdGhpbmcKCShHZW5fT3V0cHV0X0ZpbGVfQWRhKTogQWx3YXlzIGNhbGwgR2VuX0FkYWZpbmFsX0FkYSwgc28gdGhhdCBTQUwgY2FuIGJlCglsaW5rZWQgd2l0aG91dCBlcnJvcnMuCgkoR2VuX0V4Y2VwdGlvbl9UYWJsZV9BZGEpOiBDb3JyZWN0IGJ1Z3Mgd2hlbiBnZW5lcmF0aW5nIGNvZGUgZm9yIGFycmF5cwoJU1QgYW5kIEVBLgoJKEdlbl9FeGNlcHRpb25fVGFibGVfQyk6IENvcnJlY3Qgc2FtZSBidWdzCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBuZXcgcXVhbGlmaWVyIC9WRVJCT1NFX0FTTSB0byBHQ0NfU3dpdGNoZXMKCgkqIGctb3NfbGliLmFkYiAoTm9ybWFsaXplX1BhdGhuYW1lLkdldF9EaXJlY3RvcnkpOiBXaGVuIERpciBpcyBlbXB0eSwKCW9uIFdpbmRvd3MsIG1ha2Ugc3VyZSB0aGF0IHRoZSBkcml2ZSBsZXR0ZXIgaXMgaW4gdXBwZXIgY2FzZS4KCgkqIGctb3NfbGliLmFkcyAoTm9ybWFsaXplX1BhdGhuYW1lKTogQWRkIGEgY29tbWVudCB0byBpbmRpY2F0ZSB0aGF0IG9uCglXaW5kb3dzLCB3aGVuIHRoZSBkcml2ZSBsZXR0ZXIgaXMgYWRkZWQgYW5kIENhc2VfU2Vuc2l0aXZlIGlzIFRydWUsIHRoZQoJZHJpdmUgbGV0dGVyIGlzIGZvcmNlZCB0byB1cHBlciBjYXNlLgoKCSogbWxpYi10Z3QtaXJpeC5hZGIgKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IFRyYW5zZmVyIGFsbCAtbHh4eCBvcHRpb25zCgl0byBPcHRpb25zXzIgZm9yIHRoZSBjYWxsIHRvIE1MaWIuVXRsLkdjYy4KCgkqIGJsZC5hZGIgKFB1dF9JbmNsdWRlX1Byb2plY3QpOiBVc2UgJy8nLCBub3QgJ1wnIG9uIFdpbmRvd3MgYXMKCWRpcmVjdG9yeSBzZXBhcmF0b3Igd2hlbiBkZWZpbmluZyBCQVNFX0RJUi4KCjIwMDQtMDktMDEgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGdwcmNtZC5hZGIgKEV4dGVuZCk6IERvIG5vdCBvdXRwdXQgdHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvci4gVGhpcwoJaXMgbm90IG5lZWRlZCBhbmQgaXQgY29uZnVzZXMgV2luZG93cyBHTlUvbWFrZSB3aGljaCBkb2VzIG5vdCByZXBvcnQKCWRpcmVjdG9yeSB0ZXJtaW5hdGVkIGJ5IGEgc2xhc2ggYXMgYSBkaXJlY3RvcnkuCgkoZ3ByY21kKTogSWRlbSBmb3IgInB3ZCIgaW50ZXJuYWwgY29tbWFuZC4KCgkqIE1ha2VmaWxlLmdlbmVyaWM6IFVzZSBfX0dQUkNPTE9OX18gaW5zdGVhZCBvZiBwaXBlIGNoYXJhY3RlciBpbgoJdGFyZ2V0IG5hbWVzIHJld3JpdGUgdG8gZml4IHJlZ3Jlc3Npb25zIHdpdGggcmVjZW50IHZlcnNpb24gb2YKCUdOVS9tYWtlLiBTdGFydGluZyB3aXRoIEdOVS9tYWtlIDMuODAgdGhlIHBpcGUgY2hhcmFjdGVyIHdhcyBub3QKCWhhbmRsZWQgcHJvcGVybHkgYW55bW9yZS4KCjIwMDQtMDktMDEgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKEVYVFJBX0dOQVRCSU5EX09CSlMpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgkqIHJhaXNlLmMgWyFJTl9SVFNdOiBVbmRlZiBhYm9ydC4KCjIwMDQtMDgtMjcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB1dGlsczIuYyAoYnVpbGRfYWxsb2NhdG9yKTogVXNlIHNzaXplX2ludC4KCgkqIHV0aWxzLmMgKGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGEgaGFzIGEgc2lnbmVkIHNpemV0eXBlLgoKMjAwNC0wOC0yNyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoRVhUUkFfR05BVEJJTkRfT0JKUyk6IEFkZCBlcnJvcnMuby4KCjIwMDQtMDgtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFkYS10cmVlLmggKFRZUEVfUk1fU0laRV9JTlQpOiBVc2UgVFlQRV9MQU5HX1NMT1RfMS4KCjIwMDQtMDgtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjdWludHAuYyAoVUlfVG9fZ251KTogQWRqdXN0IGJ1aWxkX2ludF9jc3QgY2FsbHMuCgkqIHRyYW5zLmMgKEV4Y2VwdGlvbl9IYW5kbGVyX3RvX2dudV9zamxqLCBnbmF0X3RvX2dudSk6IExpa2V3aXNlLgoJKiB1dGlscy5jIChpbml0X2dpZ2lfZGVjbHMpOiBMaWtld2lzZS4KCSogdXRpbHMyLmMgKGJ1aWxkX2NhbGxfcmFpc2UsIGJ1aWxkX2FsbG9jYXRvcik6IExpa2V3aXNlLgoKMjAwNC0wOC0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHV0aWxzLmMgKGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGp1c3QKCWJ1aWxkX2NvbW1vbl90cmVlX25vZGVzIGNhbGwuCgoyMDA0LTA4LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdXRpbHMyLmMgKGJ1aWxkX2FsbG9jYXRvcik6IFVzZSBidWlsZF9pbnRfY3N0IGZvciBuZWdhdGl2ZQoJc2l6ZSB0eXBlcy4KCjIwMDQtMDgtMTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBtaXNjLmMgKExBTkdfSE9PS1NfSE9OT1JfUkVBRE9OTFkpOiBSZW1vdmUuCgoyMDA0LTA4LTE2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3VpbnRwLmMgKFVJX1RvX2dudSk6IEJlIG1vcmUgY29uc2VydmF0aXZlIHdpdGggYnVpbGRfaW50X2NzdAoJY2FsbC5zCgkqIHRyYW5zLmMgKEV4Y2VwdGlvbl9IYW5kbGVyX3RvX2dudV9zamxqKTogTGlrZXdpc2UuCgkoZ25hdF90b19nbnUpOiBMaWtld2lzZS4KCjIwMDQtMDgtMTYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGFkYWludC5jIChfX2duYXRfcHJqX2FkZF9vYmpfZmlsZXMpOiBTZXQgdG8gMCBvbmx5IG9uIFdpbjMyIGZvciBHQ0MKCWJhY2tlbmQgcHJpb3IgdG8gR0NDIDMuNC4gV2l0aCBHQ0MgMy40IHdlIGFyZSB1c2luZyB0aGUgR0NDJ3Mgc2hhcmVkCglvcHRpb24gYW5kIG5vdCBtZGxsIGFueW1vcmUuIFVwZGF0ZSBjb21tZW50LgoKMjAwNC0wOC0xNiAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogYmxkLmFkYiAoUHV0X0luY2x1ZGVfUHJvamVjdCk6IFByb3Blcmx5IGhhbmRsZSBkaXJlY3Rvcnkgc2VwYXJhdG9ycwoJb24gV2luZG93cy4KCjIwMDQtMDgtMTYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDQuYWRiIChUcnlfT2JqZWN0X09wZXJhdGlvbik6IFJlc3RydWN0dXJlIGNvZGUuIE9wdGltaXplIGJ5CglkZWNyZWFzaW5nIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIGp1bmsgbm9kZXMgd2hpbGUgc2VhcmNoaW5nIGZvciB0aGUKCWFwcHJvcHJpYXRlIHN1YnByb2dyYW0uCgoyMDA0LTA4LTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3VpbnRwLmMgKFVJX1RvX2dudSk6IFVzZSBidWlsZF9pbnRfY3N0Li4KCSogdHJhbnMuYyAoRXhjZXB0aW9uX0hhbmRsZXJfdG9fZ251X3NqbGosIGduYXRfdG9fZ251KTogTGlrZXdpc2UuCgkqIHV0aWxzLmMgKGluaXRfZ2lnaV9kZWNscyk6IExpa2V3aXNlLgoJKiB1dGlsczIuYyAoYnVpbGRfY2FsbF9yYWlzZSk6IExpa2V3aXNlLgoKMjAwNC0wOC0xMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogV2hlbiBidWlsZGluZyBhbiBhbGxvY2F0b3IKCWZvciBhIGdsb2JhbCBhbGlhc2VkIG9iamVjdCB3aXRoIGEgdmFyaWFibGUgc2l6ZSBhbmQgYW4gdW5jb25zdHJhaW5lZAoJbm9taW5hbCBzdWJ0eXBlLCBwcmV0ZW5kIHRoZXJlIGlzIG5vIGluaXRpYWxpemVyIGlmIHRoZSBvbmUgd2UgaGF2ZSBpcwoJaW5jb21wbGV0ZSwgYW5kIGF2b2lkIHJlZmVyZW5jaW5nIGFuIGluZXhpc3RhbnQgY29tcG9uZW50IGluIHRoZXJlLiBUaGUKCXBhcnQgd2UgaGF2ZSB3aWxsIGJlIHJlYnVpbHQgYW55d2F5IGFuZCB0aGUgcmVmZXJlbmNlIG1heSBjb25mdXNlCglmdXJ0aGVyIG9wZXJhdGlvbnMuCgoyMDA0LTA4LTEzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBlaW5mby5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogbGliLXdyaXQuYWRiIChPdXRwdXRfTWFpbl9Qcm9ncmFtX0xpbmUpOiBEbyBub3Qgc2V0IHBhcmFtZXRlcgoJcmVzdHJpY3Rpb25zIGluIHRoZSBBTEkgaWYgd2Ugb25seSB3YW50IHRvIHdhcm4gYWJvdXQgdmlvbGF0aW9ucy4KCjIwMDQtMDgtMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogYWxpLmFkYiAoU2Nhbl9BTEkpOiBJbml0aWFsaXplIGNvbXBvbmVudCBCb2R5X05lZWRlZF9Gb3JfU0FMIHRvIEZhbHNlCgl3aGVuIGNyZWF0aW5nIGEgbmV3IFVuaXRfUmVjb3JkIGluIHRhYmxlIFVuaXRzLgoKCSogZ25hdGxzLmFkYiAoT3V0cHV0X1VuaXQpOiBJbiB2ZXJib3NlIG1vZGUsIG91dHB1dCB0aGUgcmVzdHJpY3Rpb25zCgl0aGF0IGFyZSB2aW9sYXRlZCwgaWYgYW55LgoKCSogcHJqLW5tc2MuYWRiIChBZGFfQ2hlY2suR2V0X1BhdGhfTmFtZXNfQW5kX1JlY29yZF9Tb3VyY2VzKTogRG8gbm90CglhZGQgZGlyZWN0b3J5IHNlcGFyYXRvciBpZiBwYXRoIGFscmVhZHkgZW5kcyB3aXRoIGEgZGlyZWN0b3J5IHNlcGFyYXRvci4KCjIwMDQtMDgtMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHJ0c2ZpbmQuYWRiIChFbnRpdHlfTm90X0RlZmluZWQpOiBJZiB0aGUgZXJyb3Igb2N1cnJzIGluIGEgcHJlZGVmaW5lZAoJdW5pdCwgdGhpcyBpcyBhbiBhdHRlbXB0IHRvIGlubGluZSBhIGNvbnN0cnVjdCB0aGF0IGlzIG5vdCBhdmFpbGFibGUgaW4KCXRoZSBjdXJyZW50IHJlc3RyaWN0ZWQgbW9kZSwgc28gYWJvcnQgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGNvbnRpbnVlLgoKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX1VuZGVybHlpbmdfRnVsbF9WaWV3KTogSWYgdGhlIG5ldyB0eXBlIGhhcwoJZGlzY3JpbWluYW50cyB0aGF0IHJlbmFtZSB0aG9zZSBvZiB0aGUgcGFyZW50LCByZWNvdmVyIG5hbWVzIG9mCglvcmlnaW5hbCBkaXNjcmltaW5hbnRzIGZvciB0aGUgY29uc3RyYWludCBvbiB0aGUgZnVsbCB2aWV3IG9mIHRoZQoJcGFyZW50LgoJKENvbXBsZXRlX1ByaXZhdGVfU3VidHlwZSk6IERvIG5vdCBjcmVhdGUgYSBzdWJ0eXBlIGRlY2xhcmF0aW9uIGlmIHRoZQoJc3VidHlwZSBpcyBhbiBpdHlwZS4KCgkqIGduYXRfcm0udGV4aTogQWRkZWQgc2VjdGlvbiBvbiBpbXBsZW1lbnRhdGlvbiBvZiBkaXNjcmltaW5hdGVkCglyZWNvcmRzIHdpdGggZGVmYXVsdCB2YWx1ZXMgZm9yIGRpc2NyaW1pbmFudHMuCgoyMDA0LTA4LTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1NjAxCgkqIHNlbV9yZXMuYWRiIChNYWtlX0NhbGxfSW50b19PcGVyYXRvcik6IEhhbmRsZSBwcm9wZXJseSB0aGUgY2FzZSB3aGVyZQoJdGhlIHNlY29uZCBvcGVyYW5kIGlzIG92ZXJsb2FkZWQuCgoyMDA0LTA4LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdXRpbHMuYyAoZ25hdF9pbnN0YWxsX2J1aWx0aW5zKTogUmVtb3ZlIF9fYnVpbHRpbl9zdGFja19hbGxvYywKCWFkZCBfX2J1aWx0aW5fYWxsb2NhLgoKMjAwNC0wOC0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy1sYW5nLmluIChib290X2xhbmd1YWdlKTogWWVzLgoKMjAwNC0wOC0wOSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZy1zb2NrZXQuYWRiIChBYm9ydF9TZWxlY3Rvcik6IEluaXRpYWxpemUgQnVmIHRvIHByZXZlbnQgdmFsZ3JpbmQKCWZyb20gY29tcGxhaW5pbmcgb24gcG90ZW50aWFsIHVuaW5pdGlhbGl6ZWQgcmVmZXJlbmNlLgoJQ2hhbmdlIGNhbGxzIHRvIEdOQVQuU29ja2V0cy5UaGluLklzX1NvY2tldF9Jbl9TZXQgdG8gYWNjb3VudCBmb3IKCW5ldyBzcGVjaWZpY2F0aW9uIGFuZCB0ZXN0IGV4cGxpY2l0bHkgZm9yIG5vbi16ZXJvIHJldHVybiB2YWx1ZS4KCgkqIGctc29jdGhpLmFkcyAoSXNfU29ja2V0X0luX1NldCk6IERlY2xhcmUgaW1wb3J0ZWQgZnVuY3Rpb24gYXMKCXJldHVybmluZyBDLmludCwgdG8gYXZvaWQgdXNpbmcgYSBkZXJpdmVkIGJvb2xlYW4gdHlwZS4KCgkqIGV4cF9jaDUuYWRiIChNYWtlX1RhZ19DdHJsX0Fzc2lnbm1lbnRzKTogVXNlCglEdXBsaWNhdGVfU3ViZXhwcl9Ob19DaGVja3MgaW4gcHJlZmVyZW5jZSB0byBkaXJlY3QgdXNlIG9mCglSZW1vdmVfU2lkZV9FZmZlY3RzIGFuZCBOZXdfQ29weV9UcmVlLgoJQ2xlYXIgQ29tZXNfRnJvbV9Tb3VyY2Ugb24gcHJlZml4IG9mICdTaXplIGF0dHJpYnV0ZSByZWZlcmVuY2UuCgoJKiBnLXNvY3RoaS5hZGIsIGctc29jdGhpLXZtcy5hZGIsIGctc29jdGhpLW1pbmd3LmFkYiwKCWctc29jdGhpLXZ4d29ya3MuYWRiOiBDaGFuZ2UgY2FsbHMgdG8KCUdOQVQuU29ja2V0cy5UaGluLklzX1NvY2tldF9Jbl9TZXQgdG8gYWNjb3VudCBmb3IgbmV3IHNwZWNpZmljYXRpb24KCWFuZCB0ZXN0IGV4cGxpY2l0bHkgZm9yIG5vbi16ZXJvIHJldHVybiB2YWx1ZS4KCgkqIGctc29jdGhpLXZtcy5hZHMsIGctc29jdGhpLW1pbmd3LmFkcywgZy1zb2N0aGktdnh3b3Jrcy5hZHM6CgkoSXNfU29ja2V0X0luX1NldCk6IERlY2xhcmUgaW1wb3J0ZWQgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIEMuaW50LCB0bwoJYXZvaWQgdXNpbmcgYSBkZXJpdmVkIGJvb2xlYW4gdHlwZS4KCjIwMDQtMDgtMDkgIEFsYmVydCBMZWUgIDxsZWVAZ25hdC5jb20+CgoJKiBzeXN0ZW0taXJpeC1uMzIuYWRzOiBSZWZpbmUgdGFza2luZyBwcmlvcml0eSBjb25zdGFudHMgZm9yIElSSVguCgoyMDA0LTA4LTA5ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBEb2N1bWVudCBuZXcgd2F5IHRvIGJ1aWxkIERMTHMgb24gV2luZG93cyB1c2luZwoJR0NDJ3MgLXNoYXJlZCBvcHRpb24uCgoJKiBtbGliLXRndC1taW5ndy5hZGIgKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IFBhc3MgR0NDJ3Mgb3B0aW9ucyBpbnRvCglPcHRpb25zXzIgcGFyYW1ldGVyIChvcHRpb25zIHB1dCBhZnRlciBvYmplY3QgZmlsZXMpLgoKMjAwNC0wOC0wOSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxFX0FycmF5X1N1YnR5cGU+OiBBZGp1c3QgY29uZGl0aW9uIHRvCglpZ25vcmUgb3ZlcmZsb3dzIG9uIGxvdyBhbmQgaGlnaCBib3VuZHMgb2YgYW4gaW5kZXggdG8gYWxzbyBhY2NvdW50IGZvcgoJZGlmZmVyZW5jZXMgaW4gc2lnbmVkbmVzcyBiZXR3ZWVuIHNpemV0eXBlIGFuZCBnbnVfaW5kZXhfc3VidHlwZS4KCVRoZXNlIGFyZSBhcyBsZWdpdGltYXRlIGFzIHRoZSBvbmVzIGNhdXNlZCBieSBhIGxvd2VyIFRZUEVfUFJFQ0lTSU9OCglvbiBzaXpldHlwZS4KCjIwMDQtMDgtMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcy1zb2xpdGEuYWRzLCBzLXNvbGl0YS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZ25hdF9ybS50ZXhpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgcHJhZ21hIFByb2ZpbGUgKFJlc3RyaWN0ZWQpCglNb3ZlIHByYWdtYSBSZXN0cmljdGVkX1J1bl9UaW1lLCBOb19SdW5fVGltZSwgUmF2ZW5zY2FyIHRvIG5ldwoJb2Jzb2xlc2NlbnQgc2VjdGlvbgoJQWRkIG5vdGUgdGhhdCBOb19JbXBsaWNpdF9Db25kaXRpb25hbHMgZG9lcyBub3Qgc3VwcHJlc3MKCXJ1biB0aW1lIGNvbnN0cmFpbnQgY2hlY2tzLgoKCSogdm1zX2NvbnYuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHMtc2Vjc3RhLmFkYjogVXNlIFNTX1B0ciBpbnN0ZWFkIG9mIE1hcmtfSWQgYXMgc3RhY2sgcG9pbnRlciAoY2xlYW51cAoJYW5kIG5lY2Vzc2FyeSBmb3IgZm9sbG93aW5nIGNoYW5nZSkuCgkoTWFyayk6IFJldHVybiBuZXcgZm9ybWF0IE1hcmtfSWQgY29udGFpbmluZyBzZWMgc3RhY2sgYWRkcmVzcwoJKFJlbGVhc2UpOiBVc2Ugc2VjIHN0YWNrIGFkZHJlc3MgZnJvbSBNYXJrX0lkIGF2b2lkaW5nIFNlbGYgY2FsbAoKCSogcy1zZWNzdGEuYWRzOiBEZWZpbmUgU1NfUHRyIHRvIGJlIHVzZWQgaW5zdGVhZCBvZiBNYXJrX0lkIGFzIHN0YWNrCglwb2ludGVyIChjbGVhbnVwIGFuZCBuZWNlc3NhcnkgZm9yIGZvbGxvd2luZyBjaGFuZ2UpLgoJRGVmaW5lIE1hcmtfSWQgYXMgcmVjb3JkIGNvbnRhaW5pbmcgYWRkcmVzcyBvZiBzZWNvbmRhcnkgc3RhY2ssIHRoYXQgd2F5CglSZWxlYXNlIGRvZXMgbm90IG5lZWQgdG8gZmluZCB0aGUgc3RhY2sgYWdhaW4sIGRlY3JlYXNpbmcgdGhlIG51bWJlciBvZgoJY2FsbHMgdG8gU2VsZiBhbmQgaW1wcm92aW5nIGVmZmljaWVuY3kuCgoJKiBzZW1fdXRpbC5hZHM6IEFkZCBhID8/PyBjb21tZW50IGZvciBJc19Mb2NhbF9WYXJpYWJsZV9SZWZlcmVuY2UKCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0Nhc2VfU3RhdGVtZW50KTogQWRkIGNpcmN1aXRyeSB0byB0cmFjayB2YWx1ZSBvZgoJY2FzZSB2YXJpYWJsZSBpbnRvIHRoZSBpbmRpdmlkdWFsIGNhc2UgYnJhbmNoZXMgd2hlbiBwb3NzaWJsZS4KCgkqIHNlbV9jaDExLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBwcmouYWRzOiBDb3JyZWN0IHNwZWxsaW5nIG9mIHN1ZmZpeHMKCgkqIHByai1ubXNjLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglDb3JyZWN0IHNwZWxsaW5nIHN1ZmZpeHMgdGhyb3VnaG91dCAoYWxzbyBpbiBpZGVudGlmaWVycykKCgkqIGZyZWV6ZS5hZGI6IE1pbm9yIHNwZWxsaW5nIGNvcnJlY3Rpb24KCgkqIGV4cF9jaDIuYWRiOiBDbGVhbnVwcyB0byBoYW5kbGluZyBvZiBDdXJyZW50X1ZhbHVlCgkobm8gZnVuY3Rpb25hbCBlZmZlY3QpLgoKCSogYmxkLmFkYjogQ29ycmVjdCBzcGVsbGluZyBvZiBzdWZmaXhzCgoJKiBlaW5mby5hZGIgKEVuY2xvc2luZ19EeW5hbWljX1Njb3BlKTogRGVmZW5kIGFnYWluc3QganVuayBhcmd1bWVudAoKMjAwNC0wOC0wOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBSIGFkYS8xNTQwOAoJKiBzZW1fY2g3LmFkYiAoSW5zdGFsbF9Qcml2YXRlX0RlY2xhcmF0aW9ucyk6IEluIHRoZSBib2R5IG9mIHRoZQoJcGFja2FnZSBvciBvZiBhIGNoaWxkLCBwcml2YXRlIGVudGl0aWVzIGFyZSBib3RoIGltbWVkaWF0ZWx5X3Zpc2libGUKCWFuZCBub3QgaGlkZGVuLgoKMjAwNC0wOC0wOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2V2YWwuYWRiIChFdmFsX0ludGVnZXJfTGl0ZXJhbCk6IElmIHRoZSBjb250ZXh0IGlzIEFueV9JbnRlZ2VyLAoJdGhlcmUgYXJlIG5vIHJhbmdlIGNoZWNrcyBvbiB0aGUgdmFsdWUgb2YgdGhlIGxpdGVyYWwuCgoJKiBleHBfY2g3LmFkYiAoSW5zZXJ0X0FjdGlvbnNfSW5fU2NvcGVfQXJvdW5kKTogSWYgdGhlIG5vZGUgYmVpbmcKCXdyYXBwZWQgaXMgdGhlIHRyaWdnZXJpbmcgYWx0ZXJuYXRpdmUgb2YgYW4gYXN5bmNocm9ub3VzIHNlbGVjdCwgYWN0aW9uCglzdGF0ZW1lbnRzIG11c3RiZSBpbnNlcnRlZCBiZWZvcmUgdGhlIHNlbGVjdCBpdHNlbGYuCgoJKiBzZW1fYXR0ci5hZGIgKEFuYWx5emVfQXR0cmlidXRlLCBjYXNlICdTaXplKTogSGFuZGxlIHByb3Blcmx5IHRoZQoJY2FzZSB3aGVyZSB0aGUgcHJlZml4IGlzIGEgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGwuCgkoUmVzb2x2ZV9BdHRyaWJ1dGUsIGNhc2UgJ0FjY2Vzcyk6IFRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlIG9uIGEKCXN1YnByb2dyYW0gaXMgbGVnYWwgaW4gYSBnZW5lcmljIGJvZHkgaWYgdGhlIHN1YnByb2dyYW0gaXMgZGVjbGFyZWQKCWVsc2V3aGVyZS4KCjIwMDQtMDgtMDkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZWdwci5hZGIgKEJ1aWxkX0xpYnJhcnkpOiBMaW5rIHdpdGggZysrIGlmIEMrKyBpcyBvbmUgb2YgdGhlCglsYW5ndWFnZXMsIG90aGVyd2lzZSBidWlsZGluZyB0aGUgbGlicmFyeSBtYXkgZmFpbCB3aXRoIHVucmVzb2x2ZWQKCXN5bWJvbHMuCgkoQ29tcGlsZV9Tb3VyY2VzKTogRG8gbm90IGJ1aWxkIGxpYnJhcmllcyBpZiAtYyBzd2l0Y2ggaXMgdXNlZAoKCSogZ25hdGxpbmsuYWRiIChQcm9jZXNzX0FyZ3MpOiBOZXcgc3dpdGNoZXMgLU0gYW5kIC1NbWFwCgkoV3JpdGVfVXNhZ2UpOiBJZiBtYXAgZmlsZSBjcmVhdGlvbiBpcyBzdXBwb3J0ZWQsIG91dHB1dCBuZXcgc3dpdGNoZXMKCS1NIGFuZCAtTW1hcC4KCShHbmF0bGluayk6IFdoZW4gLU0gaXMgc3BlY2lmaWVkLCBhZGQgdGhlIG5lY2Vzc2FyeSBzd2l0Y2goZXMpIHRvIHRoZQoJZ2NjIGNhbGwsIHdoZW4gc3VwcG9ydGVkLgoKCSogTWFrZWZpbGUuaW46IEFkZGVkIGluZGVwc3cubyB0byB0aGUgb2JqZWN0IGxpc3QgZm9yIGduYXRsaW5rCglTcGVjaWZpZWQgdGhlIEFJWCwgR05VL0xpbnV4IGFuZCBXaW5kb3dzIHZlcnNpb25zIG9mIGluZGVwc3cuYWRiCgoJKiBpbmRlcHN3LWFpeC5hZGIsIGluZGVwc3ctbGludXguYWRiLCBpbmRlcHN3LW1pbmd3LmFkYiwKCWluZGVwc3cuYWRiLCBpbmRlcHN3LmFkczogTmV3IGZpbGVzLgoKMjAwNC0wOC0wOSAgQmVybmFyZCBCYW5uZXIgIDxiYW5uZXJAZ25hdC5jb20+CgoJKiBzeXN0ZW0tdnh3b3Jrcy14ODYuYWRzLCBzLXZ4d29yay14ODYuYWRzOiBOZXcgZmlsZXMuCgoJKiBNYWtlZmlsZS5pbjogYWRkIHNlY3Rpb24gZm9yIHZ4d29ya3MgeDg2CgoyMDA0LTA4LTA5ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGduYXQuY29tPgoKCSogZXhwX2NoMy5hZGIgKEJ1aWxkX0luaXRfU3RhdGVtZW50cyk6IEFkZCBleHRyYSBjb25kaXRpb24gdG8gZGVhbCB3aXRoCglwZXItb2JqZWN0IGNvbnN0cmFpbmVkIGNvbXBvbmVudHMgd2hlcmUgdGhlIGRpc2NyaW1pbmFudCBpcyBvZiBhbgoJQWNjZXNzIHR5cGUuCgkoQnVpbGRfUmVjb3JkX0luaXRfUHJvYyk6IEFkZCBjb25kaXRpb24gdG8gcHJldmVudCB0aGUgaW5oZXJpdGFuY2Ugb2YKCXRoZSBwYXJlbnQgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlIGZvciBkZXJpdmVkIFVuY2hlY2tlZF9VbmlvbnMuCglJbnN0ZWFkLCBkZXJpdmVkIFVuY2hlY2tlZF9VbmlvbnMgYnVpbGQgdGhlaXIgb3duIGluaXRpYWxpemF0aW9uCglwcm9jZWR1cmUuCgkoQnVpbGRfVmFyaWFudF9SZWNvcmRfRXF1YWxpdHkpOiBJbXBsZW1lbnQgVW5jaGVja2VkX1VuaW9uIGVxdWFsaXR5LgoJQ2hlY2sgdGhlIGJvZHkgb2YgdGhlIHN1YnByb2dyYW0gZm9yIGRldGFpbHMuCgkoRnJlZXplX1JlY29yZF9UeXBlKTogUHJldmVudCB0aGUgaW5oZXJpdGFuY2Ugb2YgZGlzY3JpbWluYW50IGNoZWNraW5nCglmdW5jdGlvbnMgZm9yIGRlcml2ZWQgVW5jaGVja2VkX1VuaW9uIHR5cGVzIGJ5IGludHJvZHVjaW5nIGEgY29uZGl0aW9uLgoJQWxsb3cgdGhlIGNyZWF0aW9uIG9mIFRTUyBlcXVhbGl0eSBmdW5jdGlvbnMgZm9yIFVuY2hlY2tlZF9VbmlvbnMuCgkoTWFrZV9FcV9DYXNlKTogUmVuYW1lIGZvcm1hbCBwYXJhbWV0ZXIgTm9kZSB0byBFIGluIGZ1bmN0aW9uIHNpZ25hdHVyZS4KCUFkZCBmb3JtYWwgcGFyYW1ldGVyIERpc2NyIHRvIGZ1bmN0aW9uIHNpZ25hdHVyZS4gRGlzY3IgaXMgdXNlZCB0bwoJY29udHJvbCB0aGUgZ2VuZXJhdGVkIGNhc2Ugc3RhdGVtZW50IGZvciBVbmNoZWNrZWRfVW5pb24gdHlwZXMuCgkoTWFrZV9FcV9JZik6IFJlbmFtZSBmb3JtYWwgcGFyYW1ldGVyIE5vZGUgdG8gRSBpbiBmdW5jdGlvbiBzaWduYXR1cmUuCgoJKiBleHBfY2g0LmFkYiAoQnVpbGRfRXF1YWxpdHlfQ2FsbCk6IEltcGxlbWVudCBlcXVhbGl0eSBjYWxscyBmb3IKCVVuY2hlY2tlZF9VbmlvbnMuCglDaGVjayB0aGUgYm9keSBvZiB0aGUgc3VicHJvZ3JhbSBmb3IgZGV0YWlscy4KCShFeHBhbmRfQ29tcG9zaXRlX0VxdWFsaXR5KTogQXVnbWVudCBjb21wb3NpdGUgdHlwZSBlcXVhbGl0eSB0byBpbmNsdWRlCgljb3JyZWN0IGhhbmRsaW5nIG9mIFVuY2hlY2tlZF9VbmlvbiBjb21wb25lbnRzLgoJKEV4cGFuZF9OX0luKTogQWRkIGNvbmRpdGlvbiB0byBkZXRlY3QgaWxsZWdhbCBtZW1iZXJzaGlwIHRlc3RzIHdoZW4gdGhlCglzdWJ0eXBlIG1hcmsgaXMgYSBjb25zdHJhaW5lZCBVbmNoZWNrZWRfVW5pb24gYW5kIHRoZSBleHByZXNzaW9uIGxhY2tzCglpbmZlcmFibGUgZGlzY3JpbWluYW50cywgYW5kIGJ1aWxkIGEgUmFpc2VfUHJvZ3JhbV9FcnJvciBub2RlLgoJKEV4cGFuZF9OX09wX0VxKTogQWRkIGZ1bmN0aW9uIEhhc19VbmNvbnN0cmFpbmVkX1VVX0NvbXBvbmVudC4gVXNlZAoJdG8gZGV0ZWN0IHR5cGVzIHRoYXQgY29udGFpbiBjb21wb25lbnRzIG9mIHVuY29uc3RyYWluZWQgVW5jaGVja2VkX1VuaW9uCglzdWJ0eXBlLiBBZGQgY29uZGl0aW9uIHRvIGRldGVjdCBlcXVhbGl0eSBiZXR3ZWVuIHR5cGVzIHRoYXQgaGF2ZSBhbgoJdW5jb25zdHJhaW5lZCBVbmNoZWNrZWRfVW5pb24gY29tcG9uZW50LCBhbmQgYnVpbGQgYSBSYWlzZV9Qcm9ncmFtX0Vycm9yCglub2RlLiBBZGQgY29uZGl0aW9uIHRvIGRldGVjdCBlcXVhbGl0eSBiZXR3ZWVuIFVuY2hlY2tlZF9VbmlvbiB0eXBlcwoJdGhhdCBsYWNrIGluZmVyYWJsZSBkaXNjcmltaW5hbnRzLCBhbmQgYnVpbGQgYSBSYWlzZV9Qcm9ncmFtX0Vycm9yIG5vZGUuCglPdGhlcndpc2UgYnVpbGQgYSBUU1MgZXF1YWxpdHkgZnVuY3Rpb24gY2FsbC4KCShFeHBhbmRfTl9UeXBlX0NvbnZlcnNpb24pOiBBZGQgY29uZGl0aW9uIHRvIGRldGVjdCBpbGxlZ2FsIGNvbnZlcnNpb25zCglmcm9tIGEgZGVyaXZlZCBVbmNoZWNrZWRfVW5pb24gdG8gYW4gdW5jb25zdHJhaW5lZCBub24tVW5jaGVja2VkX1VuaW9uCgl3aXRoIHRoZSBvcGVyYW5kIGxhY2tpbmcgaW5mZXJhYmxlIGRpc2NyaW1pbmFudHMsIGFuZCBidWlsZCBhIFJhaXNlXwoJUHJvZ3JhbV9FcnJvciBub2RlLgoJKEV4cGFuZF9SZWNvcmRfRXF1YWxpdHkpOiBSZW1vdmUgZ3VhcmQgdGhhdCBwcmV2ZW50cyBVbmNoZWNrZWRfVW5pb24KCWNvbXBvc2l0ZSBlcXVhbGl0eS4KCShIYXNfSW5mZXJhYmxlX0Rpc2NyaW1pbmFudHMpOiBJbXBsZW1lbnQgbmV3IHByZWRpY2F0ZSBmb3Igb2JqZWN0cyBhbmQKCWV4cHJlc3Npb25zIG9mIFVuY2hlY2tlZF9VbmlvbiB0eXBlLiBDaGVjayB0aGUgYm9keSBvZiBzdWJwcm9ncmFtIGZvcgoJZGV0YWlscy4KCShIYXNfVW5jb25zdHJhaW5lZF9VVV9Db21wb25lbnRzKTogQWRkIGZ1bmN0aW9uCglDb21wb25lbnRfSXNfVW5jb25zdHJhaW5lZF9VVS4gSXQgaXMgdXNlZCB0byBkZXRlY3Qgd2hldGhlciBhIHNpbmdsZQoJY29tcG9uZW50IGlzIG9mIGFuIHVuY29uc3RyYWluZWQgVW5jaGVja2VkX1VuaW9uIHN1YnR5cGUuIEFkZCBmdW5jdGlvbgoJVmFyaWFudF9Jc19VbmNvbnN0cmFpbmVkX1VVLiBJdCBpcyB1c2VkIHRvIGRldGVjdCB3aGV0aGVyIGEgc2luZ2xlCgljb21wb25lbnQgaW5zaWRlIGEgdmFyaWFudCBpcyBvZiBhbiB1bmNvbnN0cmFpbmVkIFVuY2hlY2tlZF9VbmlvbiB0eXBlLgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9Bc3NpZ25fUmVjb3JkKTogQWRkIGNvbmRpdGlvbiB0byBjb3B5IHRoZQoJaW5mZXJyZWQgZGlzY3JpbWluYW50IHZhbHVlcy4gQWRkIGNvbmRpdGlvbiB0byBnZW5lcmF0ZSBhIGNhc2UKCXN0YXRlbWVudCB3aXRoIGFuIGluZmVycmVkIGRpc2NyaW1pbmFudCBhcyB0aGUgc3dpdGNoLgoJKE1ha2VfQ29tcG9uZW50X0xpc3RfQXNzaWduKTogSW50cm9kdWNlIGEgQm9vbGVhbiBmbGFnIHRoYXQgZGV0ZXJtaW5lcwoJdGhlIGJlaGF2aW91ciBvZiB0aGUgc3VicHJvZ3JhbSBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gVW5jaGVja2VkX1VuaW9uLgoJQWRkIGNvbmRpdGlvbiB0byB0cmlnZ2VyIHRoZSB1c2FnZSBvZiB0aGUgaW5mZXJyZWQgZGlzY3JpbWluYW50IHZhbHVlCglhcyB0aGUgZ2VuZXJhdGVkIGNhc2Ugc3RhdGVtZW50IHN3aXRjaC4KCShNYWtlX0ZpZWxkX0Fzc2lnbik6IEludHJvZHVjZSBhIEJvb2xlYW4gZmxhZyB0aGF0IGRldGVybWluZXMgdGhlCgliZWhhdmlvdXIgb2YgdGhlIHN1YnByb2dyYW0gaW4gdGhlIHByZXNlbmNlIG9mIGFuIFVuY2hlY2tlZF9Vbmlvbi4gQWRkCgljb25kaXRpb24gdG8gdHJpZ2dlciB0aGUgdXNhZ2Ugb2YgdGhlIGluZmVycmVkIGRpc2NyaW1pbmFudCB2YWx1ZSBhcwoJdGhlIHJpZ2h0LWhhbmQgc2lkZSBvZiB0aGUgZ2VuZXJhdGVkIGFzc2lnbm1lbnQuCgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0NhbGwpOiBBZGQgY29uZGl0aW9uIHRvIHNraXAgZXh0cmEgYWN0dWFsCglwYXJhbWV0ZXIgZ2VuZXJhdGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBVbmNoZWNrZWRfVW5pb25zLgoKCSogY2hlY2tzLmFkYiAoQXBwbHlfRGlzY3JpbWluYW50X0NoZWNrKTogRG8gbm90IGFwcGx5IGRpc2NyaW1pbmFudAoJY2hlY2tzIGZvciBVbmNoZWNrZWRfVW5pb25zLgoKCSogZWluZm8uYWRzOiBVcGRhdGUgY29tbWVudCBvbiB1c2FnZSBvZiBmbGFnIEhhc19QZXJfT2JqZWN0X0NvbnN0cmFpbnQKCgkqIGV4cF9hdHRyLmFkYiAoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSk6IFByb2R1Y2UKCVJhaXNlX1Byb2dyYW1fRXJyb3Igbm9kZXMgZm9yIHRoZSBleGVjdXRpb24gb2YgUmVhZCBhbmQgV3JpdGUKCWF0dHJpYnV0ZXMgb2YgVW5jaGVja2VkX1VuaW9uIHR5cGVzIGFuZCB0aGUgZXhlY3V0aW9uIG9mIElucHV0IGFuZAoJT3V0cHV0IGF0dHJpYnV0ZXMgb2YgVW5jaGVja2VkX1VuaW9uIHR5cGVzIHRoYXQgbGFjayBkZWZhdWx0CglkaXNjcmltaW5hbnQgdmFsdWVzLgoKCSogc2VtX3ByYWcuYWRiIChBbmFseXplX1ByYWdtYSk6IFJlbW9kZWwgdGhlIGFuYWx5c2lzIG9mIHByYWdtYQoJVW5jaGVja2VkX1VuaW9uLiBBZGQgcHJvY2VkdXJlIENoZWNrX0NvbXBvbmVudC4gSXQgaXMgdXNlZCB0byBpbnNwZWN0CglwZXItb2JqZWN0IGNvbnN0cmFpbmVkIGNvbXBvbmVudHMgb2YgVW5jaGVja2VkX1VuaW9ucyBmb3IgYmVpbmcKCVVuY2hlY2tlZF9VbmlvbnMgdGhlbXNlbHZlcy4gQWRkIHByb2NlZHVyZSBDaGVja19WYXJpYW50LiBJdCBpcyB1c2VkIHRvCgljaGVjayBpbmRpdmlkdWFsIGNvbXBvbmVudHMgd2l0aGluZyBhIHZhcmlhbnQuCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9Db21wYXJpc29uX09wKTogUmVtb3ZlIGd1YXJkIHRoYXQgcHJldmVudHMKCWNvbXBhcmlzb24gb2YgVW5jaGVja2VkX1VuaW9ucy4KCShSZXNvbHZlX0VxdWFsaXR5X09QKTogUmVtb3ZlIGd1YXJkIHRoYXQgcHJldmVudHMgZXF1YWxpdHkgYmV0d2VlbgoJVW5jaGVja2VkX1VuaW9ucy4KCgkqIHNlbV91dGlsLmFkYiAoQnVpbGRfQ29tcG9uZW50X1N1YnR5cGUpOiBBZGQgZ3VhcmQgdG8gcHJldmVudCBjcmVhdGlvbgoJb2YgY29tcG9uZW50IHN1YnR5cGVzIGZvciBVbmNoZWNrZWRfVW5pb24gY29tcG9uZW50cy4KCShHZXRfQWN0dWFsX1N1YnR5cGUpOiBBZGQgY29uZGl0aW9uIHRoYXQgcmV0dXJzIHRoZSBVbmNoZWNrZWRfVW5pb24gdHlwZQoJc2luY2UgaXQgaXMgdGhlIGFjdHVhbCBzdWJ0eXBlLgoKCSogc2VtX2NoMTIuYWRiIChJbnN0YW50aWF0ZV9UeXBlKTogQWRkIGNvbmRpdGlvbiB0byBkZXRlY3QgdGhlIGNvcnJlY3QKCXBhc3Mgb2YgVW5jaGVja2VkX1VuaW9uIHN1YnR5cGVzIGFzIGdlbmVyaWMgYWN0dWFscyB0byBmb3JtYWwgdHlwZXMKCXRoYXQgbGFjayBrbm93bl9kaXNjcmltaW5hbnRfcGFydHMgb3IgdGhhdCBhcmUgZGVyaXZlZCBVbmNoZWNrZWRfVW5pb24KCXR5cGVzLCBhbmQgZG8gbm90aGluZy4gSW4gYW55IG90aGVyIGNhc2UsIHByb2R1Y2UgYW4gZXJyb3IgbWVzc2FnZS4KCgkqIHNlbV9jaDMuYWRiIChBbmFseXplX0NvbXBvbmVudF9EZWNsYXJhdGlvbik6IEFkZCBmdW5jdGlvbgoJQ29udGFpbnNfUE9DLiBJdCBkZXRlcm1pbmVzIHdoZXRoZXIgYSBjb25zdHJhaW50IHVzZXMgdGhlIGRpc2NyaW1pbmFudAoJb2YgYW4gZW5jbG9zaW5nIHJlY29yZCB0eXBlLgoJQWRkIGNvbmRpdGlvbiB0byBkZXRlY3QgcGVyLW9iamVjdCBjb25zdHJhaW5lZCBjb21wb25lbnQgYW5kIHNldCB0aGUKCWFwcHJvcHJpYXRlIGZsYWcuCgkoRGVyaXZlZF9UeXBlX0RlY2xhcmF0aW9uKTogUmVtb3ZlIGd1YXJkIHRoYXQgcHJldmVudHMgZGVyaXZhdGlvbiBmcm9tCglVbmNoZWNrZWRfVW5pb24gdHlwZXMuCgkoUHJvY2Vzc19TdWJ0eXBlKTogUmVtb3ZlIHF1YXJkIHRoYXQgcHJldmVudHMgdGhlIGNyZWF0aW9uIG9mIFVuY2hlY2tlZF8KCVVuaW9uIHN1YnR5cGVzLgoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogQ29ycmVjdCB0aGUgZGV0ZWN0aW9uIG9mCglyZWZlcmVuY2VzIHRvIFVuY2hlY2tlZF9VbmlvbiBkaXNjcmltaW5hbnRzLgoKCSogc2VtX2NoNi5hZGIgKENyZWF0ZV9FeHRyYV9Gb3JtYWxzKTogQWRkIGNvbmRpdGlvbiB0byBza2lwIGV4dHJhCglmb3JtYWwgZ2VuZXJhdGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBVbmNoZWNrZWRfVW5pb25zLgoJKFNldF9BY3R1YWxfU3VidHlwZXMpOiBBZGQgY29uZGl0aW9uIHRvIHByZXZlbnQgZ2VuZXJhdGlvbiBvZiBhY3R1YWwKCXN1YnR5cGVzIGZvciBVbmNoZWNrZWRfVW5pb25zLgoKCSogc2VtX2NoNy5hZGIgKEFuYWx5emVfUGFja2FnZV9TcGVjaWZpY2F0aW9uKTogQWRkIHByb2NlZHVyZQoJSW5zcGVjdF9VbmNoZWNrZWRfVW5pb25fQ29tcGxldGlvbi4gSXQgaXMgdXNlZCB0byBkZXRlY3QgaW5jb3JyZWN0Cgljb21wbGV0aW9ucyBvZiBkaXNjcmltaW5hdGVkIHBhcnRpYWwgdmlld3MgYnkgVW5jaGVja2VkX1VuaW9ucyBhbmQKCXByb2R1Y2UgYW4gZXJyb3IgbWVzc2FnZS4KCjIwMDQtMDgtMDkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jIChzdHJ1Y3Qgc3RtdF9ncm91cCk6IE5ldyBmaWVsZCwgR0xPQkFMLgoJKGdsb2JhbF9zdG10X2dyb3VwLCBnbnVfZWxhYl9wcm9jX2RlY2wsIGJ1aWxkX3VuaXRfZWxhYik6IERlbGV0ZWQuCgkoc3RydWN0IGVsYWJfaW5mbyk6IE5ldyBzdHJ1Y3QuCgkoZWxhYl9pbmZvX2xpc3QsIGdudV9lbGFiX3Byb2Nfc3RhY2spOiBOZXcgdmFyaWFibGVzLgoJKENvbXBpbGF0aW9uX1VuaXRfdG9fZ251KTogTmV3IHByb2NlZHVyZS4KCShnaWdpKTogQ2FsbCBpdCBhbmQgYWxzbyBoYW5kbGUgZWxhYm9yYXRpb24gcHJvY3Mgd2UndmUgc2F2ZWQuCgkoZ25hdF9pbml0X3N0bXRfZ3JvdXApOiBEb24ndCBzZXQgZ2xvYmFsX3N0bXRfZ3JvdXA7IGluc3RlYWQgaW5pdGlhbGl6ZQoJZ2xvYmFsIGZpZWxkIGZyb20gcGFyZW50LgoJKGduYXRfdG9fZ251KTogR2V0IGRlY2wgZnJvbSBnbnVfZWxhYl9wcm9jX3N0YWNrLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fQ29tcGlsYXRpb25fVW5pdCk6IENhbGwgQ29tcGlsYXRpb25fVW5pdF90b19nbnUuCgkoc3RhcnRfc3RtdF9ncm91cCk6IEluaXRpYWxpemUgZ2xvYmFsIGZpZWxkIGZyb20gcGFyZW50LgoJKGFkZF9kZWNsX2V4cHIpOiBTZXQgdG8gZ2xvYmFsIGZvciBjdXJyZW50IHN0YXRlbWVudCBncm91cC4KCShnbmF0X2dpbXBsaWZ5X2V4cHIsIGNhc2UgTlVMTF9FWFBSKTogQWRkIG9wZXJhbmQgMCB0byBwcmUgbGlzdCwgbm90Cglwb3N0LgoKCSogdXRpbHMuYyAoZ2xvYmFsX2JpbmRpbmdzX3ApOiBUcnVlIHdoZW4gbm8gY3VycmVudF9mdW5jdGlvbl9kZWNsOyBubwoJbG9uZ2VyIGNoZWNrIGN1cnJlbnRfYmluZGluZ19sZXZlbC4KCjIwMDQtMDgtMDkgIEJlbiBCcm9zZ29sICA8YnJvc2dvbEBnbmF0LmNvbT4KCgkqIHhnbmF0dWduLmFkYjogQWRkZWQgbG9naWMgdG8gZGVhbCB3aXRoIEBpZnNldC9AaWZjbGVhciBmb3IgZWRpdGlvbgoJY2hvaWNlLgoKCSogZ25hdF9ybS50ZXhpLCBnbmF0X3Vnbi50ZXhpOiBBZGRlZCBlZGl0aW9uIGNvbmRpdGlvbmFsaXphdGlvbiBsb2dpYy4KCjIwMDQtMDgtMDYgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiB1dGlscy5jIChnbmF0X2RlZmluZV9idWlsdGluKTogUmVtb3ZlIHNlY29uZCBwYXJhbWV0ZXIgb2YKCW1ha2VfZGVjbF9ydGwuCgkoYmVnaW5fc3VicHJvZ19ib2R5KTogTGlrZXdpc2UuCgoyMDA0LTA3LTI2ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV91dGlsLmFkYiAoUmVxdWlyZXNfVHJhbnNpZW50X1Njb3BlKTogVGVtcG9yYXJpbHkgZGlzYWJsZQoJb3B0aW1pemF0aW9uLCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB0cmVlLXNzYSBiYWNrLWVuZC4KCjIwMDQtMDctMjYgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIHMtbWFzdG9wLWlyaXguYWRiOiBVcGRhdGUgY29tbWVudHMuCgoJKiBhLWV4Y2VwdC5hZGIgKEV4Y2VwdGlvbl9JbmZvcm1hdGlvbik6IFJhaXNlIENvbnN0cmFpbnRfRXJyb3IgaWYKCWV4Y2VwdGlvbiBJZCBpcyBOdWxsX0lkLgoJVGhpcyBpcyByZXF1aXJlZCBiZWhhdmlvciwgd2hpY2ggaXMgbW9yZSByZWxpYWJseSBhbmQgY2xlYXJseSBjaGVja2VkCglhdCB0aGUgdG9wIGxldmVsIGludGVyZmFjZSBsZXZlbC4KCjIwMDQtMDctMjYgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoQnVpbGRfQXJyYXlfQWdncl9Db2RlKTogRG8gbm90IGJ1aWxkIHRoZSBpbml0aWFsaXphdGlvbgoJY2FsbCBpZiBhIGNvbXBvbmVudCBoYXMgbm8gZGVmYXVsdF9leHByZXNzaW9uIGFuZCB0aGUgYm94IGlzIHVzZWQuCgoJKiBzZW1fYWdnci5hZGIgKFJlc29sdmVfQXJyYXlfQWdncmVnYXRlKTogSWYgYSBjb21wb25lbnQgaGFzIG5vCglkZWZhdWx0X2V4cHJlc3Npb24gYW5kIHlvdSB1c2UgYm94LCBpdCBiZWhhdmVzIGFzIGlmIHlvdSBoYWQgZGVjbGFyZWQgYQoJc3RhbmQtYWxvbmUgb2JqZWN0LgoJKFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZSk6IElmIGEgY29tcG9uZW50IGhhcyBubyBkZWZhdWx0X2V4cHJlc3Npb24gYW5kCgl5b3UgdXNlIGJveCwgaXQgYmVoYXZlcyBhcyBpZiB5b3UgaGFkIGRlY2xhcmVkIGEgc3RhbmQtYWxvbmUgb2JqZWN0LgoKCSogc2VtX2NoMTAuYWRiIChJbnN0YWxsX1NpYmxpbmdzKTogRG8gbm90IG1ha2UgdmlzaWJsZSB0aGUgcHJpdmF0ZQoJZW50aXRpZXMgb2YgcHJpdmF0ZS13aXRoIHNpYmxpbmdzLgoKMjAwNC0wNy0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX1VuZGVybHlpbmdfRnVsbF9WaWV3KTogSWYgdGhpcyBpcyB0aGUgZnVsbCB2aWV3Cglmb3IgYSBjb21wb25lbnQgb2YgYW4gaXR5cGUsIHNldCB0aGUgcGFyZW50IHBvaW50ZXIgZm9yIGFuYWx5c2lzLAoJdGhlcmUgaXMgbm8gbGlzdCBpbiB3aGljaCB0byBpbnNlcnQgaXQuCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZSk6IENhbGwgUmV3cml0ZV9SZW5hbWVkX09wZXJhdG9yIG9ubHkgZm9yCglib25hLWZpZGUgcmVuYW1pbmdzLCBub3QgZm9yIGluaGVyaXRlZCBvcGVyYXRpb25zLgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9BbGxvY2F0b3JfRXhwcmVzc2lvbik6IElmIHRoZSBhbGxvY2F0b3IgaXMgYW4KCWFjdHVhbCBmb3IgYSBmb3JtYWwgdGhhdCBpcyBhbiBhY2Nlc3MgcGFyYW1ldGVyLCBjcmVhdGUgbG9jYWwKCWZpbmFsaXphdGlvbiBsaXN0IGV2ZW4gaWYgdGhlIGV4cHJlc3Npb24gaXMgbm90IGFuIGFnZ3JlZ2F0ZS4KCjIwMDQtMDctMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTYyMTMKCSogc2VtX2NoOC5hZGIgKEF0dHJpYnV0ZV9SZW5hbWluZywgQ2hlY2tfTGlicmFyeV9MZXZlbF9SZW5hbWluZyk6CglEaWFnbm9zZSBwcm9wZXJseSBpbGxlZ2FsIHN1YnByb2dyYW0gcmVuYW1pbmdzIHRoYXQgYXJlIGxpYnJhcnkgdW5pdHMuCgoyMDA0LTA3LTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1NTg4CgkqIHNlbV91dGlsLmFkYiAoSXNfT0tfVmFyaWFibGVfRm9yX091dF9Gb3JtYWwpOiBJZiBhY3R1YWwgaXMgYSB0eXBlCgljb252ZXJzaW9uIHJld3JpdHRlbiBhcyBhbiB1bmNoZWNrZWQgY29udmVyc2lvbiwgY2hlY2sgdGhhdCBvcmlnaW5hbAoJZXhwcmVzc2lvbiBpcyBhIHZhcmlhYmxlLgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX1R5cGVfQ29udmVyc2lvbik6IElmIHJld3JpdGluZyBhcyBhbgoJdW5jaGVja2VkX2NvbnZlcnNpb24sIGNyZWF0ZSBuZXcgbm9kZSByYXRoZXIgdGhhbiByZXdyaXRpbmcgaW4gcGxhY2UsCgl0byBwcmVzZXJ2ZSBvcmlnaW5hbCBjb25zdHJ1Y3QuCgoyMDA0LTA3LTI2ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2lnaS5oIChnbmF0X2V4cGFuZF9ib2R5KTogRGVsZXRlZC4KCgkqIE1ha2UtbGFuZy5pbjogKHRyYW5zLm8pOiBEZXBlbmRzIG9uIGZ1bmN0aW9uLmguCgoJKiBtaXNjLmM6IChnbmF0X2V4cGFuZF9ib2R5KTogTW92ZWQgdG8gaGVyZS4KCgkqIHRyYW5zLmMgKGduYXRfZXhwYW5kX2JvZHlfMSk6IERlbGV0ZWQuCgkoZ25hdF9leHBhbmRfYm9keSk6IE1vdmVkIGZyb20gaGVyZS4KCShnbmF0X3RvX2dudSk6IE5fSW1wbGljaXRfTGFiZWxfRGVjbGFyYXRpb24gZm9yY2VzIGJlaW5nIGluIGVsYWIgcHJvYy4KCShhZGRfc3RtdCk6IENoZWNrIGZvciBtYXJrZWQgdmlzaXRlZCB3aXRoIGdsb2JhbF9iaW5kaW5nc19wLgoJKGduYXRfZ2ltcGxpZnlfZXhwciwgY2FzZSBDT01QT05FTlRfUkVGKTogTmV3IGNhc2UuCgkoZ25hdF9naW1wbGlmeV9leHByLCBjYXNlIE5VTExfRVhQUik6IFNldCBUUkVFX05PX1dBUk5JTkcgZm9yIHRlbXAuCgoJKiB1dGlsczIuYyAoYnVpbGRfYmluYXJ5X29wLCBjYXNlIE1PRElGWV9FWFBSKTogUHV0IExIUyBpbiBhCglWSUVXX0NPTlZFUlRfRVhQUiBpZiBub3Qgb3BlcmF0aW9uIHR5cGUuCgoJKiB1dGlscy5jICh1cGRhdGVfcG9pbnRlcl90byk6IFNldCBERUNMX09SSUdJTkFMX0ZJRUxEIGZvcgoJZmF0IHBvaW50ZXIuCgoJKiBkZWNsLmMsIGN1aW50cC5jLCBnaWdpLmgsIG1pc2MuYywgdHJhbnMuYywgdXRpbHMuYywgdXRpbHMyLmM6IE1pbm9yCgljaGFuZ2VzOiByZWZvcm1hdHRpbmcgb2YgbmVnYXRpb24gb3BlcmF0b3JzLCByZW1vdmluZyB1bm5lZWRlZAoJaW5lcXVhbGl0eSBjb21wYXJpc29uIHdpdGggemVybywgY29udmVydGluZyBlcXVhbGl0eSBjb21wYXJpc29ucyB3aXRoCgl6ZXJvIHRvIG5lZ2F0aW9ucywgY2hhbmdpbmcgaW50LzAvMSB0byBib29sL2ZhbHNlL3RydWUsIHJlcGxhY2UgY2FsbHMKCXRvIGdpZ2lfYWJvcnQgd2l0aCBhYm9ydCwgYW5kIHZhcmlvdXMgb3RoZXIgc2ltaWxhciBjaGFuZ2VzLgoKMjAwNC0wNy0yNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnbmF0Y21kLmFkYiAoR05BVENtZCk6IEFkZCBwcm9jZXNzaW5nIGZvciBuZXcgYnVpbHQtaW4gY29tbWFuZAoJInNldHVwIi4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IEZhaWwgd2hlbiBhIGxpYnJhcnkgaXMgbm90IHByZXNlbnQgYW5kIHRoZXJlIGlzCglubyBvYmplY3QgZGlyZWN0b3J5LgoKCSogbWxpYi1wcmouYWRiIChDaGVja19MaWJyYXJ5KTogTm8gbmVlZCB0byBjaGVjayBpZiB0aGUgbGlicmFyeSBuZWVkcwoJdG8gYmUgcmVidWlsdCBpZiB0aGVyZSBpcyBubyBvYmplY3QgZGlyZWN0b3J5LCBoZW5jZSBubyBvYmplY3QgZmlsZXMKCXRvIGJ1aWxkIHRoZSBsaWJyYXJ5LgoKCSogb3B0LmFkcyAoU2V0dXBfUHJvamVjdHMpOiBOZXcgQm9vbGVhbiBmbGFnLgoKCSogcHJqLW5tc2MuYWRiIChMb2NhdGVfRGlyZWN0b3J5KTogTmV3IHBhcmFtZXRlciBQcm9qZWN0LCBLaW5kIGFuZAoJTG9jYXRpb24uCglDcmVhdGUgZGlyZWN0b3J5IHdoZW4gS2luZCAvPSAiIiBhbmQgaW4gImduYXQgc2V0dXAiLiBSZXBvcnQgZXJyb3IgaWYKCWRpcmVjdG9yeSBjYW5ub3QgYmUgY3JlYXRlZC4KCShBZGFfQ2hlY2spOiBDcmVhdGUgbGlicmFyeSBpbnRlcmZhY2UgY29weSBkaXIgaWYgaXQgZG9lcyBub3QgZXhpc3QKCWFuZCB3ZSBhcmUgaW4gImduYXQgc2V0dXAiLgoJKEZpbmRfU291cmNlcyk6IE5vIGVycm9yIGlmIGluICJnbmF0IHNldHVwIiBhbmQgbm8gQWRhIHNvdXJjZXMgd2VyZQoJZm91bmQuCgkoTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2spOiBDcmVhdGUgb2JqZWN0IGRpcmVjdG9yeSwgZXhlYyBkaXJlY3RvcnkKCWFuZC9vciBsaWJyYXJ5IGRpcmVjdG9yeSBpZiB0aGV5IGRvIG5vdCBleGlzdCBhbmQgd2UgYXJlIGluCgkiZ25hdCBzZXR1cCIuCgoJKiB2bXNfY29udi5hZHM6IChDb21tYW5kX1R5cGUpOiBOZXcgY29tbWFuZCBTZXR1cC4KCgkqIHZtc19jb252LmFkYiAoSW5pdGlhbGl6ZSk6IEFkZCBTZXR1cCBjb21wb25lbnQgb2YgQ2FtbWFuZF9MaXN0LgoKCSogdm1zX2RhdGEuYWRzOiBBZGQgcXVhbGlmaWVycy9zd2l0Y2hlcyBmb3IgbmV3IGJ1aWx0LWluIGNvbW1hbmQKCSJzZXR1cCIuCgoyMDA0LTA3LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdXRpbHMuYyAoY3JlYXRlX3N1YnByb2dfZGVjbCk6IFNldCBERUNMX0FSVElGSUNJQUwgYW5kCglERUNMX0lHTk9SRURfUCBvbiBSRVNVTFRfREVDTC4KCjIwMDQtMDctMjAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGEtZWxjaGhhLmFkYiAoTGFzdF9DaGFuY2VfSGFuZGxlcik6IFJlbW92ZSB0aGUgYm9ndXMgYnVmZmVyIGR5bmFtaWMKCWFsbG9jYXRpb24gYW5kIHBvdGVudGlhbGx5IG92ZXJmbG93aW5nIHVwZGF0ZSB3aXRoCglUYWlsb3JlZF9FeGNlcHRpb25fSW5mb3JtYXRpb24uIFVzZSB0aGUgc2VjLXN0YWNrIGZyZWUgcHJvY2VkdXJhbAoJaW50ZXJmYWNlIHRvIG91dHB1dCBFeGNlcHRpb25fSW5mb3JtYXRpb24gaW5zdGVhZC4KCgkqIGEtZXhjZXB0LmFkYiAoVG9fU3RkZXJyKTogTmV3IHN1YnByb2dyYW0gZm9yIGNoYXJhY3RlciwgYW5kIHN0cmluZwoJdmVyc2lvbiBtb3ZlZCBmcm9tIGEtZXhleHRyIHRvIGJlIHZpc2libGUgZnJvbSBvdGhlciBzZXBhcmF0ZSB1bml0cy4KCShUYWlsb3JlZF9FeGNlcHRpb25fSW5mb3JtYXRpb24pOiBSZW1vdmUgdGhlIHByb2NlZHVyYWwgdmVyc2lvbiwKCXByZXZpb3VzbHkgdXNlZCBieSB0aGUgZGVmYXVsdCBMYXN0X0NoYW5jZV9IYW5kbGVyIGFuZCBub3QgYW55IG1vcmUuCglBZGp1c3QgdmFyaW91cyBjb21tZW50cy4KCgkqIGEtZXhleGRhLmFkYjogR2VuZXJhbGl6ZSB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIHByb2NlZHVyYWwKCWludGVyZmFjZSwgdG8gbWluaW1pemUgdGhlIHVzZSBvZiBzZWNvbmRhcnkgc3RhY2sgYW5kIHRoZSBuZWVkIGZvcgoJbG9jYWwgYnVmZmVycyB3aGVuIHRoZSBpbmZvIGlzIHRvIGJlIG91dHB1dCB0byBzdGRlcnI6CgkoQWRkcmVzc19JbWFnZSk6IFJlbW92ZWQuCgkoQXBwZW5kX0luZm9fQ2hhcmFjdGVyKTogTmV3IHN1YnByb2dyYW0sIGNoZWNraW5nIGZvciBvdmVyZmxvd3MgYW5kCglvdXRwdXRpbmcgdG8gc3RkZXJyIGlmIGJ1ZmZlciB0byBmaWxsIGlzIG9mIGxlbmd0aCAwLgoJKEFwcGVuZF9JbmZvX1N0cmluZyk6IE91dHB1dCB0byBzdGRlcnIgaWYgYnVmZmVyIHRvIGZpbGwgaXMgb2YgbGVuZ3RoIDAuCgkoQXBwZW5kX0luZm9fQWRkcmVzcywgQXBwZW5kX0luZm9fRXhjZXB0aW9uX05hbWUsCglBcHBlbmRfSW5mb19FeGNlcHRpb25fTWVzc2FnZSwgQXBwZW5kX0luZm9fQmFzaWNfRXhjZXB0aW9uX0luZm9ybWF0aW9uLAoJQXBwZW5kX0luZm9fQmFzaWNfRXhjZXB0aW9uX1RyYWNlYmFjaywKCUFwcGVuZF9JbmZvX0V4Y2VwdGlvbl9JbmZvcm1hdGlvbik6IE5ldyBzdWJwcm9ncmFtcy4KCShBcHBlbmRfSW5mb19OYXQsIEFwcGVuZF9JbmZvX05MKTogVXNlIEFwcGVuZF9JbmZvX0NoYXJhY3Rlci4KCShCYXNpY19FeGNlcHRpb25fSW5mb19NYXhsZW5ndGgsIEJhc2ljX0V4Y2VwdGlvbl9UYmFja19NYXhsZW5ndGgsCglFeGNlcHRpb25fSW5mb19NYXhsZW5ndGgsIEV4Y2VwdGlvbl9OYW1lX0xlbmd0aCwKCUV4Y2VwdGlvbl9NZXNzYWdlX0xlbmd0aCk6IE5ldyBzdWJwcm9ncmFtcy4KCShFeGNlcHRpb25fSW5mb3JtYXRpb24pOiBVc2UgQXBwZW5kX0luZm9fRXhjZXB0aW9uX0luZm9ybWF0aW9uLgoJKFRhaWxvcmVkX0V4Y2VwdGlvbl9JbmZvcm1hdGlvbik6IFVzZQoJQXBwZW5kX0luZm9fQmFzaWNfRXhjZXB0aW9uX0luZm9ybWF0aW9uLgoJRXhwb3J0IHNlcnZpY2VzIGZvciB0aGUgZGVmYXVsdCBMYXN0X0NoYW5jZV9IYW5kbGVyLgoKCSogYS1leGV4dHIuYWRiIChUb19TdGRlcnIpOiBSZW1vdmUuIE5vdyBpbiBhLWV4Y2VwdCB0byBiZSB1c2FibGUgYnkKCW90aGVyIHNlcGFyYXRlIHVuaXRzLgoKMjAwNC0wNy0yMCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBjbGVhbi5hZGIsIG1saWItdXRsLmFkYiwgb3NpbnQuYWRiLCBtYWtlZ3ByLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNC0wNy0yMCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZnJlZXplLmFkYiAoRnJlZXplX0VudGl0eSk6IElmIGVudGl0eSBpcyBhIGRpc2NyaW1pbmF0ZWQgcmVjb3JkIHR5cGUsCgllbWl0IGl0eXBlIHJlZmVyZW5jZXMgZm9yIHRoZSBkZXNpZ25hdGVkIHR5cGVzIG9mIGNvbXBvbmVudCB0eXBlcyB0aGF0CglhcmUgZGVjbGFyZWQgb3V0c2lkZSBvZiB0aGUgZnVsbCByZWNvcmQgZGVjbGFyYXRpb24sIGFuZCB0aGF0IG1heQoJZGVub3RlIGEgcGFydGlhbCB2aWV3IG9mIHRoYXQgcmVjb3JkIHR5cGUuCgoyMDA0LTA3LTIwICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1NjA3CgkqIHNlbV9jaDMuYWRiIChCdWlsZF9EaXNjcmltaW5hdGVkX1N1YnR5cGUpOiBEbyBub3QgYXR0YWNoIGEgc3VidHlwZQoJd2hpY2ggaXMgdGhlIGRlc2lnbmF0ZWQgdHlwZSBpbiBhbiBhY2Nlc3MgY29tcG9uZW50IGRlY2xhcmF0aW9uLCB0byB0aGUKCWxpc3Qgb2YgaW5jb21wbGV0ZSBkZXBlbmRlbnRzIG9mIHRoZSBwYXJlbnQgdHlwZSwgdG8gYXZvaWQgZWxhYm9yYXRpb24KCWlzc3VlcyB3aXRoIG91dC1vZi1zY29wZSBzdWJ0eXBlcy4KCShDb21wbGV0ZV9Qcml2YXRlX1N1YnR5cGUpOiBSZWNvbXB1dGUgSGFzX1Vua25vd25fRGlzY3JpbWluYW50cyBmcm9tIHRoZQoJZnVsbCB2aWV3IG9mIHRoZSBwYXJlbnQuCgoyMDA0LTA3LTIwICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1NjEwCgkqIHNlbV9jaDguYWRiIChGaW5kX0V4cGFuZGVkX05hbWUpOiBJZiBuYW1lIGlzIG92ZXJsb2FkZWQsIHJlamVjdAoJZW50aXRpZXMgdGhhdCBhcmUgaGlkZGVuLCBzdWNoIGFzIHJlZmVyZW5jZXMgdG8gZ2VuZXJpYyBhY3R1YWxzCglvdXRzaWRlIGFuIGluc3RhbmNlLgoKMjAwNC0wNy0yMCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKFRyeV9PYmplY3RfT3BlcmF0aW9uKTogTmV3IHN1YnByb2dyYW0gdGhhdCBnaXZlcwoJc3VwcG9ydCB0byB0aGUgbmV3IG5vdGF0aW9uLgoJKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogQWRkIGNhbGwgdG8gVHJ5X09iamVjdF9PcGVyYXRpb24uCgoyMDA0LTA3LTIwICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBzLXRhcHJvYi5hZGI6IEFkZGluZyB0aGUgZWxhYm9yYXRpb24gY29kZSByZXF1aXJlZCBmb3IgaW5pdGlhbGl6aW5nCgl0aGUgdGFza2luZyBzb2Z0IGxpbmtzIHRoYXQgYXJlIGNvbW1vbiB0byB0aGUgZnVsbCBhbmQgdGhlIHJlc3RyaWN0ZWQKCXJ1biB0aW1lcy4KCgkqIHMtdGFyZXN0LmFkYiAoSW5pdF9SVFMpOiBUYXNraW5nIHNvZnQgbGlua3MgdGhhdCBhcmUgc2hhcmVkIHdpdGggdGhlCglyZXN0cmljdGVkIHJ1biB0aW1lIGhhcyBiZWVuIG1vdmVkIHRvIHRoZSBwYWNrYWdlCglTeXN0ZW0uU29mdF9MaW5rcy5UYXNraW5nLgoKCSogcy10YXNpbmkuYWRiIChJbml0X1JUUyk6IFRhc2tpbmcgc29mdCBsaW5rcyB0aGF0IGFyZSBzaGFyZWQgd2l0aCB0aGUKCXJlc3RyaWN0ZWQgcnVuIHRpbWUgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIHBhY2thZ2UKCVN5c3RlbS5Tb2Z0X0xpbmtzLlRhc2tpbmcuCgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBlbnRyeSBmb3Igcy1zb2xpdGEubyBpbiBydW4tdGltZSBsaWJyYXJ5IGxpc3QuCgoJKiBzLXNvbGl0YS5hZHMsIHMtc29saXRhLmFkYjogTmV3IGZpbGVzLgoKMjAwNC0wNy0yMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyYW5zLmMgKElkZW50aWZpZXJfdG9fZ251LCBQcmFnbWFfdG9fZ251LCBBdHRyaWJ1dGVfdG9fZ251LAoJQ2FzZV9TdGF0ZW1lbnRfdG9fZ251KTogU3BsaXQgb2ZmIGZyb20gZ25hdF90b19nbnUuCgkoTG9vcF9TdGF0ZW1lbnRfdG9fZ251LCBTdWJwcm9ncmFtX0JvZHlfdG9fZ251LCBjYWxsX3RvX2dudSwKCUhhbmRsZWRfU2VxdWVuY2VfT2ZfU3RhdGVtZW50c190b19nbnUsIEV4Y2VwdGlvbl9IYW5kbGVyX3RvX2dudV9zamxqLAoJRXhjZXB0aW9uX0hhbmRsZXJfdG9fZ251X3pjeCk6IExpa2V3aXNlLgoKMjAwNC0wNy0xNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnaWdpLmggKGJ1aWx0aW5fZnVuY3Rpb24pOiBEZWNsYXJlLgoKMjAwNC0wNy0xNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBtYWtlZ3ByLmFkYiwgcy1zZWNzdGEuYWRzLCBzZW1fY2gzLmFkYiwgc2VtX2Nhc2UuYWRiOiBNaW5vcgoJcmVmb3JtYXR0aW5nCgoJKiBnbmF0X3Vnbi50ZXhpOiBBZGQgaW5zdGFudGlhdGlvbiBvZiBkaXJlY3RfaW8gb3Igc2VxdWVudGlhbF9pbyB3aXRoCglhY2Nlc3MgdmFsdWVzIGFzIGFuIGV4YW1wbGUgb2YgYSB3YXJuaW5nLgoKCSogZ25hdF9ybS50ZXhpOiBEb2N1bWVudCBuZXcgYXR0cmlidXRlIEhhc19BY2Nlc3NfVmFsdWVzCgoJKiBnbmF0LXN0eWxlLnRleGk6IERvY3VtZW50IHRoYXQgYm94IGNvbW1lbnRzIGJlbG9uZyBvbiBuZXN0ZWQKCXN1YnByb2dyYW1zCgoJKiBzZW1fdXRpbC5hZHMgKEhhc19BY2Nlc3NfVmFsdWVzKTogSW1wcm92ZWQgZG9jdW1lbnRhdGlvbgoKCSogcy1maW5pbXAuYWRzLCBzLWZpbmltcC5hZGI6IEZpeCBzcGVsbGluZyBlcnJvciBpbiBjb21tZW50CgoJKiBzZW1fcHJhZy5hZGIgKENoZWNrX0R1cGxpY2F0ZWRfRXhwb3J0X05hbWUpOiBOZXcgcHJvY2VkdXJlCgkoUHJvY2Vzc19JbnRlcmZhY2VfTmFtZSk6IENhbGwgdG8gdGhpcyBuZXcgcHJvY2VkdXJlCgkoU2V0X0V4dGVuZGVkX0ltcG9ydF9FeHBvcnRfRXh0ZXJuYWxfTmFtZSk6IENhbGwgdG8gdGhpcyBuZXcgcHJvY2VkdXJlCgoJKiBzLW1hc3RvcC14ODYuYWRiLCA5ZHJwYy5hZGI6IEZpeCBzcGVsbGluZyBlcnJvciBpbiBjb21tZW50CgoJKiBhLWRpcmVpby5hZHMsIGEtc2VxdWlvLmFkczogV2FybiBpZiBFbGVtZW50X1R5cGUgaGFzIGFjY2VzcyB2YWx1ZXMKCgkqIGVpbmZvLmFkczogTWlub3IgY29tbWVudCB0eXBvIGZpeGVkCgoyMDA0LTA3LTE1ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBzbmFtZXMuYWRiOiBBZGQgX2F0Y2IuCgoJKiBzbmFtZXMuYWRzOiBBZGQgTmFtZV91QVRDQi4KCgkqIHMtdGFyZXN0LmFkYiAoQ3JlYXRlX1Jlc3RyaWN0ZWRfVGFzayk6IEFUQ0JzIGFyZSBhbHdheXMgcHJlYWxsb2NhdGVkCgkoaW4gdGhlIGV4cGFuZGVkIGNvZGUpIHdoZW4gdXNpbmcgdGhlIHJlc3RyaWN0ZWQgcnVuIHRpbWUuCgoJKiBzLXRhcmVzdC5hZHMgKENyZWF0ZV9SZXN0cmljdGVkX1Rhc2spOiBDcmVhdGVkX1Rhc2sgdHJhbnNmb3JtZWQgaW50bwoJYSBpbiBwYXJhbWV0ZXIgaW4gb3JkZXIgdG8gYWxsb3cgQVRDQnMgdG8gYmUgcHJlYWxsb2NhdGVkIChpbiB0aGUKCWV4cGFuZGVkIGNvZGUpLgoKCSogcy10YXNraW4uYWRiIChJbml0aWFsaXplX0FUQ0IpOiBUIGNvbnZlcnRlZCBpbnRvIGEgaW4gcGFyYW1ldGVyIGluCglvcmRlciB0byBhbGxvdyBBVENCcyB0byBiZSBwcmVhbGxvY2F0ZWQuIEluIGNhc2Ugb2YgZXJyb3IsIHRoZSBBVENCIGlzCglkZWFsbG9jYXRlZCBpbiBTeXN0ZW0uVGFza2luZy5TdGFnZXMuCgoJKiBzLXRhc2tpbi5hZHMgKEluaXRpYWxpemVfQVRDQik6IFQgY29udmVydGVkIGludG8gYSBpbiBwYXJhbWV0ZXIgaW4KCW9yZGVyIHRvIGFsbG93IEFUQ0JzIHRvIGJlIHByZWFsbG9jYXRlZC4KCgkqIHMtdGFzc3RhLmFkYiAoQ3JlYXRlX1Rhc2spOiBJbiBjYXNlIG9mIGVycm9yIHRoZSBBVENCIGlzIGRlYWxsb2NhdGVkCgloZXJlLiBJdCB3YXMgcHJldmlvdXNseSBkb25lIGluIEluaXRpYWxpemVfQVRDQi4KCgkqIHJ0c2ZpbmQuYWRzOiBNYWtlIHRoZSBBZGFfVGFza19Db250cm9sX0Jsb2NrIHZpc2libGUuCgoJKiBleHBfY2g5LmFkYjogUHJlYWxsb2NhdGUgdGhlIEFkYV9UYXNrX0NvbnRyb2xfQmxvY2sgd2hlbiB1c2luZyB0aGUKCVJlc3RyaWN0ZWQgcnVuIHRpbWUuCgoJKiBleHBfY2gzLmFkYjogV2hlbiB1c2luZyB0aGUgUmVzdHJpY3RlZCBydW4gdGltZSwgcGFzcyB0aGUKCXByZWFsbG9jYXRlZCBBZGFfVGFza19Db250cm9sX0Jsb2NrIHdoZW4gY3JlYXRpbmcgYSB0YXNrLgoKMjAwNC0wNy0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX3V0aWwuYWRiIChOb3JtYWxpemVfQWN0dWFscyk6IElmIHRoZXJlIGFyZSBubyBhY3R1YWxzIG9uIGEKCWZ1bmN0aW9uIGNhbGwgdGhhdCBpcyBpdHNlbGYgYW4gYWN0dWFsIGluIGFuIGVuY2xvc2luZyBjYWxsLCBkaWFnbm9zZQoJcHJvYmxlbSBoZXJlIHJhdGhlciB0aGFuIGFzc3VtaW5nIHRoYXQgcmVzb2x1dGlvbiB3aWxsIGNhdGNoIGl0LgoKCSogc2VtX2NoNy5hZGIgKEFuYWx5emVfUGFja2FnZV9TcGVjaWZpY2F0aW9uKTogSWYgdGhlIHNwZWNpZmljYXRpb24gaXMKCXRoZSBsb2NhbCBjb3B5IG9mIGEgZ2VuZXJpYyB1bml0IGZvciBhIGZvcm1hbCBwYWNrYWdlLCBhbmQgdGhlIGdlbmVyaWMKCWlzIGEgY2hpbGQgdW5pdCwgaW5zdGFsbCBwcml2YXRlIHBhcnQgb2YgYW5jZXN0b3JzIGJlZm9yZSBjb21waWxpbmcKCXByaXZhdGUgcGFydCBvZiBzcGVjLgoKCSogc2VtX2NhdC5hZGIgKFZhbGlkYXRlX0NhdGVnb3JpemF0aW9uX0RlcGVuZGVuY3kpOiBTaW1wbGlmeSBjb2RlIHRvCgl1c2Ugc2NvcGUgZW50aXRpZXMgcmF0aGVyIHRoYW4gdHJlZSBzdHJ1Y3R1cmVzLCB0byBoYW5kbGUgcHJvcGVybHkKCXBhcmVudCB1bml0cyB0aGF0IGFyZSBpbnN0YW5jZXMgcmV3cml0dGVuIGFzIGJvZGllcyBmb3IgaW5saW5pbmcKCXB1cnBvc2VzLgoKCSogc2VtX2NoMTAuYWRiIChHZXRfUGFyZW50X0VudGl0eSwgSW1wbGljaXRfV2l0aF9Pbl9QYXJlbnQsCglSZW1vdmVfUGFyZW50cyk6IEhhbmRsZSBwcm9wZXJseSBhIHBhcmVudCB1bml0IHRoYXQgaXMgYW4KCWluc3RhbnRpYXRpb24sIHdoZW4gdGhlIHVuaXQgaGFzIGJlZW4gcmV3cml0dGVuIGFzIGEgYm9keSBmb3IgaW5saW5pbmcKCXB1cnBvc2VzLgoKCSogcGFyLmFkYiAoR290b19MaXN0KTogR2xvYmFsIHZhcmlhYmxlIHRvIGNvbGxlY3QgZ290byBzdGF0ZW1lbnRzIGluIGEKCWdpdmVuIHVuaXQsIGZvciB1c2UgaW4gZGV0ZWN0aW5nIG5hdHVyYWwgbG9vcHMuCgoJKiBwYXItY2g1LmFkYiAoUF9Hb3RvX1N0YXRlbWVudCk6IEFkZCBnb3RvIHRvIGdsb2JhbCBHb3RvX0xpc3QsIGZvcgoJdXNlIGluIGRldGVjdGluZyBuYXR1cmFsIGxvb3BzLgoKCSogcGFyLWxhYmwuYWRiIChGaW5kX05hdHVyYWxfTG9vcHMpOiBSZWNvZ25pemUgbG9vcHMgY3JlYXRlIGJ5CgliYWNrd2FyZHMgZ290bydzLCBhbmQgcmV3cml0ZSBhcyBhIGluZmluaXRlIGxvb3AsIHRvIGltcHJvdmUgbG9jYWxpdHkKCW9mIHRlbXBvcmFyaWVzLgoKCSogZXhwX3V0aWwuYWRiIChGb3JjZV9FdmFsdWF0aW9uKTogUmVjb2duaXplIGEgbGVmdC1oYW5kIHNpZGUKCXN1YmNvbXBvbmVudCB0aGF0IGluY2x1ZGVzIGFuIGluZGV4ZWQgcmVmZXJlbmNlLCB0byBwcmV2ZW50IHRoZQoJZ2VuZXJhdGlvbiBvZiBjb3BpZXMgdGhhdCB3b3VsZCBtaXNjb21waWxlIHRoZSBkZXNpcmVkIGFzc2lnbm1lbnQKCXN0YXRlbWVudC4KCShCdWlsZF9UYXNrX0ltYWdlX0RlY2xzKTogQWRkIGEgbnVtZXJpYyBzdWZmaXggdG8KCWdlbmVyYXRlZCBuYW1lIGZvciBzdHJpbmcgdmFyaWFibGUsIHRvIGF2b2lkIHNwdXJpb3VzIGNvbmZsaWN0cyB3aXRoCgl0aGUgbmFtZSBvZiB0aGUgdHlwZSBvZiBhIHNpbmdsZSBwcm90ZWN0ZWQgb2JqZWN0LgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9BcnJheV9FcXVhbGl0eSk6IElmIGluZGljZXMgYXJlIGRpc3RpbmN0LCB1c2UgYQoJbG9vcCB3aXRoIGFuIGV4cGxpY2l0IGV4aXQgc3RhdGVtZW50LCB0byBhdm9pZCBnZW5lcmF0aW5nIGFuCglvdXQtb2YtcmFuZ2UgdmFsdWUgd2l0aCAnU3VjYyBsZWFkaW5nIHRvIHNwdXJpb3VzIGNvbnN0cmFpbnRfZXJyb3JzCgl3aGVuIGNvbXBpbGluZyB3aXRoIC1nbmF0Vm8uCgoyMDA0LTA3LTE1ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9TbGljZSk6IEFsd2F5cyBjYWxsIEFuYWx5emUgb24gdGhlIHByZWZpeDogaXQKCW1pZ2h0IG5vdCBiZSBhbmFseXplZCB5ZXQsIGV2ZW4gaWYgaXRzIEV0eXBlIGlzIGFscmVhZHkgc2V0IChjYXNlIG9mIGFuCgl1bmNoZWNrZWQgY29udmVyc2lvbiBidWlsdCB1c2luZyBVbmNoZWNrZWRfQ29udmVydF9UbywgZm9yIGV4YW1wbGUpLgoJSWYgdGhlIHByZWZpeCBoYXMgYWxyZWFkeSBiZWVuIGFuYWx5emVkLCB0aGlzIHdpbGwgYmUgYSBub3AgYW55d2F5LgoKCSogZXhwX2NoNS5hZGIgKE1ha2VfVGFnX0N0cmxfQXNzaWdubWVudCk6IEZvciBhbiBhc3NpZ25tZW50IG9mIGEKCWNvbnRyb2xsZXIgdHlwZSwgb3IgYW4gYXNzaWdubWVudCBvZiBhIHJlY29yZCB0eXBlIHdpdGggY29udHJvbGxlZAoJY29tcG9uZW50cywgY29weSBvbmx5IHVzZXIgZGF0YSwgYW5kIGxlYXZlIHRoZSBmaW5hbGl6YXRpb24gY2hhaW4KCXBvaW50ZXJzIHVudG91Y2hlZC4KCjIwMDQtMDctMTUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZS5hZGIgKENvbGxlY3RfQXJndW1lbnRzKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gYXR0ZW1wdGluZwoJdG8gY29tcGlsZSBhIHNvdXJjZSBub3QgcGFydCBvZiBhbnkgcHJvamVjdCwgd2hlbiAteCBpcyBub3QgdXNlZC4KCgkqIHByai5hZHM6IChEZWZpbmVkX1ZhcmlhYmxlX0tpbmQpOiBOZXcgc3VidHlwZQoKCSogcHJqLWF0dHIuYWRiIChSZWdpc3Rlcl9OZXdfUGFja2FnZSk6IFR3byBuZXcgcHJvY2VkdXJlcyB0byByZWdpc3RlcgoJYSBwYWNrYWdlIHdpdGggb3Igd2l0aG91dCBpdHMgYXR0cmlidXRlcy4KCShSZWdpc3Rlcl9OZXdfQXR0cmlidXRlKTogTWV3IHByb2NlZHVyZSB0byByZWdpc3RlciBhIG5ldyBhdHRyaWJ1dGUgaW4gYQoJcGFja2FnZS4KCU5ldyBhdHRyaWJ1dGUgb3JpZW50ZWQgc3VicHJvZ3JhbXM6IEF0dHJpYnV0ZV9Ob2RlX0lkX09mLAoJQXR0cmlidXRlX0tpbmRfT2YsIFNldF9BdHRyaWJ1dGVfS2luZF9PZiwgQXR0cmlidXRlX05hbWVfT2YsCglWYXJpYWJsZV9LaW5kX09mLCBTZXRfVmFyaWFibGVfS2luZF9PZiwgT3B0aW9uYWxfSW5kZXhfT2YsCglOZXh0X0F0dHJpYnV0ZS4KCU5ldyBwYWNrYWdlIG9yaWVudGVkIHN1YnByb2dyYW1zOiBQYWNrYWdlX05vZGVfSWRfT2YsCglBZGRfVW5rbm93bl9QYWNrYWdlLCBGaXJzdF9BdHRyaWJ1dGVfT2YsIEFkZF9BdHRyaWJ1dGUuCgoJKiBwcmotYXR0ci5hZHMgKEF0dHJpYnV0ZV9Ob2RlX0lkKTogTm93IGEgcHJpdmF0ZSwgc2VsZiBpbml0aWFsaXplZAoJdHlwZS4KCShQYWNrYWdlX05vZGVfSWQpOiBOb3cgYSBwcml2YXRlLCBzZWxmIGluaXRpYWxpemVkIHR5cGUKCShSZWdpc3Rlcl9OZXdfUGFja2FnZSk6IE5ldyBwcm9jZWR1cmUgdG8gcmVnaXN0ZXIgYSBwYWNrYWdlIHdpdGggaXRzCglhdHRyaWJ1dGVzLgoJTmV3IGF0dHJpYnV0ZSBvcmllbnRlZCBzdWJwcm9ncmFtczogQXR0cmlidXRlX05vZGVfSWRfT2YsCglBdHRyaWJ1dGVfS2luZF9PZiwgU2V0X0F0dHJpYnV0ZV9LaW5kX09mLCBBdHRyaWJ1dGVfTmFtZV9PZiwKCVZhcmlhYmxlX0tpbmRfT2YsIFNldF9WYXJpYWJsZV9LaW5kX09mLCBPcHRpb25hbF9JbmRleF9PZiwKCU5leHRfQXR0cmlidXRlLgoJTmV3IHBhY2thZ2Ugb3JpZW50ZWQgc3VicHJvZ3JhbXM6IFBhY2thZ2VfTm9kZV9JZF9PZiwKCUFkZF9Vbmtub3duX1BhY2thZ2UsIEZpcnN0X0F0dHJpYnV0ZV9PZiwgQWRkX0F0dHJpYnV0ZS4KCgkqIHByai1kZWN0LmFkYiAoUGFyc2VfQXR0cmlidXRlX0RlY2xhcmF0aW9uLAoJUGFyc2VfUGFja2FnZV9EZWNsYXJhdGlvbik6IEFkYXB0IHRvIG5ldyBzcGVjIG9mIFByai5BdHRyLgoKCSogcHJqLW1ha3IuYWRiIChNYWtlKTogUGFyc2UgZXhpc3RpbmcgcHJvamVjdCBmaWxlIGJlZm9yZSBjcmVhdGluZwoJb3RoZXIgZmlsZXMuIEZhaWwgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyBwYXJzaW5nLgoKCSogcHJqLXByb2MuYWRiIChBZGRfQXR0cmlidXRlcywgUHJvY2Vzc19EZWNsYXJhdGl2ZV9JdGVtcyk6IEFkYXB0IHRvCgluZXcgc3BlYyBvZiBQcmouQXR0ci4KCgkqIHByai1zdHJ0LmFkYiAoQXR0cmlidXRlX1JlZmVyZW5jZSwgUGFyc2VfVmFyaWFibGVfUmVmZXJlbmNlKTogQWRhcHQKCXRvIG5ldyBzcGVjIG9mIFByai5BdHRyLgoKMjAwNC0wNy0xNSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHV0aWxzMi5jOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwNC0wNy0xNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyYW5zLmMgKGFkZF9kZWNsX2V4cHIpOiBDbGVhciBUUkVFX1JFQURPTkxZIGlmIGNsZWFyIERFQ0xfSU5JVElBTC4KCSogdXRpbHMuYyAodW5jaGVja2VkX2NvbnZlcnQpOiBEb24ndCBkbyB0d28gVklFV19DT05WRVJUX0VYUFJzLgoKMjAwNC0wNy0xNCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIHRyYW5zLmMgKGduYXRfaW5pdF9zdG10X2dyb3VwKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uLgoKMjAwNC0wNy0xMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYzogKGduYXRfdG9fZ251X2VudGl0eSwgb2JqZWN0IGNhc2UpOiBDb252ZXJ0IGluaXRpYWxpemVyIHRvCglvYmplY3QgdHlwZS4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9SZWNvcmRfU3VidHlwZSk6IFByb3Blcmx5IHNldAoJVFlQRV9TVFVCX0RFQ0wuCgoJKiBtaXNjLmMgKGduYXRfdHlwZXNfY29tcGF0aWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKExBTkdfSE9PS1NfVFlQRVNfQ09NUEFUSUJMRV9QKTogTmV3IGhvb2ssIHRvIHVzZSBpdC4KCShMQU5HX0hPT0tTX1RZUEVfTUFYX1NJWkUsIGduYXRfdHlwZV9tYXhfc2l6ZSk6IE5ldy4KCgkqIHRyYW5zLmMgKGdpZ2kpOiBNb3ZlIHByb2Nlc3Npbmcgb2YgbWFpbiBOX0NvbXBpbGF0aW9uX1VuaXQgaGVyZS4KCShnbmF0X3RvX2dudSwgY2FzZSBOX0NvbXBpbGF0aW9uX1VuaXQpOiBKdXN0IGhhbmRsZSBuZXN0ZWQgY2FzZSBoZXJlLgoJKGFkZF9zdG10KTogRm9yY2Ugd2Fsa2luZyBvZiBzaXplcyBhbmQgREVDTF9JTklUSUFMIGZvciBERUNMX0VYUFIuCgkobWFya192aXNpdGVkKTogRG9uJ3QgbWFyayBkdW1teSB0eXBlLgoJKHRyZWVfdHJhbnNmb3JtIDxOX1Byb2NlZHVyZV9DYWxsX1N0YXRlbWVudD4pOiBVbmxlc3MgdGhpcyBpcyBhbiBJbgoJcGFyYW1ldGVyLCB3ZSBtdXN0IHJlbW92ZSBhbnkgTEpNIGJ1aWxkaW5nIGZyb20gR05VX05BTUUuCgkoZ25hdF90b19nbnUsIGNhc2UgTl9TdHJpbmdfTGl0ZXJhbCk6IEZpbGwgaW4gaW5kaWNlcyBpbiBDT05TVFJVQ1RPUi4KCShwb3NfdG9fY29uc3RydWN0b3IpOiBVc2UgaW50X2NvbnN0X2Jpbm9wLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fSWRlbnRpZmllcik6IERvbid0IHJlZmVyZW5jZSBERUNMX0lOSVRJQUwgb2YKCVBBUk1fREVDTC4KCgkqIHV0aWxzLmMgKGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBtYWtlIHR3byAidm9pZCIgZGVjbHMuCgkoZ25hdF9wdXNobGV2ZWwpOiBTZXQgVFJFRV9VU0Ugb24gQkxPQ0sgbm9kZS4KCShnbmF0X2luc3RhbGxfYnVpbHRpbnMpOiBBZGQgX19idWlsdGluX21lbXNldC4KCjIwMDQtMDctMTMgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5IDxFX1ZhcmlhYmxlPik6IElmIHdlIGFyZSBtYWtpbmcgYSBwb2ludGVyCglmb3IgYSByZW5hbWluZywgc3RhYmlsaXplIHRoZSBpbml0aWFsaXphdGlvbiBleHByZXNzaW9uIGlmIHdlIGFyZSBhdCBhCglsb2NhbCBsZXZlbC4gIEF0IHRoZSBsb2NhbCBsZXZlbCwgdXNlcyBvZiB0aGUgcmVuYW1pbmcgbWF5IGJlIHBlcmZvcm1lZAoJYnkgYSBkaXJlY3QgZGVyZWZlcmVuY2Ugb2YgdGhlIGluaXRpYWxpemluZyBleHByZXNzaW9uLCBhbmQgd2UgZG9uJ3QKCXdhbnQgcG9zc2libGUgdmFyaWFibGVzIHRoZXJlIHRvIGJlIGV2YWx1YXRlZCBmb3IgZXZlcnkgdXNlLgoKCSogdHJhbnMuYyAoZ25hdF9zdGFiaWxpemVfcmVmZXJlbmNlLCBnbmF0X3N0YWJpbGl6ZV9yZWZlcmVuY2VfMSk6CglQcm9wYWdhdGUgVFJFRV9TSURFX0VGRkVDVFMgYW5kIFRSRUVfVEhJU19WT0xBVElMRSB0byBhdm9pZCBsb29zaW5nCgl0aGVtIG9uIHRoZSB3YXkuICBBY2NvdW50IGZvciB0aGUgZmFjdCB0aGF0IHdlIG1heSBpbnRyb2R1Y2Ugc2lkZQoJZWZmZWN0cyBpbiB0aGUgcHJvY2Vzcy4KCjIwMDQtMDctMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBtaXNjLmMgKGRlZmF1bHRfcGFzc19ieV9yZWYpOiBVc2UgcGFzc19ieV9yZWZlcmVuY2UuCgoyMDA0LTA3LTExICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIG1pc2MuYyAoTEFOR19IT09LU19DTEVBUl9CSU5ESU5HX1NUQUNLLCBMQU5HX0hPT0tTX1BVU0hMRVZFTCwKCUxBTkdfSE9PS1NfUE9QTEVWRUwsIExBTkdfSE9PS1NfU0VUX0JMT0NLKTogUmVtb3ZlLgoKMjAwNC0wNy0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyYW5zLmMgKGduYXRfdG9fZ251IDxOX0hhbmRsZWRfU2VxdWVuY2VfT2ZfU3RhdGVtZW50cz4pOiBVcGRhdGUKCWNvbW1lbnRhcnkuCgoyMDA0LTA3LTA2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHZtc19jb252LmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoJQWxwaGFiZXRpY2FsIG9yZGVyIGZvciBlbnVtZXJhdGVkIHZhbHVlcyBvZiB0eXBlIENvbW1hbmRfVHlwZSwgdG8gaGF2ZQoJdGhlIGNvbW1hbmQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGZvciB0aGUgdXNhZ2UuCgoJKiB2bXNfY29udi5hZGIgKFByb2Nlc3NfQXJndW1lbnQpOiBTZXQgS2VlcF9UZW1wb3JhcnlfRmlsZXMgdG8gVHJ1ZSBmb3IKCXRoZSBzcGVjaWFsIHF1YWxpZmllciAvS0VFUF9URU1QT1JBUllfRklMRVMgKG1pbmltdW0gNiBjaGFyYWN0ZXJzKS4KCgkqIGduYXRfdWduLnRleGk6IERvY3VtZW50IG5ldyBzd2l0Y2ggLWRuIGZvciB0aGUgR05BVCBkcml2ZXIuCgoJKiBtYWtlZ3ByLmFkYiAoR2xvYmFsX0FyY2hpdmVfRXhpc3RzKTogTmV3IGdsb2JhbCBCb29sZWFuIHZhcmlhYmxlCgkoQWRkX0FyY2hpdmVfUGF0aCk6IE9ubHkgYWRkIHRoZSBnbG9iYWwgYXJjaGl2ZSBpZiB0aGVyZSBpcyBvbmUuCgkoQnVpbGRfR2xvYmFsX0FyY2hpdmUpOiBTZXQgR2xvYmFsX0FyY2hpdmVfRXhpc3RzIGRlcGVuZGluZyBpZiB0aGVyZSBpcwoJb3Igbm90IGFueSBvYmplY3QgZmlsZSB0byBwdXQgaW4gdGhlIGdsb2JhbCBhcmNoaXZlLCBhbmQgZG9uJ3QgYnVpbGQKCWEgZ2xvYmFsIGFyY2hpdmUgaWYgdGhlcmUgaXMgbm9uZS4KCShYX1N3aXRjaGVzKTogTmV3IHRhYmxlCgkoQ29tcGlsZV9MaW5rX1dpdGhfR25hdG1ha2UpOiBQYXNzIHRvIGduYXRtYWtlIHRoZSAtWCBzd2l0Y2hlcyBzdG9yZWQKCWluIHRoZSBYX1N3aXRjaGVzIHRhYmxlLCBpZiBhbnkuCgkoSW5pdGlhbGl6ZSk6IE1ha2Ugc3VyZSB0aGUgWF9Td2l0Y2hlcyB0YWJsZSBpcyBlbXB0eQoJKFNjYW5fQXJnKTogUmVjb3JkIC1YIHN3aXRjaGVzIGluIHRhYmxlIFhfU3dpdGNoZXMKCgkqIG9wdC5hZHMgKEtlZXBfVGVtcG9yYXJ5X0ZpbGVzKTogTmV3IEJvb2xlYW4gZmxhZywgZGVmYXVsdGVkIHRvIEZhbHNlLgoKCSogbWFrZS5hZGI6IE1pbm9yIGNvbW1lbnQgZml4CgoJKiBnbmF0bmFtZS5hZGIgKEduYXRuYW1lKTogV2hlbiBub3Qgb24gVk1TLCBhbmQgZ25hdG5hbWUgaGFzIGJlZW4KCWludm9rZWQgd2l0aCBkaXJlY3RvcnkgaW5mb3JtYXRpb24sIGFkZCB0aGUgZGlyZWN0b3J5IGluIGZyb250IG9mIHRoZQoJcGF0aC4KCgkqIGduYXRjaG9wLmFkYiAoR25hdGNob3ApOiBXaGVuIG5vdCBvbiBWTVMsIGFuZCBnbmF0Y2hvcCBoYXMgYmVlbgoJaW52b2tlZCB3aXRoIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiwgYWRkIHRoZSBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgdGhlCglwYXRoLgoKCSogZ25hdGNtZC5hZGIgKERlbGV0ZV9UZW1wX0NvbmZpZ19GaWxlcyk6IE9ubHkgZGVsZXRlIHRlbXBvcmFyeSBmaWxlcwoJd2hlbiBLZWVwX1RlbXBvcmFyeV9GaWxlcyBpcyBGYWxzZS4KCShHTkFUQ21kKTogV2hlbiBub3Qgb24gVk1TLCBhbmQgdGhlIEdOQVQgZHJpdmVyIGhhcyBiZWVuIGludm9rZWQgd2l0aAoJZGlyZWN0b3J5IGluZm9ybWF0aW9uLCBhZGQgdGhlIGRpcmVjdG9yeSBpbiBmcm9udCBvZiB0aGUgcGF0aC4KCVdoZW4gbm90IG9uIFZNUywgaGFuZGxlIG5ldyBzd2l0Y2ggLWRuIGJlZm9yZSB0aGUgY29tbWFuZCB0byBzZXQKCUtlZXBfVGVtcG9yYXJ5X0ZpbGVzIHRvIFRydWUuCgkoTm9uX1ZNU19Vc2FnZSk6IFVzZSBsb3dlciBjYXNlIGZvciB0aGUgbm9uIFZNUyB1c2FnZTogdGhpcyBpcyB2YWxpZAoJZXZlcnl3aGVyZS4KCgkqIGduYXRsaW5rLmFkYiAoR25hdGxpbmspOiBXaGVuIG5vdCBvbiBWTVMsIGFuZCBnbmF0bGluayBoYXMgYmVlbgoJaW52b2tlZCB3aXRoIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiwgYWRkIHRoZSBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgdGhlCglwYXRoLgoKMjAwNC0wNy0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYiAoTmFtZV9TdHViKTogTmV3IG5hbWUgZm9yIHRoZSBkaXN0cmlidXRlZAoJc3lzdGVtcyBhbm5leC4KCgkqIHJ0c2ZpbmQuYWRzOiBOZXcgUlRFIFRDX09iamVjdCwgZm9yIERTQS9Qb2x5T1JCLgoJTmV3IFJURXMgUkFTX1Byb3h5X1R5cGUgYW5kIFJBU19Qcm94eV9UeXBlX0FjY2VzcywgZm9yIERTQS4KCgkqIGctc29ja2V0LmFkYiAoVG9fVGltZXZhbCk6IEZpeCBpbmNvcnJlY3QgY29udmVyc2lvbiBvZgoJU2VsZWN0b3JfRHVyYXRpb24gdG8gVGltZXZhbCBmb3IgdGhlIGNhc2Ugb2YgMC4wLgoKCSogZXhwX3V0aWwuYWRzIChFdm9sdmVfT3JfRWxzZSk6IEZpeCBvdmVyZW50aHVzaWFzdGljIGNvcHkvcGFzdGUgb2YKCWRvY3VtZW50YXRpb24gZnJvbSBFdm9sdmVfQW5kX1RoZW4uCgoyMDA0LTA3LTA2ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBzLXRhcHJvcC10cnU2NC5hZGIsIHMtdGFwcm9wLW9zMi5hZGIsCglzLXRhcHJvcC1taW5ndy5hZGIsIHMtdGFwcm9wLXBvc2l4LmFkYjogVXBkYXRlIGNvbW1lbnQuCgoyMDA0LTA3LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHMtb3NpbnRlLWhwdXguYWRzLCBzLW9zaW50ZS1mcmVlYnNkLmFkcywKCXMtb3NpbnRlLWx5bnhvcy5hZHMsIHMtdGFwcm9wLWx5bnhvcy5hZGIsIHMtb3NpbnRlLXRydTY0LmFkcywKCXMtb3NpbnRlLWFpeC5hZHMsIHMtb3NpbnRlLWlyaXguYWRzLCBzLXRhcHJvcC1pcml4LmFkYiwKCXMtaW50ZXJyLXNpZ2FjdGlvbi5hZGIsIHMtdGFwcm9wLWlyaXgtYXRocmVhZC5hZGIsCglzLW9zaW50ZS1ocHV4LWRjZS5hZGIsIHMtdGFwcm9wLWhwdXgtZGNlLmFkYiwKCXMtdGFwcm9wLWxpbnV4LmFkYiwgcy10YXByb3AtZHVtbXkuYWRiLCBzLXRhcHJvcC1zb2xhcmlzLmFkYiwKCXMtaW50ZXJyLXZtcy5hZGIsIHMtb3NpbnRlLXZtcy5hZHMsIHMtdGFwcm9wLXZtcy5hZGIsCglzLW9zaW50ZS12eHdvcmtzLmFkcywgcy1vc3ByaW0tdnh3b3Jrcy5hZGIsIGEtbnVtYXV4LXg4Ni5hZGIsCglhLWV4Y2VwdC5hZGIsIGEtZXhleHByLmFkYiwgYS1pbnRzaWcuYWRiLCBhLXRhZ3MuYWRiLAoJYS10YWdzLmFkcywgYmluZGdlbi5hZHMsIGNoZWNrcy5hZGIsIGNoZWNrcy5hZGIsCgljc2V0cy5hZHMsIGVpbmZvLmFkcywgZWluZm8uYWRzLCBlbGlzdHMuYWRiLCBleHBfY2g0LmFkYiwKCWV4cF9jaDcuYWRiLCBleHBfZGlzdC5hZGIsIGV4cF91dGlsLmFkYiwgZnJlZXplLmFkYiwKCWctZHluaHRhLmFkYiwgZ25hdG1lbS5hZGIsIGctcmVnZXhwLmFkYiwgaW5saW5lLmFkYiwKCWktb3MydGhyLmFkcywgb3NpbnQuYWRiLCBwcmouYWRiLCBzY25nLmFkYiwgc2VtX2NhdC5hZGIsCglzZW1fY2gxMC5hZGIsIHNlbV9jaDEyLmFkYiwgc2VtX2NoNC5hZGIsIHNlbV9jaDcuYWRiLAoJc2VtX2NoOC5hZGIsIHNlbV9kaXNwLmFkYiwgc2VtX3ByYWcuYWRiLCBzZW1fcmVzLmFkYiwKCXNlbV90eXBlLmFkYiwgc2VtX3R5cGUuYWRzLCBzZW1fd2Fybi5hZGIsIHMtZmljb2JsLmFkcywKCXMtZmluaW1wLmFkYiwgcy1odGFibGUuYWRiLCBzaW5mby5hZHMsIHNpbnB1dC1sLmFkcywKCXMtaW50ZXJyLmFkYiwgcy1pbnRlcnIuYWRzLCBzcHJpbnQuYWRiLCBzLXRhcmVzdC5hZGIsCglzLXRhc2luaS5hZHMsIHMtdGFza2luLmFkcywgcy10YXNraW4uYWRzLCB1bmFtZS5hZGIsCgl2bXNfZGF0YS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZywKCUZpeCBiYWQgYm94IGNvbW1lbnQgZm9ybWF0LgoKCSogZ25hdF9ybS50ZXhpOiBGaXggbWlub3IgZ3JhbW1hdGljYWwgZXJyb3IKCgkqIHNlbV9hdHRyLmFkYiwgZXhwX2F0dHIuYWRiOiBOZXcgYXR0cmlidXRlIEhhc19BY2Nlc3NfVmFsdWVzCgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYiAoUmVxdWlyZXNfVHJhbnNpZW50X1Njb3BlKTogQWxsb3cgbWFueQoJbW9yZSBjYXNlcyBvZiBkaXNjcmltaW5hdGVkIHJlY29yZHMgdG8gYmUgcmVjb2duaXplZCBhcyBub3QgbmVlZGluZyBhCglzZWNvbmRhcnkgc3RhY2suCgkoSGFzX0FjY2Vzc19WYWx1ZXMpOiBOZXcgZnVuY3Rpb24uCgoJKiBzbmFtZXMuaCwgc25hbWVzLmFkYiwgc25hbWVzLmFkczogTmV3IGF0dHJpYnV0ZSBIYXNfQWNjZXNzX1ZhbHVlcwoKCSogY3N0YW5kLmFkYiwgbGF5b3V0LmFkcywgbGF5b3V0LmFkYiwgc2VtX2NoMTMuYWRzOiBDaGFuZ2UgbmFtZQoJU2V0X1ByaW1fQWxpZ25tZW50IHRvIFNldF9FbGVtX0FsaWdubWVudCAobW9yZSBhY2N1cmF0ZSBjb3JyZXNwb25kZW5jZQoJd2l0aCBMUk0gdGVybWlub2xvZ3kpLgoJQ2hhbmdlIHRlcm1pbm9sb2d5IGluIGNvbW1lbnRzIHByaW1pdGl2ZSB0eXBlID0+IGVsZW1lbnRhcnkgdHlwZS4KCjIwMDQtMDctMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTU2MDIKCSogc2VtX2NoNy5hZGIgKFVuaXRfUmVxdWlyZXNfQm9keSk6IEZvciBhIGdlbmVyaWMgcGFja2FnZSwgdGhlIGZvcm1hbAoJcGFyYW1ldGVycyBkbyBub3QgaW1wb3NlIGFueSByZXF1aXJlbWVudHMgb24gdGhlIHByZXNlbmNlIG9mIGEgYm9keS4KCjIwMDQtMDctMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTU1OTMKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX1BhY2thZ2VfSW5zdGFudGlhdGlvbik6IElmIHRoZSBnZW5lcmljIGlzIG5vdCBhCgljb21waWxhdGlvbiB1bml0IGFuZCBpcyBpbiBhbiBvcGVuIHNjb3BlIGF0IHRoZSBwb2ludCBvZiBpbnN0YW50aWF0aW9uLAoJYXNzdW1lIHRoYXQgYSBib2R5IG1heSBiZSBwcmVzZW50IGxhdGVyLgoKMjAwNC0wNy0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMTMuYWRiIChBbmFseXplX0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZSwgY2FzZSAnU2l6ZSk6CglJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiBzcGVjaWZpZWQgc2l6ZSBpcyBub3Qgc3VwcG9ydGVkLgoKCSogc2VtX2NoNi5hZGIgKE1heWJlX1ByaW1pdGl2ZV9PcGVyYXRpb24pOiBBIGxpYnJhcnktbGV2ZWwgc3VicHJvZ3JhbQoJaXMgbmV2ZXIgYSBwcmltaXRpdmUgb3BlcmF0aW9uLgoKMjAwNC0wNy0wNSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGFkYS10cmVlLmggKFRZUEVfTEVGVF9KVVNUSUZJRURfTU9EVUxBUl9QKTogVXNlCglSRUNPUkRfT1JfVU5JT05fQ0hFQ0suCgkoVFlQRV9DT05UQUlOU19URU1QTEFURV9QKTogTGlrZXdpc2UuCgoyMDA0LTA3LTA0ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluIChkb2MvZ25hdF91Z25fdW53LnRleGkpOiBFbGltaW5hdGUgZXhwbGljaXQKCWRlcGVuZGVuY3kgb24geGduYXR1Z24sIGluc3RlYWQgYnVpbGQgaXQgdmlhIGEgc3VibWFrZS4KCShBREFfSU5GT0ZJTEVTKTogQWRkIGRvYy9nbmF0X3Vnbl91bncudGV4aS4KCjIwMDQtMDctMDQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB1dGlsczIuYyAoZ25hdF9tYXJrX2FkZHJlc3NhYmxlKTogRG9uJ3QgcHV0X3Zhcl9pbnRvX3N0YWNrLgoKMjAwNC0wNy0wMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyYW5zLmMgKGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZSk6IERvbid0IGhhbmRsZSBSVExfRVhQUi4KCSogdXRpbHMuYyAobWF4X3NpemUpOiBMaWtld2lzZS4KCjIwMDQtMDYtMjggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmM6IFJlbW92ZSBjYWxscyB0byBhZGRfZGVjbF9leHByLCBwdXNoZGVjbCwgcmVzdF9vZl9jb21waWxhdGlvbiwKCWFuZCByZXN0X29mX3R5cGVfY29tcGlsYXRpb247IGFkZCBhcmcgdG8gY3JlYXRlXypfZGVjbC4KCShhbm5vdGF0ZV9kZWNsX3dpdGhfbm9kZSk6IERlbGV0ZWQuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfQXJyYXlfVHlwZSk6IFNldCBsb2NhdGlvbiBvZiBmaWVsZHMuCgkqIGdpZ2kuaCAoZ2V0X2RlY2xzLCBibG9ja19oYXNfdmFycywgcHVzaGRlY2wpOiBEZWxldGVkLgoJKGdldF9jdXJyZW50X2Jsb2NrX2NvbnRleHQsIGduYXRfcHVzaGRlY2wpOiBOZXcgZGVjbGFyYXRpb25zLgoJKGduYXRfaW5pdF9zdG10X2dyb3VwKTogTGlrZXdpc2UuCgkoY3JlYXRlX3Zhcl9kZWNsLCBjcmVhdGVfdHlwZV9kZWNsLCBjcmVhdGVfc3VicHJvZ19kZWNsKTogQWRkIG5ldyBhcmcuCgkqIG1pc2MuYyAoTEFOR19IT09LU19DTEVBUl9CSU5ESU5HX1NUQUNLKTogRGVsZXRlZC4KCShMQU5HX0hPT0tTX0dFVERFQ0xTLCBMQU5HX0hPT0tTX1BVU0hERUNMKTogRGVsZXRlZC4KCShnbmF0X2luaXQpOiBDYWxsIGduYXRfaW5pdF9zdG10X2dyb3VwLgoJKiB0cmFucy5jIChnbG9iYWxfc3RtdF9ncm91cCwgZ251X2VsYWJfcHJvY19kZWNsKTogTmV3IHZhcmlhYmxlcy4KCShnbnVfcGVuZGluZ19lbGFib3JhdGlvbl9saXN0KTogRGVsZXRlZC4KCShtYXJrX3Zpc2l0ZWQsIG1hcmtfdW52aXNpdGVkLCBnbmF0X2luaXRfc3RtdF9ncm91cCk6IE5ldyBmdW5jdGlvbnMuCgkoZ2lnaSk6IFJlYXJyYW5nZSBpbml0aWFsaXphdGlvbiBjYWxscyBhbmQgbW92ZSBzb21lIHRvIGxhc3QgYWJvdmUuCgkoZ25hdF90b19nbnUpOiBJZiBzdGF0ZW1lbnQgYW5kIG5vdCBpbiBwcm9jZWR1cmUsIGdvIGludG8gZWxhYiBwcm9jLgoJRGVsZXRlIGNhbGxzIHRvIGFkZF9kZWNsX2V4cHI7IGFkZCBhcmcgdG8gY3JlYXRlXypfZGVjbC4KCShnbmF0X3RvX2dudSwgY2FzZSBOX0xvb3ApOiBSZWNhbGN1bGF0ZSBzaWRlIGVmZmVjdHMgb24gQ09ORF9FWFBSLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fU3VicHJvZ3JhbV9Cb2R5KTogTW92ZSBzb21lIGNvZGUgdG8KCWJlZ2luX3N1YnByb2dfYm9keSBhbmQgY2FsbCBpdC4KCURvbid0IHB1c2ggYW5kIHBvcCBnZ2MgY29udGV4dC4KCShnbmF0X3RvX2dudSwgY2FzZSBOX0NvbXBpbGF0aW9uX1VuaXQpOiBSZXdvcmsgdG8gc3VwcG9ydCBlbGFiIHByb2MuCgkoYWRkX3N0bXQpOiBSZW1vdmUgaGFuZGxpbmcgb2YgREVDTF9FWFBSIGZyb20gaGVyZS4KCUlmIG5vdCBpbiBmdW5jdGlvbiwgbWFyayB2aXNpdGVkLgoJKGFkZF9kZWNsX2V4cHIpOiBQdXQgZ2xvYmFsIGF0IHRvcCBsZXZlbC4KCUNoZWNrIGZvciBjYXNlcyBvZiBERUNMX0lOSVRJQUwgd2UgaGF2ZSB0byBoYW5kbGUgaGVyZS4KCShwcm9jZXNzX3R5cGUpOiBBZGQgZXh0cmEgYXJnIHRvIGNyZWF0ZV90eXBlX2RlY2wuCgkoYnVpbGRfdW5pdF9lbGFiKTogUmV3b3JrIHRvIGp1c3QgZ2ltcGxpZnkuCgkqIHV0aWxzLmMgKHBlbmRpbmdfZWxhYm9yYXRpb25zLCBlbGlzdF9zdGFjaywgZ2V0ZGVjbHMpOiBEZWxldGVkLgoJKGJsb2NrX2hhc192YXJzLCBtYXJrX3Zpc2l0ZWQsIGFkZF9wZW5kaW5nX2VsYWJvcmF0aW9ucyk6IExpa2V3aXNlLgoJKGdldF9wZW5kaW5nX2VsYWJvcmF0aW9ucywgcGVuZGluZ19lbGFib3JhdGlvbnNfcCk6IExpa2V3aXNlLgoJKHB1c2hfcGVuZGluZ19lbGFib3JhdGlvbnMsIHBvcF9wZW5kaW5nX2VsYWJvcmF0aW9ucyk6IExpa2V3aXNlLgoJKGdldF9lbGFib3JhdGlvbl9sb2NhdGlvbiwgaW5zZXJ0X2VsYWJvcmF0aW9uX2xpc3QpOiBMaWtld2lzZS4KCShnbmF0X2JpbmRpbmdfbGV2ZWwpOiBSZW5hbWVkIGZyb20gYWRhX2JpbmRpbmdfbGV2ZWwuCgkoaW5pdF9nbmF0X3RvX2dudSk6IERvbid0IGNsZWFyIHBlbmRpbmdfZWxhYm9yYXRpb25zLgoJKGdsb2JhbF9iaW5kaW5nc19wKTogVHJlYXQgYXMgZ2xvYmFsIGlmIG5vIGN1cnJlbnRfYmluZGluZ19sZXZlbC4KCShzZXRfY3VycmVudF9ibG9ja19jb250ZXh0KTogTmV3IGZ1bmN0aW9uLgoJKGduYXRfcHVzaGRlY2wpOiBSZW5hbWVkIGZyb20gcHVzaGRlY2w7IG1ham9yIHJld29yay4KCUFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoY3JlYXRlX3R5cGVfZGVjbCwgY3JlYXRlX3Zhcl9kZWNsLCBjcmVhdGVfc3VicHJvZ19kZWNsKTogQWRkIG5ldyBhcmcuCgkoZmluaXNoX3JlY29yZF90eXBlKTogQ2FsbCBjYWxsIHB1c2hkZWNsIGZvciBzdHViIGRlY2wuCgkoZnVuY3Rpb25fbmVzdGluZ19kZXB0aCk6IERlbGV0ZWQuCgkoYmVnaW5fc3VicHJvZ19ib2R5KTogRGVsZXRlIG9ic29sZXRlIGNvZGUuCgkqIHV0aWxzMi5jIChidWlsZF9jYWxsX2FsbG9jX2RlYWxsb2MpOiBBZGQgbmV3IGFyZyB0byBjcmVhdGVfdmFyX2RlY2wuCgoyMDA0LTA2LTI4ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIG1saWItdGd0LXRydTY0LmFkYiwgbWxpYi10Z3QtYWl4LmFkYiwgbWxpYi10Z3QtaXJpeC5hZGIsCgltbGliLXRndC1pcml4LmFkYiwgbWxpYi10Z3QtaHB1eC5hZGIsIG1saWItdGd0LWxpbnV4LmFkYiwKCW1saWItdGd0LWxpbnV4LmFkYiwgbWxpYi10Z3Qtc29sYXJpcy5hZGIsIG1saWItdGd0LXNvbGFyaXMuYWRiLAoJbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwgbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwgbWxpYi10Z3Qtdm1zLWlhNjQuYWRiLAoJYS1zdHJtYXAuYWRiLCBhLXN0cm1hcC5hZHMsIGNsZWFuLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBleHBfdXRpbC5hZGIgKElzX1Bvc3NpYmx5X1VuYWxpZ25lZF9TbGljZSk6IENvbXBsZXRlbHkgcmV3cml0dGVuLCB0bwoJZGVhbCB3aXRoIHByb2JsZW0gb2YgaW5lZmZpY2llbnQgc2xpY2VzIG9uIG1hY2hpbmVzIHdpdGggc3RyaWN0CglhbGlnbm1lbnQsIHdoZW4gdGhlIHNsaWNlIGlzIGEgY29tcG9uZW50IG9mIGEgY29tcG9zaXRlLgoKCSogY2hlY2tzLmFkYiAoQXBwbHlfQXJyYXlfU2l6ZV9DaGVjayk6IERvIG5vdCBzcGVjaWFsIGNhc2UgNjQtYml0CgltYWNoaW5lcywgd2UgbmVlZCB0aGUgY2hlY2sgdGhlcmUgYXMgd2VsbC4KCjIwMDQtMDYtMjggIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfQXNzaWduX0FycmF5KTogVXNlIGNvcnJlY3QgY29uZGl0aW9uIHRvCglkZXRlcm1pbmUgc2FmZSBjb3B5aW5nIGRpcmVjdGlvbiBmb3Igb3ZlcmxhcHBpbmcgc2xpY2UgYXNzaWdubWVudHMKCXdoZW4gY29tcG9uZW50IGlzIGNvbnRyb2xsZWQuCgoJKiBzZW1fY2gxMi5hZGIgKEluc3RhbnRpYXRlX0Zvcm1hbF9QYWNrYWdlKTogSW1wbGljaXQgb3BlcmF0aW9ucyBvZiBhCglmb3JtYWwgZGVyaXZlZCB0eXBlIGluIHRoZSBhY3R1YWwgZm9yIGEgZm9ybWFsIHBhY2thZ2UgYXJlIHZpc2libGUgaW4KCXRoZSBlbmNsb3NpbmcgaW5zdGFuY2UuCgoyMDA0LTA2LTI4ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1NjAwCgkqIHNlbV91dGlsLmFkYiAoVHJhY2VfQ29tcG9uZW50cyk6IERpYWdub3NlIHByb3Blcmx5IGFuIGlsbGVnYWwKCWNpcmN1bGFyaXR5IGludm9sdmluZyBhIHByaXZhdGUgdHlwZSB3aG9zZSBjb21wbGV0aW9uIGluY2x1ZGVzIGEKCXNlbGYtcmVmZXJlbnRpYWwgY29tcG9uZW50LgoJKEVudGVyX05hbWUpOiBVc2UgSXNfSW5oZXJpdGVkX09wZXJhdGlvbiB0byBkaXN0aW5ndWlzaCBhIHNvdXJjZQoJcmVuYW1pbmcgb3IgYW4gaW5zdGFudGlhdGlvbiBmcm9tIGFuIGltcGxpY2l0IGRlcml2ZWQgb3BlcmF0aW9uLgoKMjAwNC0wNi0yOCAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogbWxpYi10Z3QtbWluZ3cuYWRiOiAoTGlicmFyeV9FeGlzdHNfRm9yKTogUmVtb3ZlICJsaWIiIHByZWZpeCBmcm9tCglETEwuCgkoTGlicmFyeV9GaWxlX05hbWVfRm9yKTogSWRlbS4KCjIwMDQtMDYtMjggIE1hdHRoZXcgR2luZ2VsbCAgPGdpbmdlbGxAZ25hdC5jb20+CgoJKiBnLXRyYWNlYi5hZHM6IEFkZCBleHBsYW5hdG9yeSBub3RlIG9uIHRoZSBmb3JtYXQgb2YgYWRkcmVzc2VzCglleHBlY3RlZCBieSBhZGRyMmxpbmUuCgoyMDA0LTA2LTI4ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluOiBGb3JjZSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gb24gcy10YXNkZWIuYWRiLAoJYS1leGNlcHQuYWRiIGFuZCBzLWFzc2VydC5hZGIgbmVlZGVkIGJ5IHRoZSBkZWJ1Z2dlci4KCjIwMDQtMDYtMjggIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZS5hZGIgKENvbGxlY3RfQXJndW1lbnRzX0FuZF9Db21waWxlKTogQ2hhbmdlIEZsYWcxIHRvCglOZWVkX1RvX0J1aWxkX0xpYi4KCShHbmF0bWFrZSk6IERpdHRvLgoKCSogbWxpYi1wcmouYWRiIChDaGVja19MaWJyYXJ5KTogUmVwbGFjZSBGbGFnMSB3aXRoIE5lZWRfVG9fQnVpbGRfTGliCgoJKiBwcmouYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCShQcm9qZWN0X0VtcHR5KTogQ2hhbmdlIEZsYWcxIHRvIE5lZWRfVG9fQnVpbGRfTGliLiBSZW1vdmUgRmxhZzIuCgoJKiBwcmouYWRzOiBDb21tZW50IHVwZGF0ZXMKCU1pbm9yIHJlZm9ybWF0dGluZwoJKFByb2plY3RfRGF0YSk6IENoYW5nZSBGbGFnMSB0byBOZWVkX1RvX0J1aWxkX0xpYi4KCVJlbW92ZSBGbGFnMjogbm90IHVzZWQuCgoJKiBwcmotZGVjdC5hZGIgKFBhcnNlX0RlY2xhcmF0aXZlX0l0ZW1zKTogQWNjZXB0ICJudWxsIiBhcyBhCglkZWNsYXJhdGlvbi4KCgkqIGduYXRfdWduLnRleGk6IFB1dCBhICJudWxsOyIgZGVjbGFyYXRpb24gaW4gb25lIHByb2plY3QgZmlsZSBleGFtcGxlCgoJKiBnbmF0X3JtLnRleGk6IERvY3VtZW50IEVtcHR5IGRlY2xhcmF0aW9ucyAibnVsbDsiLgoKCSogbWFrZWdwci5hZGIgKENvbXBpbGVfTGlua19XaXRoX0duYXRtYWtlKTogUHV0IHRoZSBnbG9iYWwgYXJjaGl2ZXMgaW4KCWZyb250IG9mIHRoZSBsaW5rZXIgb3B0aW9ucy4KCShMaW5rX0ZvcmVpZ24pOiBQdXQgdGhlIGdsb2JhbCBhcmNoaXZlcyBhbmQgdGhlIGxpYnJhcmllcyBpbiBmcm9udCBvZgoJdGhlIGxpbmtlciBvcHRpb25zLgoKMjAwNC0wNi0yOCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogcnRzZmluZC5hZGI6IChHZXRfVW5pdF9OYW1lKTogRml4IHR5cG8gaW4gY29tbWVudAoJKFJUVV9Mb2FkZWQpOiBDb2RlIGNsZWFudXAKCShTZXRfUlRVX0xvYWRlZCk6IE5ldyBwcm9jZWR1cmUgdG8gcmVnaXN0ZXIgYXMgKmxvYWRlZCogZXhwbGljaXRseQoJd2l0aGVkIHByZWRlZmluZWQgdW5pdHMuCgoJKiBydHNmaW5kLmFkcyAoU2V0X1JUVV9Mb2FkZWQpOiBOZXcgcHJvY2VkdXJlIHRvIHJlZ2lzdGVyIGFzICpsb2FkZWQqCglleHBsaWNpdGx5IHdpdGhlZCBwcmVkZWZpbmVkIHVuaXRzLgoJRml4IHR5cG8gaW4gY29tbWVudAoKCSogc2VtX2NoMTAuYWRiIChBbmFseXplX0NvbXBpbGF0aW9uX1VuaXQpOiBSZWdpc3RlciBhcyAqbG9hZGVkKgoJZXhwbGljaXRseSB3aXRoZWQgcHJlZGVmaW5lZCB1bml0cy4KCjIwMDQtMDYtMjYgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhZGEtdHJlZS5kZWYgKERFQ0xfU1RNVCk6IERlbGV0ZWQuCgkqIGFkYS10cmVlLmggKElTX0FEQV9TVE1UKTogTm93IHRlc3QgYWdhaW5zdCBTVE1UX1NUTVQuCgkoREVDTF9TVE1UX1ZBUik6IERlbGV0ZWQuCgkqIGRlY2wuYzogYWRkX2RlY2xfc3RtdCBub3cgYWRkX2RlY2xfZXhwci4KCSogZ2lnaS5oOiBMaWtld2lzZS4KCSogdHJhbnMuYzogTGlrZXdpc2UuCgkoZ25hdF9naW1wbGlmeV90eXBlX3NpemVzLCBnbmF0X2dpbXBsaWZ5X29uZV9zaXplcG9zKTogRGVsZXRlZC4KCShnbmF0X3RvX2dudSwgY2FzZSBOX1N1YnByb2dyYW1fQm9keSk6IFNldCBjZnVuLT5mdW5jdGlvbl9lbmRfbG9jdXMuCgkoYWRkX3N0bXQpOiBPbmx5IGhhbmRsZSBwYWRkZWQgdHlwZSBoZXJlLgoJKGFkZF9zdG10X3dpdGhfbm9kZSk6IEFsbG93IGduYXRfbm9kZSB0byBub3QgYmUgcHJlc2VudC4KCShnbmF0X2dpbXBsaWZ5X3N0bXQsIGNhc2UgVVNFX1NUTVQpOiBTZXQgKlNUTVRfUCB0byBudWxsLgoJKGduYXRfZ2ltcGxpZnlfc3RtdCwgY2FzZSBERUNMX1NUTVQpOiBEZWxldGVkLgoJKGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZV8xKTogSWYgQ09NUE9ORU5UX1JFRiBvZiBmYXQgcG9pbnRlciwKCW1ha2UgYSBTQVZFX0VYUFIgZm9yIHRoZSBlbnRpcmUgZmF0IHBvaW50ZXIuCgkqIHV0aWxzLmMgKHB1c2hkZWNsKTogV2FsayBhIERFQ0xfRVhQUiBpbiBnbG9iYWwgY2FzZS4KCShjcmVhdGVfaW5kZXhfdHlwZSk6IE1ha2UgYSBERUNMX0VYUFIuCgkoZW5kX3N1YnByb2dfYm9keSk6IERvbid0IGNhbGwgYWxsb2NhdGVfc3RydWN0X2Z1bmN0aW9uIGhlcmUgYnV0CglkbyBjbGVhciBjZnVuLgoKMjAwNC0wNi0yNSAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogbWFrZWdwci5hZGIgKEJ1aWxkX0xpYnJhcnkpOiBSZW1vdmUgcGFyYW1ldGVyIExpYl9BZGRyZXNzIGFuZAoJUmVsb2NhdGFibGUgZnJvbSBCdWlsZF9EeW5hbWljX0xpYnJhcnkgY2FsbC4KCgkqIGduYXRfdWduLnRleGk6IENoYW5nZSBkb2N1bWVudGF0aW9uIGFib3V0IExpYnJhcnlfS2luZC4gRHluYW1pYyBhbmQKCVJlbG9jYXRhYmxlIGFyZSBub3cgc3lub255bS4KCgkqIE1ha2VmaWxlLmluOiBVc2Ugcy1wYXJhbWUtbWluZ3cuYWRiIG9uIE1pbmdXIHBsYXRmb3JtLgoKCSogbWxpYi1wcmouYWRiIChCdWlsZF9MaWJyYXJ5KTogUmVtb3ZlIERMTF9BZGRyZXNzIGNvbnN0YW50IGRlZmluaXRpb24uCglSZW1vdmUgcGFyYW1ldGVyIExpYl9BZGRyZXNzIGFuZCBSZWxvY2F0YWJsZSBmcm9tIEJ1aWxkX0R5bmFtaWNfTGlicmFyeQoJY2FsbC4KCgkqIG1saWItdGd0LmFkcywgbWxpYi10Z3QuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBSZW1vdmUgcGFyYW1ldGVyCglMaWJfQWRkcmVzcyBhbmQgUmVsb2NhdGFibGUuCgkoRGVmYXVsdF9ETExfQWRkcmVzcyk6IFJlbW92ZWQuCgoJKiBtbGliLXRndC10cnU2NC5hZGIsIG1saWItdGd0LWFpeC5hZGIsIG1saWItdGd0LWlyaXguYWRiLAoJbWxpYi10Z3QtaHB1eC5hZGIsIG1saWItdGd0LWxpbnV4LmFkYiwgbWxpYi10Z3Qtc29sYXJpcy5hZGIsCgltbGliLXRndC12bXMtYWxwaGEuYWRiLCBtbGliLXRndC12bXMtaWE2NC5hZGIsIG1saWItdGd0LXZ4d29ya3MuYWRiOgoJKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IFJlbW92ZSBwYXJhbWV0ZXIgTGliX0FkZHJlc3MgYW5kIFJlbG9jYXRhYmxlLgoJKERlZmF1bHRfRExMX0FkZHJlc3MpOiBSZW1vdmVkLgoKCSogbWxpYi10Z3QtbWluZ3cuYWRiOiBEaXR0by4KCShCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBEbyBub3QgYWRkICJsaWIiIHByZWZpeCB0byB0aGUgRExMIG5hbWUuCgoJKiBzLXRhcHJvcC1taW5ndy5hZGIgKENyZWF0ZV9UYXNrKTogVXNlIEFkanVzdF9TdG9yYWdlX1NpemUgdG8gY29tcHV0ZQoJdGhlIGluaXRpYWwgdGhyZWFkIHN0YWNrIHNpemUuCgoJKiBhLXN0cm1hcC5hZHM6IE1vdmUgcGFja2FnZSBMIHRvIHByaXZhdGUgcGFydCBhcyBpdCBpcyBub3QgdXNlZCBpbgoJdGhlIHNwZWMuIEZvdW5kIHdoaWxlIHJlYWRpbmcgY29kZS4KCjIwMDQtMDYtMjUgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIHRyYWNlYmFrLmM6IEludHJvZHVjZSBzdXBwb3J0IGZvciBhIEdDQyBpbmZyYXN0cnVjdHVyZSBiYXNlZAoJaW1wbGVtZW50YXRpb24gb2YgX19nbmF0X2JhY2t0cmFjZS4KCgkqIHJhaXNlLmM6IERvbid0IHJlbHkgb24gYSBDIG1hcHBpbmcgb2YgdGhlIEdOQVRfR0NDX0V4Y2VwdGlvbiByZWNvcmQKCWFueSBtb3JlLiBVc2UgYWNjZXNzb3JzIGluc3RlYWQuIFRoaXMgZWFzZXMgbWFpbnRlbmFuY2UgYW5kIHJlbGF4ZXMKCXNvbWUgYWxpZ25tZW50IGNvbnN0cmFpbnRzLgoJKF9HTkFUX0V4Y2VwdGlvbiBzdHJ1Y3R1cmUpOiBSZW1vdmUgdGhlIEFkYSBzcGVjaWZpYyBmaWVsZHMKCShFSURfRm9yLCBBZGp1c3RfTl9DbGVhbnVwc19Gb3IpOiBOZXcgYWNjZXNzb3JzLCBleHBvcnRlZCBieQoJYS1leGV4cHIuYWRiLgoJKGlzX2hhbmRsZWRfYnksIF9fZ25hdF9laF9wZXJzb25hbGl0eSk6IFJlcGxhY2UgY29tcG9uZW50IHJlZmVyZW5jZXMgdG8KCWV4Y2VwdGlvbiBzdHJ1Y3R1cmUgYnkgdXNlIG9mIHRoZSBuZXcgYWNjZXNzb3JzLgoKCSogaW5pdC5jIChfX2duYXRfaW5pdGlhbGl6ZSk6IEFkanVzdCBjb21tZW50cyB0byBtYXRjaCB0aGUganVzdAoJcmV2ZXJ0ZWQgbWVhbmluZyBvZiB0aGUgLXN0YXRpYyBsaW5rLXRpbWUgb3B0aW9uLgoKCSogYWRhaW50LmMgKGNvbnZlcnRfYWRkcmVzc2VzKTogQXJyYW5nZSBub3QgdG8gZGVmaW5lIGEgc3R1YiBmb3IKCW1pcHMtaXJpeCBhbnkgbW9yZSwgYXMgd2Ugbm93IHdhbnQgdG8gcmVseSBvbiBhIHJlYWwgdmVyc2lvbiBmcm9tIGEKCXJlY2VudCBsaWJhZGRyMmxpbmUuCgoJKiBhLWV4ZXhwci5hZGI6IFByb3ZpZGUgbmV3IGFjY2Vzc29ycyB0byBhIEdOQVRfR0NDIG9jY3VycmVuY2UsIHNvIHRoYXQKCXRoZSBwZXJzb25hbGl0eSByb3V0aW5lIGNhbiB1c2UgdGhlbSBhbmQgbm90IGhhdmUgdG8gcmVseSBvbiBhIEMKCWNvdW50ZXJwYXJ0IG9mIHRoZSByZWNvcmQgYW55bW9yZS4gVGhpcyBzaW1wbGlmaWVzIG1haW50ZW5hbmNlIGFuZAoJcmVsYXhlcyB0aGUgY29uc3RyYWludCBvZiBoYXZpbmcgU3RhbmRhcmQnTWF4aW11bV9BbGlnbm1lbnQgbWF0Y2gKCUJJR0dFU1RfQUxJR05NRU5ULgoJVXBkYXRlIGNvbW1lbnRzLCBhbmQgYWRkIGEgc2VjdGlvbiBvbiB0aGUgY29tbW9uIGhlYWRlciBhbGlnbm1lbnQgaXNzdWUuCgoyMDA0LTA2LTI1ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogYS1uZ2VsZnUuYWRiIChUYW5oKTogVXNlIGZ1bGwgMjAgZGlnaXQgcHJlY2lzaW9uIGZvciBjb25zdGFudHMgaW4KCXBvbHlub21pYWwgYXBwcm94aW1hdGlvbi4gRml4ZXMgaW5jb25zaXN0ZW5jeSB3aXRoIENvZHkvV2FpdGUgYWxnb3JpdGhtLgoKMjAwNC0wNi0yNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBnbmF0X3JtLnRleGk6IEZpeCBzZWN0aW9uIG9uIGNvbXBvbmVudCBjbGF1c2VzIHRvIGluZGljYXRlIHRoYXQgdGhlCglyZXN0cmljdGlvbiBvbiBieXRlIGJvdW5kYXJ5IHBsYWNlbWVudCBzdGlsbCBhcHBsaWVzIGZvciBiaXQgcGFja2VkCglhcnJheXMuCglBZGQgY29tbWVudCBvbiBzdGFjayB1c2FnZSBmcm9tIEluaXRpYWxpemVfU2NhbGFycwoKCSogZ25hdF91Z24udGV4aTogQWRkIGRvY3VtZW50YXRpb24gZm9yIC1nbmF0eUxubm4KCgkqIHN0eWxlc3cuYWRzLCBzdHlsZXN3LmFkYjogSW1wbGVtZW50IG5ldyAtZ25hdHlMbm5uIG9wdGlvbiBmb3IKCWxpbWl0aW5nIG5lc3RpbmcgbGV2ZWwuCgoJKiB1c2FnZS5hZGI6IEFkZCBsaW5lIGZvciAtZ25hdHlMbm5uIHN3aXRjaAoKCSogZy1kZWJwb28uYWRzLCB4dHJlZXBycy5hZGIsIHNpbnB1dC5hZHMsIHNlbV9jaDEzLmFkcywKCXNlbV9jaDEzLmFkYiwgZXhwX2FnZ3IuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHNlbV9wcmFnLmFkYiAoUHJvY2Vzc19BdG9taWNfU2hhcmVkX1ZvbGF0aWxlKTogU2V0IElzX0F0b21pYyBvbiBiYXNlCgl0eXBlIGFzIHdlbGwgYXMgb24gdGhlIHN1YnR5cGUuIFRoaXMgY29ycmVjdHMgYSBwcm9ibGVtIGluIGZyZWV6ZSBpbgoJc2V0dGluZyBhbGlnbm1lbnRzIG9mIGF0b21pYyB0eXBlcy4KCgkqIHNlbV9ldmFsLmFkczogTWlub3IgY29tbWVudCB0eXBvIGZpeGVkCgoJKiBwYXItdXRpbC5hZGIgKFB1c2hfU2NvcGVfU3RhY2spOiBDaGVjayBmb3IgdmlvbGF0aW9uIG9mIG1heCBuZXN0aW5nCglsZXZlbC4gIE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIGZuYW1lLmFkYiAoSXNfUHJlZGVmaW5lZF9GaWxlX05hbWUpOiBSZXF1aXJlIGEgbGV0dGVyIGFmdGVyIHRoZQoJbWludXMgc2lnbi4gVGhpcyBtZWFucyB0aGF0IGZpbGUgbmFtZXMgbGlrZSBhLS1iLmFkYiB3aWxsIG5vdCBiZQoJY29uc2lkZXJlZCBwcmVkZWZpbmVkLgoKCSogZnJlZXplLmFkYjogUHJvcGFnYXRlIG5ldyBmbGFnIE11c3RfQmVfT25fQnl0ZV9Cb3VuZGFyeSB0byBjb250YWluaW5nCglyZWNvcmQgVGVzdCBuZXcgZmxhZyBhbmQgZ2l2ZSBkaWFnbm9zdGljIGZvciBiYWQgY29tcG9uZW50IGNsYXVzZS4KCShGcmVlemVfRW50aXR5KTogU2V0IGFsaWdubWVudCBvZiBhcnJheSBmcm9tIGNvbXBvbmVudCBhbGlnbm1lbnQgaW4KCWNhc2VzIHdoZXJlIHRoaXMgaXMgc2FmZSB0byBkby4KCgkqIGV4cF9wYWtkLmFkYjogU2V0IG5ldyBmbGFnIE11c3RfQmVfT25fQnl0ZV9Cb3VuZGFyeSBmb3IgbGFyZ2UgcGFja2VkCglhcnJheXMuCgoJKiBjc3RhbmQuYWRiOiAoQ3JlYXRlX1N0YW5kYXJkKTogU2V0IGFsaWdubWVudCBvZiBTdHJpbmcgdG8gMQoKCSogZWluZm8uYWRzLCBlaW5mby5hZGI6IEludHJvZHVjZSBuZXcgZmxhZyBNdXN0X0JlX09uX0J5dGVfQm91bmRhcnkKCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfQXJyYXlfRXF1YWxpdHkpOiBJbXByb3ZlIGVmZmljaWVuY3kgb2YgZ2VuZXJhdGVkCgljb2RlIGluIHRoZSBjb21tb24gY29uc3RyYWluZWQgYXJyYXkgY2FzZXMuCgoJKiBhLXN0b3Jpby5hZGI6IENoYW5nZSBpbXBsZW1lbnRhdGlvbiB0byBhdm9pZCBwb3NzaWJsZSBhbGlnbm1lbnQKCXByb2JsZW1zIG9uIG1hY2hpbmVzIHJlcXVpcmluZyBzdHJpY3QgYWxpZ25tZW50IChkYXRhIHNob3VsZCBiZSBtb3ZlZAoJYXMgdHlwZSBCdWZmZXIsIG5vdCB0eXBlIEVsbXQpLgoKCSogY2hlY2tzLmFkYiAoQXBwbHlfQXJyYXlfU2l6ZV9DaGVjayk6IEltcHJvdmUgdGhlc2UgY2hlY2tzIGJ5CglraWxsaW5nIHRoZSBvdmVyZmxvdyBjaGVja3Mgd2hpY2ggd2UgcmVhbGx5IGRvIG5vdCBuZWVkICg2NC1iaXRzIGlzCgllbm91Z2gpLgoKMjAwNC0wNi0yNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlZ3ByLmFkYiAoSXNfSW5jbHVkZWRfSW5fR2xvYmFsX0FyY2hpdmUpOiBOZXcgQm9vbGVhbiBmdW5jdGlvbgoJKEFkZF9BcmNoaXZlcy5SZWN1cnNpdmVfQWRkX0FyY2hpdmVzKTogQ2FsbCBBZGRfQXJjaGl2ZV9QYXRoCglpbmNvbmRpdGlvbmFsbHkgZm9yIHRoZSBtYWluIHByb2plY3QuCgkoUmVjdXJzaXZlX0FkZF9BcmNoaXZlcy5BZGRfQXJjaGl2ZV9QYXRoKTogTmV3IHByb2NlZHVyZQoJKExpbmtfRXhlY3V0YWJsZXMuQ2hlY2tfVGltZV9TdGFtcHMpOiBOZXcgcHJvY2VkdXJlCgkoTGlua19FeGVjdXRhYmxlcy5MaW5rX0ZvcmVpZ24pOiBOZXcgcHJvY2VkdXJlCglDaGFuZ2VzIG1hZGUgdG8gcmVkdWNlIG5lc3RpbmcgbGV2ZWwgb2YgdGhpcyBwYWNrYWdlCgkoQ2hlY2spOiBOZXcgcHJvY2VkdXJlCgkoQWRkX1N3aXRjaGVzKTogV2hlbiBub3QgaW4gcXVpZXQgb3V0cHV0LCBjaGVjayB0aGF0IGEgc3dpdGNoIGlzIG5vdAoJdGhlIGNvbmNhdGVuYXRpb24gb2Ygc2V2ZXJhbCB2YWxpZCBzd2l0Y2hlcy4gSWYgaXQgaXMsIGlzc3VlIGEgd2FybmluZy4KCShCdWlsZF9HbG9iYWxfQXJjaGl2ZSk6IElmIHRoZSBnbG9iYWwgYXJjaGl2ZSBpcyByZWJ1aWx0LCBsaW5raW5nIG5lZWQKCXRvIGJlIGRvbmUuCgkoQ29tcGlsZV9Tb3VyY2VzKTogUmVidWlsZGluZyBhIGxpYnJhcnkgYXJjaGl2ZSBkb2VzIG5vdCBpbXBseQoJcmVidWlsZGluZyB0aGUgZ2xvYmFsIGFyY2hpdmUuCgkoQnVpbGRfR2xvYmFsX0FyY2hpdmUpOiBOZXcgcHJvY2VkdXJlCgkoQnVpbGRfTGlicmFyeSk6IE5ldyBuYW1lIGZvciBCdWlsZF9BcmNoaXZlLCBub3cgb25seSBmb3IgbGlicmFyeQoJcHJvamVjdAoJKENoZWNrX0FyY2hpdmVfQnVpbGRlcik6IE5ldyBwcm9jZWR1cmUKCShDcmVhdGVfR2xvYmFsX0FyY2hpdmVfRGVwZW5kZW5jeV9GaWxlKTogTmV3IHByb2NlZHVyZQoJKEdwcm1ha2UpOiBDYWxsIEJ1aWxkX0dsb2JhbF9BcmNoaXZlIGJlZm9yZSBsaW5raW5nCgkqIG1ha2VncHIuYWRiOiBVc2UgT3RoZXJfU291cmNlc19QcmVzZW50IGluc3RlYWQgb2YgU291cmNlc19QcmVzZW50Cgl0aHJvdWdob3V0LgoJKFNjYW5fQXJnKTogRGlzcGxheSB0aGUgQ29weXJpZ2h0IG5vdGljZSB3aGVuIC12IGlzIHVzZWQKCgkqIGduYXRfdWduLnRleGk6IERvY3VtZW50IG5ldyBzd2l0Y2ggLWZpbGVzPSAoVk1TIHF1YWxpZmllciAvRklMRVM9KQoJZm9yIGduYXRscy4KCgkqIHZtc19kYXRhLmFkczogQWRkIHF1YWxpZmllciAvTUFYX05FU1RJTkc9bm5uICgtZ25hdHlMbm5uKSBmb3IgR05BVAoJQ09NUElMRS4KCUFkZCBuZXcgR05BVCBMSVNUIHF1YWxpZmllciAvRklMRVM9CglBZGRlZCBxdWFsaWZpZXIgL0RJUkVDVE9SWT0gdG8gR05BVCBNRVRSSUMKCUFkZGVkIHF1YWxpZmllciAvRklMRVM9IHRvIEdOQVQgTUVUUklDCglBZGRlZCBxdWFsaWZpZXIgL0ZJTEVTIHRvIEdOQVQgUFJFVFRZCgoJKiBzd2l0Y2guYWRiIChJc19Gcm9udF9FbmRfU3dpdGNoKTogUmVmaW5lIHRoZSB0ZXN0IGZvciAtLVJUUyBvciAtZlJUUywKCXRvIHRha2UgaW50byBhY2NvdW50IGJvdGggdmVyc2lvbnMgb2YgdGhlIHN3aXRjaC4KCgkqIHN3aXRjaC1jLmFkYiAoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMpOiBOZXcgc3dpdGNoIC1nbmF0ZXouIFNob3VsZAoJYWx3YXlzIGJlIHRoZSBsYXN0IHN3aXRjaCB0byB0aGUgZ2NjIGRyaXZlci4gRGlzYWJsZSBzd2l0Y2ggc3RvcmluZyBzbwoJdGhhdCBzd2l0Y2hlcyBhdXRvbWF0aWNhbGx5IGFkZGVkIGJ5IHRoZSBnY2MgZHJpdmVyIGFyZSBub3QgcHV0IGluIHRoZQoJQUxJIGZpbGUuCgoJKiBwcmouYWRiIChQcm9qZWN0X0VtcHR5KTogVGFrZSBpbnRvIGFjY291bnQgY2hhbmdlcyBpbiBjb21wb25lbnRzIG9mCglQcm9qZWN0X0RhdGEuCgoJKiBwcmouYWRzIChMYW5ndWFnZXNfUHJvY2Vzc2VkKTogTmV3IGVudW1hcmF0aW9uIHZhbHVlIEFsbF9MYW5ndWFnZXMuCgoJKiBwcmouYWRzIChQcm9qZWN0X0RhdGEpOiBSZW1vdmUgY29tcG9uZW50IExpYl9FbGFib3JhdGlvbjogbmV2ZXIKCXVzZWQuIFNwbGl0IEJvb2xlYW4gY29tcG9uZW50IEFkYV9Tb3VyY2VzX1ByZXNlbnQgaW4gdHdvIEJvb2xlYW4KCWNvbXBvbmVudHMgQWRhX1NvdXJjZXNfUHJlc2VudCBhbmQgT3RoZXJfU291cmNlc19QcmVzZW50LgoJTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBwcmotZW52LmFkYiAoRm9yX0FsbF9Tb3VyY2VfRGlycy5BZGQpOiBVc2UgQWRhX1NvdXJjZXNfUHJlc2VudAoJaW5zdGVhZCBvZiBTb3VyY2VzX1ByZXNlbnQuCgkoU2V0X0FkYV9QYXRocy5BZGQuUmVjdXJzaXZlX0FkZCk6IERpdHRvCgoJKiBwcmotbm1zYy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJKENoZWNrX0FkYV9OYW1pbmdfU2NoZW1lKTogTmV3IG5hbWUgb2YgcHJvY2VkdXJlIENoZWNrX05hbWluZ19TY2hlbWUKCShDaGVja19BZGFfTmFtaW5nX1NjaGVtZV9WYWxpZGl0eSk6IE5ldyBuYW1lIG9mIHByZXZpb3VzIHByb2NlZHVyZQoJQ2hlY2tfQWRhX05hbWluZ19TY2hlbWUuCglDaGFuZ2UgU291cmNlc19QcmVzZW50IHRvIEFkYV9Tb3VyY2VzX1ByZXNlbnQgb3IgT3RoZXJfU291cmNlc19QcmVzZW50Cgl0aHJvdWdob3V0LgoKCSogcHJqLXBhcnQuYWRiIChQb3N0X1BhcnNlX0NvbnRleHRfQ2xhdXNlKTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyCglJbl9MaW1pdGVkLgoJTWFrZSBzdXJlIHRoYXQgYWxsIGN5Y2xlcyB3aGVyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgImxpbWl0ZWQgd2l0aCIKCWFyZSBkZXRlY3RlZC4KCShQYXJzZV9TaW5nbGVfUHJvamVjdCk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBJbl9MaW1pdGVkCgoJKiBwcmotcHJvYy5hZGIgKFJlY3Vyc2l2ZV9DaGVjayk6IFdoZW4gUHJvY2Vzc19MYW5ndWFnZXMgaXMKCUFsbF9MYW5ndWFnZXMsIGNhbGwgZmlyc3QgUHJqLk5tc2MuQWRhX0NoZWNrLCB0aGVuCglQcmouTm1zYy5PdGhlcl9MYW5ndWFnZXNfQ2hlY2suCgoJKiBwcmotcHJvYy5hZGIgKFByb2Nlc3MpOiBVc2UgQWRhX1NvdXJjZXNfUHJlc2VudCBvcgoJT3RoZXJfU291cmNlc19QcmVzZW50IChpbnN0ZWFkIG9mIFNvdXJjZXNfUHJlc2VudCkgZGVwZW5kaW5nIG9uCglQcm9jZXNzX0xhbmd1YWdlcy4KCgkqIGxhbmctc3BlY3MuaDogS2VlcCAtZyBhbmQgLW0gc3dpdGNoZXMgaW4gdGhlIHNhbWUgb3JkZXIsIGFuZCBhcyB0aGUKCWxhc3Qgc3dpdGNoZXMuCgoJKiBsaWIuYWRiIChTd2l0Y2hfU3RvcmluZ19FbmFibGVkKTogTmV3IGdsb2JhbCBCb29sZWFuIGZsYWcKCShEaXNhYmxlX1N3aXRjaF9TdG9yaW5nKTogTmV3IHByb2NlZHVyZS4gU2V0IFN3aXRjaF9TdG9yaW5nX0VuYWJsZWQgdG8KCUZhbHNlLgoJKFN0b3JlX0NvbXBpbGF0aW9uX1N3aXRjaCk6IERvIG5vdGhpbmcgaWYgU3dpdGNoX1N0b3JpbmdfRW5hYmxlZCBpcwoJRmFsc2UuCgoJKiBsaWIuYWRzIChEaXNhYmxlX1N3aXRjaF9TdG9yaW5nKTogTmV3IHByb2NlZHVyZS4KCgkqIG1ha2UuYWRiOiBNb2RpZmljYXRpb25zIHRvIHJlZHVjZSBuZXN0aW5nIGxldmVsIG9mIHRoaXMgcGFja2FnZS4KCShDaGVja19TdGFuZGFyZF9MaWJyYXJ5KTogTmV3IHByb2NlZHVyZQoJKEduYXRtYWtlLkNoZWNrX01haW5zKTogTmV3IHByb2NlZHVyZQoJKEduYXRtYWtlLkNyZWF0ZV9CaW5kZXJfTWFwcGluZ19GaWxlKTogTmV3IHByb2NlZHVyZQoJKENvbXBpbGVfU291cmNlcy5Db21waWxlKTogQWRkIHN3aXRjaCAtZ25hdGV6IGFzIHRoZSBsYXN0IG9wdGlvbgoJKERpc3BsYXkpOiBOZXZlciBkaXNwbGF5IC1nbmF0ZXoKCgkqIE1ha2VmaWxlLmdlbmVyaWM6CglXaGVuIHVzaW5nICQoTUFJTl9PQkpFQ1QpLCBhbHdheXMgdXNlICQoT0JKX0RJUikvJChNQUlOX09CSkVDVCkKCgkqIGduYXRjbWQuYWRiIChDaGVja19Qcm9qZWN0KTogTmV3IGZ1bmN0aW9uCgkoUHJvY2Vzc19MaW5rKTogTmV3IHByb2NlZHVyZSB0byByZWR1Y2UgbmVzdGluZyBkZXB0aAoJKENoZWNrX0ZpbGVzKTogTmV3IHByb2NlZHVyZSB0byByZWR1Y2UgdGhlIG5lc3RpbmcgZGVwdGguCglGb3IgR05BVCBNRVRSSUMsIGluY2x1ZGUgdGhlIGluaGVyaXRlZCBzb3VyY2VzIGluIGV4dGVuZGluZyBwcm9qZWN0cy4KCShHTkFUQ21kKTogV2hlbiBHTkFUIExTIGlzIGludm9rZWQgd2l0aCBhIHByb2plY3QgZmlsZSBhbmQgbm8gZmlsZXMsCglhZGQgdGhlIGxpc3Qgb2YgZmlsZXMgZnJvbSB0aGUgc291cmNlcyBvZiB0aGUgcHJvamVjdCBmaWxlLiBJZiB0aGlzIGxpc3QKCWlzIHRvbyBsb25nLCBwdXQgaXQgaW4gYSB0ZW1wIHRleHQgZmlsZXMgYW5kIHVzZSBzd2l0Y2ggLWZpbGVzPQoJKERlbGV0ZV9UZW1wX0NvbmZpZ19GaWxlcyk6IERlbGV0ZSB0aGUgdGVtcCB0ZXh0IGZpbGUgdGhhdCBjb250YWlucwoJYSBsaXN0IG9mIHNvdXJjZSBmb3IgZ25hdHBwIG9yIGduYXRtZXRyaWMsIGlmIG9uZSBoYXMgYmVlbiBjcmVhdGVkLgoJKEdOQVRDbWQpOiBGb3IgR05BVCBNRVRSSUMgYW5kIEdOQVQgUFJFVFRZLCBpZiB0aGUgbnVtYmVyIG9mIHNvdXJjZXMKCWluIHRoZSBwcm9qZWN0IGZpbGUgaXMgdG9vIGxhcmdlLCBjcmVhdGUgYSB0ZW1wb3JhcnkgdGV4dCBmaWxlIHRoYXQKCWxpc3QgdGhlbSBhbmQgcGFzcyBpdCB0byB0aGUgdG9vbCB3aXRoICItZmlsZXM9PHRlbXAgdGV4dCBmaWxlPiIuCgkoR05BVENtZCk6IEZvciBHTkFUIE1FVFJJQyBhZGQgIi1kPTxhYmplY3QgZGlyPiIgYXMgdGhlIGZpcnN0IHN3aXRjaAoKCSogZ25hdGxpbmsuYWRiIChHbmF0bGluayk6IERvIG5vdCBjb21waWxlIHdpdGggLS1SVFM9IHdoZW4gdGhlCglnZW5lcmF0ZWQgZmlsZSBpcyBpbiBub3QgaW4gQWRhLgoKCSogZ25hdGxzLmFkYjogUmVtb3ZlIGFsbCBwYXJhbWV0ZXJzIEFuZF9TYXZlIHRoYXQgYXJlIG5vIGxvbmdlciB1c2VkLgoJKFNjYW5fTHNfQXJnKTogQWRkIHByb2Nlc3NpbmcgZm9yIC1maWxlcz0KCShVc2FnZSk6IEFkZCBsaW5lIGZvciAtZmlsZXM9CgoJKiBnLW9zX2xpYi5hZGIgKE9uX1dpbmRvd3MpOiBOZXcgZ2xvYmFsIGNvbnN0YW50IEJvb2xlYW4gZmxhZwoJKE5vcm1hbGl6ZV9QYXRobmFtZSk6IFdoZW4gb24gV2luZG93cyBhbmQgdGhlIHBhdGggc3RhcnRzIHdpdGggYQoJZGlyZWN0b3J5IHNlcGFyYXRvciwgbWFrZSBzdXJlIHRoYXQgdGhlIHJlc3VsdGluZyBwYXRoIHdpbGwgc3RhcnQgd2l0aAoJYSBkcml2ZSBsZXR0ZXIuCgoJKiBjbGVhbi5hZGIgKENsZWFuX0FyY2hpdmUpOiBOZXcgcHJvY2VkdXJlCgkoQ2xlYW5fUHJvamVjdCk6IFdoZW4gdGhlcmUgaXMgbm9uLUFkYSBjb2RlLCBkZWxldGUgdGhlIGdsb2JhbCBhcmNoaXZlLAoJdGhlIGFyY2hpdmUgZGVwZW5kZW5jeSBmaWxlcywgdGhlIG9iamVjdCBmaWxlcyBhbmQgdGhlaXIgZGVwZW5kZW5jeQoJZmlsZXMsIGlmIHRoZXkgZXhpc3QuCgkoR25hdGNsZWFuKTogQ2FsbCBQcmouUGFycy5QYXJzZSBmb3IgQWxsX0xhbmd1YWdlcywgbm90IGZvciBBZGEgb25seS4KCjIwMDQtMDYtMjUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNpbmZvLmFkczogRml4IHR5cG8gaW4gY29tbWVudC4KCgkqIHNlbV9kaXN0LmFkYiAoUHJvY2Vzc19SZW1vdGVfQVNUX0F0dHJpYnV0ZSk6IFNpbXBsaWZ5IGNvZGUgdGhhdCB1c2VzCgl0aGUgVFNTIGZvciByZW1vdGUgYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZXMsIHNpbmNlIHRoZXNlIFRTUyBhcmUKCWFsd2F5cyBwcmVzZW50IG9uY2UgdGhlIHR5cGUgaGFzIGJlZW4gYW5hbHl6ZWQuCgkoUkFTX0VfRGVyZWZlcmVuY2UpOiBTYW1lLgoKCSogc2VtX2F0dHIuYWRiIChBbmFseXplX0F0dHJpYnV0ZSk6IFdoZW4gYW5hbHlzaXMgb2YgYW4gYXR0cmlidXRlCglyZWZlcmVuY2UgcmFpc2VzIEJhZF9BdHRyaWJ1dGUsIG1hcmsgdGhlIHJlZmVyZW5jZSBhcyBhbmFseXplZCBzbyB0aGUKCW5vZGUgKGFuZCBhbnkgY2hpbGRyZW4gcmVzdWx0aW5nIGZyb20gcmV3cml0ZXMgdGhhdCBjb3VsZCBoYXZlIG9jY3VycmVkCglkdXJpbmcgdGhlIGFuYWx5c2lzIHRoYXQgdWx0aW1hdGVseSBmYWlsZWQpIGlzIG5vdCBhbmFseXplZCBhZ2Fpbi4KCgkqIGV4cF9jaDcuYWRzIChGaW5kX0ZpbmFsX0xpc3QpOiBGaXggbWlzYWxpZ25lZCBjb21tZW50LgoKCSogZXhwX2Rpc3QuYWRiOiBNaW5vciBjb21tZW50IGZpeC4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9BbGxvY2F0b3IpOiBGb3IgYW4gYWxsb2NhdG9yIHdob3NlIGV4cGVjdGVkCgl0eXBlIGlzIGFuIGFub255bW91cyBhY2Nlc3MgdHlwZSwgbm8gdW5jaGVja2VkIGRlYWxsb2NhdGlvbiBvZiB0aGUKCWFsbG9jYXRlZCBvYmplY3QgY2FuIG9jY3VyLiBJZiB0aGUgb2JqZWN0IGlzIGNvbnRyb2xsZWQsIGF0dGFjaCBpdCB3aXRoCglhIGNvdW50IG9mIDEuIFRoaXMgYWxsb3dzIGF0dGFjaG1lbnQgdG8gdGhlIEdsb2JhbF9GaW5hbF9MaXN0LCBpZgoJbm8gb3RoZXIgcmVsZXZhbnQgbGlzdCBpcyBhdmFpbGFibGUuCgkoR2V0X0FsbG9jYXRvcl9GaW5hbF9MaXN0KTogRm9yIGFuIGFub255bW91cyBhY2Nlc3MgdHlwZSB0aGF0IGlzCgl0aGUgdHlwZSBvZiBhIGRpc2NyaW1pbmFudCBvciByZWNvcmQgY29tcG9uZW50LCB0aGUgY29ycmVzcG9uZGluZwoJZmluYWxpc2F0aW9uIGxpc3QgaXMgdGhlIG9uZSBvZiB0aGUgc2NvcGUgb2YgdGhlIHR5cGUuCgoyMDA0LTA2LTI1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoUmVwbGFjZV9UeXBlKTogV2hlbiBjb21wdXRpbmcgdGhlIHNpZ25hdHVyZSBvZiBhbgoJaW5oZXJpdGVkIHN1YnByb2dyYW0sIHVzZSB0aGUgZmlyc3Qgc3VidHlwZSBpZiB0aGUgZGVyaXZlZCB0eXBlCglkZWNsYXJhdGlvbiBoYXMgbm8gY29uc3RyYWludC4KCgkqIGV4cF9jaDYuYWRiIChBZGRfQ2FsbF9CeV9Db3B5X0NvZGUpOiBDaGVjayB0aGF0IGZvcm1hbCBpcyBhbiBhcnJheQoJYmVmb3JlIGFwcGx5aW5nIHByZXZpb3VzIG9wdGltaXphdGlvbi4gTWlub3IgY29kZSBjbGVhbnVwLgoKCSogZXhwX3V0aWwuYWRiIChJc19Qb3NzaWJseV9VbmFsaWduZWRfU2xpY2UpOiBJZiB0aGUgY29tcG9uZW50IGlzCglwbGFjZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhbiB1bnBhY2tlZCByZWNvcmQgd2l0aG91dCBleHBsaWNpdAoJYWxpZ25tZW50LCBhIHNsaWNlIG9mIGl0IHdpbGwgYmUgYWxpZ25lZCBhbmQgZG9lcyBub3QgbmVlZCBhIGNvcHkgd2hlbgoJdXNlZCBhcyBhbiBhY3R1YWwuCgoyMDA0LTA2LTI1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1NTkxCglQUiBhZGEvMTU1OTIKCSogc2VtX2NoOC5hZGIgKEF0dHJpYnV0ZV9SZW5hbWluZyk6IFJlamVjdCByZW5hbWluZyBpZiB0aGUgYXR0cmlidXRlCglyZWZlcmVuY2UgaXMgd3JpdHRlbiB3aXRoIGV4cHJlc3Npb25zIG1pbWlja2luZyBwYXJhbWV0ZXJzLgoKMjAwNC0wNi0yNSAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBnbmF0LmNvbT4KCglQUiBhZGEvMTU1ODkKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBBZGQgYWRkaXRpb25hbCBjaGVjayB0bwoJU1RFUCAyYS4gVGhlIGNvbnN0cmFpbnRzIG9mIGEgZnVsbCB0eXBlIGRlY2xhcmF0aW9uIG9mIGEgZGVyaXZlZCByZWNvcmQKCXR5cGUgYXJlIGNoZWNrZWQgZm9yIGNvbmZvcm1hbmNlIHdpdGggdGhvc2UgZGVjbGFyZWQgaW4gdGhlCgljb3JyZXNwb25kaW5nIHByaXZhdGUgZXh0ZW5zaW9uIGRlY2xhcmF0aW9uLiBUaGUgbWVzc2FnZQoJIm5vdCBjb25mb3JtYW50IHdpdGggcHJldmlvdXMgZGVjbGFyYXRpb24iIGlzIGVtaXR0ZWQgaWYgYW4gZXJyb3IgaXMKCWRldGVjdGVkLgoKMjAwNC0wNi0yNSAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogZy10cmFjZWIuYWRzOiBEb2N1bWVudCB0aGUgbmVlZCBmb3IgLUUgYmluZGVyIHN3aXRjaCBpbiB0aGUgc3BlYy4KCgkqIGctdHJhc3ltLmFkczogRG9jdW1lbnQgdGhlIG5lZWQgZm9yIC1FIGJpbmRlciBzd2l0Y2ggaW4gdGhlIHNwZWMuCgoyMDA0LTA2LTI1ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fcHJhZy5hZGI6IEFkZCBoYW5kbGluZyBvZiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nLgoKCSogc25hbWVzLmgsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBlbnRyeSBmb3IgcHJhZ21hCglEZXRlY3RfQmxvY2tpbmcuCgoJKiBzLXJpZGVudC5hZHM6IENoYW5nZSByZWZlcmVuY2UgdG8gcHJhZ21hIERldGVjdF9CbG9ja2luZy4KCgkqIHRhcmdwYXJtLmFkcywgdGFyZ3Bhcm0uYWRiOiBBbGxvdyBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGluCglzeXN0ZW0uYWRzLgoKCSogb3B0LmFkcyAoRGV0ZWN0X0Jsb2NraW5nKTogTmV3IEJvb2xlYW4gdmFyaWFibGUgKGRlZmF1bHRlZCB0byBGYWxzZSkKCXRvIGluZGljYXRlIHdoZXRoZXIgcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUuCgoJKiBwYXItcHJhZy5hZGI6IEFkZCBlbnRyeSBmb3IgcHJhZ21hIERldGVjdF9CbG9ja2luZy4KCgkqIHJ0c2ZpbmQuYWRiIChSVFVfTG9hZGVkKTogRml4IHRoZSB0ZW1wb3Jhcnkga2x1ZGdlIHRvIGdldCBwYXN0IGJ1ZwoJb2Ygbm90IGhhbmRsaW5nIFdJVEguCglOb3RlIHRoYXQgdGhpcyByZXBsYWNlcyB0aGUgcHJldmlvdXMgdXBkYXRlIHdoaWNoIHdhcyBpbmNvcnJlY3QuCgoyMDA0LTA2LTI1ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKFJlX0luc3RhbGxfVXNlX0NsYXVzZXMpOiBGb3JjZSB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZQoJdXNlLWNsYXVzZXMgdG8gaGF2ZSBhIGNsZWFuIGVudmlyb25tZW50LgoKCSogc2VtX2NoOC5hZGIgKEluc3RhbGxfVXNlX0NsYXVzZXMpOiBBZGRpdGlvbiBvZiBhIG5ldyBmb3JtYWwgdG8gZm9yY2UKCXRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIHVzZS1jbGF1c2VzIHRvIHN0YWJsaXNoIGEgY2xlYW4gZW52aXJvbm1lbnQgaW4KCWNhc2Ugb2YgY29tcGlsYXRpb24gb2YgYSBzZXBhcmF0ZSB1bml0OyBvdGhlcndpc2UgdGhlIGNhbGwgdG8KCXVzZV9vbmVfcGFja2FnZSBpcyBwcm90ZWN0ZWQgYnkgdGhlIGJhcnJpZXIgQXBwbGljYWJsZV9Vc2UuCgoJKiBzZW1fY2g4LmFkcyAoSW5zdGFsbF9Vc2VfQ2xhdXNlcyk6IEFkZGl0aW9uIG9mIGEgbmV3IGZvcm1hbCB0byBmb3JjZQoJdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgdXNlLWNsYXVzZXMgdG8gc3RhYmxpc2ggYSBjbGVhbiBlbnZpcm9ubWVudCBpbgoJY2FzZSBvZiBjb21waWxhdGlvbiBvZiBhIHNlcGFyYXRlIHVuaXQuCgkoRW5kX1VzZV9DbGF1c2VzKTogTWlub3IgY29tbWVudCBjbGVhbnVwLgoKMjAwNC0wNi0yNSAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBkZXNjcmlwdGlvbiBvZiB0aGUgZ25hdHBwICdmaWxlcycgc3dpdGNoCgoyMDA0LTA2LTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJhbnMuYyAoZ25hdF9naW1wbGlmeV9zdG10KTogVXBkYXRlIGdpbXBsaWZ5X3R5cGVfc2l6ZXMgY2FsbC4KCjIwMDQtMDYtMjAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGVsYWJvcmF0ZV9leHByZXNzaW9uLCBlbGFib3JhdGVfZXhwcmVzc2lvbl8xKTogQXJndW1lbnRzCglub3cgYm9vbCBpbnN0ZWFkIG9mIGludC4KCShnbmF0X3RvX2dudV9lbnRpdHksIGVsYWJvcmF0ZV9leHByZXNzaW9uXzEpOiBOZXcgYXJnIHRvIENPTVBPTkVOVF9SRUYuCgkqIHRyYW5zLmMgKGdudV9zd2l0Y2hfbGFiZWxfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkoZ25hdF90b19nbnUsIE5fT2JqZWN0X1JlbmFtaW5nX0RlY2xhcmF0aW9uKTogUmVzdWx0IGlzIHdoYXQgdGhlCgllbGFib3JhdGlvbiBvZiByZW5hbWVkIGVudGl0eSByZXR1cm5zLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fQ2FzZV9TdGF0ZW1lbnQpOiBBZGQgYnJhbmNoZXMgdG8gZW5kIGxhYmVsLgoJKGFkZF9kZWNsX3N0bXQpOiBEb24ndCBhZGQgVFlQRV9ERUNMIGZvciBVTkNPTlNUUkFJTkVEX0FSUkFZX1RZUEUuCgkoZ25hdF9naW1wbGlmeV9zdG10KTogVXNlIGFsbG9jX3N0bXRfbGlzdCwgbm90IGJ1aWxkX2VtcHR5X3N0bXQuCgkoZ25hdF9naW1wbGlmeV9zdG10LCBjYXNlIERFQ0xfU1RNVCk6IGdpbXBsaWZ5IERFQ0xfU0laRSBhbmQKCURFQ0xfU0laRV9VTklUIGFuZCBzaW1wbGlmeSB2YXJpYWJsZS1zaXplZCBjYXNlLgoJKGduYXRfZ2ltcGxpZnlfdHlwZV9zaXplcywgZ25hdF9naW1wbGlmeV9vbmVfc2l6ZXBvcyk6IERlbGV0ZWQuCglDYWxsZXJzIGNoYW5nZXMgdG8gY2FsbCBnaW1wbGlmeV90eXBlX3NpemVzIGFuZCBnaW1wbGlmeV9vbmVfc2l6ZXBvcy4KCShnbmF0X3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBBZGQgYXJnIHRvIENPTVBPTkVOVF9SRUYuCgkoYnVpbGRfdW5pdF9lbGFiKTogRGlzYWJsZSBmb3Igbm93LgoJKiB1dGlscy5jIChtYXJrX3Zpc2l0ZWQpOiBOZXcgZnVuY3Rpb24uCgkocHVzaGRlY2wpOiBXYWxrIHRyZWUgdG8gY2FsbCBpdCBmb3IgZ2xvYmFsIGRlY2wuCgkodXBkYXRlX3BvaW50ZXJfdG8pOiBVcGRhdGUgYWxsIHZhcmlhbnRzIG9mIHBvaW50ZXIgYW5kIHJlZiB0eXBlcy4KCUFkZCBhcmcgdG8gQ09NUE9ORU5UX1JFRi4KCShjb252ZXJ0KTogTGlrZXdpc2UuCglNb3ZlIGNoZWNrIGZvciBjb252ZXJ0aW5nIGJldHdlZW4gdmFyaWFudHMgbG93ZXIgZG93bi4KCSogdXRpbHMyLmMgKGJ1aWxkX3NpbXBsZV9jb21wb25lbnRfcmVmKTogQWRkIGFyZyB0byBDT01QT05FTlRfUkVGLgoJKGJ1aWxkX2FsbG9jYXRvcik6IERvbid0IGZvcmNlIHR5cGUgb2YgTU9ESUZZX0VYUFIuCgkoZ25hdF9tYXJrX2FkZHJlc3NhYmxlLCBjYXNlIFZBUl9ERUNMKTogVW5jb25kaXRpb25hbGx5IGNhbGwKCXB1dF92YXJfaW50b19zdGFjay4KCjIwMDQtMDYtMTQgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhZGEtdHJlZS5kZWYgKExPT1BfU1RNVCwgRVhJVF9TVE1UKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkqIGFkYS10cmVlLmggKEVYSVRfU1RNVF9MQUJFTCk6IFJlbmFtZWQgZnJvbSBFWElUX1NUTVRfTE9PUC4KCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpOiBBbHNvIHNldCBmb3JjZV9nbG9iYWwgZm9yIGltcG9ydGVkCglzdWJwcm9ncmFtcy4KCSogdHJhbnMuYyAoZ251X2xvb3BfbGFiZWxfc3RhY2spOiBSZW5hbWVkIGZyb20gZ251X2xvb3Bfc3RtdF9zdGFjazsKCWFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoZ25hdF90b19nbnUsIGNhc2UgTl9Mb29wX1N0YXRlbWVudCwgY2FzZSBOX0V4aXRfU3RhdGVtZW50KTogQ2hhbmdlCgl0aGUgd2F5IHRoYXQgRVhJVF9TVE1UIGZpbmRzIHRoZSBsb29wIGxhYmVsLgoJKGduYXRfZ2ltcGxpZnlfc3RtdCwgY2FzZSBMT09QX1NUTVQsIEVYSVRfU1RNVCk6IExpa2V3aXNlLgoJKGduYXRfZ2ltcGxpZnlfc3RtdCwgY2FzZSBERUNMX1NUTVQpOiBIYW5kbGUgdmFyaWFibGUtc2l6ZWQgZGVjbHMgaGVyZS4KCShhZGRfc3RtdCk6IFVzZSBhbm5vdGF0ZV93aXRoX2xvY3VzIGluc3RlZCBvZiBzZXR0aW5nIGRpcmVjdGx5LgoJKHBvc190b19jb25zdHJ1Y3QpOiBTZXQgVFJFRV9QVVJQT1NFIG9mIGVhY2ggZW50cnkgdG8gaW5kZXguCgkoZ25hdF9zdGFiaWxpemVfcmVmZXJlbmNlLCBjYXNlIEFSUkFZX1JBTkdFX1JFRik6IE1lcmdlIHdpdGggQVJSQVlfUkVGLgoJKiB1dGlscy5jIChnbmF0X2luc3RhbGxfYnVpbHRpbnMpOiBJbnN0YWxsIF9fYnVpbHRpbl9tZW1jbXAuCgkoYnVpbGRfdm1zX2Rlc2NyaXB0b3IpOiBBZGQgZXh0cmEgYXJncyB0byBBUlJBWV9SRUYuCgkoY29udmVydCk6IFVzZSBWSUVXX0NPTlZFUlRfRVhQUiBiZXR3ZWVuIGFnZ3JlZ2F0ZSB0eXBlcy4KCSogdXRpbHMyLmMgKGduYXRfdHJ1dGh2YWx1ZV9jb252ZXJzaW9uLCBjYXNlIElOVEVHRVJfQ1NULCBSRUFMX0NTVCk6CglOZXcgY2FzZXMuCgkoYnVpbGRfYmluYXJ5X29wKTogRG9uJ3QgbWFrZSBleHBsaWNpdCBDT05WRVJUX0VYUFIuCglBZGQgZXh0cmEgcmdzIHRvIEFSUkFZX1JFRi4KCjIwMDQtMDYtMTQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGduYXRfdWduLnRleGk6IERvY3VtZW50IHJlbG9jYXRhYmxlIHZzLiBkeW5hbWljIExpYnJhcnlfS2luZCBvbgoJV2luZG93cy4gIEZpeCBtaW5vciB0eXBvLgoKCSogbWxpYi10Z3QtbWluZ3cuYWRiOiBOZXcgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlIEdDQyAtc2hhcmVkIG9wdGlvbgoJd2hpY2ggaXMgbm93IHN1cHBvcnRlZCBvbiBXaW5kb3dzLiBXaXRoIHRoaXMgaW1wbGVtZW50YXRpb24gdXNpbmcgdGhlCglMaWJyYXJ5IFByb2plY3QgZmVhdHVyZSBpcyBubyBkaWZmZXJlbnQgb24gV2luZG93cyB0aGFuIG9uIFVOSVguCgoyMDA0LTA2LTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2VncHIuYWRiIChDb21waWxlX1NvdXJjZXMpOiBOb3RoaW5nIHRvIGRvIHdoZW4gdGhlcmUgYXJlIG5vCglub24tQWRhIHNvdXJjZXMuCgoJKiBtbGliLXRndC12eHdvcmtzLmFkYiAoTGlicmFyeV9FeGlzdHNfRm9yKTogUmVtb3ZlIGluY29ycmVjdCBjb21tZW50CgoJKiBwcmotcGFydC5hZGIgKFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogV2hlbiBhIGR1cGxpY2F0ZSBwcm9qZWN0IG5hbWUgaXMKCWZvdW5kLCBzaG93IHRoZSBwcm9qZWN0IG5hbWUgYW5kIHRoZSBwYXRoIG9mIHRoZSBwcmV2aW91c2x5IHBhcnNlZAoJcHJvamVjdCBmaWxlLgoKMjAwNC0wNi0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNi5hZGIgKEFkZF9DYWxsX0J5X0NvcHlfQ29kZSk6IEZvciBhbiBvdXQtcGFyYW1ldGVyIHRoYXQgaXMgYW4KCWFycmF5LCBhdm9pZCBjb3B5aW5nIHRoZSBhY3R1YWwgYmVmb3JlIHRoZSBjYWxsLgoKMjAwNC0wNi0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZy1kZWJwb28uYWRiOiBSZW1vdmUgYWxpZ25tZW50IGFzc3VtcHRpb25zIGZyb20gR05BVC5EZWJ1Z19Qb29scy4KCUluc3RlYWQsIGFsbG9jYXRlIG1lbW9yeSBvbiB3b3JzdC1jYXNlIGFsaWdubWVudCBhc3N1bXB0aW9ucywgYW5kIHRoZW4KCXJldHVybiBhbiBhbGlnbmVkIGFkZHJlc3Mgd2l0aGluIHRoZSBhbGxvY2F0ZWQgem9uZS4KCjIwMDQtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYmluZGdlbi5hZGIgKEdlbl9BZGFpbml0X0FkYSk6IERvIG5vdCBnZW5lcmF0ZSBleHRlcm5hbCByZWZlcmVuY2VzIHRvCgllbGFiIGVudGl0aWVzIGluIHByZWRlZmluZWQgdW5pdHMgaW4gTm9fUnVuX1RpbWVfTW9kZS4KCShHZW5fQWRhaW5pdF9DKTogU2FtZSBmaXgKCShHZW5fRWxhYl9DYWxsc19BZGEpOiBEbyBub3QgZ2VuZXJhdGUgY2FsbHMgdG8gZWxhYm9yYXRlIHByZWRlZmluZWQKCXVuaXRzIGluIE5vX1J1bl9UaW1lX01vZGUKCShHZW5fRWxhYl9DYWxsc19DKTogU2FtZSBmaXgKCgkqIHN5bWJvbHMtdm1zLWFscGhhLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBnLWRlYnBvby5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogbGliLmFkYiAoSW5fU2FtZV9FeHRlbmRlZF9Vbml0KTogVmVyc2lvbiB3b3JraW5nIG9uIG5vZGUgaWQncwoKCSogbGliLmFkcyAoSW5fU2FtZV9FeHRlbmRlZF9Vbml0KTogVmVyc2lvbiB3b3JraW5nIG9uIG5vZGUgaWQncwoKCSogbGliLXhyZWYuYWRiOiBNaW5vciBjbGVhbnVwLCB1c2UgbmV3IHZlcnNpb24gb2YgSW5fU2FtZV9FeHRlbmRlZF9Vbml0Cgl3b3JraW5nIG9uIG5vZGVzLgoKCSogbWFrZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcGFyLWNoMTIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHBhci1wcmFnLmFkYjogQWRkIGR1bW15IGVudHJ5IGZvciBwcmFnbWEgUHJvZmlsZV9XYXJuaW5ncwoKCSogcHJqLXN0cnQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHJlc3RyaWN0LmFkcywgcmVzdHJpY3QuYWRiOiBSZWRvIGhhbmRsaW5nIG9mIHByb2ZpbGUgcmVzdHJpY3Rpb25zIHRvCgliZSBtb3JlIGdlbmVyYWwuCgoJKiBzZW1fYXR0ci5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX2NoNy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX2VsYWIuYWRiIChDaGVja19BX0NhbGwpOiBEZWFsIHdpdGggcHJvYmxlbSBvZiBjYWxsaW5nIGluaXQgcHJvYwoJZm9yIHR5cGUgaW4gdGhlIHNhbWUgdW5pdCBhcyB0aGUgb2JqZWN0IGRlY2xhcmF0aW9uLgoKCSogc2VtX3ByYWcuYWRiIChDaGVja19BcmdfSXNfRXh0ZXJuYWxfTmFtZSk6IE5ldyBwcm9jZWR1cmUsIGFsbG93cwoJc3RhdGljIHN0cmluZyBleHByZXNzaW9ucyBhbmQgbm90IGp1c3Qgc3RyaW5nIGxpdGVyYWxzLgoJTWlub3IgcmVmb3JtYXR0aW5nCgkoU2V0X1dhcm5pbmcpOiBSZXNldCByZXN0cmljdGlvbiB3YXJuaW5nIGZsYWcgZm9yIHJlc3RyaWN0aW9uIHByYWdtYQoJSW1wbGVtZW50IHByYWdtYSBQcm9maWxlX1dhcm5pbmdzCglJbXBsZW1lbnQgcHJhZ21hIFByb2ZpbGUgKFJlc3RyaWN0ZWQpCglHaXZlIG9ib2xlc2NlbnQgbWVzc2FnZXMgZm9yIG9sZCByZXN0cmljdGlvbnMgYW5kIHByYWdtYXMKCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgbmV3IGVudHJ5IGZvciBwcmFnbWEKCVByb2ZpbGVfV2FybmluZ3MuCgoJKiBzLXJpZGVudC5hZHM6IEFkZCBkZWNsYXJhdGlvbnMgZm9yIHJlc3RyaWN0aW9ucyByZXF1aXJlZCBieSBwcm9maWxlCglSZXN0cmljdGVkIGFuZCBwcm9maWxlIFJhdmVuc2Nhci4KCgkqIHRhcmdwYXJtLmFkcywgdGFyZ3Bhcm0uYWRiOiBBbGxvdyBwcmFnbWEgUHJvZmlsZSBpbiBzeXN0ZW0uYWRzCgoJKiBnbmF0X3Vnbi50ZXhpOiBDb3JyZWN0IHNvbWUgbWlzc2luZyBlbnRyaWVzIGluIHRoZSBsaXN0IG9mIEdOQVQKCWNvbmZpZ3VyYXRpb24gcHJhZ21hcy4KCjIwMDQtMDYtMTEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogSXNzdWUgc3dpdGNoIC1SIHRvCglnbmF0c3ltLCB3aGVuIHN5bWJvbCBwb2xpY3kgaXMgUmVzdHJpY3RlZC4KCgkqIG1saWItdGd0LXZtcy1pYTY0LmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogSXNzdWUgc3dpdGNoIC1SIHRvCglnbmF0c3ltLCB3aGVuIHN5bWJvbCBwb2xpY3kgaXMgUmVzdHJpY3RlZC4KCgkqIHN5bWJvbHMtdm1zLWFscGhhLmFkYiAoSW5pdGlhbGl6ZSk6IFdoZW4gc3ltYm9sIHBvbGljeSBpcyBSZXN0cmljdGVkLAoJcmVhZCB0aGUgc3ltYm9sIGZpbGUuCgkoRmluYWxpemUpOiBGYWlsIGluIHN5bWJvbCBwb2xpY3kgUmVzdHJpY3RlZCBpZiBhIHN5bWJvbCBpbiB0aGUgb3JpZ2luYWwKCXN5bWJvbCBmaWxlIGlzIG5vdCBpbiB0aGUgb2JqZWN0IGZpbGVzLiBEbyBub3QgY3JlYXRlIGEgbmV3IHN5bWJvbCBmaWxlCgl3aGVuIHN5bWJvbCBwb2xpY3kgaXMgUmVzdHJpY3RlZC4KCgkqIGduYXRiaW5kLmFkYiAoR25hdGJpbmQpOiBJbml0aWFsaXplIFNuYW1lcywgYmVjYXVzZSBTbmFtZXMgaXMgdXNlZAoJaW4gU2NuZy4KCgkqIGduYXRzeW0uYWRiIChQYXJzZV9WbWRfTGluZSk6IFByb2Nlc3MgbmV3IHN3aXRjaCAtUiBmb3Igc3ltYm9sIHBvbGljeQoJUmVzdHJpY3RlZC4KCShVc2FnZSk6IExpbmUgZm9yIG5ldyBzd2l0Y2ggLVIKCgkqIG1ha2UuYWRiIChJbml0aWFsaXplKTogV2hlbiB0aGUgcGxhdGZvcm0gaXMgbm90IFZNUywgYWRkIHRoZQoJZGlyZWN0b3J5IHdoZXJlIGduYXRtYWtlIGlzIGludm9rZWQgaW4gdGhlIGZyb250IG9mIHRoZSBwYXRoLCBpZgoJZ25hdG1ha2UgaXMgaW52b2tlZCB3aXRoIGRpcmVjdG9yeSBpbmZvcm1hdGlvbi4gIENoYW5nZSB0aGUgU2Nhbl9BcmdzCgl3aGlsZSBsb29wIHRvIGEgZm9yIGxvb3AuCgkoUmVjdXJzaXZlX0NvbXB1dGVfRGVwdGgpOiBSZW1vdmUgcGFyYW1ldGVyIFZpc2l0ZWQuIEltcHJvdmUgZWZmaWNpZW5jeToKCWlmIERlcHRoIGlzIGVxdWFsIG9yIGdyZWF0ZXIgdGhhbiB0aGUgcHJvcG9zZWQgZGVwdGgsIHRoZXJlIGlzIG5vdGhpbmcKCXRvIGRvLgoJKEluaXRpYWxpemUpOiBDYWxsIFJlY3Vyc2l2ZV9Db21wdXRlX0RlcHRoIHdpdGggaW5pdGlhbCBEZXB0aCBlcXVhbCB0byAxCglpbnN0ZWFkIG9mIDAuCgoJKiBwcmouYWRzOiBBZGQgbmV3IHN5bWJvbCBwb2xpY3kgUmVzdHJpY3RlZC4KCgkqIHByai1kZWN0LmFkYiAoUGFyc2VfQ2FzZV9Db25zdHJ1Y3Rpb24pOiBDYWxsIEVuZF9DYXNlX0NvbnN0cnVjdGlvbgoJd2l0aCB0aGUgbmV3IHBhcmFtZXRlcnMgQ2hlY2tfQWxsX0xhYmVscyBhbmQgQ2FzZV9Mb2NhdGlvbi4KCgkqIHByai1ubXNjLmFkYiAoQWRhX0NoZWNrKTogUHJvY2VzcyBuZXcgc3ltYm9sIHBvbGljeSBSZXN0cmljdGVkCgkoTGlicmFyeV9TeW1ib2xfRmlsZSBuZWVkcyB0byBiZSBkZWZpbmVkKS4KCgkqIHByai1zdHJ0LmFkYiAoRW5kX0Nhc2VfQ29uc3RydWN0aW9uKTogTmV3IHBhcmFtZXRlcnMgQ2hlY2tfQWxsX0xhYmVscwoJYW5kIENhc2VfTG9jYXRpb24gSWYgQ2hlY2tfQWxsX0xhYmVscyBpcyBUcnVlLCBjaGVjayB0aGF0IGFsbCB2YWx1ZXMgb2YKCXRoZSBzdHJpbmcgdHlwZSBhcmUgdXNlZCwgYW5kIG91dHB1dCB3YXJuaW5nKHMpIGlmIHRoZXkgYXJlIG5vdC4KCgkqIHByai1zdHJ0LmFkcyAoRW5kX0Nhc2VfQ29uc3RydWN0aW9uKTogTmV3IHBhcmFtZXRlcnMgQ2hlY2tfQWxsX0xhYmVscwoJYW5kIENhc2VfTG9jYXRpb24uCgoJKiBnbmF0X3Vnbi50ZXhpOiBSZW9yZGVyIHN1YmNsYXVzZXMgaW4gbWVudXMgIlN3aXRjaGVzIGZvciBnY2MiCgoJKiBnbmF0X3Vnbi50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgbGlicmFyeSBkaXJlY3RvcnkgaW4KCUxpYnJhcnkgUHJvamVjdHMuCgoJKiBtYWtlZ3ByLmFkYiAoRGlzcGxheV9Db21tYW5kKTogSW4gdmVyYm9zZSBtb2RlLCBhbHNvIGRpc3BsYXkgdGhlCgl2YWx1ZSBvZiB0aGUgQ1BBVEggZW52IHZhciwgd2hlbiB0aGUgY29tcGlsZXIgaXMgZ2NjLgoJKEluaXRpYWxpemUpOiBDaGFuZ2UgdGhlIFNjYW5fQXJncyB3aGlsZSBsb29wIHRvIGEgZm9yIGxvb3AKCShDb21waWxlX0luZGl2aWR1YWxfU291cmNlcyk6IENoYW5nZSBkaXJlY3RvcnkgdG8gb2JqZWN0IGRpcmVjdG9yeQoJYmVmb3JlIGNvbXBpbGF0aW9ucy4KCgkqIHN5bWJvbHMuYWRzOiBOZXcgc3ltYm9sIHBvbGljeSBSZXN0cmljdGVkLgoKMjAwNC0wNi0xMSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogYS1leGNlcHQuYWRiIChSYWlzZV9BZnRlcl9TZXR1cCBmYW1pbHkpOiBSZW1vdmUuIFRoZSByZXNwb25zaWJpbGl0eQoJaXMgbm93IHRha2VuIGNhcmUgb2YgaW50ZXJuYWxseSBpbiB0aGUgRXhjZXB0aW9uX1Byb3BhZ2F0aW9uIHBhY2thZ2UKCWFuZCBkb2VzIG5vdCByZXF1aXJlIGNsaWVudHMgYXNzaXN0YW5jZSBhbnkgbW9yZS4KCgkqIGEtZXhleHByLmFkYiAoSXNfU2V0dXBfQW5kX05vdF9Qcm9wYWdhdGVkLAoJU2V0X1NldHVwX0FuZF9Ob3RfUHJvcGFnYXRlZCwgYW5kIENsZWFyX1NldHVwX0FuZF9Ob3RfUHJvcGFnYXRlZCk6IE5ldwoJZnVuY3Rpb25zLiBIZWxwZXJzIHRvIG1haW50YWluIGEgcHJlZGljYXRlIHJlcXVpcmVkIGluIHRoZSBoYW5kbGluZyBvZgoJb2NjdXJyZW5jZSB0cmFuc2ZlciBiZXR3ZWVuIHRhc2tzLgoJVGhpcyBpcyBub3cgaGFuZGxlZCBpbnRlcm5hbGx5IGFuZCBkb2VzIG5vdCByZXF1aXJlIGNsaWVudHMgYXNzaXN0YW5jZQoJZm9yIHRoZSBzZXR1cC9wcm9wYWdhdGUgc2VwYXJhdGlvbiBhbnltb3JlLgoJKFNldHVwX0V4Y2VwdGlvbiwgUHJvcGFnYXRlX0V4Y2VwdGlvbik6IFNpbXBsaWZ5IHRoZSBQcml2YXRlX0RhdGEKCWFsbG9jYXRpb24gc3RyYXRlZ3ksIGhhbmRsZSB0aGUgU2V0dXBfQW5kX05vdF9Qcm9wYWdhdGVkIHByZWRpY2F0ZSBhbmQKCWRvY3VtZW50LgoKCSogcy10YWVuY2EuYWRiIChDaGVja19FeGNlcHRpb24pOiBVc2UgcmFpc2Vfd2l0aF9tc2cgaW5zdGVhZCBvZgoJcmFpc2VfYWZ0ZXJfc2V0dXAsIG5vdyB0aGF0IGV2ZXJ5dGhpbmcgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUKCXNldHVwL3Byb3BhZ2F0aW9uIGVuZ2luZS4KCjIwMDQtMDYtMTEgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0lubGluZWRfQ2FsbCk6IEFkZCBmdW5jdGlvbiBGb3JtYWxfSXNfVXNlZF9PbmNlLgoJQWRkIGFkZGl0aW9uYWwgY29uZGl0aW9ucyBmb3IgdGhlIGNhc2Ugb2YgYW4gYWN0dWFsIGJlaW5nIGEgc2ltcGxlCgluYW1lIG9yIGxpdGVyYWwuIEltcHJvdmUgaW5saW5pbmcgYnkgcHJldmVudGluZyB0aGUgZ2VuZXJhdGlvbgoJb2YgdGVtcG9yYXJpZXMgd2l0aCBhIHNob3J0IGxpZmV0aW1lIChvbmUgdXNlKS4KCjIwMDQtMDYtMTEgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAZ25hdC5jb20+CgoJUFIgYWRhLzE1NTg3CgkqIGVpbmZvLmFkczogTWlub3IgY29tbWVudCB1cGRhdGVzIGZvciBIYXNfQ29tcGxldGlvbiBhbmQKCUVfQ29uc3RhbnQgbGlzdCBvZiBmbGFncy4KCgkqIHNlbV9jaDMuYWRiIChBbmFseXplX09iamVjdF9EZWNsYXJhdGlvbik6IEZ1bGwgY29uc3RhbnQgZGVjbGFyYXRpb25zCglhbmQgY29uc3RhbnQgcmVkZWNsYXJhdGlvbnMgbm93IHNldCB0aGUgSGFzX0NvbXBsZXRpb24gZmxhZyBvZiB0aGVpcgoJZGVmaW5pbmcgaWRlbnRpZmllcnMuCgoJKiBzZW1fY2g3LmFkYiAoQW5hbHl6ZV9QYWNrYWdlX1NwZWMpOiBBZGQgcHJvY2VkdXJlCglJbnNwZWN0X0RlZmVycmVkX0NvbnN0YW50X0NvbXBsZXRpb24uCglVc2VkIHRvIGRldGVjdCBwcml2YXRlIGRlZmVycmVkIGNvbnN0YW50cyB0aGF0IGhhdmUgbm90IGJlZW4gY29tcGxldGVkCgllaXRoZXIgYnkgYSBjb25zdGFudCByZWRlY2xhcmF0aW9uIG9yIHByYWdtYSBJbXBvcnQuIEVtaXRzIGVycm9yIG1lc3NhZ2UKCSJjb25zdGFudCBkZWNsYXJhdGlvbiByZXF1aXJlcyBpbml0aWFsaXphdGlvbiBleHByZXNzaW9uIi4KCgkqIHNlbV9wcmFnLmFkYiAoUHJvY2Vzc19JbXBvcnRfT3JfSW50ZXJmYWNlKTogQW4gSW1wb3J0IHByYWdtYSBub3cKCWNvbXBsZXRlcyBhIGRlZmVycmVkIGNvbnN0YW50LgoKMjAwNC0wNi0xMSAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIGV2YWxfZmF0LmFkYiAoRGVjb21wb3NlX0ludCk6IEZpeCByb3VuZGluZyBvZiBuZWdhdGl2ZSBudW1iZXJzLgoKCSogcy1mYXRnZW4uYWRiIChHcmFkdWFsX1NjYWxpbmcpOiBDb3JyZWN0IG9mZi1ieS1vbmUgZXJyb3IgaW4KCWNhbGN1bGF0aW5nIGV4cG9uZW50IGZvciBzY2FsaW5nIGRlbm9ybWFsIG51bWJlcnMuCgkoTGVhZGluZ19QYXJ0KTogUHJvcGVybHkgcmFpc2UgQ29uc3RyYWludF9FcnJvciBmb3IgemVybyBvciBuZWdhdGl2ZQoJQWRqdXN0bWVudC4KCShSZW1haW5kZXIpOiBQcm9wZXJseSByYWlzZSBDb25zdHJhaW50X0Vycm9yIGZvciB6ZXJvIGRpdmlzb3IuCgoyMDA0LTA2LTExICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fdXRpbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIGV4cF9jaDIuYWRiIChFeHBhbmRfRW50cnlfUGFyYW1ldGVyKTogR2VuZXJhdGUgYW4gZXhwbGljaXQKCWRlcmVmZXJlbmNlIHdoZW4gYWNjZXNzaW5nIHRoZSBlbnRyeSBwYXJhbWV0ZXIgcmVjb3JkLgoJKENoZWNrX0FycmF5X1R5cGUpOiBBbHdheXMgY2hlY2sgZm9yIHBvc3NpYmxlIGltcGxpY2l0IGRlcmVmZXJlbmNlLgoJKG1heWJlX2ltcGxpY2l0X2RlcmVmZXJlbmNlKTogUmVuYW1lIHRvIGNoZWNrX25vX2ltcGxpY2l0X2RlcmVmZW5jZS4KCUFib3J0IGlmIGEgcG9pbnRlciBpcyBzdGlsbCBwcmVzZW50IChkZW5vdGluZyB0aGF0IGFuIGltcGxpY2l0CglkZXJlZmVyZW5jZSB3YXMgbGVmdCBpbiB0aGUgdHJlZSBieSB0aGUgZnJvbnQtZW5kKS4KCgkqIHNlbV9hdHRyLmFkYiAoRXhwYW5kX0VudHJ5X1BhcmFtZXRlcik6IEdlbmVyYXRlIGFuIGV4cGxpY2l0CglkZXJlZmVyZW5jZSB3aGVuIGFjY2Vzc2luZyB0aGUgZW50cnkgcGFyYW1ldGVyIHJlY29yZC4KCShDaGVja19BcnJheV9UeXBlKTogQWx3YXlzIGNoZWNrIGZvciBwb3NzaWJsZSBpbXBsaWNpdCBkZXJlZmVyZW5jZS4KCShtYXliZV9pbXBsaWNpdF9kZXJlZmVyZW5jZSk6IFJlbmFtZSB0byBjaGVja19ub19pbXBsaWNpdF9kZXJlZmVuY2UuCglBYm9ydCBpZiBhIHBvaW50ZXIgaXMgc3RpbGwgcHJlc2VudCAoZGVub3RpbmcgdGhhdCBhbiBpbXBsaWNpdAoJZGVyZWZlcmVuY2Ugd2FzIGxlZnQgaW4gdGhlIHRyZWUgYnkgdGhlIGZyb250LWVuZCkuCgoyMDA0LTA2LTExICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFjdC1ldXJvcGUuZnI+CgoJKiBnLWRlYnBvby5hZGIgKERlYWxsb2NhdGUsIERlcmVmZXJlbmNlKTogQWRkIHByZWZpeCAiZXJyb3I6IiB0byBlcnJvcgoJbWVzc2FnZSwgbGlrZSB0aGUgY29tcGlsZXIgaXRzZWxmIGRvZXMuIEVhc2llciB0byBwYXJzZSB0aGUgb3V0cHV0LgoKCSogZy1kZWJwb28uYWRzOiAoQWxsb2NhdGUsIERlYWxsb2NhdGUsIERlcmVmZXJlbmNlKTogQWRkIGNvbW1lbnRzLgoKCSogZ25hdF91Z24udGV4aSAoZ25hdHhyZWYsIGduYXRmaW5kKTogQ2xhcmlmeSB0aGF0IHNvdXJjZSBuYW1lcyBzaG91bGQKCWJlIGJhc2UgbmFtZXMsIGFuZCBub3QgaW5jbHVkZXMgZGlyZWN0b3JpZXMuCgoyMDA0LTA2LTExICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmdlbmVyaWMgKCQoRVhFQykpOiBEZXBlbmQgb24gJChPQkpFQ1RTKSwgbm90ICQoT0JKX0ZJTEVTKSwKCXNvIHRoYXQgZGVwZW5kZW5jaWVzIGFyZSBwcm9wZXJseSB0YWtlbiBpbnRvIGFjY291bnQgYnkgbWFrZS4KCjIwMDQtMDYtMTEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS8xNTYyMgoJKiBzLXVuc3R5cC5hZHMsIHMtbWFjY29kLmFkcywgc2VtX2NoOC5hZGIsIHMtYXV4ZGVjLmFkcywKCWV4cF9pbnRyLmFkYiwgcy1hdXhkZWMtdm1zXzY0LmFkczogRml4IHR5cG86IGluc3RyaW5zaWMgLT4gaW50cmluc2ljCgoyMDA0LTA2LTExICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWduYXRsaWIpOiBpbnN0YWxsIHRhcmdldC1zcGVjaWZpYyBydW4tdGltZSBmaWxlcy4KCgkqIE1ha2UtbGFuZy5pbjogUmVtb3ZlIG9ic29sZXRlIHRhcmdldHMuCgoyMDA0LTA2LTExICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBwYXItY2gxMi5hZGIgKFBfR2VuZXJpYyk6IEFkZCBzY29wZSBiZWZvcmUgYW5hbHl6aW5nIHN1YnByb2dyYW0KCXNwZWNpZmljYXRpb24sIHRvIGNhdGNoIG1pc3VzZXMgb2YgcHJvZ3JhbSB1bml0IG5hbWVzLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfVHlwZV9Db252ZXJzaW9uKTogRG8gbm90IGVtaXQgd2FybmluZ3Mgb24KCXN1cGVyZmx1b3VzIGNvbnZlcnNpb25zIGluIGFuIGluc3RhbmNlLgoKMjAwNC0wNi0xMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBSIGFkYS8xNTQwMwoJKiBzZW1fY2gxMi5hZGIgKFNhdmVfUmVmZXJlbmNlcyk6IElmIG9wZXJhdG9yIG5vZGUgaGFzIGJlZW4gZm9sZGVkIHRvCgllbnVtZXJhdGlvbiBsaXRlcmFsLCBhc3NvY2lhdGVkX25vZGUgbXVzdCBiZSBkaXNjYXJkZWQuCgoyMDA0LTA2LTExICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBzLXN0Y2hvcC12eHdvcmtzLmFkYjogQWRkIHJlcXVpcmVkIHByYWdtYSBDb252ZW50aW9uIHRvCglUYXNrX0Rlc2NyaXB0b3IgYmVjYXVzZSBpdCBpcyB1cGRhdGVkIGJ5IGEgQyBmdW5jdGlvbi4KCjIwMDQtMDYtMDggIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS8xNTU2OAoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHRhcmdldCBzcGVjaWZpYyBTT19PUFQgb24gSVJJWAoKMjAwNC0wNi0wNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFkYS10cmVlLmRlZiAoVFJBTlNGT1JNX0VYUFIsIEFMTE9DQVRFX0VYUFIsIFVTRV9FWFBSKTogRGVsZXRlZC4KCShHTkFUX05PUF9FWFBSLCBHTkFUX0xPT1BfSUQsIEVYUFJfU1RNVCwgTlVMTF9TVE1UKTogTGlrZXdpc2UuCgkoQkxPQ0tfU1RNVCwgSUZfU1RNVCwgR09UT19TVE1ULCBMQUJFTF9TVE1ULCBSRVRVUk5fU1RNVCk6IExpa2V3aXNlLgoJKEFTTV9TVE1ULCBCUkVBS19TVE1ULCBSRUdJT05fU1RNVCxIQU5ETEVSX1NUTVQpOiBMaWtld2lzZS4KCShTVE1UX1NUTVQsIFVTRV9TVE1UKTogTmV3IHN0YXRlbWVudCBjb2Rlcy4KCShMT09QX1NUTVQsIEVYSVRfU1RNVCk6IE1ha2Ugc2xpZ2h0IHNlbWFudGljIGNoYW5nZXMuCgkqIGFkYS10cmVlLmg6IFJlZmxlY3QgYWJvdmUgY2hhbmdlcy4KCShzdHJ1Y3QgdHJlZV9sb29wX2lkKTogRGVsZXRlZC4KCSh1bmlvbiBsYW5nX3RyZWVfbm9kZSwgc3RydWN0IGxhbmdfZGVjbCwgc3RydWN0IGxhbmdfdHlwZSk6CglOb3cganVzdCBjb250YWlucyBhIHRyZWUgbm9kZTsgdXBkYXRlIG1hY3JvcyB1c2luZyBUWVBFX0xBTkdfU1BFQ0lGSUMKCWFuZCBERUNMX0xBTkdVQUdFX1NQRUNJRklDIHRvIHJlZmxlY3QgdGhlc2UgY2hhbmdlcy4KCShERUNMX0lOSVRfQllfQVNTSUdOX1AsIFRSRV9MT09QX05PREVfSUQsIFRSRUVfU0xPQyk6IERlbGV0ZWQuCgkoSVNfQURBX1NUTVQpOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoYW5ub3RhdGVfZGVjbF93aXRoX25vZGUpOiBOZXcgZnVuY3Rpb24uCgkoZ25hdF90b19nbnVfZW50aXR5KTogVXNlIGl0IGFuZCBTbG9jX3RvX2xvY3VzIGluc3RlYWQgb2Ygc2V0X2xpbmVuby4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2Ugb2JqZWN0KTogUmVtb3ZlIGNhbGwgdG8gZXhwYW5kIENPTlZFUlRfRVhQUi4KCUNhbGwgYWRkX3N0bXRfd2l0aF9ub2RlIHRvIGRvIG5lZWRlZCBhc3NpZ25tZW50cy4KCUFkZCBjYWxsIHRvIHVwZGF0ZSBzZXRqbXAgYnVmZmVyIGRpcmVjdGx5LCBub3QgdmlhIEVYUFJfU1RNVC4KCShtYXliZV92YXJpYWJsZSk6IEFyZ21lbnQgR05BVF9OT0RFIGRlbGV0ZWQuCgkqIGdpZ2kuaCAobWF5YmVfdmFyaWFibGUpOiBMaWtld2lzZS4KCShtYWtlX3RyYW5zZm9ybSwgYWRkX3N0bXRfd2l0aF9ub2RlLCBzZXRfYmxvY2tfZm9yX2dyb3VwKTogTmV3LgoJKGduYXRfZ2ltcGxpZnlfZXhwciwgZ25hdF9leHBhbmRfYm9keSwgU2xvY190b19sb2N1cyk6IExpa2V3aXNlLgoJKHNldF9ibG9ja19qbXBidWZfZGVjbCwgZ2V0X2Jsb2NrX2ptcGJ1Zl9kZWNsKTogTGlrZXdpc2UuCgkoZGlzY2FyZF9maWxlX25hbWVzLCBnbnVfYmxvY2tfc3RhY2ssIGduYXRfdG9fY29kZSk6IERlbGV0ZWQuCgkoc2V0X2xpbmVubywgc2V0X2xpbmVub19mcm9tX3Nsb2MpOiBMaWtld2lzZS4KCShyZWNvcmRfY29kZV9wb3NpdGlvbiwgaW5zZXJ0X2NvZGVfZm9yKTogTGlrZXdpc2UuCgkoZ25hdF9wb3BsZXZlbCk6IE5vdyByZXR1cm5zIHZvaWQuCgkoZW5kX3N1YnByb2dfYm9keSk6IE5vdyB0YWtlcyBhcmd1bWVudC4KCSogbWlzYy5jIChjZ3JhcGguaCwgdHJlZS1pbmxpbmUuaCk6IE5ldyBpbmNsdWRlcy4KCShnbmF0X3RyZWVfc2l6ZSwgTEFOR19IT09LU19UUkVFX1NJWkUpOiBEZWxldGVkLgoJKGduYXRfcG9zdF9vcHRpb25zLCBMQU5HX0hPT0tTX1BPU1RfT1BUSU9OUyk6IE5ldy4KCShMQU5HX0hPT0tTX0NBTExHUkFQSF9FWFBBTkRfRlVOQ1RJT04pOiBMaWtld2lzZS4KCShMQU5HX0hPT0tTX1JUTF9FWFBBTkRfU1RNVCwgTEFOR19IT09LU19HSU1QTElGWV9FWFBSKTogTGlrZXdpc2UuCgkoZ25hdF9wYXJzZV9maWxlKTogRG9uJ3Qgc2V0IGltbWVkaWF0ZV9zaXplX2V4cGFuZC4KCUNhbGwgY2dyYXBoIGZ1bmN0aW9ucy4KCShnbmF0X2V4cGFuZF9leHByKTogUmVtb3ZlIG1vc3QgY2FzZXMuCgkocmVjb3JkX2NvZGVfcG9zaXRpb24sIGluc2VydF9jb2RlX2Zvcik6IFJlbW92ZSBmcm9tIGhlcmUuCgkqIHRyYW5zLmMgKHRvcGxldi5oLCB0cmVlLWdpbXBsZS5oKTogTm93IGluY2x1ZGVkLgoJKGRpc2NhcmRfZmlsZV9uYW1lcyk6IERlbGV0ZWQuCgkoZ251X2Jsb2NrX3N0YWNrLCBnbnVfYmxvY2tfc3RtdF9ub2RlLCBnbnVfYmxvY2tfc3RtdF9mcmVlX2xpc3QpOiBEZWwuCgkoZmlyc3Rfbm9uZGVsZXRlZF9pbnNuLCBtYWtlX2V4cHJfc3RtdF9mcm9tX3J0bCk6IExpa2V3aXNlLgoJKHN0cnVjdCBzdG10X2dyb3VwLCBjdXJyZW50X3N0bXRfZ3JvdXAsIHN0bXRfZ3JvdXBfZnJlZV9saXN0KTogTmV3LgoJKGdudV9zdGFja19mcmVlX2xpc3QsIHJlY29yZF9jb3N0X3Bvc2l0aW9uLCBpbnNlcnRfY29kZV9mb3IpOiBMaWtld2lzZS4KCShhZGRfY2xlYW51cCwgcHVzaF9zdGFjaywgZ25hdF9naW1wbGlmeV9zdG10LCBhZGRfY2xlYW51cCk6IExpa2V3aXNlLgoJKGduYXRfZ2ltcGxpZnlfdHlwZV9zaXplcywgZ25hdF9naW1wbGlmeV9vbmVfc2l6ZXBvcyk6IExpa2V3aXNlLgoJKGduYXRfZXhwYW5kX2JvZHlfMSwgZ25hdF9naW1wbGlmeV9leHByLCBhbm5vdGF0ZV93aXRoX25vZGUpOiBMaWtld2lzZS4KCShzZXRfYmxvY2tfZm9yX2dyb3VwLCBhZGRfc3RtdF9saXN0KTogTGlrZXdpc2UuCgkoc3RhcnRfc3RtdF9ncm91cCk6IFJlbmFtZWQgZnJvbSBzdGFydF9ibG9ja19zdG10LgoJKGVuZF9zdG10X2dyb3VwKTogTGlrZXdpc2UsIGZyb20gZW5kX2Jsb2NrX3N0bXQuCgkoYnVpbGRfc3RtdF9ncm91cCk6IExpa2V3aXNlLCBmcm9tIGJ1aWxkX2Jsb2NrX3N0bXQsIGFsc28gYWRkIGFyZy4KCShnaWdpKTogRG9uJ3Qgc2V0IGRpc2NhcmRfZmlsZV9uYW1lcyBvciBjYWxsIHNldF9saW5lbm8uCglEaXNhbGxvdyBmcm9udCBlbmQgWkNYOyBjYWxsIGduYXRfdG9fZ251LCBub3QgZ25hdF90b19jb2RlLgoJKHRyZWVfdHJhbnNmb3JtKTogRGVsZXRlZCwgbm93IHJlbmFtZWQgdG8gYmUgZ25hdF90b19nbnUuCglOdW1lcm91cyBjaGFuZ2VzIHRocm91Z2hvdXQgdG8gcmVmbGVjdCBuZXcgbmFtZXMgYW5kIGNvbXBsZXRlCglmdW5jdGlvbi1hdC1hLXRpbWUgaW1wbGVtZW50YXRpb24uCgkoZ25hdF9leHBhbmRfc3RtdCk6IERlbGV0ZSBvciBjb21tZW50IG91dCBhbGwgY2FzZXMuCgkocHJvY2Vzc19pbmxpbmVkX3N1YnByb2dyYW1zKTogVXNlIGFkZF9zdG10LgoJKHByb2Nlc3NfZGVjbHMpOiBVc2UgZ25hdF90b19nbnUsIG5vdCBnbmF0X3RvX2NvZGUsIGFuZCBkb24ndAoJY2FsbCBzZXRfbGluZW5vOyBhbHNvIHJlbW92ZSB1bm5lZWRlZCBibG9jayBoYW5kbGluZy4KCShwcm9jZXNzX3R5cGUpOiBSZW1vdmUgdW5uZWVkZWQgYmxvY2sgaGFuZGxpbmcuCgkoYnVpbGRfdW5pdF9lbGFiKTogUmVtb3ZlIGNhbGxzIHRvIGRlbGV0ZWQgZnVuY3Rpb25zLgoJKiB1dGlscy5jIChjZ3JhcGguaCwgdHJlZS1pbmxpbmUuaCwgdHJlZS1naW1wbGUuaCk6IE5vdyBpbmNsdWRlLgoJKHRyZWUtZHVtcC5oKTogTGlrZXdpc2UuCgkoc3RydWN0IGFkYV9iaW5kaW5nX2xldmVsKTogQWRkIGZpZWxkIGptcGJ1Zl9kZWNsLgoJKGduYXRfZGVmaW5lX2J1aWx0aW4sIGduYXRfaW5zdGFsbF9idWlsdGlucyk6IE5ldy4KCShnbmF0X2dpbXBsaWZ5X2Z1bmN0aW9uLCBnbmF0X2ZpbmFsaXplKTogTGlrZXdpc2UuCgkoZ25hdF9wb3BsZXZlbCk6IE5vIGxvbmdlciByZXR1cm4gQkxPQ0ssIHNldCBpdCBpbnN0ZWFkLgoJUmVtb3ZlIGNvZGUgZGVhbGluZyB3aXRoIG5lc3RlZCBmdW5jdGlvbnMuCgkoZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFsc28gc2V0IHNpemVfdHlwZV9ub2RlLgoJQ2FsbCBnbmF0X2luc3RhbGxfYnVpbHRpbnMuCgkoY3JlYXRlX3Zhcl9kZWNsKTogRG9uJ3Qgc2V0IERFQ0xfSU5JVF9CWV9BU1NJR04uCgkoY3JlYXRlX3N1YnByb2dfZGVjbCk6IENoYW5nZSBoYW5kbGluZyBvZiBpbmxpbmVfZmxhZzsgc2V0IFRSRUVfU1RBVElDLgoJUmVtb3ZlIHNwZWNpYWwtY2FzZSBmb3IgIm1haW4iLgoJKGVuZF9zdWJwcm9nX2JvZHkpOiBBZGQgYXJnIGFuZCByZXdvcmsgZm9yIHRyZWUtc3NhLgoJKGNvbnZlcnQpOiBEb24ndCB1c2UgR05BVF9OT1BfRVhQUiBvciBsb29rIGZvciBUUkFOU0ZPUk1fRVhQUi4KCUFkZCBjYXNlIGZvciBCT09MRUFOX1RZUEUuCgkqIHV0aWxzMi5jIChydGwuaCk6IE5vdyBpbmNsdWRlLgoJKGJ1aWxkX2NhbGxfcmFpc2UpOiBUZXN0IERlYnVnX0ZsYWdfTk4gZGlyZWN0bHkuCgkoYnVpbGRfY2FsbF9hbGxvY19kZWFsbG9jKTogRG9uJ3QgdXNlIGxvY2FsIHN0YWNrIGFsbG9jYXRpb24gZm9yIG5vdy4KCShnbmF0X21hcmtfYWRkcmVzc2FibGUsIGNhc2UgR05BVF9OT1BfRVhQUik6IERlbGV0ZWQuCgkoZ25hdF9tYXJrX2FkZHJlc3NhYmxlLCBjYXNlIFZBUl9ERUNMKTogSGFuZGxlIGJvdGggZWFybHkgJiBsYXRlIGNhc2VzLgoKMjAwNC0wNi0wNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhLWRpcmVjdC5hZHMsIGVpbmZvLmFkczogTWlub3IgY29tbWVudCB1cGRhdGVzCgoJKiBzLXRhcHJvcC1seW54b3MuYWRiLCBzLXRhcHJvcC10cnU2NC5hZGIsIHMtdGFwcm9wLWlyaXguYWRiLAoJcy10YXByb3AtaXJpeC1hdGhyZWFkLmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLCBzLXRhcHJvcC1saW51eC5hZGIsCglzLXRhcHJvcC1kdW1teS5hZGIsIHMtdGFwcm9wLW9zMi5hZGIsIHMtdGFwcm9wLXNvbGFyaXMuYWRiLAoJcy10YXByb3Atdm1zLmFkYiwgcy10YXByb3AtbWluZ3cuYWRiLCBzLXRhcHJvcC12eHdvcmtzLmFkYiwKCXMtdGFwcm9wLXBvc2l4LmFkYiwgcy10YXByb3AuYWRzLCBleHBfZGJ1Zy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIHMtaW50ZXJyLXNpZ2FjdGlvbi5hZGI6IFJlbW92ZSB1bnJlZmVyZW5jZWQgdmFyaWFibGUKCShBdHRhY2hlZF9JbnRlcnJ1cHRzKS4gIE1pbm9yIHJlZm9ybWF0dGluZy4KCUF2b2lkIHVzZSBvZiB2YXJpYWJsZSBJIChyZXBsYWNlIGJ5IEopLgoKCSogcGFyLWNoMTAuYWRiOiBGaXggdGV4dCBvZiBvbmUgZXJyb3IgbWVzc2FnZQoKCSogY2hlY2tzLmFkYiwgY2hlY2tzLmFkcywgY3N0YW5kLmFkYiwgdm1zX2RhdGEuYWRzLCBlcnJvdXQuYWRzLAoJZXhwX2FnZ3IuYWRiLCBleHBfY2gzLmFkYiwgZXhwX2NoMy5hZHMsIGV4cF9jaDUuYWRiLCBleHBfY2g2LmFkYiwKCWV4cF9jaDkuYWRiLCBleHBfY29kZS5hZGIsIGduYXQxZHJ2LmFkYiwgbGliLWxvYWQuYWRiLCBsaWItd3JpdC5hZGIsCglvcHQuYWRiLCBwYXIuYWRiLCBvcHQuYWRzLCBwYXItY2gxMS5hZGIsIHBhci1jaDMuYWRiLCBwYXItY2g0LmFkYiwKCXBhci1jaDUuYWRiLCBwYXItY2g2LmFkYiwgcGFyLWNoOC5hZGIsIHBhci1jaDkuYWRiLCBwYXItcHJhZy5hZGIsCglwYXItdXRpbC5hZGIsIHNjbmcuYWRiLCBzZW1fYWdnci5hZGIsIHNlbV9hdHRyLmFkYiwgc2VtX2NhdC5hZGIsCglzZW1fY2gxMC5hZGIsIHNlbV9jaDEwLmFkYiwgc2VtX2NoMTEuYWRiLCBzZW1fY2gxMi5hZGIsIHNlbV9jaDIuYWRiLAoJc2VtX2NoMy5hZGIsIHNlbV9jaDMuYWRzLCBzZW1fY2g0LmFkYiwgc2VtX2NoNS5hZGIsIHNlbV9jaDYuYWRiLAoJc2VtX2NoNy5hZGIsIHNlbV9jaDguYWRiLCBzZW1fY2g5LmFkYiwgc2VtX2V2YWwuYWRiLCBzZW1fcHJhZy5hZGIsCglzZW1fcmVzLmFkYiwgc2VtX3R5cGUuYWRiLCBzZW1fdXRpbC5hZGIsIHNpbmZvLmFkcywgc25hbWVzLmFkYiwKCXNuYW1lcy5hZHMsIHNuYW1lcy5oLCBzcHJpbnQuYWRiLCBzd2l0Y2gtYy5hZGI6IE1vZGlmaWNhdGlvbnMgZm9yIEFkYQoJMjAwNSBzdXBwb3J0LgoKMjAwNC0wNi0wNyAgRG91ZyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIG1saWItdGd0LXZtcy5hZGI6IFJlbmFtZSBtbGliLXRndC12bXMuYWRiIG1saWItdGd0LXZtcy1hbHBoYS5hZGIKCgkqIHMtdmFmbG9wLXZtcy5hZGI6IFJlbmFtZSBzLXZhZmxvcC12bXMuYWRiIHRvIHMtdmFmbG9wLXZtcy1hbHBoYS5hZGIKCgkqIG1saWItdGd0LXZtcy1pYTY0LmFkYjogTmV3IGZpbGUuCgoJKiBNYWtlZmlsZS5pbjogUmVuYW1lIG1saWItdGd0LXZtcy5hZGIgdG8gbWxpYi10Z3Qtdm1zLWFscGhhLmFkYgoJQWRkIG1saWItdGd0LXZtcy1pYTY0LmFkYgoJUmVuYW1lIHMtdmFmbG9wLXZtcy5hZGIgdG8gcy12YWZsb3Atdm1zLWFscGhhLmFkYi4KCU1vdmUgdG8gYWxwaGEgc3BlY2lmaWMgaWZlcSBzZWN0aW9uLgoJQWRkIFZNUyBzcGVjaWZpYyB2ZXJzaW9ucyBvZiBzeW1ib2xzLmFkYgoJUmVuYW1pbmcgb2YgNXEgdm1zIGZpbGVzLgoKCSogNXFzeXN0ZW0uYWRzIHJlbmFtZWQgdG8gc3lzdGVtLXZtc182NC5hZHMuCgoyMDA0LTA2LTA3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGEtY2FsZW5kLmFkczogQWRkIGEgR05BVCBOb3RlIGNvbW1lbnQgYWZ0ZXIgZnVuY3Rpb24gVGltZV9PZiB0bwoJZXhwbGFpbiB0aGF0IHdoZW4gYSB0aW1lIG9mIGRheSBjb3JyZXNwb25kaW5nIHRvIHRoZSBub24gZXhpc3RpbmcgaG91cgoJb24gdGhlIGRheSBzd2l0Y2hpbmcgdG8gRFNUIGlzIHNwZWNpZmllZCwgU3BsaXQgbWF5IHJldHVybiBhIGRpZmZlcmVudAoJdmFsdWUgZm9yIFNlY29uZHMuCgoJKiBnbmF0Y21kLmFkYjogQWRkIHByb2Nlc3Npbmcgb2YgR05BVCBNRVRSSUMgKGZvciBnbmF0bWV0cmljKSwgc2ltaWxhcgoJdG8gR05BVCBQUkVUVFkuCgoJKiBnLW9zX2xpYi5hZGIgKE9wZW5WTVMpOiBOZXcgQm9vbGVhbiB2YWx1ZSBpbXBvcnRlZCBmcm9tIFN5c3RlbS4KCShOb3JtYWxpemVfUGF0aG5hbWUpOiBPbmx5IHJlc29sdmUgVk1TIGxvZ2ljYWwgbmFtZXMgd2hlbiBvbiBWTVMuCgoJKiBtbGliLXByai5hZGIgKEJ1aWxkX0xpYnJhcnkpOiBOZXcgZmxhZyBHdHJhc3ltb2JqX05lZWRlZCwgaW5pdGlhbGl6ZQoJdG8gRmFsc2UuCglJZiBHdHJhc3ltb2JqX05lZWRlZCBpcyBUcnVlLCBhZGQgdGhlIGZ1bGwgcGF0aCBvZiBnLXRyYXN5bS5vYmogdG8KCXRoZSBsaW5raW5nIG9wdGlvbnMuCgkoQnVpbGRfTGlicmFyeS5DaGVja19MaWJzKTogT24gVk1TLCBpZiB0aGVyZSBpcyBhIGRlcGVuZGVuY3kgb24KCWctdHJhc3ltLmFkcywgc2V0IEd0cmFzeW1vYmpfTmVlZGVkIHRvIFRydWUuCgoJKiBwcmotYXR0ci5hZGI6IEFkZCBuZXcgcGFja2FnZSBNZXRyaWNzIGZvciBnbmF0bWV0cmljCgoJKiBwcmotbm1zYy5hZGIgKFJlY29yZF9PdGhlcl9Tb3VyY2VzKTogUHV0IHNvdXJjZSBmaWxlIG5hbWVzIGluCgljYW5vbmljYWwgY2FzZSB0byB0YWtlIGludG8gYWNjb3VudCBmaWxlcyB3aXRoIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBvbgoJV2luZG93cy4KCShBZGFfQ2hlY2spOiBMb2FkIHRoZSByZWZlcmVuY2Ugc3ltYm9sIGZpbGUgbmFtZSBpbiB0aGUgbmFtZSBidWZmZXIgdG8KCWNoZWNrIGl0LCBub3QgdGhlIHN5bWJvbCBmaWxlIG5hbWUuCgoJKiBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgc3RhbmRhcmQgbmFtZSBNZXRyaWNzIChuYW1lIG9mIHByb2plY3QKCWZpbGUgcGFja2FnZSBmb3IgZ25hdG1ldHJpYykuCgoJKiB2bXNfY29udi5hZHM6IEFkZCBNZXRyaWMgdG8gQ29tbWVudF9UeXBlCgoJKiB2bXNfY29udi5hZGIgKEluaXRpYWxpemUpOiBBZGQgY29tcG9uZW50IGRvciBNZXRyaWMgaW4gQ29tbWFuZF9MaXN0CgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBxdWFsaWZpZXJzIGZvciBHTkFUIE1FVFJJQwoKCSogbWFrZWdwci5hZGIgKExpbmtfRXhlY3V0YWJsZXMpOiBUYWtlIGludG8gYWNjb3VudCB0aGUgc3dpdGNoZXMKCXNwZWNpZmllZCBpbiBwYWNrYWdlIExpbmtlciBvZiB0aGUgbWFpbiBwcm9qZWN0LgoKMjAwNC0wNi0wNyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogYmluZGdlbi5hZGIgKFNldF9Vbml0X051bWJlcik6IFVuaXRzIGlzIGFuIGluc3RhbmNlIG9mIFRhYmxlLCBhbmQgc28KCXRoZSBpbmRleCBvZiB0aGUgbGFzdCBlbGVtZW50IGlzIFVuaXRzLkxhc3QsIG5vdCBVbml0cy5UYWJsZSdMYXN0Cgkod2hpY2ggaXMgdXN1YWxseSBub3QgYSB2YWxpZCBpbmRleCB3aXRoaW4gdGhlIGFjdHVhbGx5IGFsbG9jYXRlZAoJc3RvcmFnZSBmb3IgdGhlIHRhYmxlKS4KCgkqIGV4cF9jaDQuYWRiIChJbnNlcnRfRGVyZWZlcmVuY2VfQWN0aW9uKTogQ2hhbmdlIHByZWRpY2F0ZSB0aGF0CglkZXRlcm1pbmVzIHdoZXRoZXIgdG8gZ2VuZXJhdGUgYSBjYWxsIHRvIGEgY2hlY2tlZCBzdG9yYWdlIHBvb2wKCURlcmVmZXJlbmNlIGFjdGlvbi4KCUdlbmVyYXRlIHN1Y2ggYSBjYWxsIG9ubHkgZm9yIGEgZGVyZWZlcmVuY2UgdGhhdCBlaXRoZXIgY29tZXMgZnJvbQoJc291cmNlLCBvciBpcyB0aGUgcmVzdWx0IG9mIHJld3JpdGluZyBhIGRlcmVmZXJlbmNlIHRoYXQgY29tZXMgZnJvbQoJc291cmNlLgoKMjAwNC0wNi0wNyAgUm9tYWluIEJlcnJlbmRvbm5lciAgPGJlcnJlbmRvQGFjdC1ldXJvcGUuZnI+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX091dHB1dF9GaWxlKTogQWRkIHN1cHBvcnQgZm9yIEdBUCBidWlsZHMuCgoyMDA0LTA2LTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfQXJyYXlfU3VidHlwZT46IEZvciBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgYXQKCWZpbGUgbGV2ZWwsIGVsYWJvcmF0ZSB0aGUgc3RyaWRlIGZvciBpbm5lciBkaW1lbnNpb25zIGluIGFsaWdubWVudAoJdW5pdHMsIG5vdCBieXRlcy4KCgkqIGV4cF9jaDUuYWRiOiBDb3JyZWN0IHdyb25nIHJlZmVyZW5jZSB0byBDb21wb25lbnRfTWF5X0JlX0JpdF9BbGlnbmVkCglpbiBhIGNvbW1lbnQuCgoyMDA0LTA2LTA3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYjogQ29ycmVjdCB3cm9uZyBtb2RpZmljYXRpb24gaW4gcHJldmlvdXMgcGF0Y2gKCjIwMDQtMDYtMDcgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWN0LWV1cm9wZS5mcj4KCgkqIGctdHJhc3ltLmFkczogQ29ycmVjdGVkIGNvbW1lbnQgdG8gcHJvcGVybHkgcmVmbGVjdCBsZXZlbCBvZiBzdXBwb3J0CglvbiBWTVMuCgoyMDA0LTA2LTA3ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGduYXQuY29tPgoKCSogbGliLXhyZWYuYWRiIChHZW5lcmF0ZV9SZWZlcmVuY2UpOiBBZGQgbmVzdGVkIGZ1bmN0aW9uIElzX09uX0xIUy4gSXQKCWluY2x1ZGVzIGNhc2Ugb2YgYSB2YXJpYWJsZSByZWZlcmVuY2VkIG9uIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZiBhbgoJYXNzaWdubWVudCwgdGhlcmVmb3JlIHJlbW92ZSByZWR1bmRhbnQgY29kZS4gVmFyaWFibGVzIGFuZCBwcmVmaXhlcyBvZgoJaW5kZXhlZCBvciBzZWxlY3RlZCBjb21wb25lbnRzIGFyZSBub3cgbWFya2VkIGFzIHJlZmVyZW5jZWQgb24gbGVmdAoJaGFuZCBzaWRlLiBXYXJuaW5ncyBhcmUgbm93IHByb3Blcmx5IGVtaXR0ZWQgd2hlbiB2YXJpYWJsZXMgb3IgcHJlZml4ZXMKCWFyZSBhc3NpZ25lZCBidXQgbm90IHJlYWQuCgoJKiBzZW1fd2Fybi5hZGIgKE91dHB1dF9VbnJlZmVyZW5jZWRfTWVzc2FnZXMpOiBBZGQgYWRkaXRpb25hbCBjaGVja3MgdG8KCWxlZnQgaGFuZCBzaWRlIHJlZmVyZW5jZWQgdmFyaWFibGVzLiBQcml2YXRlIGFjY2VzcyB0eXBlcyBkbyBub3QKCXByb2R1Y2UgdGhlIHdhcm5pbmcgInZhcmlhYmxlIC4uLiBpcyBhc3NpZ25lZCBidXQgbmV2ZXIgcmVhZCIuCglBZGQgYWxzbyBhZGRpdGlvbmFsIGNoZWNrcyB0byBsZWZ0IGhhbmQgc2lkZSByZWZlcmVuY2VkIHZhcmlhYmxlcy4KCUFsaWFzZWQsIHJlbmFtZWQgb2JqZWN0cyBhbmQgYWNjZXNzIHR5cGVzIGRvIG5vdCBwcm9kdWNlIHRoZSB3YXJuaW5nCgkidmFyaWFibGUgLi4uIGlzIGFzc2lnbmVkIGJ1dCBuZXZlciByZWFkIiBzaW5jZSBvdGhlciBlbnRpdGllcyBtYXkgcmVhZAoJdGhlIG1lbW9yeSBsb2NhdGlvbi4KCjIwMDQtMDYtMDcgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46IEluIHRoZSBwb3dlcnBjL3Z4d29ya3Mtc3BlY2lmaWMgc2VjdGlvbiwgcmVzdG9yZQoJRVhUUkFfR05BVFJUTF9OT05UQVNLSU5HX09CSlMgYW5kIEVYVFJBX0dOQVRSVExfVEFTS0lOR19PQkpTIChyZW1vdmVkCglieSBtaXN0YWtlKS4KCjIwMDQtMDYtMDcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDQuYWRiIChSZW1vdmVfQWJzdHJhY3RfT3BlcmF0aW9ucyk6IFJlZmluZSB0aGUgcmVtb3ZhbCBvZgoJcHJlZGVmaW5lZCBvcGVyYXRvcnMuCglSZW1vdmVzIHNwdXJpb3VzIHR5cGUgZXJyb3JzIGZyb20gZy10cmFzeW0tdm1zLmFkYi4KCgkqIHNlbV9yZXMuYWRiIChSZXdyaXRlX1JlbmFtZWRfT3BlcmF0b3IpOiBJZiBpbnRyaW5zaWMgb3BlcmF0b3IgaXMKCWRpc3RpbmN0IGZyb20gdGhlIG9wZXJhdG9yIGFwcGVhcmluZyBpbiB0aGUgc291cmNlLCBjYWxsIGFwcHJvcHJpYXRlCglyb3V0aW5lIHRvIGluc2VydCBjb252ZXJzaW9ucyB3aGVuIG5lZWRlZCwgYW5kIGNvbXBsZXRlIHJlc29sdXRpb24gb2YKCW5vZGUuCgkoUmVzb2x2ZV9JbnRyaW5zaWNfT3BlcmF0b3IpOiBGaXggY3V0LWFuZC1wYXN0ZSBidWcgb24gdHJhbnNmZXIgb2YKCWludGVycHJldGF0aW9ucyBmb3IgcmV3cml0dGVuIHJpZ2h0IG9wZXJhbmQuCgkoU2V0X01peGVkX01vZGVfT3BlcmFuZCk6IEhhbmRsZSBwcm9wZXJseSBhIHVuaXZlcnNhbCByZWFsIG9wZXJhbmQgd2hlbgoJdGhlIG90aGVyIG9wZXJhbmQgaXMgb3ZlcmxvYWRlZCBhbmQgdGhlIGNvbnRleHQgaXMgYSB0eXBlIGNvbnZlcnNpb24uCgoyMDA0LTA2LTA3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWRhLXRyZWUuZGVmIChCTE9DS19TVE1UKTogTm93IGhhcyB0d28gb3BlcmFuZHMuCgkoQlJFQUtfU1RNVCk6IE5ldy4KCgkqIGFkYS10cmVlLmg6IChCTE9DS19TVE1UX0JMT0NLKTogTmV3IG1hY3JvLgoKCSogZ2lnaS5oOiAoZ25hdF9wb3BsZXZlbCk6IE5vdyByZXR1cm5zIGEgdHJlZS4KCgkqIHRyYW5zLmMgKGVuZF9ibG9ja19zdG10KTogQWRkIGFyZzsgYWxsIGNhbGxlcnMgY2hhbmdlZC4KCSh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX0Nhc2VfU3RhdGVtZW50KTogTWFrZSBhIEJMT0NLX1NUTVQgZm9yIGEgV0hFTi4KCShzdGFydF9ibG9ja19zdG10KTogQ2xlYXIgQkxPQ0tfU1RNVF9CTE9DSy4KCShhZGRfc3RtdCk6IFNldCBUUkVFX1RZUEUuCgkoZ25hdF9leHBhbmRfc3RtdCwgY2FzZSBCTE9DS19TVE1UKTogSGFuZGxlIEJMT0NLX1NUTVRfQkxPQ0suCgkoZ25hdF9leHBhbmRfc3RtdCwgY2FzZSBCUkVBS19TVE1UKTogTmV3IGNhc2UuCgoJKiB1dGlscy5jIChnbmF0X3BvcGxldmVsKTogUmV0dXJuIGEgQkxPQ0ssIGlmIHdlIG1hZGUgb25lLgoKMjAwNC0wNi0wNyAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogcy1zdGNob3AuYWRzbSBzLXN0Y2hvcC5hZGIsIHMtc3RjaG9wLXZ4d29ya3MuYWRiOiBSZW1vdmUgdGhlCglwcm9jZWR1cmUgU2V0X1N0YWNrX1NpemUgdGhhdCBpcyBub3QgbmVlZGVkLgoKMjAwNC0wNi0wNyAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfdWduLnRleGk6IENsYXJpZnkgdGhlIGNhc2Ugd2hlbiBub24tc3RhbmRhcmQgbmFtaW5nIHNjaGVtZSBpcwoJdXNlZCBmb3IgZ25hdHBwIGlucHV0IGZpbGUgYW5kIGZvciB0aGUgZmlsZXMgdXBvbiB3aGljaCBpdCBkZXBlbmRzCgoyMDA0LTA2LTA3ICBCZW4gQnJvc2dvbCAgPGJyb3Nnb2xAZ25hdC5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBXb3Jkc21pdGhpbmcgb2YgIkdOQVQgYW5kIExpYnJhcmllcyIgY2hhcHRlcgoKMjAwNC0wNi0wNyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0dnNuLmFkczogQnVtcCB2ZXJzaW9uIG51bWJlcnMgYXBwcm9wcmlhdGVseS4KCUFkZCBuZXcgYnVpbGQgdHlwZS4KCjIwMDQtMDYtMDcgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEltcHJvdmUgY29tbWVudHMgYWJvdXQgaW1wb3J0ZWQgbmFtZXMgYW5kIGxpbmsgbmFtZXMKCW9uIFdpbmRvd3MuIEFkZCBhIG5vdGUgYWJvdXQgdGhlIHJlcXVpcmVtZW50IHRvIHVzZSAtayBnbmF0ZGxsJ3Mgb3B0aW9uCgl3aGVuIHdvcmtpbmcgd2l0aCBhIERMTCB3aGljaCBoYXMgc3RyaXBwZWQgc3RkY2FsbCBzeW1ib2xzIChubyBAbm4KCXN1ZmZpeCkuCgoyMDA0LTA1LTI3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHZtc19kYXRhLmFkczogQWRkIG5ldyBHTkFUIFBSRVRUWSBxdWFsaWZpZXJzIC9OT19CQUNLVVAgYW5kCglDT01NRU5UU19MQVlPVVQ9VU5UT1VDSEVECgoJKiBzeW1ib2xzLXZtcy5hZGIsIHN5bWJvbHMtdm1zLWFscGhhLmFkYjogUmVuYW1lZCBzeW1ib2xzLXZtcy5hZGIgdG8KCXN5bWJvbHMtdm1zLWFscGhhLmFkYgoKMjAwNC0wNS0yNyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtLmFkczogQ2xhcmlmeSBkb2N1bWVudGF0aW9uIG9uIGNoZWNrcyBzdXBwcmVzc2lvbi4KCgkqIGVpbmZvLmFkcyAoSXNfS25vd25fTm9uX051bGwpOiBNaW5vciBjb21tZW50IHR5cG8gZml4IGFuZCByZXBocmFzaW5nLgoKMjAwNC0wNS0yNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX3V0aWwuYWRiIChJc19EZXNjZW5kZW50X09mKTogRXhhbWluZSBwcm9wZXJseSBhbGwgYW5jZXN0b3JzIGluCgl0aGUgY2FzZSBvZiBtdWx0aXBsZSBkZXJpdmF0aW9ucy4KCShJc19PYmplY3RfUmVmZXJlbmNlKTogRm9yIGEgc2VsZWN0ZWQgY29tcG9uZW50LCB2ZXJpZnkgdGhhdCB0aGUgcHJlZml4CglpcyBpdHNlbGYgYW4gb2JqZWN0IGFuZCBub3QgYSB2YWx1ZS4KCgkqIHNlbV9jaDEyLmFkYiAoU2FtZV9JbnN0YW50aWF0ZWRfQ29uc3RhbnQpOiBOZXcgbmFtZSBmb3IKCVNhbWVfSW5zdGFudGlhdGVkX0VudGl0eS4KCShTYW1lX0luc3RhbnRpYXRlZF9WYXJpYWJsZSk6IFN1YnNpZGlhcnkgdG8KCUNoZWNrX0Zvcm1hbF9QYWNrYWdlX0luc3RhbmNlLCB0byByZWNvZ25pemUgYWN0dWFscyBmb3IgaW4tb3V0IGdlbmVyaWMKCWZvcm1hbHMgdGhhdCBhcmUgb2J0YWluZWQgZnJvbSBhIHByZXZpb3VzIGZvcm1hbCBwYWNrYWdlLgoJKEluc3RhbnRpYXRlX1N1YnByb2dyYW1fQm9keSk6IEVtaXQgcHJvcGVyIGVycm9yIHdoZW4KCWdlbmVyYXRpbmcgY29kZSBhbmQgdGhlIHByb3BlciBib2R5IG9mIGEgc3R1YiBpcyBtaXNzaW5nLgoKCSogc2VtX2NoNC5hZGIgKFJlbW92ZV9BZGRyZXNzX0ludGVycHJldGF0aW9ucyk6IElmIHRoZSBvcGVyYXRpb24gc3RpbGwKCWhhcyBhIHVuaXZlcnNhbCBpbnRlcnByZXRhdGlvbiwgZG8gdGhlIGRpc2FtYmlndWF0aW9uIGhlcmUuCgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fVHlwZV9Db252ZXJzaW9uLAoJRXhwYW5kX05fVW5jaGVja2VkX1R5cGVfQ29udmVyc2lvbik6IFNwZWNpYWwgaGFuZGxpbmcgd2hlbiB0YXJnZXQgdHlwZQoJaXMgQWRkcmVzcywgdG8gYXZvaWQgdHlwaW5nIGFub21hbGllcyB3aGVuIEFkZHJlc3MgaXMgYSB2aXNpYmxlIGludGVnZXIKCXR5cGUuCgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX05fU3VicHJvZ3JhbV9Cb2R5KTogVXNlIElzX0Rlc2NlbmRlbnRfT2ZfQWRkcmVzcwoJdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzdWJwcm9ncmFtIHNob3VsZCBub3QgYmUgbWFya2VkIFB1cmUsIGV2ZW4gd2hlbgoJZGVjbGFyZWQgaW4gYSBwdXJlIHBhY2thZ2UuCgoyMDA0LTA1LTI3ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0X3Vnbi50ZXhpOiBSZXBsYWNlIHByYWdtYSBSYXZlbnNjYXIgYnkgcHJhZ21hIFByb2ZpbGUuCgoJKiBnbmF0X3JtLnRleGk6IFJlcGxhY2UgTWF4X0VudHJ5X1F1ZXVlX0RlcHRoIGJ5IE1heF9FbnRyeV9RdWV1ZV9MZW5ndGgKCURvY3VtZW50IE5vX0R5bmFtaWNfQXR0YWNobWVudCwgdGhhdCBzdXBlcnNlZGVzIE5vX0R5bmFtaWNfSW50ZXJydXB0cy4KCVVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiBhYm91dCB0aGUgUmF2ZW5zY2FyIHByb2ZpbGUsIGZvbGxvd2luZyB0aGUKCWRlZmluaXRpb24gZm91bmQgaW4gQUktMjQ5LgoKCSogc2VtX3ByYWcuYWRiOiBVc2UgRklGT19XaXRoaW5fUHJpb3JpdGllcyBhbmQgQ2VpbGluZ19Mb2NraW5nIHdoZW4KCXNldHRpbmcgdGhlIFByb2ZpbGUgKFJhdmVuc2NhcikuIFRoaXMgbXVzdCBiZSBkb25lIGluIGFkZGl0aW9uIHRvCglzZXR0aW5nIHRoZSByZXF1aXJlZCByZXN0cmljdGlvbnMuCgoJKiBydHNmaW5kLmFkczogQWRkIHRoZSBzZXQgb2Ygb3BlcmF0aW9ucyBkZWZpbmVkIGluIHBhY2thZ2UKCUFkYS5JbnRlcnJ1cHRzLgoKCSogZXhwX2NoNi5hZGI6IENoZWNrIHdoZXRoZXIgd2UgYXJlIHZpb2xhdGluZyB0aGUgTm9fRHluYW1pY19BdHRhY2htZW50CglyZXN0cmljdGlvbi4KCjIwMDQtMDUtMjcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCglsYW5nLXNwZWNzLmg6IEFsd2F5cyByZXF1aXJlIC1jIG9yIC1TIGFuZCBhbHdheXMgcmVkaXJlY3QgdG8gL2Rldi9udWxsCglpZiAtZ25hdGMgb3IgLWduYXRzIGlzIHBhc3NlZC4KCjIwMDQtMDUtMjcgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAZ25hdC5jb20+CgoJKiBzZW1fcHJhZy5hZGIgKFNpZ19GbGFncyk6IEEgUHJhZ21hX1VuY2hlY2tlZF9VbmlvbiBkb2VzIG5vdCBjb3VudCBhcwoJYSBzaWduaWZpY2FudCByZWZlcmVuY2UuIFdhcm5pbmdzIGFyZSBub3cgcHJvcGVybHkgZW1pdHRlZCB3aGVuIGEKCWRpc2NyaW1pbmF0ZWQgdHlwZSBpcyBub3QgcmVmZXJlbmNlZC4KCgkqIGxpYi14cmVmLmFkYiAoR2VuZXJhdGVfUmVmZXJlbmNlKTogQSBkZWZlcnJlZCBjb25zdGFudCBjb21wbGV0aW9uLAoJcmVjb3JkIHJlcHJlc2VudGF0aW9uIGNsYXVzZSBvciByZWNvcmQgdHlwZSBkaXNjcmltaW5hbnQgZG9lcyBub3QKCXByb2R1Y2UgYSByZWZlcmVuY2UgdG8gaXRzIGNvcnJlc3BvbmRpbmcgZW50aXR5LiBXYXJuaW5ncyBhcmUgbm93Cglwcm9wZXJseSBlbWl0dGVkIHdoZW4gZGVmZXJyZWQgY29uc3RhbnRzIGFuZCByZWNvcmQgdHlwZXMgYXJlIG5vdAoJcmVmZXJlbmNlZC4KCjIwMDQtMDUtMjcgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogVXNlIGxvbmcgdmVyc2lvbiBvZiBsaWJtIHJvdXRpbmVzIG9uIGlhNjQgZ251L2xpbnV4LgoJRml4ZXMgQUNBVFMgQW5uZXggRyB0ZXN0cy4KCjIwMDQtMDUtMjcgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcnRzZmluZC5hZGIgKFJUVV9Mb2FkZWQpOiBUZW1wb3Jhcnkga2x1ZGdlIHRvIGdldCBwYXN0IGJ1ZyBvZiBub3QKCWhhbmRsaW5nIFdJVEgKCjIwMDQtMDUtMjcgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogcy1pbnRlcnIuYWRiIChTZXJ2ZXJfVGFzayk6IFRha2UgaW50byBhY2NvdW50IGNhc2Ugb2YgZWFybHkgcmV0dXJuCglmcm9tIHNpZ3dhaXQgdW5kZXIgZS5nLiBsaW51eC4KCjIwMDQtMDUtMjcgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0X3Vnbi50ZXhpOiBBZGQgZGVzY3JpcHRpb24gZm9yIHRoZSBuZXcgZ25hdHBwIG9wdGlvbnM6CgkgLXJuYiAtIHJlcGxhY2UgdGhlIG9yaWdpbmFsIHNvdXJjZSB3aXRob3V0IGNyZWF0aW5nIGl0cyBiYWNrdXAgY29weQoJIC1jMCAtIGRvIG5vdCBmb3JtYXQgY29tbWVudHMKCjIwMDQtMDUtMjQgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBhLW51bWF1eC14ODYuYWRiIChSZWR1Y2UpOiBSZWltcGxlbWVudCB1c2luZyBhbiBhcHByb3hpbWF0aW9uIG9mIFBpCgl3aXRoIDE5MiBiaXRzIG9mIHByZWNpc2lvbiwgc3VmZmljaWVudCB0byByZWR1Y2UgYSBkb3VibGUtZXh0ZW5kZWQKCWFyZ3VtZW50cyBYIHdpdGggYSBtYXhpbXVtIHJlbGF0aXZlIGVycm9yIG9mIFQnTWFjaGluZV9FcHNpbG9uLCBmb3IgWAoJaW4gLTIuMCoqMzIgLi4gMi4wKiozMi4KCShDb3MsIFNpbik6ICBBbHdheXMgcmVkdWNlIGFyZ3VtZW50cyBvZiAxLzQgUGkgb3IgbGFyZ2VyLCB0byBwcmV2ZW50CglyZWR1Y3Rpb24gYnkgdGhlIHByb2Nlc3Nvciwgd2hpY2ggb25seSB1c2VzIGEgNjgtYml0IGFwcHJveGltYXRpb24gb2YKCVBpLgoJKFRhbik6IEFsd2F5cyByZWR1Y2UgYXJndW1lbnRzIGFuZCBjb21wdXRlIGZ1bmN0aW9uIGVpdGhlciB1c2luZwoJdGhlIHByb2Nlc3NvcidzIGZwdGFuIGluc3RydWN0aW9uLCBvciBieSBkaXZpZGluZyBzaW4gYW5kIGNvcyBhcyBuZWVkZWQuCgoyMDA0LTA1LTI0ICBEb3VnIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogYWRhaW50LmMgKF9fZ25hdF9yZWFkZGlyKTogQ2FzdCBDUlRMIGZ1bmN0aW9uIHJldHVuIHZhbHVlIHRvIGF2b2lkCglnY2MgZXJyb3Igb24gMzIvNjQgYml0IFZNUy4KCjIwMDQtMDUtMjQgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGluaXQuYyAoX19nbmF0X2Vycm9yX2hhbmRsZXIpOiBIYW5kbGUgRUVYSVNUIGFzIEVBQ0NFUyBmb3IgU0lHU0VHVnMsCglzaW5jZSB0aGlzIGlzIHdoYXQgd2UgZ2V0IGZvciBzdGFjayBvdmVyZmxvd3MgYWx0aG91Z2ggbm90IGRvY3VtZW50ZWQKCWFzIHN1Y2guCglEb2N1bWVudCB0aGUgaXNzdWVzIHdoaWNoIG1heSByZXF1aXJlIGFkanVzdG1lbnRzIHRvIG91ciBzaWduYWwKCWhhbmRsZXJzLgoKMjAwNC0wNS0yNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogaW5saW5lLmFkYiAoQWRkX1Njb3BlX1RvX0NsZWFuKTogRG8gbm90IGFkZCBjbGVhbnVwIGFjdGlvbnMgdG8gdGhlCgllbmNsb3NpbmcgZHluYW1pYyBzY29wZSBpZiB0aGUgaW5zdGFudGlhdGlvbiBpcyB3aXRoaW4gYSBnZW5lcmljIHVuaXQuCgoyMDA0LTA1LTI0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9kYnVnLmFkczogRml4IHR5cG8uCgoJKiBNYWtlZmlsZS5pbjogcy1vc2ludGUtbGludXgtaWE2NC5hZHMgd2FzIG1pc25hbWVkLgoJUmVuYW1lIGl0IHRvIGl0cyBwcm9wZXIgbmFtZTogc3lzdGVtLWxpbnV4LWlhNjQuYWRzCgkoc3RhbXAtZ25hdGxpYjEpOiBSZW1vdmUgZXh0cmEgdGFyZ2V0IHNwZWNpZmljIHJ1biB0aW1lIGZpbGVzIHdoZW4KCXNldHRpbmcgdXAgdGhlIHJ0cyBkaXJlY3RvcnkuCgoyMDA0LTA1LTI0ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYiAoTGltaXRlZF9WaWV3cyk6IFJlbW92ZWQuCgkoTGltaXRlZF9WaWV3KTogTmV3IGF0dHJpYnV0ZSB0aGF0IHJlcGxhY2VzIHRoZSBwcmV2aW91cyBvbmUuIEl0IGlzCglub3cgYSBib25hIGZpZGUgcGFja2FnZSB3aXRoIHRoZSBsaW1pdGVkLXZpZXcgbGlzdCB0aHJvdWdoIHRoZQoJZmlyc3RfZW50aXR5IGFuZCBmaXJzdF9wcml2YXRlIGF0dHJpYnV0ZXMuCgoJKiBzZW1fY2gxMC5hZGIgKEluc3RhbGxfUHJpdmF0ZV9XaXRoX0NsYXVzZXMpOiBHaXZlIHN1cHBvcnQgdG8KCWxpbWl0ZWQtcHJpdmF0ZS13aXRoIGNsYXVzZS4KCShJbnN0YWxsX0xpbWl0ZWRfV2l0aGVkX1VuaXQpOiBJbnN0YWxsIHRoZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBvZiBhCglsaW1pdGVkLXByaXZhdGUtd2l0aGVkIHBhY2thZ2UuIFVwZGF0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzaGFkb3cKCWVudGl0aWVzIGFjY29yZGluZyB0byB0aGUgbmV3IHN0cnVjdHVyZSAoc2VlIEJ1aWxkX0xpbWl0ZWRfVmlld3MpCgkoQnVpbGRfTGltaXRlZF9WaWV3cyk6IFJlcGxhY2UgdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uIG9mIHRoZQoJbGltaXRlZCB2aWV3IGJ5IGEgcGFja2FnZSBlbnRpdHkgdGhhdCByZWZlcmVuY2VzIHRoZSBmaXJzdCBzaGFkb3cKCWVudGl0eSBwbHVzIHRoZSBmaXJzdCBzaGFkb3cgcHJpdmF0ZSBlbnRpdHkgKHJlcXVpcmVkIGZvciBsaW1pdGVkLQoJcHJpdmF0ZS13aXRoIGNsYXVzZSkKCShOZXdfSW50ZXJuYWxfU2hhZG93X0VudGl0eSk6IENvZGUgY2xlYW51cC4KCShSZW1vdmVfTGltaXRlZF9XaXRoX0NsYXVzZSk6IFVwZGF0ZSB0aGUgaW1wbGVtZW50YXRpb24gdG8gdW5kbyB0aGUKCW5ldyB3b3JrIGNhcnJpZWQgb3V0IGJ5IEJ1aWxkX0xpbWl0ZWRfVmlld3MuCgkoQnVpbGRfQ2hhaW4pOiBDb21wbGV0ZSBkb2N1bWVudGF0aW9uLgoJUmVwbGFjZSBBZGEwWSBieSBBZGEgMFkgaW4gY29tbWVudHMKCU1pbm9yIHJlZm9ybWF0aW5nCgoJKiBzZW1fY2gzLmFkYiAoQXJyYXlfVHlwZV9EZWNsYXJhdGlvbik6IEluIGNhc2Ugb2YgYW5vbnltb3VzIGFjY2VzcwoJdHlwZXMgdGhlIGxldmVsIG9mIGFjY2Vzc2liaWxpdHkgZGVwZW5kcyBvbiB0aGUgZW5jbG9zaW5nIHR5cGUKCWRlY2xhcmF0aW9uLgoKCSogc2VtX2NoOC5hZGIgKEZpbmRfRXhwYW5kZWRfTmFtZSk6IEZpeCBjb25kaXRpb24gdG8gZGV0ZWN0IHNoYWRvdwoJZW50aXRpZXMuIENvbXBsZXRlIGRvY3VtZW50YXRpb24gb2YgcHJldmlvdXMgY2hhbmdlLgoKMjAwNC0wNS0yNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBuYW1ldC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJQXZvaWQgdXNlIG9mIG5hbWUgSSAocmVwbGFjZSBieSBKKQoJTWlub3IgY29kZSByZXN0cnVjdHVyaW5nCgoJKiBzZW1fY2g2LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBsaWItd3JpdC5hZGI6IERvIG5vdCBzZXQgcmVzdHJpY3Rpb24gYXMgYWN0aXZlIGlmIHRoaXMgaXMgYQoJUmVzdHJpY3Rpb25fV2FybmluZyBjYXNlLgoKCSogc2VtX3ByYWcuYWRiOiBSZXNldCByZXN0cmljdGlvbiB3YXJuaW5nIGZsYWcgaWYgcmVhbCBwcmFnbWEKCXJlc3RyaWN0aW9uIGVuY291bnRlcmVkLgoKCSogcy1odGFibGUuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUNoYW5nZSByb3RhdGUgY291bnQgdG8gMyBpbiBIYXNoIChpbXByb3ZlcyBoYXNoIGZvciBzbWFsbCBzdHJpbmdzKQoKCSogNXFzeXN0ZW0uYWRzOiBBZGQgY29tbWVudHMgZm9yIHR5cGUgQWRkcmVzcyAobm8gbGl0ZXJhbHMgYWxsb3dlZCkuCgoJKiBnbmF0X3Vnbi50ZXhpOiBBZGQgbmV3IHNlY3Rpb24gb2YgZG9jdW1lbnRhdGlvbiAiQ29kZSBHZW5lcmF0aW9uCglDb250cm9sIiwgd2hpY2ggZGVzY3JpYmVzIHRoZSB1c2Ugb2YgLW0gc3dpdGNoZXMuCgoyMDA0LTA1LTI0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pIDxOX0lkZW50aWZpZXI+OiBEbyB0aGUgZGVyZWZlcmVuY2UgZGlyZWN0bHkKCXRocm91Z2ggdGhlIERFQ0xfSU5JVElBTCBmb3IgcmVuYW1lZCB2YXJpYWJsZXMuCgoyMDA0LTA1LTI0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIHMtb3NpbnRlLWxpbnV4LWlhNjQuYWRzOiBSZW5hbWVkIHN5c3RlbS1saW51eC1pYTY0LmFkcwoKMjAwNC0wNS0xOSAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAZ25hdC5jb20+CgoJKiBleHBfZGJ1Zy5hZHM6IENvcnJlY3QgY29tbWVudHMgY29uY2VybmluZyBoYW5kbGluZyBvZiBvdmVybG9hZGluZywKCXNpbmNlIHdlIG5vIGxvbmdlciB1c2UgJCBhbnltb3JlLgoKMjAwNC0wNS0xOSAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9jaDEwLmFkYiAoT3B0aW9uYWxfU3VidW5pdCk6IFdoZW4gbG9hZGluZyBhIHN1YnVuaXQsIGRvIG5vdAoJaWdub3JlIGVycm9ycyBpZiBBU0lTX01vZGUgaXMgc2V0LiBUaGlzIHByZXZlbnRzIGNyZWF0aW5nIEFTSVMgdHJlZXMKCXdpdGggaWxsZWdhbCBzdWJ1bml0cy4KCjIwMDQtMDUtMTkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDYuYWRiIChDaGVja19Gb2xsb3dpbmdfUHJhZ21hKTogV2hlbiBjb21waWxpbmcgYSBzdWJwcm9ncmFtCglib2R5IHdpdGggZnJvbnQtZW5kIGlubGluaW5nIGVuYWJsZWQsIGNoZWNrIHdoZXRoZXIgYW4gaW5saW5lIHByYWdtYQoJYXBwZWFycyBpbW1lZGlhdGVseSBhZnRlciB0aGUgYm9keSBhbmQgYXBwbGllcyB0byBpdC4KCgkqIHNlbV9wcmFnLmFkYiAoQ2Fubm90X0lubGluZSk6IEVtaXQgd2FybmluZyBpZiBmcm9udC1lbmQgaW5saW5pbmcgaXMKCWVuYWJsZWQgYW5kIHRoZSBwcmFnbWEgYXBwZWFycyBhZnRlciB0aGUgYm9keSBvZiB0aGUgc3VicHJvZ3JhbS4KCjIwMDQtMDUtMTcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJUGFydCBvZiBmdW5jdGlvbi1hdC1hLXRpbWUgY29udmVyc2lvbgoKCSogbWlzYy5jIChhZGp1c3RfZGVjbF9ydGwpOiBEZWxldGVkLgoJKExBTkdfSE9PS1NfUFVTSExFVkVMLCBMQU5HX0hPT0tTX1BPUExFVkVMLCBMQU5HX0hPT0tTX1NFVF9CTE9DSyk6CglEZWZpbmUuCgoJKiBnaWdpLmg6IChhZGp1c3RfZGVjbF9ydGwsIGtlcHRfbGV2ZWxfcCwgc2V0X2Jsb2NrKTogRGVsZXRlZC4KCShhZGRfZGVjbF9zdG10LCBhZGRfc3RtdCwgYmxvY2tfaGFzX3ZhcnMpOiBOZXcgZnVuY3Rpb25zLgoJKGduYXRfcHVzaGxldmVsLCBnbmF0X3BvcGxldmVsKTogUmVuYW1lZCBmcm9tIHB1c2hsZXZlbCBhbmQgcG9wbGV2ZWwuCgoJKiBkZWNsLmMgKGVsYWJvcmF0ZV9leHByZXNzaW9uLCBtYXliZV9wYWRfdHlwZSk6IENhbGwgYWRkX2RlY2xfc3RtdAoJd2hlbiBtYWtpbmcgYSBkZWNsLgoJKGduYXRfdG9fZ251X2VudGl0eSk6IExpa2V3aXNlLgoJVXNlIGFkZF9zdG10IHRvIHVwZGF0ZSBzZXRqbXAgYnVmZmVyLgoJU2V0IFRSRUVfQUREUkVTU0FCTEUgaW5zdGVhZCBvZiBjYWxsaW5nIHB1dF92YXJfaW50b19zdGFjayBhbmQKCWZsdXNoX2FkZHJlc3NvZi4KCU5vIGxvbmdlciBjYWxsIGFkanVzdF9kZWNsX3J0bC4KCShERUNMX0lOSVRfQllfQVNTSUdOX1ApOiBOZXcgbWFjcm8uCgkoREVDTF9TVE1UX1ZBUik6IExpa2V3aXNlLgoKCSogdHJhbnMuYyAoZ2lnaSk6IENhbGwgc3RhcnRfYmxvY2tfc3RtdCB0byBtYWtlIHRoZSBvdXRlcm1vc3QKCUJMT0NLX1NUTVQuCgkoZ25hdF90b19jb2RlLCBnbnVfdG9fZ251LCB0cmVlX3RyYW5zZm9ybSwgcHJvY2Vzc19kZWNscywgcHJvY2Vzc190eXBlKToKCUNhbGwgc3RhcnRfYmxvY2tfc3RtdCBhbmQgZW5kX2Jsb2NrX3N0bXQgdGVtcG9yYXJpbHkuCglVc2UgZ25hdF9leHBhbmRfc3RtdCBpbnN0ZWFkIG9mIGV4cGFuZF9leHByX3N0bXQuCgkoYWRkX2RlY2xfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCSh0cmVlX3RyYW5zZm9ybSk6IENhbGwgaXQuCgkoYWRkX3N0bXQpOiBBbHNvIGVtaXQgaW5pdGlhbGl6aW5nIGFzc2lnbm1lbnQgZm9yIERFQ0xfU1RNVCBpZiBuZWVkZWQuCgkoZW5kX2Jsb2NrX3N0bXQpOiBTZXQgdHlwZSBhbmQgTlVMTF9TVE1ULgoJKGduYXRfZXhwYW5kX3N0bXQpOiBNYWtlIHJlY3Vyc2l6ZSBjYWxsIGluc3RlYWQgb2YgY2FsbGluZwoJZXhwYW5kX2V4cHJfc3RtdC4KCShnbmF0X2V4cGFuZF9zdG10LCBjYXNlIERFQ0xfU1RNVCk6IE5ldyBjYXNlLgoJKHNldF9saW5lbm9fZnJvbV9zbG9jKTogRG8gbm90aGluZyBpZiBnbG9iYWwuCgkoZ251X2Jsb2NrX3N0bXRfbm9kZSwgZ251X2Jsb2NrX3N0bXRfZnJlZV9saXN0KTogTmV3IHZhcmlhYmxlcy4KCShzdGFydF9ibG9ja19zdG10LCBhZGRfc3RtdCwgZW5kX2Jsb2NrX3N0bXQpOiBOZXcgZnVuY3Rpb25zLgoJKGJ1aWxkX2Jsb2NrX3N0bXQpOiBDYWxsIHRoZW0uCgkoZ25hdF90b19jb2RlKTogRG9uJ3QgZXhwYW5kIE5VTExfU1RNVC4KCShidWlsZF91bml0X2VsYWIpOiBSZW5hbWUgcHVzaGxldmVsIGFuZCBwb3BsZXZlbCB0byBnbmF0XyogYW5kIGNoYW5nZQoJYXJncy4KCSh0cmVlX3RyYW5zZm9ybSk6IExpa2V3aXNlLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fTnVsbF9TdGF0ZW1lbnQpOiBSZXR1cm4gTlVMTF9TVE1ULgoJKGduYXRfZXhwYW5kX3N0bXQsIGNhc2UgTlVMTF9TVE1UKTogTmV3IGNhc2UuCgkoZ25hdF9leHBhbmRfc3RtdCwgY2FzZSBJRl9TVE1UKTogQWxsb3cgbmVzdGVkIElGX1NUTVQgdG8gaGF2ZSBubwoJSUZfU1RNVF9UUlVFLgoKCSogdXRpbHMyLmMgKGduYXRfbWFya19hZGRyZXNzYWJsZSwgY2FzZSBWQVJfREVDTCk6IERvIG5vdCBzZXQKCVRSRUVfQUREUkVTU0FCTEUuCgoJKiB1dGlscy5jIChjcmVhdGVfdmFyX2RlY2wpOiBEbyBub3QgY2FsbCBleHBhbmRfZGVjbCBvcgoJZXhwYW5kX2RlY2xfaW5pdC4KCVNldCBUUkVFX0FERFJFU1NBQkxFIGluc3RlYWQgb2YgY2FsbGluZyBnbmF0X21hcmtfYWRkcmVzc2FibGUuCglTZXQgREVDTF9JTklUX0JZX0FTU0lHTl9QIHdoZW4gbmVlZGVkIGFuZCBkbyBub3QgZ2VuZXJhdGUgTU9ESUZZX0VYUFIKCWhlcmUuCgkoc3RydWN0IGVfc3RhY2spOiBBZGQgY2hhaW5fbmV4dCB0byBHVFkuCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBEZWxldGVkLgoJKHN0cnVjdCBhZGFfYmluZGluZ19sZXZlbCk6IE5ldyBzdHJ1Y3QuCgkoZnJlZV9ibG9ja19jaGFpbik6IE5ldy4KCShnbG9iYWxfYmluZGluZ19sZXZlbCwgY2xlYXJfYmluZGluZ19sZXZlbCk6IERlbGV0ZWQuCgkoZ2xvYmFsX2JpbmRpbmdzX3ApOiBSZXdvcmsgdG8gc2VlIGlmIG5vIGNoYWluLgoJKGtlcHRfbGV2ZWxfcCwgc2V0X2Jsb2NrKTogRGVsZXRlZC4KCShnbmF0X3B1c2hsZXZlbCk6IFJlbmFtZWQgZnJvbSBwdXNobGV2ZWwgYW5kIGV4dGVuc2l2ZSByZXdvcmtlZCB0byB1c2UKCW5ldyBkYXRhIHN0cnVjdHVyZSBhbmQgd29yayBkaXJlY3RseSBvbiBCTE9DSyBub2RlLgoJKGduYXRfcG9wbGV2ZWwpOiBTaW1pbGFybHkuCgkoZ2V0X2RlY2xzKTogTG9vayBhdCBCTE9DS19WQVJTLgoJKGluc2VydF9ibG9jayk6IFdvcmsgZGlyZWN0bHkgb24gQkxPQ0sgbm9kZS4KCShibG9ja19oYXNfdmFyKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hkZWNsKTogUmV3b3JrIGZvciBuZXcgYmluZGluZyBzdHJ1Y3R1cmVzLgoJKGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZW5hbWUgYW5kIHJld29yayBjYWxscyB0byBwdXNobGV2ZWwgYW5kCglwb3BsZXZlbC4KCShidWlsZF9zdWJwcm9nX2JvZHkpOiBMaWtld2lzZS4KCShlbmRfc3VicHJvZ19ib2R5KTogTGlrZXdpc2U7IGFsc28gc2V0IHVwIEJMT0NLIGluIERFQ0xfSU5JVElBTC4KCgkqIGFkYS10cmVlLmRlZiAoREVDTF9TVE1ULCBOVUxMX1NUTVQpOiBOZXcgY29kZXMuCgoJKiBhZGEtdHJlZS5oOiAoREVDTF9JTklUX0JZX0FTU0lHTl9QKTogTmV3IG1hY3JvLgoJKERFQ0xfU1RNVF9WQVIpOiBMaWtld2lzZS4KCjIwMDQtMDUtMTcgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcmVzdHJpY3QuYWRzLCByZXN0cmljdC5hZGIgKFByb2Nlc3NfUmVzdHJpY3Rpb25fU3lub255bSk6IE5ldwoJcHJvY2VkdXJlCgoJKiBzZW1fcHJhZy5hZGIgKEFuYWx5emVfUHJhZ21hLCBjYXNlIFJlc3RyaWN0aW9ucyk6IENsZWFudXAgaGFuZGxpbmcKCW9mIHJlc3RyaWN0aW9uIHN5bm9ueXVtcyBieSB1c2luZwoJUmVzdHJpY3QuUHJvY2Vzc19SZXN0cmljdGlvbl9TeW5vbnltcy4KCgkqIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBlbnRyaWVzIGZvciBQcm9jZXNzX1Jlc3RyaWN0aW9uX1N5bm9ueW0KCgkqIHMtcmVzdHJpLmFkcyAoVGFza2luZ19BbGxvd2VkKTogQ29ycmVjdCBtaXNzaW5nIGNvbW1lbnQKCgkqIHMtcmlkZW50LmFkczogQWRkIGVudHJpZXMgZm9yIHJlc3RyaWN0aW9uIHN5bm9ueW1zCgoJKiBhbGkuYWRiOiBGaXggc29tZSBwcm9ibGVtcyB3aXRoIGJhZGx5IGZvcm1hdHRlZCBBTEkgZmlsZXMgdGhhdCBjYW4KCXJlc3VsdCBpbiBpbmZpbml0ZSBsb29wcy4KCgkqIHMtdGFwcm9wLWx5bnhvcy5hZGIsIHMtdHBvcHNwLWx5bnhvcy5hZGIsIHMtdGFwcm9wLXRydTY0LmFkYiwKCXMtdHBvcHNwLXBvc2l4LWZvcmVpZ24uYWRiLCBzLXRhcHJvcC1pcml4LmFkYiwgcy1pbnRlcnItc2lnYWN0aW9uLmFkYiwKCXMtdGFwcm9wLWlyaXgtYXRocmVhZC5hZGIsIHMtdGFwcm9wLWhwdXgtZGNlLmFkYiwgcy10YXByb3AtbGludXguYWRiLAoJcy10YXByb3AtZHVtbXkuYWRiLCBzLWludGVyci1kdW1teS5hZGIsIHMtdGFwcm9wLW9zMi5hZGIsCglzLXRhcHJvcC1zb2xhcmlzLmFkYiwgcy10cG9wc3Atc29sYXJpcy5hZGIsIHMtYXN0aGFuLXZtcy5hZGIsCglzLWlubWFvcC12bXMuYWRiLCBzLWludGVyci12bXMuYWRiLCBzLXRhcHJvcC12bXMuYWRiLAoJcy10cG9wZGUtdm1zLmFkYiwgcy10YXByb3AtbWluZ3cuYWRiLCBzLWludGVyci12eHdvcmtzLmFkYiwKCXMtdGFwcm9wLXZ4d29ya3MuYWRiLCBzLXRwb3BzcC12eHdvcmtzLmFkYiwgcy10YXByb3AtcG9zaXguYWRiLAoJcy10cG9wc3AtcG9zaXguYWRiLCBzLXRyYXRhcy1kZWZhdWx0LmFkYiwgYS1keW5wcmkuYWRiLAoJYS10YXNhdHQuYWRiLCBhLXRhc2lkZS5hZGIsIGEtdGFzaWRlLmFkcywgZXhwX2F0dHIuYWRiLAoJZXhwX2NoOS5hZGIsIGctdGhyZWFkLmFkYiwgcnRzZmluZC5hZHMsIHNlbV9hdHRyLmFkYiwKCXMtaW50ZXJyLmFkYiwgcy1pbnRlcnIuYWRzLCBzLXNvZmxpbi5hZHMsIHMtdGFhc2RlLmFkYiwKCXMtdGFhc2RlLmFkcywgcy10YWVuY2EuYWRiLCBzLXRhZW5jYS5hZHMsIHMtdGFwcm9wLmFkcywKCXMtdGFyZXN0LmFkYiwgcy10YXJlc3QuYWRzLCBzLXRhc2RlYi5hZGIsIHMtdGFzZGViLmFkcywKCXMtdGFzaW5pLmFkYiwgcy10YXNpbmkuYWRzLCBzLXRhc2tpbi5hZGIsIHMtdGFza2luLmFkcywKCXMtdGFzcXVlLmFkYiwgcy10YXNxdWUuYWRzLCBzLXRhc3Jlbi5hZGIsIHMtdGFzcmVuLmFkcywKCXMtdGFzc3RhLmFkYiwgcy10YXNzdGEuYWRzLCBzLXRhc3V0aS5hZGIsIHMtdGFzdXRpLmFkcywKCXMtdGF0YWF0LmFkYiwgcy10YXRhYXQuYWRzLCBzLXRwaW5vcC5hZGIsIHMtdHBpbm9wLmFkcywKCXMtdHBvYmVuLmFkYiwgcy10cG9ib3AuYWRiLCBzLXRwb2JvcC5hZHMsIHMtdHBvcmZ0LmFkYiwKCXMtdHBvc2VuLmFkYiwgcy10cG9zZW4uYWRzLCBzLXRyYXRhcy5hZGIsIHMtdHJhdGFzLmFkczogQ2hhbmdlIFRhc2tfSUQKCXRvIFRhc2tfSWQgKG1pbm9yIGNsZWFudXApLgoKMjAwNC0wNS0xNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnLW9zX2xpYi5hZGIgKE5vcm1hbGl6ZV9QYXRobmFtZS5GaW5hbF9WYWx1ZSk6IFJlbW92ZSB0cmFpbGluZwoJZGlyZWN0b3J5IHNlcGFyYXRvci4KCgkqIHByai1wcm9jLmFkYiAoUmVjdXJzaXZlX1Byb2Nlc3MpOiBJbmhlcml0IGF0dHJpYnV0ZSBMYW5ndWFnZXMgZnJvbQoJcHJvamVjdCBiZWluZyBleHRlbmRlZCwgaWYgTGFuZ3VhZ2VzIGlzIG5vdCBkZWNsYXJlZCBpbiBleHRlbmRpbmcKCXByb2plY3QuCgoyMDA0LTA1LTE3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IERvIG5vdCBpbnN0YWxsIHRoZQoJbGltaXRlZCB2aWV3IG9mIGEgdmlzaWJsZSBzaWJsaW5nLgoKMjAwNC0wNS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBNaW5vciBjaGFuZ2UgdG8gLWduYXRTIGRvY3VtZW50YXRpb24KCgkqIHNwcmludC5hZGI6IFJlbW92ZSBzb21lIGluc3RhbmNlcyBvZiBBc3NlcnQgKEZhbHNlKSBhbmQgZm9yIHRoaXMKCXB1cnBvc2UgcmVwbGFjZSB0aGVtIGJ5IG91dHB1dCBvZiBhID8/PyBzdHJpbmcuCgoJKiBjaGVja3MuYWRiLCBleHBfYWdnci5hZGIsIHNlbV9lbGltLmFkYjogUmVtb3ZlIHVzZWxlc3MgcHJhZ21hCglBc3NlcnQgKEZhbHNlKS4KCgkqIGxpYi13cml0LmFkYiwgbGliLWxvYWQuYWRiLCBsaWIuYWRzLCBsaWIuYWRiOiBSZW1vdmUgRGVwZW5kZW50X1VuaXQKCWZsYWcgcHJvY2Vzc2luZy4gVGhpcyB3YXMgc3VwcHJlc3NpbmcgcmVxdWlyZWQgZGVwZW5kZW5jaWVzIGluCglOb19SdW5fVGltZSBtb2RlIGFuZCBpcyBub3QgbmVlZGVkIHNpbmNlIHRoZSBiaW5kZXIgZG9lcyBub3QgZ2VuZXJhdGUKCXJlZmVyZW5jZXMgZm9yIHRoaW5ncyBpbiBsaWJnbmF0IGFueXdheS4KCgkqIHNlbV9jaDMuYWRiIChBY2Nlc3NfVHlwZV9EZWNsYXJhdGlvbik6IFJlb3JnYW5pemUgY29kZSB0byBhdm9pZCBHQ0MKCXdhcm5pbmcuCgoyMDA0LTA1LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0X3Vnbi50ZXhpOiBEb2N1bWVudCBBSVgtc3BlY2lmaWMgaXNzdWUgd2l0aCBpbml0aWFsaXphdGlvbiBvZgoJcmVzb2x2ZXIgbGlicmFyeS4KCgkqIGV4cF9jaDQuYWRiIChJbnNlcnRfRGVyZWZlcmVuY2VfQWN0aW9uKTogRG8gbm90IGdlbmVyYXRlIGRlcmVmZXJlbmNlCglhY3Rpb24gZm9yIHRoZSBjYXNlIG9mIGFuIGFjdHVhbCBwYXJhbWV0ZXIgaW4gYW4gaW5pdCBwcm9jIGNhbGwuCgoyMDA0LTA1LTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBJZiBwcmVmaXggaXMgYSBwcm90ZWN0ZWQKCXN1YnR5cGUsIGNoZWNrIHZpc2libGUgZW50aXRpZXMgaW4gYmFzZSB0eXBlLgoKCSogZXhwX2NoNy5hZGIgKENsZWFuX1NpbXBsZV9Qcm90ZWN0ZWRfT2JqZWN0cyk6IERvIG5vdCBnZW5lcmF0ZSBjbGVhbnVwCglhY3Rpb25zIGlmIHRoZSBvYmplY3QgaXMgYSByZW5hbWluZy4KCgkqIHNlbV9jaDEyLmFkYiAoU2FtZV9JbnN0YW50aWF0ZWRfRW50aXR5KTogUHJlZGljYXRlIGZvcgoJQ2hlY2tfRm9ybWFsX1BhY2thZ2VfSW5zdGFuY2UsIHRvIGRldGVybWluZSBtb3JlIHByZWNpc2VseSB3aGVuIHRoZQoJZm9ybWFsIGFuZCB0aGUgYWN0dWFsIGRlbm90ZSB0aGUgc2FtZSBlbnRpdHkuCgoyMDA0LTA1LTE0ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBwYXItY2gxMC5hZGIgKFBfQ29udGV4dF9DbGF1c2UpOiBDb21wbGV0ZSBkb2N1bWVudGF0aW9uIG9uIEFJLTI2MgoKCSogc2VtX2NoMTAuYWRiIChBbmFseXplX1dpdGhfQ2xhdXNlKTogQWZ0ZXIgYW5hbHl6ZWQsIHRoZSBlbnRpdHkKCWNvcnJlc3BvbmRpbmcgdG8gYSBwcml2YXRlX3dpdGggbXVzdCBiZSByZW1vdmVkIGZyb20gdmlzaWJpbGl0eTsgaXQKCXdpbGwgYmUgbWFkZSB2aXNpYmxlIGxhdGVyLCBqdXN0IGJlZm9yZSB3ZSBhbmFseXplIHRoZSBwcml2YXRlIHBhcnQgb2YKCXRoZSBwYWNrYWdlLgoJKENoZWNrX1ByaXZhdGVfQ2hpbGRfVW5pdCk6IEFsbG93IHByaXZhdGVfd2l0aCBjbGF1c2VzIGluIHB1YmxpYwoJc2libGluZ3MuCgkoSW5zdGFsbF9TaWJsaW5ncyk6IE1ha2UgdmlzaWJsZSB0aGUgcHJpdmF0ZSBlbnRpdGllcyBvZiBwcml2YXRlLXdpdGhlZAoJc2libGluZ3MuCgkoSW5zdGFsbF9XaXRoZWRfVW5pdCk6IERvIG5vdCBpbnN0YWxsIHRoZSBwcml2YXRlIHdpdGhlZCB1bml0IGlmIHdlCglhcmUgY29tcGlsaW5nIGEgcGFja2FnZSBkZWNsYXJhdGlvbiBhbmQgdGhlIFByaXZhdGVfV2l0aF9PSyBmbGFnIHdhcwoJbm90IHNldCBieSB0aGUgY2FsbGVyLiBUaGVzZSBkZWNsYXJhdGlvbnMgd2lsbCBiZSBpbnN0YWxsZWQgbGF0ZXIsCglqdXN0IGJlZm9yZSB3ZSBhbmFseXplIHRoZSBwcml2YXRlIHBhcnQgb2YgdGhlIHBhY2thZ2UuCgoJKiBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9PYmplY3RfRGVjbGFyYXRpb24pOiBJbiBjYXNlIG9mIGVycm9ycyBkZXRlY3RlZAoJZHVyaW5nIHRoZSBldmFsdWF0aW9uIG9mIHRoZSBleHByZXNzaW9uIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIG9iamVjdCwKCWRlY29yYXRlIGl0IHdpdGggdGhlIGV4cGVjdGVkIHR5cGUgdG8gYXZvaWQgY2FzY2FkZSBlcnJvcnMuCglDb2RlIGNsZWFudXAuCgoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBJZiB3ZSBhcmUgY29tcGlsaW5nIGEgbGlicmFyeQoJc3VicHJvZ3JhbSB3ZSBoYXZlIHRvIGluc3RhbGwgdGhlIHByaXZhdGVfd2l0aCBjbGF1c2VzIGFmdGVyIGl0cwoJc3BlY2lmaWNhdGlvbiBoYXMgYmVlbiBhbmFseXplZCAoYXMgZG9jdW1lbnRlZCBpbiBBSS0yNjIuVFhUKS4KCgkqIHNlbV9jaDguYWRiIChIYXNfUHJpdmF0ZV9XaXRoKTogTmV3IGZ1bmN0aW9uLiBEZXRlcm1pbmVzIGlmIHRoZQoJY3VycmVudCBjb21waWxhdGlvbiB1bml0IGhhcyBhIHByaXZhdGUgd2l0aCBvbiBhIGdpdmVuIGVudGl0eS4KCShGaW5kX0RpcmVjdF9OYW1lKTogRGV0ZWN0IHRoZSBCZWF1am9sYWlzIHByb2JsZW0gZGVzY3JpYmVkIGluCglBSS0yNjIuVFhUCgoJKiBzZW1fdXRpbHMuYWRzLCBzZW1fdXRpbC5hZGIgKElzX0FuY2VzdG9yX1BhY2thZ2UpOiBOZXcgZnVuY3Rpb24uIEl0Cglwcm92aWRlcyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZnVuY3Rpb24gSXNfQW5jZXN0b3IgdGhhdCB3YXMKCXByZXZpb3VzbHkgYXZhaWxhYmxlIGluIHNlbV9jaDEwLiBJdCBoYXMgYmVlbiByZW5hbWVkIHRvIGF2b2lkCglvdmVybG9hZGluZy4KCgkqIHNwcmludC5hZGIgKFNwcmludF9Ob2RlX0FjdHVhbCk6IFByaW50IGxpbWl0ZWRfd2l0aCBjbGF1c2VzCgoyMDA0LTA1LTE0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdXRpbHMuYyAoYnVpbGRfdm1zX2Rlc2NyaXB0b3IpOiBVc2UgU0ltb2RlIHBvaW50ZXJzLgoKMjAwNC0wNS0xNCAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdF91Z24udGV4aTogUmV2aXNlZCBjaGFwdGVyICJHTkFUIGFuZCBMaWJyYXJpZXMiLgoKMjAwNC0wNS0xNCAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwNC0wNS0xNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJUmVuYW1pbmcgb2YgdGFyZ2V0IHNwZWNpZmljIGZpbGVzIGZvciBjbGFyaXR5CgoJKiBNYWtlZmlsZS5pbjogUmVuYW1lIEdOQVQgdGFyZ2V0IHNwZWNpZmljIGZpbGVzLgoKCSogMzFzb2Njb24uYWRzLCAzMXNvbGlvcC5hZHMgMzVzb2Njb24uYWRzLCAzYXNvY2Nvbi5hZHMsCgkzYnNvY2Nvbi5hZHMsIDNnc29jY29uLmFkcywgM2hzb2Njb24uYWRzLCAzcHNvY2Nvbi5hZHMsCgkzc3NvY2Nvbi5hZHMsIDNzc29saW9wLmFkcywgM3ZlYWNvZHUuYWRiLCAzdmV4cGVjdC5hZGIsCgkzdnNvY2Nvbi5hZHMsIDN2c29jdGhpLmFkYiwgM3Zzb2N0aGkuYWRzLCAzdnRyYXN5bS5hZGIsCgkzd3NvY2Nvbi5hZHMsIDN3c29jdGhpLmFkYiwgM3dzb2N0aGkuYWRzLCAzd3NvbGlvcC5hZHMsCgkzenNvY2Nvbi5hZHMsIDN6c29jdGhpLmFkYiwgM3pzb2N0aGkuYWRzLCA0MWludG5hbS5hZHMsCgk0MmludG5hbS5hZHMsIDQ1aW50bmFtLmFkcywgNGFpbnRuYW0uYWRzLCA0Y2ludG5hbS5hZHMsCgk0Z2ludG5hbS5hZHMsIDRoZXhjcG9sLmFkYiwgNGhpbnRuYW0uYWRzLCA0bGludG5hbS5hZHMsCgk0bmludG5hbS5hZHMsIDRvaW50bmFtLmFkcywgNG9udW1hdXguYWRzLCA0cGludG5hbS5hZHMsCgk0c2ludG5hbS5hZHMsIDR2Y2FsZGVsLmFkYiwgNHZjYWxlbmQuYWRiLCA0dmNhbGVuZC5hZHMsCgk0dmludG5hbS5hZHMsIDR3Y2FsZW5kLmFkYiwgNHdleGNwb2wuYWRiLCA0d2ludG5hbS5hZHMsCgk0emludG5hbS5hZHMsIDR6bnVtYXV4LmFkcywgNHpzeXRhY28uYWRiLCA0enN5dGFjby5hZHMsCgk1MW9zaW50ZS5hZGIsIDUxb3NpbnRlLmFkcywgNTFzeXN0ZW0uYWRzLAoJNTJvc2ludGUuYWRiLCA1Mm9zaW50ZS5hZHMsIDUzb3NpbnRlLmFkcywgNTRvc2ludGUuYWRzLAoJNTVvc2ludGUuYWRiLCA1NW9zaW50ZS5hZHMsIDU1c3lzdGVtLmFkcywgNTZvc2ludGUuYWRiLAoJNTZvc2ludGUuYWRzLCA1NnN5c3RlbS5hZHMsIDU2dGFwcm9wLmFkYiwgNTZ0YXNwcmkuYWRzLAoJNTZ0cG9wc3AuYWRiLCA1N3N5c3RlbS5hZHMsIDU4c3lzdGVtLmFkcywKCTVhbWFzdG9wLmFkYiwgNWFtbC10Z3QuYWRiLCA1YW9zaW50ZS5hZGIsIDVhb3NpbnRlLmFkcywKCTVhc3lzdGVtLmFkcywgNWF0YXByb3AuYWRiLCA1YXRhc2luZi5hZHMsIDVhdGFzcHJpLmFkcywKCTVhdHBvcHNwLmFkYiwgNWF2eHdvcmsuYWRzLCA1Ym1sLXRndC5hZGIsIDVib3NpbnRlLmFkYiwKCTVib3NpbnRlLmFkcywgNWJzeXN0ZW0uYWRzLCA1Y29zaW50ZS5hZHMsIDVjc3lzdGVtLmFkcywKCTVkc3lzdGVtLmFkcywgNWVzeXN0ZW0uYWRzLCA1ZmludG1hbi5hZGIsIDVmb3NpbnRlLmFkYiwKCTVmb3NpbnRlLmFkcywgNWZzeXN0ZW0uYWRzLCA1ZnRhcHJvcC5hZGIsIDVmdGFzaW5mLmFkcywKCTVnaW50ZXJyLmFkYiwgNWdpbnRtYW4uYWRiLCA1Z21hc3RvcC5hZGIsIDVnbWwtdGd0LmFkYiwKCTVnb3NpbnRlLmFkcywgNWdwcm9pbmYuYWRiLCA1Z3Byb2luZi5hZHMsIDVnc3lzdGVtLmFkcywKCTVndGFwcm9wLmFkYiwgNWd0YXNpbmYuYWRiLCA1Z3Rhc2luZi5hZHMsIDVndHBnZXRjLmFkYiwKCTVobWwtdGd0LmFkYiwgNWhvc2ludGUuYWRiLCA1aG9zaW50ZS5hZHMsIDVocGFyYW1lLmFkcywKCTVoc3lzdGVtLmFkcywgNWh0YXByb3AuYWRiLCA1aHRhc3ByaS5hZHMsIDVodHJhY2ViLmFkYiwKCTVpb3NpbnRlLmFkYiwgNWlvc2ludGUuYWRzLCA1aXRhcHJvcC5hZGIsIDVpdGFzcHJpLmFkcywKCTVrc3lzdGVtLmFkcywgNWt2eHdvcmsuYWRzLCA1bG1sLXRndC5hZGIsIDVsb3NpbnRlLmFkcywKCTVscGFyYW1lLmFkYiwgNWxzeXN0ZW0uYWRzLCA1bXN5c3RlbS5hZHMsIDVtdnh3b3JrLmFkcywKCTVuaW5tYW9wLmFkYiwgNW5pbnRtYW4uYWRiLCA1bm9zaW50ZS5hZHMsIDVuc3lzdGVtLmFkcywKCTVudGFwcm9wLmFkYiwgNW50YXNwcmkuYWRzLCA1b2ludGVyci5hZGIsIDVvbWFzdG9wLmFkYiwKCTVvb3NpbnRlLmFkYiwgNW9vc2ludGUuYWRzLCA1b29zcHJpbS5hZGIsIDVvcGFyYW1lLmFkYiwKCTVvc3lzdGVtLmFkcywgNW90YXByb3AuYWRiLCA1b3Rhc3ByaS5hZHMsIDVwb3NpbnRlLmFkcywKCTVwb3NwcmltLmFkYiwgNXBzeXN0ZW0uYWRzLCA1cHZ4d29yay5hZHMsIDVzaW50bWFuLmFkYiwKCTVzbWwtdGd0LmFkYiwgNXNvc2ludGUuYWRiLCA1c29zaW50ZS5hZHMsIDVzb3NwcmltLmFkYiwKCTVzcGFyYW1lLmFkYiwgNXNzeXN0ZW0uYWRzLCA1c3RhcHJvcC5hZGIsIDVzdGFzaW5mLmFkYiwKCTVzdGFzaW5mLmFkcywgNXN0YXNwcmkuYWRzLCA1c3Rwb3BzcC5hZGIsIDVzdnh3b3JrLmFkcywKCTV0b3NpbnRlLmFkcywgNXVzeXN0ZW0uYWRzLCA1dmFzdGhhbi5hZGIsIDV2ZGlydmFsLmFkYiwKCTV2aW5tYW9wLmFkYiwgNXZpbnRlcnIuYWRiLCA1dmludG1hbi5hZGIsIDV2aW50bWFuLmFkcywKCTV2bWFzdG9wLmFkYiwgNXZtbC10Z3QuYWRiLCA1dm9zaW50ZS5hZGIsIDV2b3NpbnRlLmFkcywKCTV2b3NwcmltLmFkYiwgNXZvc3ByaW0uYWRzLCA1dnBhcmFtZS5hZHMsIDV2c3ltYm9sLmFkYiwKCTV2c3lzdGVtLmFkcywgNXZ0YXByb3AuYWRiLCA1dnRhc3ByaS5hZHMsIDV2dHBvcGRlLmFkYiwKCTV2dHBvcGRlLmFkcywgNXZ0cmFlbnQuYWRiLCA1dnRyYWVudC5hZHMsIDV2dmFmbG9wLmFkYiwKCTV3ZGlydmFsLmFkYiwgNXdnbG9sb2MuYWRiLCA1d2ludG1hbi5hZGIsIDV3bWVtb3J5LmFkYiwKCTV3bWwtdGd0LmFkYiwgNXdvc2ludGUuYWRzLCA1d29zcHJpbS5hZGIsIDV3c3lzdGVtLmFkcywKCTV3dGFwcm9wLmFkYiwgNXd0YXNwcmkuYWRzLCA1eHBhcmFtZS5hZHMsIDV4c3lzdGVtLmFkcywKCTV4dnh3b3JrLmFkcywgNXlwYXJhbWUuYWRzLCA1eXN5c3RlbS5hZHMsIDV6aW50ZXJyLmFkYiwKCTV6aW50bWFuLmFkYiwgNXppbnRtYW4uYWRzLCA1em1sLXRndC5hZGIsIDV6b3NpbnRlLmFkYiwKCTV6b3NpbnRlLmFkcywgNXpvc3ByaW0uYWRiLCA1enBhcmFtZS5hZHMsIDV6c3RjaG9wLmFkYiwKCTV6c3lzdGVtLmFkcywgNXp0YXByb3AuYWRiLCA1enRhc3ByaS5hZHMsIDV6dGZzZXRyLmFkYiwKCTV6dHBvcHNwLmFkYiwgNnZjcHAuYWRiLCA2dmNzdHJlYS5hZGIsIDZ2aW50ZXJmLmFkcywKCTdzaW5tYW9wLmFkYiwgN3NpbnRtYW4uYWRiLCA3c29zaW50ZS5hZGIsIDdzb3NwcmltLmFkYiwKCTdzdGFwcm9wLmFkYiwgN3N0YXNwcmkuYWRzLCA3c3Rmc2V0ci5hZGIsIDdzdHBvcHNwLmFkYiwKCTdzdHJhY2ViLmFkYiwgN3N0cmFjZXMuYWRiLCA3c3RyYWZvci5hZGIsIDdzdHJhZm9yLmFkcywKCTdzdHJhdGFzLmFkYiwgODZudW1hdXguYWRiLCA4Nm51bWF1eC5hZHM6IFJlcGxhY2VkIGJ5IGZpbGVzIGJlbG93LgoKCSogYS1jYWxkZWwtdm1zLmFkYiwgYS1jYWxlbmQtbWluZ3cuYWRiLCBhLWNhbGVuZC12bXMuYWRiLAoJYS1jYWxlbmQtdm1zLmFkcywgYS1kaXJ2YWwtbWluZ3cuYWRiLCBhLWRpcnZhbC12bXMuYWRiLAoJYS1leGNwb2wtYWJvcnQuYWRiLCBhLWV4Y3BvbC1pbnRlcml4LmFkYiwgYS1pbnRuYW0tYWl4LmFkcywKCWEtaW50bmFtLWR1bW15LmFkcywgYS1pbnRuYW0tZnJlZWJzZC5hZHMsIGEtaW50bmFtLWhwdXguYWRzLAoJYS1pbnRuYW0taW50ZXJpeC5hZHMsIGEtaW50bmFtLWlyaXguYWRzLCBhLWludG5hbS1saW51eC5hZHMsCglhLWludG5hbS1seW54b3MuYWRzLCBhLWludG5hbS1taW5ndy5hZHMsIGEtaW50bmFtLW9zMi5hZHMsCglhLWludG5hbS1zb2xhcmlzLmFkcywgYS1pbnRuYW0tdHJ1NjQuYWRzLCBhLWludG5hbS11bml4d2FyZS5hZHMsCglhLWludG5hbS12bXMuYWRzLCBhLWludG5hbS12eHdvcmtzLmFkcywgYS1udW1hdXgtbGliYy14ODYuYWRzLAoJYS1udW1hdXgtdnh3b3Jrcy5hZHMsIGEtbnVtYXV4LXg4Ni5hZGIsIGEtbnVtYXV4LXg4Ni5hZHMsCglhLXN5dGFjby12eHdvcmtzLmFkYiwgYS1zeXRhY28tdnh3b3Jrcy5hZHMsIGctZWFjb2R1LXZtcy5hZGIsCglnLWV4cGVjdC12bXMuYWRiLCBnLXNvY2Nvbi1haXguYWRzLCBnLXNvY2Nvbi1mcmVlYnNkLmFkcywKCWctc29jY29uLWhwdXguYWRzLCBnLXNvY2Nvbi1pbnRlcml4LmFkcywgZy1zb2Njb24taXJpeC5hZHMsCglnLXNvY2Nvbi1taW5ndy5hZHMsIGctc29jY29uLXNvbGFyaXMuYWRzLCBnLXNvY2Nvbi10cnU2NC5hZHMsCglnLXNvY2Nvbi11bml4d2FyZS5hZHMsIGctc29jY29uLXZtcy5hZGIsIGctc29jY29uLXZ4d29ya3MuYWRzLAoJZy1zb2N0aGktbWluZ3cuYWRiLCBnLXNvY3RoaS1taW5ndy5hZHMsIGctc29jdGhpLXZtcy5hZGIsCglnLXNvY3RoaS12bXMuYWRzLCBnLXNvY3RoaS12eHdvcmtzLmFkYiwgZy1zb2N0aGktdnh3b3Jrcy5hZHMsCglnLXNvbGlvcC1taW5ndy5hZHMsIGctc29saW9wLXNvbGFyaXMuYWRzLCBnLXNvbGlvcC11bml4d2FyZS5hZHMsCglnLXRyYXN5bS12bXMuYWRiLCBpLWNwcC12bXMuYWRiLCBpLWNzdHJlYS12bXMuYWRiLAoJaW50ZXJmYWMtdm1zLmFkcywgbWxpYi10Z3QtYWl4LmFkYiwgbWxpYi10Z3QtaHB1eC5hZGIsCgltbGliLXRndC1pcml4LmFkYiwgbWxpYi10Z3QtbGludXguYWRiLCBtbGliLXRndC1taW5ndy5hZGIsCgltbGliLXRndC1zb2xhcmlzLmFkYiwgbWxpYi10Z3QtdHJ1NjQuYWRiLCBtbGliLXRndC12bXMuYWRiLAoJbWxpYi10Z3Qtdnh3b3Jrcy5hZGIsIHMtYXN0aGFuLXZtcy5hZGIsIHMtZ2xvbG9jLW1pbmd3LmFkYiwKCXMtaW5tYW9wLWR1bW15LmFkYiwgcy1pbm1hb3AtcG9zaXguYWRiLCBzLWlubWFvcC12bXMuYWRiLAoJcy1pbnRlcnItZHVtbXkuYWRiLCBzLWludGVyci1zaWdhY3Rpb24uYWRiLCBzLWludGVyci12bXMuYWRiLAoJcy1pbnRlcnItdnh3b3Jrcy5hZGIsIHMtaW50bWFuLWR1bW15LmFkYiwgcy1pbnRtYW4taXJpeC5hZGIsCglzLWludG1hbi1pcml4LWF0aHJlYWQuYWRiLCBzLWludG1hbi1taW5ndy5hZGIsIHMtaW50bWFuLXBvc2l4LmFkYiwKCXMtaW50bWFuLXNvbGFyaXMuYWRiLCBzLWludG1hbi12bXMuYWRiLCBzLWludG1hbi12bXMuYWRzLAoJcy1pbnRtYW4tdnh3b3Jrcy5hZGIsIHMtaW50bWFuLXZ4d29ya3MuYWRzLCBzLW1hc3RvcC1pcml4LmFkYiwKCXMtbWFzdG9wLXRydTY0LmFkYiwgcy1tYXN0b3Atdm1zLmFkYiwgcy1tYXN0b3AteDg2LmFkYiwKCXMtbWVtb3J5LW1pbmd3LmFkYiwgcy1vc2ludGUtYWl4LmFkYiwgcy1vc2ludGUtYWl4LmFkcywKCXMtb3NpbnRlLWFpeC1mc3UuYWRzLCBzLW9zaW50ZS1kdW1teS5hZHMsIHMtb3NpbnRlLWZyZWVic2QuYWRiLAoJcy1vc2ludGUtZnJlZWJzZC5hZHMsIHMtb3NpbnRlLWZzdS5hZGIsIHMtb3NpbnRlLWhwdXguYWRzLAoJcy1vc2ludGUtaHB1eC1kY2UuYWRiLCBzLW9zaW50ZS1ocHV4LWRjZS5hZHMsIHMtb3NpbnRlLWludGVyaXguYWRzLAoJcy1vc2ludGUtaXJpeC5hZGIsIHMtb3NpbnRlLWlyaXguYWRzLCBzLW9zaW50ZS1pcml4LWF0aHJlYWQuYWRzLAoJcy1vc2ludGUtbGludXguYWRzLCBzLW9zaW50ZS1saW51eC1mc3UuYWRzLCBzLW9zaW50ZS1saW51eC1pYTY0LmFkcywKCXMtb3NpbnRlLWx5bnhvcy0zLmFkYiwgcy1vc2ludGUtbHlueG9zLTMuYWRzLCBzLW9zaW50ZS1seW54b3MuYWRiLAoJcy1vc2ludGUtbHlueG9zLmFkcywgcy1vc2ludGUtbWluZ3cuYWRzLCBzLW9zaW50ZS1vczIuYWRiLAoJcy1vc2ludGUtb3MyLmFkcywgcy1vc2ludGUtcG9zaXguYWRiLCBzLW9zaW50ZS1zb2xhcmlzLmFkYiwKCXMtb3NpbnRlLXNvbGFyaXMuYWRzLCBzLW9zaW50ZS1zb2xhcmlzLWZzdS5hZHMsCglzLW9zaW50ZS1zb2xhcmlzLXBvc2l4LmFkcywgcy1vc2ludGUtdHJ1NjQuYWRiLCBzLW9zaW50ZS10cnU2NC5hZHMsCglzLW9zaW50ZS11bml4d2FyZS5hZGIsIHMtb3NpbnRlLXVuaXh3YXJlLmFkcywgcy1vc2ludGUtdm1zLmFkYiwKCXMtb3NpbnRlLXZtcy5hZHMsIHMtb3NpbnRlLXZ4d29ya3MuYWRiLAoJcy1vc2ludGUtdnh3b3Jrcy5hZHMsIHMtb3NwcmltLW1pbmd3LmFkYiwKCXMtb3NwcmltLW9zMi5hZGIsIHMtb3NwcmltLXBvc2l4LmFkYiwgcy1vc3ByaW0tc29sYXJpcy5hZGIsCglzLW9zcHJpbS11bml4LmFkYiwgcy1vc3ByaW0tdm1zLmFkYiwgcy1vc3ByaW0tdm1zLmFkcywKCXMtb3NwcmltLXZ4d29ya3MuYWRiLCBzLXBhcmFtZS1hZTY1My5hZHMsIHMtcGFyYW1lLWhwdXguYWRzLAoJcy1wYXJhbWUtbGludXguYWRiLCBzLXBhcmFtZS1vczIuYWRiLCBzLXBhcmFtZS1zb2xhcmlzLmFkYiwKCXMtcGFyYW1lLXZtcy5hZHMsIHMtcGFyYW1lLXZtcy1yZXN0cmljdC5hZHMsIHMtcGFyYW1lLXZ4d29ya3MuYWRzLAoJcy1wcm9pbmYtaXJpeC1hdGhyZWFkLmFkYiwgcy1wcm9pbmYtaXJpeC1hdGhyZWFkLmFkcywKCXMtc3RjaG9wLXZ4d29ya3MuYWRiLCBzLXRhcHJvcC1kdW1teS5hZGIsCglzLXRhcHJvcC1ocHV4LWRjZS5hZGIsIHMtdGFwcm9wLWlyaXguYWRiLAoJcy10YXByb3AtaXJpeC1hdGhyZWFkLmFkYiwgcy10YXByb3AtbGludXguYWRiLCBzLXRhcHJvcC1seW54b3MuYWRiLAoJcy10YXByb3AtbWluZ3cuYWRiLCBzLXRhcHJvcC1vczIuYWRiLCBzLXRhcHJvcC1wb3NpeC5hZGIsCglzLXRhcHJvcC1zb2xhcmlzLmFkYiwgcy10YXByb3AtdHJ1NjQuYWRiLCBzLXRhcHJvcC12bXMuYWRiLAoJcy10YXByb3Atdnh3b3Jrcy5hZGIsIHMtdGFzaW5mLWlyaXguYWRzLCBzLXRhc2luZi1pcml4LWF0aHJlYWQuYWRiLAoJcy10YXNpbmYtaXJpeC1hdGhyZWFkLmFkcywgcy10YXNpbmYtc29sYXJpcy5hZGIsIHMtdGFzaW5mLXNvbGFyaXMuYWRzLAoJcy10YXNpbmYtdHJ1NjQuYWRzLCBzLXRhc3ByaS1kdW1teS5hZHMsIHMtdGFzcHJpLWhwdXgtZGNlLmFkcywKCXMtdGFzcHJpLWxpbnV4LmFkcywgcy10YXNwcmktbHlueG9zLmFkcywgcy10YXNwcmktbWluZ3cuYWRzLAoJcy10YXNwcmktb3MyLmFkcywgcy10YXNwcmktcG9zaXguYWRzLCBzLXRhc3ByaS1zb2xhcmlzLmFkcywKCXMtdGFzcHJpLXRydTY0LmFkcywgcy10YXNwcmktdm1zLmFkcywgcy10YXNwcmktdnh3b3Jrcy5hZHMsCglzLXRmc2V0ci1kZWZhdWx0LmFkYiwgcy10ZnNldHItdnh3b3Jrcy5hZGIsIHMtdHBvcGRlLXZtcy5hZGIsCglzLXRwb3BkZS12bXMuYWRzLCBzLXRwb3BzcC1seW54b3MuYWRiLCBzLXRwb3BzcC1wb3NpeC5hZGIsCglzLXRwb3BzcC1wb3NpeC1mb3JlaWduLmFkYiwgcy10cG9wc3Atc29sYXJpcy5hZGIsIHMtdHBvcHNwLXZ4d29ya3MuYWRiLAoJcy10cmFjZWItaHB1eC5hZGIsIHMtdHJhY2ViLW1hc3RvcC5hZGIsIHMtdHJhY2VzLWRlZmF1bHQuYWRiLAoJcy10cmFlbnQtdm1zLmFkYiwgcy10cmFlbnQtdm1zLmFkcywgcy10cmFmb3ItZGVmYXVsdC5hZGIsCglzLXRyYWZvci1kZWZhdWx0LmFkcywgcy10cmF0YXMtZGVmYXVsdC5hZGIsIHMtdmFmbG9wLXZtcy5hZGIsCglzLXZ4d29yay1hbHBoYS5hZHMsIHMtdnh3b3JrLW02OGsuYWRzLCBzLXZ4d29yay1taXBzLmFkcywKCXMtdnh3b3JrLXBwYy5hZHMsIHMtdnh3b3JrLXNwYXJjdjkuYWRzLCBzLXZ4d29yay14c2NhbGUuYWRzLAoJc3ltYm9scy12bXMuYWRiLCBzeXN0ZW0tYWl4LmFkcywgc3lzdGVtLWZyZWVic2QteDg2LmFkcywKCXN5c3RlbS1ocHV4LmFkcywgc3lzdGVtLWludGVyaXguYWRzLCBzeXN0ZW0taXJpeC1uMzIuYWRzLAoJc3lzdGVtLWlyaXgtbzMyLmFkcywgc3lzdGVtLWxpbnV4LXg4Nl82NC5hZHMsCglzeXN0ZW0tbGludXgteDg2LmFkcywgc3lzdGVtLWx5bnhvcy1wcGMuYWRzLCBzeXN0ZW0tbHlueG9zLXg4Ni5hZHMsCglzeXN0ZW0tbWluZ3cuYWRzLCBzeXN0ZW0tb3MyLmFkcywgc3lzdGVtLXNvbGFyaXMtc3BhcmMuYWRzLAoJc3lzdGVtLXNvbGFyaXMtc3BhcmN2OS5hZHMsIHN5c3RlbS1zb2xhcmlzLXg4Ni5hZHMsIHN5c3RlbS10cnU2NC5hZHMsCglzeXN0ZW0tdW5peHdhcmUuYWRzLCBzeXN0ZW0tdm1zLmFkcywgc3lzdGVtLXZtcy16Y3guYWRzLAoJc3lzdGVtLXZ4d29ya3MtYWxwaGEuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1tNjhrLmFkcywKCXN5c3RlbS12eHdvcmtzLW1pcHMuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1wcGMuYWRzLAoJc3lzdGVtLXZ4d29ya3Mtc3BhcmN2OS5hZHMsIHN5c3RlbS12eHdvcmtzLXhzY2FsZS5hZHM6IFJlcGxhY2UgZmlsZXMKCWFib3ZlLgoKMjAwNC0wNS0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyYW5zLmMgKGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZV8xKTogUmVtb3ZlIGNhc2UgJ2InLgoKMjAwNC0wNS0xMyAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJTWVyZ2UgZnJvbSB0cmVlLXNzYS0yMDAyMDYxOS1icmFuY2guCgoJKiBjb25maWctbGFuZy5pbiAoYm9vdF9sYW5ndWFnZSwgYnVpbGRfYnlfZGVmYXVsdCk6IFNldAoJdG8gbm8uCgkqIHV0aWxzLmMgKHVuY2hlY2tlZF9jb252ZXJ0KTogVXNlIE9FUF9PTkxZX0NPTlNULgoJKG1heF9zaXplKTogQWRkIHN0YXRpYyBjaGFpbiBvcCBmb3IgY2FsbF9leHByLgoKMjAwNC0wNS0xMiAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCVBSIHRhcmdldC8xNTMzMQoJKiA1Z21hc3RvcC5hZGIgKFJvZmYpOiBDaG9vc2UgYmV0d2VlbiAnNCcgYW5kICcwJywgbm90ICc0JyBhbmQgJyAnLgoKMjAwNC0wNS0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiB1dGlscy5jIChtYXhfc2l6ZSk6IFVzZSBNSU5fRVhQUiB0byBmaW5kIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGEKCUNPTkRfRVhQUi4KCjIwMDQtMDUtMTAgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiA1cXN5c3RlbS5hZHM6IFJlbW92ZSBTaG9ydF9BZGRyZXNzIHN1YnR5cGUgZGVjbGFyYXRpb24uIE1vdmVkIHRvCglzeXN0ZW0uYXV4X2RlYy4KCgkqIHMtYXV4ZGVjLmFkczogQWRkIFNob3J0X0FkZHJlc3Mgc3VidHlwZSAobW92ZWQgaGVyZSBmcm9tIFN5c3RlbSkuCgoJKiBNYWtlZmlsZS5pbjogW1ZNU106IEFkZCB0cmFuc2xhdGlvbiBmb3IgNXFhdXhkZWMuYWRzLgoKCSogaW5pdC5jOiBbVk1TXSBNYWNyb2l6ZSBMSUIkIGNhbGxzIGZvciBJQTY0IGFuZCBBbHBoYS4KCUZpeGVzIHVuZGVmaW5lZCBzeW1ib2xzIGluIElBNjQgZ25hdGxpYi4KCgkqIDV2aW5tYW9wLmFkYjogUmVmZXJlbmNlIHMtYXV4ZGVjIGZvciBTaG9ydF9BZGRyZXNzLgoKCSogNXhzeXN0ZW0uYWRzLCA1dnN5c3RlbS5hZHM6IEJhY2sgb3V0IGxhc3QgY2hhbmdlIChhZGRpdGlvbiBvZiBzdWJ0eXBlCglTaG9ydF9BZGRyZXNzKS4gVGhpcyB3aWxsIGJlIG1vdmVkIHRvIHN5c3RlbS5hdXhkZWMuCgoyMDA0LTA1LTEwICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fdXRpbC5hZGI6IFJlcGxhY2UgdGVzdCBmb3IgcHJlc2VuY2Ugb2YgYSBub2RlIHRoYXQgaXMgYWx3YXlzCglwcmVzZW50IHdpdGggYSBjYWxsIHRvIERpc2NhcmRfTm9kZS4KCgkqIHNlbV9jaDEwLmFkYiAoQW5hbHl6ZV9Db21waWxhdGlvbl9Vbml0KTogUmVtb3ZlIHN1cGVyZmx1b3VzIGNhbGwgdG8KCUFuYWx5emUgb24gdGhlIGxpYnJhcnkgdW5pdCBub2RlIGFmdGVyIGdlbmVyYXRpb24gb2YgZGlzdHJpYnV0aW9uIHN0dWIKCWNvbnN0cnVjdHMuICBUaGUgY2FsbCB3YXMgYSBuby1vcCBiZWNhdXNlIFVuaXRfTm9kZSBoYXMgYWxyZWFkeSBiZWVuCglBbmFseXplZCwgYW5kIHRoZSB0cmVlIGZyYWdtZW50cyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBzdHVicyBhcmUKCWFuYWx5emVkIGFzIHRoZXkgYXJlIGluc2VydGVkIGluIEV4cF9EaXN0LgoJVXBkYXRlIGNvbW1lbnQgcmVnYXJkaW5nIHRvIGRpc3RyaWJ1dGlvbiBzdHVicyB0byByZWZsZWN0IHRoYXQgd2UKCWRvIG5vdCBnZW5lcmF0ZSBzdHViIGluIHNlcGFyYXRlIGZpbGVzIGFueW1vcmUuCgoJKiBlaW5mby5hZHM6IENsYXJpZnkgdGhlIGZhY3QgdGhhdCBhIHRhZ2dlZCBwcml2YXRlIHR5cGUgaGFzIHRoZQoJRV9SZWNvcmRfVHlwZV9XaXRoX1ByaXZhdGUgRWtpbmQuCgoJKiBlcnJvdXRjLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBlcnJvdXRjLmFkcyAoTWF4X01zZ19MZW5ndGgpOiBJbmNyZWFzZSB0byBjb3ZlciBwb3NzaWJsZSBsYXJnZXIKCXZhbHVlcyBpZiBsaW5lIGxlbmd0aCBpcyBpbmNyZWFzZWQgdXNpbmcgLWduYXR5TSAobm90aWNlZCBkdXJpbmcgY29kZQoJcmVhZGluZykuCgoJKiBldmFsX2ZhdC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJUHV0IHNwYWNlcyBhcm91bmQgZXhwb25lbnRpYXRpb24gb3BlcmF0b3IKCjIwMDQtMDUtMTAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTUwMDUKCSogc2VtX3V0aWwuYWRiIChJc19EZXBlbmRlbnRfQ29tcG9uZW50X09mX011dGFibGVfT2JqZWN0KTogSWYgcHJlZml4CgloYXMgYmVlbiByZXdyaXR0ZW4gYXMgYW4gZXhwbGljaXQgZGVyZWZlcmVuY2UsIHJldHJpZXZlIHR5cGUgb2YKCW9yaWdpbmFsIG5vZGUgdG8gY2hlY2sgZm9yIHBvc3NpYmx5IHVuY29uc3RyYWluZWQgcmVjb3JkIHR5cGUuCgoyMDA0LTA1LTEwICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g3LmFkYiAoQ2hlY2tfVmlzaWJseV9Db250cm9sbGVkKTogSWYgZ2l2ZW4gb3BlcmF0aW9uIGlzIG5vdAoJb3ZlcnJpZGluZywgdXNlIHRoZSBvcGVyYXRpb24gb2YgdGhlIHBhcmVudCB1bmNvbmRpdGlvbmFsbHkuCgoJKiBzZW1fY2g0LmFkYiAoUmVtb3ZlX0FkZHJlc3NfSW50ZXJwcmV0YXRpb25zKTogUmVtb3ZlIGFkZHJlc3MKCW9wZXJhdGlvbiB3aGVuIGVpdGhlciBvcGVyYW5kIGlzIGEgbGl0ZXJhbCwgdG8gYXZvaWQgZnVydGhlcgoJYW1iaWd1aXRpZXMuCgoJKiBzZW1fY2g2LmFkYiAoTmV3X092ZXJsb2FkZWRfRW50aXR5KTogSWYgbmV3IGVudGl0eSBpcyBpbmhlcml0ZWQgYW5kCglvdmVycmlkZGVuIGJ5IGEgcHJldmlvdXMgZXhwbGljaXQgZGVjbGFyYXRpb24sIG1hcmsgdGhlIHByZXZpb3VzIGVudGl0eQoJYXMgb3ZlcnJpZGluZy4KCgkqIHNlbV9kaXNwLmFkYiAoQ2hlY2tfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogTmV3IHByZWRpY2F0ZQoJSXNfVmlzaWJseV9Db250cm9sbGVkLCB0byBkZXRlcm1pbmUgd2hldGhlciBhIGRlY2xhcmF0aW9uIG9mIGEKCXByaW1pdGl2ZSBjb250cm9sIG9wZXJhdGlvbiBmb3IgYSBkZXJpdmVkIHR5cGUgb3ZlcnJpZGVzIGFuIGluaGVyaXRlZAoJb25lLiBBZGQgd2FybmluZyBpZiB0aGUgZXhwbGljaXQgZGVjbGFyYXRpb24gZG9lcyBub3Qgb3ZlcnJpZGUuCgoyMDA0LTA1LTEwICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRscy5hZGIgKEduYXRscyk6IEluaXRpYWxpemUgU25hbWVzLCB0byBhdm9pZCBhc3NlcnRpb24gZXJyb3IgaW4KCXNvbWUgY2FzZXMgd2hlbiB0aGUgc291cmNlcyBhcmUgbm8gbG9uZ2VyIHByZXNlbnQuCgoJKiBtYWtlLmFkYiAoQ29sbGVjdF9Bcmd1bWVudHMpOiBGYWlsIGlmIGFuIGV4dGVybmFsIHNvdXJjZSwgbm90IHBhcnQKCW9mIGFueSBwcm9qZWN0IG5lZWQgdG8gYmUgY29tcGlsZWQsIHdoZW4gc3dpdGNoIC14IGhhcyBub3QgYmVlbgoJc3BlY2lmaWVkLgoKCSogbWFrZXVzZy5hZGI6IERvY3VtZW50IG5ldyBzd2l0Y2ggLXgKCgkqIG9wdC5hZHMgKEV4dGVybmFsX1VuaXRfQ29tcGlsYXRpb25fQWxsb3dlZCk6IE5ldyBCb29sZWFuIGZsYWcsCglkZWZhdWx0ZWQgdG8gRmFsc2UuCgoJKiBzd2l0Y2gtbS5hZGIgKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IE5ldyBzd2l0Y2ggLXgKCgkqIHZtc19kYXRhLmFkczogQWRkIFZNUyBxdWFsaWZpZXIgL05PTl9QUk9KRUNUX1VOSVRfQ09NUElMQVRJT04gZm9yCglnbmF0bWFrZSBzd2l0Y2ggLXguCgoJKiBnbmF0X3Vnbi50ZXhpOiBEb2N1bWVudCBuZXcgZ25hdG1ha2Ugc3dpdGNoIC14CgoyMDA0LTA1LTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiBtaXNjLmMgKGduYXRfaW5pdF9vcHRpb25zKTogU2V0IGZsYWdfemVyb19pbml0aWFsaXplZF9pbl9ic3MgdG8gMC4KCgkqIHV0aWxzLmMgKGNyZWF0ZV92YXJfZGVjbCk6IERvIG5vdCBtb2RpZnkgdGhlIERFQ0xfQ09NTU9OIGZsYWcuCgkocHJvY2Vzc19hdHRyaWJ1dGVzKTogTGlrZXdpc2UuCgoyMDA0LTA1LTEwICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIHMtaW5tYW9wLmFkczogRml4IHNwZWxsaW5nIG1pc3Rha2UgaW4gb25lIG9mIHRoZSBjb21tZW50cy4KCjIwMDQtMDUtMTAgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZ25hdF91Z24udGV4aTogRG9jdW1lbnQgdGhhdCBmb3IgY29uZmlnIHByYWdtYSBmaWxlcywgdGhlIG1heGltdW0KCWxpbmUgbGVuZ3RoIGlzIGFsd2F5cyAzMjc2Ny4KCgkqIGduYXRfcm0udGV4aTogRm9yIHByYWdtYSBFbGltaW5hdGUsIG5vdGUgdGhhdCBjb25jYXRlbmF0aW9uIG9mIHN0cmluZwoJbGl0ZXJhbHMgaXMgbm93IGFsbG93ZWQuCgoJKiBnbmF0LXN0eWxlLnRleGk6IFJlbW92ZSBzdGF0ZW1lbnQgYWJvdXQgc3BsaXR0aW5nIGxvbmcgbGluZXMgYmVmb3JlCglhbiBvcGVyYXRvciByYXRoZXIgdGhhbiBhZnRlciwgc2luY2Ugd2UgZG8gbm90IGZvbGxvdyB0aGlzIHJ1bGUgYXQgYWxsLgoJQ2xhcmlmeSBydWxlIChyZWFsbHkgbGFjayBvZiBydWxlKSBmb3Igc3BhY2VzIGFyb3VuZCBleHBvbmVudGlhdGlvbgoKCSogc2VtX2VsaW0uYWRiOiBBbGxvdyBjb25jYXRlbmF0aW9uIG9mIHN0cmluZyBsaXRlcmFscyBhcyB3ZWxsIGFzIGEKCXNpbmdsZSBzdHJpbmcgbGl0ZXJhbCBmb3IgcHJhZ21hIGFyZ3VtZW50cy4KCgkqIHNlbV9wcmFnLmFkcywgc2VtX3ByYWcuYWRiOiAoSXNfQ29uZmlnX1N0YXRpY19TdHJpbmcpOiBOZXcgZnVuY3Rpb24KCgkqIGEtdGV4dGlvLmFkYiAoVGVybWluYXRlX0xpbmUpOiBEbyBub3QgYWRkIGxpbmUgZmVlZCBpZiBub3RoaW5nCgl3cml0dGVuIGZvciBhcHBlbmQgY2FzZS4KCgkqIGZyb250ZW5kLmFkYjogQ2hhbmdlcyB0byBhdm9pZCBjaGVja2luZyBtYXggbGluZSBsZW5ndGggaW4gY29uZmlnCglwcmFnbWEgZmlsZXMuCgoJKiBnLW9zX2xpYi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogbWxpYi11dGwuYWRiOiBEbyBub3QgZGVmaW5lIE1heF9MaW5lX0xlbmd0aCBsb2NhbGx5IChkZWZpbml0aW9uIHdhcwoJd3JvbmcgaW4gYW55IGNhc2UuIEluc3RlYWQgdXNlIHN0YW5kYXJkIHZhbHVlLiBOb3RpY2VkIGR1cmluZyBjb2RlCglyZWFkaW5nLgoKCSogb3B0LmFkcyAoTWF4X0xpbmVfTGVuZ3RoKTogTmV3IGZpZWxkLCB1c2VkIHRvIGltcGxlbWVudCByZW1vdmFsIG9mCglsaW1pdGF0aW9uIG9uIGxlbmd0aCBvZiBsaW5lcyB3aGVuIHNjYW5uaW5nIGNvbmZpZyBwcmFnbWEgZmlsZXMuCgoJKiBvc2ludC5hZHMsIHByai1kZWN0LmFkYiwgcHJqLXN0cnQuYWRiLCBwcmotdHJlZS5hZGIsCgltYWtldXRsLmFkcywgbWFrZXV0bC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2NuLmFkYjogRG8gbm90IGNoZWNrIGxpbmUgbGVuZ3RoIHdoaWxlIHNjYW5uaW5nIGNvbmZpZyBwcmFnbWEgZmlsZXMKCURvIG5vdCBjaGVjayBsaW5lIGxlbmd0aCB3aGlsZSBzY2FubmluZyBvdXQgbGljZW5zZSBpbmZvcm1hdGlvbgoKCSogc2NuZy5hZGI6IENoYW5nZXMgdG8gYXZvaWQgbGluZSBsZW5ndGggY2hlY2tzIHdoaWxlIHBhcnNpbmcgY29uZmlnCglwcmFnbWEgZmlsZXMuCgoyMDA0LTA1LTEwICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDA0LTA1LTA1ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIG9zaW50LmFkYiAoRmluZF9Qcm9ncmFtX05hbWUpOiBGaXggaGFuZGxpbmcgb2YgVk1TIHZlcnNpb24KCW51bWJlci4KCjIwMDQtMDUtMDUgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWN0LWV1cm9wZS5mcj4KCgkqIGctb3NfbGliLmFkcyAoSW52YWxpZF9UaW1lKTogTmV3IGNvbnN0YW50CgoJKiBhZGFpbnQuaCwgYWRhaW50LmMgKF9fZ25hdF9maWxlX3RpbWVfbmFtZSwgX19nbmF0X2ZpbGVfdGltZV9mZCk6IE5vdwoJcmV0dXJuIE9TX1RpbWUgaW5zdGVhZCBvZiB0aW1lX3QgdG8gbWF0Y2ggd2hhdCBpcyBpbXBvcnRlZCBieSBBZGEuCglOb3cgcmV0dXJuIC0xIGlmIHRoZSBmaWxlIGRvZXNuJ3QgZXhpc3QsIGluc3RlYWQgb2YgYSByYW5kb20gdmFsdWUKCjIwMDQtMDUtMDUgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogdXNhZ2UuYWRiOiBBZGQgbGluZSBmb3IgLWduYXRSP3Mgc3dpdGNoCgoJKiBzZW1fY2gxMy5hZGIsIGV4cF9jaDIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGctcmVncGF0LmFkcywgZy1yZWdwYXQuYWRiOiBBZGQgZG9jdW1lbnRhdGlvbiBvbiBoYW5kbGluZyBvZiBTaXplCglhbmQgZm9yIE1hdGNoIChEYXRhX0ZpcnN0LCBEYXRhX2xhc3QpCgoJKiBsaWItd3JpdC5hZGIgKFdyaXRlX1dpdGhfTGluZXMpOiBFbnN1cmUgdGhhdCBjb3JyZWN0IGluZGV4IG51bWJlciBpcwoJd3JpdHRlbiB3aGVuIHdlIGFyZSBkZWFsaW5nIHdpdGggbXVsdGktdW5pdCBmaWxlcy4KCjIwMDQtMDUtMDUgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSB1bnVzZWQgdGFyZ2V0cyBhbmQgdmFyaWFibGVzLgoKMjAwNC0wNS0wNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBzd2l0Y2gtbS5hZGI6IE5ldyBnbmF0bWFrZSBzd2l0Y2ggLWVJCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBWTVMgZXF1aXZhbGVudHMgb2YgbmV3IGduYXRjbGVhbiBzd2l0aCAtaW5ubiBhbmQKCW9mIG5ldyBnbmF0bWFrZSBzd2l0Y2ggLWVJbm5uLgoKCSogbWFrZWdwci5hZGI6IFRha2UgaW50byBhY2NvdW50IG5ldyBwYXJhbWV0ZXJzIEluZGV4IGFuZCBTcmNfSW5kZXggaW4KCVByai5VdGlsLgoKCSogY2xlYW4uYWRiOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgbXVsdGktdW5pdCBzb3VyY2VzLCBpbmNsdWRpbmcgbmV3Cglzd2l0Y2ggLWkuCgoJKiBnbmF0Y21kLmFkYiAoR05BVENtZCk6IENhbGwgUHJqLlV0aWwuVmFsdWVfT2Ygd2l0aCBuZXcgcGFyYW1ldGVyCglTcmNfSW5kZXguCgoJKiBtYWtlLmFkcywgbWFrZS5hZGIgKEluc2VydF9RKTogTmV3IHBhcmFtZXRlciBJbmRleCwgZGVmYXVsdGVkIHRvIDAKCShFeHRyYWN0X0Zyb21fUSk6IE5ldyBvdXQgcGFyYW1ldGVyIEluZGV4CgkoTWFyaywgSXNfTWFya2VkKTogU3VicHJvZ3JhbXMgbW92ZWQgdG8gTWFrZXV0bAoJKFN3aXRjaGVzX09mKTogTmV3IHBhcmFtZXRlciBTb3VyY2VfSW5kZXgKCShBZGRfU3dpdGNoKTogTmV3IHBhcmFtZXRlciBJbmRleAoJKENoZWNrKTogTmV3IHBhcmFtZXRlciBTb3VyY2VfSW5kZXgKCShDb2xsZWN0X0FyZ3VtZW50cyk6IE5ldyBwYXJhbWV0ZXIgU291cmNlX0luZGV4CgkoQ29sbGVjdF9Bcmd1bWVudHNfQW5kX0NvbXBpbGUpOiBOZXcgcGFyYW1ldGVyIFNvdXJjZV9JbmRleAoJKENvbXBpbGUpOiBOZXcgcGFyYW1ldGVyIFNvdXJjZV9JbmRleAoJUHV0IHN1YnByb2dyYW1zIGluIGFscGhhYmV0aWNhbCBvcmRlcgoJQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNvdXJjZSBzb3VyY2VzLCBpbmNsdWRpbmcgaW4gcHJvamVjdCBmaWxlcy4KCgkqIG1ha2V1dGwuYWRzLCBtYWtldXRsLmFkYiAoVW5pdF9JbmRleF9PZik6IE5ldyBmdW5jdGlvbgoJKE1hcmssIElzX01hcmtlZCwgRGVsZXRlX0FsbF9NYXJrcyk6IE5ldyBzdWJwcm9ncmFtcywgbW92ZWQgZnJvbQoJTWFrZS4KCgkqIG1ha2V1c2cuYWRiOiBOZXcgZ25hdG1ha2Ugc3dpdGNoIC1lSW5ubgoKCSogbWxpYi1wcmouYWRiIChCdWlsZF9MaWJyYXJ5KTogQWRkIG5ldyBwYXJhbWV0ZXIgU3JjX0luZGV4IHRvIGNhbGwgdG8KCVByai5VdGlsLlZhbHVlX09mLgoKCSogb3B0LmFkcyAoTWFpbl9JbmRleCk6IE5ldyB2YXJpYWJsZSwgZGVmYXVsdGVkIHRvIDAuCgoJKiBvc2ludC5hZHMsIG9zaW50ZS5hZGIgKEFkZF9GaWxlKTogTmV3IHBhcmFtZXRlciBJbmRleAoJKEN1cnJlbnRfU291cmNlX0luZGV4KTogTmV3IGZ1bmN0aW9uCgoJKiBwcmouYWRiOiBUYWtlIGludG8gYWNjb3VudCBuZXcgY29tcG9uZW50cyBJbmRleCBhbmQgU3JjX0luZGV4CgoJKiBwcmouYWRzIChTdHJpbmdfRWxlbWVudCk6IE5ldyBjb21wb25lbnQgSW5kZXgKCShWYXJpYWJsZV9WYWx1ZSk6IE5ldyBjb21wb25lbnQgSW5kZXgKCShBcnJheV9FbGVtZW50KTogTmV3IGNvbXBvbmVudCBTcmNfSW5kZXgKCgkqIHByai1hdHRyLmFkYjogSW5kaWNhdGUgdGhhdCBvcHRpb25hbCBpbmRleCBtYXkgYmUgc3BlY2lmaWVkIGZvcgoJYXR0cmlidXRlcyBNYWluLCBFeGVjdXRhYmxlLCBTcGVjLCBCb2R5IGFuZCBzb21lIG9mIFN3aXRjaGVzLgoKCSogcHJqLWF0dHIuYWRzIChBdHRyaWJ1dGVfS2luZCk6IE5ldyB2YWx1ZXMgZm9yIG9wdGlvbmFsIGluZGV4ZXMKCShBdHRyaWJ1dGVfUmVjb3JkKTogTmV3IGNvbXBvbmVudCBPcHRpb25hbF9JbmRleAoKCSogcHJqLWNvbS5hZHMgKEZpbGVfTmFtZV9EYXRhKTogTmV3IGNvbXBvbmVudCBJbmRleAoKCSogcHJqLWRlY3QuYWRiIChQYXJzZV9BdHRyaWJ1dGVfRGVjbGFyYXRpb24pOiBQcm9jZXNzIG9wdGlvbmFsIGluZGV4CgoJKiBwcmotZW52LmFkYiAoUHV0KTogT3V0cHV0IG9wdGlvbmFsIGluZGV4CgoJKiBwcmotbWFrci5hZGI6IFB1dCBpbmRleGVzIGZvciBtdWx0aS11bml0IHNvdXJjZXMgaW4gU0ZOIHByYWdtYXMgYW5kCglhdHRyaWJ1dGVzIFNwZWMgYW5kIEJvZHkuCgoJKiBwcmotbm1zYy5hZGI6IFByb2Nlc3Mgb3B0aW9uYWwgaW5kZXhlcwoKCSogcHJqLXBwLmFkYjogT3VwdXQgImF0IiBmb3Igb3B0aW9uYWwgaW5kZXhlcwoKCSogcHJqLXByb2MuYWRiOiBUYWtlIGludG8gYWNjb3VudCBvcHRpb25hbCBpbmRleGVzCgoJKiBwcmotc3RydC5hZHMsIHByai1zdHJ0LmFkYiAoVGVybXMpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIKCU9wdGlvbmFsX0luZGV4LiBGb3Igc3RyaW5nIGxpdGVyYWwsCglwcm9jZXNzIG9wdGlvbmFsIGluZGV4IHdoZW4gT3B0aW9uYWxfSW5kZXggaXMgVHJ1ZS4KCShQYXJzZV9FeHByZXNpb24pOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgT3B0aW9uYWxfSW5kZXgKCgkqIHByai10cmVlLmFkcywgcHJqLXRyZWUuYWRiIChTb3VyY2VfSW5kZXhfT2YpOiBOZXcgZnVuY3Rpb24KCShTZXRfU291cmNlX0luZGV4X09mKTogTmV3IHByb2NlZHVyZQoKCSogcHJqLXV0aWwuYWRiIChFeGVjdXRhYmxlX09mLCBWYWx1ZV9PZik6IFRha2UgaW50byBhY2NvdW50IG9wdGlvbmFsCglpbmRleC4KCgkqIHByai11dGlsLmFkcyAoRXhlY3V0YWJsZV9PZik6IE5ldyBwYXJhbWV0ZXIgSW5kZXgKCShWYWx1ZV9PZiAoTmFtZV9JZCwgQXJyYXlfRWxlbWVudF9JZCkgcmV0dXJuaW5nIFZhcmlhYmxlX1ZhbHVlKToKCU5ldyBwYXJhbWV0ZXIgU3JjX0luZGV4LCBkZWZhdWx0ZWQgdG8gMC4KCjIwMDQtMDUtMDUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTUyNTcKCSogc2VtX2NoMy5hZGIgKEFjY2Vzc19EZWZpbml0aW9uKTogSWYgdGhpcyBpcyBhbiBhY2Nlc3MgcGFyYW1ldGVyCgl3aG9zZSBkZXNpZ25hdGVkIHR5cGUgaXMgaW1wb3J0ZWQgdGhyb3VnaCBhIGxpbWl0ZWRfd2l0aCBjbGF1c2UsIGRvCglub3QgYWRkIHRoZSBlbmNsb3Npbmcgc3VicHJvZ3JhbSB0byB0aGUgbGlzdCBvZiBwcml2YXRlIGRlcGVuZGVudHMgb2YKCXRoZSB0eXBlLgoKMjAwNC0wNS0wNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBSIGFkYS8xNTI1OAoJKiBzZW1fY2g2LmFkYiAoQmFzZV9UeXBlc19NYXRjaCk6IFRydWUgaWYgb25lIHR5cGUgaXMgaW1wb3J0ZWQgdGhyb3VnaAoJYSBsaW1pdGVkX3dpdGggY2xhdXNlLCBhbmQgdGhlIG90aGVyIGlzIGl0cyBub24tbGltaXRlZCB2aWV3LgoKMjAwNC0wNS0wNSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX1N0YW5kYXJkKTogSW5pdGlhbGl6ZSBTdGFuZC5Cb29sZWFuX0xpdGVyYWxzLgoKCSogZXhwX2F0dHIuYWRiLCBleHBfY2g1LmFkYiwgZXhwX2NoOS5hZGIsIGV4cF9kaXNwLmFkYiwKCWV4cF9maXhkLmFkYiwgc2VtX2F0dHIuYWRiLCBzZW1fZGlzdC5hZGIsIHNlbV91dGlsLmFkYjogVXNlCglTdGFuZC5Cb29sZWFuX0xpdGVyYWxzIHRvIHByb2R1Y2UgcmVmZXJlbmNlcyB0byBlbnRpdGllcwoJU3RhbmRhcmRfRmFsc2UgYW5kIFN0YW5kYXJkX1RydWUgZnJvbSBjb21waWxlLXRpbWUgY29tcHV0ZWQgYm9vbGVhbgoJdmFsdWVzLgoKCSogc3RhbmQuYWRzIChCb29sZWFuX0xpdGVyYWxzKTogTmV3IHZhcmlhYmxlLCBwcm92aWRlcyB0aGUgZW50aXR5Cgl2YWx1ZXMgZm9yIEZhbHNlIGFuZCBUcnVlLCBmb3IgdXNlIGJ5IHRoZSBleHBhbmRlci4KCjIwMDQtMDUtMDUgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiA1dmlubWFvcC5hZGIsIDVbdnhdc3lzdGVtLmFkczogQWRkIFNob3J0X0FkZHJlc3Mgc3VidHlwZQoJNXZpbm1hb3AuYWRiOiBVbmNoZWNrZWQgY29udmVydCBTaG9ydF9BZGRyZXNzIHZpY2UgQWRkcmVzcwoKCSogYWRhaW50LmMsIHJhaXNlLmM6IENhc3RlIENSVEwgZnVuY3Rpb24gcmV0dXJuIHZhbHVlCgl0byBhdm9pZCBnY2MgZXJyb3Igb24gMzIvNjQgYml0IElWTVMuCgoJKiBNYWtlZmlsZS5pbiBbVk1TXTogVXNlIGlhciBhcmNoaXZlciBpZiBob3N0ID0gQWxwaGEvVk1TIGFuZAoJdGFyZ2V0ID0gSUE2NC9WTVMuCgoJKiBpbml0LmNbVk1TXTogT25seSBjYWxsIEFscGhhIHNwZWNpZmljIF9fZ25hdF9lcnJvcl9wcmVoYW5kbGVyIElOX1JUUy4KCgkqIDVxc3lzdGVtLmFkcyAoQWRkcmVzcyk6IERlY2xhcmUgYXMgTG9uZ19JbnRlZ2VyCgkoU2hvcnRfQWRkcmVzcyk6IERlY2xhcmUgYXMgMzIgYml0IHN1YnR5cGUgb2YgQWRkcmVzcwoJRGVjbGFyZSAgYWJzdHJhY3QgYWRkcmVzcyBvcGVyYXRpb25zIHRvIGF2b2lkIGdyYXR1aXRvdXMgYW1iaWd1aXRpZXMuCgoyMDA0LTA1LTA1ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0X3JtLnRleGk6IFVzZSB0aGUgbmV3IHJlc3RyaWN0aW9uIFNpbXBsZV9CYXJyaWVycyAoQUktMjQ5KQoJaW5zdGVhZCBvZiB0aGUgb2xkIEJvb2xlYW5fRW50cnlfQmFycmllcnMuCglEaXR0byBmb3IgTm9fVGFza19BdHRyaWJ1dGVzX1BhY2thZ2UgaW5zdGVhZCBvZiBOb19UYXNrX0F0dHJpYnV0ZXMuCgoyMDA0LTA1LTA1ICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDA0LTA1LTAzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIDUwc3lzdGVtLmFkcywgNTlzeXN0ZW0uYWRzLCBzLXRocmVhZC5hZHM6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoKMjAwNC0wNS0wMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS8xNTE1MgoJKiBleHBfY2gyLmFkYiAoRXhwYW5kX0N1cnJlbnRfVmFsdWUpOiBMZWF2ZSBNYWNoaW5lX0NvZGUgQXNtIGFyZ3VtZW50cwoJYWxvbmUuIFJlcGxhY2luZyBvYmplY3QgcmVmZXJlbmNlcyBieSBsaXRlcmFscyBpcyBpbmFwcHJvcHJpYXRlIGluIGEKCXNvIGxvdyBsZXZlbCBjb250ZXh0LgoKMjAwNC0wNS0wMyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBhLWV4ZXhwci5hZGI6IEFkZCBjb21tZW50cwoKMjAwNC0wNS0wMyAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAZ25hdC5jb20+CgoJKiBhLXRhZ3MuYWRiIChUYWdfVGFibGUpOiBBZGQgSW5kZXhfQ2hlY2sgcHJhZ21hIFN1cHByZXNzLiBBbGxvd3MgdXMgdG8KCWRlY2xhcmUgdGhlIEFuY2VzdG9yX1RhZ3MgYXJyYXkgaW4gVHlwZV9TcGVjaWZpY19EYXRhIHdpdGggYSBzbWFsbCBzaXplCgl3aXRob3V0IHJpc2tpbmcgYSBib3VuZHMgY2hlY2sgZXJyb3Igd2hlbiBhY2Nlc3Npbmcgb25lIG9mIGl0cwoJY29tcG9uZW50cy4KCShUeXBlX1NwZWNpZmljX0RhdGEpOiBEZWZpbmUgQW5jZXN0b3JfVGFncyBhcyBhIHNtYWxsIGFycmF5LgoJVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGhpdHRpbmcgYSBsaW1pdGF0aW9uIGR1cmluZyB0aGUgZGVidWcgaW5mbwoJZ2VuZXJhdGlvbiB3aGVuIHVzaW5nIHN0YWJzLgoKCSogYS10YWdzLmFkYiAoRGlzcGF0Y2hfVGFibGUpOiBEZWZpbmUgdGhlIFByaW1zX1B0ciBjb21wb25lbnQgYXMgYQoJc21hbGwgYXJyYXkuCglUaGlzIHByZXZlbnRzIHVzIGZyb20gaGl0dGluZyBhIGxpbWl0YXRpb24gZHVyaW5nIHRoZSBkZWJ1ZyBpbmZvCglnZW5lcmF0aW9uIHdoZW4gdXNpbmcgc3RhYnMuCgoyMDA0LTA1LTAzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJbGFuZy1zcGVjcy5oOiBSZW1vdmUgLWduYXR6KiBmcm9tIHNwZWNzLgoKMjAwNC0wNS0wMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBncHJtYWtlLmFkYiwgbWFrZWdwci5hZHMsIG1ha2VncHIuYWRiOiBOZXcgZmlsZXMuCgoJKiBNYWtlLWxhbmcuaW4sIE1ha2VmaWxlLmluOiBBZGQgZ3BybWFrZQoKMjAwNC0wNS0wMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX2FnZ3IuYWRiOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwNC0wNS0wMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBydHNmaW5kLmFkcywgcnRzZmluZC5hZGI6IChSVFVfTG9hZGVkKTogTmV3IGZ1bmN0aW9uCgoJKiBzZW1fYXR0ci5hZGIgKEV2YWxfQXR0cmlidXRlLCBjYXNlIFR5cGVfQ2xhc3MpOiBGaXggY2hlY2sgZm9yIGFkZHJlc3MKCXNvIHRoYXQgaXQgd29ya3Mgd2hlbiBhZGRyZXNzIGlzIG5vdCBhIHByaXZhdGUgdHlwZS4KCgkqIHNlbV9jaDEzLmFkYiAoQ2hlY2tfRXhwcl9Db25zdGFudHMsIGNhc2UgTl9JbnRlZ2VyX0xpdGVyYWwpOiBEZWFsCglwcm9wZXJseSB3aXRoIHJld3JpdHRlbiB1bmNoZWNrZWQgY29udmVyc2lvbnMuIFRoaXMgcHJldmVudHMKCW9yZGVyLW9mLWVsYWJvcmF0aW9uIGlzc3VlcyB0aGF0IGNhbiBvdGhlcndpc2UgYXJpc2UuCgkoTWluaW11bV9TaXplKTogRG9uJ3QgY2hlY2sgc2l6ZSBvZiBhY2Nlc3MgdHlwZXMgdW5kZXIgVk1TCgoJKiBzZW1fY2g0LmFkYiAoUmVtb3ZlX0FkZHJlc3NfSW50ZXJwcmV0YXRpb24pOiBOZXcgY2lyY3VpdCB0byByZW1vdmUKCWludGVycHJldGF0aW9ucyBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFzIHR5cGUgU3lzdGVtLkFkZHJlc3MuCgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYiAoSXNfRGVzY2VuZGVudF9PZl9BZGRyZXNzKTogTmV3IGZ1bmN0aW9uCgkoSXNfRGVzY2VuZGVudF9PZik6IE5ldyBmdW5jdGlvbgoKMjAwNC0wNS0wMyAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX3ByYWcuYWRiOiBCb29sZWFuX0VudHJ5X0JhcnJpZXJzIGlzIGEgc3lub255bSBvZiBTaW1wbGVfQmFycmllcnMuCglNYXhfRW50cnlfUXVldWVfRGVwdGggaXMgYSBzeW5vbnltIG9mIE1heF9FbnRyeV9RdWV1ZV9MZW5ndGguCglOb19EeW5hbWljX0ludGVycnVwdHMgaXMgYSBzeW5vbnltIG9mIE5vX0R5bmFtaWNfQXR0YWNobWVudC4KCgkqIHNlbV9yZXMuYWRiOiBVc2UgdGhlIG5ldyByZXN0cmljdGlvbiBNYXhfRW50cnlfUXVldWVfTGVuZ3RoIGluc3RlYWQKCW9mIHRoZSBvbGQgTWF4X0VudHJ5X1F1ZXVlX0RlcHRoLgoKCSogc25hbWVzLmFkYjogQm9vbGVhbl9FbnRyeV9CYXJyaWVycyBpcyBhIHN5bm9ueW0gb2YgU2ltcGxlX0JhcnJpZXJzLgoJTWF4X0VudHJ5X1F1ZXVlX0RlcHRoIGlzIGEgc3lub255bSBvZiBNYXhfRW50cnlfUXVldWVfTGVuZ3RoCglOb19EeW5hbWljX0ludGVycnVwdHMgaXMgYSBzeW5vbnltIG9mIE5vX0R5bmFtaWNfQXR0YWNobWVudAoKCSogc25hbWVzLmFkczogTmV3IGVudHJ5IGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgQm9vbGVhbl9FbnRyeV9CYXJyaWVycy4KCU5ldyBlbnRyeSBmb3IgcHJvcGVyIGhhbmRsaW5nIG9mIE1heF9FbnRyeV9RdWV1ZV9EZXB0aC4KCU5ldyBlbnRyeSBmb3IgcHJvcGVyIGhhbmRsaW5nIG9mIE5vX0R5bmFtaWNfSW50ZXJydXB0cy4KCgkqIHMtcmlkZW50LmFkczogQWRkaW5nIHJlc3RyaWN0aW9uIFNpbXBsZV9CYXJyaWVycyAoQUktMDAyNDkpIHRoYXQKCXN1cGVyc2VkZXMgdGhlIEdOQVQgc3BlY2lmaWMgcmVzdHJpY3Rpb24gQm9vbGVhbl9FbnRyeV9CYXJyaWVycy4KCUFkZGluZyByZXN0cmljdGlvbiBNYXhfRW50cnlfUXVldWVfTGVuZ3RoIChBSS0wMDI0OSkgdGhhdCBzdXBlcnNlZGVzCgl0aGUgR05BVCBzcGVjaWZpYyByZXN0cmljdGlvbiBNYXhfRW50cnlfUXVldWVfRGVwdGguCglBZGRpbmcgcmVzdHJpY3Rpb24gTm9fRHluYW1pY19BdHRhY2htZW50IChBSS0wMDI0OSkgdGhhdCBzdXBlcnNlZGVzCgl0aGUgR05BVCBzcGVjaWZpYyByZXN0cmljdGlvbiBOb19EeW5hbWljX0ludGVycnVwdHMuCgoJKiByZXN0cmljdC5hZHMsIHJlc3RyaWN0LmFkYjogVXNlIHRoZSBuZXcgcmVzdHJpY3Rpb24gU2ltcGxlX0JhcnJpZXJzCglpbnN0ZWFkIG9mIHRoZSBvbGQgQm9vbGVhbl9FbnRyeV9CYXJyaWVycy4KCVVzZSB0aGUgbmV3IHJlc3RyaWN0aW9uIE5vX0R5bmFtaWNfQXR0YWNobWVudCBpbnN0ZWFkIG9mIHRoZSBvbGQKCU5vX0R5bmFtaWNfSW50ZXJydXB0cy4KCgkqIGV4cF9jaDkuYWRiOiBDaGVjayByZXN0cmljdGlvbiBTaW1wbGVfQmFycmllcnMgKEFJLTAwMjQ5KSB0aGF0CglzdXBlcnNlZGVzIHRoZSBHTkFUIHNwZWNpZmljIHJlc3RyaWN0aW9uIEJvb2xlYW5fRW50cnlfQmFycmllcnMuCgoJKiBnbmF0YmluZC5hZGI6IFVzZSB0aGUgbmV3IHJlc3RyaWN0aW9uIE1heF9FbnRyeV9RdWV1ZV9MZW5ndGggaW5zdGVhZAoJb2YgdGhlIG9sZCBNYXhfRW50cnlfUXVldWVfRGVwdGguCgoyMDA0LTA1LTAzICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDA0LTA0LTI5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBjaGVja3MuYWRiIChFbmFibGVfUmFuZ2VfQ2hlY2spOiBJZiB0aGUgcHJlZml4IG9mIGFuIGluZGV4IGNvbXBvbmVudAoJaXMgYW4gYWNjZXNzIHRvIGFuIHVuY29uc3RyYWluZWQgYXJyYXksIHBlcmZvcm0gY2hlY2sgdW5jb25kaXRpb25hbGx5LgoKMjAwNC0wNC0yOSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZmllbGQpOiBBbHNvIGNhbGwgbWFrZV9wYWNrYWJsZV90eXBlIGlmCglDb21wb25lbnRfQ2xhdXNlLgoKMjAwNC0wNC0yOSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogaW5pdC5jIChfX2duYXRfaW5zdGFsbF9oYW5kbGVyLCBfX2duYXRfZXJyb3JfaGFuZGxlcik6IFJlbW92ZQoJYWx0ZXJuYXRlIHN0YWNrIHNldHRpbmcuIFRoZXJlIHdhcyBubyBzdXBwb3J0IGZvciB0aGUgdGFza2luZyBjYXNlcwoJYW5kIHRoZSBjaGFuZ2VzIGV2ZW50dWFsbHkgY2F1c2VkIGEgbnVtYmVyIG9mIHNpZGUtZWZmZWN0IGZhaWx1cmVzIGluCgl0aGUgbm9uLXRhc2tpbmcgY2FzZSB0b28uCgoyMDA0LTA0LTI5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJbGFuZy1zcGVjcy5oOiBSZWRpcmVjdCBvdXRwdXQgdG8gL2Rldi9udWxsIGlmIC1nbmF0YyBvciAtZ25hdHogb3IKCS1nbmF0cyBpcyBwYXNzZWQuCgoyMDA0LTA0LTI5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IEluY3JlYXNlIG1heCBzaXplIG9mIGFyZ3VtZW50IGFycmF5IGZvcgoJZ25hdGJpbmQgZm9yIHRoZSBwb3RlbnRpYWwgYWRkaXRpb24gb2YgLUYuCglJZiB0aGVyZSBhcmUgU3RhbmQtQWxvbmUgTGlicmFyeSBwcm9qZWN0cywgaW52b2tlIGduYXRiaW5kIHdpdGggLUYgdG8KCWJlIHN1cmUgdGhhdCBlbGFib3JhdGlvbiBmbGFncyB3aWxsIGJlIGNoZWNrZWQuCgoJKiBzd2l0Y2gtYy5hZGI6IENvcnJlY3QgY2FsbCB0byBTY2FuX1BvcyBmb3IgLWduYXRlSQoKMjAwNC0wNC0yOSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX3dhcm4uYWRiIChDaGVja19SZWZlcmVuY2VzKTogTW92ZSAnPGFjY2Vzcy12YXJpYWJsZT4gbWF5IGJlCgludWxsJyB3YXJuaW5nIG91dCBvZiB1bmRlciBXYXJuX09uX05vX1ZhbHVlX0Fzc2lnbmVkLgoKMjAwNC0wNC0yOSAgRWQgRmFsaXMgIDxmYWxpc0BnbmF0LmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEZpeGVkIHRleGkgZXJyb3IKCjIwMDQtMDQtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKFJlbW92ZV9BYnN0cmFjdF9PcGVyYXRpb25zKTogVW5jb25kaXRpb25hbGx5IHJlbW92ZQoJYWJzdHJhY3Qgb3BlcmF0aW9ucyBpZiB0aGV5IGNvbWUgZnJvbSBwcmVkZWZpbmVkIGZpbGVzLgoKCSogZ25hdF9ybS50ZXhpOiBGaXggYmFkIGRvYyBmb3IgcHJhZ21hIEVsYWJvcmF0aW9uX0NoZWNrcyAoc2hvdWxkIGJlCglEeW5hbWljLCBub3QgUk0pLgoKCSogcy1hZGRvcGUuYWRiOiBDb3JyZWN0IG9idmlvdXMgZXJyb3IgaW4gbW9kIGZ1bmN0aW9uCgoyMDA0LTA0LTI4ICBBbmRyZXcgVy4gUmV5bm9sZHMgIDxhd3JleW5vbGRzQG1hYy5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIHRhcmdldCBwYWlycyBmb3IgcG93ZXJwYyBkYXJ3aW4qCgl0YXNraW5nIHN1cHBvcnQuCgoJKiBhLWludG5hbS1kYXJ3aW4uYWRzLCBzLW9zaW50ZS1kYXJ3aW4uYWRiLAoJcy1vc2ludGUtZGFyd2luLmFkcywgc3lzdGVtLWRhcndpbi1wcGMuYWRzOiBOZXcgZmlsZXMuCgoyMDA0LTA0LTI4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIHRhcmdldCBtYWNybyBkZWZpbml0aW9ucyBmb3IgczM5MCotbGludXgqLgoJKiBzeXN0ZW0tbGludXgtczM5MC5hZHM6IE5ldyBmaWxlLgoJKiBzeXN0ZW0tbGludXgtczM5MHguYWRzOiBOZXcgZmlsZS4KCjIwMDQtMDQtMjggIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZ25hdF91Z24udGV4aTogQ29ycmVjdCBhcmd1bWVudCB0byBAc2V0ZmlsZW5hbWUuCgoyMDA0LTA0LTI4ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+CgoJKiBhLWV4ZXhwci5hZGIgKFVud2luZF9Xb3JkKTogTmV3IGRhdGEgdHlwZS4KCShVbndpbmRfRXhjZXB0aW9uKTogVXNlIGl0IGFzIHR5cGUgb2YgUHJpdmF0ZTEgYW5kIFByaXZhdGUyLgoKCSogcmFpc2UuYyAoZGJfYWN0aW9uX2Zvcik6IEZpeCBkZWJ1ZyBwcmludGYuCgoyMDA0LTA0LTI3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBhLXd0bW9pby5hZHM6IEZvcm1hbCB0eXBlIG11c3QgYmUgYSBtb2R1bGFyIHR5cGUsIG5vdCBhIHNpZ25lZAoJaW50ZWdlciB0eXBlLgoKMjAwNC0wNC0yNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIG9iamVjdCk6IENhbGwKCV9fYnVpbHRpbl91cGRhdGVfc2V0am1wX2J1Zi4KCgkqIGdpZ2kuaCAodXBkYXRlX3NldGptcF9idWYpOiBEZWxldGVkLgoJKEFEVF91cGRhdGVfc2V0am1wX2J1Zl9kZWNsLCB1cGRhdGVfc2V0am1wX2J1Zl9kZWNsKTogTmV3LgoKCSogbWlzYy5jOiAodXBkYXRlX3NldGptcF9idWYpOiBEZWxldGVkLgoKCSogdHJhbnMuYyAoZ25hdF90b19nbnUpOiBDYWxsIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0IGFuZCBlbWl0X3F1ZXVlCglhcm91bmQgYmxvY2sgb2YgUlRMLgoKCSogdXRpbHMuYyAoaW5pdF9naWdpX2RlY2xzKTogSW5pdGlhbGl6ZSB1cGRhdGVfc2V0am1wX2J1Zi4KCjIwMDQtMDQtMjYgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9kaXN0LmFkYiwgZXhwX2Rpc3QuYWRiOiBXaGVuIGNvbnN0cnVjdGluZyBhIFJBUyB2YWx1ZSBmb3IgYSBsb2NhbAoJc3VicHJvZ3JhbSBmb3Igd2hpY2ggbm8gcHJhZ21hIEFsbF9DYWxsc19SZW1vdGUgYXBwbGllcywgc3RvcmUgdGhlCglhZGRyZXNzIG9mIHRoZSByZWFsIHN1YnByb2dyYW0gaW4gdGhlIHVuZGVybHlpbmcgcmVjb3JkIHR5cGUsIHNvIGxvY2FsCglkZXJlZmVyZW5jZXMgZG8gbm90IGdvIHRocm91Z2ggdGhlIFBDUy4KCjIwMDQtMDQtMjYgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogaS1jLmFkczogQWRkIHNvbWUgdHlwZSBxdWFsaWZpY2F0aW9ucyB0byBhdm9pZCBhbWJpZ3VpdGllcyB3aGVuCgljb21waWxpbmcgd2l0aCBzLWF1eGRlYy5hZHMgYW5kIGEgbm9uLXByaXZhdGUgYWRkcmVzcyB0eXBlLgoKMjAwNC0wNC0yNiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5ydGw6IEZpeCBlcnJvciBpbiBwcmV2aW91cyBjaGVjay1pbjoKCUFkZCBzLWFkZG9wZS5vIHRvIG5vbiB0YXNraW5nIG9iamVjdCBsaXN0IChyYXRoZXIgdGhhbiB0YXNraW5nIG9iamVjdAoJbGlzdCkuCgoyMDA0LTA0LTI2ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fYWdnci5hZGI6IEZpeCB0eXBvIGluIGNvbW1lbnRzCgkoUmVzb2x2ZV9BZ2dyX0V4cHIpOiBQcm9wYWdhdGUgdGhlIHR5cGUgdG8gdGhlIG5lc3RlZCBhZ2dyZWdhdGUuCglSZXF1aXJlZCB0byBjaGVjayB0aGUgbnVsbC1leGNsdXNpb24gYXR0cmlidXRlLgoKCSogc2VtX2F0dHIuYWRiIChSZXNvbHZlX0F0dHJpYnV0ZSk6IENoZWNrIHRoZSBhY2Nlc3NpYmlsaXR5IGxldmVsIGluCgljYXNlIG9mIGFub255bW91cyBhY2Nlc3MgdHlwZXMgaW4gcmVjb3JkIGFuZCBhcnJheSBjb21wb25lbnRzLiBGb3IgYQoJY29tcG9uZW50IGRlZmluaXRpb24gdGhlIGxldmVsIGlzIHRoZSBzYW1lIG9mIHRoZSBlbmNsb3NpbmcgY29tcG9zaXRlCgl0eXBlLgoKCSogc2VtX2NoMy5hZGIgKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uKTogSW4gY2FzZSBvZiBjb21wb25lbnRzCgl0aGF0IGFyZSBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzIHRoZSBsZXZlbCBvZiBhY2Nlc3NpYmlsaXR5IGRlcGVuZHMgb24KCXRoZSBlbmNsb3NpbmcgdHlwZSBkZWNsYXJhdGlvbi4gSW4gb3JkZXIgdG8gaGF2ZSB0aGlzIGluZm9ybWF0aW9uLCBzZXQKCXRoZSBzY29wZSBvZiB0aGUgYW5vbnltb3VzIGFjY2VzcyB0eXBlIHRvIHRoZSBlbmNsb3NpbmcgcmVjb3JkIHR5cGUKCWRlY2xhcmF0aW9uLgoJKEFycmF5X1R5cGVfRGVjbGFyYXRpb24pOiBJbiBjYXNlIG9mIGNvbXBvbmVudHMgdGhhdCBhcmUgYW5vbnltb3VzCglhY2Nlc3MgdHlwZXMgdGhlIGxldmVsIG9mIGFjY2Vzc2liaWxpdHkgZGVwZW5kcyBvbiB0aGUgZW5jbG9zaW5nIHR5cGUKCWRlY2xhcmF0aW9uLiBJbiBvcmRlciB0byBoYXZlIHRoaXMgaW5mb3JtYXRpb24sIHNldCB0aGUgc2NvcGUgb2YgdGhlCglhbm9ueW1vdXMgYWNjZXNzIHR5cGUgdG8gdGhlIGVuY2xvc2luZyBhcnJheSB0eXBlIGRlY2xhcmF0aW9uLgoKCSogc2VtX2NoMy5hZGIgKEFycmF5X1R5cGVfRGVjbGFyYXRpb24pOiBTZXQgdGhlIHNjb3BlIG9mIHRoZSBhbm9ueW1vdXMKCWFjY2VzcyB0eXBlLgoKCSogc2VtX2NoOC5hZGIgKEFuYWx5emVfT2JqZWN0X1JlbmFtaW5nKTogQWRkIGNoZWNrIHRvIHZlcmlmeSB0aGF0CglyZW5hbWluZyBvZiBhbm9ueW1vdXMgYWNjZXNzLXRvLWNvbnN0YW50IHR5cGVzIGFsbG93ZWQgaWYgYW5kIG9ubHkgaWYKCXRoZSByZW5hbWVkIG9iamVjdCBpcyBhY2Nlc3MtdG8tY29uc3RhbnQuCgoJKiBzZW1fdXRpbC5hZGIgKFR5cGVfQWNjZXNzX0xldmVsKTogSW4gY2FzZSBvZiBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzCgl0aGF0IGFyZSBjb21wb25lbnRfZGVmaW5pdGlvbiBvciBkaXNjcmltaW5hbnRzIG9mIGEgbm9ubGltaXRlZCB0eXBlLAoJdGhlIGxldmVsIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIGVuY2xvc2luZyBjb21wb25lbnQgdHlwZS4KCjIwMDQtMDQtMjYgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fZWxpbS5hZGI6IFNvbWUgbWlub3IgY29kZSByZW9yZ2FuaXphdGlvbiBmcm9tIGNvZGUgcmVhZGluZy4gRml4CgltaXNwcmludCBpbiB0aGUgZnVuY3Rpb24gbmFtZSAoRmlsZV9OYW1lX01hdGNoKS4KCjIwMDQtMDQtMjMgIExhdXJlbnQgR1VFUkJZIDxsYXVyZW50QGd1ZXJieS5uZXQ+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIFJBTkxJQl9URVNULCB1c2UgLSQoUkFOTElCKSBpbmNsdWRpbmcgYWZ0ZXIKCWluc3RhbGwuCgoyMDA0LTA0LTIzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2UtbGFuZy5pbiAoR05BVEJJTkRfT0JKUyk6IEFkZCBzLWFkZG9wZS5vLgoKMjAwNC0wNC0yMyAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhY3QtZXVyb3BlLmZyPgoKCSogYWRhaW50LmMgKF9fZ25hdF90cnlfbG9jayk6IE5vIGxvbmdlciByZXF1aXJlcyB0aGF0IHRoZSBwYXJlbnQKCWRpcmVjdG9yeSBiZSB3cml0YWJsZSwgdGhlIGRpcmVjdG9yeSBpdHNlbGYgaXMgZW5vdWdoLgoJKGduYXRfaXNfYWJzb2x1dGVfcGF0aCk6IENoYW5nZSBwcm9maWxlLCBzbyB0aGF0IHRoZSBjYWxsIGZyb20KCUdOQVQuT1NfTGliIGNhbiBiZSBtYWRlIG1vcmUgZWZmaWNpZW50LgoKCSogYWRhaW50LmggKGduYXRfaXNfYWJzb2x1dGVfcGF0aCk6IENoYW5nZSBwcm9maWxlLCBzbyB0aGF0IHRoZSBjYWxsCglmcm9tIEdOQVQuT1NfTGliIGNhbiBiZSBtYWRlIG1vcmUgZWZmaWNpZW50LgoKCSogZy1vc19saWIuYWRiIChJc19BYnNvbHV0ZV9QYXRoKTogTW9yZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24sIGF2b2lkCglvbmUgY29weSBvZiB0aGUgZmlsZSBuYW1lLiBGb3VuZCBieSBjb2RlIHJlYWRpbmcuCgoyMDA0LTA0LTIzICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBnbmF0bWFrZSBzd2l0Y2ggLWVMCglDb3JyZWN0IGRvY3VtZW50YXRpb24gb24gZ25hdG1ha2Ugc3dpdGNoZXMgdHJhbnNtaXR0ZWQgdG8gdGhlIGNvbXBpbGVyCgoJKiBhbGkuYWRzOiBNaW5vciBjb21tZW50IGZpeAoKMjAwNC0wNC0yMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogc2VtX2NoNi5hZGI6IChDb25maXJtaW5nIFR5cGVzKTogQ29kZSBjbGVhbnVwCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSk6IEdpdmUgc3VwcG9ydCB0byBhbm9ueW1vdXMgYWNjZXNzIHRvCglzdWJwcm9ncmFtIHR5cGVzOiBFX0Fub255bW91c19BY2Nlc3NfU3VicHJvZ3JhbV9UeXBlIGFuZAoJRV9Bbm9ueW1vdXNfQWNjZXNzX1Byb3RlY3RlZF9TdWJwcm9ncmFtX1R5cGUuCgoyMDA0LTA0LTIzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fZGlzdC5hZGI6IEFkZCBhIG5ldyBwYXJhbXRlciB0byB0aGUgUkFTX0FjY2VzcyBUU1MgaW5kaWNhdGluZwoJd2hldGhlciBhIHByYWdtYSBBbGxfQ2FsbHNfUmVtb3RlIGFwcGxpZXMgdG8gdGhlIHN1YnByb2dyYW0gb24gd2hpY2gKCSdBY2Nlc3MgaXMgdGFrZW4uCglObyBmdW5jdGlvbmFsIGNoYW5nZSBpcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcmV2aXNpb247IHRoZSBuZXcgcGFyYW1ldGVyCgl3aWxsIGJlIHVzZWQgdG8gYWxsb3cgY2FsbHMgdG8gbG9jYWwgUkNJIHN1YnByb2dyYW1zIHRvIGJlIG9wdGltaXplZAoJdG8gbm90IHVzZSB0aGUgUENTIGluIHRoZSBjYXNlIHdoZXJlIG5vIHByYWdtYSBBbGxfQ2FsbHNfUmVtb3RlIGFwcGxpZXMsCglhcyBpcyBhbHJlYWR5IGRvbmUgaW4gdGhlIFBvbHlPUkIgaW1wbGVtZW50YXRpb24gb2YgdGhlIERTQS4KCgkqIGV4cF9kaXN0LmFkYjogQWRkIGEgbmV3IHBhcmFtdGVyIHRvIHRoZSBSQVNfQWNjZXNzIFRTUyBpbmRpY2F0aW5nCgl3aGV0aGVyIGEgcHJhZ21hIEFsbF9DYWxsc19SZW1vdGUgYXBwbGllcyB0byB0aGUgc3VicHJvZ3JhbSBvbiB3aGljaAoJJ0FjY2VzcyBpcyB0YWtlbi4KCU5vIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIGludHJvZHVjZWQgYnkgdGhpcyByZXZpc2lvbjsgdGhlIG5ldyBwYXJhbWV0ZXIKCXdpbGwgYmUgdXNlZCB0byBhbGxvdyBjYWxscyB0byBsb2NhbCBSQ0kgc3VicHJvZ3JhbXMgdG8gYmUgb3B0aW1pemVkCgl0byBub3QgdXNlIHRoZSBQQ1MgaW4gdGhlIGNhc2Ugd2hlcmUgbm8gcHJhZ21hIEFsbF9DYWxsc19SZW1vdGUgYXBwbGllcywKCWFzIGlzIGFscmVhZHkgZG9uZSBpbiB0aGUgUG9seU9SQiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRFNBLgoKMjAwNC0wNC0yMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBlbnRyeSBmb3Igcy1hZGRvcGUubyBpbiBydW4gdGltZSBsaWJyYXJ5IGxpc3QKCSogTWFrZS1sYW5nLmluOiBBZGQgZW50cnkgZm9yIHMtYWRkb3BlLm8gdG8gR05BVDEgb2JqZWN0cwoJKiBzLWFkZG9wZS5hZHMsIHMtYWRkb3BlLmFkYjogTmV3IGZpbGVzLgoKCSogcy1jYXJzaTguYWRiLCBzLWNhcnVuOC5hZGIsIHMtY2FzaTE2LmFkYiwgcy1jYXNpMzIuYWRiLAoJcy1jYXNpNjQuYWRiLCBzLWNhdW4xNi5hZGIsIHMtY2F1bjMyLmFkYiwgcy1jYXVuNjQuYWRiLAoJcy1maW5pbXAuYWRiLCBzLWdldmVvcC5hZGIsIHMtc3RvZWxlLmFkYjogTW9kaWZpY2F0aW9ucyB0byBhbGxvdwoJU3lzdGVtLkFkZHJlc3MgdG8gYmUgbm9uLXByaXZhdGUgYW5kIHNpZ25lZC4KCgkqIHNlbV9lbGltLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIChmYWlybHkgZXh0ZW5zaXZlKQoJU29tZSBtaW5vciBjb2RlIHJlb3JnYW5pemF0aW9uIGZyb20gY29kZSByZWFkaW5nCglBZGQgYSBjb3VwbGUgb2YgPz8/IGNvbW1lbnRzCgoyMDA0LTA0LTIzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGJ1aWxkX3VuaXRfZWxhYik6IERvbid0IGNhbGwgZ2V0ZGVjbHMuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9JZl9TdGF0ZW1lbnQpOiBSZW1vdmUgbm9uLWRldGVybWluaXNtLgoKCSogdXRpbHMuYyAoYmVnaW5fc3VicHJvZ19ib2R5KTogSnVzdCBzZXQgREVDTF9DT05URVhUIGluIFBBUk1fREVDTC4KCjIwMDQtMDQtMjMgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0X3JtLnRleGk6IFNtYWxsIGZpeGVzIGluIHRoZSBjaGFuZ2VzIG1hZGUgaW4gdGhlICdwcmFnbWEKCUVsaW1pbmF0ZScgc2VjdGlvbi4KCgkqIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IFJlbW92ZSBOYW1lX0hvbW9ueW1fTnVtYmVyIChIb21vbnltX051bWJlciBpcwoJbm8gbG9uZ2VyIHVzZWQgYXMgYSBwYXJhbWV0ZXIgbmFtZSBmb3IgRWxpbWluYXRlIHByYWdtYSkuCgoyMDA0LTA0LTIyICBMYXVyZW50IEdVRVJCWSA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIG9wdGltaXphdGlvbi8xNDk4NAoJUFIgb3B0aW1pemF0aW9uLzE0OTg1CgkqIHRyYW5zLmMgKGdpZ2kpOiBGaXggbm9uIGRldGVybWluaXNtIGxlYWRpbmcgdG8gYm9vdHN0cmFwCgljb21wYXJpc29uIGZhaWx1cmVzLgoKMjAwNC0wNC0yMSAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogYWRhaW50LmMgKF9fZ25hdF9wb3J0YWJsZV9zcGF3bik6IFF1b3RlIGZpcnN0IGFyZ3VtZW50IChhcmd2WzBdKQoJcGFzc2VkIHRvIHNwYXdudnAoKSB0byBwcm9wZXJseSBoYW5kbGUgcHJvZ3JhbSBwYXRobmFtZSB3aXRoIHNwYWNlcyBvbgoJV2luMzIuCgoyMDA0LTA0LTIxICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFjdC1ldXJvcGUuZnI+CgoJKiBnLWRlYnBvby5hZGIgKFByaW50X0luZm8pOiBBdm9pZCBleHRyYSB3b3JrIGlmIERpc3BsYXlfU2xvdHMgaXMgRmFsc2UuCgkoQWxsb2NhdGUsIERlYWxsb2NhdGUsIEZyZWVfUGh5c2ljYWxseSk6IE1ha2Ugc3VyZSB0aGUgdGFza3MgYXJlCgl1bmxvY2tlZCBpbiBjYXNlIG9mIGV4Y2VwdGlvbnMuCgoyMDA0LTA0LTIxICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGdpZ2kuaCAoZ2V0X3RhcmdldF9ub19kb2xsYXJfaW5fbGFiZWwpOiBSZW1vdmUgZXh0ZXJuIGRlY2xhcmF0aW9uLgoJVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdCBhbnltb3JlLgoKMjAwNC0wNC0yMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdGJpbmQuYWRiLCBnbmF0bGluay5hZGI6IFVwZGF0ZSBuYW1lIG9mIGltcG9ydGVkIEMgc3ltYm9sLgoKCSogbGluay5jOiBNb3ZlIHZhcmlhYmxlcyB0byB0aGUgX19nbmF0IG5hbWUgc3BhY2UuCgoJKiBNYWtlZmlsZS5pbjogbGlzdCBsaW5rLm8gZXhwbGljaXRseSB3aGVuIG5lZWRlZC4KCgkqIG1saWIuYWRiOiBSZW1vdmUgcHJhZ21hIExpbmtlcl9PcHRpb24gZm9yICJsaW5rLm8iIGZyb20gbWxpYi4KCjIwMDQtMDQtMjEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIGVpbmZvLmFkYiAoT3JpZ2luYWxfQWNjZXNzX1R5cGUpOiBOZXcgc3VicHJvZ3JhbQoJKFNldF9PcmlnaW5hbF9BY2Nlc3NfVHlwZSk6IE5ldyBzdWJwcm9ncmFtCgkoV3JpdGVfRmllbGQyMV9OYW1lKTogV3JpdGUgdGhlIG5hbWUgb2YgdGhlIG5ldyBmaWVsZAoKCSogZWluZm8uYWRzIChPcmlnaW5hbF9BY2Nlc3NfVHlwZSk6IE5ldyBmaWVsZCBwcmVzZW50IGluIGFjY2VzcyB0bwoJc3VicHJvZ3JhbSB0eXBlcy4KCUFkZGl0aW9uIG9mIHR3byBuZXcgZW50aXRpZXM6IEVfQW5vbnltb3VzX0FjY2Vzc19TdWJwcm9ncmFtX1R5cGUsIGFuZAoJRV9Bbm9ueW1vdXNfQWNjZXNzX1Byb3RlY3RlZF9TdWJwcm9ncmFtX1R5cGUuCgoJKiBsaWIteHJlZi5hZGIgKE91dHB1dF9PbmVfUmVmKTogR2l2ZSBzdXBwb3J0IHRvIGFub255bW91cyBhY2Nlc3MgdG8KCXN1YnByb2dyYW0gdHlwZXMuCgoJKiBsaWIteHJlZi5hZHMgKFhyZWZfRW50aXR5X0xldHRlcnMpOiBJbml0aWFsaXplIHZhbHVlcyBjb3JyZXNwb25kaW5nCgl0byBhbm9ueW1vdXMgYWNjZXNzIHRvIHN1YnByb2dyYW0gdHlwZXMuCgoJKiBzZW1fYXR0ci5hZGIgKFJlc29sdmVfQXR0cmlidXRlKTogR2l2ZSBzdXBwb3J0IHRvIGFub255bW91cyBhY2Nlc3MKCXRvIHN1YnByb2dyYW0gdHlwZXMuCgoJKiBzZW1fY2gzLmFkYiAoQWNjZXNzX0RlZmluaXRpb24pOiBDb21wbGV0ZSBkZWNvcmF0aW9uIG9mIGVudGl0aWVzCgljb3JyZXNwb25kaW5nIHRvIGFub255bW91cyBhY2Nlc3MgdG8gc3VicHJvZ3JhbSB0eXBlcy4KCShBbmFseXplX0NvbXBvbmVudF9EZWNsYXJhdGlvbik6IEFkZCBuZXcgYWN0dWFsIHRvIHRoZSBjYWxsIHRvCglzdWJwcm9ncmFtIHJlcGxhY2VfYW5vbnltb3VzX2FjY2Vzc190b19wcm90ZWN0ZWRfc3VicHJvZ3JhbS4KCShBcnJheV9UeXBlX0RlY2xhcmF0aW9uKTogQWRkIG5ldyBhY3R1YWwgdG8gdGhlIGNhbGwgdG8gc3VicHJvZ3JhbQoJcmVwbGFjZV9hbm9ueW1vdXNfYWNjZXNzX3RvX3Byb3RlY3RlZF9zdWJwcm9ncmFtLgoJKFByb2Nlc3NfRGlzY3JpbWluYW50cyk6IEFkZCBuZXcgYWN0dWFsIHRvIHRoZSBjYWxsIHRvIHN1YnByb2dyYW0KCXJlcGxhY2VfYW5vbnltb3VzX2FjY2Vzc190b19wcm90ZWN0ZWRfc3VicHJvZ3JhbS4KCShSZXBsYWNlX0Fub255bW91c19BY2Nlc3NfVG9fUHJvdGVjdGVkX1N1YnByb2dyYW0pOiBOZXcgZm9ybWFsLgoKCSogc2VtX2NoMy5hZHMgKFJlcGxhY2VfQW5vbnltb3VzX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfU3VicHJvZ3JhbSk6IE5ldwoJZm9ybWFsLgoKCSogc2VtX2NoNi5hZGIsIHNlbV90eXBlLmFkYiwgc2VtX3Jlcy5hZGI6IEdpdmUgc3VwcG9ydCB0byBhbm9ueW1vdXMKCWFjY2VzcyB0byBzdWJwcm9ncmFtIHR5cGVzLgoKCSogc2VtX3V0aWwuYWRiIChIYXNfRGVjbGFyYXRpb25zKTogQWRkaXRpb24gb2YgcGFja2FnZV9zcGVjaWZpY2F0aW9uCglub2Rlcy4KCjIwMDQtMDQtMjEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9wcmFnLmFkYiAoTWFrZV9JbmxpbmUpOiBJZiBzdWJwcm9ncmFtIGlzIGEgcmVuYW1pbmcsIHByb3BhZ2F0ZQoJaW5saW5lZCBmbGFncyB0byByZW5hbWVkIGVudGl0eSBvbmx5IGlmIGluIGN1cnJlbnQgdW5pdC4KCjIwMDQtMDQtMjEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHMtcGFyaW50LmFkczogQWRkIERTQSBpbXBsZW1lbnRhdGlvbiBtYXJrZXIuCgoJKiBydHNmaW5kLmFkcywgcnRzZmluZC5hZGIsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGIsIHMtcnBjLmFkYjogVXNlIHRoZQoJdmFsdWUgb2YgU3lzdGVtLlBhcnRpdGlvbl9JbnRlcmZhY2UuRFNBX0ltcGxlbWVudGF0aW9uIHRvIGRldGVybWluZQoJd2hhdCB2ZXJzaW9uIG9mIHRoZSBkaXN0cmlidXRlZCBzeXN0ZW1zIGFubmV4IGlzIGF2YWlsYWJsZSAobm8KCWltcGxlbWVudGF0aW9uLCBHTEFERSwgb3IgUG9seU9SQikuCgoyMDA0LTA0LTIxICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIHRhcmd0eXBzLmMgKGdldF90YXJnZXRfbm9fZG9sbGFyX2luX2xhYmVsKTogUmVtb3ZlLCBubyBsb25nZXIgdXNlZC4KCjIwMDQtMDQtMjEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB1dGlscy5jIChjb252ZXJ0LCBjYXNlIENPTlNUUlVDVE9SLCBDT01QT05FTlRfUkVGKTogRG8gbm90IG1ha2Ugbm9kZQoJd2l0aCBuZXcgdHlwZSBpZiBhbGlhcyBzZXRzIGRpZmZlci4KCUZpeGVzIEFDQVRTIGM0MTEwM2IuCgoyMDA0LTA0LTIxICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai5hZHM6IFJlbW92ZSBGT1JUUkFOIGFzIGFuIGFjY2VwdGVkIGxhbmd1YWdlOiBub3QgdGVzdGVkIHlldC4KCUFkZCBhcnJheSBMYW5nX0FyZ3MgZm9yIHRoZSBsYW5ndWFnZSBzcGVjaWZpYyBjb21waWxpbmcgYXJndW1lbnQKCXN3aXRjaGVzLgoKCSogZ25hdF91Z24udGV4aTogRXhwbGFpbiBpbiBtb3JlIGRldGFpbHMgd2hlbiBhIGxpYnJhcnkgaXMgcmVidWlsdC4KCjIwMDQtMDQtMjEgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0X3JtLnRleGk6IFVwZGF0ZSB0aGUgZGVzY3JpcHRvbiBvZiB0aGUgRWxpbWluYXRlIHByYWdtYQoJYWNjb3JkaW5nIHRvIHRoZSByZWNlbnQgY2hhbmdlcyBpbiB0aGUgZm9ybWF0IG9mIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZQoJcHJhZ21hIChyZXBsYWNpbmcgSG9tb255bV9OdW1iZXIgd2l0aCBTb3VyY2VfTG9jYXRpb24pLgoKMjAwNC0wNC0xOSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiA1aXN5c3RlbS5hZHM6IFJlbW92ZWQsIHVudXNlZC4KCgkqIGduYXRfcm0udGV4aTogUmVkbyAxLjEzIGNoYW5nZS4KCjIwMDQtMDQtMTkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcy1zdG9lbGUuYWRzOiBDbGVhbiB1cCBkZWZpbml0aW9uIG9mIFN0b3JhZ2VfT2Zmc2V0ICh0aGUgbmV3CglkZWZpbml0aW9uIGlzIGNsZWFuZXIsIGF2b2lkcyB0aGUga2x1ZGdlIG9mIGV4cGxpY2l0IFN0YW5kYXJkIG9wZXJhdG9yCglyZWZlcmVuY2VzLCBhbmQgYWxzbyBpcyBjb25zaXN0ZW50IHdpdGggYSB2aXNpYmxlIFN5c3RlbS5BZGRyZXNzIHdpdGgKCW5vIHZpc2libGUgb3BlcmF0aW9ucy4KCgkqIHMtZ2V2ZW9wLmFkYjogQWRkIGRlY2xhcmF0aW9ucyB0byBhdm9pZCBhc3N1bXB0aW9uIG9mIHZpc2libGUKCW9wZXJhdGlvbnMgb24gdHlwZSBTeXN0ZW0uQWRkcmVzcyAoc2luY2UgdGhlc2UgbWlnaHQgbm90IGJlIGF2YWlsYWJsZQoJaWYgQWRkcmVzcyBpcyBhIG5vbi1wcml2YXRlIHR5cGUgZm9yIHdoaWNoIHRoZSBvcGVyYXRpb25zCglhcmUgbWFkZSBhYnN0cmFjdCkuCgoJKiBzZW1fZXZhbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcy1jYXJzaTguYWRzLCBzLWNhcnVuOC5hZHMsIHMtY2FzaTE2LmFkcywgcy1jYXNpMzIuYWRzLAoJcy1jYXNpNjQuYWRzLCBzLWNhdW4xNi5hZHMsIHMtY2F1bjMyLmFkcywgcy1jYXVuNjQuYWRzOiBNaW5vcgoJcmVmb3JtYXR0aW5nIChuZXcgZnVuY3Rpb24gc3BlYyBmb3JtYXQpLgoKCSogcy1hdXhkZWMuYWRiLCBzLWNhcnNpOC5hZGIsIHMtY2FydW44LmFkYiwgcy1jYXNpMTYuYWRiLAoJcy1jYXNpMzIuYWRiLCBzLWNhc2k2NC5hZGIsIHMtY2F1bjE2LmFkYiwgcy1jYXVuMzIuYWRiLAoJcy1jYXVuNjQuYWRiOiBBZGQgZGVjbGFyYXRpb25zIHRvIGF2b2lkIGFzc3VtcHRpb24gb2YgdmlzaWJsZQoJb3BlcmF0aW9ucyBvbiB0eXBlIFN5c3RlbS5BZGRyZXNzIChzaW5jZSB0aGVzZSBtaWdodCBub3QgYmUgYXZhaWxhYmxlCglpZiBBZGRyZXNzIGlzIGEgbm9uLXByaXZhdGUgdHlwZSBmb3Igd2hpY2ggdGhlIG9wZXJhdGlvbnMgYXJlIG1hZGUKCWFic3RyYWN0KS4KCgkqIGxpYi5hZHMsIGxpYi5hZGIgKFN5bmNocm9uaXplX1NlcmlhbF9OdW1iZXIpOiBOZXcgcHJvY2VkdXJlLgoKCSogZXhwX2ludHIuYWRiOiBNaW5vciBjb21tZW50IHVwZGF0ZQoKCSogZXhwX2FnZ3IuYWRiLCBleHBfYXR0ci5hZGIsIGV4cF9jaDEzLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogNW9tYXN0b3AuYWRiOiBBZGQgZGVjbGFyYXRpb25zIHRvIGF2b2lkIGFzc3VtcHRpb24gb2YgdmlzaWJsZQoJb3BlcmF0aW9ucyBvbiB0eXBlIFN5c3RlbS5BZGRyZXNzIChzaW5jZSB0aGVzZSBtaWdodCBub3QgYmUgYXZhaWxhYmxlCglpZiBBZGRyZXNzIGlzIGEgbm9uLXByaXZhdGUgdHlwZSBmb3Igd2hpY2ggdGhlIG9wZXJhdGlvbnMKCWFyZSBtYWRlIGFic3RyYWN0KS4KCjIwMDQtMDQtMTkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogc3dpdGNoLW0uYWRiOiAoU2Nhbl9NYWtlX1N3aXRjaGVzKTogUHJvY2VzcyBuZXcgc3dpdGNoIC1lTAoKCSogcHJqLXBhcnMuYWRzIChQYXJzZSk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBQcm9jZXNzX0xhbmd1YWdlcywKCWRlZmF1bHRlZCB0byBBZGEuCgoJKiBwcmotcHJvYy5hZGIgKFByb2Nlc3MpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgUHJvY2Vzc19MYW5ndWFnZXMsCglkZWZhdWx0ZWQgdG8gQWRhLgoJQ2FsbCBDaGVjayB3aXRoIFByb2Nlc3NfTGFuZ3VhZ2VzLgoJKENoZWNrKTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyIFByb2Nlc3NfTGFuZ3VhZ2VzLiBDYWxsIFJlY3Vyc2l2ZV9DaGVjawoJd2l0aCBQcm9jZXNzX0xhbmd1YWdlcy4KCShSZWN1cnNpdmVfQ2hlY2spOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgUHJvY2Vzc19MYW5ndWFnZXMuIENhbGwKCU5tc2MuQWRhX0NoZWNrIG9yIE5tc2MuT3RoZXJfTGFuZ3VhZ2VzX0NoZWNrIGFjY29yZGluZyB0bwoJUHJvY2Vzc19MYW5ndWFnZXMuCgoJKiBwcmotcHJvYy5hZHMgKFByb2Nlc3MpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgUHJvY2Vzc19MYW5ndWFnZXMsCgoJKiBwcmotdXRpbC5hZHMsIHByai11dGlsLmFkYiAoRXhlY3V0YWJsZV9PZik6IE5ldyBCb29sZWFuCglwYXJhbWV0ZXIgQWRhX01haW4sIGRlZmF1bHRlZCB0byBUcnVlLgoJQ2hlY2sgZm9yIEFkYSBzcGVjaWZpYyBjaGFyYWN0ZXJpc3RpY3Mgb25seSB3aGVuIEFkYV9NYWluIGlzIFRydWUuCgoJKiBvcHQuYWRzOiAoRm9sbG93X0xpbmtzKTogTmV3IEJvb2xlYW4gZmxhZyBmb3IgZ25hdG1ha2UKCgkqIHByai5hZGI6IChQcm9qZWN0X0VtcHR5KTogQWRkIG5ldyBQcm9qZWN0X0RhdGEgY29tcG9uZW50cy4KCgkqIHByai5hZHM6IE5ldyB0eXBlcyBhbmQgdGFibGVzIGZvciBub24gQWRhIGxhbmd1YWdlcy4KCShQcm9qZWN0X0RhdGEpOiBOZXcgY29tcG9uZW50cyBMYW5ndWFnZXMsIEltcGxfU3VmZml4ZXMsCglGaXJzdF9PdGhlcl9Tb3VyY2UsIExhc3RfT3RoZXJfU291cmNlLCBJbXBvcnRlZF9EaXJlY3Rvcmllc19Td2l0Y2hlcywKCUluY2x1ZGVfUGF0aCwgSW5jbHVkZV9EYXRhX1NldC4KCgkqIHByai1lbnYuYWRzLCBwcmotZW52LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBwcmotbm1zYy5hZHMsIHByai1ubXNjLmFkYjogKE90aGVyX0xhbmd1YWdlc19DaGVjayk6IE5ldyBwcm9jZWR1cmUKCVB1dCBzdWJwcm9ncmFtcyBpbiBhbHBoYWJldGljYWwgb3JkZXIKCgkqIHByai1wYXJzLmFkYiAoUGFyc2UpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgUHJvY2Vzc19MYW5ndWFnZXMsCglkZWZhdWx0ZWQgdG8gQWRhOyBDYWxsIFByai5Qcm9jLlByb2Nlc3Mgd2l0aCBQcm9jZXNzX0xhbmd1YWdlcyBhbmQKCU9wdC5Gb2xsb3dfTGlua3MuCgoJKiBtbGliLXByai5hZGI6IEJhY2sgb3V0IG1vZGlmaWNhdGlvbiBpbiBsYXN0IHZlcnNpb24sIGFzIHRoZXkgYXJlCglpbmNvcnJlY3QuCgkoQnVpbGRfTGlicmFyeS5DaGVja19MaWJzKTogUmVtb3ZlIHVzZWxlc3MgcHJhZ21hIFdhcm5pbmdzIChPZmYpCgoJKiBtYWtlLmFkYjogKE1haW5zKTogTW92ZWQgdG8gcGFja2FnZSBNYWtldXRsCgkoTGlua2VyX09wdHMpOiBNb3ZlZCB0byBwYWNrYWdlIE1ha2V1dGwKCShJc19FeHRlcm5hbF9Bc3NpZ25tZW50KTogTW92ZWQgdG8gcGFja2FnZSBNYWtldXRsCgkoVGVzdF9JZl9SZWxhdGl2ZV9QYXRoKTogTW92ZWQgdG8gcGFja2FnZSBNYWtldXRsCgkoR25hdG1ha2UpOiBNb3ZlIHNvcnRpbmcgb2YgbGlua2VyIG9wdGlvbnMgdG8gZnVuY3Rpb24KCU1ha2V1dGwuTGlua2VyX09wdGlvbnNfU3dpdGNoZXMuCgoJKiBtYWtldXRsLmFkcywgbWFrZXV0bC5hZGI6IE5ldyBmaWxlcy4KCgkqIE1ha2VmaWxlLmluOiBBZGQgbWFrZXV0bC5vIHRvIHRoZSBvYmplY3QgZmlsZXMgZm9yIGduYXRtYWtlCgoJKiBtYWtldXNnLmFkYjogQWRkIGxpbmUgZm9yIG5ldyBzd2l0Y2ggLWVMLgoKCSogZ25hdGxzLmFkYiAoSW1hZ2UpOiBOZXcgZnVuY3Rpb24uCgkoT3V0cHV0X1VuaXQpOiBJZiBpbiB2ZXJib3NlIG1vZGUsIG91dHB1dCB0aGUgbGlzdCBvZiByZXN0cmljdGlvbnMKCXNwZWNpZmllZCBieSBwcmFnbWFzIFJlc3RyaWN0aW9ucy4KCgkqIDVibWwtdGd0LmFkYiwgNXZtbC10Z3QuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBEbyBub3QgdXNlCglUZXh0X0lPLgoKCSogYS1jYWxlbmQuYWRiIChTcGxpdCk6IFNoaWZ0IHRoZSBkYXRlIGJ5IG11bHRpcGxlIG9mIDU2IHllYXJzLCBpZgoJbmVlZGVkLCB0byBwdXQgaXQgaW4gdGhlIHJhbmdlIDE5NzAgKGluY2x1ZGVkKSAtIDIwMjYgKGV4Y2x1ZGVkKS4KCShUaW1lX09mKTogRG8gbm90IHNoaWZ0IFVuaXhfTWluX1llYXIgKDE5NzApLgoJU2hpZnQgdGhlIGRhdGUgYnkgbXVsdGlwbGUgb2YgNTYgeWVhcnMsIGlmIG5lZWRlZCwgdG8gcHV0IGl0IGluIHRoZQoJcmFuZ2UgMTk3MCAoaW5jbHVkZWQpIC0gMjAyNiAoZXhjbHVkZWQpLgoKCSogYWRhaW50LmgsIGFkYWludC5jIChfX2duYXRfc2V0X2V4ZWN1dGFibGUpOiBOZXcgZnVuY3Rpb24uCgoyMDA0LTA0LTE5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9TdWJwcm9ncmFtX0JvZHkpOiBUZW1wb3JhcmlseSBwdXNoCglhbmQgcG9wIEdDIGNvbnRleHQuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9Qcm9jZWR1cmVfQ2FsbCk6IEZpeCB0eXBvIGluIHNldHRpbmcgVFJFRV9UWVBFLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fTGFiZWwpOiBEb24ndCBzZXQgTEFCRUxfU1RNVF9GSVJTVF9JTl9FSC4KCSh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX1Byb2NlZHVyZV9DYWxsX1N0YXRlbWVudCk6IEJ1aWxkIGEgdHJlZS4KCSh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX0NvZGVfU3RhdGVtZW50KTogTGlrZXdpc2UuCgkoZ25hdF9leHBhbmRfc3RtdCwgY2FzZSBMQUJFTF9TVE1UKTogRG9uJ3QgbG9vayBhdAoJTEFCRUxfU1RNVF9GSVJTVF9JTl9FSC4KCShnbmF0X2V4cGFuZF9zdG10LCBjYXNlIEFTTV9TVE1UKTogTmV3IGNhc2UuCgoJKiB1dGlsczIuYyAoYnVpbGRfdW5hcnlfb3ApOiBQcm9wZXJseSBzZXQgVFJFRV9SRUFET05MWSBvZgoJVU5DT05TVFJBSU5FRF9BUlJBWV9SRUYuCgoJKiB1dGlscy5jIChwb3BsZXZlbCk6IFRlbXBvcmFyaWx5IHB1c2gvcG9wIEdDIGNvbnRleHQgYXJvdW5kIGlubGluZQoJZnVuY3Rpb24gZXhwYW5zaW9uLgoKCSogZGVjbC5jIChtYXliZV92YXJpYWJsZSk6IFByb3Blcmx5IHNldCBUUkVFX1JFQURPTkxZIG9mCglVTkNPTlNUUkFJTkVEX0FSUkFZX1JFRi4KCShtYWtlX3BhY2thYmxlX3R5cGUpOiBPbmx5IHJlZmVyZW5jZSBUWVBFX0lTX1BBRERJTkdfUCBmb3IgUkVDT1JEX1RZUEUuCgoJKiBhZGEtdHJlZS5kZWY6IChBU01fU1RNVCk6IE5ldy4KCgkqIGFkYS10cmVlLmg6IChMQUJFTF9TVE1UX0ZJUlNUX0lOX0VIKTogRGVsZXRlZC4KCShBU01fU1RNVF9URU1QTEFURSwgQVNNX1NUTVRfT1VUUFVULCBBU01fU1RNVF9PUklHX09VVCwKCUFTTV9TVE1UX0lOUFVUKTogTmV3LgoJKEFTTV9TVE1UX0NMT0JCRVIpOiBMaWtld2lzZS4KCjIwMDQtMDQtMTkgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGEtZXhjZXB0LmFkYiwgcy1wYXJpbnQuYWRzLCBzLXBhcmludC5hZGIsIHR5cGVzLmFkcywgdHlwZXMuaDogVXNlCglnZW5lcmFsIHJjaGVjayBtZWNoYW5pc20gdG8gcmFpc2UgUHJvZ3JhbV9FcnJvciBmb3IgRS40KDE4KSwgaW5zdGVhZAoJb2YgYSBjdXN0b20gcmFpc2VyIGluIFN5c3RlbS5QYXJ0aXRpb25fSW50ZXJmYWNlLgoJUGFydCBvZiBnZW5lcmFsIGNsZWFudXAgd29yayBiZWZvcmUgUG9seU9SQiBpbnRlZ3JhdGlvbi4KCgkqIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBuZXcgcnVudGltZSBsaWJyYXJ5IGVudGl0aWVzIGFuZCBuYW1lcwoJZm9yIFBvbHlPUkIgRFNBLgoKCSogc2VtX2Rpc3QuYWRzLCBzZW1fZGlzdC5hZGIgKEdldF9TdWJwcm9ncmFtX0lkKTogTW92ZSBmcm9tIHNlbV9kaXN0IHRvCglleHBfZGlzdC4KCShCdWlsZF9TdWJwcm9ncmFtX0lkKTogTmV3IHN1YnByb2dyYW0gcHJvdmlkZWQgYnkgZXhwX2Rpc3QKCUNvZGUgcmVvcmdhbmlzYXRpb24gaW4gcHJlcGFyYXRpb24gZm9yIFBvbHlPUkIgaW50ZWdyYXRpb24uCgoJKiBleHBfZGlzdC5hZHMsIGV4cF9kaXN0LmFkYiAoR2V0X1N1YnByb2dyYW1fSWQpOiBNb3ZlIGZyb20gc2VtX2Rpc3QgdG8KCWV4cF9kaXN0LgoJKEJ1aWxkX1N1YnByb2dyYW1fSWQpOiBOZXcgc3VicHJvZ3JhbSBwcm92aWRlZCBieSBleHBfZGlzdAoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfT25lX0NhbGwpOiBGaXggZXJyb3IgbWVzc2FnZSBmb3IgbWlzbWF0Y2ggaW4KCWFjdHVhbCBwYXJhbWV0ZXIgdHlwZXMgZm9yIGNhbGwgdG8gZGVyZWZlcmVuY2Ugb2YgYW4KCWFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGUuCgoJKiBydHNmaW5kLmFkczogQWRkIG5ldyBydW50aW1lIGxpYnJhcnkgZW50aXRpZXMgYW5kIG5hbWVzIGZvciBQb2x5T1JCCglEU0EuCgoJKiBnbmF0bGluay5hZGIgKFZhbHVlKTogUmVtb3ZlLiBVc2UgSW50ZXJmYWNlcy5DLlN0cmluZ3MuVmFsdWUKCWluc3RlYWQsIHdoaWNoIGhhcyB0aGUgc2FtZSBiZWhhdmlvdXIgaGVyZSBzaW5jZSB3ZSBuZXZlciBwYXNzIGl0IGEKCU5VTEwgcG9pbnRlci4KCgkqIGxpbmsuYyAocnVuX3BhdGhfb3B0aW9uLCBTb2xhcmlzIGNhc2UpOiBVc2UgLVdsLCBhcyBmb3Igb3RoZXIKCXBsYXRmb3Jtcy4KCgkqIE1ha2VmaWxlLmluOiBhZGp1c3Qgb2JqZWN0IGZpbGUgbGlzdHMgZm9yIGduYXRsaW5rIGFuZCBnbmF0bWFrZQoJdG8gYWNjb3VudCBmb3IgbmV3IGRlcGVuZGVuY3kgdXBvbiBJbnRlcmZhY2VzLkMuU3RyaW5ncyArIGxpbmsubwoJRm9yIHg4NiBGcmVlQlNELCB1c2UgODZudW1hdXguCgoJKiBtYWtlLmFkYiwgZ25hdGNtZC5hZGI6IExpbmtlcl9MaWJyYXJ5X1BhdGhfT3B0aW9uIGhhcyBiZWVuIG1vdmVkIHVwCglmcm9tIE1saWIuVGd0IHRvIE1saWIuCgoJKiBtbGliLmFkcywgbWxpYi5hZGIgKExpbmtlcl9MaWJyYXJ5X1BhdGhfT3B0aW9uKTogTmV3IHN1YnByb2dyYW0sIG5vdwoJdGFyZ2V0LWluZGVwZW5kZW50LgoKCSogbWxpYi10Z3QuYWRzLCBtbGliLXRndC5hZGIgKExpbmtlcl9MaWJyYXJ5X1BhdGhfT3B0aW9uKTogUmVtb3ZlCgl0YXJnZXQtc3BlY2lmaWMgdmVyc2lvbnMgb2YgdGhpcyBzdWJwcm9ncmFtLCBub3cgaW1wbGVtZW50ZWQgYXMgYQoJdGFyZ2V0LWluZGVwZW5kZW50IGZ1bmN0aW9uIGluIE1saWIuCgoJKiA1YW1sLXRndC5hZGIsIDVibWwtdGd0LmFkYiwgNWdtbC10Z3QuYWRiLCA1aG1sLXRndC5hZGIsIDVsbWwtdGd0LmFkYiwKCTVzbWwtdGd0LmFkYiwgNXZtbC10Z3QuYWRiLCA1em1sLXRndC5hZGIsIDV3bWwtdGd0LmFkYgoJKExpbmtlcl9MaWJyYXJ5X1BhdGhfT3B0aW9uKTogUmVtb3ZlIHRhcmdldC1zcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGlzCglzdWJwcm9ncmFtLCBub3cgaW1wbGVtZW50ZWQgYXMgYSB0YXJnZXQtaW5kZXBlbmRlbnQgZnVuY3Rpb24gaW4gTWxpYi4KCgkqIGF0cmVlLmFkYjogKEFsbG9jYXRlX0luaXRpYWxpemVfTm9kZSk6IE5ldyBzdWJwcm9ncmFtLgoJRmFjdG9ycyBvdXQgbm9kZSB0YWJsZSBzbG90cyBhbGxvY2F0aW9uLgoJKEZpeF9QYXJlbnRzKTogTmV3IHN1YnByb2dyYW0uCglFbmNhcHN1bGF0ZSB0aGUgcGF0dGVybiBvZiBmaXhpbmcgdXAgcGFyZW50IHBvaW50ZXJzIGZvciBzeW50YWN0aWMKCWNoaWxkcmVuIG9mIGEgcmV3cml0dGVuIG5vZGUuCgkoTmV3X0NvcHlfVHJlZSk6IFVzZSBOZXdfQ29weSB0byBjb3B5IG5vbi1lbnRpdHkgbm9kZXMuCgkoUmV3cml0ZSk6IFVzZSBOZXdfQ29weSB3aGVuIGNyZWF0aW5nIHNhdmVkIGNvcHkgb2Ygb3JpZ2luYWwgbm9kZS4KCShSZXBsYWNlKTogVXNlIENvcHlfTm9kZSB0byBjb3B5IG5vZGVzLgoKMjAwNC0wNC0xOSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogc3ByaW50LmFkYiAoU3ByaW50X05vZGVfQWN0dWFsKTogR2l2ZSBzdXBwb3J0IHRvIHRoZSBuZXcKCUFjY2Vzc19Ub19TdWJwcm9ncmFtIG5vZGUgYXZhaWxhYmxlIGluIEFjY2Vzc19EZWZpbml0aW9uIG5vZGVzLiBJbgoJYWRkaXRpb24sIGdpdmUgc3VwcG9ydCB0byB0aGUgQUktMjMxIG5vZGUgZmllbGRzOiBudWxsLWV4Y2x1c2lvbiwKCWFsbC1wcmVzZW50LCBjb25zdGFudC1wcmVzZW50LgoKCSogc2VtX3V0aWwuYWRzLCBzZW1fdXRpbC5hZGI6IChIYXNfRGVjbGFyYXRpb25zKTogTmV3IHN1YnByb2dyYW0KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiOgoJTmV3IGZpZWxkIEFjY2Vzc19Ub19TdWJwcm9ncmFtX0RlZmluaXRpb24gaW4gQWNjZXNzX0RlZmluaXRpb24gbm9kZXMKCgkqIHNlbV9jaDYuYWRiIChQcm9jZXNzX0Zvcm1hbHMpOiBNb3ZlIGhlcmUgdGhlIGNvZGUgdGhhdCBjcmVhdGVzIGFuZAoJZGVjb3JhdGVzIGludGVybmFsIHN1YnR5cGUgZGVjbGFyYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGUKCW51bGwtZXhjbHVkaW5nIGZvcm1hbC4gVGhpcyBjb2RlIHdhcyBwcmV2aW91c2x5IGluIFNldF9BY3R1YWxfU3VidHlwZXMuCglJbiBhZGRpdGlvbiwgY2Fycnkgb3V0IHNvbWUgY29kZSBjbGVhbnVwIG9uIHRoaXMgY29kZS4gSW4gY2FzZSBvZgoJYWNjZXNzIHRvIHByb3RlY3RlZCBzdWJwcm9ncmFtIGNhbGwKCVJlcGxhY2VfQW5vbnltb3VzX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfU3VicHJvZ3JhbS4KCShTZXRfQWN0dWFsX1N1YnR5cGVzKTogQ29kZSBjbGVhbnVwLgoKCSogc2VtX2NoOC5hZGIgKEFuYWx5emVfT2JqZWN0X1JlbmFtaW5nKTogUmVtb3ZlIHVuLW5lY2Vzc2FyeSBjYWxsIHRvCglGaW5kX1R5cGUgaW4gY2FzZSBvZiBhbm9ueW1vdXMgYWNjZXNzIHJlbmFtaW5ncy4gQWRkIHdhcm5pbmcgaW4gY2FzZSBvZgoJbnVsbC1leGNsdWRpbmcgYXR0cmlidXRlIHVzZWQgaW4gYW5vbnltb3VzIGFjY2VzcyByZW5hbWluZy4KCgkqIHNlbV9jaDMuYWRzIChSZXBsYWNlX0Fub255bW91c19BY2Nlc3NfVG9fUHJvdGVjdGVkX1N1YnByb2dyYW0pOiBOZXcKCXN1YnByb2dyYW0KCgkqIHNlbV9jaDMuYWRiIChSZXBsYWNlX0Fub255bW91c19BY2Nlc3NfVG9fUHJvdGVjdGVkX1N1YnByb2dyYW0pOiBOZXcKCXN1YnByb2dyYW0uCgkoQWNjZXNzX0RlZmluaXRpb24pOiBJbiBjYXNlIG9mIGFub255bW91cyBhY2Nlc3MgdG8gc3VicHJvZ3JhbXMgY2FsbAoJdGhlIGNvcnJlc3BvbmRpbmcgc2VtYW50aWMgcm91dGluZSB0byBkZWNvcmF0ZSB0aGUgbm9kZS4KCShBY2Nlc3NfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IEFkZGl0aW9uIG9mIHNvbWUgY29tbWVudHMgaW5kaWNhdGluZwoJc29tZSBjb2RlIHRoYXQgcHJvYmFibHkgc2hvdWxkIGJlIGFkZGVkIGhlcmUuIERldGVjdGVkIGJ5IGNvbXBhcmlzb24KCXdpdGggdGhlIGFjY2Vzc19kZWZpbml0aW9uIHN1YnByb2dyYW0uCgkoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24pOiBJbiBjYXNlIG9mIGFjY2VzcyB0byBwcm90ZWN0ZWQKCXN1YnByb2dyYW0gY2FsbCBSZXBsYWNlX0Fub255bW91c19BY2Nlc3NfVG9fUHJvdGVjdGVkLgoJKEFycmF5X1R5cGVfRGVjbGFyYXRpb24pOiBJbiBjYXNlIG9mIGFjY2VzcyB0byBwcm90ZWN0ZWQgc3VicHJvZ3JhbSBjYWxsCglSZXBsYWNlX0Fub255bW91c19BY2Nlc3NfVG9fUHJvdGVjdGVkX1N1YnByb2dyYW0uCgkoUHJvY2Vzc19EaXNjcmltaW5hbnRzKTogSW4gY2FzZSBvZiBhY2Nlc3MgdG8gcHJvdGVjdGVkIHN1YnByb2dyYW0gY2FsbAoJUmVwbGFjZV9Bbm9ueW1vdXNfQWNjZXNzX1RvX1Byb3RlY3RlZF9TdWJwcm9ncmFtLgoKCSogcGFyLmFkYiAoUF9BY2Nlc3NfRGVmaW5pdGlvbik6IE5ldyBmb3JtYWwgdGhhdCBpbmRpY2F0ZXMgaWYgdGhlCgludWxsLWV4Y2x1c2lvbiBwYXJ0IHdhcyBwcmVzZW50LgoJKFBfQWNjZXNzX1R5cGVfRGVmaW5pdGlvbik6IE5ldyBmb3JtYWwgdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIGNhbGxlciBoYXMKCWFscmVhZHkgcGFyc2VkIHRoZSBudWxsLWV4Y2x1ZGluZyBwYXJ0LgoKCSogcGFyLWNoMy5hZGIgKFBfU3VidHlwZV9EZWNsYXJhdGlvbik6IENvZGUgY2xlYW51cC4KCShQX0lkZW50aWZpZXJfRGVjbGFyYXRpb25zKTogQ29kZSBjbGVhbnVwIGFuZCBnaXZlIHN1cHBvcnQgdG8gcmVuYW1pbmdzCglvZiBhbm9ueW1vdXMgYWNjZXNzIHRvIHN1YnByb2dyYW0gdHlwZXMuCgkoUF9EZXJpdmVkX1R5cGVfRGVmX09yX1ByaXZhdGVfRXh0X0RlY2wpOiBDb2RlIGNsZWFudXAuCgkoUF9BcnJheV9UeXBlX0RlZmluaXRpb24pOiBHaXZlIHN1cHBvcnQgdG8gQUktMjU0LgoJKFBfQ29tcG9uZW50X0l0ZW1zKTogR2l2ZSBzdXBwb3J0IHRvIEFJLTI1NC4KCShQX0FjY2Vzc19EZWZpbml0aW9uKTogTmV3IGZvcm1hbCB0aGF0IGluZGljYXRlcyBpZiB0aGUgaGVhZGVyIHdhcwoJYWxyZWFkeSBwYXJzZWQgYnkgdGhlIGNhbGxlci4KCShQX0FjY2Vzc19UeXBlX0RlZmluaXRpb24pOiBOZXcgZm9ybWFsIHRoYXQgaW5kaWNhdGVzIGlmIHRoZSBjYWxsZXIgaGFzCglhbHJlYWR5IHBhcnNlZCB0aGUgbnVsbC1leGNsdWRpbmcgcGFydC4KCgkqIHBhci1jaDYuYWRiIChQX0Zvcm1hbF9QYXJ0KTogQWRkIHRoZSBudWxsLWV4Y2x1ZGluZyBwYXJhbWV0ZXIgdG8gdGhlCgljYWxsIHRvIFBfQWNjZXNzX0RlZmluaXRpb24uCgoyMDA0LTA0LTE5ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogY2hlY2tzLmFkYiAoQXBwbHlfRmxvYXRfQ29udmVyc2lvbl9DaGVjayk6IE5ldyBwcm9jZWR1cmUgdG8gaW1wbGVtZW50Cgl0aGUgZGVsaWNhdGUgc2VtYW50aWNzIG9mIGZsb2F0aW5nLXBvaW50IHRvIGludGVnZXIgY29udmVyc2lvbi4KCShBcHBseV9UeXBlX0NvbnZlcnNpb25fQ2hlY2tzKTogVXNlIEFwcGx5X0Zsb2F0X0NvbnZlcnNpb25fQ2hlY2suCgoJKiBldmFsX2ZhdC5hZGIgKE1hY2hpbmVfTWFudGlzc2EpOiBNb3ZlZCB0byBzcGVjLgoJKE1hY2hpbmVfUmFkaXgpOiBOZXcgZnVuY3Rpb24uCgoJKiBldmFsX2ZhdC5hZHMgKE1hY2hpbmVfTWFudGlzc2EpOiBNb3ZlZCBmcm9tIGJvZHkgZm9yIHVzZSBpbgoJY29udmVyc2lvbiBjaGVja3MuCgkoTWFjaGluZV9SYWRpeCk6IE5ldyBmdW5jdGlvbiBhbHNvIGZvciB1c2UgaW4gY29udmVyc2lvbiBjaGVja3MuCgoyMDA0LTA0LTE5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBwYXItcHJhZy5hZGIgKFNvdXJjZV9GaWxlX05hbWVfUHJvamVjdCk6IEZpeCB0eXBvIGluIGVycm9yIG1lc3NhZ2UuCgoJKiBleHBfY2g5LmFkYiAoRXhwYW5kX0FjY2Vzc19Qcm90ZWN0ZWRfU3VicHJvZ3JhbV9UeXBlKTogQ2FsbCBhbmFseXplCgl0byBkZWNvcmF0ZSB0aGUgYWNjZXNzLXRvLXByb3RlY3RlZCBzdWJwcm9ncmFtIGFuZCB0aGUgZXF1aXZhbGVudCB0eXBlLgoKCSogY2hlY2tzLmFkYiAoTnVsbF9FeGNsdXNpb25fU3RhdGljX0NoZWNrcyk6IENvZGUgY2xlYW51cC4gR2l2ZSBzdXBwb3J0Cgl0byBhbm9ueW1vdXMgYWNjZXNzIHRvIHN1YnByb2dyYW0gdHlwZXMuCgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fSW4pOiBQcmVzZXJ2ZSBTdGF0aWMgZmxhZyBiZWZvcmUKCWNvbnN0YW50LWZvbGRpbmcsIGZvciBsZWdhbGl0eSBjaGVja3MgaW4gY29udGV4dHMgdGhhdCByZXF1aXJlIGFuIFJNCglzdGF0aWMgZXhwcmVzc2lvbi4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfTl9GdW5jdGlvbl9DYWxsKTogSWYgY2FsbCBtYXkgZ2VuZXJhdGUgbGFyZ2UKCXRlbXBvcmFyeSBidXQgc3RhY2sgY2hlY2tpbmcgaXMgbm90IGVuYWJsZWQsIGluY3JlbWVudCBzZXJpYWwgbnVtYmVyCgl0byBzbyB0aGF0IHN5bWJvbCBnZW5lcmF0aW9uIGlzIGNvbnNpc3RlbnQgd2l0aCBhbmQgd2l0aG91dCBzdGFjawoJY2hlY2tpbmcuCgoJKiBleHBfdXRpbC5hZHMsIGV4cF91dGlsLmFkYiAoTWF5X0dlbmVyYXRlX0xhcmdlX1RlbXApOiBQcmVkaWNhdGUgaXMKCWluZGVwZW5kZW50IG9uIHdoZXRoZXIgc3RhY2sgY2hlY2tpbmcgaXMgZW5hYmxlZCwgY2FsbGVyIG11c3QgY2hlY2sKCXRoZSBjb3JyZXNwb25kaW5nIGZsYWcuCgoJKiBzZW1fY2gzLmFkYiAoQ29uc3RyYWluX0luZGV4KTogSW5kZXggYm91bmRzIGdpdmVuIGJ5IGF0dHJpYnV0ZXMgbmVlZAoJcmFuZ2UgY2hlY2tzLgoJKEJ1aWxkX0Rlcml2ZWRfQ29uY3VycmVudF9UeXBlKTogSW5oZXJpdCBJc19Db25zdHJhaW5lZCBmbGFnIGZyb20KCXBhcmVudCBpZiBpdCBoYXMgZGlzY3JpbWluYW50cy4KCShCdWlsZF9EZXJpdmVkX1ByaXZhdGVfVHlwZSk6IENvbnN0cnVjdGVkIGZ1bGwgdmlldyBkb2VzCglub3QgY29tZSBmcm9tIHNvdXJjZS4KCShQcm9jZXNzX0Rpc2NyaW1pbmFudHMpOiBEZWZhdWx0IGRpc2NyaW1pbmFudHMgb24gYSB0YWdnZWQgdHlwZSBhcmUKCWxlZ2FsIGlmIHRoaXMgaXMgdGhlIGludGVybmFsIGNvbXBsZXRpb24gb2YgYSBwcml2YXRlIHVudGFnZ2VkCglkZXJpdmF0aW9uLgoKCSogc2VtX2NoNi5hZGIgKFNldF9BY3R1YWxfU3VidHlwZXMpOiBUaGUgZ2VuZXJhdGVkIGRlY2xhcmF0aW9uIG5lZWRzCglubyBjb25zdHJhaW50IGNoZWNrcywgYmVjYXVzZSBpdCBjb3JyZXNwb25kcyB0byBhbiBleGlzdGluZyBvYmplY3QuCgoJKiBzZW1fcHJhZy5hZGIgKFByb2Nlc3NfQ29udmVudGlvbik6IFByYWdtYSBhcHBsaWVzCglvbmx5IHRvIHN1YnByb2dyYW1zIGluIHRoZSBzYW1lIGRlY2xhcmF0aXZlIHBhcnQsIGkuZS4gdGhlIHNhbWUgdW5pdCwKCW5vdCB0aGUgc2FtZSBzY29wZS4KCgkqIHNlbV9yZXMuYWRiIChWYWxpZF9Db252ZXJzaW9uKTogSW4gYW4gaW5zdGFuY2Ugb3IgaW5saW5lZCBib2R5LAoJaWdub3JlIHR5cGUgbWlzbWF0Y2ggb24gYSBudW1lcmljIGNvbnZlcnNpb24gaWYgZXhwcmVzc2lvbiBjb21lcyBmcm9tCglleHBhbnNpb24uCgoyMDA0LTA0LTE5ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX2VsaW0uYWRiIChQcm9jZXNzX0VsaW1pbmF0ZV9QcmFnbWEpOiBSZW1vdmUgdGhlIHByb2Nlc3NpbmcgZm9yCglIb21vbnltX051bWJlciBwYXJhbWV0ZXIsIGFkZCBwcm9jZXNzaW5nIGZvciBTb3VyY2VfTG9jYXRpb24gcGFyYW1ldGVyCgljb3JyZXNwb25kaW5nLgoJKENoZWNrX0VsaW1pbmF0ZWQpOiBSZW1vdmUgdGhlIGNoZWNrIGZvciBob21vbnltIG51bWJlcnMsIGFkZCB0aGUgY2hlY2sKCWZvciBzb3VyY2UgbG9jYXRpb24gdHJhY2VzLgoKCSogc2VtX2VsaW0uYWRzIChQcm9jZXNzX0VsaW1pbmF0ZV9QcmFnbWEpOiBSZXBsYWNlIEFyZ19Ib21vbnltX051bWJlcgoJd2l0aCBBcmdfU291cmNlX0xvY2F0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNoYW5nZXMgaW4gdGhlIGZvcm1hdCBvZgoJdGhlIHByYWdtYS4KCgkqIHNlbV9wcmFnLmFkYjogKEFuYWx5emVfUHJhZ21hKTogQ2hhbmdlcyBpbiB0aGUgcHJvY2Vzc2luZyBvZgoJRWxpbWluYXRlIHByYWdtYSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjaGFuZ2VzIGluIHRoZSBmb3JtYXQgb2YgdGhlCglwcmFnbWE6IEhvbW9ueW1fTnVtYmVyIGlzIHJlcGxhY2VkIHdpdGggU291cmNlX0xvY2F0aW9uLCB0d28gd2F5cyBvZgoJZGlzdGluZ3Vpc2hpbmcgaG9tb255bXMgYXJlIG11dGlhbGx5LWV4Y2x1c2l2ZS4KCjIwMDQtMDQtMTkgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZ2V0X3RhcmcuYWRzIChHZXRfTm9fRG9sbGFyX0luX0xhYmVsKTogUmVtb3ZlLgoKCSogZXhwX2RidWcuYWRiIChPdXRwdXRfSG9tb255bV9OdW1iZXJzX1N1ZmZpeCk6IFJlbW92ZSB1c2Ugb2YKCU5vX0RvbGxhcl9Jbl9MYWJlbCwgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgYXMgaXQgaXMgYWx3YXlzIFRydWUuCgkoU3RyaXBfU3VmZml4ZXMpOiBMaWtld2lzZS4KCjIwMDQtMDQtMTkgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIHMtc3RhbGliLmFkcyAodHlwZSBFeGNlcHRpb25fQ29kZSk6IFVzZSBJbnRlZ2VyJ1NpemUgZm9yIGV4cG9uZW50IG9mCgltb2R1bHVzIGZvciBjb21wYXRpYmlsaXR5IHdpdGggc2l6ZSBjbGF1c2Ugb24gdGFyZ2V0cyB3aXRoIDE2LWJpdAoJSW50ZWdlci4KCgkqIGxheW91dC5hZGIgKERpc2NyaW1pZnkpOiBJbiB0aGUgY2FzZSBvZiBwcml2YXRlIHR5cGVzLCBzZXQgVnR5cCB0bwoJZnVsbCB0eXBlIHRvIGZpeCB0eXBlIG1pc21hdGNoZXMgb24gY2FsbHMgdG8gc2l6ZSBmdW5jdGlvbnMgZm9yCglkaXNjcmltaW5hbnQtZGVwZW5kZW50IGFycmF5IGNvbXBvbmVudHMuCgoyMDA0LTA0LTE5ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluIChnbmF0bGliLXpjeCk6IE5ldyB0YXJnZXQsIGZvciBidWlsZGluZyBhIFpDWCBydW4tdGltZQoJbGliLgoKMjAwNC0wNC0xOSAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogbWRsbC11dGwuYWRiIChMb2NhdGUpOiBOZXcgdmVyc2lvbiBpcyBpZGVtcG90ZW50LgoKMjAwNC0wNC0xNyAgTGF1cmVudCBHdWVyYnkgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCglQUiBhZGEvMTQ5ODggKHBhcnRpYWwpCgkqIGltcHVuaXQuYWRiOiBGaXggdHlwby4KCjIwMDQtMDQtMTQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluOiBSZW1vdmUgb2Jzb2xldGUgcnRzLW5vbmUsIHJ0cy1jZXJ0LCBpbnN0YWxsLXJ0cy1ub25lLAoJYW5kIGluc3RhbGwtcnRzLWNlcnQgdGFyZ2V0cy4gIFJlbW92ZSBhbGwgZ25hdGxpYiBhbmQgZ25hdHRvb2xzCgl0YXJnZXRzIGFuZCBhbGwgb3RoZXIgcnRzLSogdGFyZ2V0cyAobW92ZWQgdG8gbGliYWRhKS4gIFJlbW92ZSAobm93KQoJdW51c2VkIE1ha2UgdmFyaWFibGVzIENITU9ELCBDSE1PRF9BWF9GTEFHUywgc2hleHQsIFRIUkVBRF9LSU5ELAoJVFJBQ0UsIEdOQVRMSUJGTEFHUywgR05BVExJQkNGTEFHUy4KCjIwMDQtMDQtMDggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSk6IFNob3J0Y3V0IHJldHVybmluZyBlcnJvcl9tYXJrX25vZGUgZm9yCglzdGF0ZW1lbnRzIGluIGFubm90YXRlX29ubHlfbW9kZS4KCSh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX0xhYmVsLCBjYXNlIE5fUmV0dXJuX1N0YXRlbWVudCwKCU5fR290b19TdGF0ZW1lbnQpOiBNYWtlIHN0YXRlbWVudCB0cmVlIGluc3RlYWQgb2YgZ2VuZXJhdGluZyBjb2RlLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBObyBsb25nZXIgY2hlY2sKCXR5cGVfYW5ub3RhdGVfb25seS4KCShnbmF0X2V4cGFuZF9zdG10LCBjYXNlIEdPVE9fU1RNVCwgY2FzZSBMQUJFTF9TVE1ULCBjYXNlCglSRVRVUk5fU1RNVCk6IE5ldy4KCShmaXJzdF9ub25kZWxldGVkX2luc24sIGJ1aWxkX2Jsb2NrX3N0bXQsIG1ha2VfZXhwcl9zdG10X2Zyb21fcnRsKToKCU5ldyBmY25zLgoJKGduYXRfdG9fZ251KTogQ29sbGVjdCBhbnkgUlRMIGdlbmVyYXRlZCBhbmQgZGVhbCB3aXRoIGl0LgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fQW5kX1RoZW4pOiBSZWZpbmUgd2hlbiBoYXZlIG5vbi1udWxsIFJUTF9FWFBSLgoJKHRyZWVfdHJhbnNmb3JtIGNhc2UgTl9JZl9TdGF0ZW1lbnQpOiBSZXdyaXRlIHRvIG1ha2UgSUZfU1RNVC4KCShnbmF0X2V4cGFuZF9zdG10LCBjYXNlIEJMT0NLX1NUTVQsIElGX1NUTVQpOiBOZXcgY2FzZXMuCgoJKiBhZGEtdHJlZS5kZWYgKEdPVE9fU1RNVCwgTEFCRUxfU1RNVCwgUkVUVVJOX1NUTVQpOiBOZXcgdHJlZSBub2Rlcy4KCgkqIGFkYS10cmVlLmRlZiAoRVhQUl9TVE1UKTogRml4IHR5cG8gaW4gbmFtZS4KCShCTE9DS19TVE1ULCBJRl9TVE1UKTogTmV3IG5vZGVzLgoKCSogYWRhLXRyZWUuaCAoR09UT19TVE1UX0xBQkVMLCBMQUJFTF9TVE1UX0xBQkVMLAoJTEFCRUxfU1RNVF9GSVJTVF9JTl9FSCk6IE5ldyBtYWNyb3MuCgkoUkVUVVJOX1NUTVRfRVhQUik6IExpa2V3aXNlLgoKCSogYWRhLXRyZWUuaDogKEJMT0NLX1NUTVRfTElTVCwgSUZfU1RNVF9DT05ELCBJRl9TVE1UX1RSVUUsCglJRl9TVE1UX0VMU0VJRiwgSUZfU1RNVF9FTFNFKTogTmV3IG1hY3Jvcy4KCjIwMDQtMDQtMDggIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGF0cmVlLmFkczogQ29ycmVjdCBkb2N1bWVudGF0aW9uIG9uIGV4dGVuZGVkIG5vZGVzLgoKCSogbGluay5jOiBTZXQgcnVuX3BhdGhfb3B0aW9uIGZvciBGcmVlQlNELgoKMjAwNC0wNC0wOCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtbGliLXByai5hZGIgKEJ1aWxkX0xpYnJhcnkuQ2hlY2tfTGlicyk6IE9uIE9wZW5WTVMsIGlmIGRlYy5hbGkgaXMKCW9uZSBvZiB0aGUgQUxJIGZpbGUsIGRvIG5vdCBsaW5rIHdpdGggREVDIGxpYi4KCgkqIHBhci5hZGIgUmVtb3ZlIHRoZSBsYXN0IHR3byBjaGFyYWN0ZXJzICgiJXMiIG9yICIlYiIpIHdoZW4gY2hlY2tpbmcKCWlmIGEgbGFuZ3VhZ2UgZGVmaW5lZCB1bml0IG1heSBiZSByZWNvbXBpbGVkLgoKMjAwNC0wNC0wOCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKFJlbW92ZV9BYnN0cmFjdF9PcGVyYXRpb25zKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4KCXJlbW92YWwgb2YgYWJzdHJhY3Qgb3BlcmF0aW9uIGxlYXZlcyBubyBwb3NzaWJsZSBpbnRlcnByZXRhdGlvbiBmb3IKCWV4cHJlc3Npb24uCgoJKiBzZW1fZXZhbC5hZGIgKEV2YWxfUXVhbGlmaWVkX0V4cHJlc3Npb24pOiBVc2UKCVNldF9SYWlzZXNfQ29uc3RyYWludF9FcnJvciBvbiBub2RlIHdoZW4gbmVlZGVkLCBzbyB0aGF0IGl0IGRvZXMgbm90CglnZXQgb3B0aW1pemVkIGF3YXkgYnkgc3Vic2VxdWVudCBvcHRpbWl6YXRpb25zLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfSW50cmluc2ljX09wZXJhdG9yKTogU2F2ZSBpbnRlcnByZXRhdGlvbnMgb2YKCW9wZXJhbmRzIGV2ZW4gd2hlbiB0aGV5IGFyZSBub3Qgd3JhcHBlZCBpbiBhIHR5cGUgY29udmVyc2lvbi4KCjIwMDQtMDQtMDggIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9wcmFnLmFkYiAoU2V0X0V4cG9ydGVkKTogV2FybiBhYm91dCBtYWtpbmcgc3RhdGljIGFzIHJlc3VsdCBvZgoJZXhwb3J0IG9ubHkgd2hlbiB0aGUgZXhwb3J0IGlzIGNvbWluZyBmcm9tIHNvdXJjZS4gVGhpcyBtYXkgYmUgbm90CgliZSB0cnVlIGUuZy4gb24gVk1TIHdoZXJlIHdlIGV4cGFuZCBleHBvcnQgcHJhZ21hcyBmb3IgZXhjZXB0aW9uIGNvZGVzCgl0b2dldGhlciB3aXRoIGltcG9ydGVkIG9yIGV4cG9ydGVkIGV4Y2VwdGlvbnMsIGFuZCB3ZSBkb24ndCB3YW50IHRoZQoJdXNlciB0byBiZSB3YXJuZWQgYWJvdXQgc29tZXRoaW5nIGhlIGRpZG4ndCB3cml0ZS4KCjIwMDQtMDQtMDggIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV91dGlsLmFkYiAoTm90ZV9Qb3NzaWJsZV9Nb2RpZmljYXRpb24pOiBSZW9yZ2FuaXplIHRvIHJlbW92ZSBjb2RlCglkdXBsaWNhdGlvbiBiZXR3ZWVuIG5vcm1hbCBlbnRpdGllcyBhbmQgdGhvc2UgZGVjbGFyZWQgYXMgcmVuYW1pbmdzLgoJTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgoJKiBzLWZpbGVpby5hZHMgKEZvcm0pOiBSZW1vdmUgcHJhZ21hIElubGluZSwgYXMgd2UgY2Fubm90IGN1cnJlbnRseQoJaW5saW5lIGZ1bmN0aW9ucyByZXR1cm5pbmcgYW4gdW5jb25zdHJhaW5lZCByZXN1bHQuCgoyMDA0LTA0LTA4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFjdC1ldXJvcGUuZnI+CgoJKiB1dGlscy5jICh0eXBlX2Zvcl9tb2RlKTogSGFuZGxlIEJMS21vZGUgYW5kIFZPSURtb2RlIHByb3Blcmx5LCB0bwoJY29uZm9ybSB0byB3aGF0IG90aGVyIGZyb250LWVuZHMgZG8uCgoyMDA0LTA0LTA4ICBEb3VnIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogNXZtbC10Z3QuYWRiOiBVc2UgR2FzIGluc3RlYWQgb2YgVk1TIE1hY3JvIHRvIGJ1aWxkIGF1dG8gaW5pdCBzaGFyZWQKCWxpYnJhcmllcy4KCjIwMDQtMDQtMDYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGFkYWludC5jIChESVJfU0VQQVJBVE9SKTogUHJvcGVybHkgc2V0IERJUl9TRVBBUkFUT1Igb24gV2luMzIuCgoJKiBvc2ludC5hZGIgKFByb2dyYW1fTmFtZSk6IERvIG5vdCBsb29rIHBhc3QgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yLgoKMjAwNC0wNC0wNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogYXRyZWUuYWRiOiBVcGRhdGUgY29tbWVudCAoUmV3cml0ZV9TdWJzdGl0dXRlX05vZGUgbm8gbG9uZ2VyIGV4aXN0cykuCgoJKiBleHBfY2g2LmFkYiAoUmV3cml0ZV9GdW5jdGlvbl9DYWxsKTogQ2xhcmlmeSBkb2N1bWVudGF0aW9uIG9mCglyZXF1aXJlbWVudCBmb3IgcHJlc2VydmluZyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGFzc2lnbm1lbnQgbm9kZS4KCgkqIHNpbmZvLmFkczogVXBkYXRlIGNvbW1lbnQgKE9yaWdpbmFsX1RyZWUgLT4gT3JpZ2luYWxfTm9kZSkuCgoyMDA0LTA0LTA2ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKF9fZ25hdF9pbml0aWFsaXplIFtWeHdvcmtzXSk6IEVuYWJsZSByZWZlcmVuY2VzIHRvIHRoZSBjcnRzdHVmZiBiaXRzCgl3aGVuIHN1cHBvcnRlZC4KCjIwMDQtMDQtMDYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDQuYWRiIChSZW1vdmVfQWJzdHJhY3RfT3BlcmF0aW9ucyk6IEV4dGVuZCBwcmV2aW91cyBjaGFuZ2VzIHRvCglvcGVyYXRvciBjYWxscyBpbiBmdW5jdGlvbmFsIG5vdGF0aW9uLCBhbmQgYXBwbHkKCVVuaXZlcnNhbF9JbnRlcnByZXRhdGlvbiB0byBvcGVyYW5kcywgbm90IHRvIHRoZWlyIHR5cGUuCgoyMDA0LTA0LTA2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIDV3ZGlydmFsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTA0LTA2ICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogZ25hdF9ybS50ZXhpOiBJbXByb3ZlIGEgcmVmZXJlbmNlIHRvIHRoZSBHQ0MgbWFudWFsCgoyMDA0LTA0LTA1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGFkYWludC5oLCBhZGFpbnQuYzogQWRkIGZ1bmN0aW9uIF9fZ25hdF9uYW1lZF9maWxlX2xlbmd0aAoKCSogaW1wdW5pdC5hZGI6IEFkZCBBZGEuRGlyZWN0b3JpZXMgdG8gdGhlIGxpc3QKCgkqIE1ha2VmaWxlLmluOiBBZGQgVk1TIGFuZCBXaW5kb3dzIHZlcnNpb25zIG9mCglBZGEuRGlyZWN0b3JpZXMuVmFsaWRpdHkgcGFja2FnZSBib2R5LgoKCSogTWFrZWZpbGUucnRsOiBBZGQgYS1kaXJlY3QgYW5kIGEtZGlydmFsCgoJKiBtbGliLXRndC5hZHM6IE1pbm9yIGNvbW1lbnQgdXBkYXRlLgoKCSogYS1kaXJ2YWwuYWRzLCBhLWRpcnZhbC5hZGIsIDV2ZGlydmFsLmFkYiwgNXdkaXJ2YWwuYWRiLAoJYS1kaXJlY3QuYWRzLCBhLWRpcmVjdC5hZGI6IE5ldyBmaWxlcy4KCjIwMDQtMDQtMDUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCVBSIGFkYS8xMzYyMAoJKiBtYWtlLmFkYiAoU2Nhbl9NYWtlX0FyZyk6IFBhc3MgYW55IC1meHh4IHN3aXRjaGVzIHRvIGduYXRsaW5rLCBub3QKCWp1c3QgdG8gdGhlIGNvbXBpbGVyLgoKMjAwNC0wNC0wNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhLWV4Y2VwdC5hZGIgKEV4Y2VwdGlvbl9OYW1lX1NpbXBsZSk6IE1ha2Ugc3VyZSBsb3dlciBib3VuZCBvZgoJcmV0dXJuZWQgc3RyaW5nIGlzIDEuCgoJKiBhbGktdXRpbC5hZGI6IFVzZSBwcm9wZXIgc3BlY2lmaWMgZm9ybSBmb3IgV2FybmluZ3MgKE9mZiwgZW50aXR5KQoKCSogZXZhbF9mYXQuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGctY3VyZXhjLmFkczogRG9jdW1lbnQgdGhhdCBsb3dlciBib3VuZCBvZiByZXR1cm5lZCBzdHJpbmcgdmFsdWVzCglpcyBhbHdheXMgb25lLgoKCSogZ25hdGxpbmsuYWRiOiBBZGQgPz8/IGNvbW1lbnQgZm9yIHByZXZpb3VzIGNoYW5nZQoJKG5lZWQgdG8gZG9jdW1lbnQgd2h5IHRoaXMgaXMgVk1TIHNwZWNpZmljKQoKCSogcy1zdG9lbGUuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHRidWlsZC5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZyB0aHJvdWdob3V0IChuZXcgZnVuY3Rpb24gc3BlY3MpCgoJKiBwYXItY2gxMC5hZGIgKFBfQ29udGV4dF9DbGF1c2UpOiBIYW5kbGUgY29tbWEgaW5zdGVhZCBvZiBzZW1pY29sb24KCWFmdGVyIFdJVEguCgoJKiBzY25nLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTA0LTA1ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogZXZhbF9mYXQuYWRiIChNYWNoaW5lKTogUmVtb3ZlIHVubmVjZXNzYXJ5IHN1cHByZXNzaW9uIG9mIHdhcm5pbmcuCgkoTGVhZGluZ19QYXJ0KTogU3RpbGwgcGVyZm9ybSB0cnVuY2F0aW9uIHRvIG1hY2hpbmUgbnVtYmVyIGlmIHRoZQoJc3BlY2lmaWVkIHJhZGl4X2RpZ2l0cyBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIG1hY2hpbmVfbWFudGlzc2EuCgoyMDA0LTA0LTA1ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBwYXItY2gzLmFkYjogQ29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBwcmV2aW91cyBjaGFuZ2UKCUNvcnJlY3Qgd3Jvbmcgc3ludGF4IGRvY3VtZW50YXRpb24gb2YgdGhlIE9CSkVDVF9ERUNMQVJBVElPTiBydWxlCgkoYWxpYXNlZCBtdXN0IGFwcGVhciBiZWZvcmUgY29uc3RhbnQpLgoKCSogcGFyLWNoNC5hZGI6IENvbXBsZXRlIGRvY3VtZW50YXRpb24gb2YgcHJldmlvdXMgY2hhbmdlLgoKCSogcGFyLWNoNi5hZGI6IENvbXBsZXRlIGRvY3VtZW50YXRpb24gb2YgcHJldmlvdXMgY2hhbmdlLgoKCSogc2luZm8uYWRzOiBGaXggdHlwbyBpbiBjb21tbWVudC4KCjIwMDQtMDQtMDUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiIChJbmhlcml0X0NvbXBvbmVudHMpOiBJZiBkZXJpdmVkIHR5cGUgaXMgcHJpdmF0ZSBhbmQgaGFzCglzdG9yZWQgZGlzY3JpbWluYW50cywgdXNlIGl0cyBkaXNjcmltaW5hbnRzIHRvIGNvbnN0cmFpbiBwYXJlbnQgdHlwZSwKCWFzIGlzIGRvbmUgZm9yIG5vbi1wcml2YXRlIGRlcml2ZWQgcmVjb3JkIHR5cGVzLgoKCSogc2VtX2NoNC5hZGIgKFJlbW92ZV9BYnN0cmFjdF9PcGVyYXRpb25zKTogTmV3IHN1YnByb2dyYW0gdG8gaW1wbGVtZW50CglBZGEgMjAwNSBBSS0zMTA6IGFuIGFic3RyYWN0IG5vbi1kaXNwYXRjaGluZyBvcGVyYXRpb24gaXMgbm90IGEKCWNhbmRpZGF0ZSBpbnRlcnByZXRhdGlvbiBpbiBhbiBvdmVybG9hZGVkIGNhbGwuCgoJKiB0YnVpbGQuYWRiIChVbmNoZWNrZWRfQ29udmVydF9Ubyk6IFByZXNlcnZlIGNvbnZlcnNpb24gbm9kZSBpZgoJZXhwcmVzc2lvbiBpcyBOdWxsIGFuZCB0YXJnZXQgdHlwZSBpcyBub3QgYW4gYWNjZXNzIHR5cGUgKGUuZy4gYQoJbm9uLXByaXZhdGUgYWRkcmVzcyB0eXBlKS4KCjIwMDQtMDQtMDUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9jaDYuYWRiIChSZXdyaXRlX0Z1bmN0aW9uX0NhbGwpOiBXaGVuIHJld3JpdGluZyBhbiBhc3NpZ25tZW50CglzdGF0ZW1lbnQgd2hvc2UgcmlnaHQtaGFuZCBzaWRlIGlzIGFuIGlubGluZWQgY2FsbCwgc2F2ZSBhIGNvcHkgb2YgdGhlCglvcmlnaW5hbCBhc3NpZ25tZW50IHN1YnRyZWUgdG8gcHJlc2VydmUgZW5vdWdoIGNvbnNpc3RlbmN5IGZvcgoJQW5hbHl6ZV9Bc3NpZ25tZW50IHRvIHByb2NlZWQuCgoJKiBzZW1fY2g1LmFkYiAoQW5hbHl6ZV9Bc3NpZ25tZW50KTogUmVtb3ZlIGEgY29zdGx5IGNvcHkgb2YgdGhlCgljb21wbGV0ZSBhc3NpZ25tZW50IHN1YnRyZWUgd2hpY2ggaXMgbm93IHVubmVjZXNzYXJ5LCBhcyB0aGUgZXhwYW5zaW9uCglvZiBpbmxpbmVkIGNhbGwgaGFzIGJlZW4gaW1wcm92ZWQgdG8gcHJlc2VydmUgYSBjb25zaXN0ZW50IGFzc2lnbm1lbnQKCXRyZWUuICBOb3RlX1Bvc3NpYmxlX01vZGlmaWNhdGlvbiBtdXN0IGJlIGNhbGxlZCBvbmx5CglhZnRlciBjaGVja3MgaGF2ZSBiZWVuIGFwcGxpZWQsIG9yIGVsc2UgdW5uZWNlc3NhcnkgY2hlY2tzIHdpbGwKCWJlIGdlbmVyYXRlZC4KCgkqIHNlbV91dGlsLmFkYiAoTm90ZV9Qb3NzaWJsZV9Nb2RpZmljYXRpb24pOiBSZW9yZ2FuaXNlIHRoZSBoYW5kbGluZwoJb2YgZXhwbGljaXQgZGVyZWZlcmVuY2VzIHRoYXQgZG8gbm90IENvbWVfRnJvbV9Tb3VyY2U6CgkgLSBiZSBzZWxlY3RpdmUgb24gY2FzZXMgd2hlcmUgd2UgbXVzdCBnbyBiYWNrIHRvIHRoZSBkZXJlZmVyZW5jZWQKCSAgIHBvaW50ZXIgKGFuIGFzc2lnbm1lbnQgdG8gYW4gaW1wbGljaXQgZGVyZWZlcmVuY2UgbXVzdCBub3QgYmUKCSAgIHJlY29yZGVkIGFzIG1vZGlmeWluZyB0aGUgcG9pbnRlcik7CgkgLSBkbyBub3QgcmVseSBvbiBPcmlnaW5hbF9Ob2RlIGJlaW5nIHByZXNlbnQgKEFuYWx5emVfQXNzaWdubWVudAoJICAgY2FsbHMgTm90ZV9Qb3NzaWJsZV9Nb2RpZmljYXRpb24gb24gYSBjb3BpZWQgdHJlZSkuCgoJKiBzZW1fd2Fybi5hZGIgKENoZWNrX1JlZmVyZW5jZXMpOiBXaGVuIGFuIHVuc2V0IHJlZmVyZW5jZSB0byBhIHBvaW50ZXIKCXRoYXQgaXMgbmV2ZXIgYXNzaWduZWQgaXMgZW5jb3VudGVyZWQsIHByZWZlciAnPHBvaW50ZXI+IG1heSBiZSBudWxsJwoJd2FybmluZyBvdmVyICc8cG9pbnRlcj4gaXMgbmV2ZXIgYXNzaWduZWQgYSB2YWx1ZScuCgoyMDA0LTA0LTA1ICBSYW1vbiBGZXJuYW5kZXogIDxmZXJuYW5kZXpAZ25hdC5jb20+CgoJKiB0cmFjZWJhay5jOiBDaGFuZ2UgU1RPUF9GUkFNRSBpbiBwcGMgdnh3b3JrcyB0byBiZSBjb21wbGlhbnQgd2l0aAoJdGhlIEFCSS4KCjIwMDQtMDQtMDUgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIDVnbWFzdG9wLmFkYiAoUG9wX0ZyYW1lKTogQ29tbWVudCBvdXQgdGhlIHByYWdtYSBMaW5rZXJfT3B0aW9uIGZvcgoJbGliZXhjLiBXZSBjdXJyZW50bHkgZG9uJ3QgcmVmZXJlbmNlIGFueXRoaW5nIGluIHRoaXMgbGlicmFyeSBhbmQKCWxpbmtpbmcgaXQgaW4gdHJpZ2dlcnMgbGlua2VyIHdhcm5pbmdzIHdlIGRvbid0IHdhbnQgdG8gc2VlLgoKCSogaW5pdC5jOiBVcGRhdGUgY29tbWVudHMuCgoyMDA0LTA0LTA1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpOiBVc2UgVFlQRV9SRUFET05MWS4KCSogdXRpbHMuYyAoY3JlYXRlX2ZpZWxkX2RlY2wpOiBMaWtld2lzZS4KCSogdXRpbHMyLmMgKGJ1aWxkX3VuYXJ5X29wLCBnbmF0X2J1aWxkX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgoyMDA0LTA0LTAyICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXQtc3R5bGUudGV4aSwgZ25hdF9ybS50ZXhpLCBnbmF0X3Vnbi50ZXhpOiBSZW1vdmUgUkNTIHRhZ3MuCglSZXBsYWNlIGlmaW5mbyBieSBpZm5vdHRleCwgdG8gbWFrZSBtYWtlaW5mbyAtLWh0bWwgaGFwcHkgYWdhaW4uCglBZGQgaW5mbyBkaXJlY3RvcnkgZW50cnkgYW5kIGNhdGVnb3J5LgoKMjAwNC0wNC0wMiAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogdXRpbHMuYzogSW5jbHVkZSBmdW5jdGlvbi5oCgkoZW5kX3N1YnByb2dfYm9keSk6IENsZWFyIERFQ0xfU1RSVUNUX0ZVTkNUSU9OLgoKMjAwNC0wNC0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJUFIgYWRhLzE0MTUwCgkqIE1ha2UtbGFuZy5pbjogQ2xlYW4gdXAgZ2VuZXJhdGlvbiBvZiBkb2N1bWVudGF0aW9uCgoJKiBnbmF0LXN0eWxlLnRleGksIGduYXRfcm0udGV4aSwgdWdfd29yZHM6IFJlc3luYyB3aXRoIEFkYUNvcmUgdmVyc2lvbgoKCSogeGduYXR1Zy5hZGI6IFJlbW92ZWQsIHJlcGxhY2VkIGJ5IHhnbmF0dWduLmFkYgoKCSogeGduYXR1Z24uYWRiOiBSZXBsYWNlcyB4Z25hdHVnLmFkYgoKCSogZ25hdF91Zy50ZXhpOiBSZW1vdmVkLCByZXBsYWNlZCBieSBnbmF0X3Vnbi50ZXhpCgoJKiBnbmF0X3Vnbi50ZXhpOiBSZXBsYWNlcyBnbmF0X3VnLnRleGkuIFJlc3luYyB3aXRoIEFkYUNvcmUgdmVyc2lvbgoKCSogZ25hdF91Z191bngudGV4aSwgZ25hdF91Z192bXMudGV4aSwgZ25hdF91Z192eHcudGV4aSwKCWduYXRfdWdfd250LnRleGk6IFJlbW92ZWQuCgoyMDA0LTA0LTAxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIHV0aWxzMi5jOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCjIwMDQtMDQtMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogY2hlY2tzLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQKCU5vdGUgdGhhdCBwcmV2IGNoZWNraW4gYWRkZWQgUk0gcmVmZXJlbmNlIHRvIGFsaWdubWVudCB3YXJuaW5nCgoyMDA0LTA0LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfYWdnci5hZGIgKEdldF9Db21wb25lbnRfVmFsKTogVHJlYXQgYSBzdHJpbmcgbGl0ZXJhbCBhcwoJbm9uLXN0YXRpYyB3aGVuIGJ1aWxkaW5nIGFnZ3JlZ2F0ZSBmb3IgYml0LXBhY2tlZCBhcnJheS4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9TbGljZSk6IElmIGEgcGFja2VkIHNsaWNlIGlzIGFuIGFjdHVhbCBvZiBhCglmdW5jdGlvbiBjYWxsIHRoYXQgaXMgaXRzZWxmIHRoZSBhY3R1YWwgaW4gYSBwcm9jZWR1cmUgY2FsbCwgYnVpbGQKCXRlbXBvcmFyeSBmb3IgaXQuCgoJKiBleHBfcGFrZC5hZGIgKEV4cGFuZF9CaXRfUGFja2VkX0VsZW1lbnRfU2V0KTogSWYgcmlnaHQtaGFuZCBzaWRlIGlzCglhIHN0cmluZyBsaXRlcmFsLCBjcmVhdGUgYSB0ZW1wb3JhcnkgZm9yIGl0LCBjb25zdGFudCBmb2xkaW5nIG9ubHkKCWhhbmRsZXMgc2NhbGFycyBoZXJlLgoKMjAwNC0wNC0wMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBhbGktdXRpbC5hZGIgKFBvc3RfU2NhbiwgRXJyb3JfTXNnLCBFcnJvcl9Nc2dfUywgRXJyb3JfTXNnX1NDLAoJRXJyb3JfTXNnX1NQKTogTmV3IGVtcHR5IHByb2NlZHVyZXMgdG8gaW5zdGFudGlhdGUgdGhlIFNjYW5uZXIuCgkoU3R5bGUsIFNjYW5uZXIpOiBJbnN0YW50aWF0aW9ucyBvZiBTdHlsZWcgYW5kIFNjbmcgdG8gYmUgYWJsZSB0byBzY2FuCgl0b2tlbnMuCgkoQWNjdW11bGF0ZV9DaGVja3N1bSwgSW5pdGlhbGl6ZV9DaGVja3N1bSk6IFJlbW92ZSBwcm9jZWR1cmVzLgoJKEdldF9GaWxlX0NoZWNrc3VtKTogVXNlIHRoZSBpbnN0YW50aWF0ZWQgc2Nhbm5lciB0byBzY2FuIGFsbCB0aGUgdG9rZW5zCglhbmQgZ2V0IHRoZSBjaGVja3N1bS4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IERvIG5vdCBpbnNlcnQgaW50byBRIHRoZSBNYWluX1NvdXJjZSBpZiBpdCBpcwoJYWxyZWFkeSBpbiB0aGUgUS4KCUluY3JlYXNlIHRoZSBNYXJraW5nX0xhYmVsIGF0IHRoZSBlbmQgb2YgdGhlIE11bHRpcGxlX01haW5fTG9vcCwKCWluc3RlYWQgb2YgYXQgdGhlIGJlZ2lubmluZy4KCgkqIG9zaW50LmFkYiAoTGliX0ZpbGVfTmFtZSk6IFVzZSBNdWx0aV9Vbml0X0luZGV4X0NoYXJhY3Rlciwgbm90ICd+JwoJZGlyZWN0bHkuCgkoT3NpbnQgcGFja2FnZSBlbGFib3JhdGlvbik6IENoYW5nZSBNdWx0aV9Vbml0X0luZGV4X0NoYXJhY3RlciB0byAnJCcgaWYKCW9uIFZNUy4KCgkqIG9zaW50LmFkcyAoTXVsdGlfVW5pdF9JbmRleF9DaGFyYWN0ZXIpOiBOZXcgQ2hhcmFjdGVyIGdsb2JhbCB2YXJpYWJsZQoKCSogb3NpbnQtYy5hZGIgKFNldF9MaWJyYXJ5X0luZm9fTmFtZSk6IFVzZSBNdWx0aV9Vbml0X0luZGV4X0NoYXJhY3RlciwKCW5vdCAnficgZGlyZWN0bHkuCgoJKiBwYXIuYWRiOiBSZW1vdmUgdGVzdCBvbiBmaWxlIG5hbWUgdG8gZGV0ZWN0IGxhbmd1YWdlIGRlZmluZWQgdW5pdHMuCglBZGQgdGVzdCBvbiB1bml0IG5hbWUsIGFmdGVyIHBhcnNpbmcsIHRvIGRldGVjdCBsYW5ndWFnZSBkZWZpbmVkIHVuaXRzCgl0aGF0IGFyZSBub3QgY29tcGlsZWQgd2l0aCAtZ25hdGcgKGV4Y2VwdCBTeXN0ZW0uUlBDIGFuZCBpdHMgY2hpbGRyZW4pCgoJKiBwYXItY2gxMC5hZGIgKFBfQ29tcGlsYXRpb25fVW5pdCk6IEluIG11bHRpLXVuaXQgc291cmNlcywgc2NhbiB0aGUKCWZvbGxvd2luZyB1bml0cyB3aXRob3V0IHN0eWxlIGNoZWNraW5nLgoKCSogc3dpdGNoLWMuYWRiOiBDaGFuZ2UgLWduYXRDIHRvIC1nbmF0ZUkKCgkqIHVzYWdlLmFkYjogRG9jdW1lbnQgbmV3IHN3aXRjaCAtZ25hdGVJbm5uCgoJKiBzY25nLmFkYiAoQWNjdW11bGF0ZV9Ub2tlbl9DaGVja3N1bSk6IE5ldyBwcm9jZWR1cmUKCShTY2FuKTogQ2FsbCBBY2N1bXVsYXRlX1Rva2VuX0NoZWNrc3VtIGFmdGVyIGVhY2ggaWRlbnRpZmllciwgcmVzZXJ2ZWQKCXdvcmQgb3IgbGl0ZXJhbCBudW1iZXIuCgkoU2Nhbi5ObGl0LlNjYW5fSW50ZWdlcik6IERvIG5vdCBhY2N1bXVsYXRlIGludGVybmFsICdfJyBpbiBsaXR0ZXJhbAoJbnVtYmVycy4KCjIwMDQtMDQtMDEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGEtdGFzYXR0LmFkYiwKCWctY29tbGluLmFkYiwgc2lucHV0LWMuYWRiLCBzLXNlY3N0YS5hZGIsIHMtdHBvYm9wLmFkYiwKCXN3aXRjaC1tLmFkYiwgNTZ0YXByb3AuYWRiLCA1Z2ludGVyci5hZGIsIDVnbWFzdG9wLmFkYiwKCTVzdGFwcm9wLmFkYiwgNXZpbnRlcnIuYWRiLCA1dnRhcHJvcC5hZGIsIDV2dHBvcGRlLmFkYiwKCTV2dHBvcGRlLmFkYjogQWRkIG1pc3NpbmcgJ2NvbnN0YW50JyBrZXl3b3Jkcy4KCjIwMDQtMDQtMDEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHBhci1jaDQuYWRiOiAoUF9BbGxvY2F0b3IpOiBDb2RlIGNsZWFudXAKCgkqIHNlbV9jaDMuYWRiIChBY2Nlc3NfRGVmaW5pdGlvbik6IFByb3Blcmx5IHNldCB0aGUgbnVsbC1leGNsdWRpbmcKCWF0dHJpYnV0ZS4KCgkqIHNpbmZvLmFkczogQ29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBwcmV2aW91cyBjaGFuZ2UKCjIwMDQtMDQtMDEgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGduYXRsaW5rLmFkYiAoUHJvY2Vzc19CaW5kZXJfRmlsZSk6IFJlbW92ZSBkdXBsaWNhdGUgbGlua2VyIG9wdGlvbnMKCW9ubHkgb24gVk1TLiAgVGhpcyBzcGVjaWFsIGhhbmRsaW5nIHdhcyBkb25lIGJlY2F1c2UgYW4gb2xkIEdOVS9sZCBidWcKCW9uIFdpbmRvd3Mgd2hpY2ggaGFzIGJlZW4gZml4ZWQuCgoyMDA0LTA0LTAxICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDA0LTAzLTMxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIG1ha2VfdHlwZV9mcm9tX3NpemUpOgoJVXNlIFRZUEVfVU5TSUdORUQsIG5vdCBUUkVFX1VOU0lHTkVELgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgY29udmVydF93aXRoX2NoZWNrKTogTGlrZXdpc2UuCgkqIHV0aWxzLmMgKGduYXRfc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF92bXNfZGVzY3JpcHRvciwgdW5jaGVja2VkX2NvbnZlcnQpOiBMaWtld2lzZS4KCSogdXRpbHMyLmMgKG5vbmJpbmFyeV9tb2R1bGFyX29wZXJhdGlvbik6IExpa2V3aXNlLgoKMjAwNC0wMy0yOSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogY2hlY2tzLmFkYiAoTnVsbF9FeGNsdXNpb25fU3RhdGljX0NoZWNrcyk6IE5ldyBzdWJwcm9ncmFtCgkoSW5zdGFsbF9OdWxsX0V4Y2x1ZGluZ19DaGVjayk6IExvY2FsIHN1YnByb2dyYW0gdGhhdCBkZXRlcm1pbmVzIHdoZXRoZXIKCWFuIGFjY2VzcyBub2RlIHJlcXVpcmVzIGEgcnVudGltZSBhY2Nlc3MgY2hlY2sgYW5kIGlmIHNvIGluc2VydHMgdGhlCglhcHByb3ByaWF0ZSBydW4tdGltZSBjaGVjay4KCShBcHBseV9BY2Nlc3NfQ2hlY2spOiBDYWxsIEluc3RhbGxfTnVsbF9FeGNsdWRpbmcgY2hlY2sgaWYgcmVxdWlyZWQKCShBcHBseV9Db25zdHJhaW50X0NoZWNrKTogQ2FsbCBJbnN0YWxsX051bGxfRXhjbHVkaW5nIGNoZWNrIGlmIHJlcXVpcmVkCgoJKiBjaGVja3MuYWRzOiAoTnVsbF9FeGNsdXNpb25fU3RhdGljX0NoZWNrcyk6IE5ldyBzdWJwcm9ncmFtCgoJKiBlaW5mby5hZHM6IEZpeCB0eXBvIGluIGNvbW1lbnQKCgkqIGV4cF9jaDMuYWRiIChCdWlsZF9Bc3NpZ25tZW50KTogR2VuZXJhdGUgY29udmVyc2lvbiB0byB0aGUKCW51bGwtZXhjbHVkaW5nIHR5cGUgdG8gZm9yY2UgdGhlIGNvcnJlc3BvbmRpbmcgcnVuLXRpbWUgY2hlY2suCgkoRXhwYW5kX05fT2JqZWN0X0RlY2xhcmF0aW9uKTogR2VuZXJhdGUgY29udmVyc2lvbiB0byB0aGUgbnVsbC1leGNsdWRpbmcKCXR5cGUgdG8gZm9yY2UgdGhlIGNvcnJlc3BvbmRpbmcgcnVuLXRpbWUgY2hlY2suCgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX05fQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBHZW5lcmF0ZSBjb252ZXJzaW9uIHRvCgl0aGUgbnVsbC1leGNsdWRpbmcgdHlwZSB0byBmb3JjZSB0aGUgY29ycmVzcG9uZGluZyBydW4tdGltZSBjaGVjay4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IERvIG5vdCBnZW5lcmF0ZSB0aGUgcnVuLXRpbWUgY2hlY2sgaW4KCWNhc2Ugb2YgYWNjZXNzIHR5cGVzIHVubGVzcyB0aGV5IGhhdmUgdGhlIG51bGwtZXhjbHVkaW5nIGF0dHJpYnV0ZS4KCgkqIHNwcmludC5hZGIgKFNwcmludF9Ob2RlX0FjdHVhbCk6IEdpdmUgc3VwcG9ydCB0byB0aGUgbnVsbC1leGNsdXNpbmcKCXBhcnQuCgoJKiBleHBfdXRpbC5hZHM6IEZpeCB0eXBvIGluIGNvbW1lbnQKCgkqIHBhci5hZGIgKFBfTnVsbF9FeGNsdXNpb24pOiBOZXcgc3VicHJvZ3JhbQoJKFBfU3VidHlwZV9JbmRpY2F0aW9uKTogTmV3IGZvcm1hbCB0aGF0IGluZGljYXRlcyBpZiB0aGUgbnVsbC1leGNsdWRpbmcKCXBhcnQgaGFzIGJlZW4gc2Nhbm5lZC1vdXQgYW5kIGl0IHdhcyBwcmVzZW50CgoJKiBwYXItY2gzLmFkYiwgcGFyLWNoNC5hZGIsIHBhci1jaDYuYWRiOiBHaXZlIHN1cHBvcnQgdG8gQUktMjMxCgoJKiBzZW1fYWdnci5hZGI6IChDaGVja19DYW5fTmV2ZXJfQmVfTnVsbCk6IE5ldyBzdWJwcm9ncmFtCgkoQWdncmVnYXRlX0NvbnN0cmFpbnRfQ2hlY2tzKTogR2VuZXJhdGUgY29udmVyc2lvbiB0byB0aGUgbnVsbC1leGNsdWRpbmcKCXR5cGUgdG8gZm9yY2UgdGhlIGNvcnJlc3BvbmRpbmcgcnVuLXRpbWUgY2hlY2sKCShSZXNvbHZlX0FnZ3JlZ2F0ZSk6IFByb3BhZ2F0ZSB0aGUgbnVsbC1leGNsdWRpbmcgYXR0cmlidXRlIHRvIHRoZSBhcnJheQoJY29tcG9uZW50cwoJKFJlc29sdmVfQXJyYXlfQWdncmVnYXRlKTogQ2Fycnkgb3V0IHNvbWUgc3RhdGljIGNoZWNrcwoJKFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZS5HZXRfVmFsdWUpOiBDYXJyeSBvdXQgc29tZSBzdGF0aWMgY2hlY2sKCgkqIHNlbV9jaDMuYWRiIChBY2Nlc3NfRGVmaW5pdGlvbik6IEluIEFkYSAwWSB0aGUgQ2FuX05ldmVyX0JlX051bGwKCWF0dHJpYnV0ZSBtdXN0IGJlIHNldCBvbmx5IGlmIHNwZWNpZmllZCBieSBtZWFucyBvZiB0aGUgbnVsbC1leGNsdWRpbmcKCXBhcnQuIEluIGFkZGl0aW9uLCB3ZSBtdXN0IGFsc28gcHJvcGFnYXRlIHRoZSBhY2Nlc3MtY29uc3RhbnQgYXR0cmlidXRlCglpZiBwcmVzZW50LgoJKEFjY2Vzc19TdWJwcm9ncmFtX0RlY2xhcmF0aW9uLCBBY2Nlc3NfVHlwZV9EZWNsYXJhdGlvbiwKCUFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uLCBBbmFseXplX09iamVjdF9EZWNsYXJhdGlvbiwKCUFycmF5X1R5cGVfRGVjbGFyYXRpb24sIFByb2Nlc3NfRGlzY3JpbWluYW50cywKCUFuYWx5emVfU3VidHlwZV9EZWNsYXJhdGlvbik6IFByb3BhZ2F0ZSB0aGUgbnVsbC1leGNsdWRpbmcgYXR0cmlidXRlCglhbmQgY2Fycnkgb3V0IHNvbWUgc3RhdGljIGNoZWNrcy4KCShCdWlsZF9EZXJpdmVkX0FjY2Vzc19UeXBlKTogU2V0IHRoZSBudWxsLWV4Y2x1ZGluZyBhdHRyaWJ1dGUKCShEZXJpdmVkX1R5cGVfRGVjbGFyYXRpb24sIFByb2Nlc3NfU3VidHlwZSk6IENhcnJ5IG91dCBzb21lIHN0YXRpYwoJY2hlY2tzLgoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfQWxsb2NhdG9yKTogQ2Fycnkgb3V0IHNvbWUgc3RhdGljIGNoZWNrcwoKCSogc2VtX2NoNS5hZGIgKEFuYWx5emVfQXNzaWdubWVudCk6IENhcnJ5IG91dCBzb21lIHN0YXRpYyBjaGVja3MKCgkqIHNlbV9jaDYuYWRiIChQcm9jZXNzX0Zvcm1hbHMpOiBDYXJyeSBvdXQgc29tZSBzdGF0aWMgY2hlY2tzLgoJKFNldF9BY3R1YWxfU3VidHlwZXMpOiBHZW5lcmF0ZSBudWxsLWV4Y2x1ZGluZyBzdWJ0eXBlIGlmIHRoZQoJbnVsbC1leGNsdWRpbmcgcGFydCB3YXMgcHJlc2VudDsgaXQgaXMgbm90IHJlcXVpcmVkIHRvIGJlIGRvbmUgaGVyZSBpbgoJY2FzZSBvZiBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzLgoJKFNldF9Gb3JtYWxfTW9kZSk6IEFkYSAwWSBhbGxvd3MgYW5vbnltb3VzIGFjY2VzcyB0byBoYXZlIHRoZSBudWxsCgl2YWx1ZS4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0FjdHVhbHMpOiBDYXJyeSBvdXQgc29tZSBzdGF0aWMgY2hlY2sKCShSZXNvbHZlX051bGwpOiBBbGxvdyBudWxsIGluIGFub255bW91cyBhY2Nlc3MKCgkqIHNpbmZvLmFkYjogTmV3IHN1YnByb2dyYW0gTnVsbF9FeGNsdXNpb25fUHJlc2VudAoJQWxsX1ByZXNlbnQgYW5kIENvbnN0YW50X1ByZXNlbnQgYXZhaWxhYmxlIG9uIGFjY2Vzc19kZWZpbml0aW9uIG5vZGVzCgoJKiBzaW5mby5hZHM6IE5ldyBmbGFnIE51bGxfRXhjbHVzaW9uX1ByZXNlbnQgb24gc3VidHlwZV9kZWNsYXJhdGlvbiwKCW9iamVjdF9kZWNsYXJhdGlvbiwgZGVyaXZlZF90eXBlX2RlZmluaXRpb24sIGNvbXBvbmVudF9kZWZpbml0aW9uLAoJZGlzY3JpbWluYW50X3NwZWNpZmljYXRpb24sIGFjY2Vzc190b19vYmplY3RfZGVmaW5pdGlvbiwKCWFjY2Vzc19mdW5jdGlvbl9kZWZpbml0aW9uLCBhbGxvY2F0b3IsIGFjY2Vzc19wcm9jZWR1cmVfZGVmaW5pdGlvbiwKCWFjY2Vzc19kZWZpbml0aW9uLCBwYXJhbWV0ZXJfc3BlY2lmaWNhdGlvbiwgQWxsX1ByZXNlbnQgYW5kCglDb25zdGFudF9QcmVzZW50IGZsYWdzIGF2YWlsYWJsZSBvbiBhY2Nlc3NfZGVmaW5pdGlvbiBub2Rlcy4KCjIwMDQtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZm5hbWUuYWRiLCBmbmFtZS5hZHMsIGZuYW1lLXNmLmFkYiwgZm5hbWUtdWYuYWRiLCBmbmFtZS11Zi5hZHMsCglnbmF0MWRydi5hZGIsIGxpYi5hZGIsIGxpYi5hZHMsIGxpYi1sb2FkLmFkYiwgbGliLXdyaXQuYWRiLAoJb3B0LmFkcywgb3NpbnQuYWRiLCBvc2ludC5hZHMsIG9zaW50LWMuYWRiLCBwYXIuYWRiLAoJcGFyLWNoMTAuYWRiLCBwYXItbG9hZC5hZGIsIHBhci1wcmFnLmFkYiwgc2ZuX3NjYW4uYWRiLAoJc2ZuX3NjYW4uYWRzLCBzaW5wdXQtbC5hZGIsIHNpbnB1dC1sLmFkcywgc3dpdGNoLWMuYWRiLAoJc2VtX3ByYWcuYWRiOiBVcGRhdGVzIHRvIGhhbmRsZSBtdWx0aXBsZSB1bml0cy9maWxlCgoJKiBwYXIuYWRiOiBDaGFuZ2UgdGVzdCBmb3Igcy1ycGMgdG8gcy1ycCBmb3IgZGV0ZWN0aW5nIHJwYyBhbmQgY2hpbGRyZW4KCgkqIHBhci5hZGIsIG1lbXRyYWNrLmFkYiwgcHJqLW1ha3IuYWRiLCBwcmotcGFydC5hZGIsCglzZW1fdXRpbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX2NoMTIuYWRiOiBBZGQgY29tbWVudCBmb3IgcHJldmlvdXMgY2hhbmdlCgoyMDA0LTAzLTI5ICBMYXVyZW50IFBhdXRldCAgPHBhdXRldEBhY3QtZXVyb3BlLmZyPgoKCSogb3NpbnQuYWRiIChFeGVjdXRhYmxlX1ByZWZpeCk6IFNldCBFeGVjX05hbWUgdG8gdGhlIGN1cnJlbnQKCWV4ZWN1dGFibGUgbmFtZSB3aGVuIG5vdCBpbml0aWFsaXplZC4gT3RoZXJ3aXNlLCB1c2UgaXRzIGN1cnJlbnQgdmFsdWUuCgoJKiBvc2ludC5hZHMgKEV4ZWNfTmFtZSk6IE1vdmUgRXhlY19OYW1lIGZyb20gYm9keSB0byBzcGVjIGluIG9yZGVyIHRvCglpbml0aWFsaXplIGl0IHRvIGFub3RoZXIgZXhlY3V0YWJsZSBuYW1lIHRoYW4gdGhlIGN1cnJlbnQgb25lLiBUaGlzCglhbGxvd3MgdG8gY29uZmlndXJlIHBhdGhzIGZvciBhbiBleGVjdXRhYmxlIG5hbWUgKGduYXRtYWtlKSBkaWZmZXJlbnQKCWZyb20gdGhlIGN1cnJlbnQgb25lIChnbmF0ZGlzdCkuCgoyMDA0LTAzLTI5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0NhbGwpOiBBIGNhbGwgdG8gYSBmdW5jdGlvbiBkZWNsYXJlZCBpbiB0aGUKCWN1cnJlbnQgdW5pdCBjYW5ub3QgYmUgaW5saW5lZCBpZiBpdCBhcHBlYXJzIGluIHRoZSBib2R5IG9mIGEgd2l0aGVkCgl1bml0LCB0byBhdm9pZCBvcmRlciBvZiBlbGFib3JhdGlvbiBwcm9ibGVtcyBpbiBnaWdpLgoKCSogZXhwX2NoOS5hZGIgKEJ1aWxkX1Byb3RlY3RlZF9TdWJfU3BlY2lmaWNhdGlvbik6IEdlbmVyYXRlIGRlYnVnZ2luZwoJaW5mb3JtYXRpb24gZm9yIHByb3RlY3RlZCAod3JhcHBlcikgb3BlcmF0aW9uIGFzIHdlbGwsIHRvIHNpbXBsaWZ5IGdkYgoJdXNlLgoKCSogc2VtX2NoNi5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogRm9yIGEgcHJpdmF0ZSBvcGVyYXRpb24gaW4gYQoJcHJvdGVjdGVkIGJvZHksIGluZGljYXRlIHRoYXQgdGhlIGVudGl0eSBmb3IgdGhlIGdlbmVyYXRlZCBzcGVjIGNvbWVzCglmcm9tIHNvdXJjZSwgdG8gZW5zdXJlIHRoYXQgcmVmZXJlbmNlcyBhcmUgcHJvcGVybHkgZ2VuZXJhdGVkIGZvciBpdC4KCShCdWlsZF9Cb2R5X1RvX0lubGluZSk6IERvIG5vdCBpbmxpbmUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYQoJY29udHJvbGxlZCB0eXBlLgoKCSogc2VtX3ByYWcuYWRiIChQcm9jZXNzX0NvbnZlbnRpb24pOiBJZiBzdWJwcm9ncmFtIGlzIG92ZXJsb2FkZWQsIG9ubHkKCWFwcGx5IGNvbnZlbnRpb24gdG8gaG9tb255bXMgdGhhdCBhcmUgZGVjbGFyZWQgZXhwbGljaXRseS4KCgkqIHNlbV9yZXMuYWRiIChNYWtlX0NhbGxfSW50b19PcGVyYXRvcik6IElmIHRoZSBvcGVyYXRpb24gaXMgYSBmdW5jdGlvbgoJdGhhdCByZW5hbWVzIGFuIGVxdWFsaXR5IG9wZXJhdG9yIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG92ZXJsb2FkZWQsCglyZXNvbHZlIHRoZW0gd2l0aCB0aGUgZGVjbGFyZWQgZm9ybWFsIHR5cGVzLCBiZWZvcmUgcmV3cml0aW5nIGFzIGFuCglvcGVyYXRvci4KCjIwMDQtMDMtMjkgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDMtMjUgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWN0LWV1cm9wZS5mcj4KCgkqIG1lbXRyYWNrLmFkYjogTG9nIHJlYWxsb2MgY2FsbHMsIHdoaWNoIGFyZSB0cmVhdGVkIGFzIGZyZWUgZm9sbG93ZWQKCWJ5IGFsbG9jLgoKMjAwNC0wMy0yNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotbWFrci5hZGIgKFByb2Nlc3NfRGlyZWN0b3JpZXMpOiBEZXRlY3Qgd2hlbiBhIGZpbGUgY29udGFpbnMKCXNldmVyYWwgdW5pdHMuIERvIG5vdCBpbmNsdWRlIHN1Y2ggZmlsZXMgaW4gdGhlIGNvbmZpZyBwcmFnbWFzIG9yCglpbiB0aGUgbmFtaW5nIHNjaGVtZS4KCgkqIHByai1ubXNjLmFkYiAoUmVjb3JkX1NvdXJjZSk6IE5ldyBwYXJhbWV0ZXIgVHJ1c3RlZF9Nb2RlLgoJUmVzb2x2ZSBsaW5rcyBvbmx5IHdoZW4gbm90IGluIFRydXN0ZWRfTW9kZS4KCShGaW5kX1NvdXJjZXMsIFJlY3Vyc2l2ZV9GaW5kX0RpcnMsIEZpbmRfU291cmNlX0RpcnMsIExvY2F0ZV9EaXJlY3RvcnkpOgoJRG8gbm90IHJlc29sdmUgbGlua3MgZm9yIHRoZSBkaXNwbGF5IG5hbWVzLgoKCSogcHJqLXBhcnQuYWRiIChQYXJzZV9TaW5nbGVfUHJvamVjdCwgUHJvamVjdF9QYXRoX05hbWVfT2YpOiBEbyBub3QKCXJlc29sdmUgbGlua3Mgd2hlbiBjb21wdXRpbmcgdGhlIGRpc3BsYXkgbmFtZXMuCgoyMDA0LTAzLTI1ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fYXR0ci5hZGIgKENoZWNrX0RlcmVmZXJlbmNlKTogV2hlbiB0aGUgcHJlZml4IG9mIGEgJ1RhZwoJYXR0cmlidXRlIHJlZmVyZW5jZSBkb2VzIG5vdCBkZW5vdGUgYSBzdWJ0eXBlLCBpdCBjYW4gYmUgYW55CglleHByZXNzaW9uIHRoYXQgaGFzIGEgY2xhc3N3aWRlIHR5cGUsIHBvdGVudGlhbGx5IGFmdGVyIGFuIGltcGxpY2l0CglkZXJlZmVyZW5jZS4gIEluIHBhcnRpY3VsYXIsIHRoZSBwcmVmaXggY2FuIGJlIGEgdmlldyBjb252ZXJzaW9uIGZvcgoJYSBjbGFzc3dpZGUgdHlwZSAoZm9yIHdoaWNoIElzX09iamVjdF9SZWZlcmVuY2UgaG9sZHMpLCBidXQgaXQgY2FuCglhbHNvIGJlIGEgdmFsdWUgY29udmVyc2lvbiBmb3IgYW4gYWNjZXNzLXRvLWNsYXNzd2lkZSB0eXBlLiBJbiB0aGUKCWxhdHRlciBjYXNlLCB0aGVyZSBpcyBhbiBpbXBsaWNpdCBkZXJlZmVyZW5jZSwgYW5kIHRoZSBvcmlnaW5hbCBub2RlCglmb3IgdGhlIHByZWZpeCBkb2VzIG5vdCB2ZXJpZnkgSXNfT2JqZWN0X1JlZmVyZW5jZS4KCgkqIHNlbV91dGlsLmFkYiAoSXNfRGVwZW5kZW50X0NvbXBvbmVudF9PZl9NdXRhYmxlX09iamVjdCk6IEEgdmlldwoJY29udmVyc2lvbiBvZiBhIGRpc2NyaW1pbmFudC1kZXBlbmRlbnQgY29tcG9uZW50IG9mIGEgbXV0YWJsZSBvYmplY3QKCWlzIG9uZSBpdHNlbGYuCgoyMDA0LTAzLTI1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfRW50aXR5KTogV2hlbiBhbiBpbmhlcml0ZWQgc3VicHJvZ3JhbSBpcwoJaW5oZXJpdGVkLCBoYXMgY29udmVudGlvbiBDLCBhbmQgaGFzIHVuY29uc3RyYWluZWQgYXJyYXkgcGFyYW1ldGVycywKCXBsYWNlIHRoZSBjb3JyZXNwb25kaW5nIHdhcm5pbmcgb24gdGhlIGRlcml2ZWQgdHlwZSBkZWNsYXJhdGlvbiByYXRoZXIKCXRoYW4gdGhlIG9yaWdpbmFsIHN1YnByb2dyYW0uCgoJKiBzZW1fY2gxMi5hZGIgKEluc3RhbnRpYXRlX0Zvcm1hbF9TdWJwcm9ncmFtKTogU2V0IEZyb21fRGVmYXVsdAoJaW5kaWNhdGlvbiBvbiByZW5hbWluZyBkZWNsYXJhdGlvbiwgaWYgZm9ybWFsIGhhcyBhIGJveCBhbmQgYWN0dWFsCglpcyBhYnNlbnQuCgoJKiBzZW1fY2g4LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX1JlbmFtaW5nKTogVXNlIEZyb21fRGVmYXVsdCBmbGFnIHRvCglkZXRlcm1pbmUgd2hldGhlciB0byBnZW5lcmF0ZSBhbiBpbXBsaWNpdCBvciBleHBsaWNpdCByZWZlcmVuY2UgdG8KCXRoZSByZW5hbWVkIGVudGl0eS4KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiOiBOZXcgZmxhZyBGcm9tX0RlZmF1bHQsIHRvIGluZGljYXRlIHRoYXQgYQoJc3VicHJvZ3JhbSByZW5hbWluZyBjb21lcyBmcm9tIGEgZGVmYXVsdGVkIGZvcm1hbCBzdWJwcm9ncmFtIGluIGFuCglpbnN0YW5jZS4KCjIwMDQtMDMtMjUgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIHNlbV9lbGFiLmFkYiAoQ2hlY2tfRWxhYl9DYWxsKTogUmVmaW5lIGxvb3AgdGhhdCBjaGVja3MgZm9yIGRlZmF1bHQKCXZhbHVlIGV4cHJlc3Npb25zIHRvIGVuc3VyZSB0aGF0IGNhbGxzIHdpdGhpbiBhIGNvbXBvbmVudCBkZWZpbml0aW9uCgl3aWxsIGJlIGNoZWNrZWQgKHNpbmNlIHRob3NlIGFyZSBldmFsdWF0ZWQgZHVyaW5nIHRoZSByZWNvcmQgdHlwZSdzCgllbGFib3JhdGlvbikuCgoyMDA0LTAzLTI1ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIHMtdHBvYm9wLmFkYjogQ29kZSBjbGVhbiB1cDoKCShSZXF1ZXVlX0NhbGwpOiBFeHRyYWN0IGZyb20gUE9fU2VydmljZV9FbnRyaWVzIHRvIHJlbW92ZSBkdXBsaWNhdGVkCgljb2RlLgoJKFBPX0RvX09yX1F1ZXVlKTogUmVtb3ZlIGR1cGxpY2F0ZWQgY29kZSBhbmQgdXNlIFJlcXVldWVfQ2FsbC4KCjIwMDQtMDMtMjUgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluOiBDbGVhbiB1cCBpbiB0aGUgcmF2ZW5zY2FyIHJ1biB0aW1lLgoKMjAwNC0wMy0yMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfQWNjZXNzX1R5cGUpOiBQYXNzIHZhbHVlCglvZiBOb19TdHJpY3RfQWxpYXNpbmcgdG8gYnVpbGRfcG9pbnRlcl90eXBlX2Zvcl9tb2RlLgoJKiB1dGlscy5jICh1cGRhdGVfcG9pbnRlcl90byk6IFdhbGsgcG9pbnRlciBhbmQgcmVmIGNoYWlucy4KCjIwMDQtMDMtMjIgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhY3QtZXVyb3BlLmZyPgoKCSogYWxpLmFkczogRml4IENvbW1lbnQgYWJvdXQgRHluYW1pY19FbGFiLgoKCSogZ25hdGxzLmFkYiAoT3V0cHV0X1VuaXQpOiBBZGQgb3V0cHV0IG9mIG1hbnkgZmxhZ3MgKER5bmFtaWNfRWxhYiwKCUhhc19SQUNXLCBJc19HZW5lcmljLCBldGMuKQoJKE91dHB1dF9PYmplY3QsIEduYXRscyk6IFRha2UgaW50byBhY2NvdW50IEFMSSBmaWxlcyBub3QgYXR0YWNoZWQgdG8KCWFuIG9iamVjdC4KCjIwMDQtMDMtMjIgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ3ByZXAuYWRiOiBDaGFuZ2UgYWxsIFN0cmluZ19BY2Nlc3MgdG8gTmFtZV9JZAoJKElzX0FTQ0lJX0xldHRlcik6IG5ldyBmdW5jdGlvbgoJKERvdWJsZV9GaWxlX05hbWVfQnVmZmVyKTogTmV3IHByb2NlZHVyZQoJKFByZXByb2Nlc3NfSW5maWxlX05hbWUpOiBOZXcgcHJvY2VkdXJlCgkoUHJvY2Vzc19GaWxlcyk6IE5ldyBwcm9jZWR1cmUKCShHbmF0cHJlcCk6IENoZWNrIGlmIG91dHB1dCBhbmQgaW5wdXQgYXJlIGV4aXN0aW5nIGRpcmVjdG9yaWVzLgoJQ2FsbCBQcm9jZXNzX0ZpbGVzIHRvIGRvIHRoZSByZWFsIGpvYi4KCjIwMDQtMDMtMjIgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcHJqLWVudi5hZGIsIHByai1ubXNjLmFkcywgcHJqLXByb2MuYWRzLAoJcy1zdGFjaGUuYWRzLCBzLXN0YWNoZS5hZGI6IENvbW1lbnQgdXBkYXRlcy4gTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNC0wMy0yMiAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIHNjbi5hZGIgKENvbnRhaW5zKTogQWRkIGNoZWNrIGZvciBFT0YsIGlzIG5lZWRlZCBmb3IgYSBkZWdlbmVyYXRlZAoJY2FzZSB3aGVuIHRoZSBzb3VyY2UgY29udGFpbnMgb25seSBjb21tZW50cy4KCjIwMDQtMDMtMjIgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoQW5hbHl6ZV9Db21waWxhdGlvbl9Vbml0KTogV2hlbiBnZW5lcmF0aW5nIGEKCWRlY2xhcmF0aW9uIGZvciBhIGNoaWxkIHN1YnByb2dyYW0gYm9keSB0aGF0IGFjdHMgYXMgYSBzcGVjLCBpbmRpY2F0ZQoJdGhhdCB0aGUgZW50aXR5IGluIHRoZSBkZWNsYXJhdGlvbiBuZWVkcyBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCgoJKiBzZW1fY2gzLmFkYiAoQ29tcGxldGVfUHJpdmF0ZV9TdWJ0eXBlKTogRG8gbm90IGJ1aWxkIGFuIHVuZGVybHlpbmcKCWZ1bGwgdmlldyBpZiB0aGUgc3VidHlwZSBpcyBjcmVhdGVkIGZvciBhIGNvbnN0cmFpbmVkIHJlY29yZCBjb21wb25lbnQ7CglnaWdpIGhhcyBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY29uc3RydWN0IHRoZSByZWNvcmQsIGFuZCB0aGVyZSBpcyBubwoJcGxhY2UgaW4gdGhlIHRyZWUgZm9yIHRoZSBkZWNsYXJhdGlvbi4KCgkqIHNlbV9jaDYuYWRiIChCdWlsZF9Cb2R5X1RvX0lubGluZSk6IFVzZSBhbiBpbnRlcm5hbCBuYW1lIHdpdGhvdXQKCXNlcmlhbCBudW1iZXIgZm9yIHRoZSBkdW1teSBib2R5IHRoYXQgaXMgYnVpbHQgZm9yIGFuYWx5c2lzLCB0byBhdm9pZAoJaW5jb25zaXN0ZW5jaWVzIGluIHRoZSBnZW5lcmF0aW9uIG9mIGludGVybmFsIG5hbWVzIHdoZW4gY29tcGlsaW5nCgl3aXRoIC1nbmF0Ti4KCjIwMDQtMDMtMjIgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV91dGlsLmFkYiAoSXNfT2JqZWN0X1JlZmVyZW5jZSk6IEEgdmlldyBjb252ZXJzaW9uIGRlbm90ZXMgYW4KCW9iamVjdC4KCjIwMDQtMDMtMjIgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDMtMjEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSk6IFVzZSBTVUJTVElUVVRFX1BMQUNFSE9MREVSX0lOX0VYUFIuCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBlbWl0X2luZGV4X2NoZWNrKTogTGlrZXdpc2UuCgkqIHV0aWxzLmMgKGJ1aWxkX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkobWF4X3NpemUsIGNvbnZlcnQpOiBSZW1vdmUgaGFuZGxpbmcgb2YgV0lUSF9SRUNPUkRfRVhQUi4KCShtYXliZV91bmNvbnN0cmFpbmVkX2FycmF5LCB1bmNoZWNrZWRfY29udmVydCk6IExpa2V3aXNlLgoJKiB1dGlsczIuYyAoZ25hdF90cnV0aHZhbHVlX2NvbnZlcnNpb24sIGJ1aWxkX2JpbmFyeV9vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkoY29tcGFyZV9hcnJheXMsIGJ1aWxkX2FsbG9jYXRvcik6IFVzZSBTVUJTVElUVVRFX1BMQUNFSE9MREVSX0lOX0VYUFIuCgkoZmlsbF92bXNfZGVzY3JpcHRvcik6IExpa2V3aXNlLgoJKGJ1aWxkX2NhbGxfYWxsb2NfZGVhbGxvYyk6IExpa2V3aXNlLgoJQUxJR04gaXMgdW5zaWduZWQuCgkqIGdpZ2kuaCAoYnVpbGRfY2FsbF9hbGxvY19kZWFsbG9jKTogQWxpZ25tZW50IGlzIHVuc2lnbmVkLgoKMjAwNC0wMy0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJUFIgb3RoZXIvMTQ2MzAKCSogZ25hdF91Zy50ZXhpOiBBZGQgaW5mbyBkaXJlY3RvcnkgY2F0ZWdvcnkgYW5kIGVudHJ5LgoJKiBnbmF0X3VnX3VueC50ZXhpLCBnbmF0X3VnX3Ztcy50ZXhpLCBnbmF0X3VnX3Z4dy50ZXhpLAoJZ25hdF91Z193bnQudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDQtMDMtMTkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogYWRhLXRyZWUuaDogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCglNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA0LTAzLTE5ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0V4Y2VwdGlvbik6IEhhbmRsZSBWTVMgZXhjZXB0aW9ucwoJYXMgcmVndWxhciBleGNlcHRpb24gb2JqZWN0cyBhbmQgbm90IGFzIG1lcmUgaW50ZWdlcnMgcmVwcmVzZW50aW5nIHRoZQoJY29uZGl0aW9uIGNvZGUuICBUaGUgbGF0dGVyIGFwcHJvYWNoIHJlcXVpcmVkIHNvbWUgZHluYW1pY3MgdG8gbWFzayBvZmYKCXNldmVyaXR5IGJpdHMsIHdoaWNoIGRpZCBub3QgZml0IHdlbGwgaW50byB0aGUgR0NDIHRhYmxlIGJhc2VkIG1vZGVsLgoJKGduYXRfdG9fZ251X2VudGl0eSwgb2JqZWN0cyk6IERvbid0IHN1cHBseSBhbiBleHRlcm5hbCBuYW1lIGZvciBWTVMKCWV4Y2VwdGlvbiBkYXRhIG9iamVjdHMuIFdlIGRvbid0IGl0IGFuZCBpdCB3b3VsZCBjb25mbGljdCB3aXRoIHRoZSBvdGhlcgoJZXh0ZXJuYWwgc3ltYm9sIHdlIGhhdmUgdG8gZ2VuZXJhdGUgZm9yIHN1Y2ggZXhjZXB0aW9ucy4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fRXhjZXB0aW9uX0hhbmRsZXIpOiBSZW1vdmUgcGFydCBvZgoJdGhlIHNwZWNpYWwgY29kZSBmb3IgVk1TIGV4Y2VwdGlvbnMsIHNpbmNlIHRoZXNlIGFyZSBub3cgcmVwcmVzZW50ZWQKCWFzIHJlZ3VsYXIgZXhjZXB0aW9ucyBvYmplY3RzLgoKMjAwNC0wMy0xOSBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChkZWJ1Z19ub190eXBlX2hhc2gpOiBSZW1vdmUuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfQXJyYXlfVHlwZSk6IERvbid0IHNldCBhbmQgY2xlYXIgaXQuCgkqIG1pc2MuYyAoTEFOR19IT09LX0hBU0hfVFlQRSk6IFJlZGVmaW5lLgoKMjAwNC0wMy0xOSAgTGF1cmVudCBHdWVyYnkgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCgkqIHNlbV9wcmFnLmFkYiAoU3VwcHJlc3NfVW5zdXBwcmVzc19FY2hlY2spOiB1c2UgbG9vcCBpbnN0ZWFkIG9mCglhZ2dyZWdhdGUsIGFsbG93cyBib290c3RyYXAgZnJvbSAzLjMgb24gcG93ZXJwYy1kYXJ3aW4uCgoyMDA0LTAzLTE4ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWRhLXRyZWUuaCAoVFlQRV9MRUZUX0pVU1RJRklFRF9NT0RVTEFSX1ApOiBBZGQgY2hlY2tpbmcuCgkoVFlQRV9DT05UQUlOU19URU1QTEFURV9QLCBUWVBFX09CSkVDVF9SRUNPUkRfVFlQRSk6IExpa2V3aXNlLgoJKFRZUEVfUk1fU0laRV9JTlQpOiBEaXJlY3RseSB1c2UgdHlwZS52YWx1ZXMuCgkoVFJFRV9MT09QX0lEKTogQ2xlYW4gdXAgY2hlY2suCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfRW51bWVyYXRpb25fVHlwZSk6IFVzZQoJVFlQRV9WQUxVRVMsIG5vdCBUWVBFX0ZJRUxEUy4KCSogdHJhbnMuYyAoY29udmVydF93aXRoX2NoZWNrKTogRGVsYXkgYWNjZXNzIG9mIGJvdW5kcyBvZiBiYXNldHlwZQoJdW50aWwgc3VyZSBpcyBudW1lcmljLgoKMjAwNC0wMy0xOCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiA1YXRwb3BzcC5hZGI6IFJlbW92ZSBSVEVNUyBmcm9tIGxpc3Qgb2YgcGxhdGZvcm1zIHVzaW5nIHRoaXMgZmlsZS4KCglDb2RlIGNsZWFuIHVwOgoJKiA1YXRhcHJvcC5hZGIsIDVmdGFwcm9wLmFkYiwgNWh0YXByb3AuYWRiLCA1aXRhcHJvcC5hZGIsIDVzdGFwcm9wLmFkYiwKCTV2dGFwcm9wLmFkYiwgNXd0YXByb3AuYWRiLCA3c3RhcHJvcC5hZGIgKEZpbmFsaXplX1RDQik6IFVzZQoJU3BlY2lmaWMuU2V0IGluc3RlYWQgb2YgZGlyZWN0IGNhbGwgdG8gZS5nIHB0aHJlYWRfc2V0c3BlY2lmaWMuCgoyMDA0LTAzLTE4ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBhZGFpbnQuYzogVXBkYXRlIGNvbW1lbnRzLgoKCSogTWFrZWZpbGUuaW46IHNldCBQUkVGSVhfT0JKUywgU1lNTElCLCBUSFJFQURTTElCLCBhbmQKCUdOQVRMSUJfU0hBUkVEIGZvciBGcmVlQlNELgoKMjAwNC0wMy0xOCAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogaW5pdC5jIFtWeFdvcmtzXTogRG8gbm90IGZpeCB0aGUgc3RhY2sgc2l6ZSBmb3IgdGhlIGVudmlyb25tZW50IHRhc2suCglXaGVuIG5lZWRlZCAoc3RhY2sgY2hlY2tpbmcpIHRoZSBzdGFjayBzaXplIGlzIHJldHJpZXZlZAoJZnJvbSB0aGUgVnhXb3JrcyBrZXJuZWwuCgoJKiBNYWtlZmlsZS5pbjogRmxhZyAtbm9zdGRpbmMgaXMgcmVxdWlyZWQgd2hlbiBidWlsZGluZyB0aGUgcnVuIHRpbWUKCWZvciBhdm9pZGluZyBsb29raW5nIGZvciBmaWxlcyBpbiB0aGUgYmFzZSBjb21waWxlci4KCUFkZCB0aGUgVnhXb3JrcyBzcGVjaWZpYyB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIGJvZHkgZm9yCglTeXN0ZW0uU3RhY2tfY2hlY2tpbmcuT3BlcmF0aW9ucyAoNXpzdGNob3AuYWRiKS4KCgkqIE1ha2UtbGFuZy5pbjogQWRkIHRoZSBvYmplY3QgZmlsZSBmb3IKCVN5c3RlbS5TdGFja19DaGVja2luZy5PcGVyYXRpb25zLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgb2JqZWN0IGZpbGUgZm9yIHRoZSBwYWNrYWdlCglTeXN0ZW0uU3RhY2tfQ2hlY2tpbmcuT3BlcmF0aW9ucy4KCgkqIHMtc3RjaG9wLmFkcywgcy1zdGNob3AuYWRiLCA1enN0Y2hvcC5hZGI6IE5ldyBmaWxlcy4KCgkqIHMtc3RhY2hlLmFkcywgcy1zdGFjaGUuYWRiOiBNb3ZlIHRoZSBvcGVyYXRpb25zIHJlbGF0ZWQgdG8gc3RhY2sKCWNoZWNraW5nIGZyb20gdGhpcyBwYWNrYWdlIHRvIHBhY2thZ2UgU3lzdGVtLlN0YWNrX0NoZWNraW5nLk9wZXJhdGlvbnMuCglUaGlzIHdheSwgc3RhY2sgY2hlY2tpbmcgb3BlcmF0aW9ucyBhcmUgb25seSBsaW5rZWQgaW4gdGhlIGZpbmFsCglleGVjdXRhYmxlIHdoZW4gdXNpbmcgdGhlIC1mc3RhY2stY2hlY2sgZmxhZy4KCjIwMDQtMDMtMTggIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbiBbVk1TXTogSGFuZGxlIDY0IGJpdCBzcGVjcyAoNXFzeXN0ZW0uYWRzLCA1eGNydGwuYWRzKS4KCVJlb3JnYW5pemUgaWZlcSdzLgoKCSogNXFzeXN0ZW0uYWRzLCA1eGNydGwuYWRzOiBOZXcgZmlsZXMuCgoyMDA0LTAzLTE4ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai5hZGIgKFJlc2V0KTogUmVzZXQgaGFzaCB0YWJsZSBGaWxlc19IdGFibGUKCgkqIHByai1lbnYuYWRiIChTb3VyY2VfUGF0aHMsIE9iamVjdF9QYXRocyk6IE5ldyB0YWJsZXMuCgkoQWRkX1RvX1NvdXJjZV9QYXRoLCBBZGRfVG9fT2JqZWN0X1BhdGgpOiBOZXcgcHJvY2VkdXJlcywgdG8gcmVwbGFjZQoJdGhlIHByb2NlZHVyZXMgQWRkX1RvX1BhdGhfRmlsZS4KCShTZXRfQWRhX1BhdGhzKTogQWNjdW11bGF0ZSBzb3VyY2UgYW5kIG9iamVjdCBkaXJzIGluIHRoZSB0YWJsZXMsCgltYWtpbmcgc3VyZSB0aGF0IGVhY2ggZGlyZWN0b3J5IGlzIHByZXNlbnQgb25seSBvbmNlIGFuZCwgZm9yIG9iamVjdAoJZGlycywgd2hlbiBhIGRpcmVjdG9yeSBhbHJlYWR5IHByZXNlbnQgaXMgYWRkZWQsIHRoZSBkdXBsaWNhdGUgaXMKCXJlbW92ZWQgYW5kIHRoZSBkaXJlY3RvcnkgaXMgYWx3YXlzIHB1dCBhcyB0aGUgbGFzdCBpbiB0aGUgdGFibGUuCglXcml0ZSB0aGUgcGF0aCBmaWxlcyBhdCB0aGUgZW5kIG9mIHRoZXNlIGFjY3VtdWxhdGlvbnMuCgoJKiBwcmotbm1zYy5hZGIgKFJlY29yZF9Tb3VyY2UpOiBBZGQgc291cmNlIGZpbGUgbmFtZSBpbiBoYXNoIHRhYmxlCglGaWxlc19IdGFibGUgZm9yIGFsbCBzb3VyY2VzLgoKCSogcHJqLXByb2MuYWRiIChQcm9jZXNzKTogUmVtb3ZlIHJlc3RyaWN0aW9ucyBiZXR3ZWVuIG5vdCBkaXJlY3RseQoJcmVsYXRlZCBleHRlbmRpbmcgcHJvamVjdHMuCgoyMDA0LTAzLTE4ICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFjdC1ldXJvcGUuZnI+CgoJKiBwcmotbm1zYy5hZHMsIHByai1ubXNjLmFkYiAoQWRhX0NoZWNrKTogTmV3IHBhcmFtZXRlciBUcnVzdGVkX01vZGUuCgkoRmluZF9Tb3VyY2VzKTogTWlub3Igc3BlZWQgb3B0aW1pemF0aW9uLgoKCSogcHJqLXByb2MuYWRzLCBwcmotcHJvYy5hZGIgKENoZWNrLCBSZWN1cnNpdmVfQ2hlY2ssIFByb2Nlc3MpOiBOZXcKCXBhcmFtZXRlciBUcnVzdGVkX01vZGUuCgoyMDA0LTAzLTE4ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogc2NuLmFkYiAoRGV0ZXJtaW5lX0xpY2Vuc2UpOiBUYWtlIGludG8gYWNjb3VudCBhIGRlZ2VuZXJhdGVkIGNhc2UKCXdoZW4gdGhlIHNvdXJjZSBjb250YWlucyBvbmx5IGNvbW1lbnRzLgoKMjAwNC0wMy0xOCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX3dhcm4uYWRiIChDaGVja19SZWZlcmVuY2VzKTogRm9yIGEgd2FybmluZyBvbiBhIHNlbGVjdGVkCgljb21wb25lbnQgdGhhdCBkb2VzIG5vdCBjb21lIGZyb20gc291cmNlLCBsb2NhdGUgYW4gdW5pbml0aWFsaXplZAoJY29tcG9uZW50IG9mIHRoZSByZWNvcmQgdHlwZSB0byBwcm9kdWNlIGEgbW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2UuCgoyMDA0LTAzLTE1ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIDN6c29jY29uLmFkczogRml4IG11bHRpY2FzdCBvcHRpb25zLgoKCSogcy10aHJlYWQuYWRzOiBNb3ZlIHVuY2hlY2tlZCBjb252ZXJzaW9uIGZyb20gQVRTRF9BY2Nlc3MgdG8gQWRkcmVzcwoJaW4gdGhlIHNwZWMuCgoyMDA0LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9wcmFnLmFkYjogTWFrZSBzdXJlIE5vX1N0cmljdF9BbGlhc2luZyBmbGFnIGlzIHNldCByaWdodCB3aGVuCglwcmFnbWEgdXNlZCBmb3IgYSBwcml2YXRlIHR5cGUuCgoJKiBsaWIteHJlZi5hZGIgKEdlbmVyYXRlX1JlZmVyZW5jZSk6IERvIG5vdCBnZW5lcmF0ZSB3YXJuaW5nIGlmCglyZWZlcmVuY2UgaXMgaW4gYSBkaWZmZXJlbnQgdW5pdCBmcm9tIHRoZSBwcmFnbWEgVW5yZWZlcmVuY2VkLgoKCSogNXZ0cG9wZGUuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUZpeCBjYXNpbmcgb2YgVG9fVGFza19JRAoKCSogc2VtX2NoMTMuYWRiIChWYWxpZGF0ZV9VbmNoZWNrZWRfQ29udmVyc2lvbik6IFNldCBOb19TdHJpY3RfQWxpYXNpbmcKCWZsYWcgaWYgd2UgaGF2ZSBhbiB1bmNoZWNrZWQgY29udmVyc2lvbiB0byBhbiBhY2Nlc3MgdHlwZSBpbiB0aGUgc2FtZQoJdW5pdC4KCjIwMDQtMDMtMTUgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBhLW5nY290eS5hZGIgKE1vZHVsdXMpOiBJbiBhbHRlcm5hdGUgZm9ybXVsYSBmb3IgbGFyZ2UgcmVhbCBvcgoJaW1hZ2luYXJ5IHBhcnRzLCB1c2UgRG91YmxlIHByZWNpc2lvbiB0aHJvdWdob3V0LgoKCSogYS10aWZpaW8uYWRiIChQdXRfU2NhbGVkKTogUmVtb3ZlIHJlbWFpbmluZyBwcmFnbWEgRGVidWcuIE5vdCBvbmx5Cgl3ZSB3YW50IHRvIGJlIGFibGUgdG8gY29tcGlsZSBydW4tdGltZSB3aXRoIC1nbmF0YSBmb3IgdGVzdGluZywgYnV0Cgl0aGlzIG1heSBhbHNvIGJlIGluc3RhbnRpYXRlZCBpbiB1c2VyIGNvZGUgdGhhdCBpcyBjb21waWxlZCB3aXRoIC1nbmF0YS4KCjIwMDQtMDMtMTUgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIHMtc3RhbGliLmFkcyAoRXhjZXB0aW9uX0NvZGUpOiBOZXcgdHlwZSwgdG8gcmVwcmVzZW50IEltcG9ydC9FeHBvcnQKCWNvZGVzLiBIYXZpbmcgYSBzZXBhcmF0ZSB0eXBlIGZvciB0aGlzIGlzIHVzZWZ1bCB0byBlbmZvcmNlIGNvbnNpc3RlbmN5Cgl0aHJvdWdob3V0IHRoZSB2YXJpb3VzIHJ1bi10aW1lIHVuaXRzLgoJKEV4Y2VwdGlvbl9EYXRhKTogVXNlIEV4Y2VwdGlvbl9Db2RlIGZvciBJbXBvcnRfQ29kZS4KCgkqIHMtdm1leHRyYS5hZHMsIHMtdm1leHRhLmFkYjogVXNlIEV4Y2VwdGlvbl9Db2RlIGluc3RlYWQgb2YgYSBtaXggb2YKCU5hdHVyYWwgYW5kIEludGVnZXIgaW4gdmFyaW91cyBwbGFjZXMuCgkoUmVnaXN0ZXJfVk1TX0V4Y2VwdGlvbik6IFVzZSBCYXNlX0NvZGVfSW4gdG8gY29tcHV0ZSB0aGUgZXhjZXB0aW9uIGNvZGUKCXdpdGggdGhlIHNldmVyaXR5IGJpdHMgbWFza2VkIG9mZi4KCShSZWdpc3Rlcl9WTVNfRXhjZXB0aW9uKTogSGFuZGxlIHRoZSBhZGRpdGlvbmFsIGV4Y2VwdGlvbiBkYXRhIHBvaW50ZXIKCWFyZ3VtZW50LgoKCSogcmFpc2UuYyAoX0dOQVRfRXhjZXB0aW9uIHN0cnVjdHVyZSk6IFJlbW92ZSB0aGUgaGFuZGxlZF9ieV9vdGhlcnMKCWNvbXBvbmVudCwgbm93IHJlZmxlY3RlZCBieSBhbiBleHBvcnRlZCBhY2Nlc3Nvci4KCShpc19oYW5kbGVkX2J5KTogTmV3IHJvdXRpbmUgdG8gY29tcHV0ZSB3aGV0aGVyIHRoZSBwcm9wYWdhdGVkCglvY2N1cnJlbmNlIG1hdGNoZXMgc29tZSBoYW5kbGVyIGNob2ljZSBzcGVjaWZpY2F0aW9uLiBFeHRyYWN0ZWQgb3V0IG9mCglnZXRfYWN0aW9uX2Rlc2NyaXB0aW9uX2ZvciwgYW5kIGV4cGFuZGVkIHRvIHRha2UgY2FyZSBvZiB0aGUgVk1TCglzcGVjaWZpdGllcy4KCShnZXRfYWN0aW9uX2Rlc2NyaXB0aW9uX2Zvcik6IFVzZSBpc19oYW5kbGVkX2J5IGluc3RlYWQgb2YgYW4gZXhwbGljaXQKCWNvbXBsZXggY29uZGl0aW9uIHRvIGRlY2lkZSBpZiB0aGUgY3VycmVudCBjaG9pY2UgYXQgaGFuZCBjYXRjaGVzIHRoZQoJcHJvcGFnYXRlZCBvY2N1cnJlbmNlLgoKCSogcmFpc2UuaCAoRXhjZXB0aW9uX0NvZGUpOiBOZXcgdHlwZSBmb3IgQy4KCgkqIHJ0c2ZpbmQuYWRzIChSRV9JZCwgUkVfVW5pdF9UYWJsZSk6IEFkZAoJU3lzdGVtLlN0YW5kYXJkX0xpYnJhcnkuRXhjZXB0aW9uX0NvZGUsIHRvIGFsbG93IHJlZmVyZW5jZXMgZnJvbSB0aGUKCXByYWdtYSBpbXBvcnQvZXhwb3J0IGV4cGFuZGVyLgoKCSogYS1leGV4cHIuYWRiIChJc19IYW5kbGVkX0J5X090aGVycywgTGFuZ3VhZ2VfRm9yLCBJbXBvcnRfQ29kZV9Gb3IpOgoJTmV3IGFjY2Vzc29ycyB0byBhbGxvdyBlYXN5IGFjY2VzcyB0byBHTkFUIGV4Y2VwdGlvbiBkYXRhCgljaGFyYWN0ZXJpc3RpY3MuCgkoR05BVF9HQ0NfRXhjZXB0aW9uIHJlY29yZCwgUHJvcGFnYXRlX0V4Y2VwdGlvbik6IEdldCByaWQgb2YgdGhlCglyZWR1bmRhbnQgSGFuZGxlZF9CeV9PdGhlcnMgY29tcG9uZW50LCBoZWxwZXIgZm9yIHRoZSBwZXJzb25hbGl0eQoJcm91dGluZSB3aGljaCB3aWxsIG5vdyBiZSBhYmxlIHRvIGNhbGwgdGhlIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbiBkYXRhCglhY2Nlc3NvciBpbnN0ZWFkLgoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX1N0YW5kYXJkKTogQWRqdXN0IHRoZSB0eXBlIG9mIHRoZSBJbXBvcnRfQ29kZQoJY29tcG9uZW50IG9mIFN0YW5kYXJkX0V4Y2VwdGlvbl9UeXBlIHRvIGJlIHRoZSBjbG9zZXN0IHBvc3NpYmxlIHRvCglFeGNlcHRpb25fQ29kZSBpbiBTeXN0ZW0uU3RhbmRhcmRfTGlicmFyeSwgdGhhdCB3ZSBjYW5ub3QgZ2V0IGF0IHRoaXMKCXBvaW50LiBFeHBhbmQgYSA/Pz8gY29tbWVudCB0byBub3RpZnkgdGhhdCB0aGlzIHR5cGUgbm9kZSBzaG91bGQKCXByb2JhYmx5IGJlIHJld3JpdHRlbiBsYXRlciBvbi4KCgkqIGV4cF9wcmFnLmFkYiAoRXhwYW5kX1ByYWdtYV9JbXBvcnRfRXhwb3J0X0V4Y2VwdGlvbik6IEFkanVzdCB0aGUKCXJlZ2lzdHJhdGlvbiBjYWxsIHRvIGluY2x1ZGUgYSBwb2ludGVyIHRvIHRoZSBleGNlcHRpb24gb2JqZWN0IGluIHRoZQoJYXJndW1lbnRzLgoKCSogaW5pdC5jIChfX2duYXRfZXJyb3JfaGFuZGxlcik6IFVzZSBFeGNlcHRpb25fQ29kZSBhbmQgQmFzZV9Db2RlX0luCglpbnN0ZWFkIG9mIGludCBhbmQgZXhwbGljaXQgYml0bWFza3MuCgoyMDA0LTAzLTE1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHZtc19kYXRhLmFkczogQWRkIG5ldyBHTkFUIEJJTkQgcXVhbGlmaWVyIC9TVEFUSUMuIE1ha2VzIC9OT1NIQVJFRAoJZXF1aXZhbGVudCB0byAvU1RBVElDIGFuZCAvTk9TVEFUSUMgZXF1aXZhbGVudCB0byAvU0hBUkVELgoKCSogYS10YXNhdHQuYWRiIChUb19BY2Nlc3NfQ29kZSk6IFJlbW92ZSB0aGlzIFVDIGluc3RhbnRpYXRpb24sIG5vCglsb25nZXIgbmVlZGVkIG5vdyB0aGF0IGl0IGlzIGluIHRoZSBzcGVjIG9mCglTeXN0ZW0uVGFza2luZy5UYXNrX0F0dHJpYnV0ZXMuCgoJKiBhZGFpbnQuaCwgYWRhaW50LmM6IChfX2duYXRfY3JlYXRlX291dHB1dF9maWxlKTogTmV3IGZ1bmN0aW9uCgoJKiBnbmF0Y21kLmFkYjogRml4IGJ1ZyBpbnRyb2R1Y2VkIGluIHByZXZpb3VzIHJldjogLz0gaW5zdGVhZCBvZiA9CgoJKiBnLW9zX2xpYi5hZHMsIGctb3NfbGliLmFkYiAoQ3JlYXRlX091dHB1dF9UZXh0X0ZpbGUpOiBOZXcgZnVuY3Rpb24uCgoJKiBtYWtlLmFkYiAoR25hdG1ha2UpOiBEbyBub3QgY2hlY2sgdGhlIGV4ZWN1dGFibGUgc3VmZml4OyBpdCBpcyBiZWluZwoJdGFrZW4gY2FyZSBvZiBpbiBTY2FuX01ha2VfQXJnLgoJKFNjYW5fTWFrZV9BcmcpOiBBZGQgdGhlIGV4ZWN1dGFibGUgc3VmZml4IG9ubHkgaWYgdGhlIGFyZ3VtZW50Cglmb2xsb3dpbmcgLW8sIGluIGNhbm9uaWNhbCBjYXNlLCBkb2VzIG5vdCBlbmQgd2l0aCB0aGUgZXhlY3V0YWJsZQoJc3VmZml4LiAgV2hlbiBpbiB2ZXJib3NlIG1vZGUgYW5kIGV4ZWN1dGFibGUgZmlsZSBuYW1lIGRvZXMgbm90IGVuZAoJd2l0aCBleGVjdXRhYmxlIHN1ZmZpeCwgb3V0cHV0IHRoZSBleGVjdXRhYmxlIG5hbWUsIGluIGNhbm9uaWNhbCBjYXNlLgoKCSogcy10YXRhYXQuYWRzIChBY2Nlc3NfRHVtbXlfV3JhcHBlcik6IEFkZCBwcmFnbWEgTm9fU3RyaWN0X0FsaWFzaW5nCgl0byBhdm9pZCB3YXJuaW5ncyB3aGVuIGluc3RhbnRpYXRpbmcgQWRhLlRhc2tfQXR0cmlidXRlcy4KCU1pbm9yIHJlZm9ybWF0aW5nLgoKCSogbWxpYi1wcmouYWRiIChQcm9jZXNzX0ltcG9ydGVkX0xpYnJhcmllcyk6IEdldCB0aGUgaW1wb3J0ZWQgbGlicmFyaWVzCglpbiB0aGUgY29ycmVjdCBvcmRlci4KCgkqIHByai1tYWtyLmFkYiAoUHJvY2Vzc19EaXJlY3RvcnkpOiBObyBsb25nZXIgdXNlIEdOQVQuRXhwZWN0LCBidXQKCXJlZGlyZWN0IHN0YW5kYXJkIG91dHB1dCBhbmQgZXJyb3IgdG8gYSBmaWxlIGZvciB0aGUgaW52b2NhdGlvbiBvZiB0aGUKCWNvbXBpbGVyLCB0aGVuIHJlYWQgdGhlIGZpbGUuCgoJKiBwcmotbm1zYy5hZGIgKEZpbmRfU291cmNlcyk6IFVzZSB0aGUgRGlzcGxheV9WYWx1ZSBmb3IgZWFjaAoJZGlyZWN0b3J5LCBpbnN0ZWFkIG9mIHRoZSBWYWx1ZS4KCShGaW5kX1NvdXJjZV9EaXJzKTogUmVtb3ZlIHVzZWxlc3MgY29kZSAmIGNvbW1lbnRzLgoKMjAwNC0wMy0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoMy5hZGIgKEZyZWV6ZV9SZWNvcmRfVHlwZSk6IElmIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiBvZiBhCgl0YWdnZWQgdHlwZSBpcyBpbmhlcml0ZWQsIGFuZCB0aGUgcGFyZW50IG9wZXJhdGlvbiBpcyBub3QgZnJvemVuIHlldCwKCWZvcmNlIGdlbmVyYXRpb24gb2YgYSBmcmVlemUgbm9kZSBmb3IgdGhlIGluaGVyaXRlZCBvcGVyYXRpb24sIHNvIHRoZQoJY29ycmVzcG9uZGluZyBkaXNwYXRjaCBlbnRyeSBpcyBwcm9wZXJseSBpbml0aWFsaXplZC4KCShNYWtlX1ByZWRlZmluZWRfUHJpbWl0aXZlX1NwZWNzKTogQ2hlY2sgdGhhdCByZXR1cm4gdHlwZSBpcyBCb29sZWFuCgl3aGVuIGxvb2tpbmcgZm9yIHVzZXItZGVmaW5lZCBlcXVhbGl0eSBvcGVyYXRpb24uCgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX0NvbXBvc2l0ZV9FcXVhbGl0eSk6IENoZWNrIHRoYXQgcmV0dXJuIHR5cGUgaXMKCWJvb2xlYW4gd2hlbiBsb2NhdGluZyBwcmltaXRpdmUgZXF1YWxpdHkgb2YgdGFnZ2VkIGNvbXBvbmVudC4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfQXNzaWduX0FycmF5KTogSWYgdGhlIGxlZnQtaGFuZCBzaWRlIGlzIGEKCWJpdC1hbGlnbmVkIGZpZWxkIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGEgc3RyaW5nIGxpdGVyYWwsIGludHJvZHVjZQoJYSB0ZW1wb3JhcnkgYmVmb3JlIGV4cGFuZGluZyBhc3NpZ25tZW50IGludG8gYSBsb29wLgoKCSogZXhwX2NoOS5hZGIgKEV4cGFuZF9OX1Rhc2tfVHlwZV9EZWNsYXJhdGlvbik6IENvcHkgZXhwcmVzc2lvbiBmb3IKCXByaW9yaXR5IGluIGZ1bGwsIHRvIGVuc3VyZSB0aGF0IGFueSBleHBhbmRlZCBzdWJlcHhyZXNzaW9ucyBvZiBpdCBhcmUKCWVsYWJvcmF0ZWQgaW4gdGhlIHNjb3BlIG9mIHRoZSBpbml0X3Byb2MuCgoJKiBleHBfcHJhZy5hZGIgKEV4cGFuZF9QcmFnbWFfSW1wb3J0KTogU2VhcmNoIGZvciBpbml0aWFsaXphdGlvbiBjYWxsCglhZnRlciBvYmplY3QgZGVjbGFyYXRpb24sIHNraXBwaW5nIG92ZXIgY29kZSB0aGF0IG1heSBoYXZlIGJlZW4KCWdlbmVyYXRlZCBmb3IgdmFsaWRpdHkgY2hlY2tzLgoKCSogc2VtX2NoMTIuYWRiIChWYWxpZGF0ZV9Qcml2YXRlX1R5cGVfSW5zdGFuY2UpOiBJZiB0eXBlIGhhcyB1bmtub3duCglkaXNjcmltaW5hbnRzLCBpZ25vcmUgdGhlIGtub3duIGRpc2NyaW1pbmFudHMgb2YgaXRzIGZ1bGwgdmlldywgaWYKCWFueSwgdG8gY2hlY2sgbGVnYWxpdHkuCgoJKiBzZW1fY2gzLmFkYiAoQ29tcGxldGVfUHJpdmF0ZV9TdWJ0eXBlKTogRG8gbm90IGNyZWF0ZSBjb25zdHJhaW5lZAoJY29tcG9uZW50IGlmIHR5cGUgaGFzIHVua25vd24gZGlzY3JpbWluYW50cy4KCShBbmFseXplX1ByaXZhdGVfRXh0ZW5zaW9uX0RlY2xhcmF0aW9uKTogRGlzY3JpbWluYW50IGNvbnN0cmFpbnQgaXMKCW51bGwgaWYgdHlwZSBoYXMgdW5rbm93biBkaXNjcmltaW5hbnRzLgoKCSogc2VtX2NoNi5hZGIgKEFuYWx5emVfR2VuZXJpY19TdWJwcm9ncmFtX0JvZHkpOiBHZW5lcmF0ZSByZWZlcmVuY2UKCWZvciBlbmQgbGFiZWwgd2hlbiBwcmVzZW50LgoKCSogcy1maWxlaW8uYWRiIChPcGVuKTogV2hlbiBjYWxsZWQgd2l0aCBhIENfU3RyZWFtLCB1c2UgZ2l2ZW4gbmFtZSBmb3IKCXRlbXBvcmFyeSBmaWxlLCByYXRoZXIgdGhhbiBhbiBlbXB0eSBzdHJpbmcuCgoyMDA0LTAzLTE1ICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogcy10aHJlYWQuYWRiOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCjIwMDQtMDMtMTUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKHRhcmdldC5oKTogTm93IGluY2x1ZGUuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfQWNjZXNzX1R5cGUpOiBVc2UgbW9kZSBkZXJpdmVkIGZyb20gRVNJWkUKCWluIG5ldyBidWlsZF9wb2ludGVyX2Zyb21fbW9kZSBjYWxscyBmb3Igbm9uLWZhdC9ub24tdGhpbiBwb2ludGVyLgoJKHZhbGlkYXRlX3NpemUpOiBGb3IgUE9JTlRFUl9UWVBFLCBnZXQgc21hbGxlc3Qgc2l6ZSBwZXJtaXR0ZWQgb24KCW1hY2hpbmUuCgoJKiBmZS5oOiBTb3J0IEVpbmZvIGRlY2xzIGFuZCBhZGQgU2V0X01lY2hhbmlzbS4KCgkqIE1ha2VmaWxlLmluOiAoTElCR05BVF9TUkNTKTogUmVtb3ZlIHR5cGVzLmguCgkoYWRhL2RlY2wubyk6IERlcGVuZHMgb24gdGFyZ2V0LmguCgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgTl9VbmNoZWNrZWRfVHlwZV9Db252ZXJzaW9uKTogRG8gbm90IHVzZQoJRlVOQ1RJT05fQk9VTkRBUlk7IGFsd2F5cyB1c2UgVFlQRV9BTElHTi4KCjIwMDQtMDMtMTUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIDV6dHBvcHNwLmFkYiwgNTZ0cG9wc3AuYWRiOiBGaXggc3BlbGxpbmcgb2YgVGFza19JRC4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9JbmRleGVkX0NvbXBvbmVudCk6IERvIG5vdCBjYWxsCglJbnNlcnRfRGVyZWZlcmVuY2VfQWN0aW9uIHdoZW4gcmV3cml0aW5nIGFuIGltcGxpY2l0IGRlcmVmZXJlbmNlIGludG8KCWFuIGV4cGxpY2l0IG9uZSwgdGhpcyB3aWxsIGJlIHRha2VuIGNhcmUgb2YgZHVyaW5nIGV4cGFuc2lvbiBvZiB0aGUKCWV4cGxpY2l0IGRlcmVmZXJlbmNlLgoJKEV4cGFuZF9OX1NsaWNlKTogU2FtZS4gQWx3YXlzIGRvIHRoZSByZXdyaXRpbmcsIGV2ZW4gZm9yIHRoZSBjYXNlCglvZiBub24tcGFja2VkIHNsaWNlcywgc2luY2UgdGhlIGRlcmVmZXJlbmNlIGFjdGlvbiBnZW5lcmF0ZWQgYnkKCWV4cGFuc2lvbiBvZiB0aGUgZXhwbGljaXQgZGVyZWZlcmVuY2UgaXMgbmVlZGVkIGluIGFueSBjYXNlLgoJKEV4cGFuZF9OX1NlbGVjdGVkX0NvbXBvbmVudCk6IFdoZW4gcmV3cml0aW5nIGFuIGltcGxpY2l0IGRlcmVmZXJlbmNlLAoJYW5hbHl6ZSBhbmQgcmVzb2x2ZSB0aGUgcmV3cml0dGVuIGV4cGxpY2l0IGRlcmVmZXJlbmNlIHNvIGl0IGlzIHNlZW4KCWJ5IHRoZSBleHBhbmRlci4KCShJbnNlcnRfRGVyZWZlcmVuY2VfQWN0aW9uKTogVGhpcyBwcm9jZWR1cmUgaXMgbm93IGNhbGxlZCBvbmx5IGZvciB0aGUKCWV4cGFuc2lvbiBvZiBhbiBOX0V4cGxjaXRfRGVyZWZlcmVuY2VfTm9kZS4gRG8gaW5zZXJ0IGEgY2hlY2sgZXZlbiBmb3IKCWRlcmVmZXJlbmNlcyB0aGF0IGRvIG5vdCBjb21lIGZyb20gc291cmNlIChpbmNsdWRpbmcgZXhwbGljaXQKCWRlcmVmZXJlbmNlcyByZXN1bHRpbmcgZnJvbSByZXdyaXRpbmcgaW1wbGljaXQgb25lcyksIGJ1dCBkbyBub3QKCXJlY3Vyc2l2ZWx5IGluc2VydCBhIGNoZWNrIGZvciB0aGUgZGVyZWZlcmVuY2Ugbm9kZXMgY29udGFpbmVkIHdpdGhpbgoJdGhlIGNoZWNrLgoJKEluc2VydF9EZXJlZmVyZW5jZV9BY3Rpb24pOiBDbGFyaWZ5IGFuZCBjb3JyZWN0IGNvbW1lbnQuCgoyMDA0LTAzLTA4ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCVBSIGFkYS8xNDEzMQoJTW92ZSBsYW5ndWFnZSBkZXRlY3Rpb24gdG8gdGhlIHRvcCBsZXZlbC4KCSogY29uZmlnLWxhbmcuaW46IEJ1aWxkIGJ5IGRlZmF1bHQuCgoyMDA0LTAzLTA1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIDU2dGFwcm9wLmFkYiwgNWF0YXByb3AuYWRiOiBSZW1vdmUgdW5uZWVkZWQgdW5jaGVja2VkIGNvbnZlcnNpb25zCgoJKiBhLXRhZ3MuYWRiLCBhLXRhZ3MuYWRzLCBzLWZpbmltcC5hZGIsIHMtZmlucm9vLmFkcywKCWktY3BvaW50LmFkcywgaS1jcG9pbnQuYWRiLCBpLWNzdHJpbi5hZGIsIGktY3N0cmluLmFkcywKCTVpb3NpbnRlLmFkcywgNXNvc2ludGUuYWRzLCA1c3Rhc3ByaS5hZHMsIDVpdGFwcm9wLmFkYiwKCTVzdGFwcm9wLmFkYiwgNXd0YXByb3AuYWRiLCBzLXRhdGFhdC5hZHMsIHMtdGF0YWF0LmFkYjogTW92ZQoJdW5jaGVja2VkIGNvbnZlcnNpb24gdG8gc3BlYyB0byBhdm9pZCB3YXJuaW5ncy4KCgkqIHMtdGFzaW5pLmFkYiwgcy10YXNraW4uYWRzLCA1YXRwb3BzcC5hZGI6IENvcnJlY3Qgc3BlbGxpbmcgVGFza19JZAoJdG8gVGFza19JRAoKCSogN3N0cG9wc3AuYWRiOiBDb3JyZWN0IGNhc2luZyBpbiBUb19UYXNrX0lEIGNhbGwKCgkqIGEtc3Ryc2VhLmFkcywgYS1zdHJzZWEuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiOiBEZWZpbmUgbmV3IGZsYWcgTm9fU3RyaWN0X0FsaWFzaW5nCgoJKiBlcnJvdXQuYWRzOiBTd2l0Y2ggZm9yIFZNUyBpcyBub3cgTk9fU1RSSUNUX0FMSUFTSU5HLgoJQWRqdXN0IE1heF9Nc2dfTGVuZ3RoIHRvIGJlIGNsZWFybHkgbGFyZ2UgZW5vdWdoLgoKCSogZmUuaDogRGVmaW5lIEluX1NhbWVfU291cmNlX1VuaXQKCgkqIG9zaW50LmFkYjogQWRkIHByYWdtYSBXYXJuaW5ncyBPZmYgdG8gc3VwcHJlc3Mgd2FybmluZ3MKCSogZy1keW50YWIuYWRiLCBnLXRhYmxlLmFkYiwgZy10aHJlYWQuYWRiOiBBZGQgV2FybmluZ3MgKE9mZikgdG8ga2lsbAoJYWxpYXNpbmcgd2FybmluZ3MuCgoJKiBvcHQuYWRzOiBQdXQgZW50cmllcyBpbiBhbHBoYSBvcmRlci4gQWRkIGVudHJ5IGZvciBOb19TdHJpY3RfQWxpYXNpbmcKCgkqIHBhci1wcmFnLmFkYjogQWRkIGR1bW15IGVudHJ5IGZvciBOb19TdHJpY3RfQWxpYXNpbmcgcHJhZ21hCgoJKiBzZW1fY2gxMy5hZGI6IEdlbmVyYXRlIHZhbGlkYXRlIHVuY2hlY2tlZCBjb252ZXJzaW9uIG5vZGVzIGZvciBnY2MuCgoJKiBzZW1fY2gzLmFkYjogU2V0IE5vX1N0cmljdF9BbGlhc2luZyBmbGFnIGlmIGNvbmZpZyBwcmFnbWEgc2V0LgoKCSogc2VtX3ByYWcuYWRiOiBJbXBsZW1lbnQgcHJhZ21hIE5vX1N0cmljdF9BbGlhc2luZy4KCgkqIHNpbmZvLmFkczogUmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQgb24gdmFsaWRhdGUgdW5jaGVja2VkIGNvbnZlcnNpb24KCW5vZGUuIFdlIG5vdyBkbyBnZW5lcmF0ZSB0aGVtIGZvciBnY2MgYmFjayBlbmQuCgoJKiB0YWJsZS5hZGIsIHNpbnB1dC5hZGI6IEFkZCBwcmFnbWEgV2FybmluZ3MgT2ZmIHRvIHN1cHByZXNzIGFsaWFzaW5nCgl3YXJuaW5nLgoKCSogc2lucHV0LWMuYWRiOiBGaXggYmFkIG5hbWUgaW4gaGVhZGVyLgoJQWRkIHByYWdtYSBXYXJuaW5ncyBPZmYgdG8gc3VwcHJlc3MgYWxpYXNpbmcgd2FybmluZy4KCgkqIHNpbnB1dC1sLmFkYjogQWRkIHByYWdtYSBXYXJuaW5ncyBPZmYgdG8gc3VwcHJlc3MgYWxpYXNpbmcgd2FybmluZy4KCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgZW50cnkgZm9yIHByYWdtYQoJTm9fU3RyaWN0X0FsaWFzaW5nLgoKMjAwNC0wMy0wNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotY29tLmFkczogQWRkIGhhc2ggdGFibGUgRmlsZXNfSHRhYmxlIHRvIGNoZWNrIHdoZW4gYSBmaWxlIG5hbWUKCWlzIGFscmVhZHkgYSBzb3VyY2Ugb2YgYW5vdGhlciBwcm9qZWN0LgoKCSogcHJqLW5tc2MuYWRiIChSZWNvcmRfU291cmNlKTogQmVmb3JlIHJlY29yZGluZyBhIG5ldyBzb3VyY2UsIGNoZWNrCglpZiBpdHMgZmlsZSBuYW1lIGlzIG5vdCBhbHJlYWR5IGEgc291cmNlIG9mIGFub3RoZXIgcHJvamVjdC4gUmVwb3J0IGFuCgllcnJvciBpZiBpdCBpcy4KCgkqIGduYXRjbWQuYWRiOiBXaGVuIEdOQVQgUFJFVFRZIGlzIGludm9rZWQgd2l0aCBhIHByb2plY3QgZmlsZSBhbmQgbm8KCXNvdXJjZSBmaWxlIG5hbWUsIGNhbGwgZ25hdHBwIHdpdGggYWxsIHRoZSBzb3VyY2VzIG9mIHRoZSBtYWluIHByb2plY3QuCgoJKiB2bXNfY29udi5hZGIgKEluaXRpYWxpemUpOiBHTkFUIFBSRVRUWSBtYXkgYmUgY2FsbGVkIHdpdGggYW55IG51bWJlcgoJb2YgZmlsZSBuYW1lcy4KCgkqIHZtc19kYXRhLmFkczogQ29ycmVjdCBkb2N1bWVudGF0aW9uIG9mIG5ldyAvT1BUSU1JWkUga2V5d29yZAoJTk9fU1RSSUNUX0FMSUFTSU5HLiBBZGQgbmV3IHF1YWxpZmllciBmb3IgR05BVCBQUkVUVFk6CgkvUlVOVElNRV9TWVNURU09LCBjb252ZXJ0ZWQgdG8gLS1SVFM9CgkvTk9UQUJTLCBjb252ZXJ0ZWQgdG8gLW5vdGFicwoKMjAwNC0wMy0wNSAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogbWFrZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDQtMDMtMDUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQYXJ0IG9mIGltcGxlbWVudGlvbiBvZiBBSS0yNjIuCgkqIHBhci1jaDEwLmFkYiAoUF9Db250ZXh0X0NsYXVzZSk6IFJlY29nbml6ZSBwcml2YXRlIHdpdGhfY2xhdXNlcy4KCgkqIHNlbV9jaDEwLmFkcywgc2VtX2NoMTAuYWRiOiAoSW5zdGFsbF9Qcml2YXRlX1dpdGhfQ2xhdXNlcyk6IE5ldwoJcHJvY2VkdXJlLgoKCSogc2VtX2NoMy5hZGIgKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlCgl3aGVuIGNvbXBvbmVudCB0eXBlIGlzIGEgcGFydGlhbGx5IGNvbnN0cmFpbmVkIGNsYXNzLXdpZGUgc3VidHlwZS4KCShDb25zdHJhaW5fRGlzY3JpbWluYXRlZF9UeXBlKTogSWYgcGFyZW50IHR5cGUgaGFzIHVua25vd24KCWRpc2NyaW1pbmFudHMsIGEgY29uc3RyYWludCBpcyBpbGxlZ2FsLCBldmVuIGlmIGZ1bGwgdmlldyBoYXMKCWRpc2NyaW1pbmFudHMuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IEluaGVyaXQgZGlzY3JpbWluYW50cyB3aGVuIGRlcml2aW5nIGEgdHlwZQoJd2l0aCB1bmtub3duIGRpc2NyaW1pbmFudHMgd2hvc2UgZnVsbCB2aWV3IGlzIGEgZGlzY3JpbWluYXRlZCByZWNvcmQuCgoJKiBzZW1fY2g3LmFkYiAoUHJlc2VydmVfRnVsbF9BdHRyaWJ1dGVzKTogUHJlc2VydmUgSGFzX0Rpc2NyaW1pbmFudHMKCWZsYWcsIHRvIGhhbmRsZSBwcm9wZXJseSBkZXJpdmF0aW9ucyBvZiB0YWdnZWQgdHlwZXMgd2l0aCB1bmtub3duCglkaXNjcmltaW5hbnRzLgoJKEFuYWx5emVfUGFja2FnZV9TcGVjLCBBbmFseXplX1BhY2thZ2VfQm9keSk6IEluc3RhbGwKCVByaXZhdGVfV2l0aF9DbGF1c2VzIGJlZm9yZSBhbmFseXppbmcgcHJpdmF0ZSBwYXJ0IG9yIGJvZHkuCgoJKiBlaW5mby5hZHM6IEluZGljYXRlIHRoYXQgYm90aCBIYXNfVW5rbm93bl9EaXNjcmltaW5hbnRzIGFuZAoJSGFzX0Rpc2NyaW1pbmFudHMgY2FuIGJlIHRydWUgZm9yIGEgZ2l2ZW4gdHlwZSAoZG9jdW1lbnRhdGlvbikuCgoyMDA0LTAzLTA1ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIHMtcmVzdHJpLmFkczogRml4IGxpY2Vuc2UgKEdQTC0+R01HUEwpLgoKCSogcy10YXNzdGEuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBzLXRhc3Jlbi5hZGI6IFJlcGxhY2UgbWFudWFsIGhhbmRsaW5nIG9mIFNlbGZfSWQuQVRDX05lc3RpbmdfTGV2ZWwKCWJ5IGNhbGxzIHRvIEV4aXRfT25lX0FUQ19MZXZlbCwgc2luY2UgYWRkaXRpb25hbCBjbGVhbiB1cCBpcyBwZXJmb3JtZWQKCWJ5IHRoaXMgZnVuY3Rpb24uCgoJKiBzLXRwb2JvcC5hZGI6IFJlcGxhY2UgbWFudWFsIGhhbmRsaW5nIG9mIFNlbGZfSWQuQVRDX05lc3RpbmdfTGV2ZWwKCWJ5IGNhbGxzIHRvIEV4aXRfT25lX0FUQ19MZXZlbCwgc2luY2UgYWRkaXRpb25hbCBjbGVhbiB1cCBpcyBwZXJmb3JtZWQKCWJ5IHRoaXMgZnVuY3Rpb24uCgoyMDA0LTAzLTA1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJhbnMuYzogUmVmbGVjdCBHQ0MgY2hhbmdlcyB0byBmaXggYm9vdHN0cmFwIHByb2JsZW0uCglBZGQgd2FybmluZyBmb3Igc3VzcGljaW91cyBhbGlhc2luZyB1bmNoZWNrZWQgY29udmVyc2lvbi4KCjIwMDQtMDMtMDUgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDMtMDIgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWN0LWV1cm9wZS5mcj4KCgkqIGFsaS5hZGIgKFJlYWRfSW5zdGFudGlhdGlvbl9JbnN0YW5jZSk6IERvIG5vdCBtb2RpZnkgdGhlCgljdXJyZW50X2ZpbGVfbnVtIHdoZW4gcmVhZGluZyBpbmZvcm1hdGlvbiBhYm91dCBpbnN0YW50aWF0aW9ucywgc2luY2UKCXRoaXMgY29ycnVwdHMgZmlsZXMgaW4gbGF0ZXIgcmVmZXJlbmNlcy4KCjIwMDQtMDMtMDIgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogYmNoZWNrLmFkYiAoQ2hlY2tfQ29uc2lzdGVuY3kpOiBHZXQgdGhlIGZ1bGwgcGF0aCBvZiBhbiBBTEkgZmlsZQoJYmVmb3JlIGNoZWNraW5nIGlmIGl0IGlzIHJlYWQtb25seS4KCgkqIGJsZC5hZGIgKFJlY3Vyc2l2ZV9Qcm9jZXNzKTogQ29uY2F0ZW5hdGUgPFBST0pFQ1Q+LnNyY19kaXJzIGluIGZyb250CglvZiBTUkNfRElSUyBhbmQgZWxpbWluYXRlIGR1cGxpY2F0ZXMuCgoJKiBncHJjbWQuYWRiOiBSZXBsYWNlIGNvbW1hbmQgInBhdGgiIHdpdGggY29tbWFuZCAicGF0aF9zZXAiIHRvIHJldHVybgoJdGhlIHBhdGggc2VwYXJhdG9yLgoJKFVzYWdlKTogRG9jdW1lbnQgcGF0aF9zZXAKCgkqIE1ha2VmaWxlLmdlbmVyaWM6IEZvciBBZGEgYW5kIEdOVSBDKysgY2FzZXMsIGxpbmsgZGlyZWN0bHkgd2l0aCB0aGUKCUMrKyBjb21waWxlci4gTm8gbmVlZCBmb3IgYSBzY3JpcHQuCglSZXBsYWNlIHVzZSBvZiBDKl9JTkNMVURFX1BBVEggZW52IHZhciBmb3IgR0NDIGNvbXBpbGVycyB3aXRoIENQQVRILgoJRG8gbm90IGNhbGwgZ3ByY21kIHRvIGJ1aWxkIHRoZSBDKl9JTkNMVURFX1BBVEhzLCBkbyBpdCB3aXRoIGZ1bmN0aW9uCglzdWJzdC4KCgkqIHByai1lbnYuYWRiIChGb3JfQWxsX1NvdXJjZV9EaXJzKTogT25seSBhZGQgc291cmNlIGRpcnMgaW4gcHJvamVjdAoJd2hlcmUgdGhlcmUgYXJlIEFkYSBzb3VyY2VzLgoJKFNldF9BZGFfUGF0aHMpOiBPbmx5IGFkZCB0byB0aGUgaW5jbHVkZSBwYXRoIHRoZSBzb3VyY2UgZGlycyBvZiBwcm9qZWN0Cgl3aXRoIEFkYSBzb3VyY2VzLgoJKEFkZF9Ub19QYXRoKTogQWRkIHRoZSBEaXNwbGF5X1ZhbHVlcyBvZiB0aGUgZGlyZWN0b3JpZXMsIG5vdCB0aGVpcgoJVmFsdWVzLgoKCSogcHJqLW5tc2MuYWRiIChGaW5kX1NvdXJjZXMpOiBTZXQgZmxhZyBTb3VyY2VzX1ByZXNlbnQgaW4gdGhlIHByb2plY3QKCWRhdGEuCgoJKiBwcmotbm1zYy5hZGIgKEFkZF9BTElfRm9yKTogTWFrZSBzdXJlIHRoYXQgdGhlIGVsZW1lbnQgRGlzcGxheV9WYWx1ZQoJaXMgbm90IE5vX05hbWUuCgkoRmluZF9Tb3VyY2VfRGlycyk6IFNldCBEaXNwbGF5X1ZhbHVlIHRvIGEgbm9uIGNhbm9uaWNhbGl6ZWQgdmFsdWUsIG9ubHkKCVZhbHVlIGlzIGNhbm9uaWNhbGl6ZWQuCgkoTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2spOiBEbyBub3QgY29weSBWYWx1ZSB0byBEaXNwbGF5X1ZhbHVlIHdoZW4KCWNhbm9uaWNhbGl6aW5nIFZhbHVlLgoKCSogcHJqLXBhcnQuYWRiIChQb3N0X1BhcnNlX0NvbnRleHRfQ2xhdXNlKTogQ29tcGFyZSBjYW5vbmljYWwgY2FzZWQKCXBhdGggdG8gZmluZCBsaW1pdGVkIHdpdGggY3ljbGVzLgoJKFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogVXNlIGNhbm9uaWNhbCBjYXNlZCBwYXRoIHRvIGZpbmQgdGhlIGVuZCBvZiBhCgl3aXRoIGN5Y2xlLgoKMjAwNC0wMy0wMiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMTAuYWRiIChPcHRpb25hbF9TdWJ1bml0KTogVmVyaWZ5IHRoYXQgdW5pdCBjb250YWlucyBhIHN1YnVuaXQKCWFuZCBub3QgYSBjaGlsZCB1bml0LgoKCSogc2luZm8uYWRzLCBzaW5mby5hZGI6IFJlYXJyYW5nZSBmbGFncyBzbyB0aGF0IFByaXZhdGVfUHJlc2VudCBjYW4KCWFwcGVhciBpbiBhIHdpdGhfY2xhdXNlLgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV90eXBlKTogSWYgZW50aXR5IGlzIGEgZ2VuZXJpYyB0eXBlLCB3aGljaCBjYW4KCW9ubHkgaGFwcGVuIGluIHR5cGVfYW5ub3RhdGUgbW9kZSwgZG8gbm90IHRyeSB0byBlbGFib3JhdGUgaXQuCgoJKiBleHBfdXRpbC5hZGIgKEZvcmNlX0V2YWx1YXRpb24pOiBJZiBleHByZXNzaW9uIGlzIGEgc2VsZWN0ZWQKCWNvbXBvbmVudCBvbiB0aGUgbGVmdCBvZiBhbiBhc3NpZ25tZW50LCB1c2UgYSByZW5hbWluZyByYXRoZXIgdGhhbiBhCgl0ZW1wb3JhcnkgdG8gcmVtb3ZlIHNpZGUgZWZmZWN0cy4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9FbnRpdHkpOiBEbyBub3QgZnJlZXplIGEgZ2xvYmFsIGVudGl0eSB3aXRoaW4gYW4KCWlubGluZWQgaW5zdGFuY2UgYm9keSwgd2hpY2ggaXMgYW5hbHl6ZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlCgllbmNsb3Npbmcgc2NvcGUuCgoyMDA0LTAzLTAyICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHBhci1jaDEwLmFkYiwgcGFyLWNoMy5hZGIsIHBhci1jaDQuYWRiLCBzY25nLmFkYiwKCXNlbV9jaDQuYWRiOiBVc2UgbmV3IGZlYXR1cmUgZm9yIHN1YnN0aXR1dGlvbiBvZiBrZXl3b3JkcyBpbiBWTVMKCgkqIGVycm91dC5hZHMsIGVycm91dC5hZGI6IEltcGxlbWVudCBuZXcgY2lyY3VpdCBmb3Igc3Vic3RpdHV0aW9uIG9mCglrZXl3b3JkcyBpbiBWTVMuCgoJKiBzZW1fY2FzZS5hZGIgKEFuYWx5emVfQ2hvaWNlcyk6IFBsYWNlIG1lc3NhZ2UgcHJvcGVybHkgd2hlbiBjYXNlIGlzCglhIHN1YnR5cGUgcmVmZXJlbmNlIHJhdGhlciB0aGFuIGFuIGV4cGxpY2l0IHJhbmdlLgoKCSogc2VtX2VsaW0uYWRiLCBzLXRwb2JvcC5hZHMsIGV4cF9jaDIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDQtMDMtMDIgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBpbml0LmMgKF9fZ25hdF9pbml0aWFsaXplKVtWTVNdOiBSZXNpZ25hbCBSREItRS1TVFJFQU1fRU9GLgoKMjAwNC0wMy0wMiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogcy10cG9yZnQuYWRiOiBBZGQgbWlzc2luZyBsb2NraW5nIGFyb3VuZCBjYWxsIHRvIEluaXRpYWxpemVfQVRDQi4KCjIwMDQtMDMtMDIgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB1dGlscy5jIChmaW5pc2hfcmVjb3JkX3R5cGUpOiBEbyBub3Qgc2V0IERFQ0xfTk9OQUREUkVTU0FCTEUgZm9yIGEKCUJMS21vZGUgYml0ZmllbGQuCgoyMDA0LTAyLTI1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIDUxb3NpbnRlLmFkcywgNTJvc2ludGUuYWRzLCA1M29zaW50ZS5hZHMsIDU0b3NpbnRlLmFkcywKCTU1b3NpbnRlLmFkcywgNTZvc2ludGUuYWRzLCA1YW9zaW50ZS5hZHMsIDVib3NpbnRlLmFkcywKCTVjb3NpbnRlLmFkcywgNWZvc2ludGUuYWRzLCA1Z29zaW50ZS5hZHMsIDVob3NpbnRlLmFkcywKCTVpb3NpbnRlLmFkcywgNWxvc2ludGUuYWRzLCA1bm9zaW50ZS5hZHMsIDVvb3NpbnRlLmFkcywKCTVwb3NpbnRlLmFkcywgNXNvc2ludGUuYWRzLCA1dG9zaW50ZS5hZHMsIDV2b3NpbnRlLmFkcywKCTV3b3NpbnRlLmFkcywgNXpvc2ludGUuYWRzOiBNb3ZlIGluc3RhbmNlcyBvZiBVbmNoZWNrZWRfQ29udmVyc2lvbiB0bwoJdGhlIGRlZmluaW5nIGluc3RhbmNlIG9mIHRoZSB0eXBlIHRvIGF2b2lkIGFsaWFzaW5nIHByb2JsZW1zLgoJRml4IGNvcHlyaWdodCBoZWFkZXIuICBGaXggYmFkIGNvbW1lbnRzIGluIHBhY2thZ2UgaGVhZGVyLgoKCSogZXhwX3V0aWwuYWRiLCBwcmotcGFydC5hZGIsIHByai1wYXJ0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTAyLTI1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2gyLmFkYiAoUGFyYW1fRW50aXR5KTogSGFuZGxlIHByb3Blcmx5IGZvcm1hbHMgdGhhdCBoYXZlIGJlZW4KCXJld3JpdHRlbiBhcyByZWZlcmVuY2VzIHdoZW4gYWxpYXNlZCB0aHJvdWdoIGFuIGFkZHJlc3MgY2xhdXNlLgoKCSogc2VtX2NoNC5hZGIgKFRyeV9JbmRpcmVjdF9DYWxsKTogTm9ybWFsaXplIGFjdHVhbHMgYmVmb3JlIGNoZWNraW5nCgl3aGV0aGVyIGNhbGwgY2FuIGJlIGludGVycHJldGVkIGFzIGFuIGluZGlyZWN0IGNhbGwgdG8gdGhlIHJlc3VsdCBvZiBhCglwYXJhbWV0ZXJsZXNzIGZ1bmN0aW9uIGNhbGwgcmV0dXJuaW5nIGFuIGFjY2VzcyBzdWJwcm9ncmFtLgoKMjAwNC0wMi0yNSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJQ29kZSBjbGVhbiB1cDoKCSogZXhwX2NoNy5hZGIgKE1ha2VfQ2xlYW4pOiBSZW1vdmUgZ2VuZXJhdGlvbiBvZiBjYWxscyB0bwoJVW5sb2NrW19FbnRyaWVzXSwgc2luY2UgdGhpcyBpcyBub3cgZG9uZSBieSBTZXJ2aWNlX0VudHJpZXMgZGlyZWN0bHkuCgoJKiBleHBfY2g5LmFkYiAoQnVpbGRfUHJvdGVjdGVkX1N1YnByb2dyYW1fQm9keSk6IGRpdHRvLgoKCSogcy10cG9ib3AuYWRzLCBzLXRwb2JvcC5hZGIgKFBPX1NlcnZpY2VfRW50cmllcyk6IE5ldyBuZXN0ZWQgcHJvY2VkdXJlCglSZXF1ZXVlX0NhbGwgZm9yIGJldHRlciBjb2RlIHJlYWRhYmlsaXR5LiBDaGFuZ2Ugc3BlYyBhbmQgdXBkYXRlIGNhbGxzOgoJUE9fU2VydmljZV9FbnRyaWVzIG5vdyB1bmxvY2sgdGhlIFBPIG9uIGV4aXQuCgkoUHJvdGVjdGVkX0VudHJ5X0NhbGwsIFRpbWVkX1Byb3RlY3RlZF9FbnRyeV9DYWxsKTogVXBkYXRlIGNhbGxzIHRvCglQT19TZXJ2aWNlX0VudHJpZXMuCgoJKiBzLXRwb3Nlbi5hZHMsIHMtdHBvc2VuLmFkYiAoU2VydmljZV9FbnRyeSk6IE5vdyB1bmxvY2sgdGhlIFBPIG9uIGV4aXQuCgoJKiBzLXRhZW5jYS5hZGIsIHMtdGFzcmVuLmFkYjogVXBkYXRlIGNhbGxzIHRvIFBPX1NlcnZpY2VfRW50cmllcy4KCjIwMDQtMDItMjUgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBleHBfY2g5LmFkYiAoQnVpbGRfU2ltcGxlX0VudHJ5X0NhbGwpOiBQcmV2ZW50IGV4cGFuZGluZyB0aGUKCXByb3RlY3RlZCBzdWJwcm9ncmFtIGNhbGwgYW5kIGFuYWx5emluZyB0aGUgcmVzdWx0IG9mIHN1Y2ggZXhwYW5kaW5nCglpbiBjYXNlIHdoZW4gdGhlIGNhbGxlZCBwcm90ZWN0ZWQgc3VicHJvZ3JhbSBpcyBlbGltaW5hdGVkLgoKCSogc2VtX2VsaW0uYWRiIChDaGVja19FbGltaW5hdGVkKTogU2tpcCBibG9ja3Mgd2hlbiBjb21wYXJpbmcgc2NvcGUKCW5hbWVzLgoKMjAwNC0wMi0yNSAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogQ2xlYW4gdXBzLgoKMjAwNC0wMi0yMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9OX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBEbyBub3QgY3JlYXRlCglwcm90ZWN0ZWQgb3BlcmF0aW9ucyBpZiBvcmlnaW5hbCBzdWJwcm9ncmFtIGlzIGZsYWdnZWQgYXMgZWxpbWluYXRlZC4KCShFeHBhbmRfTl9TdWJwcm9ncmFtX0JvZHkpOiBGb3IgYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLCBjcmVhdGUKCWRpc2NyaW1pbmFscyBmb3IgbmV4dCBvcGVyYXRpb24gYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgdGhlIG9wZXJhdGlvbgoJaXMgZWxpbWluYXRlZC4KCgkqIGV4cF9jaDkuYWRiIChFeHBhbmRfTl9Qcm90ZWN0ZWRfQm9keSwKCUV4cGFuZF9OX1Byb3RlY3RlZF9UeXBlX0RlY2xhcmF0aW9uKTogRG8gbm90IGdlbmVyYXRlIHNwZWNzIGFuZCBib2RpZXMKCWZvciBpbnRlcm5hbCBwcm90ZWN0ZWQgb3BlcmF0aW9ucyBpZiB0aGUgb3JpZ2luYWwgc3VicHJvZ3JhbSBpcwoJZWxpbWluYXRlZC4KCgkqIHNlbV9lbGltLmFkYiAoQ2hlY2tfRWxpbWluYXRlZCk6IEhhbmRsZSBwcm9wZXJseSBwcm90ZWN0ZWQgb3BlcmF0aW9ucwoJZGVjbGFyZWQgaW4gYSBzaW5nbGUgcHJvdGVjdGVkIG9iamVjdC4KCjIwMDQtMDItMjMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogcHJqLWF0dHIuYWRiOiBNYWtlIGF0dHJpYnV0ZSBCdWlsZGVyJ0V4ZWN1dGFibGUgYW4gYXNzb2NpYXRpdmUgYXJyYXksCgljYXNlIGluc2Vuc2l0aXZlIGlmIGZpbGUgbmFtZXMgYXJlIGNhc2UgaW5zZW5zaXRpdmUsIGluc3RlYWQgb2YgYQoJc3RhbmRhcmQgYXNzb2NpYXRpdmUgYXJyYXkuCgoJKiBwcmotYXR0ci5hZGIgKEluaXRpYWxpemUpOiBGb3IgJ2InIGFzc29jaWF0aXZlIGFycmF5cywgZG8gbm90IHNldAoJdGhlbSBhcyBjYXNlIGluc2Vuc2l0aXZlIG9uIHBsYXRmb3JtcyB3aGVyZSB0aGUgZmlsZSBuYW1lcyBhcmUgY2FzZQoJc2Vuc2l0aXZlLgoKCSogcHJqLXBhcnQuYWRiIChQYXJzZV9TaW5nbGVfUHJvamVjdCk6IE1ha2Ugc3VyZSwgd2hlbiBjaGVja2luZyBpZgoJcHJvamVjdCBmaWxlIGhhcyBhbHJlYWR5IGJlZW4gcGFyc2VkIHRoYXQgY2Fub25pY2FsIHBhdGggYXJlIGNvbXBhcmVkLgoKMjAwNC0wMi0yMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzaW5wdXQtYy5hZHM6IENvcnJlY3QgYmFkIHVuaXQgdGl0bGUgaW4gaGVhZGVyCgoJKiBmcmVlemUuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDQtMDItMjMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX1Byb2NlZHVyZV9DYWxsX1N0YXRlbWVudCk6IEZvcgoJbm9uYWRkcmVzc2FibGUgQ09NUE9ORU5UX1JFRiB0aGF0IGlzIHJlbW92aW5nIHBhZGRpbmcgdGhhdCB3ZSBhcmUKCXRha2luZyB0aGUgYWRkcmVzcyBvZiwgdGFrZSB0aGUgYWRkcmVzcyBvZiB0aGUgcGFkZGVkIHJlY29yZCBpbnN0ZWFkCglpZiBpdGVtIGlzIHZhcmlhYmxlIHNpemUuCgoyMDA0LTAyLTIwICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGJsZC5hZGIsIGV4cF91dGlsLmFkYiwgZ3ByY21kLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTAyLTIwICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfUmVjb3JkX1R5cGUpOiBHZW5lcmFsaXplIG1lY2hhbmlzbSB0aGF0IGdlbmVyYXRlcwoJaXR5cGUgcmVmZXJlbmNlcyBmb3IgdGhlIGNvbnN0cmFpbmVkIGRlc2lnbmF0ZWQgdHlwZSBvZiBhIGNvbXBvbmVudAoJd2hvc2UgYmFzZSB0eXBlIGlzIGFscmVhZHkgZnJvemVuLgoKMjAwNC0wMi0yMCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBpbml0LmMgKF9fZ25hdF9lcnJvcl9oYW5kbGVyIFt0cnU2NF0pOiBSZXdyaXRlIHByZXZpb3VzIGNoYW5nZSB0bwoJYXZvaWQgR0NDIHdhcm5pbmdzLgoKMjAwNC0wMi0yMCAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9jaDEyLmFkYiAoQW5hbHl6ZV9Gb3JtYWxfUGFja2FnZSk6IENyZWF0ZSBhIG5ldyBkZWZpbmluZwoJaWRlbnRpZmllciBmb3IgYSBwaGFudG9tIHBhY2thZ2UgdGhhdCByZXdyaXRlcyB0aGUgZm9ybWFsIHBhY2thZ2UKCWRlY2xhcmF0aW9uIHdpdGggYSBib3guIFRoZSBBZGQgc2VtYW50aWMgZGVjb3JhdGlvbnMgZm9yIHRoZSBkZWZpbmluZwoJaWRlbnRpZmllciBmcm9tIHRoZSBvcmlnaW5hbCBub2RlICh0aGF0IHJlcHJlc2VudHMgdGhlIGZvcm1hbCBwYWNrYWdlKS4KCjIwMDQtMDItMTkgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhL3N0YW1wLXNkZWZhdWx0KTogVXNlIHRoZSB0b3AgbGV2ZWwKCW1vdmUtaWYtY2hhbmdlLgoKMjAwNC0wMi0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIG1pc2MuYyAocmVjb3JkX2NvZGVfcG9zaXRpb24pOiBBZGQgdGhpcmQgYnVpbGQgYXJnIGZvciBSVExfRVhQUi4KCjIwMDQtMDItMTggIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWN0LWV1cm9wZS5mcj4KCgkqIGFsaS5hZHMsIGFsaS5hZGIgKEZpcnN0X1NkZXBfRW50cnkpOiBObyBsb25nZXIgYSBjb25zdGFudCwgc28gdGhhdAoJU2Nhbl9BTEkgY2FuIGJlIHVzZWQgZm9yIG11bHRpcGxlIEFMSSBmaWxlcyB3aXRob3V0IHJlaW5pdGlhbGl6aW5nCgliZXR3ZWVuIGNhbGxzLgoKMjAwNC0wMi0xOCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBkZWJ1Zy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDQtMDItMTggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBvYmplY3QpOiBTZXQgREVDTF9QT0lOVEVSX0FMSUFTX1NFVAoJdG8gemVybyBpZiB0aGVyZSBpcyBhbiBhZGRyZXNzIGNsYXVzZS4KCjIwMDQtMDItMTggIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF91dGlsLmFkYiAoU2lkZV9FZmZlY3RfRnJlZSk6IEFueSBsaXRlcmFsIGlzIHNpZGUgZWZmZWN0cyBmcmVlLgoKMjAwNC0wMi0xOCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGduYXQuY29tPgoKCSogbGF5b3V0LmFkYiAoTGF5b3V0X0NvbXBvbmVudF9MaXN0KTogUmV2aXNlIGdlbmVyYXRpb24gb2YgY2FsbCB0bwoJZGlzY3JpbWluYW50LWNoZWNraW5nIGZ1bmN0aW9uIHRvIHBhc3Mgc2VsZWN0aW9ucyBvZiBhbGwgb2YgdGhlIHR5cGUncwoJZGlzY3JpbWluYW50cyByYXRoZXIgdGhhbiBqdXN0IHRoZSB2YXJpYW50LWNvbnRyb2xsaW5nIGRpc2NyaW1pbmFudC4KCjIwMDQtMDItMTggIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIDVnbWFzdG9wLmFkYiAoUG9wX0ZyYW1lKTogRG8gbm90IGNhbGwgZXhjX3Vud2luZCwgd2hpY2ggaXMgYm91bmQgdG8KCWZhaWwgaW4gdGhlIGN1cnJlbnQgc2V0dXAgYW5kIHRyaWdnZXJzIHNwdXJpb3VzIHN5c3RlbSBlcnJvciBtZXNzYWdlcy4KCVByZXRlbmQgaXQgb2NjdXJyZWQgYW5kIGZhaWxlZCBpbnN0ZWFkLgoKMjAwNC0wMi0xOCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBibGQuYWRiOiBNYXJrIEZMREZMQUdTIGFzIHNhdmVkCgkoUHJvY2Vzc19EZWNsYXJhdGl2ZV9JdGVtcyk6IEFkZCBMaW5rZXInTGlua2VyX09wdGlvbnMgdG8gRkxERkxBR1Mgd2hlbgoJaXQgaXMgbm90IHRoZSByb290IHByb2plY3QuICBQdXQgZWFjaCBkaXJlY3RvcnkgdG8gYmUKCWV4dGVuZGVkIGJldHdlZW4gZG91YmxlIHF1b3RlcyB0byBwcmV2ZW50IGl0IHRvIGJlIGV4cGFuZGVkIG9uIFdpbmRvd3MuCgkoUmVjdXJzaXZlX1Byb2Nlc3MpOiBSZXNldCBDRkxBR1MvQ1hYRkxBR1MgdG8gbm90aGluZyBiZWZvcmUgcHJvY2Vzc2luZwoJdGhlIHByb2plY3QgZmlsZS4gU2V0IHRoZW0gYmFjayB0byB0aGVpciBpbml0aWFsIHZhbHVlcyBpZiB0aGV5IGhhdmUgbm90CgliZWVuIHNldCBpbiB0aGUgcHJvamVjdCBmaWxlLgoKCSogZ3ByY21kLmFkYjogKEdwcmRlYnVnLCBEZWJ1Zyk6IE5ldyBnbG9iYWwgdmFyaWFibGVzCgkoRGlzcGxheV9Db21tYW5kKTogTmV3IHByb2NlZHVyZQoJKFVzYWdlKTogRG9jdW1lbnQgbmV3IGNvbW1hbmQgImxpbmtvcHRzIgoJQ2FsbCBEaXNwbGF5X0NvbW1hbmQgd2hlbiBlbnYgdmFyIEdQUkRFQlVHIGhhcyB0aGUgdmFsdWUgIlRSVUUiCglJbXBsZW1lbnQgbmV3IGNvbW1hbmQgImxpbmtvcHRzIgoJUmVtb3ZlIHF1b3RlcyB0aGF0IG1heSBiZSBhcm91bmQgYXJndW1lbnRzIGZvciAiZXh0ZW5kIgoJQWx3YXlzIGNhbGwgTm9ybWFsaXplX1BhdGhuYW1lIHdpdGggYXJndW1lbnRzIGZvcm1hdHRlZCBmb3IgdGhlIHBsYXRmb3JtCgoJKiBNYWtlZmlsZS5nZW5lcmljOiBMaW5rIEMvQysrIG1haW5zIHdpdGggJChGTERGTEFHUykKCUNoYW5nZSBAZWNobyB0byBAJChkaXNwbGF5KSBpbiB0YXJnZXQgY2xlYW4gdG8gYmUgYWJsZSB0byBjbGVhbiBzaWxlbnRseQoKCSogTWFrZWZpbGUucHJvbG9nOiBTYXZlIEZMREZMQUdTIGFuZCBnaXZlIGl0IGFuIGluaXRpYWwgZW1wdHkgdmFsdWUKCgkqIHByai1wYXJ0LmFkYiAoUHJvamVjdF9QYXRoX05hbWVfT2YpOiBEbyBub3QgcHV0IGZpbmFsIHJlc3VsdCBpbgoJY2Fub25pY2FsIGNhc2UuCgoJKiBwcmotcGFydC5hZGIgKFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogQWx3YXlzIGNhbGwgd2l0aCBGcm9tX0V4dGVuZGVkCgk9IEV4dGVuZGluZ19BbGwgd2hlbiBjdXJyZW50IHByb2plY3QgaXMgYW4gZXh0ZW5kaW5nIGFsbCBwcm9qZWN0LgoKCSogdm1zX2NvbnYuYWRiIChPdXRwdXRfRmlsZV9FeHBlY3RlZCk6IE5ldyBCb29sZWFuIGdsb2JhbCB2YXJpYWJsZSwKCXNldCB0byBUcnVlIG9ubHkgZm9yIExJTksgY29tbWFuZCwgYWZ0ZXIgVW5peCBzd2l0Y2ggLW8uCgkoUHJvY2Vzc19Bcmd1bWVudHMpOiBTZXQgT3V0cHV0X0ZpbGVfRXhwZWN0ZWQgdG8gVHJ1ZSBmb3IgTElOSyBjb21tYW5kCglhZnRlciBVbml4IHN3aXRjaCAtby4gV2hlbiBPdXRwdXRfRmlsZV9FeHBlY3RlZCBpcyBUcnVlLCBuZXZlciBhZGQgYW4KCWV4dGVuc2lvbiB0byBhIGZpbGUgbmFtZS4KCgkqIDV2bWwtdGd0LmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogRG8gbm90IGFwcGVuZCAiL09QVElPTlMiIHRvIHRoZQoJb3B0aW9uIGZpbGUgbmFtZSwgb25seSB0byB0aGUgLS1mb3ItbGlua2VyPSBzd2l0Y2guCgkoT3B0aW9uX0ZpbGVfTmFtZSk6IElmIG9wdGlvbiBmaWxlIG5hbWUgZG8gbm90IGVuZCB3aXRoICIub3B0IiwgYXBwZW5kCgkiL09QVElPTlMiLgoKMjAwNC0wMi0xOCAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwNC0wMi0xNyAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogTWFrZS1sYW5nLmluIChzdGFtcC1zZGVmYXVsdCk6IERvIG5vdCBkZXBlbmQgb24KCW1vdmUtaWYtY2hhbmdlLgoKMjAwNC0wMi0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNvbmZpZy1sYW5nLmluOiBEaXNhYmxlIEFkYSBieSBkZWZhdWx0IHVudGlsIHByb2JlIGxvZ2ljIGZvcgoJYSBib290c3RyYXAgQWRhIGNvbXBpbGVyIGNhbiBiZSBtb3ZlZCB0byB0aGUgdG9wIGxldmVsIGNvbmZpZ3VyZQoJc2NyaXB0LgoKMjAwNC0wMi0xMiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZGVjbC5jIChjb21wb25lbnRzX3RvX3JlY29yZCk6IERvbid0IGNsYWltIHRoYXQgdGhlIGludGVybmFsIGZpZWxkcwoJd2UgbWFrZSB0byBob2xkIHRoZSB2YXJpYW50IHBhcnRzIGFyZSBzZW1hbnRpY2FsbHkgYWRkcmVzc2FibGUsIGJlY2F1c2UKCXRoZXkgYXJlIG5vdC4KCgkqIGV4cF9wYWtkLmFkYiAoQ3JlYXRlX1BhY2tlZF9BcnJheV9UeXBlKTogUmVuYW1lIEVzaXogaW50byBQQVNpemUgYW5kCglhZGp1c3QgdGhlIGNvbW1lbnQgZGVzY3JpYmluZyB0aGUgbW9kdWxhciB0eXBlIGZvcm0gd2hlbiB3ZSBjYW4gdXNlIGl0LgoJKEluc3RhbGxfUEFUKTogQWNjb3VudCBmb3IgdGhlIEVzaXogcmVuYW1pbmcuCgoJKiBpbml0LmMgKF9fZ25hdF9lcnJvcl9oYW5kbGVyIGZvciBhbHBoYS10cnU2NCk6IEFycmFuZ2UgdG8gY2xlYXIgdGhlCglzY19vbnN0YWNrIGNvbnRleHQgaW5kaWNhdGlvbiBiZWZvcmUgcmFpc2luZyB0aGUgZXhjZXB0aW9uIHRvIHdoaWNoCgl0aGUgc2lnbmFsIGlzIG1hcHBlZC4gQWxsb3dzIGJldHRlciBoYW5kbGluZyBvZiBsYXRlciBzaWduYWxzIHBvc3NpYmx5Cgl0cmlnZ2VyZWQgYnkgdGhlIHJlc3VtZWQgdXNlciBjb2RlIGlmIHRoZSBleGNlcHRpb24gaXMgaGFuZGxlZC4KCjIwMDQtMDItMTIgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogNXppbml0LmFkYjogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgoyMDA0LTAyLTEyICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGFsaS5hZGI6IFJlbW92ZSBzZXBhcmF0aW5nIHNwYWNlIGJldHdlZW4gcGFyYW1ldGVycyBvbiBSIGxpbmUuIE1ha2VzCglmb3JtYXQgY29uc2lzdGVudCB3aXRoIGZvcm1hdCB1c2VkIGJ5IHRoZSBiaW5kZXIgZm9yIFNldF9HbG9iYWxzIGNhbGwuCgoJKiBhdHJlZS5hZHMsIGF0cmVlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIChuZXcgZnVuY3Rpb24gaGVhZGVyIGZvcm1hdCkKCgkqIGJpbmRnZW4uYWRiOiBBZGQgUnVuLVRpbWUgR2xvYmFscyBkb2N1bWVudGF0aW9uIHNlY3Rpb24gY29udGFpbmluZwoJZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBvZiB0aGUgZ2xvYmFscyBwYXNzZWQgZnJvbSB0aGUgYmluZGVyIGZpbGUgdG8KCXRoZSBydW4gdGltZS4KCgkqIGduYXRscy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogaW5pdC5jIChfX2duYXRfc2V0X2dsb2JhbHMpOiBBZGQgbm90ZSBwb2ludGluZyB0byBkb2N1bWVudGF0aW9uIGluCgliaW5kZ2VuLgoKCSogbGliLXdyaXQuYWRzLCBsaWItd3JpdC5hZGI6IFJlbW92ZSBzZXBhcmF0aW5nIHNwYWNlIGJldHdlZW4KCXBhcmFtZXRlcnMgb24gUiBsaW5lLgoJTWFrZXMgZm9ybWF0IGNvbnNpc3RlbnQgd2l0aCBmb3JtYXQgdXNlZCBieSB0aGUgYmluZGVyIGZvciBTZXRfR2xvYmFscwoJY2FsbC4KCgkqIG9zaW50LmFkczogQWRkIDIwMDQgdG8gY29weXJpZ2h0IG5vdGljZQoJTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzbmFtZXMuYWRzOiBDb3JyZWN0IGNhcGl0YWxpemF0aW9uIG9mIEZJRk9fV2l0aGluX1ByaW9yaXRpZXMKCU5vdGljZWQgZHVyaW5nIGNvZGUgcmVhZGluZywgZG9jdW1lbnRhdGlvbiBpc3N1ZSBvbmx5CgoJKiB1c2FnZS5hZGI6IFJlbW92ZSBqdW5rIGxpbmUgZm9yIG9ic29sZXRlIEMgc3dpdGNoCglOb3RpY2VkIGR1cmluZyBjb2RlIHJlYWRpbmcKCjIwMDQtMDItMTIgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogYmxkLmFkYiAoUHJvY2Vzc19EZWNsYXJhdGl2ZV9JdGVtcyk6IEZvciBTb3VyY2VfRGlycyBjYWxsIGdwcmNtZAoJZXh0ZW5kIGZvciBlYWNoIGRpcmVjdG9yeSwgc28gdGhhdCBtdWx0aXBsZSAvKiogZGlyZWN0b3JpZXMgYXJlCglleHRlbmRlZCBpbmRpdmlkdWFsbHkuCgkoUmVjdXJzaXZlX1Byb2Nlc3MpOiBTZXQgdGhlIGRlZmF1bHQgZm9yIExBTkdVQUdFUyB0byBhZGEKCgkqIGdwcmNtZC5hZGI6IERlZmluZSBuZXcgY29tbWFuZCAiaWdub3JlIiwgdG8gZG8gbm90aGluZy4KCUltcGxlbWVudCBuZXcgY29tbWVudCAicGF0aCIuCgoJKiBNYWtlZmlsZS5nZW5lcmljOiBTdXBwcmVzcyBvdXRwdXQgd2hlbiBTSUxFTlQgaXMgc2V0CglNYWtlIHN1cmUgdGhhdCB3aGVuIGNvbXBpbGVyIGZvciBDL0MrKyBpcyBnY2MsIHRoZSBjb3JyZWN0IC14IHN3aXRjaCBpcwoJdXNlZCwgc28gdGhhdCB0aGUgY29ycmVjdCBjb21waWxlciBpcyBpbnZva2VkLgoJV2hlbiBjb21waWxlciBpcyBnY2MvZysrLCBwdXQgc2VhcmNoIHBhdGggaW4gZW52IHZhcnMgQ19JTkNMVURFX1BBVEgvCglDWFhfSU5DTFVERV9QQVRILCB0byBhdm9pZCBmYWlsdXJlIHdpdGggdG9vIGxvbmcgY29tbWFuZCBsaW5lcy4KCjIwMDQtMDItMTIgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46IENsZWFuIHVwcyBhbmQgcmVtb3ZlIG9ic29sZXRlIHRhcmdldHMuCgoyMDA0LTAyLTEyICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g1LmFkYjogUmVtb3ZlIFBvc3NpYmxlX1VubGlnbmVkX1NsaWNlLCBpbiBmYXZvciBvZiB0aGUgc2ltaWxhcgoJcHJlZGljYXRlIGRlY2xhcmVkIGluIGV4cF91dGlsLgoKCSogZXhwX3V0aWwuYWRiOiBBZGQgY29tbWVudHMuCgoJKiBzZW1fY2gxMC5hZGIgKEFuYWx5emVfU3VidW5pdCk6IFJlbW92ZSB1bHRpbWF0ZSBwYXJlbnQgdW5pdCBmcm9tCgl2aXNpYmlsaXR5IGJlZm9yZSBjb21waWxpbmcgY29udGV4dCBvZiB0aGUgc3VidW5pdC4KCgkqIHNlbV9yZXMuYWRiIChDaGVja19QYXJhbWV0ZXJsZXNzX0NhbGwpOiBJZiB0aGUgY29udGV4dCBleHBlY3RzIGEKCXZhbHVlIGJ1dCB0aGUgbmFtZSBpcyBhIHByb2NlZHVyZSwgZG8gbm90IGF0dGVtcHQgdG8gYW5hbHl6ZSBhcyBhIGNhbGwsCglpbiBvcmRlciB0byBvYnRhaW4gbW9yZSB0ZWxsaW5nIGRpYWdub3N0aWNzLgoKCSogc2VtX3V0aWwuYWRiIChXcm9uZ19UeXBlKTogRnVydGhlciBlbmhhbmNlbWVudCB0byBkaWFnbm9zZSBtaXNzaW5nCgknQWNjZXNzIG9uIHBhcmFtZXRlcmxlc3MgZnVuY3Rpb24gY2FsbHMuCgkoTm9ybWFsaXplX0FjdHVhbHMpOiBGb3IgYSBwYXJhbWV0ZXJsZXNzIGZ1bmN0aW9uIGNhbGwgd2l0aCBtaXNzaW5nCglhY3R1YWxzLCBkZWZlciBkaWFnbm9zdGljIHVudGlsIHJlc29sdXRpb24gb2YgZW5jbG9zaW5nIGNhbGwuCgoJKiBzZW1fdXRpbC5hZGIgKFdyb25nX1R5cGUpOiBJZiB0aGUgY29udGV4dCB0eXBlIGlzIGFuIGFjY2VzcyB0bwoJc3VicHJvZ3JhbSBhbmQgdGhlIGV4cHJlc3Npb24gaXMgYSBwcm9jZWR1cmUgbmFtZSwgc3VnZ2VzdCBhIG1pc3NpbmcKCSdhdHRyaWJ1dGUuCgoyMDA0LTAyLTEwICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4sCgkgICAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJUFIgYWRhLzY2MzcKCVBSIGFkYS81OTExCglNZXJnZSB3aXRoIGxpYmFkYS1icmFuY2g6CgkqIGNvbmZpZy1sYW5nLmluOiBCdWlsZCBsaWJhZGEgb25seSB3aGVuIGFkYSBpcyBidWlsdC4KCjIwMDQtMDItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9PcF9FcSk6IFdoZW4gbG9va2luZyBmb3IgdGhlIHByaW1pdGl2ZSBlcXVhbGl0eQoJZm9yIGEgdGFnZ2VkIHR5cGUsIHZlcmlmeSB0aGF0IGJvdGggZm9ybWFscyBoYXZlIHRoZSBzYW1lIHR5cGUuCgoJKiBleHBfY2g2LmFkYiAoQWRkX0NhbGxfQnlfQ29weV9Db2RlKTogSW5pdGlhbGl6ZSBwcm9wZXJseSB0aGUKCXRlbXBvcmFyeSB3aGVuIHRoZSBmb3JtYWwgaXMgYW4gaW4tcGFyYW1ldGVyIGFuZCB0aGUgYWN0dWFsIGEgcG9zc2libHkKCXVuYWxpZ25lZCBzbGljZS4KCgkqIGV4cF9jaDkuYWRiIChFeHBhbmRfRW50cnlfQmFycmllcik6IFJlc29sdmUgYmFycmllciBleHByZXNzaW9uIGV2ZW4KCXdoZW4gZXhwYW5zaW9uIGlzIGRpc2FibGVkLCB0byBlbnN1cmUgcHJvcGVyIG5hbWUgY2FwdHVyZSB3aXRoCglvdmVybG9hZGVkIGxpdGVyYWxzLiAgQ29uZGl0aW9uIGNhbiBiZSBvZiBhbnkgYm9vbGVhbiB0eXBlLCByZXNvbHZlCglhY2NvcmRpbmdseS4KCgkqIHNlbV9jaDguYWRiIChBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBFbWl0IHdhcm5pbmcgaWYgdGhlCglyZW5hbWluZyBpcyBmb3IgYSBmb3JtYWwgc3VicHJvZ3JhbSB3aXRoIGEgZGVmYXVsdCBvcGVyYXRvciBuYW1lLCBhbmQKCXRoZXJlIGlzIGEgdXNhYmxlIG9wZXJhdG9yIHRoYXQgaXMgdmlzaWJsZSBhdCB0aGUgcG9pbnQgb2YKCWluc3RhbnRpYXRpb24uCgoyMDA0LTAyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGFsaS5hZGIgKFNjYW5fQWxpKSBBZGQgSWdub3JlX0Vycm9ycyBhcmd1bWVudC4gVGhpcyBpcyBhIG1ham9yCglyZXdyaXRlIHRvIGlnbm9yZSBlcnJvcnMgaW4gYWxpIGZpbGVzLCBpbnRlbmRlZCB0byBhbGxvdyB0b29scyBkb3dud2FyZAoJY29tcGF0aWJpbGl0eSB3aXRoIG5ldyB2ZXJzaW9ucyBvZiBhbGkgZmlsZXMuCgoJKiBhbGkuYWRzOiBBZGQgbmV3IHBhcmFtZXRlciBJZ25vcmVfRXJyb3JzCgoJKiBiY2hlY2suYWRiIChDaGVja19Db25zaXN0ZW50X1Jlc3RyaWN0aW9ucyk6IEZpeCBlcnJvciBvZiBzb21ldGltZXMKCWR1cGxpY2F0aW5nIHRoZSBlcnJvciBtZXNzYWdlIGdpdmluZyB0aGUgZmlsZSB3aXRoIHJlc3RyaWN0aW9ucy4KCgkqIGRlYnVnLmFkYjogQWRkIGRlYnVnIGZsYWcgSSBmb3IgZ25hdGJpbmQKCgkqIGVycm91dC5hZGIgKFNldF9Nc2dfSW5zZXJ0aW9uX05vZGUpOiBTdXBwcmVzcyBleHRyYSBxdW90ZXMgYXJvdW5kCglvcGVyYXRvcnMgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBvcGVyYXRvciBpcyBhIGRlZmluaW5nIG9wZXJhdG9yLgoKCSogZXhwX2NoMy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZyAobmV3IGZ1bmN0aW9uIHNwZWMgZm9ybWF0KS4KCgkqIGV4cF9jaDQuYWRiOiBBZGQgY29tbWVudCBmb3IgcHJldmlvdXMgY2hhbmdlLCBhbmQgbWFrZSBtaW5vcgoJYWRqdXN0bWVudCB0byBsb29wIHRvIGFsd2F5cyBjaGVjayBmb3IgaW1wcm9wZXIgbG9vcCB0ZXJtaW5hdGlvbi4KCU1pbm9yIHJlZm9ybWF0dGluZyB0aHJvdWdob3V0IChuZXcgZnVuY3Rpb24gc3BlYyBmb3JtYXQpLgoKCSogZ25hdGJpbmQuYWRiOiBJbXBsZW1lbnQgLWRpIGRlYnVnIGZsYWcgZm9yIGduYXRiaW5kCgoJKiBnbmF0bGluay5hZGI6IENhbGwgU2Nhbl9BTEkgd2l0aCBJZ25vcmVfRXJyb3JzIHNldCB0byBUcnVlCgoJKiBnbmF0bHMuYWRiOiBDYWxsIFNjYW5fQUxJIHdpdGggSWdub3JlX0Vycm9ycyBzZXQgdG8gVHJ1ZQoKCSogbGliLWxvYWQuYWRiOiBGaXggYmFkIGFzc2VydGlvbi4KCUZvdW5kIGJ5IHRlc3RpbmcgYW5kIGNvZGUgcmVhZGluZy4KCU1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIGxpYi1sb2FkLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogbGliLXdyaXQuYWRiOiBUaGVyZSBpcyBvbmx5IG9uZSBSIGxpbmUgbm93LgoKCSogbGliLXdyaXQuYWRzOiBBZGQgZG9jdW1lbnRhdGlvbiBvbiBtYWtpbmcgZG93bndhcmQgY29tcGF0aWJsZSBjaGFuZ2VzCgl0byBhbGkgZmlsZXMgc28gb2xkIHRvb2xzIHdvcmsgd2l0aCBuZXcgYWxpIGZpbGVzLgoJVGhlcmUgaXMgb25seSBvbmUgUiBsaW5lIG5vdy4KCUFkZCBkb2N1bWVudGF0aW9uIG9uIGZvcm1hdCBpbmNvbXBhdGliaWxpdGllcyAod2l0aCBzcGVjaWFsIEdQUyBub3RlKQoKCSogbmFtZXQuYWRzLCBuYW1ldC5hZGI6IChJc19PcGVyYXRvcl9OYW1lKTogTmV3IHByb2NlZHVyZQoKCSogcGFyLWxvYWQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHNlbV9jaDguYWRiOiBGaXggdG8gZXJyb3IgbWVzc2FnZSBmcm9tIGxhc3QgdXBkYXRlCglNaW5vciByZWZvcm1hdHRpbmcgYW5kIHJlc3RydWN0dXJpbmcgb2YgY29kZSBmcm9tIGxhc3QgdXBkYXRlCgoJKiBwYXItcHJhZy5hZGIsIHNuYW1lcy5hZGIsIHNuYW1lcy5hZHMsIHNuYW1lcy5oLAoJc2VtX3ByYWcuYWRiOiBJbXBsZW1lbnQgcHJhZ21hIFByb2ZpbGUuCgoJKiBzdHlsZXN3LmFkYjogSW1wbGVtZW50IC1nbmF0eU4gc3dpdGNoIHRvIHR1cm4gb2ZmIGFsbCBzdHlsZSBjaGVjawoJb3B0aW9ucy4KCgkqIHVzYWdlLmFkYjogQWRkIGxpbmUgZm9yIC1nbmF0eU4gc3dpdGNoCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBlbnRyeSBTVFlMRV9DSEVDS1M9Tk9ORSBmb3IgLWduYXR5TgoKMjAwNC0wMi0wOSAgQWxiZXJ0IExlZSAgPGxlZUBnbmF0LmNvbT4KCgkqIGVycm5vLmM6IGRlZmluZSBfU0dJX01QX1NPVVJDRSBmb3IgdGFzay1zYWZlIGVycm5vIG9uIElSSVgKCjIwMDQtMDItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDMuYWRiIChCdWlsZF9TbGljZV9Bc3NpZ25tZW50KTogSGFuZGxlIHByb3Blcmx5IGNhc2Ugb2YgbnVsbAoJc2xpY2VzLgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9DYWxsKTogRG8gbm90IGlubGluZSBhIGNhbGwgd2hlbiB0aGUgc3VicHJvZ3JhbQoJaXMgbmVzdGVkIGluIGFuIGluc3RhbmNlIHRoYXQgaXMgbm90IGZyb3plbiB5ZXQsIHRvIGF2b2lkCglvcmRlci1vZi1lbGFib3JhdGlvbiBwcm9ibGVtcyBpbiBnaWdpLgoKCSogc2VtX2F0dHIuYWRiIChBbmFseXplX0F0dHJpYnV0ZSwgY2FzZSAnQWNjZXNzKTogV2l0aGluIGFuIGlubGluZWQKCWJvZHkgdGhlIGF0dHJpYnV0ZSBpcyBsZWdhbC4KCjIwMDQtMDItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcy1yaWRlbnQuYWRzOiBNaW5vciBjb21tZW50IGNvcnJlY3Rpb24KCgkqIHRhcmdwYXJtLmFkYjogUmVtb3ZlIGRlcGVuZGVuY2Ugb24gdWludHAgY29tcGxldGVseS4gVGhlcmUgd2FzCglhbHdheXMgYSBidWcgaW4gTWFrZSBpbiB0aGF0IGl0IGNhbGxlZCBUYXJncGFybSBiZWZvcmUgaW5pdGlhbGl6aW5nCgl0aGUgVWludCBwYWNrYWdlLiBUaGUgb2xkIGNvZGUgYXBwZWFyZWQgdG8gZ2V0IGF3YXkgd2l0aCB0aGlzLCBidXQKCXRoZSBuZXcgY29kZSBkaWQgbm90ISBUaGlzIGNhdXNlZCBhbiBhc3NlcnRpb24gZXJyb3IgaW4gZ25hdG1ha2UuCgoJKiB0YXJncGFybS5hZHM6IEZpeCBiYWQgY29tbWVudCwgcmVzdHJpY3Rpb24gcHJhZ21hcyB3aXRoIHBhcmFtZXRlcnMKCWFyZSBpbmRlZWQgZnVsbHkgc3VwcG9ydGVkLgoKMjAwNC0wMi0wNiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIG1pc2MuYyAoZGVmYXVsdF9wYXNzX2J5X3JlZik6IFVwZGF0ZSBJTklUX0NVTVVMQVRJVkVfQVJHUyBjYWxsLgoKMjAwNC0wMi0wNSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFkYS91dGlscy5jIChjcmVhdGVfcGFyYW1fZGVjbCk6IFJlcGxhY2UgUFJPTU9URV9QUk9UT1RZUEVTCgl3aXRoIHRhcmdldG0uY2FsbHMucHJvbW90ZV9wcm90b3R5cGVzLgoKMjAwNC0wMi0wNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiA1Z3Rhc2luZi5hZGIsIDVndGFzaW5mLmFkcywgNWd0YXByb3AuYWRiLCBhbGkuYWRiLAoJYWxpLmFkcywgZ3ByY21kLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBiaW5kZ2VuLmFkYjogT3V0cHV0IHJlc3RyaWN0aW9ucyBzdHJpbmcgZm9yIG5ldyBzdHlsZSByZXN0cmljdGlvbnMKCWhhbmRsaW5nCgoJKiBpbXB1bml0LmFkYjogQWRkIHMtcmlkZW50LmFkcyAoU3lzdGVtLlJpZGVudCkgYW5kCglzLXJlc3RyaSAoU3lzdGVtLlJlc3RyaWN0aW9ucykKCgkqIGxpYi13cml0LmFkYjogRml4IGJ1ZyBpbiB3cml0aW5nIHJlc3RyaWN0aW9ucyBzdHJpbmcgKGxhc3QgZmV3CgllbnRyaWVzIHdyb25nKQoKCSogcy1yZXN0cmkuYWRzLCBzLXJlc3RyaS5hZGI6IENoYW5nZSBuYW1lIFJlc3RyaWN0aW9ucyB0bwoJUnVuX1RpbWVfUmVzdHJpY3Rpb25zIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggcGFja2FnZSBuYW1lLgoJQWRkIGNpcmN1aXQgdG8gcmVhZCBhbmQgYWNxdWlyZSBydW4gdGltZSByZXN0cmljdGlvbnMuCgoyMDA0LTAyLTA0ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiByZXN0cmljdC5hZHMsIHJlc3RyaWN0LmFkYjogVXNlIHRoZSBuZXcgcmVzdHJpY3Rpb24KCU5vX1Rhc2tfQXR0cmlidXRlc19QYWNrYWdlIGluc3RlYWQgb2YgdGhlIG9sZCBOb19UYXNrX0F0dHJpYnV0ZXMuCgoJKiBzZW1fcHJhZy5hZGI6IE5vX1Rhc2tfQXR0cmlidXRlcyBpcyBhIHN5bm9ueW0gb2YKCU5vX1Rhc2tfQXR0cmlidXRlc19QYWNrYWdlLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYjogTmV3IGVudHJ5IGZvciBwcm9wZXIgaGFuZGxpbmcgb2YKCU5vX1Rhc2tfQXR0cmlidXRlcy4KCgkqIHMtcmlkZW50LmFkczogQWRkaW5nIHJlc3RyaWN0aW9uIE5vX1Rhc2tfQXR0cmlidXRlc19QYWNrYWdlCgkoQUktMDAyNDkpIHRoYXQgc3VwZXJzZWRlcyB0aGUgR05BVCBzcGVjaWZpYyByZXN0cmljdGlvbgoJTm9fVGFza19BdHRyaWJ1dGVzLgoKMjAwNC0wMi0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX3ByYWcuYWRiOgoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIFdhcm5pbmdzKTogSW4gYW4gaW5saW5lZCBib2R5LCBhcyBpbiBhbiBpbnN0YW5jZQoJIGJvZHksIGFuIGlkZW50aWZpZXIgbWF5IGJlIHdyYXBwZWQgaW4gYW4gdW5jaGVja2VkIGNvbnZlcnNpb24uCgoyMDA0LTAyLTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGxpYi13cml0LmFkczogQ29tbWVudCB1cGRhdGUgZm9yIHRoZSBXIGxpbmVzCgoJKiBibGQuYWRiOiAoRXhwcmVzc2lvbik6IEFuIGVtcHR5IHN0cmluZyBsaXN0IGlzIHN0YXRpYwoKCSogZm5hbWUtdWYuYWRiOiBNaW5vciBjb21tZW50IHVwZGF0ZQoKCSogZm5hbWUtdWYuYWRzOiAoR2V0X0ZpbGVfTmFtZSk6IERvY3VtZW50IG5ldyBwYXJhbWV0ZXIgTWF5X0ZhaWwKCgkqIGduYXRiaW5kLmFkYjogSW5pdGlhbGl6ZSBDdW11bGF0aXZlX1Jlc3RyaWN0aW9ucyB3aXRoIHRoZQoJcmVzdHJpY3Rpb25zIG9uIHRoZSB0YXJnZXQuCgoyMDA0LTAyLTAzICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWRhL3RyYW5zLmMgKGdpZ2kpOiBVc2UgZ2VuX3J0eF9TWU1CT0xfUkVGIGluc3RlYWQgb2YKCWdlbl9ydHguCgoyMDA0LTAyLTAyICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHNldHRpbmcgb2YgVEhSRUFEU0xJQiBvbiBtaXBzIG8zMiwgdW5uZWVkZWQuCgoyMDA0LTAyLTAyICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGdwcmNtZC5hZGIgKENoZWNrX0FyZ3MpOiBJZiBjb25kaXRpb24gaXMgZmFsc2UsIHByaW50IHRoZSBpbnZva2VkCgljb21tZW50IGJlZm9yZSB0aGUgdXNhZ2UuCglHcHJjbWQ6IEZhaWwgd2hlbiBjb21tYW5kIGlzIG5vdCByZWNvZ25pemVkLgoJKFVzYWdlKTogRG9jdW1lbnQgY29tbWFuZCAicHJlZml4IgoKCSogZy1tZDUuYWRiIChEaWdlc3QpOiBQcm9jZXNzIGxhc3QgYmxvY2suCgkoVXBkYXRlKTogRG8gbm90IHByb2Nlc3MgbGFzdCBibG9jay4gU3RvcmUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYW5kCglsZW5ndGggaW4gQ29udGV4dC4KCgkqIGctbWQ1LmFkcyAoVXBkYXRlKTogRG9jdW1lbnQgdGhhdCBzZXZlcmFsIGNhbGwgdG8gdXBkYXRlIGFyZQoJZXF1aXZhbGVudCB0byBvbmUgY2FsbCB3aXRoIHRoZSBjb25jYXRlbmF0ZWQgc3RyaW5nLgoJKENvbnRleHQpOiBBZGQgZmllbGRzIHRvIGFsbG93IG5ldyBVcGRhdGUgYmVoYXZpb3VyLgoKCSogZm5hbWUtdWYuYWRzL2FkYiAoR2V0X0ZpbGVfTmFtZSk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBNYXlfRmFpbCwKCWRlZmF1bHRlZCB0byBGYWxzZS4KCVdoZW4gTWF5X0ZhaWwgaXMgVHJ1ZSBhbmQgbm8gZXhpc3RpbmcgZmlsZSBjYW4gYmUgZm91bmQsIHJldHVybiBOb19GaWxlLgoKCSogNnZjc3RyZWEuYWRiOiBJbmxpbmVkIGZ1bmN0aW9ucyBhcmUgbm93IHdyYXBwZXJzIHRvIGltcGxlbWVudGF0aW9uCglmdW5jdGlvbnMuCgoJKiBsaWItd3JpdC5hZGIgKFdyaXRlX1dpdGhfTGluZXMpOiBXaGVuIGJvZHkgZmlsZSBkb2VzIG5vdCBleGlzdCwgdXNlCglzcGVjIGZpbGUgbmFtZSBpbnN0ZWFkIG9uIHRoZSBXIGxpbmUuCgoyMDA0LTAyLTAyICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGFsaS5hZGI6IFJlYWQgYW5kIGFjcXVpcmUgaW5mbyBmcm9tIG5ldyBmb3JtYXQgcmVzdHJpY3Rpb25zIGxpbmVzCgoJKiBiY2hlY2suYWRiOiBBZGQgY2lyY3VpdHMgZm9yIGNoZWNraW5nIHJlc3RyaWN0aW9ucyB3aXRoIHBhcmFtZXRlcnMKCgkqIGJpbmRnZW4uYWRiOiBPdXRwdXQgZHVtbXkgcmVzdHJpY3Rpb25zIGRhdGEKCVRvIGJlIGNoYW5nZWQgbGF0ZXIKCgkqIGFsaS5hZHMsIGNoZWNrcy5hZGIsIGV4cF9hZ2dyLmFkYiwgZXhwX2F0dHIuYWRiLCBleHBfY2gxMS5hZGIsCglleHBfY2gzLmFkYiwgZXhwX2NoNS5hZGIsIGV4cF9jaDYuYWRiLCBleHBfY2g3LmFkYiwgZXhwX3V0aWwuYWRiLAoJZnJlZXplLmFkYiwgZ25hdDFkcnYuYWRiLCBzZW1fYXR0ci5hZGIsIHNlbV9jaDEwLmFkYiwgc2VtX2NoMTEuYWRiLAoJc2VtX2NoMTIuYWRiLCB0YXJncGFybS5hZGIsIHRhcmdwYXJtLmFkcywgdGJ1aWxkLmFkYiwgc2VtX2NoMi5hZGIsCglzZW1fZWxhYi5hZGIsIHNlbV9yZXMuYWRiOiBNaW5vciBjaGFuZ2VzIGZvciBuZXcgcmVzdHJpY3Rpb25zIGhhbmRsaW5nLgoKCSogZXhwX2NoOS5hZGIgKEJ1aWxkX01hc3Rlcl9FbnRpdHkpOiBDbGVhbnVwIHRoZSBjb2RlIChhbHNvIHN1cHByZXNzZXMKCXRoZSB3YXJuaW5nIG1lc3NhZ2Ugb24gYWNjZXNzIHRvIHBvc3NpYmx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgUykKCU1pbm9yIGNoYW5nZXMgZm9yIG5ldyByZXN0cmljdGlvbnMgaGFuZGxpbmcuCgoJKiBnbmF0YmluZC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJTWlub3IgY2hhbmdlcyBmb3IgbmV3IHJlc3RyaWN0aW9ucyBoYW5kbGluZwoJTW92ZSBjaXJjdWl0IGZvciAtciBwcm9jZXNzaW5nIGhlcmUgZnJvbSBiY2hlY2sgKGNsZWFuZXIpCgoJKiBnbmF0Y21kLmFkYiwgZ25hdGxpbmsuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGxpYi13cml0LmFkYjogT3V0cHV0IG5ldyBmb3JtYXQgcmVzdHJpY3Rpb25zIGxpbmVzCgoJKiBsaWItd3JpdC5hZHM6IERvY3VtZW50IG5ldyBSIGZvcm1hdCBsaW5lcyBmb3IgbmV3IHJlc3RyaWN0aW9ucwoJaGFuZGxpbmcuCgoJKiBzLXJlc3RyaS5hZHMvYWRiOiBOZXcgZmlsZXMKCgkqIE1ha2VmaWxlLnJ0bDogQWRkIGVudHJ5IGZvciBzLXJlc3RyaS5hZHMvYWRiCgoJKiBwYXItY2gzLmFkYjogRml4IGJhZCBlcnJvciBtZXNzYWdlcyBzdGFydGluZyB3aXRoIHVwcGVyIGNhc2UgbGV0dGVyCglNaW5vciByZWZvcm1hdHRpbmcKCgkqIHJlc3RyaWN0LmFkYjogTWFqb3IgcmV3cml0ZSB0aHJvdWdob3V0IGZvciBuZXcgcmVzdHJpY3Rpb25zIGhhbmRsaW5nCglNYWpvciBwb2ludCBpcyB0byBoYW5kbGUgcmVzdHJpY3Rpb25zIHdpdGggcGFyYW1ldGVycwoKCSogcmVzdHJpY3QuYWRzOiBNYWpvciBjaGFuZ2VzIGluIGludGVyZmFjZSB0byBoYW5kbGUgcmVzdHJpY3Rpb25zIHdpdGgKCXBhcmFtZXRlcnMuIEFsc28gZ2VuZXJhbGx5IHNpbXBsaWZpZXMgc2V0dGluZyBvZiByZXN0cmljdGlvbnMuCgoJKiBzbmFtZXMuYWRzL2FkYjogTmV3IGVudHJ5IGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgTm9fUmVxdWV1ZQoKCSogc2VtX2NoMy5hZGIgKENvdW50X1Rhc2tzKTogTmV3IGNpcmN1aXRyeSBmb3IgaW1wbGVtZW50aW5nIE1heF9UYXNrcwoJcmVzdHJpY3Rpb24gY291bnRpbmcuCglPdGhlciBtaW5vciBjaGFuZ2VzIGZvciBuZXcgcmVzdHJpY3Rpb25zIGhhbmRsaW5nCgoJKiBzZW1fcHJhZy5hZGI6IE5vX1JlcXVldWUgaXMgYSBzeW5vbnltIGZvciBOb19SZXF1ZXVlX1N0YXRlbWVudHMuCglSZXN0cmljdGlvbl9XYXJuaW5ncyBub3cgYWxsb3dzIGZ1bGwgcGFyYW1ldGVyIG5vdGF0aW9uCglNYWpvciByZXdyaXRlIG9mIFJlc3RyaWN0aW9ucyBmb3IgbmV3IHJlc3RyaWN0aW9ucyBoYW5kbGluZwoKMjAwNC0wMi0wMiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogcGFyLWNoMy5hZGIgKFBfSWRlbnRpZmllcl9EZWNsYXJhdGlvbnMpOiBHaXZlIHN1cHBvcnQgdG8gdGhlIEFkYSAwWQoJc3ludGF4IHJ1bGUgZm9yIG9iamVjdCByZW5hbWluZyBkZWNsYXJhdGlvbnMuCgkoUF9BcnJheV9UeXBlX0RlZmluaXRpb24pOiBHaXZlIHN1cHBvcnQgZm9yIHRoZSBBZGEgMFkgc3ludGF4IHJ1bGUgZm9yCgljb21wb25lbnQgZGVmaW5pdGlvbnMuCgoJKiBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24pOiBHaXZlIHN1cHBvcnQgdG8gYWNjZXNzCgljb21wb25lbnRzLgoJKEFycmF5X1R5cGVfRGVjbGFyYXRpb24pOiBHaXZlIHN1cHBvcnQgdG8gYWNjZXNzIGNvbXBvbmVudHMuIEluIGFkZGl0aW9uCglpdCB3YXMgYWxzbyBtb2RpZmllZCB0byByZWZsZWN0IHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgaW4gYW5vbnltb3VzCglhcnJheSB0eXBlcy4gVGhlIG9sZCBjb2RlIGRpZCBub3QgdGFrZSBpbnRvIGFjY291bnQgdGhhdCBpdCBpcyBwb3NzaWJsZQoJdG8gaGF2ZSBhbiB1bmNvbnN0cmFpbmVkIGFub255bW91cyBhcnJheSB3aXRoIGFuIGluaXRpYWwgdmFsdWUuCgkoQ2hlY2tfT3JfUHJvY2Vzc19EaXNjcmltaW5hbnRzKTogQWxsb3cgYWNjZXNzIGRpc2NyaW1pbmFudCBpbgoJbm9uLWxpbWl0ZWQgdHlwZXMuCgkoUHJvY2Vzc19EaXNjcmltaW5hbnRzKTogQWxsb3cgYWNjZXNzIGRpc2NyaW1pbmFudCBpbiBub24tbGltaXRlZCB0eXBlcwoJSW5pdGlhbGl6ZSB0aGUgbmV3IEFjY2Vzc19EZWZpbml0aW9uIGZpZWxkIGluIE5fT2JqZWN0X1JlbmFtaW5nX0RlY2wKCW5vZGUuICBDaGFuZ2UgQWRhMFkgdG8gQWRhIDBZIGluIGNvbW1lbnRzCgoJKiBzZW1fY2g0LmFkYiAoRmluZF9FcXVhbGl0eV9UeXBlcyk6IEFsbG93IGFub255bW91cyBhY2Nlc3MgdHlwZXMgaW4KCWVxdWFsaXR5IG9wZXJhdG9ycy4KCUNoYW5nZSBBZGEwWSB0byBBZGEgMFkgaW4gY29tbWVudHMKCgkqIHNlbV9jaDguYWRiIChBbmFseXplX09iamVjdF9SZW5hbWluZyk6IEdpdmUgc3VwcG9ydCB0byBhY2Nlc3MKCXJlbmFtaW5ncyBDaGFuZ2UgQWRhMFkgdG8gQWRhIDBZIGluIGNvbW1lbnRzCgoJKiBzZW1fdHlwZS5hZGIgKEZpbmRfVW5pcXVlX1R5cGUpOiBHaXZlIHN1cHBvcnQgdG8gdGhlIGVxdWFsaXR5CglvcGVyYXRvcnMgZm9yIHVuaXZlcnNhbCBhY2Nlc3MgdHlwZXMKCUNoYW5nZSBBZGEwWSB0byBBZGEgMFkgaW4gY29tbWVudHMKCgkqIHNpbmZvLmFkYiAoQWNjZXNzX0RlZmluaXRpb24sIFNldF9BY2Nlc3NfRGVmaW5pdGlvbik6IE5ldyBzdWJwcm9ncmFtcwoKCSogc2luZm8uYWRzIChOX0NvbXBvbmVudF9EZWZpbml0aW9uKTogQWRkaXRpb24gb2YgQWNjZXNzX0RlZmluaXRpb24KCWZpZWxkLgoJKE5fT2JqZWN0X1JlbmFtaW5nX0RlY2xhcmF0aW9uKTogQWRkaXRpb24gb2YgQWNjZXNzX0RlZmluaXRpb24gZmllbGQKCUNoYW5nZSBBZGEwWSB0byBBZGEgMFkgaW4gY29tbWVudHMKCgkqIHNwcmludC5hZGIgKFNwcmludF9Ob2RlX0FjdHVhbCk6IEdpdmUgc3VwcG9ydCB0byB0aGUgbmV3IHN5bnRheCBmb3IKCWNvbXBvbmVudCBkZWZpbml0aW9uIGFuZCBvYmplY3QgcmVuYW1pbmcgbm9kZXMKCUNoYW5nZSBBZGEwWSB0byBBZGEgMFkgaW4gY29tbWVudHMKCjIwMDQtMDItMDIgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIHJlc3RyaWN0LmFkYjogVXNlIHRoZSBuZXcgcmVzdHJpY3Rpb24gaWRlbnRpZmllcgoJTm9fUmVxdWV1ZV9TdGF0ZW1lbnRzIGluc3RlYWQgb2YgdGhlIG9sZCBOb19SZXF1ZXVlIGZvciBkZWZpbmluZyB0aGUKCXJlc3RyaWN0ZWQgcHJvZmlsZS4KCgkqIHNlbV9jaDkuYWRiIChBbmFseXplX1JlcXVldWUpOiBDaGVjayB0aGUgbmV3IHJlc3RyaWN0aW9uCglOb19SZXF1ZXVlX1N0YXRlbWVudHMuCgoJKiBzLXJpZGVudC5hZHM6IEFkZGluZyByZXN0cmljdGlvbiBOb19SZXF1ZXVlX1N0YXRlbWVudHMgKEFJLTAwMjQ5KQoJdGhhdCBzdXBlcnNlZGVzIHRoZSBHTkFUIHNwZWNpZmljIHJlc3RyaWN0aW9uIE5vX1JlcXVldWUuIFRoZSBsYXRlciBpcwoJa2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KCjIwMDQtMDItMDIgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGxpYi5hZHMsIGktY29ib2wuYWRzLCAqIHMtc3RvZWxlLmFkcywgcy10aHJlYWQuYWRzLCBzdHlsZS5hZHMsCgk1c3RhcHJvcC5hZGIsIGF0cmVlLmFkYiwgYXRyZWUuYWRzLCBnLWNyYzMyLmFkczogUmVtb3ZlIHJlZHVuZGFudAoJcHJhZ21hIGFuZCBmaXggaW5jb3JyZWN0IG9uZXMuCgoJKiBzZW1fcHJhZy5hZGIgRm9yIHByYWdtYSBJbmxpbmUgYW5kIHByYWdtYSBQdXJlX0Z1bmN0aW9uLCBlbWl0IGEKCXdhcm5pbmcgaWYgdGhlIHByYWdtYSBpcyByZWR1bmRhbnQuCgoyMDA0LTAyLTAyICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiA1c3RhcHJvcC5hZGI6IEFkZCBtaXNzaW5nICdjb25zdGFudCcga2V5d29yZHMuCgoJKiBNYWtlZmlsZS5pbjogdXNlIGNvbnNpc3RlbnQgdmFsdWUgZm9yIFNZTUxJQiBvbgoJcGxhdGZvcm1zIHdoZXJlIGxpYmFkZHIybGluZSBpcyBzdXBwb3J0ZWQuCgoyMDA0LTAyLTAyICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdXRpbHMuYyAoZW5kX3N1YnByb2dfYm9keSk6IERvIG5vdCBjYWxsIHJlc3Rfb2ZfY29tcGlsYXRpb24gaWYganVzdAoJYW5ub3RhdGluZyB0eXBlcy4KCjIwMDQtMDItMDIgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGluaXQuYyAoX19nbmF0X2luc3RhbGxfaGFuZGxlcik6IFNldHVwIGFuIGFsdGVybmF0ZSBzdGFjayBmb3Igc2lnbmFsCgloYW5kbGVycyBpbiB0aGUgZW52aXJvbm1lbnQgdGhyZWFkLiBUaGlzIGFsbG93cyBwcm9wZXIgcHJvcGFnYXRpb24gb2YKCWFuIGV4Y2VwdGlvbiBvbiBzdGFjayBvdmVyZmxvd3MgaW4gdGhpcyB0aHJlYWQgZXZlbiB3aGVuIHRoZSBidWlsdGluCglBQkkgc3RhY2stY2hlY2tpbmcgc2NoZW1lIGlzIHVzZWQgd2l0aG91dCBzdXBwb3J0IGZvciBhIHN0YWNrIHJlc2VydmUKCXJlZ2lvbi4KCgkqIHV0aWxzLmMgKGNyZWF0ZV9maWVsZF9kZWNsKTogQXVnbWVudCB0aGUgaGVhZCBjb21tZW50IGFib3V0IGJpdGZpZWxkCgljcmVhdGlvbiwgYW5kIGRvbid0IGFjY291bnQgZm9yIERFQ0xfQklUX0ZJRUxEIGluIERFQ0xfTk9OQUREUkVTU0FCTEVfUAoJaGVyZSwgYmVjYXVzZSB0aGUgZm9ybWVyIGlzIG5vdCBhY2N1cmF0ZSBlbm91Z2ggYXQgdGhpcyBwb2ludC4KCUxldCBmaW5pc2hfcmVjb3JkX3R5cGUgZGVjaWRlIGluc3RlYWQuCglEb24ndCBtYWtlIGEgYml0ZmllbGQgaWYgdGhlIGZpZWxkIGlzIHRvIGJlIGFkZHJlc3NhYmxlLgoJQWx3YXlzIHNldCBhIHNpemUgZm9yIHRoZSBmaWVsZCBpZiB0aGUgcmVjb3JkIGlzIHBhY2tlZCwgdG8gZW5zdXJlIHRoZQoJY2hlY2tzIGZvciBiaXRmaWVsZCBjcmVhdGlvbiBhcmUgdHJpZ2dlcmVkLgoJKGZpbmlzaF9yZWNvcmRfdHlwZSk6IER1cmluZyBsYXN0IHBhc3Mgb3ZlciB0aGUgZmllbGRzLCBjbGVhcgoJREVDTF9CSVRfRklFTEQgd2hlbiBwb3NzaWJsZSBpbiB0aGUgIVNUUklDVF9BTElHTk1FTlQgY2FzZSwgYXMgdGhpcyBpcwoJbm90IGNvdmVyZWQgYnkgdGhlIGNhbGxzIHRvIGxheW91dF9kZWNsLiAgQWRqdXN0IERFQ0xfTk9OQUREUkVTU0FCTEVfUAoJZnJvbSBERUNMX0JJVF9GSUVMRC4KCjIwMDQtMDEtMzAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKGRvYy9nbmF0X3VnX3VueC5kdmkpOiBVc2UgJChhYnNfZG9jZGlyKS4KCShkb2MvZ25hdF91Z192bXMuZHZpLCBkb2MvZ25hdF91Z191bnguZHZpKTogTGlrZXdpc2UuCgkoZG9jL2duYXRfdWdfdW54LmR2aSwgZG9jL2duYXQtc3R5bGUuZHZpKTogTGlrZXdpc2UuCgoyMDA0LTAxLTI2ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2VmaWxlLmluIChtaXBzLXNnaS1pcml4NSk6IFJlbW92ZSAtbGF0aHJlYWQgZnJvbSBUSFJFQURTTElCLgoKCSogNWZzeXN0ZW0uYWRzIChGdW5jdGlvbnNfUmV0dXJuX0J5X0RTUCk6IFNldCB0byBGYWxzZS4KCShaQ1hfQnlfRGVmYXVsdCk6IExpa2V3aXNlLgoJKEZyb250X0VuZF9aQ1hfU3VwcG9ydCk6IExpa2V3aXNlLgoKCSogNWd0YXByb3AuYWRiIChTdGFja19HdWFyZCk6IE1hcmsgVCwgT24gdW5yZWZlcmVuY2VkLgoJKEluaXRpYWxpemVfTG9jayk6IE1hcmsgTGV2ZWwgdW5yZWZlcmVuY2VkLgoJKFNsZWVwKTogTWFyayBSZWFzb24gdW5yZWZlcmVuY2VkLgoJKFRpbWVkX1NsZWVwKTogTGlrZXdpc2UuCgkoV2FrZXVwKTogTGlrZXdpc2UuCgkoRXhpdF9UYXNrKTogVXNlIFJlc3VsdC4KCShDaGVja19Ob19Mb2Nrcyk6IE1hcmsgU2VsZl9JRCB1bnJlZmVyZW5jZWQuCgoJKiA1Z3Rhc2luZi5hZGIgKE5ld19TcHJvYyk6IE1ha2UgQXR0ciBjb25zdGFudC4KCShCb3VuZF9UaHJlYWRfQXR0cmlidXRlcyk6IE1ha2UgU3Byb2MgY29uc3RhbnQuCgkoTmV3X0JvdW5kX1RocmVhZF9BdHRyaWJ1dGVzKTogTGlrZXdpc2UuCgoyMDA0LTAxLTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2gzLmFkYiAoQnVpbGRfU2xpY2VfQXNzaWdubWVudCk6IE5ldyBUU1MgcHJvY2VkdXJlIGZvcgoJb25lLWRpbWVuc2lvbmFsIGFycmF5IGFuIHNsaWNlIGFzc2lnbm1lbnRzLCB3aGVuIGNvbXBvbmVudCB0eXBlIGlzCgljb250cm9sbGVkLgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9Bc3NpZ25fQXJyYXkpOiBJZiBhcnJheSBpcyBvbmUtZGltZW5zaW9uYWwsCgljb21wb25lbnQgdHlwZSBpcyBjb250cm9sbGVkLCBhbmQgY29udHJvbF9hY3Rpb25zIGFyZSBpbiBlZmZlY3QsIHVzZQoJVFNTIHByb2NlZHVyZSByYXRoZXIgdGhhbiBnZW5lcmF0aW5nIGlubGluZSBjb2RlLgoKCSogZXhwX3Rzcy5hZHMgKFRTU19TbGljZV9Bc3NpZ24pOiBOZXcgVFNTIHByb2NlZHVyZSBmb3Igb25lLWRpbWVuc2lvbmFsCglhcnJheXMgd2l0aCBjb250cm9sbGVkIGNvbXBvbmVudHMuCgoyMDA0LTAxLTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRjbWQuYWRiIChHTkFUQ21kKTogQWRkIHNwZWNpZmljYXRpb24gb2YgYXJndW1lbnQgZmlsZSBvbiB0aGUKCWNvbW1hbmQgbGluZSBmb3IgdGhlIG5vbiBWTVMgY2FzZS4KCgkqIGduYXRsaW5rLmFkYiAoUHJvY2Vzc19CaW5kZXJfRmlsZSk6IFdoZW4gYnVpbGRpbmcgb2JqZWN0IGZpbGUsIGlmCglHTlUgbGlua2VyIGlzIHVzZWQsIHB1dCBhbGwgb2JqZWN0IHBhdGhzIGJldHdlZW4gcXVvdGVzLCB0byBwcmV2ZW50IGxkCgllcnJvciB3aGVuIHRoZXJlIGFyZSB1bnVzdWFsIGNoYXJhY3RlcnMgKHN1Y2ggYXMgJyEnKSBpbiB0aGUgcGF0aHMuCgoJKiBNYWtlZmlsZS5nZW5lcmljOiBXaGVuIHRoZXJlIGFyZSBzb3VyY2VzIGluIEFkYSBhbmQgdGhlIG1haW4gaXMgaW4KCUMvQysrLCBpbnZva2UgZ25hdG1ha2Ugd2l0aCAtQiwgaW5zdGVhZCBvZiAtei4KCgkqIHZtc19jb252LmFkYiAoUHJlcHJvY2Vzc19Db21tYW5kX0RhdGEpOiBOZXcgcHJvY2VkdXJlLCBleHRyYWN0ZWQKCWZyb20gVk1TX0NvbnZlcnNpb24uCgkoUHJvY2Vzc19Bcmd1bWVudCk6IE5ldyBwcm9jZWR1cmUsIGV4dHJhY3RlZCBmcm9tIFZNU19Db252ZXJzaW9uLiBBZGQKCXNwZWNpZmljYXRpb24gb2YgYXJndW1lbnQgZmlsZSBvbiB0aGUgY29tbWFuZCBsaW5lLgoKMjAwNC0wMS0yNiAgQmVybmFyZCBCYW5uZXIgIDxiYW5uZXJAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogRW5hYmxlIEdNRU1fTElCIGFuZCBTWU1MSUIgZm9yIHg4Nl82NAoKMjAwNC0wMS0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc25hbWVzLmFkYjogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCglBZGQgaW5mbyBvbiBzbGljZSBhc3NpZ25tZW50IGZvciBjb250cm9sbGVkIGFycmF5cy4KCjIwMDQtMDEtMjMgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZXhwX2FnZ3IuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGV4cF9jaDkuYWRiOiBNaW5vciBjb2RlIGNsZWFuIHVwCglNaW5vciByZWZvcm1hdHRpbmcKCUZpeCBiYWQgY2hhcmFjdGVyIGluIGNvbW1lbnQKCglQUiBhZGEvMTM0NzEKCSogdGFyZ3Bhcm0uYWRiIChHZXRfVGFyZ2V0X1BhcmFtZXRlcnMpOiBHaXZlIGNsZWFuIGFib3J0IGVycm9yIG9uCgl1bmV4cGVjdGVkIGVuZCBvZiBmaWxlLCBhbG9uZyB3aXRoIG1vcmUgZGV0YWlsZWQgbWVzc2FnZS4KCjIwMDQtMDEtMjMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBleHBfcGFrZC5hZGIgKEluc3RhbGxfUEFUKTogQ2xlYXIgRnJlZXplX05vZGUgZm9yIFBBVCBhbmQgRXR5cGUgb2YKCVBBVC4KCgkqIGRlY2wuYyAoY29weV9hbGlhc19zZXQpOiBOZXcgZnVuY3Rpb24uCgkoZ25hdF90b19nbnVfZW50aXR5LCBtYWtlX2FsaWduaW5nX3R5cGUsIG1ha2VfcGFja2FibGVfdHlwZSk6IFVzZSBpdC4KCjIwMDQtMDEtMjMgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1nbmF0bGliKTogQ2hhbmdlIG9jY3VycmVuY2VzIG9mIGxpYiQkZmlsZSB0bwoJbGliJCR7ZmlsZX0gaW4gY2FzZSBzdWJzZXF1ZW50IGNoYXJhY3RlciBpcyBub3QgYSBzZXBhcmF0b3IuCgoyMDA0LTAxLTIzICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIDV2bWwtdGd0LmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogSW52b2tlIGdjYyB3aXRoIC1zaGFyZWQtbGliZ2NjCgl3aGVuIHRoZSBHQ0MgdmVyc2lvbiBpcyBhdCBsZWFzdCAzLgoKCSogbWFrZS5hZGI6IChTY2FuX01ha2VfQXJnKTogUGFzcyAtQiB0byBTY2FuX01ha2VfU3dpdGNoZXMKCVJlbW92ZSBhbGwgIk9wdC4iLCB0byBwcmVwYXJlIGZvciBvcHQgc3BsaXQKCgkqIHByai1wYXJ0LmFkYiAoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBOZXcgQm9vbGVhbiBvdXQgcGFyYW1ldGVyCglFeHRlbmRzX0FsbC4gU2V0IHRvIFRydWUgd2hlbiB0aGUgcHJvamVjdCBwYXJzZWQgaXMgYW4gZXh0ZW5kaW5nIGFsbAoJcHJvamVjdC4gRmFpbHMgZm9yIGltcG9ydGluZyBhbiBleHRlbmRpbmcgYWxsIHByb2plY3Qgb25seSB3aGVuIHRoZQoJaW1wb3J0ZWQgcHJvamVjdCBpcyBhbiBleHRlbmRpbmcgYWxsIHByb2plY3QuCgkoUG9zdF9QYXJzZV9Db250ZXh0X0NsYXVzZSk6IFNldCBJc19FeHRlbmRpbmdfQWxsIHRvIHRoZSB3aXRoIGNsYXVzZSwKCWRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgRXh0ZW5kc19BbGwgcmV0dXJuZWQuCgoJKiBwcmotcHJvYy5hZGIgKFByb2Nlc3MpOiBDaGVjayB0aGF0IG5vIHByb2plY3Qgc2hhcmVzIGl0cyBvYmplY3QKCWRpcmVjdG9yeSB3aXRoIGEgcHJvamVjdCB0aGF0IGV4dGVuZHMgaXQsIGRpcmVjdGx5IG9yIGluZGlyZWN0bHksCglpbmNsdWRpbmcgYSB2aXJ0dWFsIHByb2plY3QuCglDaGVjayB0aGF0IG5vIHByb2plY3QgZXh0ZW5kZWQgYnkgYW5vdGhlciBwcm9qZWN0IHNoYXJlcyBpdHMgb2JqZWN0CglkaXJlY3Rvcnkgd2l0aCBhbm90aGVyIGFsc28gZXh0ZW5kZWQgcHJvamVjdC4KCgkqIHByai10cmVlLmFkYiAoSXNfRXh0ZW5kaW5nX0FsbCwgU2V0X0lzX0V4dGVuZGluZ19BbGwpOiBBbGxvdyBmb3IKCUtpbmQgPSBOX1dpdGhfQ2xhdXNlCgoJKiBwcmotdHJlZS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoJSW5kaWNhdGUgdGhhdCBGbGFnMiBhbHNvIGFwcGxpZXMgdG8gTl9XaXRoX0NsYXVzZSAoSXNfRXh0ZW5kaW5nX0FsbCkuCgoyMDA0LTAxLTIzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gxMy5hZGIgKEFuYWx5emVfQXR0cmlidXRlX0RlZmluaXRpb25fQ2xhdXNlKTogSWYgdGhlIGF0dHJpYnV0ZQoJYXBwbGllcyB0byBhIHR5cGUgd2l0aCBhbiBpbmNvbXBsZXRlIHZpZXcsIHVzZSBmdWxsIHZpZXcgaW4gTmFtZSBvZgoJY2xhdXNlLCBmb3IgY29uc2lzdGVuY3kgd2l0aCB1c2VzIG9mIEdldF9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UuCgoyMDA0LTAxLTIzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIDVpdGFwcm9wLmFkYiAoU2V0X1ByaW9yaXR5KTogUmVzZXQgdGhlIHByaW9yaXR5IHRvIDAgd2hlbiB1c2luZwoJU0NIRURfUlIsIHNpbmNlIG90aGVyIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIHBvbGljeS4KCShJbml0aWFsaXplKTogTW92ZSBpbml0aWFsaXphdGlvbiBvZiBtdXRleCBhdHRyaWJ1dGUgdG8gcGFja2FnZQoJZWxhYm9yYXRpb24sIHRvIHByZXZlbnQgZWFybHkgYWNjZXNzIHRvIHRoaXMgdmFyaWFibGUuCgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIG1lbnRpb24gb2YgTWFrZWZpbGUuYWRhbGliLCB1bnVzZWQuCgoJKiBNYWtlZmlsZS5hZGFsaWIsIDFhZXhjZXB0LmFkYiwgMWFleGNlcHQuYWRzLCAxaWMuYWRzLCAxc3NlY3N0YS5hZGIsCgkxc3NlY3N0YS5hZHM6IFJlbW92ZWQsIHVudXNlZC4KCjIwMDQtMDEtMjEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoQnVpbGRfUmVjb3JkX0FnZ3JfQ29kZSk6IERvIG5vdCBidWlsZCB0aGUgbWFzdGVyCgllbnRpdHkgaWYgYWxyZWFkeSBidWlsdCBpbiB0aGUgY3VycmVudCBzY29wZS4KCgkqIGV4cF9jaDkuYWRiIChCdWlsZF9NYXN0ZXJfRW50aXR5KTogRG8gbm90IHNldCB0aGUgaGFzX21hc3Rlcl9lbnRpdHkKCXJlbWluZGVyIGluIGludGVybmFsIHNjb3Blcy4gUmVxdWlyZWQgZm9yIG5lc3RlZCBsaW1pdGVkIGFnZ3JlZ2F0ZXMuCgoyMDA0LTAxLTIxICBEb3VnIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGh5cGhlbik6IE5ldyB2YXJpYWJsZSwgZGVmYXVsdCB2YWx1ZSAnLScuIFNldCB0byAnXycgb24KCVZNUy4gUmVwbGFjZSBhbGwgb2NjdXJlbmNlcyBvZiBsaWJnbmF0LSBhbmQgbGliZ25hcmwtIHdpdGgKCWxpYmduYXQkKGh5cGhlbikgYW5kIGxpYmduYXJsJChoeXBoZW4pLgoJRml4ZWQgc2hhcmVkIGxpYnJhcnkgYnVpbGQgcHJvYmxlbSBvbiBWTVMuCgoyMDA0LTAxLTIxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIG1saWItcHJqLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTAxLTIxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBwcmotdHJlZS5hZGIsIDdzdGFwcm9wLmFkYiwgdm1zX2NvbnYuYWRiLCB4cl90YWJscy5hZGI6IEFkZCBtaXNzaW5nCgknY29uc3RhbnQnIGtleXdvcmRzIGZvciBkZWNsYXJhdGlvbiBvZiBwb2ludGVycyB0aGF0IGFyZSBub3QgbW9kaWZpZWQuCgoJKiBleHBfcGFrZC5hZGI6IEZpeCBFbmdsaXNoIGluIGNvbW1lbnQuCgoyMDA0LTAxLTIxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzEwODg5CgkqIHNlbV9jaDMuYWRiIChBbmFseXplX1N1YnR5cGVfRGVjbGFyYXRpb24pOiBGb3IgYW4gYXJyYXkgc3VidHlwZSwKCWNvcHkgYWxsIGF0dHJpYnV0ZXMgb2YgdGhlIHBhcmVudCwgaW5jbHVkaW5nIHRoZSBmb3JlaWduIGxhbmd1YWdlCgljb252ZW50aW9uLgoKMjAwNC0wMS0yMSAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCglQUiBhZGEvMTA1NjUKCSogc2VtX2NoOS5hZGIgKEFuYWx5emVfRGVsYXlfQWx0ZXJuYXRpdmUpOiBBZGQgZXhwcmVzc2lvbiB0eXBlIGNoZWNrCglmb3IgJ2RlbGF5IHVudGlsJyBzdGF0ZW1lbnQuCgoyMDA0LTAxLTIwICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluOiBSZXBsYWNlICQoZG9jZGlyKSB3aXRoIGRvYy4KCShkb2MvZ25hdF91Z191bnguaW5mbywgZG9jL2duYXRfdWdfdnd4LmluZm8sIGRvYy9nbmF0X3VnX3Ztcy5pbmZvCglkb2MvZ25hdF91Z193bnQuaW5mbywgZG9jL2duYXRfcm0uaW5mbywgZG9jL2duYXQtc3R5bGUuaW5mbyk6IFVwZGF0ZQoJdG8gdXNlIGNvbnNpc3RlbnQgTUFLRUlORk8gcnVsZS4KCShhZGEubWFuLCBhZGEuc3JjbWFuKTogRHVtbXkgZW50cnkuCgkoQURBX0lORk9GSUxFUyk6IERlZmluZS4KCShhZGEuaW5mbywgYWRhLnNyY2luZm8pOiBOZXcgcnVsZXMuCgoyMDA0LTAxLTE5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIHV0aWxzLmM6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLCBtaXNzZWQgaW4gcHJldmlvdXMgY2hhbmdlLgoKMjAwNC0wMS0xOSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtbGliLXByai5hZGIgKEJ1aWxkX0xpYnJhcnkuQWRkX0FMSV9Gb3IpOiBPbmx5IGFkZCB0aGUgQUxJIHRvIHRoZQoJYXJncyBpZiBCaW5kIGlzIFRydWUuIFNldCBGaXJzdF9BTEksIGlmIG5vdCBhbHJlYWR5IGRvbmUuCgkoQnVpbGRfTGlicmFyeSk6IEZvciBTdGFuZCBBbG9uZSBMaWJyYXJpZXMsIGV4dHJhY3QgZnJvbSBvbmUgQUxJIGZpbGUKCWFuIGV2ZW50dWFsIC0tUlRTIHN3aXRjaCwgZm9yIGduYXRiaW5kLCBhbmQgYWxsIGJhY2tlbmQgc3dpdGNoZXMgKwoJLS1SVFMsIGZvciBsaW5raW5nLgoKMjAwNC0wMS0xOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fYXR0ci5hZGIsIG1lbXRyYWNrLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTAxLTE5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0NhbGwpOiBSZW1vdmUgY29kZSB0byBmb2xkIGNhbGxzIHRvIGZ1bmN0aW9ucwoJdGhhdCByZW5hbWUgZW51bWVyYXRpb24gbGl0ZXJhbHMuIFRoaXMgaXMgcHJvcGVybHkgZG9uZSBpbiBzZW1fZXZhbC4KCgkqIHNlbV9ldmFsLmFkcywgc2VtX2V2YWwuYWRiIChFdmFsX0NhbGwpOiBOZXcgcHJvY2VkdXJlIHRvIGZvbGQgY2FsbHMKCXRvIGZ1bmN0aW9ucyB0aGF0IHJlbmFtZSBlbnVtZXJhdGlvbiBsaXRlcmFscy4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0NhbGwpOiBVc2UgRXZhbF9DYWxsIHRvIGZvbGQgc3RhdGljIGNhbGxzIHRvCglmdW5jdGlvbnMgdGhhdCByZW5hbWUgZW51bWVyYXRpb24gbGl0ZXJhbHMuCgoyMDA0LTAxLTE2ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogTWFrZS1sYW5nLmluICh1dGlscy5vKTogRGVwZW5kIG9uIHRhcmdldC5oLgoJKiB1dGlscy5jOiBJbmNsdWRlIHRhcmdldC5oLgoJKHByb2Nlc3NfYXR0cmlidXRlcyk6IFVzZSB0YXJnZXRtLmhhdmVfbmFtZWRfc2VjdGlvbnMgaW5zdGVhZAoJb2YgQVNNX09VVFBVVF9TRUNUSU9OX05BTUUuCgoyMDA0LTAxLTE2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbjogQWRkICQoREVTVERJUikuCgoyMDA0LTAxLTE1ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgRV9WYXJpYWJsZSk6IFJldHJpZXZlIHRoZSBvYmplY3Qgc2l6ZQoJYWxzbyB3aGVuIG5vdCBkZWZpbmluZyBpZiBhIFNpemUgY2xhdXNlIGFwcGxpZXMuIFRoYXQgaW5mb3JtYXRpb24gaXMKCW5vdCB0byBiZSBpZ25vcmVkLgoKMjAwNC0wMS0xNSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1nbmF0bGliLCBnbmF0bGliLXNoYXJlZC1kZWZhdWx0KTogU2V0IHVwCglzeW1ib2xpYyBsaW5rcyBmb3IgdGhlIHNoYXJlZCBnbmF0IHJ1biB0aW1lIHdoZW4gbmVlZGVkLgoKMjAwNC0wMS0xNSAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogbWVtdHJhY2suYWRiIChHbWVtX0luaXRpYWxpemUpOiBjaGVjayB0aGF0IGdtZW0ub3V0IGNvdWxkIGJlIG9wZW5lZAoJZm9yIHdyaXRpbmcsIGFuZCB0ZXJtaW5hdGUgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGlmIG5vdC4KCjIwMDQtMDEtMTUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9hdHRyLmFkYiAoUmVzb2x2ZV9BdHRyaWJ1dGUsIGNhc2UgJ0FjY2Vzcyk6IFJlbW92ZSBzcHVyaW91cwoJd2FybmluZyBvbiBhbiBhY2Nlc3MgdG8gc3VicHJvZ3JhbSBpbiBhbiBpbnN0YW5jZSwgd2hlbiB0aGUgdGFyZ2V0Cgl0eXBlIGlzIGRlY2xhcmVkIGluIHRoZSBzYW1lIGdlbmVyaWMgdW5pdC4KCShFdmFsX0F0dHJpYnV0ZSk6IElmICdhY2Nlc3MgaXMga25vd24gdG8gZmFpbCBhY2Nlc3NpYmlsaXR5IGNoZWNrLAoJcmV3cml0ZSBhcyBhIHJhaXNlIHN0YXRlbWVudC4KCjIwMDQtMDEtMTUgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDEtMTUgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKGFkYS5zcmNleHRyYSk6IER1bW15IGVudHJ5LgoKMjAwNC0wMS0xNCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbjogT25seSByZWdlbmVyYXRlIHRleGkgZmlsZXMgaWYgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlLgoKMjAwNC0wMS0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoMy5hZGIgKEJ1aWxkX0Fzc2lnbm1lbnQpOiBGaXggYnVnIGluIGhhbmRsaW5nIG9mIGNvbnRyb2xsZWQKCWNvbXBvbmVudHMgdGhhdCBhcmUgaW5pdGlhbGl6ZWQgd2l0aCBhZ2dyZWdhdGVzLgoKMjAwNC0wMS0xMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnbmF0bGluay5hZGIgKFByb2Nlc3NfQmluZGVyX0ZpbGUpOiBUbyBmaW5kIGRpcmVjdG9yeSBvZiBzaGFyZWQKCWxpYmdjYywgaWYgImdjYy1saWIiIGlzIG5vdCBhIHN1YmRpcmVjdG9yeSwgbG9vayBmb3IgdGhlIGxhc3QKCXN1YmRpcmVjdG9yeSAibGliIiBpbiB0aGUgcGF0aCBvZiB0aGUgc2hhcmVkIGxpYmduYXQgb3IgbGliZ25hcmwuCgoJKiBtYWtlLmFkYiAoR25hdG1ha2UpOiBJZiBHQ0MgdmVyc2lvbiBpcyBhdCBsZWFzdCAzLCBsaW5rIHdpdGgKCS1zaGFyZWQtbGliZ2NjLCB3aGVuIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBzaGFyZWQgbGlicmFyeSBwcm9qZWN0LgoKCSogb3B0LmFkcyAoR0NDX1ZlcnNpb24pOiBOZXcgaW50ZWdlciBjb25zdGFudC4KCgkqIGFkYWludC5jIChnZXRfZ2NjX3ZlcnNpb24pOiBOZXcgZnVuY3Rpb24uCgoyMDA0LTAxLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9kaXN0LmFkYiwgc2VtX3Jlcy5hZGIsIHNlbV91dGlsLmFkYiwKCXNwcmludC5hZGIsIDN6c29jdGhpLmFkYiwgZWluZm8uYWRiLCBjc3RhbmQuYWRiLAoJZXhwX2NoNC5hZGIsIGV4cF9jaDkuYWRiLCBleHBfZGlzdC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNC0wMS0xMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogcy1pbnRlcnIuYWRiLCBzLXN0YWNoZS5hZGIsIHMtdGFlbmNhLmFkYiwgZy1yZWdwYXQuYWRiLAoJZy1zcGl0Ym8uYWRiLCA1aXRhcHJvcC5hZGI6IEFkZCBtaXNzaW5nICdjb25zdGFudCcga2V5d29yZHMgaW4gb2JqZWN0CglkZWNsYXJhdGlvbnMuCgoyMDA0LTAxLTEyICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIG1pc2MuYzogUmVtb3ZlIHRyYWlsaW5nIHNwYWNlcy4KCVVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlIG1pc3NlZCBpbiBwcmV2aW91cyBjaGFuZ2UuCgoJUFIgYWRhLzEzNTcyCgkqIGJsZC5hZGIgKFJlY3Vyc2l2ZV9Qcm9jZXNzKTogUmVmZXJlbmNlIHByZWZpeC9zaGFyZS9nbmF0IGluc3RlYWQgb2YKCXByZWZpeC9zaGFyZS9tYWtlCgoJKiBNYWtlZmlsZS5nZW5lcmljOiBVcGRhdGUgY29weXJpZ2h0LgoJQWRkIGxpY2Vuc2Ugbm90aWNlLgoKCSogTWFrZWZpbGUuaW4gKEFEQV9TSEFSRV9NQUtFX0RJUik6IFNldCB0byBwcmVmaXgvc2hhcmUvZ25hdCBpbnN0ZWFkCglvZiBwcmVmaXgvc2hhcmUvbWFrZS4KCgkqIE1ha2VmaWxlLnByb2xvZzogVXBkYXRlIGNvcHlyaWdodC4KCUFkZCBsaWNlbnNlIG5vdGljZS4KCjIwMDQtMDEtMTIgIExhdXJlbnQgUGF1dGV0ICA8cGF1dGV0QGFjdC1ldXJvcGUuZnI+CgoJKiAzdnNvY3RoaS5hZGIsIDN2c29jdGhpLmFkcywgM3dzb2N0aGkuYWRiLAoJM3dzb2N0aGkuYWRzLCAzenNvY3RoaS5hZGIsIDN6c29jdGhpLmFkcywgZy1zb2N0aGkuYWRiLAoJZy1zb2N0aGkuYWRzIChTb2NrZXRfRXJyb3JfTWVzc2FnZSk6IFJldHVybiBDLlN0cmluZ3MuY2hhcnNfcHRyCglpbnN0ZWFkIG9mIFN0cmluZy4KCgkqIGctc29ja2V0LmFkYiAoUmFpc2VfU29ja2V0X0Vycm9yKTogVXNlIG5ldyBTb2NrZXRfRXJyb3JfTWVzc2FnZQoJc2lnbmF0dXJlLgoKMjAwNC0wMS0xMiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogY3N0YW5kLmFkYiwgZXhwX2FnZ3IuYWRiLCBleHBfY2gzLmFkYiwgZXhwX2NoOS5hZGIsIGV4cF9kaXN0LmFkYiwKCWV4cF9pbWd2LmFkYiwgZXhwX3Bha2QuYWRiLCBleHBfdXRpbC5hZGIsIHBhci1jaDMuYWRiLCBzZW0uYWRiLAoJc2VtX2NoMTIuYWRiLCBzZW1fY2gzLmFkYiwgc2VtX2Rpc3QuYWRiLCBzZW1fcHJhZy5hZGIsIHNlbV9yZXMuYWRiLAoJc2VtX3V0aWwuYWRiLCBzaW5mby5hZGIsIHNpbmZvLmFkcywgc3ByaW50LmFkYjogQWRkaXRpb24gb2YKCUNvbXBvbmVudF9EZWZpbml0aW9uIG5vZGUuCgoyMDA0LTAxLTEyICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogaW1wdW5pdC5hZGI6IEFkZCBHTkFULlNlY29uZGFyeV9TdGFja19JbmZvIGFzIHVzZXItdmlzaWJsZSB1bml0CgoyMDA0LTAxLTEyICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBsaW5rLmM6IENoYW5nZSBkZWZhdWx0IGxpYmduYXQga2luZCB0byBTVEFUSUMgZm9yIEZyZWVCU0QuCgoyMDA0LTAxLTEyICBCZXJuYXJkIEJhbm5lciAgPGJhbm5lckBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBtYXAgODZudW1hdXggdG8gYS1udW1hdXggZm9yIHg4Nl82NAoKMjAwNC0wMS0xMiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogbGliLXhyZWYuYWRiIChHZXRfVHlwZV9SZWZlcmVuY2UpOiBJZiB0aGUgdHlwZSBpcyB0aGUgc3VidHlwZSBlbnRpdHkKCWdlbmVyYXRlZCB0byByZW5hbWUgYSBnZW5lcmljIGFjdHVhbCwgZ28gdG8gdGhlIGFjdHVhbCBpdHNlbGYsIHRoZQoJc3VidHlwZSBpcyBub3QgYSB1c2VyLXZpc2libGUgZW50aXR5LgoKCSogc2VtX2NoNy5hZGIgKFVuaW5zdGFsbF9EZWNsYXJhdGlvbnMpOiBJZiBhbiBlbnRpdHkgaW4gdGhlIHZpc2libGUKCXBhcnQgaXMgYSBwcml2YXRlIHN1YnR5cGUsIHJlc2V0IHRoZSB2aXNpYmlsaXR5IG9mIGl0cyBmdWxsIHZpZXcsIGlmCglhbnksIHRvIGJlIGNvbnNpc3RlbnQuCgoJUFIgYWRhLzEzNDE3CgkqIHNlbV9jaDEyLmFkYiAoQW5hbHl6ZV9Gb3JtYWxfUGFja2FnZSk6IERpYWdub3NlIHByb3Blcmx5IGFuIGF0dGVtcHQKCXRvIHVzZSBhIGdlbmVyaWMgcGFja2FnZSBHIGFzIGEgZm9ybWFsIHBhY2thZ2UgZm9yIGFub3RoZXIgZ2VuZXJpYwoJZGVjbGFyZWQgd2l0aGluIEcuCgoyMDA0LTAxLTEyICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHRyYW5zLmMgKEVsaW1pbmF0ZV9FcnJvcl9Nc2cpOiBOZXcgcHJvY2VkdXJlIGNhbGxlZCB0byBnZW5lcmF0ZSBtc2cKCgkqIHVzYWdlLmFkYjogUmVtb3ZlIG1lbnRpb24gb2Ygb2Jzb2xldGUgLWduYXR3YiBzd2l0Y2gKCU5vdGljZWQgZHVyaW5nIGNvZGUgcmVhZGluZwoKMjAwNC0wMS0xMiAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiAxc3NlY3N0YS5hZGI6IE1pbm9yIGNoYW5nZXMgZm9yIC1nbmF0d2Egd2FybmluZ3MKCjIwMDQtMDEtMTIgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDEtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtaXNjLmMgKGduYXRfZXhwYW5kX2V4cHIpOiBBZGQgYWx0X3J0bCBwYXJhbWV0ZXIuCgoyMDA0LTAxLTA3ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGxpbmsuYyBbc2dpXSAoc2hhcmVkX2xpYmduYXRfZGVmYXVsdCk6IENoYW5nZSB0byBTVEFUSUMuCgoyMDA0LTAxLTA1ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluOiBSZXZlcnQgc3RhbXAteGduYXR1ZyBjaGFuZ2UgZnJvbSAyMDAzLTEyLTE4LgoJVXBkYXRlIGNvbW1lbnQgYW5kIGNvcHlyaWdodCBkYXRlLgoJKiBzdGFtcC14Z25hdHVnOiBEZWxldGUuCgoyMDA0LTAxLTA1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIDFzc2Vjc3RhLmFkczogRGVmYXVsdF9TZWNvbmRhcnlfU3RhY2sgaXMgbm90IGEgY29uc3RhbnQgc2luY2UgaXQgbWF5CgliZSBtb2RpZmllZCBieSB0aGUgYmluZGVyIGdlbmVyYXRlZCBtYWluIHByb2dyYW0gaWYgdGhlIC1EIHN3aXRjaCBpcwoJdXNlZC4KCgkqIDRvbnVtYXV4LmFkcywgNHpudW1hdXguYWRzOiBBZGQgUHVyZV9GdW5jdGlvbiBwcmFnbWFzIGZvciBhbGwKCWltcG9ydGVkIGZ1bmN0aW9ucyAoc2luY2Ugbm93IHdlIGV4cGVjdCB0aGlzIHRvIGJlIGRvbmUgZm9yIGltcG9ydGVkCglmdW5jdGlvbnMpCgoJKiA1dnRhcHJvcC5hZGI6IEFkZCBzZXZlcmFsID8/PyBmb3Igc2VjdGlvbnMgcmVxdWlyaW5nIG1vcmUgY29tbWVudHMKCU1pbm9yIHJlZm9ybWF0dGluZyB0aHJvdWdob3V0CgoJKiA1emluaXQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUFkZCAyMDA0IHRvIGNvcHlyaWdodCBkYXRlCglNaW5vciBjaGFuZ2VzIHRvIGF2b2lkIC1nbmF0d2Egd2FybmluZ3MKCUNvcnJlY3Qgc29tZSBpbnN0YW5jZXMgb2YgdXNpbmcgT1IgaW5zdGVhZCBvZiBPUiBFTFNFIChub3RlZCB3aGlsZQoJZG9pbmcgcmVmb3JtYXR0aW5nKQoKCSogc3ByaW50LmFkYjogTWlub3IgdXBkYXRlcyB0byBhdm9pZCAtZ25hdHdhIHdhcm5pbmdzCgoJKiBzLXNlY3N0YS5hZHMsIHMtc2Vjc3RhLmFkYjoKCShTU19HZXRfTWF4KTogTmV3IGZ1bmN0aW9uIHRvIG9idGFpbiBoaWdoIHdhdGVyIG1hcmsgZm9yIHNzIHN0YWNrCglEZWZhdWx0X1NlY29uZGFyeV9TdGFjayBpcyBub3QgYSBjb25zdGFudCBzaW5jZSBpdCBtYXkgYmUgbW9kaWZpZWQgYnkKCXRoZSBiaW5kZXIgZ2VuZXJhdGVkIG1haW4gcHJvZ3JhbSBpZiB0aGUgLUQgc3dpdGNoIGlzIHVzZWQuCgoJKiBzd2l0Y2gtYi5hZGI6IE5ldyAtRG5ubiBzd2l0Y2ggZm9yIGJpbmRlcgoKCSogc3dpdGNoLWMuYWRiOgoJTWFrZSAtZ25hdGcgaW1wbHkgYWxsIHdhcm5pbmdzIGN1cnJlbnRseSBpbiAtZ25hdHdhCgoJKiB2bXNfY29udi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJQWRkIDIwMDQgdG8gY29weXJpZ2h0IG5vdGljZQoJQWRkIDIwMDQgdG8gcHJpbnRlZCBjb3B5cmlnaHQgbm90aWNlCgoJKiAzdmV4cGVjdC5hZGIsIDR6c3l0YWNvLmFkYiwgM3dzb2N0aGkuYWRiLCAzenNvY3RoaS5hZGIsCgkzenNvY3RoaS5hZGIsIDU2dGFwcm9wLmFkYiwgNTZ0cG9wc3AuYWRiLCA1YW1hc3RvcC5hZGIsCgk1YW1sLXRndC5hZGIsIDVhdGFwcm9wLmFkYiwgNWF0YXByb3AuYWRiLCA1YXRwb3BzcC5hZGIsCgk1ZnRhcHJvcC5hZGIsIDVnaW50ZXJyLmFkYiwgNWdtYXN0b3AuYWRiLCA1Z21sLXRndC5hZGIsCgk1Z3RhcHJvcC5hZGIsIDVobWwtdGd0LmFkYiwgNWhtbC10Z3QuYWRiLCA1aG1sLXRndC5hZGIsCgk1aHRhcHJvcC5hZGIsIDVodHJhY2ViLmFkYiwgNWl0YXByb3AuYWRiLCA1bG1sLXRndC5hZGIsCgk1c21sLXRndC5hZGIsIDVzdGFwcm9wLmFkYiwgNXN0YXByb3AuYWRiLCA1c3Rwb3BzcC5hZGIsCgk1dmFzdGhhbi5hZGIsIDV2aW5tYW9wLmFkYiwgNXZpbnRlcnIuYWRiLCA1dnRhcHJvcC5hZGIsCgk1dm1sLXRndC5hZGIsIDV2dGFwcm9wLmFkYiwgNXdvc3ByaW0uYWRiLCA1d3RhcHJvcC5hZGIsCgk1emludGVyci5hZGIsIDV6aW50bWFuLmFkYiwgNXptbC10Z3QuYWRiLCA1enRhcHJvcC5hZGIsCgk2dmNwcC5hZGIsIDZ2Y3N0cmVhLmFkYiwgN3N0YXByb3AuYWRiLCA3c3Rwb3BzcC5hZGIsCgl2eGFkZHIybGluZS5hZGIsIHZ4YWRkcjJsaW5lLmFkYiwgeHJlZl9saWIuYWRiLCB4cl90YWJscy5hZGIsCgl4cl90YWJscy5hZHMsIHMtdGFzZGViLmFkYiwgcy10YXNkZWIuYWRiLCBzZW1fcmVzLmFkcywKCXNlbV91dGlsLmFkYiwgc2VtX3V0aWwuYWRiLCBzZW1fdXRpbC5hZHMsIHMtaW50ZXJyLmFkYiwKCWNoZWNrcy5hZGIsIGNsZWFuLmFkYiwgY3N0YW5kLmFkYiwgZWluZm8uYWRzLAoJZWluZm8uYWRiLCBleHBfYWdnci5hZGIsIGV4cF9jaDExLmFkYiwgZXhwX2NoMy5hZGIsCglleHBfY2g0LmFkYiwgZXhwX2NoNS5hZGIsIGV4cF9jaDcuYWRiLCBleHBfY2g5LmFkYiwKCXByai1ubXNjLmFkYiwgcHJqLXBwLmFkYiwgcHJqLXV0aWwuYWRiLCBzZW1fYXR0ci5hZGIsCglzZW1fY2gxMC5hZGIsIHNlbV9jaDEyLmFkYiwgc2VtX2NoNC5hZGIsIGctZGlyb3BlLmFkYiwKCWctZGlyb3BlLmFkcywgZ25hdGxici5hZGIsIGktY3N0cmVhLmFkYiwgaW5saW5lLmFkYiwKCWxpYi14cmVmLmFkYiwgc2VtX2NoNS5hZGIsIHNlbV9jaDcuYWRiLCBzZW1fY2g4LmFkYjoKCU1pbm9yIHJlZm9ybWF0dGluZyBhbmQgY29kZSBjbGVhbiB1cHMuCglNaW5vciBjaGFuZ2VzIHRvIHByZXZlbnQgLWduYXR3YSB3YXJuaW5ncwoKCSogYWxpLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIGFuZCBjbGVhbnVwIG9mIGNvZGUKCUFjcXVpcmUgbmV3IFNTIGluZGljYXRpb24gb2Ygc2Vjb25kYXJ5IHN0YWNrIHVzZSBmcm9tIGFsaSBmaWxlcwoKCSogYS1udW1hdXguYWRzOiBBZGQgUHVyZV9GdW5jdGlvbiBwcmFnbWFzIGZvciBhbGwgaW1wb3J0ZWQgZnVuY3Rpb25zCgkoc2luY2Ugbm93IHdlIGV4cGVjdCB0aGlzIHRvIGJlIGRvbmUgZm9yIGltcG9ydGVkIGZ1bmN0aW9ucykKCgkqIGJpbmRnZW4uYWRiOiBHZW5lcmF0ZSBjYWxsIHRvIG1vZGlmeSBkZWZhdWx0IHNlY29uZGFyeSBzdGFjayBzaXplIGlmCgktRG5ubiBzd2l0Y2ggZ2l2ZW4KCgkqIGJpbmR1c2cuYWRiOiBBZGQgbGluZSBmb3IgbmV3IC1EIHN3aXRjaAoKCSogZXhwX2FnZ3IuYWRiIChUeXBlX01heV9IYXZlX0JpdF9BbGlnbmVkX0NvbXBvbmVudHMpOiBNb3JlIGFwcHJvcHJpYXRlCglyZXBsYWNlbWVudCBuYW1lIGZvciBUeXBlX01heV9IYXZlX05vbl9CaXRfQWxpZ25lZF9Db21wb25lbnRzIQoJQWRkIGNpcmN1aXRyeSBmb3IgYm90aCByZWNvcmRzIGFuZCBhcnJheXMgdG8gYXZvaWQgZ2lnaQoJcHJvY2Vzc2luZyBpZiB0aGUgdHlwZSBpbnZvbHZlZCBoYXMgbm9uLWJpdC1hbGlnbmVkIGNvbXBvbmVudHMKCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfQXNzaWduX0FycmF5KTogQXZvaWQgYXNzdW1wdGlvbiB0aGF0CglOX1N0cmluZ19MaXRlcmFsIG5vZGUgYWx3YXlzIHJlZmVyZW5jZXMgYW4gRV9TdHJpbmdfTGl0ZXJhbF9TdWJ0eXBlCgllbnRpdHkuIFRoaXMgbWF5IG5vdCBiZSB0cnVlIGluIHRoZSBmdXR1cmUuCgkoUG9zc2libGVfQml0X0FsaWduZWRfQ29tcG9uZW50KTogTW92ZSBwcm9jZXNzaW5nIG9mCglDb21wb25lbnRfTWF5X0JlX0JpdF9BbGlnbmVkIGZyb20gZXhwX2NoNSB0byBleHBfdXRpbAoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9UaHJlYWRfQm9keSk6IFBpY2sgdXAKCURlZmF1bHRfU2Vjb25kYXJ5X1N0YWNrX1NpemUgYXMgdmFyaWFibGUgc28gdGhhdCB3ZSBnZXQgdmFsdWUgbW9kaWZpZWQKCWJ5IHBvc3NpYmxlIC1Ebm5uIGJpbmRlciBwYXJhbWV0ZXIuCgoJKiBleHBfdXRpbC5hZGIgKENvbXBvbmVudF9NYXlfQmVfQml0X0FsaWduZWQpOiBOZXcgZnVuY3Rpb24uCgkoVHlwZV9NYXlfSGF2ZV9CaXRfQWxpZ25lZF9Db21wb25lbnRzKTogTmV3IGZ1bmN0aW9uLgoKCSogZXhwX3V0aWwuYWRzIChDb21wb25lbnRfTWF5X0JlX0JpdF9BbGlnbmVkKTogTmV3IGZ1bmN0aW9uLgoJKFR5cGVfTWF5X0hhdmVfQml0X0FsaWduZWRfQ29tcG9uZW50cyk6IE5ldyBmdW5jdGlvbi4KCgkqIGZlLmg6IChTZXRfSWRlbnRpZmllcl9DYXNpbmcpOiBGaXggcHJvdG90eXBlLgoJQWRkIGRlY2xhcmF0aW9uIGZvciBTZW1fRWxpbS5FbGltaW5hdGVfRXJyb3JfTXNnLgoJTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogZnJlZXplLmFkYiAoRnJlZXplX0VudGl0eSk6IEFkZCBSTSByZWZlcmVuY2UgdG8gZXJyb3IgbWVzc2FnZSBhYm91dAoJaW1wb3J0aW5nIGNvbnN0YW50IGF0b21pYy92b2xhdGlsZSBvYmplY3RzLgoJKEZyZWV6ZV9TdWJwcm9ncmFtKTogUmVzZXQgSXNfUHVyZSBpbmRpY2F0aW9uIGZvciBpbXBvcnRlZCBzdWJwcm9ncmFtCgl1bmxlc3MgZXhwbGljaXQgUHVyZV9GdW5jdGlvbiBwcmFnbWEgZ2l2ZW4sIHRvIGF2b2lkIGluc2lkaW91cyBidWcgb2YKCWNhbGwgdG8gbm9uLXB1cmUgaW1wb3J0ZWQgZnVuY3Rpb24gZ2V0dGluZyBlbGltaW5hdGVkLgoKCSogZ25hdDFkcnYuYWRiLCBnbmF0YmluZC5hZGIsIGduYXRjaG9wLmFkYiwgZ25hdGZpbmQuYWRiLAoJZ25hdGxzLmFkYiwgZ25hdGxpbmsuYWRiLCBnbmF0bWVtLmFkYiwgZ25hdG5hbWUuYWRiLCBnbmF0c3ltLmFkYiwKCWduYXR4cmVmLmFkYiwgZ3ByY21kLmFkYiwgZ3ByZXAuYWRiLCBtYWtlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglBZGQgMjAwNCB0byBwcmludGVkIGNvcHlyaWdodCBub3RpY2UKCgkqIGxpYi13cml0LmFkcywgbGliLXdyaXQuYWRiOiBQdXQgbmV3IFNTIGZsYWcgaW4gYWxpIGZpbGUgaWYgc2Vjb25kYXJ5CglzdGFjayB1c2VkLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgZW50cnkgZm9yIGctc2VzdGluLm8KCWctc2VzdGluLmFkczogTmV3IGZpbGUuCgoJKiBtZGxsLmFkYjogTWlub3IgY2hhbmdlcyB0byBhdm9pZCAtZ25hdHdhIHdhcm5pbmdzCgoJKiBtbGliLXRndC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogb3B0LmFkczogTmV3IHBhcmFtZXRlciBEZWZhdWx0X1NlY29uZGFyeV9TdGFja19TaXplIChHTkFUQklORCkKCU5ldyBzd2l0Y2ggU2VjX1N0YWNrX1VzZWQgKEdOQVQsIEdOQVRCSU5EKQoJTWFrZSBEZWZhdWx0X1NlY29uZGFyeV9TdGFja19TaXplIGEgdmFyaWFibGUgaW5zdGVhZCBvZiBhIGNvbnN0YW50LAoJc28gdGhhdCBpdCBjYW4gYmUgbW9kaWZpZWQgYnkgdGhlIG5ldyAtRG5ubiBiaW5kIHN3aXRjaC4KCgkqIHJ0c2ZpbmQuYWRiIChMb2FkX0ZhaWwpOiBHaXZlIGZ1bGwgZXJyb3IgbWVzc2FnZSBpbiBjb25maWd1cmFibGUKCXJ1bi10aW1lIG1vZGUgaWYgYWxsX2Vycm9ycyBtb2RlIGlzIHNldC4gVGhpcyB3YXMgbm90IGRvbmUgaW4gdGhlIGNhc2UKCW9mIGEgZmlsZSBub3QgZm91bmQsIHdoaWNoIHdhcyBhbiBvdmVyc2lnaHQuCglOb3RlIGlmIHNlY29uZGFyeSBzdGFjayB1bml0IGlzIHVzZWQgYnkgY29tcGlsZXIuCgoJKiBzZW1fZWxhYi5hZGIgKENoZWNrX0FfQ2FsbCk6IFJld3JpdGUgdG8gYXZvaWQgdHJ5aW5nIHRvIHB1dAoJaW5lZmZlY3RpdmUgZWxhYm9yYXRlIGFsbCBwcmFnbWFzIG9uIG5vbi12aXNpYmxlIHBhY2thZ2VzICh0aGlzCgloYXBwZW5lZCB3aGVuIGEgcmVuYW1lZCBzdWJwcm9ncmFtIHdhcyBjYWxsZWQpLiBOb3cgdGhlIGVsYWJvcmF0ZSBhbGwKCWFsd2F5cyBnb2VzIG9uIHRoZSBwYWNrYWdlIGNvbnRhaW5pbmcgdGhlIHJlbmFtaW5nIHJhdGhlciB0aGFuIHRoZSBvbmUKCWNvbnRhaW5pbmcgdGhlIHJlbmFtZWQgc3VicHJvZ3JhbS4KCgkqIHNlbV9lbGltLmFkcywgc2VtX2VsaW0uYWRiIChFbGltaW5hdGVfRXJyb3JfTXNnKTogTmV3IHByb2NlZHVyZQoJKFByb2Nlc3NfRWxpbWluYXRlX1ByYWdtYSk6IEFkZCBwYXJhbWV0ZXIgdG8gY2FwdHVyZSBwcmFnbWEgbG9jYXRpb24uCgoJKiBzZW1fZXZhbC5hZGIgKEV2YWxfU3RyaW5nX0xpdGVyYWwpOiBEbyBub3QgYXNzdW1lIHRoYXQgc3RyaW5nIGxpdGVyYWwKCWhhcyBhbiBFdHlwZSB0aGF0IHJlZmVyZW5jZXMgYW4gRV9TdHJpbmdfTGl0ZXJhbC4KCShFdmFsX1N0cmluZ19MaXRlcmFsKTogQXZvaWQgYXNzdW1wdGlvbiB0aGF0IE5fU3RyaW5nX0xpdGVyYWwgbm9kZQoJYWx3YXlzIHJlZmVyZW5jZXMgYW4gRV9TdHJpbmdfTGl0ZXJhbF9TdWJ0eXBlIGVudGl0eS4gVGhpcyBtYXkgbm90CgliZSB0cnVlIGluIHRoZSBmdXR1cmUuCgoJKiBzZW1fcHJhZy5hZGIgKFByb2Nlc3NfRWxpbWluYXRlX1ByYWdtYSk6IEFkZCBwYXJhbWV0ZXIgdG8gY2FwdHVyZQoJcHJhZ21hIGxvY2F0aW9uLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmUpOiBTcGVjaWFsaXplIG1zZyBmb3IgZnVuY3Rpb24gbmFtZSB1c2VkIGluIHByb2MKCWNhbGwuCgoyMDA0LTAxLTA1ICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogZy1kZWJ1dGkuYWRiOiBSZXBsYWNlZCBkaXJlY3QgYm9vbGVhbiBvcGVyYXRvciB3aXRoIHNob3J0LWNpcmN1aXQKCWZvcm0uCgoyMDA0LTAxLTA1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGJsZC5hZGI6IE1pbm9yIGNvbW1lbnQgdXBkYXRlcwoJKFByb2Nlc3NfRGVjbGFyYXRpdmVfSXRlbXMpOiBDb3JyZWN0IGluY29ycmVjdCBuYW1lIChJbmRleF9OYW1lIGluc3RlYWQKCW9mIEl0ZW1fTmFtZSkuCgoJKiBtYWtlLmFkYiAoR25hdG1ha2UpOiBTcGVjaWFsIHByb2Nlc3MgZm9yIGZpbGVzIHRvIGNvbXBpbGUvY2hlY2sgd2hlbgoJLUIgaXMgc3BlY2lmaWVkLiBGYWlsIHdoZW4gdGhlcmUgYXJlIG9ubHkgZm9yZWlnbiBtYWlucyBpbiBhdHRyaWJ1dGUKCU1haW4gb2YgdGhlIHByb2plY3QgZmlsZSBhbmQgLUIgaXMgbm90IHNwZWNpZmllZC4gRG8gbm90IHNraXAgYmluZC9saW5rCglzdGVwcyB3aGVuIC1CIGlzIHNwZWNpZmllZC4KCgkqIG1ha2V1c2cuYWRiOiBEb2N1bWVudCBuZXcgc3dpdGNoIC1CCgoJKiBvcHQuYWRzIChCdWlsZF9CaW5kX0FuZF9MaW5rX0Z1bGxfUHJvamVjdCk6IE5ldyBCb29sZWFuIGZsYWcKCgkqIHN3aXRjaC1tLmFkYjogKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IFByb2Nlc3MgLUIgc3dpdGNoCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBuZXcgR05BVCBQUkVUVFkgcXVhbGlmaWVyCgkvRk9STV9GRUVEX0FGVEVSX1BSQUdNQV9QQUdFIGZvciBzd2l0Y2ggLWZmCgoyMDA0LTAxLTA1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9GcmVlX1N0YXRlbWVudCk6IEhhbmRsZSB0aGluIHBvaW50ZXIKCWNhc2UuCgoJKiBtaXNjLmMgKGduYXRfcHJpbnRhYmxlX25hbWUpOiBJZiBWRVJCT1NJVFkgaXMgMiwgY2FsbAoJU2V0X0lkZW50aWZpZXJfQ2FzaW5nLgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIEVfRnVuY3Rpb24pOiBHaXZlIGVycm9yIGlmIHJldHVybiB0eXBlCgloYXMgc2l6ZSB0aGF0IG92ZXJmbG93cy4KCjIwMDQtMDEtMDUgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfQXJyYXlfQ29tcGFyaXNvbik6IEFkZCBCb29sZWFuIGNvbnN0YW50IHRvIGF2b2lkCgktZ25hdHdhIHdhcm5pbmcgb24gc3RhdGljIGNvbmRpdGlvbi4KCjIwMDQtMDEtMDUgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBsaW5rLmM6IChzaGFyZWRfbGliZ25hdF9kZWZhdWx0KSBbVk1TXTogQ2hhbmdlIHRvIFNUQVRJQy4KCjIwMDQtMDEtMDUgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46IEluc3RhbGwgYWxpIGZpbGVzIHVzaW5nIElOU1RBTExfREFUQV9EQVRFIHRvIHByZXNlcnZlCglhbGwgYXR0cmlidXRlcywgaW5jbHVkaW5nIHJlYWQtb25seSBhdHRyaWJ1dGUuCgoyMDA0LTAxLTA1ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX09iamVjdF9GaWxlc19PcHRpb25zKTogR2VuZXJhdGUgdGhlIG5ldyBzaGFyZWQKCWxpYnJhcnkgbmFtaW5nIHNjaGVtZS4KCgkqIG1saWItcHJqLmFkYiAoQnVpbGRfTGlicmFyeSk6IEdlbmVyYXRlIGRpZmZlcmVudCBuYW1lcyBmb3IgdGhlIHN0YXRpYwoJb3IgZHluYW1pYyB2ZXJzaW9uIG9mIHRoZSBHTkFUIHJ1bnRpbWUuIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgdGhlCgluZXcgc2hhcmVkIGxpYnJhcnkgbmFtaW5nIHNjaGVtZS4KCShQcm9jZXNzX0JpbmRlcl9GaWxlKTogQWRkIGRldGVjdGlvbiBvZiBzaGFyZWQgbGlicmFyeSBpbiBiaW5kZXIgZmlsZQoJYmFzZWQgb24gdGhlIG5ldyBuYW1pbmcgc2NoZW1lLgoKCSogZ25hdGxpbmsuYWRiIChQcm9jZXNzX0JpbmRlcl9GaWxlKTogUHJvcGVybHkgZGV0ZWN0IHRoZSBuZXcgbmFtaW5nCglzY2hlbWUgZm9yIHRoZSBzaGFyZWQgcnVudGltZSBsaWJyYXJpZXMuCgoJKiBNYWtlZmlsZS5pbjoKCShMSUJSQVJZX1ZFUlNJT04pIFtWTVNdOiBDb252ZXJ0IGFsbCAuIHRvIF8gdG8gY29uZm9ybSB0byBuZXcgbmFtaW5nCglzY2hlbWUuCgkoaW5zdGFsbC1nbmF0bGliKTogRG8gbm90IGNyZWF0ZSBzeW1saW5rcyBmb3Igc2hhcmVkIGxpYnJhcmllcy4KCShnbmF0bGliLXNoYXJlZC1kZWZhdWx0KTogSWRlbS4KCShnbmF0bGliLXNoYXJlZC1kdWFsLXdpbjMyKTogTmV3IHRhcmdldC4gTm90IHVzZWQgZm9yIG5vdyBhcyB0aGUKCWF1dG8taW1wb3J0IGZlYXR1cmUgZG9lcyBub3Qgc3VwcG9ydCBhcnJheXMvcmVjb3Jkcy4KCShnbmF0bGliLXNoYXJlZC13aW4zMik6IERvIG5vdCBjcmVhdGUgY29weSBmb3IgdGhlIHNoYXJlZCBsaWJyYXJpZXMuCgkoZ25hdGxpYi1zaGFyZWQtdm1zKTogRml4IHNoYXJlZCBydW50aW1lIGxpYnJhcmllcyBuYW1lcy4KCgkqIG9zaW50LmFkcywgb3NpbnQuYWRiIChTaGFyZWRfTGliKTogTmV3IHJvdXRpbmUsIHJldHVybnMgdGhlIHRhcmdldAoJZGVwZW5kZW50IHJ1bnRpbWUgc2hhcmVkIGxpYnJhcnkgbmFtZS4KCjIwMDQtMDEtMDUgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWN0LWV1cm9wZS5mcj4KCgkqIG9zaW50LmFkYiAoUmVhZF9MaWJyYXJ5X0luZm8pOiBSZW1vdmUgYm9ndXMgY2hlY2sgaWYgQUxJIGlzIG9sZGVyCgl0aGFuIHRoZSBvYmplY3QuCgoyMDA0LTAxLTA1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9BbGxvY2F0b3IpOiBDaGVjayByZXN0cmljdGlvbiBvbiBkeW5hbWljCglwcm90ZWN0ZWQgb2JqZWN0cyB3aGVuIGFsbG9jYXRvciBoYXMgYSBzdWJ0eXBlIGluZGljYXRpb24sIG5vdCBhCglxdWFsaWZpZWQgZXhwcmVzc2lvbi4gTm90ZSB0aGF0IHF1YWxpZmllZCBleHByZXNzaW9ucyBtYXkgaGF2ZSB0byBiZQoJY2hlY2tlZCB3aGVuIGxpbWl0ZWQgYWdncmVnYXRlcyBhcmUgaW1wbGVtZW50ZWQuCgoJKiBzZW1fcHJhZy5hZGIgKEFuYWx5emVfUHJhZ21hLCBjYXNlIEltcG9ydCk6IElmIGVuY2xvc2luZyBwYWNrYWdlIGlzCglwdXJlLCBlbWl0IHdhcm5pbmcuCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgUHVyZV9GdW5jdGlvbik6IElmIGVuY2xvc2luZyBwYWNrYWdlIGlzIHB1cmUgYW5kCglzdWJwcm9ncmFtIGlzIGltcG9ydGVkLCByZW1vdmUgd2FybmluZy4KCjIwMDQtMDEtMDUgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBzLXBvb3Npei5hZGI6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoJKEFsbG9jYXRlKTogVXNlIFRhc2tfTG9jayB0byBwcm90ZWN0IGFnYWluc3QgY29uY3VycmVudCBhY2Nlc3MuCgkoRGVhbGxvY2F0ZSk6IExpa2V3aXNlLgoKMjAwNC0wMS0wNSAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAZ25hdC5jb20+CgoJKiBzLXN0YWxpYi5hZGIgKEVsYWJfRmluYWxfQ29kZSk6IEFkZCBtaXNzaW5nIHllYXIgaW4gZGF0ZSBpbnNpZGUgPz8/Cgljb21tZW50LgoKMjAwMy0xMi0yMyAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGduYXRfdWcudGV4aTogRm9yY2UgYSBDVlMgY29tbWl0IGJ5IHVwZGF0aW5nIGNvcHlyaWdodC4KCSogZ25hdF91Z192eHcudGV4aTogUmVnZW5lcmF0ZS4KCSogZ25hdF91Z193bnQudGV4aTogUmVnZW5lcmF0ZS4KCSogZ25hdF91Z192bXMudGV4aTogUmVnZW5lcmF0ZS4KCSogZ25hdF91Z191bngudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDMtMTItMjAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiB0cmFucy5jOiBSZW1vdmUgdXNlcyBvZiAicmVnaXN0ZXIiIHNwZWNpZmllciBpbgoJZGVjbGFyYXRpb25zIG9mIGxvY2FsIHZhcmlhYmxlcy4KCjIwMDMtMTItMTggIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBzdGFtcC14Z25hdHVnOiBOZXcgc3RhbXAgZmlsZS4KCSogTWFrZS1sYW5nLmluIChzdGFtcC14Z25hdHVnKTogIE5ldyBzdGFtcCBmaWxlIGFuZCBjb21tZW50LgoJKGFkYS9kb2N0b29scy94Z25hdHVnKTogQWRkICQoYnVpbGRfZXhlZXh0KS4KCShhZGEvZ25hdF91Z191bngudGV4aSwgYWRhL2duYXRfdWdfdnd4LnRleGksIGFkYS9nbmF0X3VnX3Ztcy50ZXhpCglhZGEvZ25hdF91Z193bnQudGV4aSk6IFVwZGF0ZSB0byBkZXBlbmQgb24gc3RhbXAteGduYXR1Zy4KCjIwMDMtMTItMTcgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiBhLWVsY2hoYS5hZGIgKFRhaWxvcmVkX0V4Y2VwdGlvbl9JbmZvcm1hdGlvbik6IG1hZGUgSW5mbyBjb25zdGFudCB0bwoJZWxpbWluYXRlIHdhcm5pbmcuCgoJKiBhLWV4ZXh0ci5hZGI6IEFkZCBjb250ZXh0IGNsYXVzZSBmb3IKCUFkYS5FeGNlcHRpb25zLkxhc3RfQ2hhbmNlX0hhbmRsZXIuCgoyMDAzLTEyLTE3ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX1N0YW5kYXJkKTogQ2hhbmdlIHRoZSB3YXkgaG93IHRoZSBkZWNsYXJhdGlvbiBvZgoJdGhlIER1cmF0aW9uIHR5cGUgaXMgY3JlYXRlZCAobWFraW5nIGl0IHRoZSBzYW1lIHdheSBhcyBpdCBpcyBmb3IgYWxsCgl0aGUgb3RoZXIgc3RhbmRhcmQgdHlwZXMpLgoKMjAwMy0xMi0xNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzLWNydGwuYWRzOiBGaXggaGVhZGVyIGZvcm1hdAoJQ2hhbmdlIFB1cmUgdG8gUHJlZWxhYm9yYXRlCgoyMDAzLTEyLTE3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBjaGVja3MuYWRiIChTZWxlY3RlZF9MZW5ndGhfQ2hlY2tzKTogR2VuZXJhdGUgYW4gSXR5cGUgcmVmZXJlbmNlIGZvcgoJdGhlIGV4cHJlc3Npb24gdHlwZSBvbmx5IGlmIGl0IGlzIGRlY2xhcmVkIGluIHRoZSBjdXJyZW50IHVuaXQuCgoJKiBzZW1fY2gzLmFkYiAoQ29uc3RyYWluX0luZGV4KTogSGFuZGxlIHByb3Blcmx5IGEgcmFuZ2Ugd2hvc2UgYm91bmRzCglhcmUgdW5pdmVyc2FsIGFuZCBhbHJlYWR5IGFuYWx5emVkLCBhcyBjYW4gb2NjdXIgaW4gY29uc3RyYWluZWQKCXN1YmNvbXBvbmVudHMgdGhhdCBkZXBlbmQgb24gZGlzY3JpbWluYW50cywgd2hlbiBvbmUgY29uc3RyYWludCBpcyBhCglzdWJ0eXBlIG1hcmsuCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBBbnkgYXJpdGhtZXRpYyBleHByZXNzaW9uIG9mCgl0eXBlIEFueV9GaXhlZCBpcyBsZWdhbCBhcyB0aGUgYXJndW1lbnQgb2YgYSBjb252ZXJzaW9uLCBpZiBvbmx5IG9uZQoJZml4ZWQtcG9pbnQgdHlwZSBpcyBpbiBjb250ZXh0LgoKMjAwMy0xMi0xNyAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwMy0xMi0xNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX1RocmVhZF9Cb2R5KTogRml4IGVycm9yIGluIHBpY2tpbmcgdXAgZGVmYXVsdAoJc2VjIHN0YWNrIHNpemUuCgoyMDAzLTEyLTE1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRjaG9wLmFkYjogKEVycm9yX01zZyk6IERvIG5vdCBleGl0IG9uIGVycm9yIGZvciBhIHdhcm5pbmcKCShHbmF0Y2hvcCk6IERvIG5vdCBzZXQgZmFpbHVyZSBzdGF0dXMgd2hlbiByZXBvcnRpbmcgdGhlIG51bWJlciBvZgoJd2FybmluZ3MuCgoyMDAzLTEyLTE1ICBEb3VnIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogcy1jdHJsLmFkczogTmV3IGZpbGUuCgoJKiBNYWtlZmlsZS5ydGwgKEdOQVRfUlRMX05PTlRBU0tJTkdfT0JKUyk6IEFkZCBzLWNydGwkKG9iamV4dCkuCgoJKiBNYWtlLWxhbmcuaW46IChHTkFUX0FEQV9PQkpTKTogQWRkIGFkYS9zLWNydGwuby4KCShHTkFUQklORF9PQkpTKTogQWRkIGFkYS9zLWNydGwuby4KCgkqIE1ha2VmaWxlLmluIFtWTVNdOiBDbGVhbiB1cCBpZmVxIHJ1bGVzLgoKCSogZ25hdGxpbmsuYWRiLCA2dmNzdHJlYS5hZGIsIGEtZGlyZWlvLmFkYiwgYS1zZXF1aW8uYWRiLAoJYS1zdHN0aW8uYWRiLCBhLXRleHRpby5hZGIsIGctb3NfbGliLmFkYiwgYS13aXRlaW8uYWRiLAoJZy1vc19saWIuYWRzLCBpLWNzdHJlYS5hZGIsIGktY3N0cmVhLmFkcywgcy1kaXJlaW8uYWRiLAoJcy1maWxlaW8uYWRiLCBzLW1lbWNvcC5hZHMsIHMtbWVtb3J5LmFkYiwgcy1zdGFjaGUuYWRiLAoJcy10YXNkZWIuYWRiOiBVcGRhdGUgY29weXJpZ2h0LgoJSW1wb3J0IFN5c3RlbS5DUlRMLgoJTWFrZSBtaW5vciBtb2RpZmljYXRpb25zIHRvIHVzZSBTeXN0ZW0uQ1JUTCBkZWNsYXJlZCBmdW5jdGlvbnMgaW5zdGVhZAoJb2YgaW1wb3J0aW5nIGxvY2FsbHkuCgoyMDAzLTEyLTE1ICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDAzLTEyLTExICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogNXppbml0LmFkYjogQ2xlYW4gdXAuCgoJKiA1emludG1hbi5hZGIgKE5vdGlmeV9FeGNlcHRpb24pOiByZXBsYWNlZCBjYXNlIHN0YXRlbWVudCB3aXRoIGEgY2FsbAoJdG8gX19nbmF0X21hcF9zaWduYWwsIGltcG9ydGVkIGZyb20gaW5pdC5jIHRvIHN1cHBvcnQKCXNpZ25hbCAtPiBleGNlcHRpb24gbWFwcGluZ3MgdGhhdCBkZXBlbmQgb24gdGhlIHZ4V29ya3MgdmVyc2lvbi4KCgkqIGluaXQuYzoKCUNyZWF0ZWQgYW5kIGV4cG9ydGVkIF9fZ25hdF9tYXBfc2lnbmFsIHRvIHN1cHBvcnQgc2lnbmFsIC0+IGV4Y2VwdGlvbgoJbWFwcGluZyB0aGF0IGlzIGRlcGVuZGVudCBvbiB0aGUgVnhXb3JrcyB2ZXJzaW9uLgoJQ2hhbmdlIG1hcHBpbmcgb2YgU0lHQlVTIGZyb20gUHJvZ3JhbV9FcnJvciB0byBTdG9yYWdlX0Vycm9yIG9uIFZ4V29ya3MKCjIwMDMtMTItMTEgIFZhc2lsaXkgRm9mYW52ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogNXdvc2ludGUuYWRzOiBMaW5rIHdpdGggLW10aHJlYWRzIHN3aXRjaC4KCjIwMDMtMTItMTEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogaW5pdC5jIChfX2duYXRfaW5zdGFsbF9oYW5kbGVyIFtOZXRCU0RdKTogU2V0CglfX2duYXRfaGFuZGxlcl9pbnN0YWxsZWQsIGFzIGRvbmUgb24gYWxsIG90aGVyIHBsYXRmb3Jtcy4KCVJlbW92ZSBkdXBsaWNhdGVkIGNvZGUuCgoyMDAzLTEyLTExICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluIChydHMtemZwLCBydHMtcmF2ZW5zY2FyKTogQ3JlYXRlIGxpYmduYXQuYS4KCjIwMDMtMTItMTEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNpbmZvLmFkczogRml4IGluY29uc2lzdGVudCBleGFtcGxlIGNvZGUgaW4gY29tbWVudC4KCjIwMDMtMTItMTEgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYS10aWluYXUuYWRiOiBBZGQgYSBjb3VwbGUgb2YgY29tbWVudHMKCgkqIHNlbV9jaDMuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHNlbV9wcmFnLmFkYjoKCUZpeCBiYWQgcHJvdG90eXBlIG9mIFNhbWVfQmFzZV9UeXBlIGluIGJvZHkgKGNvZGUgcmVhZGluZyBjbGVhbnVwKQoJTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQKCjIwMDMtMTItMTEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDcuYWRiIChFc3RhYmxpc2hfVHJhbnNpZW50X1Njb3BlKTogSWYgdGhlIGNhbGwgaXMgd2l0aGluIHRoZQoJYm91bmRzIG9mIGEgbG9vcCwgY3JlYXRlIGEgc2VwYXJhdGUgYmxvY2sgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgcHJvcGVyCgljbGVhbnVwIGFjdGlvbnMgdG8gcHJldmVudCBtZW1vcnkgbGVha3MuCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9DYWxsKTogQWZ0ZXIgYSBjYWxsIHRvCglFc3RhYmxpc2hfVHJhbnNpZW50X1Njb3BlLCB0aGUgY2FsbCBtYXkgYmUgcmV3cml0dGVuIGFuZCByZWxvY2F0ZWQsIGluCgl3aGljaCBjYXNlIG5vIGZ1cnRoZXIgcHJvY2Vzc2luZyBpcyBuZWVkZWQuCgoJKiBzZW1fdXRpbC5hZGI6IChXcm9uZ19UeXBlKTogUmVmaW5lIHByZXZpb3VzIGZpeC4KCSBGaXhlcyBBQ0FUUyByZWdyZXNzaW9ucy4KCglQUiBhZGEvMTMzNTMKCSogc2VtX3ByYWcuYWRiIChCYWNrX0VuZF9DYW5ub3RfSW5saW5lKTogQSByZW5hbWluZ19hc19ib2R5IGNhbiBhbHdheXMKCWJlIGlubGluZWQuCgoyMDAzLTEyLTA4ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIDV5dGlpdGhvLmFkYiwgNXp0aHJpbmkuYWRiLCA1enRpaXRoby5hZGIsIGktdnRocmVhLmFkYiwKCWktdnRocmVhLmFkcywgcy10cGFlNjUuYWRiLCBzLXRwYWU2NS5hZHM6IENsZWFudXA6IFJlbW92ZSBhIGJ1bmNoIG9mCglvYnNvbGV0ZSBmaWxlcy4KCgkqIE1ha2VmaWxlLmluOiAocnRzLXJhdmVuc2Nhcik6IEdlbmVyYXRlIGFuIGVtcHR5IGxpYmduYXQuYS4KCShydHMtemZwKTogRGl0dG8uCgoyMDAzLTEyLTA4ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIDdzaW50bWFuLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBiaW5kZ2VuLmFkYjogQ29uZmlndXJhYmxlX1J1bl9UaW1lIG1vZGUgbm8gbG9uZ2VyIHN1cHByZXNzZXMgdGhlCglzdGFuZGFyZCBsaW5rZXIgb3B0aW9ucyB0byBnZXQgc3RhbmRhcmQgbGlicmFyaWVzIGxpbmtlZC4gV2Ugbm93IHBsYW4KCXRvIHByb3ZpZGUgZHVtbXkgdmVyc2lvbnMgb2YgdGhlc2UgbGlicmFyaWVzIHRvIG1hdGNoIHRoZSBhcHByb3ByaWF0ZQoJY29uZmlndXJhYmxlIHJ1bi10aW1lIChlLmcuIGlmIGEgbGlicmFyeSBpcyBub3QgbmVlZGVkIGF0IGFsbCwgcHJvdmlkZQoJYSBkdW1teSBlbXB0eSBsaWJyYXJ5KS4KCgkqIHRhcmdwYXJtLmFkczogQ29uZmlndXJhYmxlX1J1bl9UaW1lIG1vZGUgbm8gbG9uZ2VyIGFmZmVjdHMgbGlua2VyCglvcHRpb25zICgtTCBwYXJhbWV0ZXJzIGFuZCBzdGFuZGFyZCBsaWJyYXJpZXMpLiBXaGF0IHdlIHBsYW4gdG8gZG8gaXMKCXRvIHByb3ZpZGUgZHVtbXkgbGlicmFyaWVzIHdoZXJlIHRoZSBsaWJyYXJpZXMgYXJlIG5vdCByZXF1aXJlZC4KCgkqIGduYXRiaW5kLmFkYjogTWlub3IgY29tbWVudCBpbXByb3ZlbWVudAoKMjAwMy0xMi0wOCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogZXhwX2FnZ3IuYWRiIChCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogRG8gbm90IHJlbW92ZSB0aGUgZXhwYW5kZWQKCWFnZ3JlZ2F0ZSBpbiB0aGUgcGFyZW50LiBPdGhlcndpc2UgY29uc3RhbnRzIHdpdGggbGltaXRlZCBhZ2dyZWdhdGVzCglhcmUgbm90IHN1cHBvcnRlZC4gQWRkIG5ldyBmb3JtYWwgdG8gcGFzcyB0aGUgY29tcG9uZW50IHR5cGUgKEN0eXBlKS4KCUl0IGlzIHJlcXVpcmVkIHRvIGNhbGwgdGhlIGNvcnJlc3BvbmRpbmcgSVAgc3VicHJvZ3JhbSBpbiBjYXNlIG9mCglkZWZhdWx0IGluaXRpYWxpemVkIGNvbXBvbmVudHMuCgkoR2VuX0Fzc2lnbik6IEluIGNhc2Ugb2YgZGVmYXVsdC1pbml0aWFsaXplZCBjb21wb25lbnQsIGdlbmVyYXRlIGEKCWNhbGwgdG8gdGhlIElQIHN1YnByb2dyYW0gYXNzb2NpYXRlZCB3aXRoIHRoZSBjb21wb25lbnQuCgkoQnVpbGRfUmVjb3JkX0FnZ3JfQ29kZSk6IFJlbW92ZSB0aGUgYWdncmVnYXRlIGZyb20gdGhlIHBhcmVudCBpbiBjYXNlCglvZiBhZ2dyZWdhdGUgd2l0aCBkZWZhdWx0IGluaXRpYWxpemVkIGNvbXBvbmVudHMuCgkoSGFzX0RlZmF1bHRfSW5pdF9Db21wcyk6IEltcHJvdmUgaW1wbGVtZW50YXRpb24gdG8gcmVjdXJzaXZlbHkgY2hlY2sKCWFsbCB0aGUgcHJlc2VudCBleHByZXNzaW9ucy4KCgkqIGV4cF9jaDMuYWRzLCBleHBfY2gzLmFkYiAoQnVpbGRfSW5pdGlhbGl6YXRpb25fQ2FsbCk6IEFkZCBuZXcgZm9ybWFsCgl0byBpbmRpY2F0ZSB0aGF0IHRoZSBpbml0aWFsaXphdGlvbiBjYWxsIGNvcnJlc3BvbmRzIHRvIGEKCWRlZmF1bHQtaW5pdGlhbGl6ZWQgY29tcG9uZW50IG9mIGFuIGFnZ3JlZ2F0ZS4KCUluIGNhc2Ugb2YgZGVmYXVsdCBpbml0aWFsaXplZCBhZ2dyZWdhdGUgd2l0aCB0YXNrcyB0aGlzIHBhcmFtZXRlciBpcwoJdXNlZCB0byBnZW5lcmF0ZSBhIG51bGwgc3RyaW5nICh0aGlzIGlzIGp1c3QgYSB3b3JrYXJvdW5kIHRoYXQgbXVzdCBiZQoJaW1wcm92ZWQgbGF0ZXIpLiBJbiBjYXNlIG9mIGRpc2NyaW1pbmFudHMsIHRoaXMgcGFyYW1ldGVyIGlzIHVzZWQgdG8KCWdlbmVyYXRlIGEgc2VsZWN0ZWQgY29tcG9uZW50IG5vZGUgdGhhdCBnaXZlcyBhY2Nlc3MgdG8gdGhlIGRpc2NyaW1pbmFudAoJdmFsdWUuCgoJKiBleHBfY2g5LmFkcywgZXhwX2NoOS5hZGIgKEJ1aWxkX1Rhc2tfQWxsb2NhdGVfQmxvY2tfV2l0aF9TdG10cyk6IE5ldwoJc3VicHJvZ3JhbSwgYmFzZWQgb24gQnVpbGRfVGFza19BbGxvY2F0ZV9CbG9jaywgYnV0IGFkYXB0ZWQgdG8gZXhwYW5kCglhbGxvY2F0ZWQgYWdncmVnYXRlcyB3aXRoIGRlZmF1bHQtaW5pdGlhbGl6ZWQgY29tcG9uZW50cy4KCgkqIHBhci1jaDQuYWRiIChQX0FnZ3JlZ2F0ZV9Pcl9QYXJlbl9FeHByKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIGlmCgl0aGUgYm94IG5vdGF0aW9uIGlzIHVzZWQgaW4gcG9zaXRpb25hbCBhZ2dyZWdhdGVzLgoKMjAwMy0xMi0wOCAgU2FtdWVsIFRhcmRpZXUgIDx0YXJkaWV1QGFjdC1ldXJvcGUuZnI+CgoJKiBsaWIuYWRzOiBGaXggdHlwbyBpbiBjb21tZW50CgoyMDAzLTEyLTA4ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai5hZGIgKFByb2plY3RfRW1wdHkpOiBOZXcgY29tcG9uZW50IFVua2VwdF9Db21tZW50cwoJKFNjYW4pOiBSZW1vdmUgcHJvY2VkdXJlOyBtb3ZlZCB0byBQcmouRXJyLgoKCSogcHJqLmFkcyAoUHJvamVjdF9EYXRhKTogTmV3IEJvb2xlYW4gY29tcG9uZW50IFVua2VwdF9Db21tZW50cwoJKFNjYW4pOiBSZW1vdmUgcHJvY2VkdXJlOyBtb3ZlZCB0byBQcmouRXJyLgoKCSogcHJqLWRlY3QuYWRiOiBNYW5hZ2UgY29tbWVudHMgZm9yIHRoZSBkaWZmZXJlbnQgZGVjbGFyYXRpb25zLgoKCSogcHJqLXBhcnQuYWRiIChXaXRoX1JlY29yZCk6IE5ldyBjb21wb25lbnQgTm9kZQoJKFBhcnNlKTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyIFN0b3JlX0NvbW1lbnRzLCBkZWZhdWx0ZWQgdG8gRmFsc2UuCglTZXQgdGhlIHNjYW5uZXIgdG8gcmV0dXJuIGVuZHMgb2YgbGluZSBhbmQgY29tbWVudHMgYXMgdG9rZW5zLCBpZgoJU3RvcmVfQ29tbWVudHMgaXMgVHJ1ZS4KCShQcmVfUGFyc2VfQ29udGV4dF9DbGF1c2UpOiBDcmVhdGUgdGhlIE5fV2l0aF9DbGF1c2Ugbm9kZXMgc28gdGhhdAoJY29tbWVudHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBub2Rlcy4gU3RvcmUgdGhlIG5vZGUgSURzIGluIHRoZQoJV2l0aF9SZWNvcmRzLgoJKFBvc3RfUGFyc2VfQ29udGV4dF9DbGF1c2UpOiBVc2UgdGhlIE5fV2l0aF9DbGF1c2Ugbm9kZXMgc3RvcmVkIGluIHRoZQoJV2l0aF9SZWNvcmRzLgoJKFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogQ2FsbCBQcmVfUGFyc2VfQ29udGV4dF9DbGF1c2UgYmVmb3JlIGNyZWF0aW5nCgl0aGUgTl9Qcm9qZWN0IG5vZGUuIENhbGwgVHJlZS5TYXZlIGFuZCBUcmVlLlJlc2V0IGJlZm9yZSBzY2FubmluZyB0aGUKCWN1cnJlbnQgcHJvamVjdC4gQ2FsbCBUcmVlLlJlc3RvcmUgYWZ0ZXJ3YXJkcy4gU2V0IHRoZSB2YXJpb3VzIG5vZGVzCglmb3IgY29tbWVudCBzdG9yYWdlIChOZXh0X0VuZCwgRW5kX09mX0xpbmUsIFByZXZpb3VzX0xpbmUsCglQcmV2aW91c19FbmQpLgoKCSogcHJqLXBhcnQuYWRzIChQYXJzZSk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBTdG9yZV9Db21tZW50cywKCWRlZmF1bHRlZCB0byBGYWxzZS4KCgkqIHByai1wcC5hZGIgKFdyaXRlX1N0cmluZyk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBUcnVuY2F0ZWQsIGRlZmF1bHRlZAoJdG8gRmFsc2UuIFdoZW4gVHJ1bmNhdGVkIGlzIFRydWUsIHRydW5jYXRlIHRoZSBzdHJpbmcsIG5ldmVyIGdvIHRvIHRoZQoJbmV4dCBsaW5lLgoJKFdyaXRlX0VuZF9PZl9MaW5lX0NvbW1lbnQpOiBOZXcgcHJvY2VkdXJlCgkoUHJpbnQpOiBQcm9jZXNzIGNvbW1lbnRzIGZvciBub2RlcyBOX1dpdGhfQ2xhdXNlLAoJTl9QYWNrYWdlX0RlY2xhcmF0aW9uLCBOX1N0cmluZ19UeXBlX0RlY2xhcmF0aW9uLAoJTl9BdHRyaWJ1dGVfRGVjbGFyYXRpb24sIE5fVHlwZWRfVmFyaWFibGVfRGVjbGFyYXRpb24sCglOX1ZhcmlhYmxlX0RlY2xhcmF0aW9uLCBOX0Nhc2VfQ29uc3RydWN0aW9uLCBOX0Nhc2VfSXRlbS4KCVByb2Nlc3Mgbm9kZXMgTl9Db21tZW50LgoKCSogcHJqLXRyZWUuYWRzLCBwcmotdHJlZS5hZGIgKERlZmF1bHRfUHJvamVjdF9Ob2RlKTogSWYgaXQgaXMgYSBub2RlCgl3aXRob3V0IGNvbW1lbnRzIGFuZCB0aGVyZSBhcmUgc29tZSBjb21tZW50cywgc2V0IHRoZSBmbGFnCglVbmtlcHRfQ29tbWVudHMgdG8gVHJ1ZS4KCShTY2FuKTogSWYgdGhlcmUgYXJlIGNvbW1lbnRzLCBzZXQgdGhlIGZsYWcgVW5rZXB0X0NvbW1lbnRzIHRvIFRydWUgYW5kCgljbGVhciB0aGUgY29tbWVudHMuCgkoUHJvamVjdF9Ob2RlX0tpbmQpOiBBZGQgZW51bSB2YWx1ZXMgTl9Db21tZW50X1pvbmVzLCBOX0NvbW1lbnQKCShOZXh0X0VuZF9Ob2RlczogTmV3IHRhYmxlCgkoQ29tbWVudF9ab25lc19PZik6IE5ldyBmdW5jdGlvbgoJKFNjYW4pOiBOZXcgcHJvY2VkdXJlOyBtb3ZlZCBmcm9tIFByai4gQWNjdW11bGF0ZSBjb21tZW50cyBpbiB0aGUKCUNvbW1lbnRzIHRhYmxlIGFuZCBzZXQgZW5kIG9mIGxpbmUgY29tbWVudHMsIGNvbW1lbnRzIGFmdGVyLCBhZnRlciBlbmQKCWFuZCBiZWZvcmUgZW5kLgoJKEFkZF9Db21tZW50cyk6IE5ldyBwcm9jZWR1cmUKCShTYXZlLCBSZXN0b3JlLCBTZXNldF9TdGF0ZSk6IE5ldyBwcm9jZWR1cmVzCgkoVGhlcmVfQXJlX1Vua2VwdF9Db21tZW50cyk6IE5ldyBmdW5jdGlvbgoJKFNldF9QcmV2aW91c19MaW5lX05vZGUsIFNldF9QcmV2aW91c19FbmRfTm9kZSk6IE5ldyBwcm9jZWR1cmVzCgkoU2V0X0VuZF9PZl9MaW5lLCBTZXRfTmV4dF9FbmRfTm9kZSwgUmVtb3ZlX05leHRfRW5kX05vZGUpOiBOZXcKCXByb2NlZHVyZXMuCgkoRmlyc3RfQ29tbWVudF9BZnRlciwgRmlyc3RfQ29tbWVudF9BZnRlcl9FbmQpOiBOZXcgZnVuY3Rpb25zCgkoRmlyc3RfQ29tbWVudF9CZWZvcmUsIEZpcnN0X0NvbW1lbnRfQmVmb3JlX0VuZCk6IE5ldyBmdW5jdGlvbnMKCShOZXh0X0NvbW1lbnQpOiBOZXcgZnVuY3Rpb24KCShFbmRfT2ZfTGluZV9Db21tZW50LCBGb2xsb3dzX0VtcHR5X0xpbmUsCglJc19Gb2xsb3dlZF9CeV9FbXB0eV9MaW5lKTogTmV3IGZ1bmN0aW9ucwoJKFNldF9GaXJzdF9Db21tZW50X0FmdGVyLCBTZXRfRmlyc3RfQ29tbWVudF9BZnRlcl9FbmQpOiBOZXcgcHJvY2VkdXJlcwoJKFNldF9GaXJzdF9Db21tZW50X0JlZm9yZSwgU2V0X0ZpcnN0X0NvbW1lbnRfQmVmb3JlX0VuZCk6IE5ldyBwcm9jZWR1cmVzCgkoU2V0X05leHRfQ29tbWVudCk6IE5ldyBwcm9jZWR1cmUKCShEZWZhdWx0X1Byb2plY3RfTm9kZSk6IEFzc29jaWF0ZSBjb21tZW50IGJlZm9yZSBpZiB0aGUgbm9kZSBjYW4gc3RvcmUKCWNvbW1lbnRzLgoKCSogc2NhbnMuYWRzIChUb2tlbl9UeXBlKTogTmV3IGVudW1lcmF0aW9uIHZhbHVlIFRva19Db21tZW50CgkoQ29tbWVudF9JZCk6IE5ldyBnbG9iYWwgdmFyaWFibGUKCgkqIHNjbmcuYWRzLCBzY25nLmFkYiAoQ29tbWVudF9Jc19Ub2tlbik6IE5ldyBCb29sZWFuIGdsb2JhbCB2YXJpYWJsZSwKCWRlZmF1bHRlZCB0byBGYWxzZS4KCShTY2FuKTogU3RvcmUgcG9zaXRpb24gb2Ygc3RhcnQgb2YgY29tbWVudC4gSWYgY29tbWVudHMgYXJlIHRva2Vucywgc2V0CglDb21tZW50X0lkIGFuZCBzZXQgVG9rZW4gdG8gVG9rX0NvbW1lbnQgd2hlbiBzY2FubmluZyBhIGNvbW1lbnQuCgkoU2V0X0NvbW1lbnRfQXNfVG9rZW4pOiBOZXcgcHJvY2VkdXJlCgoJKiBzaW5wdXQtcC5hZGI6IFVwZGF0ZSBDb3B5cmlnaHQgbm90aWNlCgkoU291cmNlX0ZpbGVfSXNfU3VidW5pdCk6IENhbGwgUHJqLkVyci5TY2FubmVyLlNjYW4gaW5zdGVhZCBvZiBQcmouU2NhbgoJdGhhdCBubyBsb25nZXIgZXhpc3RzLgoKMjAwMy0xMi0wOCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogc2VtX2FnZ3IuYWRiOiBBZGQgZGVwZW5kZW5jZSBvbiBFeHBfVHNzIHBhY2thZ2UKCUNvcnJlY3QgdHlwbyBpbiBjb21tZW50CgkoUmVzb2x2ZV9BZ2dyZWdhdGUpOiBJbiBjYXNlIG9mIGFycmF5IGFnZ3JlZ2F0ZXMgc2V0IHRoZSBlc3RpbWF0ZWQKCXR5cGUgb2YgdGhlIGFnZ3JlZ2F0ZSBiZWZvcmUgY2FsbGluZyByZXNvbHZlLiBUaGlzIGlzIG5lZWRlZCB0byBrbm93Cgl0aGUgbmFtZSBvZiB0aGUgY29ycmVzcG9uZGluZyBJUCBpbiBjYXNlIG9mIGxpbWl0ZWQgYXJyYXkgYWdncmVnYXRlcy4KCShSZXNvbHZlX0FycmF5X0FnZ3JlZ2F0ZSk6IERlbGF5IHRoZSByZXNvbHV0aW9uIHRvIHRoZSBleHBhbnNpb24gcGhhc2UKCWluIGNhc2Ugb2YgZGVmYXVsdCBpbml0aWFsaXplZCBhcnJheSBjb21wb25lbnRzLgoKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX0Zvcm1hbF9PYmplY3RfRGVjbGFyYXRpb24pOiBBbGxvdyBsaW1pdGVkCgl0eXBlcy4gUmVxdWlyZWQgdG8gZ2l2ZSBzdXBwb3J0IHRvIGxpbWl0ZWQgYWdncmVnYXRlcyBpbiBnZW5lcmljCglmb3JtYWxzLgoKMjAwMy0xMi0wOCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMy5hZGIgKENoZWNrX0luaXRpYWxpemF0aW9uKTogRm9yIGxlZ2FsaXR5IHB1cnBvc2VzLCBhbgoJaW5saW5lZCBib2R5IGZ1bmN0aW9ucyBsaWtlIGFuIGluc3RhbnRpYXRpb24uCgkoRGVjaW1hbF9GaXhlZF9Qb2ludF9EZWNsYXJhdGlvbik6IERvIG5vdCBzZXQga2luZCBvZiBmaXJzdCBzdWJ0eXBlCgl1bnRpbCBib3VuZHMgYXJlIGFuYWx5emVkLCB0byBkaWFnbm9zZSBwcmVtYXR1cmUgdXNlIG9mIHR5cGUuCgoJKiBzZW1fdXRpbC5hZGIgKFdyb25nX1R5cGUpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiB0aGUgdHlwZSBvZgoJdGhlIGV4cHJlc3Npb24gaXMgdXNlZCBwcmVtYXR1cmVseS4KCjIwMDMtMTItMDggIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDMtMTItMDggIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogc2luZm8uaCwgZWluZm8uaCwgbm1ha2UuYWRzLCBubWFrZS5hZGIsIHRyZWVwcnMuYWRzOiBSZW1vdmVkLCBzaW5jZQoJdGhleSBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgTWFrZS1sYW5nLmluIGFuZCBjYXVzZSBub3RoaW5nIGJ1dAoJbWFpbnRlbmFuY2UgdHJvdWJsZXMuCgoyMDAzLTEyLTA1ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiAzc3NvbGlvcC5hZHM6IEZpeCBjb21tZW50ICh0aGlzIGlzIHRoZSBTb2xhcmlzLCBub3QgdGhlIFVuaXhXYXJlLAoJdmVyc2lvbiBvZiB0aGlzIHVuaXQpLgoKMjAwMy0xMi0wNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogNTNvc2ludGUuYWRzLCA1NG9zaW50ZS5hZHMsIDU1b3NpbnRlLmFkcywgNTZvc2ludGUuYWRzLCA1Ym9zaW50ZS5hZHMsCgk1Y29zaW50ZS5hZHMsIDVob3NpbnRlLmFkcywgNWlvc2ludGUuYWRzLCA1bG9zaW50ZS5hZHMsCgk1dG9zaW50ZS5hZHM6IERlZmluZSB0aGUgU0FfU0lHSU5GTyBjb25zdGFudCwgdG8gYWxsb3cgcmVmZXJlbmNlcyBmcm9tCgl0aGUgYm9keSBvZiBTeXN0ZW0uSW50ZXJydXB0X01hbmFnZW1lbnQgY29tbW9uIHRvIHNldmVyYWwgdGFyZ2V0cy4KCVVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlIHdoZW4gYXBwcm9wcmlhdGUuCgoJKiA1Mm9zaW50ZS5hZHMsIDVwb3NpbnRlLmFkczogRGVmaW5lIGEgZHVtbXkgdmFsdWUgZm9yIHRoZSBTQV9TSUdJTkZPCgljb25zdGFudC4KCgkqIDdzaW50bWFuLmFkYiAoZWxhYm9yYXRpb24pOiBTZXQgU0FfU0lHSU5GTyBpbiB0aGUgc2lnYWN0aW9uIGZsYWdzLAoJdG8gZW5zdXJlIHRoYXQgdGhlIGtlcm5lbCBmaWxscyBpbiB0aGUgaW50ZXJydXB0ZWQgY29udGV4dCBzdHJ1Y3R1cmUKCWJlZm9yZSBjYWxsaW5nIGEgc2lnbmFsIGhhbmRsZXIsIHdoaWNoIGlzIG5lY2Vzc2FyeSB0byBiZSBhYmxlIHRvCgl1bndpbmQgcGFzdCBpdC4gVXBkYXRlIHRoZSBjb3B5cmlnaHQgbm90aWNlLgoKMjAwMy0xMi0wNSAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiBhLWVsY2hoYS5hZHM6IE5ldyBmaWxlLgoKCSogYS1lbGNoaGEuYWRiOiBOZXcgZGVmYXVsdCBsYXN0IGNoYW5jZSBoYW5kbGVyLiBDb250ZW50cyB0YWtlbiBmcm9tCglBZGEuRXhjZXB0aW9ucy5FeGNlcHRpb25fVHJhY2VzLlVuaGFuZGxlZF9FeGNlcHRpb25fVGVybWluYXRlLgoKCSogYS1leGV4dHIuYWRiIChVbmhhbmRsZWRfRXhjZXB0aW9uX1Rlcm1pbmF0ZSk6IE1vc3Qgb2YgdGhpcyByb3V0aW5lCglpcyBtb3ZlZCB0byBhLWVsY2hoYS5hZGIgdG8gcHJvdmlkZSBhIHRhcmdldC1pbmRlcGVuZGVudCBkZWZhdWx0IGxhc3QKCWNoYW5jZSBoYW5kbGVyLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgYS1lbGNoaGEubwoKCSogTWFrZS1sYW5nLmluIChHTkFUX0FEQV9PQkpTLCBHTkFUQklORF9PQkpTKTogQWRkIGEtZWxjaGhhLm8uCgoyMDAzLTEyLTA1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0NhbGwpOiBJZiB0aGUgc3VicHJvZ3JhbSBpcyBpbmxpbmVkIGFuZCBpcwoJZGVjbGFyZWQgaW4gYW4gaW5zdGFuY2UsIGRvIG5vdCBpbmxpbmUgdGhlIGNhbGwgaWYgdGhlIGluc3RhbmNlIGlzIG5vdAoJZnJvemVuIHlldCwgdG8gcHJldmVudCBvcmRlciBvZiBlbGFib3JhdGlvbiBwcm9ibGVtcy4KCgkqIHNlbV9wcmFnLmFkYjogQWRkIGNvbW1lbnRzIGZvciBwcmV2aW91cyBmaXguCgoyMDAzLTEyLTA1ICBTYW11ZWwgVGFyZGlldSAgPHRhcmRpZXVAYWN0LWV1cm9wZS5mcj4KCgkqIGctdGFibGUuYWRiOiBVc2UgdGhlIHJpZ2h0IHZhcmlhYmxlIGluIFNldF9JdGVtLgoJVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoyMDAzLTEyLTA1ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgdW51c2VkIHJ1bGVzLgoKMjAwMy0xMi0wNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBzd2l0Y2gtYy5hZGIgKFNjYW5fRnJvbnRfRW5kX1N3aXRjaGVzKTogUmVtb3ZlIHByb2Nlc3Npbmcgb2YKCS1ub3N0ZGxpYi4gTm90IG5lZWRlZCBoZXJlIGFmdGVyIGFsbC4KCjIwMDMtMTItMDMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCglQUiBhZGEvMTE3MjQKCSogYWRhaW50LmgsIGFkYWludC5jLCBnLW9zX2xpYi5hZHM6CglEbyBub3QgYXNzdW1lIHRoYXQgdGhlIG9mZnNldCBhcmd1bWVudCB0byBsc2VlaygyKSBpcyBhIDMyIGJpdCBpbnRlZ2VyLAoJb24gc29tZSBwbGF0Zm9ybXMgKGluY2x1ZGluZyBGcmVlQlNEKSwgaXQgaXMgYSA2NCBiaXQgdmFsdWUuCglJbnRyb2R1Y2UgYSBfX2duYXRfbHNlZWsgd3JhcHBlciBpbiBhZGFpbnQuYyB0byBhbGxvdyBmb3IgcG9ydGFiaWxpdHkuCgoyMDAzLTEyLTAzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXR2c24uYWRzIChMaWJyYXJ5X1ZlcnNpb24pOiBOb3cgY29udGFpbiBvbmx5IHRoZSByZWxldmFudAoJdmVyc2lvbiBpbmZvLgoJKFZlcmJvc2VfTGlicmFyeV9WZXJzaW9uKTogTmV3IGNvbnN0YW50LgoKCSogZy1zcGlwYXQuYWRiLCBnLWF3ay5hZGIsIGctZGVicG9vLmFkYiwKCWctbWVtZHVtLmFkYiwgZy10aHJlYWQuYWRiLCBzLWdldmVvcC5hZGIsIHMtaW50ZXJyLmFkYiwKCXMtdGFza2luLmFkYiwgcy10YXNzdGEuYWRiOiBNYWtlIGNvZGUgY29tcGlsZSB3aXRoIC1nbmF0d2EuCgoJKiBnbmF0bGJyLmFkYjogQ2xlYW4gdXA6IHJlcGxhY2UgTGlicmFyeV9WZXJzaW9uIGJ5CglWZXJib3NlX0xpYnJhcnlfVmVyc2lvbi4KCgkqIG1ha2UuYWRiLCBsaWItd3JpdC5hZGIsIGV4cF9hdHRyLmFkYjoKCUNsZWFuIHVwOiByZXBsYWNlIExpYnJhcnlfVmVyc2lvbiBieSBWZXJib3NlX0xpYnJhcnlfVmVyc2lvbi4KCgkqIDVsaW50bWFuLmFkYjogUmVtb3ZlZC4KCgkqIE1ha2VmaWxlLmluOgoJVXBkYXRlIGFuZCBzaW1wbGlmeSBjb21wdXRhdGlvbiBvZiBMSUJSQVJZX1ZFUlNJT04uCglGaXggY29tcHV0YXRpb24gb2YgR1NNQVRDSF9WRVJTSU9OLgoJNWxpbnRtYW4uYWRiIGlzIG5vIGxvbmdlciB1c2VkOiByZXBsYWNlZCBieSA3c2ludG1hbi5hZGIuCgoyMDAzLTEyLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF9jaDUuYWRiOgoJKFBvc3NpYmxlX0JpdF9BbGlnbmVkX0NvbXBvbmVudCk6IE1heWJlX0JpdF9BbGlnbmVkX0xhcmdlX0NvbXBvbmVudCBuZXcKCW5hbWUuIE1vZGlmaWVkIHRvIGNvbnNpZGVyIHNtYWxsIG5vbi1iaXQtcGFja2VkIGFycmF5cyBhcyB0cm91Ymxlc29tZQoJYW5kIGluIG5lZWQgb2YgY29tcG9uZW50LWJ5LWNvbXBvbmVudCBhc3NpZ21lbnQgZXhwYW5zaW9uLgoKMjAwMy0xMi0wMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IFByb2Nlc3Mgbm9zdGRsaWIgYXMgbm9zdGRpbmMKCgkqIGJhY2tfZW5kLmFkYjogVXBkYXRlIENvcHlyaWdodCBub3RpY2UKCShTY2FuX0NvbXBpbGVyX0FyZ3VtZW50cyk6IFByb2Nlc3MgLW5vc3RkbGliIGRpcmVjdGx5LgoKMjAwMy0xMi0wMyAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46CglXaGVuIGRlZmluaW5nIExJQkdOQVRfVEFSR0VUX1BBSVJTIGZvciBiYXJlIGJvYXJkIHRhcmdldHMsIHJlbW92ZSB0aGUKCXJlZHVuZGFudCBpbmNsdXNpb24gb2YgRVhUUkFfSElFX05PTkVfVEFSR0VUX1BBSVJTLCB3aGljaCBpcyBhbHdheXMKCWluY2x1ZGVkIGluIEhJRV9OT05FX1RBUkdFVF9QQUlSUy4KCjIwMDMtMTItMDMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9hdHRyLmFkYjoKCShMZWdhbF9Gb3JtYWxfQXR0cmlidXRlKTogQXR0cmlidXRlIGlzIGxlZ2FsIGluIGFuIGlubGluZWQgYm9keSwgYXMgaXQKCWlzIGxlZ2FsIGluIGFuIGluc3RhbmNlLCBiZWNhdXNlIGxlZ2FsaXR5IGlzIGNoZWNoZWQgaW4gdGhlIHRlbXBsYXRlLgoKCSogc2VtX3ByYWcuYWRiOgoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIFdhcm5pbmdzKTogSW4gYW4gaW5saW5lZCBib2R5LCB0aGUgcHJhZ21hIG1heSBiZQoJYXBwcGxpZWQgdG8gYW4gdW5jaGVja2VkIGNvbnZlcnNpb24gb2YgYSBmb3JtYWwgcGFyYW1ldGVyLgoKCSogc2VtX3dhcm4uYWRiOgoJKE91dHB1dF9VbnJlZmVyZW5jZWRfTWVzc2FnZXMpOiBTdXBwcmVzcyAibm90IHJlYWQiIHdhcm5pbmdzIG9uIGltcG9ydGVkCgl2YXJpYWJsZXMuCgoyMDAzLTEyLTAzICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiB0Yi1hbHZtcy5jICh1bndpbmRfcmVndWxhcl9jb2RlLCB1bndpbmRfa2VybmVsX2hhbmRsZXIpOiBOZXcKCXJvdXRpbmVzLiBUaGUgc2Vjb25kIG9uZSBpcyBuZXcgZnVuY3Rpb25hbGl0eSB0byBkZWFsIHdpdGggYmFja3RyYWNpbmcKCXRocm91Z2ggc2lnbmFsIGhhbmRsZXJzLgoJKHVud2luZCk6IFNwbGl0IGludG8gdGhlIHR3byBzZXBhcmF0ZSBzdWJyb3V0aW5lcyBhYm92ZS4KCVVwZGF0ZSB0aGUgZG9jdW1lbnRhdGlvbiwgYW5kIGRlYWwgcHJvcGVybHkgd2l0aCBzaXplb2YgKFJFRykgZGlmZmVyZW50Cglmcm9tIHNpemVvZiAodm9pZCopLgoKMjAwMy0xMi0wMSAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIGEtZXhjZXB0LmFkYiAoUmFpc2VfQ3VycmVudF9FeGNlcCk6IEFkZCBhIHByYWdtYSBJbnNwZWN0aW9uX1BvaW50LAoJc28gdGhhdCB0aGUgZGVidWdnZXIgY2FuIHJlbGlhYmx5IGFjY2VzcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciwKCWFuZCB0aGVyZWZvcmUgaXMgYWJsZSB0byBkaXNwbGF5IHRoZSBleGNlcHRpb24gbmFtZSB3aGVuIGFuIGV4Y2VwdGlvbgoJYnJlYWtwb2ludCBpcyByZWFjaGVkLgoKMjAwMy0xMi0wMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZm1hcC5hZGI6IEZpeCB0eXBvIGluIHdhcm5pbmcgbWVzc2FnZS4KCgkqIGctc29ja2V0LmFkcywgZy1zb2NrZXQuYWRiOiBNYWtlIEZyZWUgYSB2aXNpYmxlIGluc3RhbmNlIG9mCglBZGEuVW5jaGVja2VkX0RlYWxsb2NhdGlvbiAobm8gbmVlZCB0byB3cmFwIGl0IGluIGEgc3VicHJvZ3JhbSkuCgoyMDAzLTEyLTAxICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1saWItcHJqLmFkYiAoQnVpbGRfTGlicmFyeS5Qcm9jZXNzKTogRG8gbm90IGNoZWNrIGEgd2l0aGVkIHVuaXQgaWYKCXRoZXIgaXMgbm8gQWZpbGUuCgkoQnVpbGRfTGlicmFyeSk6IEdldCB0aGUgc3dpdGNoZXMgb25seSBpZiBEZWZhdWx0X1N3aXRjaGVzIGlzIGRlY2xhcmVkCglpbiBwYWNrYWdlIEJpbmRlci4KCjIwMDMtMTItMDEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQWN0dWFscyk6IFdoZW4gYXBwbHlpbmcgdmFsaWRpdHkgY2hlY2tzIHRvCglhY3R1YWxzIHRoYXQgYXJlIGluZGV4ZWQgY29tcG9uZW50cywgcmVhbmFseXplIGFjdHVhbCB0byBlbnN1cmUgdGhhdAoJcGFja2VkIGFycmF5IHJlZmVyZW5jZXMgYXJlIHByb3Blcmx5IGV4cGFuZGVkLgoKCSogc2VtX2NoNS5hZGIgKERpYWdub3NlX05vbl9WYXJpYWJsZV9MaHMpOiBBZGQgc3BlY2lhbCBjYXNlIGZvcgoJYXR0ZW1wdGVkIGFzc2lnbm1lbnQgdG8gYSBkaXNjcmltaW5hbnQuCgoyMDAzLTEyLTAxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHJ0c2ZpbmQuYWRiLCBleHBfY2g0LmFkYiwgcy1leG5pbnQuYWRzLCBzLWV4bmludC5hZGI6IE1pbm9yCglyZWZvcm1hdHRpbmcuCgoJKiBzd2l0Y2gtYy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZyBvZiBjb21tZW50cwoKMjAwMy0xMi0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogQ2xlYW4gdXBzLgoKMjAwMy0xMi0wMSAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwMy0xMi0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiA1d3N5c3RlbS5hZHM6IERpc2FibGUgemVybyBjb3N0IGV4Y2VwdGlvbiwgbm90IHJlYWR5IHlldC4KCjIwMDMtMTEtMjkgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAobm1ha2UuYWRzKTogQWRkIGRlcGVuZGVuY3kgb24gYWRhL25tYWtlLmFkYgoJdG8gZm9yY2Ugc2VyaWFsaXphdGlvbi4KCjIwMDMtMTEtMjYgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGctc29ja2V0LmFkcywgZy1zb2NrZXQuYWRiOgoJQ2xhcmlmeSBkb2N1bWVudGF0aW9uIG9mIGZ1bmN0aW9uIFN0cmVhbS4gSW50cm9kdWNlIGEgRnJlZSBwcm9jZWR1cmUKCXRvIHJlbGVhc2UgdGhlIHJldHVybmVkIFN0cmVhbSBvbmNlIGl0IGJlY29tZXMgdW51c2VkLgoKCSogNWFzeXN0ZW0uYWRzOiBGb3IgQWxwaGEgVHJ1NjQsIGVuYWJsZSBaQ1ggYnkgZGVmYXVsdC4KCjIwMDMtMTEtMjYgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCShDb25kX1RpbWVkX1dhaXQpOiBJbnRyb2R1Y2UgbmV3IGNvbnN0YW50IFRpbWVfT3V0X01heCwKCXNpbmNlIE5UIDQgY2Fubm90IGhhbmRsZSB0aW1lb3V0IHZhbHVlcyB0aGF0IGFyZSB0b28gbGFyZ2UsCgllLmcuIERXT1JEJ0xhc3QgLSAxLgoKMjAwMy0xMS0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNC5hZGI6CgkoRXhwYW5kX05fU2xpY2UpOiBSZWNvZ25pemUgYWxsIGNhc2VzIG9mIHNsaWNlcyB0aGF0IGFwcGVhciBhcyBhY3R1YWxzCglpbiBwcm9jZWR1cmUgY2FsbHMgYW5kIHdob3NlIGV4cGFuc2lvbiBtdXN0IGJlIGRlZmVycmVkLgoKCSogZXhwX2NoNi5hZGIgKEFkZF9DYWxsX0J5X0NvcHlfTm9kZSk6IFJlbW92ZSBwcmV2aW91cyBmaXguIFByb3BlciBmaXgKCWlzIGluIGV4cF9jaDQuCgoJKiBzZW1fY2gzLmFkYjoKCShCdWlsZF9EZXJpdmVkX0FycmF5X1R5cGUpOiBDcmVhdGUgb3BlcmF0b3IgZm9yIHVuY29uc3RyYWluZWQgdHlwZQoJaWYgYW5jZXN0b3IgaXMgdW5jb25zdHJhaW5lZC4KCjIwMDMtMTEtMjYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZS5hZGIgKFByb2plY3RfT2JqZWN0X0RpcmVjdG9yeSk6IE5ldyBnbG9iYWwgdmFyaWFibGUKCShDaGFuZ2VfVG9fT2JqZWN0X0RpcmVjdG9yeSk6IE5ldyBwcm9jZWR1cmUKCShDb2xsZWN0X0FyZ3VtZW50c19BbmRfQ29tcGlsZSk6IENhbGwgQ2hhbmdlX1RvX09iamVjdF9EaXJlY3RvcnkgaW5zdGVhZAoJb2YgQ2hhbmdlX0RpciBkaXJlY3RseS4gRG8gbm90IGNoYW5nZSB3b3JraW5nIGRpcmVjdG9yeSB0byBvYmplY3QKCWRpcmVjdG9yeSBvZiBtYWluIHByb2plY3QgYWZ0ZXIgZWFjaCBjb21waWxhdGlvbi4KCShHbmF0bWFrZSk6IFVzZSBDaGFuZ2VfVG9fT2JqZWN0X0RpcmVjdG9yeSBpbnN0ZWFkIG9mIENoYW5nZV9EaXIKCWRpcmVjdGx5LgoJQ2hhbmdlIHRvIG9iamVjdCBkaXJlY3Rvcnkgb2YgbWFpbiBwcm9qZWN0IGJlZm9yZSBiaW5kaW5nIHN0ZXAuCgkoSW5pdGlhbGl6ZSk6IEluaXRpYWxpemUgUHJvamVjdF9PYmplY3RfRGlyZWN0b3J5IHRvIE5vX1Byb2plY3QKCgkqIG1saWItcHJqLmFkYjoKCShCdWlsZF9MaWJyYXJ5KTogVGFrZSBpbnRvIGFjY291bnQgQnVpbGRlcidEZWZhdWx0X1N3aXRjaGVzICgiQWRhIikgd2hlbgoJYmluZGluZyBhIFN0YW5kLUFsb25lIExpYnJhcnkuCgoJKiBvdXRwdXQuYWRiOiBVcGRhdGUgQ29weXJpZ2h0IG5vdGljZQoJKFdyaXRlX0NoYXIpOiBPdXRwdXQgYnVmZmVyIHdoZW4gZnVsbAoKMjAwMy0xMS0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMy5hZGI6IChDaGVja19TaXplKTogUmVzZXQgc2l6ZSBpZiBzaXplIGlzIHRvbyBzbWFsbAoKCSogc2VtX2NoMTMuYWRzOgoJKENoZWNrX1NpemUpOiBGaXggZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIGJpdC1wYWNrZWQgYXJyYXkgY2FzZQoKCSogc2VtX3Jlcy5hZGI6IEltcGxlbWVudCByZXN0cmljdGlvbiBOb19EaXJlY3RfQm9vbGVhbl9PcGVyYXRvcnMKCgkqIHMtcmlkZW50LmFkczogUHV0IE5vX0RpcmVjdF9Cb29sZWFuX09wZXJhdG9ycyBpbiBwcm9wZXIgb3JkZXIKCgkqIHMtcmlkZW50LmFkczogQWRkIG5ldyByZXN0cmljdGlvbiBOb19EaXJlY3RfQm9vbGVhbl9PcGVyYXRvcnMKCjIwMDMtMTEtMjQgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJUFIgYWRhLzEzMTQyCgkqIHV0aWxzLmMgKGluaXRfZ2lnaV9kZWNscyk6IENoYW5nZSBuYW1lIG9mIGJ1aWx0LWluIHNldGptcCB0bwoJX19idWlsdGluX3NldGptcCwgc2luY2UgdGhpcyBpcyBhcHBhcmVudGx5IG5lZWRlZCBieSByZWNlbnQKCW5vbiBBZGEgY2hhbmdlcy4KCjIwMDMtMTEtMjQgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogYWRhZGVjb2RlLmM6IE9ubHkgaW5jbHVkZSBjdHlwZS5oIGlmIG5vdCBJTl9HQ0MuCgkoX19nbmF0X2RlY29kZSk6IFVzZSBJU0RJR0lUIGZyb20gc2FmZS1jdHlwZS5oLgoKMjAwMy0xMS0yNCAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46CglVc2UgNXppbnRtYW4uYWRzIGZvciBWeFdvcmtzIHRhcmdldHMuIFRoaXMgZmlsZSBhdm9pZCBjb25mdXNpb24gYmV0d2VlbgoJc2lnbmFscyBhbmQgaW50ZXJydXB0cy4KCgkqIDV6aW50bWFuLmFkczogTmV3IEZpbGUuCgoJKiA1emludG1hbi5hZGI6IFJlcGxhY2UgRXhjZXB0aW9uX0ludGVycnVwdHMgYnkgRXhjZXB0aW9uX1NpZ25hbHMsIGFuZAoJYWRkIGV4Y2VwdGlvbiBzaWduYWxzIHRvIHRoZSBzZXQgb2YgdW5tYXNrZWQgc2lnbmFscy4KCgkqIDV6dGFwcm9wLmFkYjoKCVVzZSBBYm9ydF9UYXNrX1NpZ25hbCBpbnN0ZWFkIG9mIEFib3J0X1Rhc2tfSW50ZXJydXB0IHRvIGF2b2lkIGNvbmZ1c2lvbgoJYmV0d2VlbiBzaWduYWxzIGFuZCBpbnRlcnJ1cHRzLgoJQWRkIHRvIFVuYmxvY2tlZF9TaWduYWxfTWFzayB0aGUgc2V0IG9mIHNpZ25hbHMgdGhhdCBhcmUgaW4KCUtlZXBfVW5tYXNrZWQuCgoJKiA3c2lubWFvcC5hZGI6CglBZGRpbmcgYSBjaGVjayB0byBzZWUgd2hldGhlciB0aGUgSW50ZXJydXB0X0lEIHdlIHdhbnQgdG8gdW5tYXNrIGlzIGluCgl0aGUgcmFuZ2Ugb2YgS2VlcF9Vbm1hc2tlZCAoaW4gcHJvY2VkdXJlIEludGVycnVwdF9TZWxmX1Byb2Nlc3MpLiBUaGUKCXJlYXNvbiBpcyB0aGF0IHRoZSBpbmRleCB0eXBlIG9mIHRoZSBLZWVwX1VubWFza2VkIGFycmF5IGlzIG5vdCBhbHdheXMKCUludGVycnVwdF9JRDsgaXQgbWF5IGJlIGEgc3VidHlwZSBvZiBJbnRlcnJ1cHRfSUQuCgoyMDAzLTExLTI0ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAZ25hdC5jb20+CgoJKiBleHBfdXRpbC5hZGI6CgkoUmVtb3ZlX1NpZGVfRWZmZWN0cyk6IENvbmRpdGlvbiBjb25zdGFudG5lc3Mgb2Ygb2JqZWN0IGNyZWF0ZWQgZm9yIGEKCSBhbiB1bmNoZWNrZWQgdHlwZSBjb252ZXJzaW9uIG9uIHRoZSBjb25zdGFudG5lc3Mgb2YgdGhlIGV4cHJlc3Npb24KCSB0byBlbnN1cmUgdGhlIGNvcnJlY3QgdmFsdWUgZm9yICdDb25zdHJhaW5lZCB3aGVuIHBhc3NpbmcgY29tcG9uZW50cwoJIG9mIHZpZXctY29udmVydGVkIGNsYXNzLXdpZGUgb2JqZWN0cy4KCjIwMDMtMTEtMjQgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcGFyLWxvYWQuYWRiIChMb2FkKTogSW1wcm92ZSBoYW5kbGluZyBvZiBtaXNzcGVsbGVkIGFuZCBtaXNzaW5nIHVuaXRzCglSZW1vdmVzIHNldmVyYWwgY2FzZXMgb2YgY29tcGlsYXRpb24gYWJhbmRvbmVkIG1lc3NhZ2VzCgoJKiBsaWIuYWRiOiAoUmVtb3ZlX1VuaXQpOiBOZXcgcHJvY2VkdXJlCgoJKiBsaWIuYWRzOiAoUmVtb3ZlX1VuaXQpOiBOZXcgcHJvY2VkdXJlCgoJKiBsaWItbG9hZC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMy0xMS0yNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYjoKCShHbmF0bWFrZSwgSW5pdGlhbGl6ZSk6IENhbGwgVXNhZ2UgaW5zdGVhZCBvZiBNYWtldXNnIGRpcmVjdGx5CgkoTWFya2luZ19MYWJlbCk6IExhYmVsIHRvIG1hcmsgcHJvY2Vzc2VkIHNvdXJjZSBmaWxlcy4gSW5jcmVtZW50ZWQgZm9yCgllYWNoIGV4ZWN1dGFibGUuCgkoR25hdG1ha2UpOiBJbmNyZWFzZSBNYXJraW5nX0xhYmV0IGZvciBlYWNoIGV4ZWN1dGFibGUKCShJc19NYXJrZWQpOiBDb21wYXJlIGFnYWluc3QgbWFya2luZyBsYWJlbAoJKE1hcmspOiBNYXJrIHdpdGggbWFya2luZyBsYWJlbAoKMjAwMy0xMS0yNCAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiBzLXRocmVhZC5hZHM6CglNb3ZlIHRoZSBkZWNsYXJhdGlvbiBvZiB0aGUgVFNEIGZvciBTeXN0ZW0uVGhyZWFkcyB0byBTeXN0ZW0uU29mdF9MaW5rcy4KCUFkZCBzb21lIGNvbW1lbnRzLgoKCSogTWFrZWZpbGUuaW46IEFkZGVkIHRhcmdldCBwYWlyIGZvciBzLXRocmVhZC5hZGIgZm9yIGNlcnQgcnVudGltZS4KCShydHMtY2VydCk6IGJ1aWxkIGEgc2luZ2xlIHJlbG9jYXRhYmxlIG9iamVjdCBmb3IgdGhlIHJ1bi10aW1lIGxpYi4KCUZpeCBwZXJtcy4KCjIwMDMtMTEtMjQgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2UtbGFuZy5pbjoKCVVzZSBnbmF0bHMgcmF0aGVyIHRoYW4gZ2NjIHRvIG9idGFpbiB0aGUgbG9jYXRpb24gb2YgR05BVCBSVEwgZm9yCgljcm9zc3Rvb2xzIGJ1aWxkLgoKMjAwMy0xMS0yNCAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIG9wdC5hZGIgKFRyZWVfV3JpdGUpOiBHbmF0X1ZlcnNpb25fU3RyaW5nIGlzIG5vdyBhIGZ1bmN0aW9uLCBzbyB3ZQoJY2FuIG5vdCB1c2UgaXQgYXMgYmVmb3JlICh0aGF0IGlzLCBhcyBhIHZhcmlhYmxlKSB3aGVuIGR1bXBpbmcgaXQgaW50bwoJdGhlIHRyZWUgZmlsZS4gQWRkIGEgbG9jYWwgdmFyaWFibGUgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGlzCglmdW5jdGlvbiBhbmQgdG8gYmUgdXNlZCBhcyB0aGUgc3RyaW5nIHRvIGJlIHdyaXR0ZW4gaW50byB0aGUgdHJlZS4KCgkqIHNjbi5hZGIgKEluaXRpYWxpemVfU2Nhbm5lcik6IEFkZCBjb21tZW50cyBleHBsYWluaW5nIHRoZSByZWNlbnQKCWNoYW5nZXMuCgoJKiBzaW5wdXQuYWRiIChTb3VyY2VfRmlyc3QsIFNvdXJjZV9MYXN0KTogSW4gY2FzZSBvZgoJSW50ZXJuYWxfU291cmNlX0ZpbGUsIHJlcGxhY2UgcmV0dXJuaW5nIGF0dHJpYnV0ZXMgb2YKCUludGVybmFsX1NvdXJjZV9QdHIgKHdoaWNoIGlzIHdyb25nKSB3aXRoIHJldHVybmluZyBhdHRyaWJ1dGVzIG9mCglJbnRlcm5hbF9Tb3VyY2UuCgoyMDAzLTExLTI0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYjoKCShOZXdfQ29uY2F0ZW5hdGlvbl9PcCk6IFByb3BlciBuYW1lIGZvciBOZXdfQmluYXJ5X09wZXJhdG9yLCBvbmx5Cgl1c2VkIGZvciBpbXBsaWNpdCBjb25jYXRlbmF0aW9uIG9wZXJhdG9ycy4KCUNvZGUgY2xlYW51cC4KCgkqIHNlbV9lbGFiLmFkYjoKCShDaGVja19FbGFiX0NhbGwpOiBTZXQgTm9fRWxhYm9yYXRpb25fQ2hlY2sgYXBwcm9wcmlhdGVseSBvbiBjYWxscyBpbgoJdGFzayBib2RpZXMgdGhhdCBhcmUgaW4gdGhlIHNjb3BlIG9mIGEgU3VwcHJlc3MgcHJhZ21hLgoJKENoZWNrX0EgQ2FsbCk6IFVzZSB0aGUgZmxhZyB0byBwcmV2ZW50IHNwdXJpb3VzIGVsYWJvcmF0aW9uIGNoZWNrcy4KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiOgoJTmV3IGZsYWcgTm9fRWxhYm9yYXRpb25fQ2hlY2sgb24gZnVuY3Rpb24vcHJvY2VkdXJlIGNhbGxzLCB0byBwcm9wZXJseQoJc3VwcHJlc3MgY2hlY2tzIG9uIGNhbGxzIGluIHRhc2sgYm9kaWVzIHRoYXQgYXJlIHdpdGhpbiBhIGxvY2FsIHN1cHByZXNzCglwcmFnbWEuCgoJKiBleHBfY2g0LmFkYjoKCShFeHBhbmRfQ29uY2F0ZW5hdGVfT3RoZXIpOiBVc2UgdGhlIHByb3BlciBpbnRlZ2VyIHR5cGUgZm9yIHRoZQoJZXhwcmVzc2lvbiBmb3IgdGhlIHVwcGVyIGJvdW5kLCB0byBhdm9pZCB1bml2ZXJzYWxfaW50ZWdlciBjb21wdXRhdGlvbnMKCXdoZW4gcG9zc2libGUuCgoyMDAzLTExLTIxICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogLmN2c2lnbm9yZTogRGVsZXRlLgoKMjAwMy0xMS0yMSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIDU1c3lzdGVtLmFkczogU2V0IFpDWF9CeV9EZWZhdWx0IGFuZCBHQ0NfWkNYX1N1cHBvcnQgdG8gVHJ1ZS4KCjIwMDMtMTEtMjEgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWN0LWV1cm9wZS5mcj4KCgkqIDV3c3lzdGVtLmFkczogRW5hYmxlIHplcm8gY29zdCBleGNlcHRpb24uCgoyMDAzLTExLTIxICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIDV6dGlpdGhvLmFkYjogUmVtb3ZlIGFuIHVucmVmZXJlbmNlZCB2YXJpYWJsZS4KCjIwMDMtMTEtMjEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGFkYWludC5jOiBGb3IgRnJlZUJTRCwgdXNlIG1rc3RlbXAuCgoyMDAzLTExLTIxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRsYnIuYWRiOiBOb3cgcmVmZXJlbmNlIEduYXRfU3RhdGljX1ZlcnNpb25fU3RyaW5nLgoKMjAwMy0xMS0yMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBibGQuYWRiOiBSZW1vdmUgdXNlbGVzcyBVU0Ugb2YgZ25hdHZzbgoKCSogZ25hdGNob3AuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUNsZWFuIHVwIHZlcnNpb24gaGFuZGxpbmcgdG8gYmUgbW9yZSBjb25zaXN0ZW50CgoJKiBnbmF0eHJlZi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZ3ByY21kLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglGaXggb3V0cHV0IG9mIGNvcHlyaWdodCB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciB0b29scwoKMjAwMy0xMS0yMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYiAoU2Nhbl9NYWtlX0FyZ3MpOiBEbyBub3QgdHJhbnNtaXQgLS1SVFM9IHRvIGduYXRsaW5rCgoyMDAzLTExLTIxICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogYXRyZWUuYWRiIChJbml0aWFsaXplKTogQWRkIGluaXRpYWxpemF0aW9ucyBmb3IgZ2xvYmFsIHZhcmlhYmxlcwoJdXNlZCBpbiBOZXdfQ29weV9UcmVlLgoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX1N0YW5kYXJkKTogQWRkIGNhbGwgdG8gSW5pdGlhbGl6ZV9TY2FubmVyICh3aXRoCglJbnRlcm5hbF9Tb3VyY2VfRmlsZSBhcyB0aGUgYWN0dWFsKS4KCVB1dCB0aGUgc2V0IG9mIHN0YXRlbWVudHMgY3JlYXRpbmcgQW55X0NoYXJhY3RlciBiZWZvcmUgdGhlIHNldCBvZgoJc3RhdGVtZW50cyBjcmVhdGluZyBBbnlfQXJyYXkgdG8gaGF2ZSBBbnlfQ2hhcmFjdGVyIGZ1bGx5IGluaXRpYWxpemVkCgl3aGVuIGl0IGlzIHVzZWQgaW4gY3JlYXRpbmcgQW55X0FycmF5LgoKCSogc2NuLmFkYiAoSW5pdGlhbGl6ZV9TY2FubmVyKTogRG8gbm90IHNldCBDb21lc19Gcm9tX1NvdXJjZSBPTiBhbmQgZG8KCW5vdCBjYWxsIFNjYW4gaW4gY2FzZSBpZiB0aGUgYWN0dWFsIGlzIEludGVybmFsX1NvdXJjZV9GaWxlCglBZGQgMjAwMyB0byBjb3B5cmlnaHQgbm90ZS4KCgkqIHNpbnB1dC5hZGIgKFNvdXJjZV9GaXJzdCwgU291cmNlX0xhc3QsIFNvdXJjZV9UZXh0KTogQWRkIGNvZGUgZm9yCglwcm9jZXNzaW5nIEludGVybmFsX1NvdXJjZV9GaWxlLgoKCSogdHlwZXMuYWRzOiBBZGQgdGhlIGNvbnN0YW50IEludGVybmFsX1NvdXJjZV9GaWxlIHJlcHJlc2VudGluZyB0aGUKCXNvdXJjZSBidWZmZXIgZm9yIGFydGlmaWNpYWwgc291cmNlLWNvZGUtbGlrZSBzdHJpbmdzIGNyZWF0ZWQgd2l0aGluCgl0aGUgY29tcGlsZXIgKHRoZSBkZWZpbml0aW9uIG9mIFNvdXJjZV9GaWxlX0luZGV4IGlzIGNoYW5nZWQpLgoKMjAwMy0xMS0yMCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiAzNXNvY2Nvbi5hZHMsIDQ1aW50bmFtLmFkcywgNTVvc2ludGUuYWRiLCA1NW9zaW50ZS5hZHMsCgk1NnN5c3RlbS5hZHM6IE5ldyBmaWxlLCBGcmVlQlNEIHZlcnNpb24uCgoyMDAzLTExLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhLmV4dHJhY2xlYW4pOiBEZWxldGUuCgoyMDAzLTExLTE5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRtZW0uYWRiOiBDbGVhbiB1cCB2ZXJib3NlIG91dHB1dC4KCgkqIGdwcmNtZC5hZGI6IENoYW5nZSBjb3B5cmlnaHQgdG8gRlNGLgoKMjAwMy0xMS0xOSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBzeW1ib2xzLmFkYjogKEluaXRpYWxpemUpOiBOZXcgcGFyYW1ldGVycyBSZWZlcmVuY2UsIFN5bWJvbF9Qb2xpY3kKCWFuZCBWZXJzaW9uIChpZ25vcmVkKS4KCgkqIHN5bWJvbHMuYWRzOiAoUG9saWN5KTogTmV3IHR5cGUKCShJbml0aWFsaXplKTogTmV3IHBhcmFtZXRlciBSZWZlcmVuY2UsIFN5bWJvbF9Qb2xpY3kgYW5kCglMaWJyYXJ5X1ZlcnNpb24uCglSZW1vdmUgcGFyYW1ldGVyIEZvcmNlLgoJTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYmFkYjogTmV3IHN0YW5kYXJkIG5hbWVzCglMaWJyYXJ5X1JlZmVyZW5jZV9TeW1ib2xfRmlsZSBhbmQgTGlicmFyeV9TeW1ib2xfUG9saWN5CgoJKiBtbGliLXByai5hZGI6CgkoQnVpbGRfTGlicmFyeSk6IENhbGwgQnVpbGRfRGluYW1pY19MaWJyYXJ5IHdpdGggdGhlIFN5bWJvbF9EYXRhIG9mIHRoZQoJcHJvamVjdC4KCgkqIG1saWItdGd0LmFkYjoKCShCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBOZXcgcGFyYW1ldGVyIFN5bWJvbF9EYXRhIChpZ25vcmVkKQoKCSogbWxpYi10Z3QuYWRzOiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogTmV3IHBhcmFtZXRlciBTeW1ib2xfRGF0YQoKCSogcHJqLmFkYjogKFByb2plY3RfRW1wdHkpOiBOZXcgY29tcG9uZW50IFN5bWJvbF9EYXRhCgoJKiBwcmouYWRzOiAoUG9saWN5LCBTeW1ib2xfUmVjb3JkKTogTmV3IHR5cGVzCgkoUHJvamVjdF9EYXRhKTogTmV3IGNvbXBvbmVudCBTeW1ib2xfRGF0YQoKCSogcHJqLWF0dHIuYWRiOgoJTmV3IGF0dHJpYnV0ZXMgTGlicmFyeV9TeW1ib2xfRmlsZSwgTGlicmFyeV9TeW1ib2xfUG9saWN5IGFuZAoJTGlicmFyeV9SZWZlcmVuY2VfU3ltYm9sX0ZpbGUuCgoJKiBwcmotbm1zYy5hZGI6CgkoQWRhX0NoZWNrKTogV2hlbiBwcm9qZWN0IGlzIGEgU3RhbmQtQWxvbmUgbGlicmFyeSBwcm9qZWN0LCBwcm9jZXNzCglhdHRyaWJ1dGUgTGlicmFyeV9TeW1ib2xfRmlsZSwgTGlicmFyeV9TeW1ib2xfUG9saWN5IGFuZAoJTGlicmFyeV9SZWZlcmVuY2VfU3ltYm9sX0ZpbGUuCgoJKiA1YW1sLXRndC5hZGIsIDVibWwtdGd0LmFkYiwgNWdtbC10Z3QuYWRiLCA1aG1sLXRndC5hZGIsCgk1d21sLXRndC5hZGIsIDV6bWwtdGd0LmFkYiwgNWxtbC10Z3QuYWRiLAoJNXNtbC10Z3QuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBOZXcgcGFyYW1ldGVyCglTeW1ib2xfRGF0YSAoaWdub3JlZCkuCgoJKiA1dm1sLXRndC5hZGIgKFZNU19PcHRpb25zKTogUmVtb3ZlIC0tZm9yLWxpbmtlcj1nc21hdGNoPWVxdWFsLDEsMAoJKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IE5ldyBwYXJhbWV0ZXIgU3ltYm9sX0RhdGEuIE5ldyBpbnRlcm5hbAoJZnVuY3Rpb25zIE9wdGlvbl9GaWxlX05hbWUgYW5kIFZlcnNpb25fU3RyaW5nLiBTZXQgbmV3IG9wdGlvbnMgb2YKCWduYXRzeW0gcmVsYXRlZCB0byBzeW1ib2wgZmlsZSwgc3ltYm9sIHBvbGljeSBhbmQgcmVmZXJlbmNlIHN5bWJvbAoJZmlsZS4KCgkqIDV2c3ltYm9sLmFkYjoKCUV4dGVuc2l2ZSBtb2RpZmljYXRpb25zIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSByZWZlcmVuY2Ugc3ltYm9sIGZpbGUsCgl0aGUgc3ltYm9sIHBvbGljeSwgdGhlIGxpYnJhcnkgdmVyc2lvbiBhbmQgdG8gcHV0IGluIHRoZSBzeW1ib2wgZmlsZSB0aGUKCW1pbm9yIGFuZCBtYWpvciBJRHMuCgoJKiBibGQuYWRiIChQcm9jZXNzX0RlY2xhcmF0aXZlX0l0ZW1zKTogUHV0IHNlY29uZCBhcmd1bWVudCBvZgoJZ3ByY21kIHRvX2Fic29sdXRlIGJldHdlZW4gc2luZ2xlIHF1b3RlcywgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aAoJV2luZG93cy4KCgkqIGJsZC1pby5hZGI6IFVwZGF0ZSBDb3B5cmlnaHQgbm90aWNlLgoJKEZsdXNoKTogUmVtb3ZlIGxhc3QgY2hhcmFjdGVyIG9mIGEgbGluZSwgaWYgaXQgaXMgYSBiYWNrIHNsYXNoLCB0bwoJYXZvaWQgbWFrZSBwcm9ibGVtcy4KCgkqIGduYXRzeW0uYWRiOgoJSW1wbGVtZW50IG5ldyBzY2hlbWUgd2l0aCByZWZlcmVuY2Ugc3ltYm9sIGZpbGUgYW5kIHN5bWJvbCBwb2xpY3kuCgoJKiBnLW9zX2xpYi5hZHM6IChJc19EaXJlY3RvcnkpOiBDbGFyaWZ5IGNvbW1lbnQKCjIwMDMtMTEtMTkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYXRyZWUuYWRiOiBNb3ZlIE5ld19Db3B5X1RyZWUgZ2xvYmFsIHZhcmlhYmxlcyB0byBoZWFkIG9mIHBhY2thZ2UKCgkqIGVycm91dC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMy0xMS0xOSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGI6IChEaWFnbm9zZV9DYWxsKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJQWRkIHJlZmVyZW5jZSB0byBBZGEwWSAoQUktNTAyMTcpCgoJKiBzZW1fY2g2LmFkYiwgc2VtX2NoOC5hZGIsIHNlbV90eXBlLmFkYiwKCXNlbV91dGlsLmFkYjogQWRkIHJlZmVyZW5jZSB0byBBSS01MDIxNwoKCSogc2luZm8uYWRzOiAoTl9XaXRoX0NsYXVzZSk6IERvY3VtZW50IGZpZWxkcyByZWZlcnJlZCB0byBBSS01MDIxNwoKCSogc3ByaW50LmFkYjogQWRkIHJlZmVyZW5jZSB0byBBZGEwWSAoQUktNTAyMTcsIEFJLTI4NykKCgkqIHNlbV9hZ2dyLmFkYjogQ29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBBSS0yODcgY2hhbmdlcwoKCSogcGFyLWNoNC5hZGI6IERvY3VtZW50IHByZXZpb3VzIGNoYW5nZXMuCgoJKiBsaWItbG9hZC5hZGIsIGxpYi13cml0LmFkYiwgZWluZm8uYWRzLCBwYXItY2gxMC5hZGIsCglzZW1fY2F0LmFkYiwgc2VtX2NoMy5hZGIsIHNlbV9jaDEwLmFkYiwgc2VtX2NoMTIuYWRiOiBBZGQgcmVmZXJlbmNlcyB0bwoJQWRhMFkgKEFJLTUwMjE3KQoKCSogZXhwX2FnZ3IuYWRiOiBBZGQgcmVmZXJlbmNlcyB0byBBSS0yODcgaW4gcHJldmlvdXMgY2hhbmdlcwoKMjAwMy0xMS0xOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNi5hZGI6CgkoQWRkX0NhbGxfQnlfQ29weV9Ob2RlKTogRG8gbm90IG9yaWdpbmFsIG5vZGUgb2YgcmV3cml0dGVuIGV4cHJlc3Npb24KCWluIHRoZSByZXdyaXRpbmcgaXMgdGhlIHJlc3VsdCBvZiBhbiBpbmxpbmVkIGNhbGwuCgoJKiBleHBfY2g2LmFkYiAoQWRkX0NhbGxfQnlfQ29weV9Ob2RlKTogSWYgYWN0dWFsIGZvciAoaW4tKW91dAoJcGFyYW1ldGVyIGlzIGEgdHlwZSBjb252ZXJzaW9uLCB1c2Ugb3JpZ2luYWwgbm9kZSB0byBjb25zdHJ1Y3QgdGhlCglwb3N0LWNhbGwgYXNzaWdubWVudCwgYmVjYXVzZSBleHByZXNzaW9uIG1heSBoYXZlIGJlZW4gcmV3cml0dGVuLCBlLmcuCglpZiBpdCBpcyBhIHBhY2tlZCBhcnJheS4KCgkqIHNlbV9hdHRyLmFkYjoKCShSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSAnQ29uc3RyYWluZWQpOiBBdHRyaWJ1dGUgaXMgbGVnYWwgaW4gYW4gaW5saW5lZAoJYm9keSwganVzdCBhcyBpdCBpcyBpbiBhbiBpbnN0YW5jZS4KCUNhdGVnb3JpemF0aW9uIHJvdXRpbmVzCgoJKiBzZW1fY2gxMi5hZGIgKEFuYWx5emVfQXNzb2NpYXRpb24sIEluc3RhbnRpYXRlX0Zvcm1hbF9TdWJwcm9ncmFtLAoJSW5zdGFudGlhdGVfT2JqZWN0KTogU2V0IHByb3BlciBzbG9jIHJlZmVyZW5jZSBmb3IgbWVzc2FnZSBvbiBtaXNzaW5nCglhY3R1YWwuCgoyMDAzLTExLTE5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogQWRkIEZyZWVCU0QgbGliZ25hdCBwYWlycy4KCgkqIHVzYWdlLmFkYjogRml4IHR5cG8gaW4gdXNhZ2UgbWVzc2FnZS4KCjIwMDMtMTEtMTkgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46IE9uIHBvd2VycGMtd3JzLXZ4d29ya3NhZTogQWRkIHMtdGhyZWFkLmFkPywKCXMtdGhyaW5pLmFkPyBhbmQgcy10aWl0aG8uYWRiIHRvIHRoZSBmdWxsIHJ1bnRpbWUsIHRvIHN1cHBvcnQgdGhlCglwcmFnbWEgVGhyZWFkX0JvZHkuCglSZW1vdmUgaS12dGhyZWEuYWQ/IGFuZCBzLXRwYWU2NS5hZD8sIG5vdCBuZWVkZWQgYW55bW9yZS4KCgkqIHMtdGhyZWFkLmFkYjogVGhpcyBmaWxlIGlzIG5vdyBhIGR1bW15IGltcGxlbWVudGF0aW9uIG9mCglTeXN0ZW0uVGhyZWFkLgoKMjAwMy0xMS0xOSAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIHJ0c2ZpbmQuYWRiIChJbml0aWFsaXplKTogQWRkIGluaXRpYWxpemF0aW9uIGZvciBSVEVfSXNfQXZhaWxhYmxlCgoyMDAzLTExLTE5ICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFjdC1ldXJvcGUuZnI+CgoJKiB4cmVmX2xpYi5hZGIgKFBhcnNlX0lkZW50aWZpZXJfSW5mbyk6IEFkZCBoYW5kbGluZyBvZiBnZW5lcmljCglpbnN0YW5jaWF0aW9uIHJlZmVyZW5jZXMgaW4gdGhlIHBhcmVudCB0eXBlIGRlc2NyaXB0aW9uLgoKMjAwMy0xMS0xOCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFkYS10cmVlLmRlZjogKEFMTE9DQVRFX0VYUFIpOiBDbGFzcyBpcyAiMiIsIG5vdCAicyIuCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0Zsb2F0aW5nX1BvaW50X1N1YnR5cGUpOiBTZXQKCVRZUEVfUFJFQ0lTSU9OIGRpcmVjdGx5IGZyb20gZXNpemUuCgoyMDAzLTExLTE4ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBjc3RyZWFtcy5jOgoJVXNlIHJlYWxwYXRoKDMpIG9uIEZyZWVCU0QuIEZpeCB0eXBvIGluIGNvbW1lbnQgd2hpbGUgd2UgYXJlIGF0IGl0LgoKCSogaW5pdC5jOiBJbml0aWFsaXphdGlvbiByb3V0aW5lcyBmb3IgRnJlZUJTRAoKCSogbGluay5jOiBMaW5rIGluZm8gZm9yIEZyZWVCU0QKCgkqIHN5c2RlcC5jOiBBZGQgdGhlIGNhc2Ugb2YgRnJlZUJTRAoKMjAwMy0xMS0xNyAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiA1enRocmluaS5hZGI6IFJlbW92ZSB0aGUgY2FsbCB0byBJbml0X1JUUyBhdCBlbGFib3JhdGlvbiwgYXMgaXQgaXMKCWFscmVhZHkgY2FsbGVkIGluIFN5c3RlbS5UaHJlYWRzLgoKCSogNXp0aWl0aG8uYWRiIChJbml0aWFsaXplX1Rhc2tfSG9va3MpOiBSZW1vdmUgdGhlIHJlZ2lzdHJhdGlvbiBvZiB0aGUKCWVudmlyb25tZW50IHRhc2ssIGFzIGl0IGhhcyBiZWVuIG1vdmVkIHRvIFN5c3RlbS5UaHJlYWRzLkluaXRpYWxpemF0aW9uLgoKMjAwMy0xMS0xNyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBhZGFpbnQuYyAoX19nbmF0bGliX2luc3RhbGxfbG9ja3MpOiBPbmx5IHJlZmVyZW5jZQoJX19nbmF0X2luc3RhbGxfbG9ja3Mgb24gVk1TLCBzaW5jZSBvdGhlciBwbGF0Zm9ybXMgY2FuIGF2b2lkIHVzaW5nCgktLWVuYWJsZS10aHJlYWRzPWduYXQKCjIwMDMtMTEtMTcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhZGEtdHJlZS5oOiAoVFlQRV9JU19QQUNLRURfQVJSQVlfVFlQRV9QKTogTmV3IG1hY3JvLgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9BcnJheV9TdWJ0eXBlKTogU2V0CglUWVBFX1BBQ0tFRF9BUlJBWV9UWVBFX1AuCgkodmFsaWRhdGVfc2l6ZSk6IERvIG5vdCB2ZXJpZnkgc2l6ZSBpZiBUWVBFX0lTX1BBQ0tFRF9BUlJBWV9UWVBFX1AuCgoJUGFydCBvZiBQUiBhZGEvMTI4MDYKCSogdXRpbHMuYyAoZmxvYXRfdHlwZV9mb3JfcHJlY2lzaW9uKTogUmVuYW1lZCBmcm9tIGZsb2F0X3R5cGVfZm9yX3NpemUuCglVc2UgR0VUX01PREVfUFJFQ0lTSU9OIGluc3RlYWQgb2YgR0VUX01PREVfQklUU0laRS4KCjIwMDMtMTEtMTcgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ25hdGNob3AuYWRiIChFcnJvcl9Nc2cpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgV2FybmluZywgZGVmYXVsdGVkCgl0byBGYWxzZS4KCURvIG5vdCBzZXQgZXhpdCBzdGF0dXMgdG8gRmFpbHVyZSB3aGVuIFdhcm5pbmcgaXMgVHJ1ZS4KCShHbmF0Y2hvcCk6IE1ha2UgZXJyb3JzICJubyBjb21waWxhdGlvbiB1bml0cyBmb3VuZCIgYW5kCgkibm8gc291cmNlIGZpbGVzIHdyaXR0ZW4iIHdhcm5pbmdzIG9ubHkuCgoJKiBtYWtlLmFkYiAoR25hdG1ha2UpOiBXaGVuIHVzaW5nIGEgcHJvamVjdCBmaWxlLCBzZXQKCUxvb2tfSW5fUHJpbWFyeV9EaXIgdG8gRmFsc2UuCgkoQ29uZmlndXJhdGlvbl9QcmFnbWFzX1N3aXRjaCk6IENoZWNrIGZvciBHbG9iYWxfQ29uZmlndXJhdGlvbl9QcmFnbWFzCglhbmQgTG9jYWxfQ29uZmlndXJhdGlvbl9QcmFnbWFzIGluIHRoZSBwcm9qZWN0IHdoZXJlIHRoZXkgYXJlIGRlY2xhcmVkCglub3QgYW4gZXh0ZW5kaW5nIHByb2plY3Qgd2hpY2ggbWlnaHQgaGF2ZSBpbmhlcml0ZWQgdGhlbS4KCgkqIG9zaW50LmFkYiAoTG9jYXRlX0ZpbGUpOiBJZiBOYW1lIGlzIGFscmVhZHkgYW4gYWJzb2x1dGUgcGF0aCwgZG8gbm90Cglsb29rIGZvciBhIGRpcmVjdG9yeS4KCgkqIHBhci1jaDEwLmFkYiAoUF9Db21waWxhdGlvbl9Vbml0KTogSWYgc291cmNlIGNvbnRhaW5zIG5vIHRva2VuLCBhbmQKCS1nbmF0cyAoQ2hlY2tfU3ludGF4KSBpcyB1c2VkLCBpc3N1ZSBvbmx5IGEgd2FybmluZywgbm90IGFuIGVycm9yLgoKCSogcHJqLmFkYiAoUmVnaXN0ZXJfRGVmYXVsdF9OYW1pbmdfU2NoZW1lKTogQWRkIG5ldyBjb21wb25lbnQgUHJvamVjdAoJaW4gb2JqZWN0cyBvZiB0eXBlIFZhcmlhYmxlX1ZhbHVlLgoKCSogcHJqLmFkczogKFZhcmlhYmxlX1ZhbHVlKTogTmV3IGNvbXBvbmVudCBQcm9qZWN0CgoJKiBwcmotbm1zYy5hZGIgKEFkYV9DaGVjay5XYXJuX0lmX05vdF9Tb3VyY2VzKTogTm8gd2FybmluZyBpZiBzb3VyY2UKCWlzIGluIGEgcHJvamVjdCBleHRlbmRlZCBieSBQcm9qZWN0LgoKCSogcHJqLXByb2MuYWRiIChBZGRfQXR0cmlidXRlcyk6IE5ldyBwYXJhbWV0ZXIgUHJvamVjdC4gU2V0IGNvbXBvbmVudAoJUHJvamVjdCBvZiBWYXJpYWJsZV9WYWx1ZXMgdG8gdGhpcyBuZXcgcGFyYW1ldGVyIHZhbHVlLgoJKEV4cHJlc3Npb24pOiBTZXQgY29tcG9uZW50IFByb2plY3Qgb2YgVmFyaWFibGVfVmFsdWVzLgoJKFByb2Nlc3NfRGVjbGFyYXRpdmVfSXRlbXMpOiBDYWxsIEFkZF9BdHRyaWJ1dGVzIHdpdGggcGFyYW1ldGVyIFByb2plY3QuCglTZXQgdGhlIGNvbXBvbmVudCBQcm9qZWN0IGluIGFycmF5IGVsZW1lbnRzLgoKMjAwMy0xMS0xNyAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIGVycm91dC5hZGI6IChJbml0aWFsaXplKTogQWRkIGluaXRpYWxpemF0aW9uIGZvciBlcnJvciBub2Rlcy4KCgkqIHNlbV9jaDEyLmFkYiAoSW5pdGlhbGl6ZSk6IEFkZCBtaXNzaW5nIGluaXRpYWxpemF0aW9ucyBmb3IKCUV4Y2hhbmdlZF9WaWV3cyBhbmQgSGlkZGVuX0VudGl0aWVzLgoKMjAwMy0xMS0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiIChDb3B5X0dlbmVyaWNfTm9kZSk6IFByZXNlcnZlIGVudGl0eSB3aGVuIGNvcHlpbmcgYW4KCWFscmVhZHkgaW5zdGFudGlhdGVkIHRyZWUgZm9yIHVzZSBpbiBzdWJzZXF1ZW50IGlubGluaW5nLgoJKEFuYWx5emVfQXNzb2NpYXRpb25zLCBJbnN0YW50aWF0ZV9Gb3JtYWxfU3VicHJvZ3JhbSwKCUluc3RhbnRpYXRlX09iamVjdCk6IGltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IgbWlzbWF0Y2ggaW4KCWluc3RhbnRpYXRpb25zLgoKCSogc2VtX2NoNi5hZGIgKEJ1aWxkX0JvZHlfVG9fSW5saW5lKTogTWFqb3IgY2xlYW51cCB0byBoYW5kbGUKCWluc3RhbnRpYXRpb25zIG9mIHN1YnByb2dyYW1zIGRlY2xhcmVkIGluIGluc3RhbmNlcy4KCjIwMDMtMTEtMTcgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX0FsbG9jYXRvcik6IFByZXZpb3VzIG1vZGlmaWNhdGlvbiBtdXN0IGJlCglleGVjdXRlZCBvbmx5IHVuZGVyIHRoZSBFeHRlbnNpb25zX0FsbG93ZWQgZmxhZy4KCjIwMDMtMTEtMTcgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYS1leGV4ZGEuYWRiIChBZGRyZXNzX0ltYWdlKTogRml4IGRvY3VtZW50YXRpb24gdG8gaW5kaWNhdGUgbGVhZGluZwoJemVyb2VzIHN1cHByZXNzZWQuCgkoQWRkcmVzc19JbWFnZSk6IEZpeCBidWcgb2YgcmV0dXJuaW5nIDB4IGluc3RlYWQgb2YgMHgwCglNaW5vciByZWZvcm1hdHRpbmcgKGZ1bmN0aW9uIHNwZWNzKS4KCgkqIGVpbmZvLmFkczogTWlub3IgZml4IGZvciBkb2N1bWVudGF0aW9uIG9mIElzX0JpdF9QYWNrZWRfQXJyYXkKCShtaXNzZWQgY2FzZSBvZiAzMy02MykKCgkqIGZyZWV6ZS5hZGIsIHNlbV9jaDEzLmFkYjogUHJvcGVybHkgY2hlY2sgc2l6ZSBvZiBwYWNrZWQgYml0IGFycmF5CgoJKiBzLXRocmVhZC5hZGI6IEFkZCBjb21tZW50cyBmb3IgcHJhZ21hIFJlc3RyaWN0aW9uCgoJKiBleHBfYWdnci5hZGIsIGctZGVidXRpLmFkYiwgcGFyLWNoNC5hZGIsIHNlbV9hZ2dyLmFkYiwKCXNlbV9jaDYuYWRiLCBzcHJpbnQuYWRiLCB4cmVmX2xpYi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMy0xMS0xNyAgRWQgRmFsaXMgIDxmYWxpc0BnbmF0LmNvbT4KCgkqIHMtdGhyZWFkLmFkYjogQWRkZWQgTm9fVGFza2luZyByZXN0cmljdGlvbiBmb3IgdGhpcyBpbXBsZW1lbnRhdGlvbi4KCjIwMDMtMTEtMTcgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWN0LWV1cm9wZS5mcj4KCgkqIHhyZWZfbGliLmFkYiAoUGFyc2VfSWRlbnRpZmllcl9JbmZvKTogQWRkIGhhbmRsaW5nIG9mIGdlbmVyaWMKCWluc3RhbmNpYXRpb24gcmVmZXJlbmNlcyBpbiB0aGUgcGFyZW50IHR5cGUgZGVzY3JpcHRpb24uCgoyMDAzLTExLTE3ICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDAzLTExLTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhLnRhZ3MpOiBDcmVhdGUgVEFHUy5zdWIgZmlsZXMgaW4gZWFjaCBkaXJlY3RvcnkKCWFuZCBUQUdTIGZpbGVzIHRoYXQgaW5jbHVkZSB0aGVtIGZvciBlYWNoIGZyb250IGVuZC4KCjIwMDMtMTEtMTQgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGxhbmcub3B0OiBDaGFuZ2UgLVduby1sb25nLWxvbmcgdG8gLVdsb25nLWxvbmcgc2luY2UgdGhlIGxhdHRlcgoJaXMgdGhlIGNhbm9uaWNhbCB2ZXJzaW9uLgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW4gKExJQkdOQVRfVEFSR0VUX1BBSVJTKTogQWRkIHJ1bGVzIGZvciB4ODZfNjQtbGludXguCgoJKiA1bnN5c3RlbS5hZHM6IE5ldyBmaWxlIGZvciB4ODZfNjQtbGludXgtZ251LgoKMjAwMy0xMS0xNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBubWFrZS5hZHMsIG5tYWtlLmFkYiwgc2luZm8uaCwgdHJlZXBycy5hZHM6IFJlZ2VuZXJhdGVkLgoKCSogY29tcGVyci5hZGI6IEZpeCBsb2dpYyBpbiBwcmV2aW91cyBjaGFuZ2UuCgoyMDAzLTExLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIDVibWwtdGd0LmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogVXNlCglPc2ludC5JbmNsdWRlX0Rpcl9EZWZhdWx0X1ByZWZpeCBpbnN0ZWFkIG9mCglTZGVmYXVsdC5JbmNsdWRlX0Rpcl9EZWZhdWx0X05hbWUuCgoJKiBnbmF0bGJyLmFkYjogVXBkYXRlIENvcHlyaWdodCBub3RpY2UKCShHbmF0bGJyKTogOiBVc2UgT3NpbnQuSW5jbHVkZV9EaXJfRGVmYXVsdF9QcmVmaXggaW5zdGVhZCBvZgoJU2RlZmF1bHQuSW5jbHVkZV9EaXJfRGVmYXVsdF9OYW1lIGFuZCBPc2ludC5PYmplY3RfRGlyX0RlZmF1bHRfUHJlZml4CglpbnN0ZWFkIG9mIFNkZWZhdWx0Lk9iamVjdF9EaXJfRGVmYXVsdF9OYW1lCgoJKiBnbmF0bGluay5hZGI6CgkoUHJvY2Vzc19CaW5kZXJfRmlsZSk6IE5ldmVyIHN1cHByZXNzIHRoZSBvcHRpb24gZm9sbG93aW5nIC1YbGlua2VyCgoJKiBtZGxsLXV0bC5hZGI6CgkoR2NjKTogVXNlIE9zaW50Lk9iamVjdF9EaXJfRGVmYXVsdF9QcmVmaXggaW5zdGVhZCBvZgoJU2RlZmF1bHQuT2JqZWN0X0Rpcl9EZWZhdWx0X05hbWUuCgoJKiBvc2ludC5hZHMsIG9zaW50LmFkYjoKCShJbmNsdWRlX0Rpcl9EZWZhdWx0X1ByZWZpeCwgT2JqZWN0X0Rpcl9EZWZhdWx0X1ByZWZpeCk6IE5ldyBmdW5jdGlvbnMKCU1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIHZtc19jb252LmFkczogTWlub3IgcmVmb3JtYXRpbmcKCVJlbW92ZSBHTkFUIFNUQU5EQVJEIGFuZCBHTkFUIFBTVEEKCgkqIHZtc19jb252LmFkYjoKCUFsbG93IEdOQVQgTUFLRSB0byBoYXZlIHNldmVyYWwgZmlsZXMgb24gdGhlIGNvbW1hbmQgbGluZS4KCShJbml0X09iamVjdF9EaXJzKTogVXNlIE9zaW50Lk9iamVjdF9EaXJfRGVmYXVsdF9QcmVmaXggaW5zdGVhZCBvZgoJU2RlZmF1bHQuT2JqZWN0X0Rpcl9EZWZhdWx0X05hbWUuCglNaW5vciBSZWZvcm1hdGluZwoJUmVtb3ZlIGRhdGEgZm9yIEdOQVQgU1RBTkRBUkQKCgkqIHZtc19kYXRhLmFkczoKCUFkZCBuZXcgY29tcGlsZXIgcXVhbGlmaWVyIC9QUklOVF9TVEFOREFSRCAoLWduYXRTKQoJUmVtb3ZlIGRhdGEgZm9yIEdOQVQgU1RBTkRBUkQKCVJlbW92ZSBvcHRpb25zIGFuZCBkb2N1bWVudGF0aW9uIGZvciAtZ25hdHdiLy1nbmF0d0I6IHRoZXNlIHdhcm5pbmcKCW9wdGlvbnMgbm8gbG9uZ2VyIGV4aXN0LgoKMjAwMy0xMS0xMyAgRWQgRmFsaXMgIDxmYWxpc0BnbmF0LmNvbT4KCgkqIDV6dGhyaW5pLmFkYjogKEluaXRfUlRTKTogTWFkZSB2aXNpYmxlCgoJKiA1enRocmluaS5hZGI6CgkoUmVnaXN0ZXIpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IGNhbGwgdG8gdGFza1ZhckdldCB0aGF0IGNoZWNrZWQgd2hldGhlcgoJIGFuIEFUU0Qgd2FzIGFscmVhZHkgc2V0IGFzIGEgdGFzayB2YXIgZm9yIHRoZSBhcmd1bWVudCB0aHJlYWQuCgoJKiBzLXRocmVhZC5hZGI6CglVcGRhdGVkIGNvbW1lbnQgdG8gcmVmbGVjdCB0aGF0IHRoaXMgaXMgYSBWeFdvcmtzIHZlcnNpb24KCUFkZGVkIGNvbnRleHQgY2xhdXNlIGZvciBTeXN0ZW0uVGhyZWFkcy5Jbml0aWFsaXphdGlvbgoJQWRkZWQgY2FsbCB0byBTeXN0ZW0uVGhyZWFkcy5Jbml0aWFsaXphdGlvbi5Jbml0X1JUUwoKMjAwMy0xMS0xMyAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiA1enRocmluaS5hZGI6CgkoSW5pdF9SVFMpOiBOZXcgcHJvY2VkdXJlLCBmb3IgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBydW4tdGltZSBsaWIuCgoJKiBzLXRocmVhZC5hZGI6CglSZW1vdmUgZGVwZW5kYW5jeSBvbiBTeXN0ZW0uSW5pdCwgc28gdGhhdCB0aGlzIGZpbGUgY2FuIGJlIHVzZWQgaW4gdGhlCglBRTY1MyBzZXF1ZW50aWFsIHJ1bi10aW1lIGxpYi4KCjIwMDMtMTEtMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYmluZGdlbi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMy0xMS0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogY2hlY2tzLmFkYjoKCShBcHBseV9EaXNjcmltaW5hbnRfQ2hlY2spOiBEbyBubyBhcHBseSBjaGVjayBpZiB0YXJnZXQgdHlwZSBpcyBkZXJpdmVkCglmcm9tIHNvdXJjZSB0eXBlIHdpdGggbm8gYXBwbGljYWJsZSBjb25zdHJhaW50LgoKCSogbGliLXdyaXQuYWRiOgoJKEVuc3VyZV9TeXN0ZW1fRGVwZW5kZW5jeSk6IERvIG5vdCBhcHBseSB0aGUgc3R5bGUgY2hlY2tzIHRoYXQgbWF5IGhhdmUKCWJlZW4gc3BlY2lmaWVkIGZvciB0aGUgbWFpbiB1bml0LgoKCSogc2VtX2NoOC5hZGI6CgkoRmluZF9TZWxlY3RlZF9Db21wb25lbnQpOiBGdXJ0aGVyIGltcHJvdmVtZW50IGluIGVycm9yIG1lc3NhZ2UsIHdpdGgKCVJNIHJlZmVyZW5jZS4KCgkqIHNlbV9yZXMuYWRiOgoJKFJlc29sdmUpOiBIYW5kbGUgcHJvcGVybHkgdGhlIGNhc2Ugb2YgYW4gaWxsZWdhbCBvdmVybG9hZGVkIHByb3RlY3RlZAoJcHJvY2VkdXJlLgoKMjAwMy0xMS0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogZXhwX2FnZ3IuYWRiOgoJKEhhc19EZWZhdWx0X0luaXRfQ29tcHMpOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIHByZXNlbmNlIG9mCglkZWZhdWx0IGluaXRpYWxpemF0aW9uIGluIGFuIGFnZ3JlZ2F0ZS4KCShCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogUmVjdXJzaXZlbHkgZXhwYW5kIHRoZSBhbmNlc3RvciBpbiBjYXNlIG9mCglleHRlbnNpb24gYWdncmVnYXRlIG9mIGEgbGltaXRlZCByZWNvcmQuIEluIGFkZGl0aW9uLCBhIG5ldyBmb3JtYWwKCXdhcyBhZGRlZCB0byBkbyBub3QgaW5pdGlhbGl6ZSB0aGUgcmVjb3JkIGNvbnRyb2xsZXIgKGlmIGFueSkgZHVyaW5nCgl0aGlzIHJlY3Vyc2l2ZSBleHBhbnNpb24gb2YgYW5jZXN0b3JzLgoJKEluaXRfQ29udHJvbGxlcik6IEFkZCBzdXBwb3J0IGZvciBsaW1pdGVkIHJlY29yZCBjb21wb25lbnRzLgoJKEV4cGFuZF9SZWNvcmRfQWdncmVnYXRlKTogSW4gY2FzZSBvZiBkZWZhdWx0IGluaXRpYWxpemVkIGNvbXBvbmVudHMKCWNvbnZlcnQgdGhlIGFnZ3JlZ2F0ZSBpbnRvIGEgc2V0IG9mIGFzc2lnbm1lbnRzLgoKCSogcGFyLWNoNC5hZGIgKFBfQWdncmVnYXRlX09yX1BhcmVuX0V4cHIpOiBVcGRhdGUgdGhlIGNvbW1lbnQKCWRlc2NyaWJpbmcgdGhlIG5ldyBzeW50YXguCglOb3RoaW5nIGVsc2UgbmVlZGVkIHRvIGJlIGRvbmUgYmVjYXVzZSB0aGlzIHN1YnByb2dyYW0gZGVsZWdhdGVzIHBhcnQgb2YKCWl0cyB3b3JrIHRvIFBfUHJlY29yZF9Pcl9BcnJheV9Db21wb25lbnRfQXNzb2NpYXRpb24uCgkoUF9SZWNvcmRfT3JfQXJyYXlfQ29tcG9uZW50X0Fzc29jaWF0aW9uKTogR2l2ZSBzdXBwb3J0IHRvIHRoZSBuZXcKCXN5bnRheCBmb3IgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBvZiBjb21wb25lbnRzLgoKCSogc2VtX2FnZ3IuYWRiOgoJKFJlc29sdmVfQWdncmVnYXRlKTogUmVsYXggdGhlIHN0cmljdG5lc3Mgb2YgdGhlIGZyb250ZW5kIGluIGNhc2Ugb2YKCWxpbWl0ZWQgYWdncmVnYXRlcy4KCShSZXNvbHZlX1JlY29yZF9BZ2dyZWdhdGUpOiBHaXZlIHN1cHBvcnQgdG8gZGVmYXVsdCBpbml0aWFsaXplZAoJY29tcG9uZW50cy4KCShHZXRfVmFsdWUpOiBJbiBjYXNlIG9mIGRlZmF1bHQgaW5pdGlhbGl6ZWQgY29tcG9uZW50cywgZHVwbGljYXRlCgl0aGUgY29ycmVzcG9uZGluZyBkZWZhdWx0IGV4cHJlc3Npb24gKGZyb20gdGhlIHJlY29yZCB0eXBlCglkZWNsYXJhdGlvbikuIEluIGNhc2Ugb2YgZGVmYXVsdCBpbml0aWFsaXphdGlvbiBpbiB0aGUgKm90aGVycyoKCWNob2ljZSwgZG8gbm90IGNoZWNrIHRoYXQgYWxsIGNvbXBvbmVudHMgaGF2ZSB0aGUgc2FtZSB0eXBlLgoJKFJlc29sdmVfRXh0ZW5zaW9uX0FnZ3JlZ2F0ZSk6IEdpdmUgc3VwcG9ydCB0byBsaW1pdGVkIGV4dGVuc2lvbgoJYWdncmVnYXRlcy4KCgkqIHNlbV9jaDMuYWRiOgoJKENoZWNrX0luaXRpYWxpemF0aW9uKTogUmVsYXggdGhlIHN0cmljdG5lc3Mgb2YgdGhlIGZyb250LWVuZCBpbiBjYXNlCglvZiBhZ2dyZWdhdGUgYW5kIGV4dGVuc2lvbiBhZ2dyZWdhdGVzLiBUaGlzIHRlc3QgaXMgbm93IGRvbmUgaW4KCUdldF9WYWx1ZSBpbiBhIHBlci1jb21wb25lbnQgbWFubmVyLgoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfQWxsb2NhdG9yKTogRG9uJ3QgcG9zdCBhbiBlcnJvciBpZiB0aGUKCWV4cHJlc3Npb24gY29ycmVzcG9uZHMgdG8gYSBsaW1pdGVkIGFnZ3JlZ2F0ZS4gVGhpcyB0ZXN0IGlzIG5vdyBkb25lCglpbiBHZXRfVmFsdWUuCgoJKiBzaW5mby5hZHMsIHNpbmZvLmFkYiAoTl9Db21wb25lbnRfQXNzb2NpYXRpb24pOiBBZGRpdGlvbiBvZgoJQm94X1ByZXNlbnQgZmxhZy4KCgkqIHNwcmludC5hZGIgKFNwcmludF9Ob2RlX0FjdHVhbCk6IE1vZGlmaWVkIHRvIHByaW50IGFuIG1ib3ggaWYKCXByZXNlbnQgaW4gYW4gTl9Db21wb25lbnRfQXNzb2NpYXRpb24gbm9kZQoKMjAwMy0xMS0xMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX2NoOS5hZGIgKEFuYWx5emVfQWNjZXB0X1N0YXRlbWVudCk6IEEgcHJvY2VkdXJlIGhpZGVzIGEKCXR5cGUtY29uZm9ybWFudCBlbnRyeSBvbmx5IGlmIHRoZXkgYXJlIGhvbW9ncmFwaHMuCgoyMDAzLTExLTEzICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDAzLTExLTEyICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGFkYWRlY29kZS5jOiBVc2UgPD4gZm9ybSBvZiBpbmNsdWRlIGZvciBjdHlwZS5oLgoJKiBzeXNkZXAuYyBbSU5fUlRTXTogVXNlIDw+IGZvcm0gb2YgaW5jbHVkZSBmb3IgdGltZS5oLgoKMjAwMy0xMS0xMiAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiA1Z3N5c3RlbS5hZHMgKEZ1bmN0aW9uc19SZXR1cm5fQnlfRFNQKTogU2V0IHRvIEZhbHNlLgoJV29ya3MgYXJvdW5kIFBSIG1pZGRsZS1lbmQvNjU1Mi4KCjIwMDMtMTEtMTAgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiA1eXRpaXRoby5hZGI6IChwcm9jU3RhcnRIb29rQWRkKTogRGVmaW5pdGlvbiBhbmQgY2FsbCBkZWxldGVkCgoJKiA1emluaXQuYWRiOiAoSW5zdGFsbF9IYW5kbGVyKTogTW92ZWQgYmFjayB0byBzcGVjCgkoSW5zdGFsbF9TaWduYWxfSGFuZGxlcnMpOiBEZWxldGVkCgoJKiA1enRocmluaS5hZGI6IEFkZGVkIGNvbnRleHQgY2xhdXNlIGZvciBTeXN0ZW0uU3RvcmFnZV9FbGVtZW50cwoJKFJlZ2lzdGVyKTogT25seSBoYW5kbGVzIGNyZWF0aW9uIG9mIHRhc2tWYXI7IGluaXRpYWxpemF0aW9uIG1vdmVkIHRvCglUaHJlYWRfQm9keV9FbnRlci4KCShSZXNldF9UU0QpOiBEZWxldGVkOyByZXBsYWNlZCBieSBUaHJlYWRfQm9keV9FbnRlcgoJQWRkZWQgZGVjbGFyYXRpb24gb2YgZW52aXJvbm1lbnQgdGFzayBzZWNvbmRhcnkgc3RhY2sgYW5kCglpbml0aWFsaXphdGlvbi4KCgkqIHMtdGhyZWFkLmFkYjogSW1wbGVtZW50IGJvZGllcyBmb3IgdGhyZWFkIGJvZHkgcHJvY2Vzc2luZwoKCSogcy10aHJlYWQuYWRzOgoJQWRkZWQgY29tbWVudCBpZGVudGlmeWluZyBzdXBwb3J0ZWQgdGFyZ2V0cyBmb3IgcHJhZ21hIFRocmVhZF9Cb2R5LgoKMjAwMy0xMS0xMCAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogYWRhaW50LmMgKF9nbmF0X3N0YXQpIFtXSU4zMl06IENoZWNrIGlmIG5hbWUgaXMgbm90IGJpZ2dlciB0aGFuCglHTkFUX01BWF9QQVRIX0xFTi4KCgkqIHMtZmlsZWlvLmFkYjoKCShPcGVuKTogUHJvcGVybHkgY2hlY2sgZm9yIHN0cmluZyBsZW5ndGggYmVmb3JlIGNvcHlpbmcgaW50byB0aGUgYnVmZmVyLgoJUmFpc2VzIE5hbWVfRXJyb3IgaWYgYnVmZmVyIGlzIHRvbyBzbWFsbC4gTm90ZSB0aGF0IHRoaXMgd2FzIGEgcG90ZW50aWFsCglidWZmZXIgb3ZlcmZsb3cuCgoyMDAzLTExLTEwICBSb21haW4gQmVycmVuZG9ubmVyICA8YmVycmVuZG9AYWN0LWV1cm9wZS5mcj4KCgkqIGJpbmRnZW4uYWRiLCBjb21wZXJyLmFkYjogQ29kZSBjbGVhbiB1cHMuCgkqIGduYXR2c24uYWRzLCBnbmF0dnNuLmFkYiAoR2V0X0duYXRfVmVyc2lvbl9UeXBlKTogTmV3IGZ1bmN0aW9uLgoKMjAwMy0xMS0xMCAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIGduYXQxZHJ2LmFkYjogQWRkIGNhbGwgdG8gU2VtX0VsaW0uSW5pdGlhbGl6ZS4KCjIwMDMtMTEtMTAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ3ByY21kLmFkYjoKCShHcHJjbWQpOiBBZGQgbmV3IGNvbW1hbmQgInByZWZpeCIgdG8gZ2V0IHRoZSBwcmVmaXggb2YgdGhlIEdOQVQKCWluc3RhbGxhdGlvbi4KCgkqIG1ha2UuYWRiIChTY2FuX01ha2VfQXJnKTogVHJhbnNtaXQgLW5vc3RkbGliIHRvIHRoZSBjb21waWxlcgoKCSogcHJqLmFkYjogKFByb2plY3RfRW1wdHkpOiBBZGQgbmV3IGJvb2xlYW4gY29tcG9uZW50IFZpcnR1YWwKCgkqIHByai5hZHM6IChWaXJ0dWFsX1ByZWZpeCk6IE5ldyBjb25zdGFudCBzdHJpbmcKCShQcm9qZWN0X0RhdGEpOiBOZXcgYm9vbGVhbiBjb21wb25lbnQgVmlydHVhbAoKCSogcHJqLW5tc2MuYWRiIChMYW5ndWFnZV9JbmRlcGVuZGVudF9DaGVjayk6IEFkanVzdCBlcnJvciBtZXNzYWdlIHdoZW4KCWEgbGlicmFyeSBwcm9qZWN0IGlzIGV4dGVuZGVkIGJ5IGEgdmlydHVhbCBleHRlbmRpbmcgcHJvamVjdC4KCgkqIHByai1wYXJ0LmFkYjoKCU1vZGlmaWNhdGlvbnMgdGhyb3VnaG91dCB0byBpbXBsZW1lbnQgZXh0ZW5kaW5nLWFsbCBwcm9qZWN0LCBpbmNsdWRpbmc6CgkoVmlydHVhbF9IYXNoLCBQcm9jZXNzZWRfSGFzaCk6IE5ldyBoYXNoIHRhYmxlcwoJKENyZWF0ZV9WaXJ0dWFsX0V4dGVuZGluZ19Qcm9qZWN0KTogTmV3IHByb2NlZHVyZQoJKExvb2tfRm9yX1ZpcnR1YWxfUHJvamVjdHNfRm9yKTogTmV3IHByb2NlZHVyZQoKCSogcHJqLXByb2MuYWRiOgoJKFByb2Nlc3MpOiBBZnRlciBjaGVja2luZyB0aGUgcHJvamVjdHMsIGlmIG1haW4gcHJvamVjdCBpcyBhbgoJZXh0ZW5kaW5nLWFsbCBwcm9qZWN0LCBzZXQgdGhlIG9iamVjdCBkaXJlY3Rvcnkgb2YgYWxsIHZpcnR1YWwgZXh0ZW5kaW5nCglwcm9qZWN0IHRvIHRoZSBvYmplY3QgZGlyZWN0b3J5IG9mIHRoZSBtYWluIHByb2plY3QuCglBZGp1c3QgZXJyb3IgbWVzc2FnZSB3aGVuIGEgdmlydHVhbCBleHRlbmRpbmcgcHJvamVjdCBoYXMgdGhlIHNhbWUKCW9iamVjdCBkaXJlY3RvcnkgYXMgYW4gcHJvamVjdCBiZWluZyBleHRlbmRlZC4KCShSZWN1cnNpdmVfUHJvY2Vzcyk6IElmIG5hbWUgc3RhcnRzIHdpdGggdGhlIHZpcnR1YWwgcHJlZml4LCBzZXQgVmlydHVhbAoJdG8gVHJ1ZSBpbiB0aGUgcHJvamVjdCBkYXRhLgoKCSogcHJqLXRyZWUuYWRiOgoJKERlZmF1bHRfUHJvamVjdF9Ob2RlKTogQWRkIG5ldyBib29sZWFuIGNvbXBvbmVudCBFeHRlbmRpbmdfQWxsCgkoSXNfRXh0ZW5kaW5nX0FsbCk6IE5ldyBmdW5jdGlvbgoJKFNldF9Jc19FeHRlbmRpbmdfQWxsKTogTmV3IHByb2NlZHVyZQoKCSogcHJqLXRyZWUuYWRzOiAoSXNfRXh0ZW5kaW5nX0FsbCk6IE5ldyBmdW5jdGlvbgoJKFNldF9Jc19FeHRlbmRpbmdfQWxsKTogTmV3IHByb2NlZHVyZQoJKFByb2plY3RfTm9kZV9SZWNvcmQpOiBOZXcgYm9vbGVhbiBjb21wb25lbnQgRXh0ZW5kaW5nX0FsbAoKCSogc3dpdGNoLWMuYWRiOiAoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMpOiBQcm9jZXNzIC1ub3N0ZGxpYgoKCSogdm1zX2RhdGEuYWRzOgoJQWRkIHF1YWxpZmllciAvTk9TVERfTElCUkFSSUVTICgtbm9zdGRsaWIpIGZvciB0aGUgY29tcGlsZXIKCgkqIGJsZC5hZGIgKFJlY3Vyc2l2ZV9Qcm9jZXNzKTogSWYgTUFLRV9ST09UIGlzIG5vdCBkZWZpbmVkLCBjYWxsCgkiZ3ByY21kIHByZWZpeCIgdG8gZGVmaW5lIGl0LgoKMjAwMy0xMS0xMCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZWluZm8uYWRzOiBGaXggYSB0eXBvIGFuZCByZW1vdmUgYW4gZXh0cmFuZW91cyB3b3JkIGluIGNvbW1lbnRzLgoKCSogbGliLWxvYWQuYWRiOgoJKENyZWF0ZV9EdW1teV9QYWNrYWdlX1VuaXQpOiBTZXQgdGhlIHNjb3BlIG9mIHRoZSBlbnRpdHkgZm9yIHRoZQoJY3JlYXRlZCBkdW1teSBwYWNrYWdlIHRvIFN0YW5kYXJkX1N0YW5kYXJkLCBub3QgdG8gaXRzZWxmLCB0bwoJZGVmZW5kIG90aGVyIHBhcnRzIG9mIHRoZSBmcm9udC1lbmQgYWdhaW5zdCBlbmNvdXRlcmluZyBhIGN5Y2xlIGluCgl0aGUgc2NvcGUgY2hhaW4uCgoJKiBzZW1fY2gxMC5hZGI6CgkoQW5hbHl6ZV9XaXRoX0NsYXVzZSk6IFdoZW4gc2V0dGluZyB0aGUgZW50aXRpZXMgZm9yIHRoZSBzdWNjZXNzaXZlCglOX0V4cGFuZGVkX05hbWVzIHRoYXQgY29uc3RpdHV0ZSB0aGUgbmFtZSBvZiBhIGNoaWxkIHVuaXQsIGRvIG5vdAoJYXR0ZW1wdCB0byBnbyBmdXJ0aGVyIHRoYW4gU3RhbmRhcmRfU3RhbmRhcmQgaW4gdGhlIGNoYWluIG9mIHNjb3Blcy4KCVRoaXMgY2FzZSBhcmlzZXMgZnJvbSB0aGUgcGxhY2Vob2xkZXIgdW5pdHMgY3JlYXRlZCBieQoJQ3JlYXRlX0R1bW15X1BhY2thZ2VfVW5pdCBpbiB0aGUgY2FzZSBvZiBhIHdpdGhfY2xhdXNlIGZvciBhCglub25leGlzdGVudCBjaGlsZCB1bml0LgoKMjAwMy0xMS0xMCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNi5hZGI6CgkoRXhwYW5kX1RocmVhZF9Cb2R5KTogUGxhY2Ugc3VicHJvZ3JhbSBvbiBzY29wZSBzdGFjaywgc28gdGhhdCBuZXcKCWRlY2xhcmF0aW9ucyBhcmUgZ2l2ZW4gdGhlIHByb3BlciBzY29wZS4KCgkqIHNlbV9jaDEzLmFkYjoKCShDaGVja19FeHByX0NvbnN0YW50cyk6IFJlamVjdCBhbiBleHByZXNzaW9uIHRoYXQgY29udGFpbnMgYSBjb25zdGFudAoJY3JlYXRlZCBkdXJpbmcgZXhwYW5zaW9uLCBhbmQgdGhhdCBhcHBlYXJzIGFmdGVyIHRoZSBvYmplY3QgdG8gd2hpY2gKCXRoZSBhZGRyZXNzIGNsYXVzZSBhcHBsaWVzLgoKCSogc2VtX2NoNS5hZGIgKENoZWNrX0NvbnRyb2xsZWRfQXJyYXlfQXR0cmlidXRlKTogU3Vic2lkaWFyeSBvZgoJQW5hbHl6ZV9JdGVyYXRpb25fU2NoZW1lLCB0byByZXdyaXRlIGEgbG9vcCBwYXJhbWV0ZXIgc3BlY2lmaWNhdGlvbgoJdGhhdCB1c2VzICdSYW5nZSBvZiBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBjb250cm9sbGVkIGNvbXBvbmVudHMsIHNvCgl0aGF0IHRoZSBmdW5jdGlvbiByZXN1bHQgY2FuIGJlIGZpbmFsaXplZCBiZWZvcmUgc3RhcnRpbmcgdGhlIGxvb3AuCgoJKiBzZW1fY2g4LmFkYjoKCShGaW5kX1NlbGVjdGVkX0NvbXBvbmVudCk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHByZWZpeCBpcwoJYW4gaW1wbGljaXQgZGVyZWZlcmVuY2Ugb2YgYW4gaW5jb21wbGV0ZSB0eXBlLgoKMjAwMy0xMS0xMCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBvcHQuYWRzOiBOZXcgUHJpbnRfU3RhbmRhcmQgZmxhZyBmb3IgLWduYXRTIHN3aXRjaAoKCSogc2VtX2NoMTMuYWRiOiBSZW1vdmUgc29tZSBhZGRpdGlvbmFsIGNoZWNrcyBmb3IgdW5hbGlnbmVkIGFycmF5cwoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX1N0YW5kYXJkKTogUHJpbnQgb3V0IHBhY2thZ2Ugc3RhbmRhcmQgaWYgLWduYXRTCglzd2l0Y2ggc2V0CgoJKiBkZWJ1Zy5hZGI6IFVwZGF0ZSBkb2MgZm9yIC1nbmF0ZHMgdG8gZGlzY3VzcyByZWxhdGlvbnNoaXAgd2l0aCBuZXcKCS1nbmF0UyBmbGFnCgoJKiBzaW5mby5hZGI6IEFkZCBuZXcgZmllbGQgRW50aXR5X09yX0Fzc29jaWF0ZWRfTm9kZQoKCSogc2luZm8uYWRzOiBBZGQgbmV3IGZpZWxkIEVudGl0eV9Pcl9Bc3NvY2lhdGVkX05vZGUKCVVwZGF0ZSBkb2N1bWVudGF0aW9uIGZvciBBc3NvY2lhdGVkX05vZGUgYW5kIEVudGl0eSBmaWVsZHMgdG8gY2xhcmlmeQoJcmVsYXRpb25zaGlwIGFuZCB1c2FnZS4KCgkqIHNwcmludC5hZGI6CgkoV3JpdGVfSWQpOiBQcm9wZXJseSBwcm9jZXNzIEFzc29jaWF0ZWRfTm9kZSBmaWVsZCBpbiBnZW5lcmljIHRlbXBsYXRlCgoJKiBzd2l0Y2gtYy5hZGI6CglSZWNvZ25pemUgbmV3IC1nbmF0UyBzd2l0Y2ggZm9yIHByaW50aW5nIHBhY2thZ2UgU3RhbmRhcmQKCVRoaXMgcmVwbGFjZXMgZ25hdHBzdGEKCgkqIHVzYWdlLmFkYjoKCUFkZCBsaW5lIGZvciAgbmV3IC1nbmF0UyBzd2l0Y2ggZm9yIHByaW50aW5nIHBhY2thZ2UgU3RhbmRhcmQKCVRoaXMgcmVwbGFjZXMgZ25hdHBzdGEKCjIwMDMtMTEtMTAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIDdzb3NwcmltLmFkYjogdHZfdXNlYyBvZiBzdHJ1Y3RfdGltZXZhbCBhbmQgdGltZV90IGFyZSBsb25nCglpbnRlZ2VyLgoKMjAwMy0xMS0xMCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBtaXNjLmMsIGxhbmcub3B0OiBBZGQgaGFuZGxpbmcgb2YgLW5vc3RkbGliLCBub3cgcmVjb2duaXplZC9uZWVkZWQKCWJ5IGduYXQxLgoKMjAwMy0xMS0xMCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbiwgTWFrZS1sYW5nLmluOiBSZW1vdmUgYnVpbGQgb2YgZ25hdF93cmFwcGVyIGFuZCBnbmF0cHN0YSwKCW5vIGxvbmdlciBuZWVkZWQuCgoJKiBnbmF0cHN0YS5hZGIsIGduYXRfd3JhcHBlci5hZGI6IFJlbW92ZWQsIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBzeXNkZXAuYzogQWRkIGhhbmRsaW5nIG9mIGN5Z3dpbi4KCjIwMDMtMTEtMTAgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDMtMTEtMTAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCVBSIDEyOTUwCgkqIG9zaW50LmFkcywgb3NpbnQuYWRiIChSZWxvY2F0ZV9QYXRoLCBFeGVjdXRhYmxlX1N1ZmZpeCk6IE5ldwoJZnVuY3Rpb25zLiBVc2VkIHRvIGhhbmRsZSBkeW5hbWljIHByZWZpeCByZWxvY2F0aW9uLCB2aWEgc2V0X3N0ZF9wcmVmaXguCglSZXBsYWNlIEdOQVRfUk9PVCBieSBHQ0NfUk9PVC4KCgkqIE1ha2UtbGFuZy5pbjogVXNlIG5ldyBmdW5jdGlvbiBSZWxvY2F0ZV9QYXRoIHRvIGdlbmVyYXRlIHNkZWZhdWx0LmFkYgoKMjAwMy0xMS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pc2MuYyAoZnBfcHJlY190b19zaXplLCBmcF9zaXplX3RvX3ByZWMpOiBVc2UgR0VUX01PREVfUFJFQ0lTSU9OCglhbmQgdXBkYXRlIGZvciBjaGFuZ2VkIG1lYW5pbmcgb2YgR0VUX01PREVfQklUU0laRS4KCjIwMDMtMTEtMDQgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBzeXNkZXAuYzogUHJvYmxlbSBkaXNjb3ZlcmVkIGR1cmluZyBJQTY0IFZNUyBwb3J0LgoJW1ZNU10gI2luY2x1ZGUgPHVuaXhpby5oPiB0byBnZXQgcHJvcGVyIHByb3RvdHlwZXMuCgoJKiBhZGFpbnQuYzoKCUlzc3VlcyBkaXNjb3ZlcmVkL3Byb2JsZW1zIGZpeGVkIGR1cmluZyBJQTY0IFZNUyBwb3J0LgoJW1ZNU10gI2RlZmluZSBfUE9TSVhfRVhJVCBmb3IgcHJvcGVyIHNlbWFudGljcy4KCVtWTVNdICNpbmNsdWRlIDx1bml4aW8uaD4gZm9yIHByb3BlciBwcm90b3R5cGVzLgoJW1ZNU10gKGZvcmspOiAjZGVmaW5lIElBNjQgdmVyc2lvbi4KCShfX2duYXRfb3NfZXhpdCk6IFJlbW92ZSB1bm5lY2Vzc2FyeSBWTVMgc3BlY2lmaWMgY29kZS4KCjIwMDMtMTEtMDQgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJUGFydCBvZiBQUiBhZGEvMTI4MDYKCSogYWRhLXRyZWUuaCAoVFlQRV9ESUdJVFNfVkFMVUUsIFNFVF9UWVBFX0RJR0lUU19WQUxVRSk6IFNhdmUgY291bnQgYXMKCXRyZWUsIG5vdCBpbnRlZ2VyLgoKCSogZGVjbC5jOgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0Zsb2F0aW5nX1BvaW50X1R5cGUpOiBTYXZlIGNvdW50IGFzIHRyZWUsCglub3QgaW50ZWdlci4KCgkqIHRhcmd0eXBzLmMsIGRlY2wuYywgbWlzYy5jLAoJZ2lnaS5oIChmcF9wcmVjX3RvX3NpemUsIGZwX3NpemVfdG9fcHJlYyk6IFRlbXBvcmFyeQoJcm91dGluZXMgdG8gd29yayBhcm91bmQgY2hhbmdlIGluIEZQIHNpemluZyBzZW1hbnRpY3MgaW4gR0NDLgoKCSogdXRpbHMuYzoKCShidWlsZF92bXNfZGVzY3JpcHRvcik6IFRZUEVfRElHSVRTX1ZBTFVFIGlzIHRyZWUsIG5vdCBpbnRlZ2VyLgoKCSogZ2lnaS5oOiAoZW51bWVyYXRlX21vZGVzKTogTmV3IGZ1bmN0aW9uLgoKCSogTWFrZS1sYW5nLmluOiAoYWRhL21pc2Mubyk6IEFkZCByZWFsLmguCgoJKiBtaXNjLmM6IChlbnVtZXJhdGVfbW9kZXMpOiBOZXcgZnVuY3Rpb24uCgoyMDAzLTExLTA0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIDN2dHJhc3ltLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglVc2UgdGVybWlub2xvZ3kgZW5jb2RlZC9kZWNvZGVkIG5hbWUsIHJhdGhlciB0aGFuIEMrKyBzcGVjaWZpYyBub3Rpb24KCW9mIG1hbmdsaW5nICh0aGlzIGlzIHRoZSB0ZXJtaW5vbG9neSB1c2VkIHRocm91Z2hvdXQgR05BVCkuCgoJKiBlaW5mby5oOiBSZWdlbmVyYXRlZAoKCSogZWluZm8uYWRzLCBlaW5mby5hZGI6IEFkZCBuZXcgZmxhZyBJc19UaHJlYWRfQm9keQoKCSogZXhwX2NoNi5hZGI6CgkoRXhwYW5kX05fU3VicHJvZ3JhbV9Cb2R5KTogSGFuZGxlIGV4cGFuc2lvbiBvZiB0aHJlYWQgYm9keSBwcm9jZWR1cmUKCgkqIHBhci1wcmFnLmFkYjogQWRkIGR1bW15IGVudHJ5IGZvciBUaHJlYWRfQm9keSBwcmFnbWEKCgkqIHJ0c2ZpbmQuYWRzOgoJQWRkIGVudHJpZXMgZm9yIFN5c3RlbS5UaHJlYWRzIGVudGl0aWVzIGZvciB0aHJlYWQgYm9keSBwcm9jZXNzaW5nCgoJKiBzZW1fYXR0ci5hZGI6CgkoQW5hbHl6ZV9QcmFnbWEsIEFjY2VzcyBhdHRyaWJ1dGVzKTogQ2hlY2sgdGhlc2UgYXJlIG5vdCBhcHBsaWVkIHRvIGEKCXRocmVhZCBib2R5LCBzaW5jZSB0aGlzIGlzIG5vdCBwZXJtaXR0ZWQKCgkqIHNlbV9wcmFnLmFkYjogQWRkIHByb2Nlc3NpbmcgZm9yIFRocmVhZF9Cb2R5IHByYWdtYS4KCU1pbm9yIGNvbW1lbnQgZml4LgoKCSogc2VtX3Jlcy5hZGI6CgkoUmVzb2x2ZV9DYWxsKTogQ2hlY2sgZm9yIGluY29ycmVjdCBhdHRlbXB0IHRvIGNhbGwgYSB0aHJlYWQgYm9keQoJIHByb2NlZHVyZSB3aXRoIGEgZGlyZWN0IGNhbGwuCgoJKiBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgZW50cnkgZm9yIFRocmVhZF9Cb2R5IHByYWdtYQoJQWRkIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aHJlYWQgYm9keSBleHBhbnNpb24KCgkqIHNuYW1lcy5oOiBBZGQgZW50cnkgZm9yIFRocmVhZF9Cb2R5IHByYWdtYQoKCSogcy10aHJlYWQuYWRiOiBBZGQgZW50cmllcyBmb3IgdGhyZWFkIGJvZHkgcHJvY2Vzc2luZwoJVGhlc2UgYXJlIGR1bW15IGJvZGllcyBzbyBmYXIKCgkqIHMtdGhyZWFkLmFkczogQWRkIGRvY3VtZW50YXRpb24gb24gdGhyZWFkIGJvZHkgaGFuZGxpbmcuCglBZGQgZW50cmllcyBmb3IgdGhyZWFkIGJvZHkgcHJvY2Vzc2luZy4KCjIwMDMtMTEtMDQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHNlbV9jaDEwLmFkYjoKCShCdWlsZF9MaW1pdGVkX1ZpZXdzKTogUmV0dXJuIGFmdGVyIHBvc3RpbmcgYW4gZXJyb3IgaW4gY2FzZSBvZiBsaW1pdGVkCgl3aXRoX2NsYXVzZSBvbiBzdWJwcm9ncmFtcywgZ2VuZXJpY3MsIGluc3RhbmNlcyBvciBnZW5lcmljIHJlbmFtaW5ncwoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IERvIG5vdGhpbmcgaW4gY2FzZSBvZiBsaW1pdGVkIHdpdGhfY2xhdXNlCglvbiBzdWJwcm9ncmFtcywgZ2VuZXJpY3MsIGluc3RhbmNlcyBvciBnZW5lcmljIHJlbmFtaW5ncwoKMjAwMy0xMS0wNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiByYWlzZS5jIChzZXR1cF90b19pbnN0YWxsKTogQ29ycmVjdCBtaXN0YWtlIGluIGxhc3QgcmV2aXNpb247IHR3bwoJYXJndW1lbnRzIG91dCBvZiBvcmRlci4KCgkqIHRyYW5zLmMsIGN1aW50cC5jLCBhcmd2LmMsIGF1eC1pby5jLCBjYWwuYywgZXJybm8uYywgZXhpdC5jLAoJZ25hdGJsLmMsIGluaXQuYywgc3RyaW5ndC5oLCB1dGlscy5jLCB1dGlsczIuYzogVXBkYXRlIGNvcHlyaWdodAoJbm90aWNlLCBtaXNzZWQgaW4gcHJldmlvdXMgY2hhbmdlLgoJUmVtb3ZlIHRyYWlsaW5nIGJsYW5rcyBhbmQgb3RoZXIgc3R5bGUgZXJyb3JzIGludHJvZHVjZWQgaW4gcHJldmlvdXMKCWNoYW5nZS4KCjIwMDMtMTEtMDQgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZmllbGQpOiBBZGp1c3QgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggd2UgZ2V0CglyaWQgb2YgdGhlIHdyYXBwZXIgZm9yIGEgTEpNIHR5cGUsIGVuc3VyaW5nIHdlIGRvbid0IGRvIHRoYXQgaWYgdGhlCglmaWVsZCBpcyBhZGRyZXNzYWJsZS4gIFRoaXMgYXZvaWRzIHBvdGVudGlhbCBsb3cgbGV2ZWwgdHlwZSB2aWV3CgltaXNtYXRjaGVzIGxhdGVyIG9uLCBmb3IgaW5zdGFuY2UgaW4gYSBieS1yZWZlcmVuY2UgYXJndW1lbnQgcGFzc2luZwoJcHJvY2Vzcy4KCjIwMDMtMTEtMDQgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2ZpZWxkKTogTm8gbG9uZ2VyIGNoZWNrIGZvciBCTEttb2RlIGJlaW5nCglhbGlnbmVkIGF0IGJ5dGUgYm91bmRhcnkuCgoyMDAzLTExLTA0ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGRlY2wuYyAoY29tcG9uZW50c190b19yZWNvcmQpOiBEbyBub3QgZGVsZXRlIHRoZSBlbXB0eSB2YXJpYW50cyBmcm9tCgl0aGUgZW5kIG9mIHRoZSB1bmlvbiB0eXBlLgoKMjAwMy0xMS0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX09wX0VxKTogVXNlIGJhc2UgdHlwZSB3aGVuIGxvY2F0aW5nIHByaW1pdGl2ZQoJb3BlcmF0aW9uIGZvciBhIGRlcml2ZWQgdHlwZSwgYW4gZXhwbGljaXQgZGVjbGFyYXRpb24gbWF5IHVzZSBhIGxvY2FsCglzdWJ0eXBlIG9mIEJvb2xlYW4uCgoyMDAzLTExLTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IEFsbG93IG1haW4gc291cmNlcyBvbiB0aGUgY29tbWFuZCBsaW5lIHdpdGggYQoJbGlicmFyeSBwcm9qZWN0IHdoZW4gaXQgaXMgb25seSBmb3IgY29tcGlsYXRpb24gKG5vIGJpbmRpbmcgb3IKCWxpbmtpbmcpLgoKMjAwMy0xMS0wNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIG1hbnkgZHVwbGljYXRlIHZhcmlhYmxlcy4KCjIwMDMtMTEtMDMgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKGR2aSk6IE1vdmUgdGFyZ2V0cyB0byAkKGRvY29iamRpcikuCgkoZ25hdF91Z192bXMuZHZpKTogU2ltcGxpZnkgcnVsZSBhbmQgYWRqdXN0IHRhcmdldC4KCShnbmF0X3VnX3dudC5kdmkpOiBMaWtld2lzZS4KCShnbmF0X3VnX3VueC5kdmkpOiBMaWtld2lzZS4KCShnbmF0X3VnX3Z4dy5kdmkpOiBMaWtld2lzZS4KCShnbmF0X3JtLmR2aSk6IExpa2V3aXNlLgoJKGduYXQtc3R5bGUuZHZpKTogTGlrZXdpc2UuCgoyMDAzLTEwLTMxICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogZ2lnaS5oOiBNaXNzZWQgY29tbWl0IGZyb20gdXBkYXRlIGZvciBDOTAuCgoyMDAzLTEwLTMxICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGFkYS9iX2duYXQxLm8pOiBDb21waWxlIHdpdGggLVduby1lcnJvci4KCjIwMDMtMTAtMzEgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiByYWlzZS5jIChnZXRfYWN0aW9uX2Rlc2NyaXB0aW9uX2Zvcik6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKMjAwMy0xMC0zMSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJUFIgYWRhLzEyNzYxCgkqIGFkYS9NYWtlLWxhbmcuaW46IE1vdmUgZGVmYXVsdCBkZWZpbml0aW9ucyBvZiBYX0FEQV9DRkxBR1MsCglUX0FEQV9DRkxBR1MsIFhfQURBRkxBR1MsIFRfQURBRkxBR1MgZnJvbSBoZXJlIHRvIG1hc3RlciBNYWtlZmlsZS5pbi4KCjIwMDMtMTAtMzAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBhZGFkZWNvZGUuYywgYWRhaW50LmMsIGFyZ3YuYywgYXV4LWlvLmMsIGNhbC5jLCBjaW8uYywgY3N0cmVhbXMuYywKCWN0cmxfYy5jLCBjdWludHAuYywgZGVjbC5jLCBlcnJuby5jLCBleGl0LmMsIGV4cGVjdC5jLCBmaW5hbC5jLAoJZ2lnaS5oLCBnbWVtLmMsIGduYXRibC5jLCBpbml0LmMsIG1pc2MuYywgbWtkaXIuYywgcmFpc2UuYywgc29ja2V0LmMsCglzeXNkZXAuYywgc3lzZGVwLmMsIHRhcmd0eXBzLmMsIHRiLWFsdm1zLmMsIHRiLWFsdnh3LmMsIHRyYWNlYmFrLmMsCgl0cmFucy5jLCB1dGlscy5jLCB1dGlsczIuYzogQ29udmVydCBmdW5jdGlvbiBwcm90b3R5cGVzIHRvIEM5MC4KCjIwMDMtMTAtMzAgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWN0LWV1cm9wZS5mcj4KCgkqIDN2dHJhc3ltLmFkYjoKCURlbWFuZ2xlIEFkYSBzeW1ib2xzIHJldHVybmVkIGJ5IFRCSyRTWU1CT0xJWkUuIENvcnJlY3RseSBhbGlnbiBsaW5lCgludW1iZXJzIHdoZW4gc3ltYm9sIG5hbWUgaXMgdG9vIGxvbmcuCgoyMDAzLTEwLTMwICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogZy1zaWduYWwuYWRzLCBnLXNpZ25hbC5hZGI6IE5ldyBmaWxlcwoKCSogaW1wdW5pdC5hZGI6IChOb25fSW1wX0ZpbGVfTmFtZXMpOiBBZGRlZCAiZy1zaWduYWwiCgoJKiBNYWtlZmlsZS5ydGw6IEludHJvZHVjZSBHTkFULlNpZ25hbHMKCjIwMDMtMTAtMzAgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZnJlZXplLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBsaWItd3JpdC5hZGIgKFdyaXRlX0FMSSk6IE5ldmVyIHdyaXRlIGFsaSBmaWxlIGlmIC1nbmF0cyBpcyBzcGVjaWZpZWQKCgkqIHBhci5hZGIsIHBhci1jaDEyLmFkYiwgcGFyLWNoMTMuYWRiLCBwYXItY2gyLmFkYiwgcGFyLWNoMy5hZGIsCglwYXItY2g1LmFkYiwgcGFyLWNoNi5hZGIsIHBhci1jaDkuYWRiLCBwYXItdXRpbC5hZGI6CglOZXcgaGFuZGxpbmcgb2YgSWRfQ2hlY2sgcGFyYW1ldGVyIHRvIGltcHJvdmUgcmVjb2duaXRpb24gb2Yga2V5d29yZHMKCXVzZWQgYXMgaWRlbnRpZmllcnMuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZSB0byBpbmNsdWRlIDIwMDMKCjIwMDMtMTAtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogM3Z0cmFzeW0uYWRiLCA1dnRyYWVudC5hZHMsIHNwcmludC5hZGIsCglzZW1fY2gxMC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9Bc3NpZ25fQXJyYXkpOiBUZXN0IGZvciBiaXQgdW5hbGlnbmVkIG9wZXJhbmRzCgkoRXhwYW5kX0Fzc2lnbl9SZWNvcmQpOiBUZXN0IHJpZ2h0IGhhbmQgc2lkZSBmb3IgYml0IHVuYWxpZ25lZCBhcyB3ZWxsCgoyMDAzLTEwLTI5ICBWYXNpbGl5IEZvZmFub3YgIDxmb2Zhbm92QGFjdC1ldXJvcGUuZnI+CgoJKiAzdnRyYXN5bS5hZGIsIDV2dHJhZW50LmFkYiwgNXZ0cmFlbnQuYWRzLCB0Yi1hbHZtcy5jOgoJU3VwcG9ydCBmb3IgVEJLJFNZTUJPTElaRS1iYXNlZCBzeW1ib2xpYyB0cmFjZWJhY2suCgoyMDAzLTEwLTI5ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBleHBfZGlzcC5hZGI6CglSZXZlcnQgcHJldmlvdXMgY2hhbmdlLCB0aGF0IGRpZCBub3Qgd29yayB3ZWxsIHdoZW4gcHJhZ21hIE5vX1J1bl9UaW1lCgl3YXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGEgcnVuLXRpbWUgb3RoZXIgdGhhbiBaRlAuCgoyMDAzLTEwLTI5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiOgoJKEduYXRtYWtlKTogV2hlbiB0aGVyZSBhcmUgbm8gQWRhIG1haW5zIGluIGF0dHJpYnV0ZSBNYWluLCBkaXNhYmxlIHRoZQoJIGJpbmQgYW5kIGxpbmsgc3RlcHMgb25seSBpcyBzd2l0Y2ggLXogaXMgbm90IHVzZWQuCgoyMDAzLTEwLTI5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmdlbmVyaWM6IFJlbW92ZSBkdXBsaWNhdGVkIHNldHRpbmcgb2YgQ0MuCgoJKiBNYWtlZmlsZS5wcm9sb2c6IFNldCBDQyB0byBnY2MgYnkgZGVmYXVsdCwgdG8gb3ZlcnJpZGUgbWFrZSdzCglkZWZhdWx0IChjYykuCgoJKiBlaW5mby5oOiBSZWdlbmVyYXRlZC4KCjIwMDMtMTAtMjkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoQW5hbHl6ZV9TdWJ1bml0KTogUmVzdG9yZSBzdGF0ZSBvZiBzdXBwcmVzcyBmbGFncyBmb3IKCWN1cnJlbnQgYm9keSwgYWZ0ZXIgY29tcGlsaW5nIHN1YnVuaXQuCgoJKiBpdHlwZXMuYWRiIChDcmVhdGVfSXR5cGUpOiBJbiBBU0lTX01vZGUsIGRvIG5vdCBmcmVlemUgdGhlIGl0eXBlCgl3aGVuIGluIGRlbGV0ZWQgY29kZSwgYmVjYXVzZSBnaWdpIG5lZWRzIHByb3Blcmx5IG9yZGVyZWQgZnJlZXplCglhY3Rpb25zIHRvIGFubm90YXRlIHR5cGVzLgoKCSogZnJlZXplLmFkYiAoSXNfRnVsbHlfRGVmaW5lZCk6IFByZWRpY2F0ZSBtdXN0IGJlIHJlY3Vyc2l2ZSwgdG8KCXByZXZlbnQgdGhlIHByZW1hdHVyZSBmcmVlemluZyBvZiByZWNvcmQgdHlwZSB0aGF0IGNvbnRhaW5zCglzdWJjb21wb25lbnRzIHdpdGggYSBwcml2YXRlIHR5cGUgdGhhdCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIGNvbXBsZXRpb24uCgoyMDAzLTEwLTI5ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGI6CgkoQW5hbHl6ZV9QYWNrYWdlX0luc3RhbnRpYXRpb24pOiBDaGVjayB0aGF0IGluc3RhbmNlcyBjYW4gbm90IGJlIHVzZWQgaW4KCWxpbWl0ZWQgd2l0aF9jbGF1c2VzLgoKCSogc2VtX2NoOC5hZGI6CgkoQW5hbHl6ZV9QYWNrYWdlX1JlbmFtaW5nKTogQ2hlY2sgdGhhdCBsaW1pdGVkIHdpdGhlZCBwYWNrYWdlcyBjYW5ub3QKCWJlIHJlbmFtZWQuIEltcHJvdmUgdGV4dCBvbiBlcnJvciBtZXNzYWdlcyByZWxhdGVkIHRvIGxpbWl0ZWQKCXdpdGhfY2xhdXNlcy4KCgkqIGVpbmZvLmFkYiwgZWluZm8uYWRzOiBSZW1vdmUgTm9uX0xpbWl0ZWRfVmlld3MgYXR0cmlidXRlLgoKCSogc3ByaW50LmFkYjogKFNwcmludF9Ob2RlX0FjdHVhbCk6IFByaW50IGxpbWl0ZWQgd2l0aF9jbGF1c2VzLgoJVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoJKiBzZW1fY2gxMC5hZGI6IChCdWlsZF9MaW1pdGVkX1ZpZXdzKTogQ29tcGxldGUgaXRzIGRvY3VtZW50YXRpb24uCgkoSW5zdGFsbF9MaW1pdGVkX0NvbnRleHRfQ2xhdXNlcyk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgaXNvbGF0ZXMgYWxsIHRoZQoJY2hlY2tzIHJlcXVpcmVkIGZvciBsaW1pdGVkIGNvbnRleHRfY2xhdXNlcyBhbmQgaW5zdGFsbHMgdGhlIGxpbWl0ZWQKCXZpZXcuCgkoSW5zdGFsbF9MaW1pdGVkX1dpdGhlZF9Vbml0KTogQ29tcGxldGUgaXRzIGRvY3VtZW50YXRpb24uCgkoQW5hbHl6ZV9Db250ZXh0KTogQ2hlY2sgdGhhdCBsaW1pdGVkIHdpdGhfY2xhdXNlcyBhcmUgb25seSBhbGxvd2VkIGluCglwYWNrYWdlIHNwZWNzLgoJKEluc3RhbGxfQ29udGV4dCk6IENhbGwgSW5zdGFsbF9MaW1pdGVkX0NvbnRleHRfQ2xhdXNlcyBhZnRlciB0aGUKCXBhcmVudHMgaGF2ZSBiZWVuIGluc3RhbGxlZC4KCShJbnN0YWxsX0xpbWl0ZWRfV2l0aGVkX1VuaXQpOiBBZGQgZG9jdW1lbnRhdGlvbi4gTWFyayB0aGUgaW5zdGFsbGVkCglwYWNrYWdlIGFzICdGcm9tX1dpdGhfVHlwZSc7IHRoaXMgbWFyayBpbmRpY2F0ZXMgdGhhdCB0aGUgbGltaXRlZCB2aWV3CglpcyBpbnN0YWxsZWQuIFVzZWQgdG8gY2hlY2sgYmFkIHVzYWdlcyBvZiBsaW1pdGVkIHdpdGhfY2xhdXNlcy4KCShCdWlsZF9MaW1pdGVkX1ZpZXdzKTogRG8gbm90IGFkZCBzaGFkb3cgZW50aXRpZXMgdG8gdGhlIHNjb3BlJ3MgbGlzdAoJb2YgZW50aXRpZXMuIERvIG5vdCBhZGQgcmVhbCBlbnRpdGllcyB0byB0aGUgTm9uX0xpbWl0ZWRfVmlld3MgY2hhaW4uCglJbXByb3ZlIGVycm9yIG5vdGlmaWNhdGlvbi4KCShSZW1vdmVfQ29udGV4dF9DbGF1c2VzKTogUmVtb3ZlIGNvbnRleHQgY2xhdXNlcyBpbiB0d28gcGhhc2VzOgoJbGltaXRlZCB2aWV3cyBmaXJzdCBhbmQgcmVndWxhciB2aWV3cyBsYXRlciAodG8gbWFpbnRhaW4gdGhlCglzdGFjayBtb2RlbCkuCgkoUmVtb3ZlX0xpbWl0ZWRfV2l0aF9DbGF1c2UpOiBJZiB0aGUgcGFja2FnZSBpcyBhbmFseXplZCB0aGVuIHJlaW5zdGFsbAoJaXRzIHZpc2libGUgZW50aXRpZXMuCgoyMDAzLTEwLTI5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fdHlwZS5hZGIgKFNwZWNpZmljX1R5cGUpOiBUeXBlIFVuaXZlcnNhbF9GaXhlZCBpcyBjb21wYXRpYmxlCgl3aXRoIGFueSB0eXBlIHRoYXQgSXNfRml4ZWRfUG9pbnRfVHlwZS4KCgkqIHNpbmZvLmFkczogRml4IGRvY3VtZW50YXRpb24gZm9yIEFzc29jaWF0ZWRfTm9kZSBhdHRyaWJ1dGUuCgoyMDAzLTEwLTI5ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogc3dpdGNoLWMuYWRiIChTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IEFTSVNfTW9kZSBpcyBzZXQgbm93IHdoZW4KCWJvdGggJy1nbmF0YycgYW5kICctZ25hdHQnIGFyZSBzcGVjaWZpZWQuCgoJKiBhdHJlZS5hZGIgKEluaXRpYWxpemUpOiBBZGQgaW5pdGlhbGl6YXRpb24gZm9yIE5vZGVfQ291bnQgKHNldCB0bwoJemVybykuCgoyMDAzLTEwLTI5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9TdWJwcm9ncmFtKTogSWYgbm8gcmV0dXJuIHZhbHVlLAoJZG8gbm90IGNvbnNpZGVyIGFzIFB1cmUuCgoJUGFydCBvZiBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbi1hdC1hLXRpbWU6CgoJKiB0cmFucy5jIChnbmF0X3RvX2dudV9jb2RlKTogSWYgSVNfU1RNVCwgY2FsbCBleHBhbmRfZXhwcl9zdG10LgoJKHRyZWVfdHJhbnNmb3JtKTogQWRkIG5ldyBhcmd1bWVudCB0byBidWlsZF9jb21wb25lbnRfcmVmLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBNYWtlIGFuZCByZXR1cm4gYW4KCUVYUFJfU1RNVC4KCSh0cmVlX3RyYW5zZm9ybSk6IElmIHJlc3VsdCBJU19TVE1ULCBzZXQgZmxhZ3MgYW5kIHJldHVybiBpdC4KCShnbmF0X2V4cGFuZF9zdG10LCBzZXRfbGluZW5vX2Zyb21fc2xvYyk6IE5ldyBmdW5jdGlvbnMuCgoJKiB1dGlsczIuYyAoYnVpbGRfc2ltcGxlX2NvbXBvbmVudF9yZWYsIGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBBZGQgbmV3CglhcmcsIE5PX0ZPTERfUC4KCShidWlsZF9iaW5hcnlfb3AsIGNhc2UgRVFfRVhQUik6IFBhc3MgYWRkaXRpb25hbCBhcmcgdG8gaXQuCgkoYnVpbGRfYWxsb2NhdG9yKTogTGlrZXdpc2UuCgoJKiB1dGlscy5jIChjb252ZXJ0X3RvX2ZhdF9wb2ludGVyLCBjb252ZXJ0X3RvX3RoaW5fcG9pbnRlciwgY29udmVydCk6CglBZGQgbmV3IGFyZyB0byBidWlsZF9jb21wb25lbnRfcmVmLgoJKG1heWJlX3VuY29uc3RyYWluZWRfYXJyYXksIHVuY2hlY2tlZF9jb252ZXJ0KTogTGlrZXdpc2UuCgoJKiBhZGEtdHJlZS5kZWYgKEVYUFJfU1RNVCk6IE5ldyBjb2RlLgoKCSogYWRhLXRyZWUuaCAoSVNfU1RNVCwgVFJFRV9TTE9DLCBFWFBSX1NUTVRfRVhQUik6IE5ldyBtYWNyb3MuCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBvYmplY3QpOiBBZGQgZXh0cmEgYXJnIHRvCglidWlsZF9jb21wb25lbnRfcmVmIGNhbGxzLgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9leHByKTogSWYgSVNfU1RNVCwgY2FsbCBnbmF0X2V4cGFuZF9zdG10LgoKCSogZ2lnaS5oIChnbmF0X2V4cGFuZF9zdG10LCBzZXRfbGluZW5vX2Zyb21fc2xvYyk6IE5ldyBmdW5jdGlvbnMuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IEFkZCBuZXcgYXJndW1lbnQsIE5PX0ZPTERfUC4KCjIwMDMtMTAtMjcgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuZ2VuZXJpYzogQWRkIG1pc3Npbmcgc3Vic3RpdHV0aW9uIG9uIG9iamVjdF9kZXBzIGhhbmRsaW5nLgoKCVBSIGFkYS81OTA5CgkqIE1ha2UtbGFuZy5pbiAoY2hlY2stYWRhKTogRW5hYmxlIEFDQVRTIHRlc3Qgc3VpdGUuCgoyMDAzLTEwLTI3ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF9jaDMuYWRiOgoJKEZyZWV6ZV9BcnJheV9UeXBlKTogV2UgZG8gbm90IG5lZWQgYW4gaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgdHlwZXMKCWRlcml2ZWQgZnJvbSBTdHJpbmcgb3IgV2lkZV9TdHJpbmcuIFRoZXkgc2hvdWxkIGJlIHRyZWF0ZWQgdGhlIHNhbWUKCWFzIFN0cmluZyBhbmQgV2lkZV9TdHJpbmcgdGhlbXNlbHZlcy4gVGhpcyBjYXVzZWQgcHJvYmxlbXMgd2l0aCB0aGUKCXVzZSBvZiBJbml0aWFsaXplX1NjYWxhcnMuCgoJKiBleHBfY2g1LmFkYjoKCShFeHBhbmRfQXNzaWduX1JlY29yZCk6IERvIGNvbXBvbmVudC13aXNlIGFzc2lnbm1lbnQgb2Ygbm9uLWJ5dGUgYWxpZ25lZAoJY29tcG9zaXRlcy4gVGhpcyBhbGxvd3MgdXNlIG9mIGNvbXBvbmVudCBjbGF1c2VzIHRoYXQgYXJlIG5vdCBieXRlCglhbGlnbmVkLgoKCSogc2VtX3ByYWcuYWRiOgoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIFBhY2spOiBHZW5lcmF0ZSB3YXJuaW5nIGFuZCBpZ25vcmUgcGFjayBpZiB0aGVyZQoJaXMgYW4gYXR0ZW1wdCB0byBwYWNrIGFuIGFycmF5IG9mIGF0b21pYyBvYmplY3RzLgoKCSogbWFrZS5hZGIsIHByai1lbnYuYWRiLCBwcmotZW52LmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAzLTEwLTI3ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBnLWRpcm9wZS5hZGI6CgkoQmFzZW5hbWUpOiBDaGVjayBmb3IgZHJpdmUgbGV0dGVycyBpbiBhIHBhdGhuYW1lIG9ubHkgb24gRE9TIGJhc2VkIE9TLgoKMjAwMy0xMC0yNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYjoKCShHbmF0bWFrZSk6IFdoZW4gdW5hYmxlIHRvIGNoYW5nZSBkaXIgdG8gdGhlIG9iamVjdCBkaXIsIGRpc3BsYXkgdGhlCgljb250ZW50IG9mIHRoZSBwYXJlbnQgZGlyIG9mIHRoZSBvYmogZGlyLCB0byB0cnkgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcwoJaGFwcGVucy4KCjIwMDMtMTAtMjcgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDMtMTAtMjcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjoKCShJbmxpbmVfSW5zdGFuY2VfQm9keSk6IEluZGljYXRlIHRoYXQgdGhlIHNhdmUvcmVzdG9yZSBvZiB1c2VfY2xhdXNlcwoJc2hvdWxkIG5vdCBiZSBkb25lIGluIFNhdmUvUmVzdG9yZV9TY29wZV9TdGFjaywgYmVjYXVzZSBpdCBpcyBwZXJmb3JtZWQKCWxvY2FsbHkuCgoJKiBzZW1fY2g4LmFkYjoKCShTYXZlX1Njb3BlX1N0YWNrLCBSZXN0b3JlX1Njb3BlX1N0YWNrKTogQWRkIHBhcmFtZXRlciB0byBpbmRpY2F0ZQoJd2hldGhlciB1c2UgY2xhdXNlcyBzaG91bGQgYmUgcmVtb3ZlZC9yZXN0b3JlZC4KCgkqIHNlbV9jaDguYWRzOgoJKFNhdmVfU2NvcGVfU3RhY2ssIFJlc3RvcmVfU2NvcGVfU3RhY2spOiBBZGQgcGFyYW1ldGVyIHRvIGluZGljYXRlCgl3aGV0aGVyIHVzZSBjbGF1c2VzIHNob3VsZCBiZSByZW1vdmVkL3Jlc3RvcmVkLgoKMjAwMy0xMC0yNiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBkdXBsaWNhdGVkIGxpbmVzLgoKMjAwMy0xMC0yNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0dnNuLmFkcyAoR25hdF9TdGF0aWNfVmVyc2lvbl9TdHJpbmcpOiBOZXcgY29uc3RhbnQsIHVzZWQgdG8KCW1pbmltaXplIHRoZSBkaWZmZXJlbmNlcyB3aXRoIEFDVCB0cmVlLgoKCSogZ25hdGtyLmFkYiwgZ25hdGxpbmsuYWRiLCBnbmF0bHMuYWRiLCBnbmF0bWFrZS5hZGIsCglnbmF0cHJlcC5hZGIsIGduYXRwc3RhLmFkYiwgZ25hdHZzbi5hZHM6IFRha2UgYWR2YW50YWdlIG9mCglHbmF0dnNuLkduYXRfU3RhdGljX1ZlcnNpb25fU3RyaW5nIHRvIHJlZHVjZSBkaWZmZXJlbmNlcyBiZXR3ZWVuCglBQ1QgYW5kIEZTRiB0cmVlcy4KCjIwMDMtMTAtMjQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCglQUiBhZGEvMTIwMTQKCSogYWRhZGVjb2RlLmMgKG9zdHJjcHkpOiBOZXcgZnVuY3Rpb24uCgkoX19nbmF0X2RlY29kZSk6IFVzZSBvc3RyY3B5IG9mIHN0cmNweS4KCShoYXNfcHJlZml4KTogU2V0IGZpcnN0IHBhcmFtZXRlciBhIGNvbnN0LgoJKGhhc19zdWZmaXgpOiBTZXQgZmlyc3QgcGFyYW1ldGVyIGEgY29uc3QuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4gRml4IHNvdXJjZSBuYW1lIGluIGhlYWRlci4KCVJlbW92ZXMgYSB0cmFpbGluZyBzcGFjZS4KCjIwMDMtMTAtMjQgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9kaXNwLmFkYjoKCVJlbW92ZSB0aGUgdGVzdCBhZ2FpbnN0IGJlaW5nIGluIE5vX1J1bl9UaW1lX01vZGUgYmVmb3JlIGdlbmVyYXRpbmcgYQoJY2FsbCB0byBSZWdpc3Rlcl9UYWcuIEl0IGlzIHJlZHVuZGFudCB3aXRoIHRoZSB0ZXN0IGFnYWluc3QgdGhlCglhdmFpbGFiaWxpdHkgb2YgdGhlIGZ1bmN0aW9uIFJlZ2lzdGVyX1RhZy4KCjIwMDMtMTAtMjQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZy1jYXRpaW8uYWRiOiAoTW9udGhfTmFtZSk6IENvcnJlY3Qgc3BlbGxpbmcgb2YgRmVicnVhcnkKCgkqIG1ha2UuYWRiOiAoTWFpbnMpOiBOZXcgcGFja2FnZQoJKEluaXRpYWxpemUpOiBDYWxsIE1haW5zLkRlbGV0ZQoJKEduYXRtYWtlKTogQ2hlY2sgdGhhdCBlYWNoIG1haW4gb24gdGhlIGNvbW1hbmQgbGluZSBpcyBhIHNvdXJjZSBvZiBhCglwcm9qZWN0IGZpbGUgYW5kLCBpZiB0aGVyZSBhcmUgc2V2ZXJhbCBtYWlucywgZWFjaCBvZiB0aGVtIGlzIGEgc291cmNlCglvZiB0aGUgc2FtZSBwcm9qZWN0IGZpbGUuCgkoR25hdG1ha2UpOiBXaGVuIGEgZm9yZWlnbiBsYW5ndWFnZSBpcyBzcGVjaWZpZWQgaW4gYXR0cmlidXRlIExhbmd1YWdlcywKCW5vIG1haW4gaXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgYW5kIGF0dHJpYnV0ZSBNYWlucyBpcyBub3QKCWVtcHR5LCBvbmx5IGJ1aWxkIHRoZSBBZGEgbWFpbi4gSWYgdGhlcmUgaXMgbm8gQWRhIG1haW4sIGp1c3QgY29tcGlsZQoJdGhlIEFkYSBzb3VyY2VzIGFuZCB0aGVpciBjbG9zdXJlLgoJKEduYXRtYWtlKTogSWYgYSBtYWluIGlzIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIHdpdGggZGlyZWN0b3J5CglpbmZvcm1hdGlvbiwgY2hlY2sgdGhhdCB0aGUgc291cmNlIGV4aXN0cyBhbmQsIGlmIGl0IGRvZXMsIHRoYXQgdGhlIHBhdGgKCWlzIHRoZSBhY3R1YWwgcGF0aCBvZiBhIHNvdXJjZSBvZiBhIHByb2plY3QuCgoJKiBwcmotZW52LmFkYjoKCShGaWxlX05hbWVfT2ZfTGlicmFyeV9Vbml0X0JvZHkpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgRnVsbF9QYXRoLiBXaGVuCglGdWxsX1BhdGggaXMgVHJ1ZSwgcmV0dXJuIHRoZSBmdWxsIHBhdGggaW5zdGVhZCBvZiB0aGUgc2ltcGxlIGZpbGUgbmFtZS4KCShQcm9qZWN0X09mKTogTmV3IGZ1bmN0aW9uCgoJKiBwcmotZW52LmFkczoKCShGaWxlX05hbWVfT2ZfTGlicmFyeV9Vbml0X0JvZHkpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgRnVsbF9QYXRoLAoJZGVmYXVsdGVkIHRvIEZhbHNlLgoJKFByb2plY3RfT2YpOiBOZXcgZnVuY3Rpb24KCjIwMDMtMTAtMjQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuZ2VuZXJpYzoKCUVuc3VyZSBvYmplY3RzIG9mIG1haW4gcHJvamVjdCBhcmUgYWx3YXlzIGNoZWNrZWQgYW5kIHJlYnVpbHQgaWYgbmVlZGVkLgoJU2V0IENDIHRvIGdjYyBieSBkZWZhdWx0LgoJUHJlcGFyZSBuZXcgaGFuZGxpbmcgb2YgbGluayBieSBjcmVhdGluZyBhIGdsb2JhbCBhcmNoaXZlIChub3QgYWN0aXZhdGVkCgl5ZXQpLgoKCSogYWRhZGVjb2RlLmgsIGF0cmVlLmgsIGVsaXN0cy5oLCBubGlzdHMuaCwgcmFpc2UuaCwKCXN0cmluZ3QuaDogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuIFJlbW92ZSB0cmFpbGluZyBibGFua3MuCglGaXggc291cmNlIG5hbWUgaW4gaGVhZGVyLgoKMjAwMy0xMC0yNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX2NoMy5hZGI6CglNaW5vciByZWZvcm1hdHRpbmcgKGluY2x1ZGluZyBuZXcgZnVuY3Rpb24gcmV0dXJuIHN0eWxlIHRocm91Z2hvdXQpCgoJKiBzZW1fY2gzLmFkczoKCU1pbm9yIHJlZm9ybWF0dGluZyAoaW5jbHVkaW5nIG5ldyBmdW5jdGlvbiByZXR1cm4gc3R5bGUgdGhyb3VnaG91dCkKCjIwMDMtMTAtMjQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogYWRhZGVjb2RlLmgsIGF0cmVlLmgsIGVsaXN0cy5oLCBubGlzdHMuaCwgcmFpc2UuaCwKCXN0cmluZ3QuaDogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuIFJlbW92ZSB0cmFpbGluZyBibGFua3MuCglGaXggc291cmNlIG5hbWUgaW4gaGVhZGVyLgoKMjAwMy0xMC0yNCAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwMy0xMC0yMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBhZGFkZWNvZGUuaCwgYXRyZWUuaCwgZWxpc3RzLmgsIG5hbWV0LmgsIG5saXN0cy5oLCByYWlzZS5oLAoJc3RyaW5ndC5oOiBDb252ZXJ0IHRvIElTTyBDOTAgZGVjbGFyYXRpb25zIGFuZCBkZWZpbml0aW9ucy4KCjIwMDMtMTAtMjMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCglQUiBhZGEvMTE5NzgKCSogZXhwX2NoMTMuYWRiIChFeHBhbmRfTl9GcmVlemVfRW50aXR5KTogRG8gbm90IGNvbnNpZGVyIGluaGVyaXRlZAoJRXh0ZXJuYWxfVGFnIGF0dHJpYnV0ZSBkZWZpbml0aW9uIGNsYXVzZXMuCgoyMDAzLTEwLTIzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzc2MTMKCSogZXhwX2RidWcuYWRiIChEZWJ1Z19SZW5hbWluZ19EZWNsYXJhdGlvbik6IEZvciB0aGUgcmVuYW1pbmcgb2YgYQoJY2hpbGQgdW5pdCwgZ2VuZXJhdGUgYSBmdWxseSBxdWFsaWZpZWQgbmFtZSB0byBhdm9pZCBzcHVyaW91cyBlcnJvcnMKCXdoZW4gdGhlIGNvbnRleHQgY29udGFpbnMgcmVuYW1pbmdzIG9mIGRpZmZlcmVudCBjaGlsZCB1bml0cyB3aXRoCgl0aGUgc2FtZSBzaW1wbGUgbmFtZS4KCgkqIGV4cF9kYnVnLmFkczogQWRkIGRvY3VtZW50YXRpb24gb24gbmFtZSBxdWFsaWZpY2F0aW9uIGZvciByZW5hbWluZ3MKCW9mIGNoaWxkIHVuaXRzLgoKMjAwMy0xMC0yMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBnLXJlZ3BhdC5hZHMsIGctcmVncGF0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAzLTEwLTIzICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogVXNlIHRoZSBmaWxlIDFhdGFncy5hZHMgd2l0aCB0aGUgWkZQIGFuZCBjZXJ0IHJ1bi10aW1lcy4KCjIwMDMtMTAtMjMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jOiAodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9SZWFsX0xpdGVyYWwpOiBBZGQgZXh0cmEgYXJnIHRvCglNYWNoaW5lIGNhbGwuCgoJKiB1cmVhbHAuaDogKE1hY2hpbmUpOiBVcGRhdGUgdG8gcHJvcGVyIGRlZmluaXRpb24uCgoyMDAzLTEwLTIzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGluaXQuYywgYWRhaW50LmM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDMtMTAtMjMgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBhZGFpbnQuYyAodzMyX2Vwb2NoX29mZnNldCk6IERlZmluZSBzdGF0aWMgY29uc3QgYXQgZmlsZSBsZXZlbC4KCSh3aW4zMl9maWxldGltZSk6IFJlcGxhY2Ugb2Zmc2V0IHdpdGggdzMyX2Vwb2NoX29mZnNldC4gVXNlIE5VTEwKCXJhdGhlciB0aGFuIHRfY3JlYXRlLCB0X2FjY2VzcyBpbiBjYWxsIHRvIEdldEZpbGVUaW1lLiBVc2UgdW5pb24KCXRvIGNvbnZlcnQgYmV0d2VlbiBGSUxFVElNRSBhbmQgIHVuc2lnbmVkIGxvbmcgbG9uZy4KCShfX2duYXRfZmlsZV90aW1lX25hbWUpOiBUZXN0IGZvciBpbnZhbGlkIGZpbGUgaGFuZGxlLgoJKF9fZ25hdF9zZXRfZmlsZXRpbWVfbmFtZSk6IFN1cHBvcnQgd2luMzIgdGFyZ2V0cyB1c2luZwoJdzMyYXBpIFNldEZpbGVUaW1lLgoKMjAwMy0xMC0yMiAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHN5c2RlcC5jOiBJbmNsdWRlIGNvbmlvLmggaWYgX19NSU5HVzMyX18gYW5kICFPTERfTUlOR1cuCgoJKiBjdHJsX2MuYyAoX19nbmF0X2ludF9oYW5kbGVyKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoKCSogZGVjbC5jIChjcmVhdF9jb25jYXRfbmFtZSk6ICBDb25zdC1pZnkgcHJlZml4LgoKCSogYWRhaW50LmM6IEluY2x1ZGUgY3R5cGUuaCBpZiBfX01JTkdXMzJfXy4KCShfX2duYXRfcmVhZGxpbmspOiBNYXJrIGFyZ3VtZW50cyBhcyBwb3NzaWJseSB1bnVzZWQuCgkoX19nbmF0X3N5bWxpbmspOiBMaWtld2lzZS4KCShfX2duYXRfaXNfc3ltYm9saWNfbGluayk6IExpa2V3aXNlLgoJKF9fZ25hdF9wb3J0YWJsZV9zcGF3bik6IExpa2V3aXNlLiAgQ2FzdCBsYXN0IGFyZyBvZiBzcGF3bnZwIHRvIG1hdGNoCglkZWNsYXJhdGlvbgoJKF9fZ25hdF9maWxlX3RpbWVfbmFtZSk6IERvbid0IGRlY2xhcmUgc3RydWN0IHN0YXQgc3RhdGJ1ZiB3aGVuCglub3QgbmVlZGVkLgoJKF9fZ25hdF9pc19hYnNvbHV0ZV9wYXRoKTogQWRkIHBhcmVudGhlc2lzIGFyb3VuZCBjb25kaXRpb24gb2YKCSdpZicgc3RhdGVtZW50IHRvIGF2b2lkIHdhcm5pbmcuCgkoX19nbmF0X3BsaXN0X2luaXQpOiBTcGVjaWZ5IHZvaWQgYXMgcGFyYW1ldGVyLgoJKHBsaXN0X2VudGVyKTogTGlrZXdpc2UuCgkocGxpc3RfbGVhdmUpOiBMaWtld2lzZS4KCShyZW1vdmVfaGFuZGxlKTogTWFrZSBzdGF0aWMuIEluaXRpYWxpemUgcHJldi4KCjIwMDMtMTAtMjIgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS8xMDExMAoJKiBNYWtlZmlsZS5pbjogRGlzYWJsZSBidWlsZCBvZiBnbmF0cHN0YS4KCSogY3N0cmVhbXMuYyAoX19nbmF0X2Z1bGxfbmFtZSk6IE1pbm9yIGltcHJvdmVtZW50cyBhbmQgY2xlYW4gdXAKCW9mIHByZXZpb3VzIGNoYW5nZS4KCjIwMDMtMTAtMjIgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogdHJhY2ViYWsuYyAoTUFYKTogQXZvaWQgcmVkZWZpbml0aW9uIHdhcm5pbmcuCgoJKiBpbml0LmMgW3NnaV0gKF9fZ25hdF9lcnJvcl9oYW5kbGVyKTogUmVtb3ZlIGksIHVudXNlZC4KCUNoYW5nZSBtc2cgdG8gY29uc3QgY2hhciAqLgoJKF9fZ25hdF9pbnN0YWxsX2hhbmRsZXIpOiBSZW1vdmUgc3MsIHVudXNlZC4KCVtzdW4gJiYgX19TVlI0ICYmICFfX3Z4d29ya3NdIChfX2duYXRfZXJyb3JfaGFuZGxlcik6IENoYW5nZSBtc2cKCXRvIGNvbnN0IGNoYXIgKi4KCSogY3N0cmVhbXMuYyAoX19nbmF0X2Z1bGxfbmFtZSk6IERlY2xhcmUgcCBvbmx5IHdoZW4gdXNlZC4KCShfX2duYXRfZnVsbF9uYW1lKSBbc2dpXSBSZXR1cm4gYnVmZmVyLgoKMjAwMy0xMC0yMiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBtaW5ndzMyLmg6IE5ldyBmaWxlLgoJKiBnbmF0X3dyYXBwZXIuYWRiOiBOZXcgZmlsZS4KCjIwMDMtMTAtMjIgIEplcm9tZSBSb3Vzc2VsICA8cm91c3NlbEBhY3QtZXVyb3BlLmZyPgoKCSogZy1yZWdwYXQuYWRzLCBnLXJlZ3BhdC5hZGIgKE1hdGNoKTogbmV3IGZ1bmN0aW9uLCB0byBrbm93IGlmIGEKCXN0cmluZyBtYXRjaCBhIHByZSBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb24gKHRoZSBjb3JyZXNwb25kaW5nCgl2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbiB3b3JraW5nIG9uIGEgcmF3IHJlZ3VsYXIgZXhwcmVzc2lvbikKCUZpeCB0eXBvcyBpbiB2YXJpb3VzIGNvbW1lbnRzCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZSBpbiBzcGVjCgoyMDAzLTEwLTIxICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAZ25hdC5jb20+CgoJKiBleHBfY2gzLmFkYjoKCShDb21wb25lbnRfTmVlZHNfU2ltcGxlX0luaXRpYWxpemF0aW9uKTogUmV0dXJuIEZhbHNlIHdoZW4gdGhlIHR5cGUgaXMgYQoJcGFja2VkIGJpdCBhcnJheS4gUmV2aXNlIHNwZWMgY29tbWVudHMgdG8gZG9jdW1lbnQgdGhpcyBjYXNlLgoKCSogZXhwX3ByYWcuYWRiOgoJKEV4cGFuZF9QcmFnbWFfSW1wb3J0KTogU2V0IGFueSBleHByZXNzaW9uIG9uIHRoZSBpbXBvcnRlZCBvYmplY3QgdG8KCWVtcHR5IHRvIGF2b2lkIGluaXRpYWxpemluZyBpbXBvcnRlZCBvYmplY3RzIChpbiBwYXJ0aWN1bGFyIHRoaXMKCWNvdmVycyB0aGUgY2FzZSBvZiB6ZXJvLWluaXRpYWxpemF0aW9uIG9mIGJpdCBhcnJheXMpLgoJVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoyMDAzLTEwLTIxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGI6CgkoTG9hZF9QYXJlbnRfT2ZfR2VuZXJpYyk6IElmIHBhcmVudCBpcyBjb21waWxhdGlvbiB1bml0LCBzdG9wIHNlYXJjaCwKCWEgc3VidW5pdCBpcyBtaXNzaW5nLgoJKEluc3RhbnRpYXRlX1N1YnByb2dyYW1fQm9keSk6IElmIGJvZHkgb2YgZnVuY3Rpb24gaXMgbWlzc2luZywgc2V0IHR5cGUKCW9mIHJldHVybiBleHByZXNzaW9uIGV4cGxpY2l0bHkgaW4gZHVtbXkgYm9keSwgdG8gcHJldmVudCBjYXNjYWRlZAoJZXJyb3JzIHdoZW4gYSBzdWJ1bml0IGlzIG1pc3NpbmcuCglGaXhlcyBQUiA1Njc3LgoKCSogc2VtX2NoMy5hZGI6CgkoQWNjZXNzX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBWZXJpZnkgdGhhdCByZXR1cm4gdHlwZSBpcyB2YWxpZC4KCUZpeGVzIFBSIDg2OTMuCgoJKiBzZW1fZWxhYi5hZGI6CgkoQ2hlY2tfRWxhYl9DYWxscyk6IERvIG5vdCBhcHBseSBlbGFib3JhdGlvbiBjaGVja3MgaWYgdGhlIG1haW4gdW5pdCBpcwoJZ2VuZXJpYy4KCUZpeGVzIFBSIDEyMzE4LgoKCSogc2VtX3V0aWwuYWRiOgoJKENvcnJlc3BvbmRpbmdfRGlzY3JpbWluYW50KTogSWYgdGhlIHNjb3BlIG9mIHRoZSBkaXNjcmltaW5hbnQgaXMgYQoJcHJpdmF0ZSB0eXBlIHdpdGhvdXQgZGlzY3JpbWluYW50LCB1c2UgaXRzIGZ1bGwgdmlldy4KCUZpeGVzIFBSIDgyNDcuCgoyMDAzLTEwLTIxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIDNwc29jY29uLmFkcywgM3ZlYWNvZHUuYWRiLCAzdmV4cGVjdC5hZGIsIDN2c29jY29uLmFkcywKCTN2c29jdGhpLmFkYiwgM3Zzb2N0aGkuYWRzLCAzdnRyYXN5bS5hZGIsIDN6c29jY29uLmFkcywKCTN6c29jdGhpLmFkYiwgM3pzb2N0aGkuYWRzLCA1MHN5c3RlbS5hZHMsIDUxc3lzdGVtLmFkcywKCTU1c3lzdGVtLmFkcywgNTZvc2ludGUuYWRiLCA1Nm9zaW50ZS5hZHMsIDU2dGFwcm9wLmFkYiwKCTU2dGFzcHJpLmFkcywgNTZ0cG9wc3AuYWRiLCA1N3N5c3RlbS5hZHMsIDU4c3lzdGVtLmFkcywKCTU5c3lzdGVtLmFkcywgNWFtbC10Z3QuYWRiLCA1Ym1sLXRndC5hZGIsIDVjc3lzdGVtLmFkcywKCTVkc3lzdGVtLmFkcywgNWZvc2ludGUuYWRiLCA1Z21sLXRndC5hZGIsIDVobWwtdGd0LmFkYiwKCTVpc3lzdGVtLmFkcywgNWxwYXJhbWUuYWRiLCA1bXN5c3RlbS5hZHMsIDVwc3lzdGVtLmFkcywKCTVzbWwtdGd0LmFkYiwgNXNvc3ByaW0uYWRiLCA1c3Rwb3BzcC5hZGIsIDV0c3lzdGVtLmFkcywKCTV1c3lzdGVtLmFkcywgNXZtbC10Z3QuYWRiLCA1dnN5bWJvbC5hZGIsIDV2dHJhZW50LmFkYiwKCTV2dHJhZW50LmFkcywgNXdtbC10Z3QuYWRiLCA1eHBhcmFtZS5hZHMsIDV4c3lzdGVtLmFkcywKCTV4dnh3b3JrLmFkcywgNXlwYXJhbWUuYWRzLCA1eXRpaXRoby5hZGIsIDV6aW5pdC5hZGIsCgk1em1sLXRndC5hZGIsIDV6cGFyYW1lLmFkcywgNXp0YXNwcmkuYWRzLCA1enRmc2V0ci5hZGIsCgk1enRocmluaS5hZGIsIDV6dGlpdGhvLmFkYiwgNXp0cG9wc3AuYWRiLCA3c3Rmc2V0ci5hZGIsCgk3c3RyYWNlcy5hZGIsIDdzdHJhZm9yLmFkYiwgN3N0cmFmb3IuYWRzLCA3c3RyYXRhcy5hZGIsCglhLWV4Y2FjaC5hZGIsIGEtZXhleGRhLmFkYiwgYS1leGV4cHIuYWRiLCBhLWV4ZXh0ci5hZGIsCglhLWV4c3RhdC5hZGIsIGEtc3Ryc3VwLmFkYiwgYS1zdHJzdXAuYWRzLCBhLXN0d2lzdS5hZGIsCglhLXN0d2lzdS5hZHMsIGJsZC5hZGIsIGJsZC5hZHMsIGJsZC1pby5hZGIsCglibGQtaW8uYWRzLCBjbGVhbi5hZGIsIGNsZWFuLmFkcywgY3RybF9jLmMsCgllcnJvdXRjLmFkYiwgZXJyb3V0Yy5hZHMsIGVycnV0aWwuYWRiLCBlcnJ1dGlsLmFkcywKCWVycl92YXJzLmFkcywgZmluYWwuYywgZy1hcnJzcGwuYWRiLCBnLWFycnNwbC5hZHMsCglnLWJvdWJ1Zi5hZGIsIGctYm91YnVmLmFkcywgZy1ib3VtYWkuYWRzLCBnLWJ1YnNvci5hZGIsCglnLWJ1YnNvci5hZHMsIGctY29tdmVyLmFkYiwgZy1jb212ZXIuYWRzLCBnLWN0cmxfYy5hZHMsCglnLWR5bmh0YS5hZGIsIGctZHluaHRhLmFkcywgZy1lYWNvZHUuYWRiLCBnLWV4Y2FjdC5hZGIsCglnLWV4Y2FjdC5hZHMsIGctaGVhc29yLmFkYiwgZy1oZWFzb3IuYWRzLCBnLW1lbWR1bS5hZGIsCglnLW1lbWR1bS5hZHMsIGduYXRjbGVhbi5hZGIsIGduYXRzeW0uYWRiLCBnLXBlaGFnZS5hZGIsCglnLXBlaGFnZS5hZHMsIGctcGVyaGFzLmFkcywgZ3ByMm1ha2UuYWRiLCBncHIybWFrZS5hZHMsCglncHJjbWQuYWRiLCBncHJlcC5hZGIsIGdwcmVwLmFkcywgZy1zZW1hcGguYWRiLAoJZy1zZW1hcGguYWRzLCBnLXN0cmluZy5hZGIsIGctc3RyaW5nLmFkcywgZy1zdHJzcGwuYWRzLAoJZy13aXN0c3AuYWRzLCBpLXZ0aHJlYS5hZGIsIGktdnRocmVhLmFkcywgaS12eHdvaW8uYWRiLAoJaS12eHdvaW8uYWRzLCBNYWtlZmlsZS5nZW5lcmljLCBNYWtlZmlsZS5wcm9sb2csIE1ha2VmaWxlLnJ0bCwKCXByZXAuYWRiLCBwcmVwLmFkcywgcHJlcGNvbXAuYWRiLCBwcmVwY29tcC5hZHMsCglwcmotZXJyLmFkYiwgcHJqLWVyci5hZHMsIHMtYm9hcm9wLmFkcywgcy1jYXJzaTguYWRiLAoJcy1jYXJzaTguYWRzLCBzLWNhcnVuOC5hZGIsIHMtY2FydW44LmFkcywgcy1jYXNpMTYuYWRiLAoJcy1jYXNpMTYuYWRzLCBzLWNhc2kzMi5hZGIsIHMtY2FzaTMyLmFkcywgcy1jYXNpNjQuYWRiLAoJcy1jYXNpNjQuYWRzLCBzLWNhc3V0aS5hZGIsIHMtY2FzdXRpLmFkcywgcy1jYXVuMTYuYWRiLAoJcy1jYXVuMTYuYWRzLCBzLWNhdW4zMi5hZGIsIHMtY2F1bjMyLmFkcywgcy1jYXVuNjQuYWRiLAoJcy1jYXVuNjQuYWRzLCBzY25nLmFkYiwgc2NuZy5hZHMsIHMtZXhuaW50LmFkYiwKCXMtZXhubGxmLmFkYiwgcy1leG5sbGkuYWRiLCBzLWV4cGludC5hZGIsIHMtZXhwbGxpLmFkYiwKCXMtZ2V2ZW9wLmFkYiwgcy1nZXZlb3AuYWRzLCBzLWhpYmFlbi5hZHMsIHMtaHRhYmxlLmFkYiwKCXMtaHRhYmxlLmFkcywgc2lucHV0LWMuYWRiLCBzaW5wdXQtYy5hZHMsIHMtbWVtY29wLmFkcywKCXNvY2tldC5jLCBzLXB1cmV4Yy5hZHMsIHMtc2NhdmFsLmFkYiwgcy1zdG9wb28uYWRiLAoJcy1zdHJjb20uYWRiLCBzLXN0cmNvbS5hZHMsIHMtc3RyeGRyLmFkYiwgcy1yaWRlbnQuYWRzLAoJcy10aHJlYWQuYWRiLCBzLXRocmVhZC5hZHMsIHMtdHBhZTY1LmFkYiwgcy10cGFlNjUuYWRzLAoJcy10cG9yZnQuYWRiLCBzLXRyYWVudC5hZGIsIHMtdHJhZW50LmFkcywgc3R5bGVnLmFkYiwKCXN0eWxlZy5hZHMsIHN0eWxlZy1jLmFkYiwgc3R5bGVnLWMuYWRzLCBzLXZlYm9vcC5hZGIsCglzLXZlYm9vcC5hZHMsIHMtdmVjdG9yLmFkcywgc3ltYm9scy5hZGIsIHN5bWJvbHMuYWRzLAoJdGItYWx2bXMuYywgdGItYWx2eHcuYywgdGVtcGRpci5hZGIsIHRlbXBkaXIuYWRzLAoJdm1zX2NvbnYuYWRzLCB2bXNfY29udi5hZGIsIHZtc19kYXRhLmFkcywKCXZ4YWRkcjJsaW5lLmFkYjogRmlsZXMgYWRkZWQuIE1lcmdlIHdpdGggQUNUIHRyZWUuCgoJKiA0ZGludG5hbS5hZHMsIDRtaW50bmFtLmFkcywgNHVpbnRuYW0uYWRzLCA1MnN5c3RlbS5hZHMsCgk1ZG9zaW50ZS5hZHMsIDVldHBvcHNlLmFkYiwgNW1vc2ludGUuYWRzLCA1cW9zaW50ZS5hZGIsCgk1cW9zaW50ZS5hZHMsIDVxc3RhY2hlLmFkYiwgNXF0YXByb3AuYWRiLCA1cXRhc3ByaS5hZHMsCgk1c3Rwb3BzZS5hZGIsIDV1aW50bWFuLmFkYiwgNXVvc2ludGUuYWRzLCBhZGFmaW5hbC5jLAoJZy1lbmJsc3AuYWRiLCBpby1hdXguYywgc2NuLW5saXQuYWRiLCBzY24tc2xpdC5hZGIsCglzLWV4bmZsdC5hZHMsIHMtZXhuZ2VuLmFkYiwgcy1leG5nZW4uYWRzLCBzLWV4bmxmbC5hZHMsCglzLWV4bmxpbi5hZHMsIHMtZXhuc2ZsLmFkcywgcy1leG5zaW4uYWRzLCBzLWV4bnNzaS5hZHMsCglzLWV4cGZsdC5hZHMsIHMtZXhwZ2VuLmFkYiwgcy1leHBnZW4uYWRzLCBzLWV4cGxmbC5hZHMsCglzLWV4cGxpbi5hZHMsIHMtZXhwbGxmLmFkcywgcy1leHBzZmwuYWRzLCBzLWV4cHNpbi5hZHMsCglzLWV4cHNzaS5hZHMsIHN0eWxlLmFkYjogRmlsZXMgcmVtb3ZlZC4gTWVyZ2Ugd2l0aCBBQ1QgdHJlZS4KCgkqIDFpYy5hZHMsIDMxc29jY29uLmFkcywgMzFzb2xpb3AuYWRzLCAzYXNvY2Nvbi5hZHMsCgkzYnNvY2Nvbi5hZHMsIDNnc29jY29uLmFkcywgM2hzb2Njb24uYWRzLCAzc3NvY2Nvbi5hZHMsCgkzc3NvbGlvcC5hZHMsIDN3c29jY29uLmFkcywgM3dzb2N0aGkuYWRiLCAzd3NvY3RoaS5hZHMsCgkzd3NvbGlvcC5hZHMsIDQxaW50bmFtLmFkcywgNDJpbnRuYW0uYWRzLCA0YWludG5hbS5hZHMsCgk0Y2ludG5hbS5hZHMsIDRnaW50bmFtLmFkcywgNGhleGNwb2wuYWRiLCA0aGludG5hbS5hZHMsCgk0bGludG5hbS5hZHMsIDRuaW50bmFtLmFkcywgNG9pbnRuYW0uYWRzLCA0b251bWF1eC5hZHMsCgk0cGludG5hbS5hZHMsIDRzaW50bmFtLmFkcywgNHZjYWxkZWwuYWRiLCA0dmNhbGVuZC5hZGIsCgk0dmludG5hbS5hZHMsIDR3ZXhjcG9sLmFkYiwgNHdpbnRuYW0uYWRzLCA0emludG5hbS5hZHMsCgk1MW9zaW50ZS5hZGIsIDUxb3NpbnRlLmFkcywgNTJvc2ludGUuYWRiLCA1Mm9zaW50ZS5hZHMsCgk1M29zaW50ZS5hZHMsIDU0b3NpbnRlLmFkcywgNWFvc2ludGUuYWRiLCA1YW9zaW50ZS5hZHMsCgk1YXN5c3RlbS5hZHMsIDVhdGFwcm9wLmFkYiwgNWF0YXNpbmYuYWRzLCA1YXRhc3ByaS5hZHMsCgk1YXRwb3BzcC5hZGIsIDVhdnh3b3JrLmFkcywgNWJvc2ludGUuYWRiLCA1Ym9zaW50ZS5hZHMsCgk1YnN5c3RlbS5hZHMsIDVjb3NpbnRlLmFkcywgNWVzeXN0ZW0uYWRzLCA1ZmludG1hbi5hZGIsCgk1Zm9zaW50ZS5hZHMsIDVmc3lzdGVtLmFkcywgNWZ0YXByb3AuYWRiLCA1ZnRhc2luZi5hZHMsCgk1Z2ludGVyci5hZGIsIDVnaW50bWFuLmFkYiwgNWdtYXN0b3AuYWRiLCA1Z29zaW50ZS5hZHMsCgk1Z3Byb2luZi5hZHMsIDVnc3lzdGVtLmFkcywgNWd0YXByb3AuYWRiLCA1Z3Rhc2luZi5hZHMsCgk1Z3RwZ2V0Yy5hZGIsIDVob3NpbnRlLmFkYiwgNWhvc2ludGUuYWRzLCA1aHN5c3RlbS5hZHMsCgk1aHRhcHJvcC5hZGIsIDVodGFzcHJpLmFkcywgNWh0cmFjZWIuYWRiLCA1aW9zaW50ZS5hZGIsCgk1aXRhcHJvcC5hZGIsIDVpdGFzcHJpLmFkcywgNWtzeXN0ZW0uYWRzLCA1a3Z4d29yay5hZHMsCgk1bGludG1hbi5hZGIsIDVsbWwtdGd0LmFkYiwgNWxvc2ludGUuYWRzLCA1bHN5c3RlbS5hZHMsCgk1bXZ4d29yay5hZHMsIDVuaW5tYW9wLmFkYiwgNW5pbnRtYW4uYWRiLCA1bm9zaW50ZS5hZHMsCgk1bnRhcHJvcC5hZGIsIDVudGFzcHJpLmFkcywgNW9pbnRlcnIuYWRiLCA1b21hc3RvcC5hZGIsCgk1b29zaW50ZS5hZGIsIDVvb3NpbnRlLmFkcywgNW9vc3ByaW0uYWRiLCA1b3BhcmFtZS5hZGIsCgk1b3N5c3RlbS5hZHMsIDVvdGFwcm9wLmFkYiwgNW90YXNwcmkuYWRzLCA1cG9zaW50ZS5hZHMsCgk1cG9zcHJpbS5hZGIsIDVwdnh3b3JrLmFkcywgNXNpbnRtYW4uYWRiLCA1c29zaW50ZS5hZGIsCgk1c29zaW50ZS5hZHMsIDVzc3lzdGVtLmFkcywgNXN0YXByb3AuYWRiLCA1c3Rhc2luZi5hZHMsCgk1c3Rhc3ByaS5hZHMsIDVzdnh3b3JrLmFkcywgNXRvc2ludGUuYWRzLCA1dmFzdGhhbi5hZGIsCgk1dmlubWFvcC5hZGIsIDV2aW50ZXJyLmFkYiwgNXZpbnRtYW4uYWRiLCA1dmludG1hbi5hZHMsCgk1dm1hc3RvcC5hZGIsIDV2b3NpbnRlLmFkYiwgNXZvc2ludGUuYWRzLCA1dm9zcHJpbS5hZGIsCgk1dnN5c3RlbS5hZHMsIDV2dGFwcm9wLmFkYiwgNXZ0YXNwcmkuYWRzLCA1dnRwb3BkZS5hZGIsCgk1dnRwb3BkZS5hZHMsIDV3Z2xvbG9jLmFkYiwgNXdpbnRtYW4uYWRiLCA1d21lbW9yeS5hZGIsCgk1d29zcHJpbS5hZGIsIDV3c3lzdGVtLmFkcywgNXd0YXByb3AuYWRiLCA1d3Rhc3ByaS5hZHMsCgk1eXN5c3RlbS5hZHMsIDV6aW50ZXJyLmFkYiwgNXppbnRtYW4uYWRiLCA1em9zaW50ZS5hZGIsCgk1em9zaW50ZS5hZHMsIDV6b3NwcmltLmFkYiwgNXpzeXN0ZW0uYWRzLCA1enRhcHJvcC5hZGIsCgk2dmNwcC5hZGIsIDZ2Y3N0cmVhLmFkYiwgNnZpbnRlcmYuYWRzLCA3c2lubWFvcC5hZGIsCgk3c2ludG1hbi5hZGIsIDdzb3NpbnRlLmFkYiwgN3Nvc3ByaW0uYWRiLCA3c3RhcHJvcC5hZGIsCgk3c3Rhc3ByaS5hZHMsIDdzdHBvcHNwLmFkYiwgN3N0cmFjZWIuYWRiLCA5ZHJwYy5hZGIsCglhLWNhbGRlbC5hZGIsIGEtY2FsZGVsLmFkcywgYS1jaGFyYWMuYWRzLCBhLWNvbGllbi5hZHMsCglhLWNvbWxpbi5hZGIsIGFkYWludC5jLCBhZGFpbnQuaCwgYWRhLXRyZWUuZGVmLAoJYS1kaW9jc3QuYWRiLCBhLWRpb2NzdC5hZHMsIGEtZGlyZWlvLmFkYiwgYS1leGNlcHQuYWRiLAoJYS1leGNlcHQuYWRzLCBhLWV4Y3BvbC5hZGIsIGEtZXhjdHJhLmFkYiwgYS1leGN0cmEuYWRzLAoJYS1maWxpY28uYWRiLCBhLWludGVyci5hZGIsIGEtaW50c2lnLmFkYiwgYS1pbnRzaWcuYWRzLAoJYWxpLmFkYiwgYWxpLmFkcywgYWxpLXV0aWwuYWRiLCBhbGktdXRpbC5hZHMsCglhLW5nY2VmdS5hZGIsIGEtbmdjb3R5LmFkYiwgYS1uZ2VsZnUuYWRiLCBhLW51ZGlyYS5hZGIsCglhLW51ZGlyYS5hZHMsIGEtbnVmbHJhLmFkYiwgYS1udWZscmEuYWRzLCBhLXJlYXRpbS5hZGIsCglhLXJlYXRpbS5hZHMsIGEtcmV0aWRlLmFkcywgYS1zZXF1aW8uYWRiLCBhLXNpb2NzdC5hZGIsCglhLXNpb2NzdC5hZHMsIGEtc3NpY3N0LmFkYiwgYS1zc2ljc3QuYWRzLCBhLXN0cmJvdS5hZGIsCglhLXN0cmJvdS5hZHMsIGEtc3RyZml4LmFkYiwgYS1zdHJtYXAuYWRiLCBhLXN0cnNlYS5hZHMsCglhLXN0cnVuYi5hZGIsIGEtc3RydW5iLmFkcywgYS1zdHN0aW8uYWRiLCBhLXN0dW5hdS5hZGIsCglhLXN0dW5hdS5hZHMsIGEtc3R3aWJvLmFkYiwgYS1zdHdpYm8uYWRzLCBhLXN0d2lmaS5hZGIsCglhLXN0d2ltYS5hZGIsIGEtc3R3aXVuLmFkYiwgYS1zdHdpdW4uYWRzLCBhLXRhZ3MuYWRiLAoJYS10YWdzLmFkcywgYS10YXNhdHQuYWRiLCBhLXRhc2lkZS5hZGIsIGEtdGVpb2VkLmFkYiwKCWEtdGV4dGlvLmFkYiwgYS10ZXh0aW8uYWRzLCBhLXRpZW5hdS5hZGIsIGEtdGlmaWlvLmFkYiwKCWEtdGlmbGF1LmFkYiwgYS10aWZsaW8uYWRiLCBhLXRpZ2VhdS5hZGIsIGEtdGlnZWF1LmFkcywKCWEtdGlpbmF1LmFkYiwgYS10aW1vYXUuYWRiLCBhLXRpb2NzdC5hZGIsIGEtdGlvY3N0LmFkcywKCWF0cmVlLmFkYiwgYXRyZWUuYWRzLCBhLXdpdGVpby5hZGIsIGEtd2l0ZWlvLmFkcywKCWEtd3Rjc3RyLmFkYiwgYS13dGNzdHIuYWRzLCBhLXd0ZGVpby5hZGIsIGEtd3RlZGl0LmFkYiwKCWEtd3RlbmF1LmFkYiwgYS13dGZsYXUuYWRiLCBhLXd0aW5hdS5hZGIsIGEtd3Rtb2F1LmFkYiwKCWJjaGVjay5hZGIsIGJpbmRlLmFkYiwgYmluZGdlbi5hZGIsIGJpbmR1c2cuYWRiLAoJY2hlY2tzLmFkYiwgY2hlY2tzLmFkcywgY2lvLmMsIGNvbXBlcnIuYWRiLAoJY29tcGVyci5hZHMsIGNzZXRzLmFkYiwgY3N0YW5kLmFkYiwgY3N0cmVhbXMuYywKCWRlYnVnX2EuYWRiLCBkZWJ1Z19hLmFkcywgZGVidWcuYWRiLCBkZWNsLmMsCgllaW5mby5hZGIsIGVpbmZvLmFkcywgZXJyb3V0LmFkYiwgZXJyb3V0LmFkcywKCWV2YWxfZmF0LmFkYiwgZXZhbF9mYXQuYWRzLCBleHBfYWdnci5hZGIsIGV4cGFuZGVyLmFkYiwKCWV4cGFuZGVyLmFkcywgZXhwX2F0dHIuYWRiLCBleHBfY2gxMS5hZGIsIGV4cF9jaDEzLmFkYiwKCWV4cF9jaDIuYWRiLCBleHBfY2gzLmFkYiwgZXhwX2NoMy5hZHMsIGV4cF9jaDQuYWRiLAoJZXhwX2NoNS5hZGIsIGV4cF9jaDYuYWRiLCBleHBfY2g3LmFkYiwgZXhwX2NoNy5hZHMsCglleHBfY2g4LmFkYiwgZXhwX2NoOS5hZGIsIGV4cF9jb2RlLmFkYiwgZXhwX2RidWcuYWRiLAoJZXhwX2RidWcuYWRzLCBleHBfZGlzcC5hZGIsIGV4cF9kaXN0LmFkYiwgZXhwZWN0LmMsCglleHBfZml4ZC5hZGIsIGV4cF9pbWd2LmFkYiwgZXhwX2ludHIuYWRiLCBleHBfcGFrZC5hZGIsCglleHBfcHJhZy5hZGIsIGV4cF9zdHJtLmFkYiwgZXhwX3N0cm0uYWRzLCBleHBfdHNzLmFkYiwKCWV4cF90c3MuYWRzLCBleHBfdXRpbC5hZGIsIGV4cF91dGlsLmFkcywgZXhwX3ZmcHQuYWRiLAoJZmUuaCwgZm1hcC5hZGIsIGZtYXAuYWRzLCBmbmFtZS5hZGIsCglmbmFtZS5hZHMsIGZuYW1lLXVmLmFkYiwgZm5hbWUtdWYuYWRzLCBmcmVlemUuYWRiLAoJZnJlZXplLmFkcywgZnJvbnRlbmQuYWRiLCBnLWF3ay5hZGIsIGctYXdrLmFkcywKCWctYnVzb3JhLmFkYiwgZy1idXNvcmEuYWRzLCBnLWJ1c29yZy5hZGIsIGctYnVzb3JnLmFkcywKCWctY2FzdXRpLmFkYiwgZy1jYXN1dGkuYWRzLCBnLWNhdGlpby5hZGIsIGctY2F0aWlvLmFkcywKCWctY2dpLmFkYiwgZy1jZ2kuYWRzLCBnLWNnaWNvby5hZGIsIGctY2dpY29vLmFkcywKCWctY2dpZGViLmFkYiwgZy1jZ2lkZWIuYWRzLCBnLWNvbWxpbi5hZGIsIGctY29tbGluLmFkcywKCWctY3JjMzIuYWRiLCBnLWNyYzMyLmFkcywgZy1kZWJwb28uYWRiLCBnLWRlYnBvby5hZHMsCglnLWRlYnV0aS5hZGIsIGctZGVidXRpLmFkcywgZy1kaW9waXQuYWRiLCBnLWRpb3BpdC5hZHMsCglnLWRpcm9wZS5hZGIsIGctZGlyb3BlLmFkcywgZy1keW50YWIuYWRiLCBnLWR5bnRhYi5hZHMsCglnLWV4Y2VwdC5hZHMsIGctZXhjdHJhLmFkYiwgZy1leGN0cmEuYWRzLCBnLWV4cGVjdC5hZGIsCglnLWV4cGVjdC5hZHMsIGctaGVzb3JhLmFkYiwgZy1oZXNvcmEuYWRzLCBnLWhlc29yZy5hZGIsCglnLWhlc29yZy5hZHMsIGctaHRhYmxlLmFkYiwgZy1odGFibGUuYWRzLCBnaWdpLmgsCglnLWlvLmFkYiwgZy1pby5hZHMsIGctaW9fYXV4LmFkYiwgZy1pb19hdXguYWRzLAoJZy1sb2NmaWwuYWRiLCBnLWxvY2ZpbC5hZHMsIGctbWQ1LmFkYiwgZy1tZDUuYWRzLAoJZ21lbS5jLCBnbmF0MWRydi5hZGIsIGduYXRiaW5kLmFkYiwgZ25hdGNob3AuYWRiLAoJZ25hdGNtZC5hZGIsIGduYXRmaW5kLmFkYiwgZ25hdGtyLmFkYiwgZ25hdGxici5hZGIsCglnbmF0bGluay5hZGIsIGduYXRscy5hZGIsIGduYXRtYWtlLmFkYiwgZ25hdG1lbS5hZGIsCglnbmF0bmFtZS5hZGIsIGduYXRwcmVwLmFkYiwgZ25hdHByZXAuYWRzLCBnbmF0cHN0YS5hZGIsCglnbmF0eHJlZi5hZGIsIGctb3NfbGliLmFkYiwgZy1vc19saWIuYWRzLCBnLXJlZ2V4cC5hZGIsCglnLXJlZ2V4cC5hZHMsIGctcmVnaXN0LmFkYiwgZy1yZWdpc3QuYWRzLCBnLXJlZ3BhdC5hZGIsCglnLXJlZ3BhdC5hZHMsIGctc29jY29uLmFkcywgZy1zb2NrZXQuYWRiLCBnLXNvY2tldC5hZHMsCglnLXNvY3RoaS5hZGIsIGctc29jdGhpLmFkcywgZy1zb2xpb3AuYWRzLCBnLXNvdWluZi5hZHMsCglnLXNwZWNoZS5hZGIsIGctc3BlY2hlLmFkcywgZy1zcGlwYXQuYWRiLCBnLXNwaXBhdC5hZHMsCglnLXNwaXRiby5hZGIsIGctc3BpdGJvLmFkcywgZy1zcHRhYm8uYWRzLCBnLXNwdGFpbi5hZHMsCglnLXNwdGF2cy5hZHMsIGctdGFibGUuYWRiLCBnLXRhYmxlLmFkcywgZy10YXNsb2MuYWRiLAoJZy10YXNsb2MuYWRzLCBnLXRocmVhZC5hZGIsIGctdGhyZWFkLmFkcywgZy10cmFjZWIuYWRiLAoJZy10cmFjZWIuYWRzLCBnLXRyYXN5bS5hZGIsIGctdHJhc3ltLmFkcywgaG9zdHBhcm0uYWRzLAoJaS1jLmFkcywgaS1jb2JvbC5hZGIsIGktY3BwLmFkYiwgaS1jc3RyZWEuYWRzLAoJaS1jc3RyaW4uYWRiLCBpLWNzdHJpbi5hZHMsIGltcHVuaXQuYWRiLCBpbml0LmMsCglpbmxpbmUuYWRiLCBpbnRlcmZhYy5hZHMsIGktcGFjZGVjLmFkcywgaXR5cGVzLmFkYiwKCWl0eXBlcy5hZHMsIGktdnh3b3JrLmFkcywgbGFuZy5vcHQsIGxhbmctc3BlY3MuaCwKCWxheW91dC5hZGIsIGxpYi5hZGIsIGxpYi5hZHMsIGxpYi1saXN0LmFkYiwKCWxpYi1sb2FkLmFkYiwgbGliLWxvYWQuYWRzLCBsaWItc29ydC5hZGIsIGxpYi11dGlsLmFkYiwKCWxpYi13cml0LmFkYiwgbGliLXdyaXQuYWRzLCBsaWIteHJlZi5hZGIsIGxpYi14cmVmLmFkcywKCWxpbmsuYywgbGl2ZS5hZGIsIG1ha2UuYWRiLCBtYWtlLmFkcywKCU1ha2VmaWxlLmFkYWxpYiwgTWFrZWZpbGUuaW4sIE1ha2UtbGFuZy5pbiwgbWFrZXVzZy5hZGIsCgltZGxsLmFkYiwgbWRsbC1maWwuYWRiLCBtZGxsLWZpbC5hZHMsIG1kbGwtdXRsLmFkYiwKCW1kbGwtdXRsLmFkcywgbWVtcm9vdC5hZGIsIG1lbXJvb3QuYWRzLCBtZW10cmFjay5hZGIsCgltaXNjLmMsIG1rZGlyLmMsIG1saWIuYWRiLCBtbGliLmFkcywKCW1saWItZmlsLmFkYiwgbWxpYi1maWwuYWRzLCBtbGliLXByai5hZGIsIG1saWItcHJqLmFkcywKCW1saWItdGd0LmFkYiwgbWxpYi10Z3QuYWRzLCBtbGliLXV0bC5hZGIsIG1saWItdXRsLmFkcywKCW5hbWV0LmFkYiwgbmFtZXQuYWRzLCBuYW1ldC5oLCBubGlzdHMuYWRzLAoJbmxpc3RzLmgsIG5tYWtlLmFkdCwgb3B0LmFkYiwgb3B0LmFkcywKCW9zaW50LmFkYiwgb3NpbnQuYWRzLCBvc2ludC1iLmFkYiwgb3NpbnQtYy5hZGIsCglwYXIuYWRiLCBwYXItY2gxMC5hZGIsIHBhci1jaDExLmFkYiwgcGFyLWNoMi5hZGIsCglwYXItY2gzLmFkYiwgcGFyLWNoNC5hZGIsIHBhci1jaDUuYWRiLCBwYXItY2g2LmFkYiwKCXBhci1jaDkuYWRiLCBwYXItZW5kaC5hZGIsIHBhci1sYWJsLmFkYiwgcGFyLWxvYWQuYWRiLAoJcGFyLXByYWcuYWRiLCBwYXItc3luYy5hZGIsIHBhci10Y2hrLmFkYiwgcGFyLXV0aWwuYWRiLAoJcHJqLmFkYiwgcHJqLmFkcywgcHJqLWF0dHIuYWRiLCBwcmotYXR0ci5hZHMsCglwcmotY29tLmFkYiwgcHJqLWNvbS5hZHMsIHByai1kZWN0LmFkYiwgcHJqLWRlY3QuYWRzLAoJcHJqLWVudi5hZGIsIHByai1lbnYuYWRzLCBwcmotZXh0LmFkYiwgcHJqLWV4dC5hZHMsCglwcmotbWFrci5hZGIsIHByai1tYWtyLmFkcywgcHJqLW5tc2MuYWRiLCBwcmotbm1zYy5hZHMsCglwcmotcGFycy5hZGIsIHByai1wYXJzLmFkcywgcHJqLXBhcnQuYWRiLCBwcmotcGFydC5hZHMsCglwcmotcHAuYWRiLCBwcmotcHAuYWRzLCBwcmotcHJvYy5hZGIsIHByai1wcm9jLmFkcywKCXByai1zdHJ0LmFkYiwgcHJqLXN0cnQuYWRzLCBwcmotdHJlZS5hZGIsIHByai10cmVlLmFkcywKCXByai11dGlsLmFkYiwgcHJqLXV0aWwuYWRzLCByYWlzZS5jLCByYWlzZS5oLAoJcmVwaW5mby5hZGIsIHJlcGluZm8uaCwgcmVzdHJpY3QuYWRiLCByZXN0cmljdC5hZHMsCglyaWRlbnQuYWRzLCBydHNmaW5kLmFkYiwgcnRzZmluZC5hZHMsIHMtYWRkaW1hLmFkcywKCXMtYXJpdDY0LmFkYiwgcy1hc3NlcnQuYWRiLCBzLWFzc2VydC5hZHMsIHMtYXRhY2NvLmFkYiwKCXMtYXRhY2NvLmFkcywgcy1hdXhkZWMuYWRiLCBzLWF1eGRlYy5hZHMsIHMtYml0b3BzLmFkYiwKCXNjYW5zLmFkcywgc2NuLmFkYiwgc2NuLmFkcywgcy1jcmMzMi5hZGIsCglzLWNyYzMyLmFkcywgcy1kaXJlaW8uYWRiLCBzZW0uYWRiLCBzZW0uYWRzLAoJc2VtX2FnZ3IuYWRiLCBzZW1fYXR0ci5hZGIsIHNlbV9hdHRyLmFkcywgc2VtX2Nhc2UuYWRiLAoJc2VtX2Nhc2UuYWRzLCBzZW1fY2F0LmFkYiwgc2VtX2NhdC5hZHMsIHNlbV9jaDEwLmFkYiwKCXNlbV9jaDExLmFkYiwgc2VtX2NoMTIuYWRiLCBzZW1fY2gxMi5hZHMsIHNlbV9jaDEzLmFkYiwKCXNlbV9jaDEzLmFkcywgc2VtX2NoMy5hZGIsIHNlbV9jaDMuYWRzLCBzZW1fY2g0LmFkYiwKCXNlbV9jaDUuYWRiLCBzZW1fY2g1LmFkcywgc2VtX2NoNi5hZGIsIHNlbV9jaDYuYWRzLAoJc2VtX2NoNy5hZGIsIHNlbV9jaDcuYWRzLCBzZW1fY2g4LmFkYiwgc2VtX2NoOC5hZHMsCglzZW1fY2g5LmFkYiwgc2VtX2Rpc3AuYWRiLCBzZW1fZGlzcC5hZHMsIHNlbV9kaXN0LmFkYiwKCXNlbV9lbGFiLmFkYiwgc2VtX2V2YWwuYWRiLCBzZW1fZXZhbC5hZHMsIHNlbV9pbnRyLmFkYiwKCXNlbV9tYXBzLmFkYiwgc2VtX21lY2guYWRiLCBzZW1fcHJhZy5hZGIsIHNlbV9wcmFnLmFkcywKCXNlbV9yZXMuYWRiLCBzZW1fcmVzLmFkcywgc2VtX3R5cGUuYWRiLCBzZW1fdHlwZS5hZHMsCglzZW1fdXRpbC5hZGIsIHNlbV91dGlsLmFkcywgc2VtX3dhcm4uYWRiLCBzLWVycnJlcC5hZGIsCglzLWVycnJlcC5hZHMsIHMtZXhjdGFiLmFkYiwgcy1leGN0YWIuYWRzLCBzLWV4bmludC5hZHMsCglzLWV4bmxsZi5hZHMsIHMtZXhubGxpLmFkcywgcy1leHBpbnQuYWRzLCBzLWV4cGxsaS5hZHMsCglzLWV4cHVucy5hZHMsIHMtZmF0Zmx0LmFkcywgcy1mYXRnZW4uYWRiLCBzLWZhdGdlbi5hZHMsCglzLWZhdGxmbC5hZHMsIHMtZmF0bGxmLmFkcywgcy1mYXRzZmwuYWRzLCBzLWZpbGVpby5hZGIsCglzLWZpbGVpby5hZHMsIHMtZmluaW1wLmFkYiwgcy1maW5pbXAuYWRzLCBzLWZpbnJvby5hZGIsCglzLWZpbnJvby5hZHMsIHNmbl9zY2FuLmFkYiwgcy1nbG9sb2MuYWRiLCBzLWdsb2xvYy5hZHMsCglzLWltZ2RlYy5hZGIsIHMtaW1nZW51LmFkYiwgcy1pbWdyZWEuYWRiLCBzLWltZ3djaC5hZGIsCglzaW5mby5hZGIsIHNpbmZvLmFkcywgcy1pbm1hb3AuYWRzLCBzaW5wdXQuYWRiLAoJc2lucHV0LmFkcywgc2lucHV0LWQuYWRiLCBzaW5wdXQtbC5hZGIsIHNpbnB1dC1sLmFkcywKCXNpbnB1dC1wLmFkYiwgc2lucHV0LXAuYWRzLCBzLWludGVyci5hZGIsIHMtaW50ZXJyLmFkcywKCXMtaW50bWFuLmFkcywgcy1tYWNjb2QuYWRzLCBzLW1hc3RvcC5hZGIsIHMtbWFzdG9wLmFkcywKCXMtbWVtb3J5LmFkYiwgcy1tZW1vcnkuYWRzLCBzbmFtZXMuYWRiLCBzbmFtZXMuYWRzLAoJc25hbWVzLmgsIHMtb3NwcmltLmFkcywgcy1wYXJhbWUuYWRzLCBzLXBhcmludC5hZHMsCglzLXBvb2xvYy5hZGIsIHMtcG9vbG9jLmFkcywgcy1wb29zaXouYWRiLCBzcHJpbnQuYWRiLAoJcy1wcm9pbmYuYWRzLCBzLXNjYXZhbC5hZHMsIHMtc2Vjc3RhLmFkYiwgcy1zZWNzdGEuYWRzLAoJcy1zZXF1aW8uYWRiLCBzLXNoYXN0by5hZGIsIHMtc2hhc3RvLmFkcywgcy1zb2ZsaW4uYWRzLAoJcy1zdGFjaGUuYWRiLCBzLXN0YWNoZS5hZHMsIHMtc3RhbGliLmFkYiwgcy1zdGFsaWIuYWRzLAoJcy1zdG9lbGUuYWRzLCBzLXN0b3Bvby5hZHMsIHMtc3RyYXR0LmFkYiwgcy1zdHJhdHQuYWRzLAoJcy1zdHJvcHMuYWRiLCBzLXN0cm9wcy5hZHMsIHMtdGFhc2RlLmFkYiwgcy10YWFzZGUuYWRzLAoJcy10YWRlY2EuYWRiLCBzLXRhZGVjYS5hZHMsIHMtdGFkZXJ0LmFkYiwgcy10YWRlcnQuYWRzLAoJcy10YWVuY2EuYWRiLCBzLXRhZW5jYS5hZHMsIHMtdGFwcm9iLmFkYiwgcy10YXByb2IuYWRzLAoJcy10YXByb3AuYWRzLCBzLXRhcmVzdC5hZGIsIHMtdGFyZXN0LmFkcywgcy10YXNkZWIuYWRiLAoJcy10YXNkZWIuYWRzLCBzLXRhc2luZi5hZGIsIHMtdGFzaW5mLmFkcywgcy10YXNpbmkuYWRiLAoJcy10YXNpbmkuYWRzLCBzLXRhc2tpbi5hZGIsIHMtdGFza2luLmFkcywgcy10YXNxdWUuYWRiLAoJcy10YXNxdWUuYWRzLCBzLXRhc3Jlbi5hZGIsIHMtdGFzcmVuLmFkcywgcy10YXNyZXMuYWRzLAoJcy10YXNzdGEuYWRiLCBzLXRhc3N0YS5hZHMsIHMtdGFzdXRpLmFkYiwgcy10YXN1dGkuYWRzLAoJcy10YXRhYXQuYWRiLCBzLXRhdGFhdC5hZHMsIHMtdHBpbm9wLmFkYiwgcy10cGlub3AuYWRzLAoJcy10cG9iZW4uYWRiLCBzLXRwb2Jlbi5hZHMsIHMtdHBvYm9wLmFkYiwgcy10cG9ib3AuYWRzLAoJcy10cG9zZW4uYWRiLCBzLXRwb3Nlbi5hZHMsIHMtdHJhY2ViLmFkYiwgcy10cmFjZWIuYWRzLAoJc3RyaW5ndC5hZGIsIHN0cmluZ3QuYWRzLCBzdHJpbmd0LmgsIHN0eWxlLmFkcywKCXN0eWxlc3cuYWRiLCBzdHlsZXN3LmFkcywgcy11bnN0eXAuYWRzLCBzLXZhZmxvcC5hZHMsCglzLXZhbHJlYS5hZGIsIHMtdmFsdXRpLmFkYiwgcy12ZXJjb24uYWRiLCBzLXZtZXh0YS5hZGIsCglzLXdjaGNudi5hZHMsIHMtd2NoY29uLmFkcywgcy13aWRjaGEuYWRiLCBzd2l0Y2guYWRiLAoJc3dpdGNoLmFkcywgc3dpdGNoLWIuYWRiLCBzd2l0Y2gtYy5hZGIsIHN3aXRjaC1tLmFkYiwKCXMtd3dkY2hhLmFkYiwgcy13d2R3Y2guYWRiLCBzeXNkZXAuYywgc3lzdGVtLmFkcywKCXRhYmxlLmFkYiwgdGFibGUuYWRzLCB0YXJncGFybS5hZGIsIHRhcmdwYXJtLmFkcywKCXRhcmd0eXBzLmMsIHRidWlsZC5hZGIsIHRidWlsZC5hZHMsIHRyYWNlYmFrLmMsCgl0cmFucy5jLCB0cmVlX2lvLmFkYiwgdHJlZXByLmFkYiwgdHJlZXBycy5hZHQsCgl0dHlwZXMuYWRzLCB0eXBlcy5hZHMsIHR5cGVzLmgsIHVpbnRwLmFkYiwKCXVpbnRwLmFkcywgdWludHAuaCwgdW5hbWUuYWRiLCB1cmVhbHAuYWRiLAoJdXJlYWxwLmFkcywgdXJlYWxwLmgsIHVzYWdlLmFkYiwgdXRpbHMyLmMsCgl1dGlscy5jLCB2YWxpZHN3LmFkYiwgdmFsaWRzdy5hZHMsIHdpZGVjaGFyLmFkYiwKCXhlaW5mby5hZGIsIHhubWFrZS5hZGIsIHhyZWZfbGliLmFkYiwgeHJlZl9saWIuYWRzLAoJeHJfdGFibHMuYWRiLCB4cl90YWJscy5hZHMsIHh0cmVlcHJzLmFkYiwgeHNuYW1lcy5hZGIsCgllaW5mby5oLCBzaW5mby5oLCB0cmVlcHJzLmFkcywgbm1ha2UuYWRzLCBubWFrZS5hZGIsCglnbmF0dnNuLmFkczogTWVyZ2Ugd2l0aCBBQ1QgdHJlZS4KCgkqIGduYXR2c24uYWRiOiBSZXdyaXR0ZW4gaW4gYSBzaW1wbGVyIGFuZCBtb3JlIGVmZmljaWVudCB3YXkuCgoyMDAzLTEwLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChnbmF0X3VnX3VueC5pbmZvKTogQWRkIGRlcGVuZGVuY3kgb24gc3RtcC1kb2NvYmpkaXIuCgkoZ25hdF91Z192bXguaW5mbyk6IExpa2V3aXNlLgoJKGduYXRfdWdfdnh3LmluZm8pOiBMaWtld2lzZS4KCShnbmF0X3VnX3dudC5pbmZvKTogTGlrZXdpc2UuCgkoZ25hdF9ybS5pbmZvKTogTGlrZXdpc2UuCgkoZ25hdC1zdHlsZS5pbmZvKTogTGlrZXdpc2UuCgoJKiBNYWtlLWxhbmcuaW4gKGFkYS5pbnN0YWxsLWluZm8pOiBSZW1vdmUgdGFyZ2V0LgoJKGluZm8pOiBOZXcgdGFyZ2V0LgoJKGluc3RhbGwtaW5mbyk6IExpa2V3aXNlLgoJKGduYXRfdWdfdW54LmluZm8pOiBTaW1wbGlmeSBydWxlLgoJKGduYXRfdWdfdm14LmluZm8pOiBMaWtld2lzZS4KCShnbmF0X3VnX3Z4dy5pbmZvKTogTGlrZXdpc2UuCgkoZ25hdF91Z193bnQuaW5mbyk6IExpa2V3aXNlLgoJKGduYXRfcm0uaW5mbyk6IExpa2V3aXNlLgoJKGduYXQtc3R5bGUuaW5mbyk6IExpa2V3aXNlLgoKMjAwMy0xMC0xNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW46IFJlcGxhY2UgdXNlcyBvZiAkKHRhcmdldF9hbGlhcykgd2l0aAoJJCh0YXJnZXRfbm9uY2Fub25pY2FsKS4KCSogYWRhL01ha2VmaWxlLmluOiBSZW1vdmUgdW51c2VkIG1lbnRpb24gb2YgJCh0YXJnZXRfYWxpYXMpLgoKMjAwMy0xMC0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhLmluZm8pOiBSZXBsYWNlIHdpdGggLi4uCgkoaW5mbyk6IC4uLiB0aGlzLgoJKGFkYS5kdmkpOiBSZXBsYWNlIHdpdGggLi4uCgkoZHZpKTogLi4uIHRoaXMuCgoyMDAzLTA5LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJhbnMuYyAoZ2lnaSk6IFVzZSBSRUFMX0FSSVRITUVUSUMsIG5vdCBSRUFMX1ZBTFVFX0FUT0YsIHRvCglpbml0aWFsaXplIGRjb25zdHA1IGFuZCBkY29uc3RtcDUuCgoyMDAzLTA5LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pOiBVcGRhdGUgY2FsbCB0byBleHBhbmRfYXNtX29wZXJhbmRzLgoKMjAwMy0wOS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyYW5zLmMsIHV0aWxzLmM6IFJldmVydC4KCjIwMDMtMDktMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmFucy5jLCB1dGlscy5jOiBVcGRhdGUgZm9yIERFQ0xfU09VUkNFX0xPQ0FUSU9OIHJlbmFtZSBhbmQKCWNoYW5nZSB0byBjb25zdC4KCjIwMDMtMDktMDQgIE1pY2hhZWwgTWF0eiAgPG1hdHpAc3VzZS5kZT4KCgkqIG1pc2MuYzogSW5jbHVkZSAidGFyZ2V0LmgiLgoJKiBNYWtlLWxhbmcuaW4gKG1pc2Mubyk6IEFkZCBkZXBlbmRlbmN5IG9uIHRhcmdldC5oLgoKMjAwMy0wOS0wMyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBtaXNjLmMgKGRlZmF1bHRfcGFzc19ieV9yZWYpOiBDb252ZXJ0IHRvIGNhbGxzLnJldHVybl9pbl9tZW1vcnkKCWhvb2suCgoyMDAzLTA4LTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBzdWJzdGl0dXRpb25zIHRvIG1hdGNoIGNoYW5nZXMgdG8KCWNvbmZpZ3VyZS4gIFVzZSBpbmNsdWRlIGRpcmVjdGl2ZXMgaW5zdGVhZCBvZiBALWluc2VydGlvbnMKCXRvIHJlYWQgaW4gaG9zdCBhbmQgdGFyZ2V0IGZyYWdtZW50cy4gIEFkZCBhIHJ1bGUgdG8KCXJlZ2VuZXJhdGUgYWRhL01ha2VmaWxlLgoKMjAwMy0wNy0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy1vcHRpb25zLmg6IFJlbW92ZS4KCSogbGFuZy5vcHQ6IEFkZCBoZWxwIHRleHQuCgoyMDAzLTA3LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJhbnMuYyAoYnVpbGRfdW5pdF9lbGFiLCBzZXRfbGluZW5vKTogQWRqdXN0IGVtaXRfbGluZV9ub3RlCgljYWxscy4KCjIwMDMtMDctMDYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIG1pc2MuYyAoZ25hdF9oYW5kbGVfb3B0aW9uKTogRG9uJ3QgaGFuZGxlIGZpbGVuYW1lcy4KCjIwMDMtMDctMDQgIEguSi4gTHUgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZS1sYW5nLmluOiBSZXBsYWNlIFBXRCB3aXRoIFBXRF9DT01NQU5ELgoJKiBNYWtlZmlsZS5hZGFsaWI6IExpa2V3aXNlLgoJKiBNYWtlZmlsZS5pbjogTGlrZXdpc2UuCgoyMDAzLTA3LTA0ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBtaXNjLmMgKGduYXRfYXJndik6IFJldmVydCBsYXN0IGNoYW5nZS4KCShnbmF0X2hhbmRsZV9vcHRpb24sIGduYXRfaW5pdF9vcHRpb25zKTogQ29weSBhcmd1bWVudHMuCgoyMDAzLTA3LTAzICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBtaXNjLmMgKGduYXRfYXJndik6IE1ha2UgY29uc3QuCgoyMDAzLTA3LTAyICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBtaXNjLmMgKHNhdmVfYXJnYywgc2F2ZV9hcmd2KTogS2VlcCBub24tc3RhdGljIQoKMjAwMy0wNy0wMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbWlzYy5jIChzYXZlX2FyZ2MsIHNhdmVfYXJndik6IE1ha2Ugc3RhdGljLgoJKGduYXRfaW5pdF9vcHRpb25zKTogTmV3IHByb3RvdHlwZS4KCShnbmF0X2luaXRfb3B0aW9ucyk6IFVwZGF0ZS4KCjIwMDMtMDctMDEgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGduYXRfdWcudGV4aTogUmVtb3ZlIHVubGlrZWx5IGNoYXJhY3RlcnMgZnJvbSBAdmFycy4KCSogZ25hdF91Z192bXMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDMtMDYtMjcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtaXNjLmMgKHJlY29yZF9jb2RlX3Bvc2l0aW9uKTogQWRqdXN0IGVtaXRfbm90ZSBjYWxsLgoKMjAwMy0wNi0yNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X2hhbmRsZV9vcHRpb24pOiBEb24ndCBjaGVjayBmb3IgbWlzc2luZyBhcmd1bWVudHMuCgoyMDAzLTA2LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdXRpbHMuYyAoZW5kX3N1YnByb2dfYm9keSk6IEFkanVzdCBleHBhbmRfZnVuY3Rpb25fZW5kIGNhbGwuCgoyMDAzLTA2LTE2ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX01haW5fQWRhLCBHZW5fTWFpbl9DKTogRG8gbm90IHRlc3QKCUJpbmRfTWFpbl9Qcm9ncmFtLgoKMjAwMy0wNi0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5vcHQ6IERlY2xhcmUgQWRhLgoJKiBtaXNjLmMgKGduYXRfaW5pdF9vcHRpb25zKTogVXBkYXRlLgoKMjAwMy0wNi0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHV0aWxzLmMgKGJlZ2luX3N1YnByb2dfYm9keSk6IEFkanVzdCBpbml0X2Z1bmN0aW9uX3N0YXJ0IGNhbGwuCgoyMDAzLTA2LTE0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZSB0byB1c2Ugb3B0aW9ucy5jIGFuZCBvcHRpb25zLmguCgkqIG1pc2MuYzogSW5jbHVkZSBvcHRpb25zLmggbm90IGFvcHRpb25zLmguCgkoZ25hdF9oYW5kbGVfb3B0aW9uKTogQWJvcnQgb24gdW5yZWNvZ25pemVkIHN3aXRjaC4KCShnbmF0X2luaXRfb3B0aW9ucyk6IFJlcXVlc3QgQWRhIHN3aXRjaGVzLgoKMjAwMy0wNi0xNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbGFuZy5vcHQ6IEFkZCAtV2FsbC4KCSogbWlzYy5jIChnbmF0X2hhbmRsZV9vcHRpb24pOiBIYW5kbGUgaXQuCgoyMDAzLTA2LTEyICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IEZpeCB3YXJuaW5ncy4KCjIwMDMtMDYtMTEgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoZ25hdGJpbmQpOiBSZW1vdmUgJChMSUJJQkVSVFkpLgoKMjAwMy0wNi0xMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZS1sYW5nLmluOiBVcGRhdGUgdG8gaGFuZGxlIGNvbW1hbmQtbGluZSBvcHRpb25zLgoJKiBsYW5nLm9wdDogTmV3IGZpbGUuCgkqIG1pc2MuYzogSW5jbHVkZSBhb3B0aW9ucy5oLgoJKGNsX29wdGlvbnNfY291bnQsIGNsX29wdGlvbnMpOiBSZW1vdmUuCgkoZ25hdF9oYW5kbGVfb3B0aW9uKTogTmV3LgoJKGduYXRfZGVjb2RlX29wdGlvbik6IFJlbW92ZS4KCShMQU5HX0hPT0tTX0RFQ09ERV9PUFRJT04pOiBSZW1vdmUuCgkoTEFOR19IT09LU19IQU5ETEVfT1BUSU9OKTogT3ZlcnJpZGUuCgoyMDAzLTA2LTEwICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGluaXQuYywgbWlzYy5jLCB0cmFucy5jLCB1dGlscy5jOiBSZW1vdmUgZGVhZCBjb2RlLgoKMjAwMy0wNi0wOSAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogUmVwbGFjZSAiaG9zdF9jYW5vbmljYWwiIHdpdGggImhvc3QiIGZvciBhdXRvY29uZgoJc3Vic3RpdHV0aW9uLgoKMjAwMy0wNi0wOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogTWFrZS1sYW5nLmluOiBVcGRhdGUuCgkqIG1pc2MuYzogSW5jbHVkZSBvcHRzLmguIERlZmluZSBjbF9vcHRpb25zX2NvdW50IGFuZCBjbF9vcHRpb25zLgoKMjAwMy0wNi0wNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X2luaXRfb3B0aW9ucyk6IFVwZGF0ZS4KCjIwMDMtMDYtMDUgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhL2JfZ25hdGIuby13YXJuKTogUmVtb3ZlLgoJKiBiaW5kZ2VuLmFkYiAoR2VuX01haW5fQyk6IE1hcmsgZW5zdXJlX3JlZmVyZW5jZSB3aXRoCglfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLgoKMjAwMy0wNi0wNSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogTWFrZS1sYW5nLmluOiAgQWRkIHN1cHBvcnQgZm9yIHN0YWdlcHJvZmlsZSBhbmQgc3RhZ2VmZWVkYmFjawoKMjAwMy0wNi0wNSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogYmluZGdlbi5hZGIgKEdlbl9BZGFmaW5hbF9DLCBHZW5fQWRhaW5pdF9DLCBHZW5fRWxhYl9EZWZzX0MpCgkoR2VuX01haW5fQywgR2VuX091dHB1dF9GaWxlX0MpOiBHZW5lcmF0ZSBJU08gQy4KCjIwMDMtMDYtMDQgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGduYXRfdWcudGV4aSAoVGhlIEdOQVQgUnVuLVRpbWUgTGlicmFyeSBCdWlsZGVyIGduYXRsYnIpOgoJUmVtb3ZlIG5vbi1WTVMgZGlyZWN0aXZlLgoJKFN3aXRjaGVzIGZvciBnbmF0bGJyLCBPcHRpbWl6YXRpb24gTGV2ZWxzKTogUmVtb3ZlIG5vbi1WTVMKCWFsdGVybmF0aXZlcy4KCShFeGFtcGxlcyBvZiBnbmF0bHMgVXNhZ2UpOiBSZW1vdmUgVk1TIGFsdGVybmF0aXZlLgoKMjAwMy0wNi0wNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS85OTUzCgkqIDVoc3lzdGVtLmFkczogUmVtb3ZlIHByYWdtYSBMaW5rZXJfT3B0aW9uIGZvciBwdGhyZWFkcyBsaWJyYXJ5LAoJYW5kIHR1cm4gWkNYX0J5X0RlZmF1bHQgYmFjayB0byBGYWxzZSBzaW5jZSB0aGUgdW5kZXJseWluZyBzdXBwb3J0CglpcyBub3QgcXVpdGUgdGhlcmUgeWV0LgoKMjAwMy0wNi0wMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogdXRpbHMuYyAoZmluaXNoX3JlY29yZF90eXBlKTogUmVtb3ZlIHVzYWdlcyBvZiBST1VORF9UWVBFX1NJWkUKCWFuZCBST1VORF9UWVBFX1NJWkVfVU5JVC4KCjIwMDMtMDUtMjIgICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiBnbmF0X3JtLnRleGkgOiBSZW1vdmUgcmVmZXJlbmNlIHRvIEFkYSBDb3JlIFRlY2hub2xvZ2llcy4KCjIwMDMtMDUtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSk6IFVzZSBsb2NhdGlvbl90IGFuZCBpbnB1dF9sb2NhdGlvbgoJZGlyZWN0bHkuCgkoYnVpbGRfdW5pdF9lbGFiKTogTGlrZXdpc2UuCgkqIHV0aWxzLmMgKGNyZWF0ZV9sYWJlbF9kZWNsKTogTGlrZXdpc2UuCgoyMDAzLTA1LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGJ1aWxkX3VuaXRfZWxhYiwKCXNldF9saW5lbm8pOiBSZW5hbWUgbGluZW5vIHRvIGlucHV0X2xpbmUuCgkqIHV0aWxzLmMgKHB1c2hkZWNsLCBjcmVhdGVfbGFiZWxfZGVjbCwgYmVnaW5fc3VicHJvZ19ib2R5LAoJZW5kX3N1YnByb2dfYm9keSk6IExpa2V3aXNlLgoJKiB1dGlsczIuYyAoYnVpbGRfY2FsbF9yYWlzZSk6IExpa2V3aXNlLgoKMjAwMy0wNS0wMSAgTGF1cmVudCBHdWVyYnkgPGd1ZXJieUBhY20ub3JnPgoKCVBSIGFkYS8xMDU0NgoJKiA1aW9zaW50ZS5hZHM6IEluY3JlYXNlIHB0aHJlYWRfY29uZF90IHNpemUgdG8gbWF0Y2ggcmVjZW50CglMaW51eFRocmVhZCBhbmQgTlBUTCB2ZXJzaW9uLCBtZXJnZSBmcm9tIEFDVC4KCjIwMDMtMDQtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB1dGlscy5jIChjb252ZXJ0KTogTm8gbmVlZCB0byBjbGVhciBUUkVFX0NTVF9SVEwuCgoyMDAzLTA0LTIzICAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogMWFleGNlcHQuYWRiLCAxYWV4Y2VwdC5hZHMsIDFpYy5hZHMsIDFzc2Vjc3RhLmFkYiwKCTFzc2Vjc3RhLmFkcywgMzFzb2Njb24uYWRzLCAzMXNvbGlvcC5hZHMsIDNhc29jY29uLmFkcywKCTNic29jY29uLmFkcywgM2dzb2Njb24uYWRzLCAzaHNvY2Nvbi5hZHMsIDNzc29jY29uLmFkcywKCTNzc29saW9wLmFkcywgM3dzb2Njb24uYWRzLCAzd3NvY3RoaS5hZGIsIDN3c29jdGhpLmFkcywKCTN3c29saW9wLmFkcywgNDFpbnRuYW0uYWRzLCA0MmludG5hbS5hZHMsIDRhaW50bmFtLmFkcywKCTRjaW50bmFtLmFkcywgNGRpbnRuYW0uYWRzLCA0Z2ludG5hbS5hZHMsIDRoZXhjcG9sLmFkYiwKCTRoaW50bmFtLmFkcywgNGxpbnRuYW0uYWRzLCA0bWludG5hbS5hZHMsIDRuaW50bmFtLmFkcywKCTRvaW50bmFtLmFkcywgNG9udW1hdXguYWRzLCA0cGludG5hbS5hZHMsIDRyaW50bmFtLmFkcywKCTRzaW50bmFtLmFkcywgNHVpbnRuYW0uYWRzLCA0dmNhbGRlbC5hZGIsIDR2Y2FsZW5kLmFkYiwKCTR2Y2FsZW5kLmFkcywgNHZpbnRuYW0uYWRzLCA0d2NhbGVuZC5hZGIsIDR3ZXhjcG9sLmFkYiwKCTR3aW50bmFtLmFkcywgNHppbnRuYW0uYWRzLCA0em51bWF1eC5hZHMsIDR6c3l0YWNvLmFkYiwKCTR6c3l0YWNvLmFkcywgNTFvc2ludGUuYWRiLCA1MW9zaW50ZS5hZHMsIDUyb3NpbnRlLmFkYiwKCTUyb3NpbnRlLmFkcywgNTJzeXN0ZW0uYWRzLCA1M29zaW50ZS5hZHMsIDU0b3NpbnRlLmFkcywKCTVhbWFzdG9wLmFkYiwgNWFvc2ludGUuYWRiLCA1YW9zaW50ZS5hZHMsIDVhc3lzdGVtLmFkcywKCTVhdGFwcm9wLmFkYiwgNWF0YXNpbmYuYWRzLCA1YXRhc3ByaS5hZHMsIDVhdHBvcHNwLmFkYiwKCTVhdnh3b3JrLmFkcywgNWJvc2ludGUuYWRiLCA1Ym9zaW50ZS5hZHMsIDVic3lzdGVtLmFkcywKCTVjb3NpbnRlLmFkcywgNWRvc2ludGUuYWRzLCA1ZXN5c3RlbS5hZHMsIDVldHBvcHNlLmFkYiwKCTVmaW50bWFuLmFkYiwgNWZvc2ludGUuYWRzLCA1ZnN5c3RlbS5hZHMsIDVmdGFwcm9wLmFkYiwKCTVmdGFzaW5mLmFkcywgNWdpbnRlcnIuYWRiLCA1Z2ludG1hbi5hZGIsIDVnbWFzdG9wLmFkYiwKCTVnb3NpbnRlLmFkcywgNWdwcm9pbmYuYWRiLCA1Z3Byb2luZi5hZHMsIDVnc3lzdGVtLmFkcywKCTVndGFwcm9wLmFkYiwgNWd0YXNpbmYuYWRiLCA1Z3Rhc2luZi5hZHMsIDVndHBnZXRjLmFkYiwKCTVob3NpbnRlLmFkYiwgNWhvc2ludGUuYWRzLCA1aHBhcmFtZS5hZHMsIDVoc3lzdGVtLmFkcywKCTVodGFwcm9wLmFkYiwgNWh0YXNwcmkuYWRzLCA1aHRyYWNlYi5hZGIsIDVpb3NpbnRlLmFkYiwKCTVpb3NpbnRlLmFkcywgNWl0YXByb3AuYWRiLCA1aXRhc3ByaS5hZHMsIDVrc3lzdGVtLmFkcywKCTVrdnh3b3JrLmFkcywgNWxpbnRtYW4uYWRiLCA1bG1sLXRndC5hZGIsIDVsb3NpbnRlLmFkcywKCTVsc3lzdGVtLmFkcywgNW1vc2ludGUuYWRzLCA1bXZ4d29yay5hZHMsIDVuaW5tYW9wLmFkYiwKCTVuaW50bWFuLmFkYiwgNW5vc2ludGUuYWRzLCA1bnRhcHJvcC5hZGIsIDVudGFzcHJpLmFkcywKCTVvaW50ZXJyLmFkYiwgNW9tYXN0b3AuYWRiLCA1b29zaW50ZS5hZGIsIDVvb3NpbnRlLmFkcywKCTVvb3NwcmltLmFkYiwgNW9wYXJhbWUuYWRiLCA1b3N5c3RlbS5hZHMsIDVvdGFwcm9wLmFkYiwKCTVvdGFzcHJpLmFkcywgNXBvc2ludGUuYWRzLCA1cG9zcHJpbS5hZGIsIDVwdnh3b3JrLmFkcywKCTVxb3NpbnRlLmFkYiwgNXFvc2ludGUuYWRzLCA1cXN0YWNoZS5hZGIsIDVxdGFwcm9wLmFkYiwKCTVxdGFzcHJpLmFkcywgNXJvc2ludGUuYWRiLCA1cm9zaW50ZS5hZHMsIDVycGFyYW1lLmFkYiwKCTVzaW50bWFuLmFkYiwgNXNvc2ludGUuYWRiLCA1c29zaW50ZS5hZHMsIDVzcGFyYW1lLmFkYiwKCTVzc3lzdGVtLmFkcywgNXN0YXByb3AuYWRiLCA1c3Rhc2luZi5hZGIsIDVzdGFzaW5mLmFkcywKCTVzdGFzcHJpLmFkcywgNXN0cG9wc2UuYWRiLCA1c3Z4d29yay5hZHMsIDV0b3NpbnRlLmFkcywKCTV1aW50bWFuLmFkYiwgNXVvc2ludGUuYWRzLCA1dmFzdGhhbi5hZGIsIDV2aW5tYW9wLmFkYiwKCTV2aW50ZXJyLmFkYiwgNXZpbnRtYW4uYWRiLCA1dmludG1hbi5hZHMsIDV2bWFzdG9wLmFkYiwKCTV2b3NpbnRlLmFkYiwgNXZvc2ludGUuYWRzLCA1dm9zcHJpbS5hZGIsIDV2b3NwcmltLmFkcywKCTV2cGFyYW1lLmFkcywgNXZzeXN0ZW0uYWRzLCA1dnRhcHJvcC5hZGIsIDV2dGFzcHJpLmFkcywKCTV2dHBvcGRlLmFkYiwgNXZ0cG9wZGUuYWRzLCA1dnZhZmxvcC5hZGIsIDV3Z2xvbG9jLmFkYiwKCTV3aW50bWFuLmFkYiwgNXdtZW1vcnkuYWRiLCA1d29zaW50ZS5hZHMsIDV3b3NwcmltLmFkYiwKCTV3c3lzdGVtLmFkcywgNXd0YXByb3AuYWRiLCA1d3Rhc3ByaS5hZHMsIDV5c3lzdGVtLmFkcywKCTV6aW50ZXJyLmFkYiwgNXppbnRtYW4uYWRiLCA1em9zaW50ZS5hZGIsIDV6b3NpbnRlLmFkcywKCTV6b3NwcmltLmFkYiwgNXpzeXN0ZW0uYWRzLCA1enRhcHJvcC5hZGIsIDZ2Y3BwLmFkYiwKCTZ2Y3N0cmVhLmFkYiwgNnZpbnRlcmYuYWRzLCA3c2lubWFvcC5hZGIsIDdzaW50bWFuLmFkYiwKCTdzb3NpbnRlLmFkYiwgN3Nvc3ByaW0uYWRiLCA3c3RhcHJvcC5hZGIsIDdzdGFzcHJpLmFkcywKCTdzdHBvcHNwLmFkYiwgN3N0cmFjZWIuYWRiLCA4Nm51bWF1eC5hZGIsIDg2bnVtYXV4LmFkcywKCTlkcnBjLmFkYiwgYS1hc3RhY28uYWRiLCBhLWFzdGFjby5hZHMsIGEtY2FsZGVsLmFkYiwKCWEtY2FsZGVsLmFkcywgYS1jYWxlbmQuYWRiLCBhLWNhbGVuZC5hZHMsIGEtY2hhaGFuLmFkYiwKCWEtY2hhaGFuLmFkcywgYS1jaGFyYWMuYWRzLCBhLWNobGF0MS5hZHMsIGEtY2hsYXQ5LmFkcywKCWEtY29saWVuLmFkYiwgYS1jb2xpZW4uYWRzLCBhLWNvbGlyZS5hZGIsIGEtY29saXJlLmFkcywKCWEtY29tbGluLmFkYiwgYS1jb21saW4uYWRzLCBhLWN3aWxhMS5hZHMsIGEtY3dpbGE5LmFkcywKCWEtZGVjaW1hLmFkYiwgYS1kZWNpbWEuYWRzLCBhLWRpb2NzdC5hZGIsIGEtZGlvY3N0LmFkcywKCWEtZGlyZWlvLmFkYiwgYS1kaXJlaW8uYWRzLCBhLWR5bnByaS5hZGIsIGEtZHlucHJpLmFkcywKCWEtZWludW9jLmFkYiwgYS1laW51b2MuYWRzLCBhLWV4Y2VwdC5hZGIsIGEtZXhjZXB0LmFkcywKCWEtZXhjcG9sLmFkYiwgYS1leGN0cmEuYWRiLCBhLWV4Y3RyYS5hZHMsIGEtZmlsaWNvLmFkYiwKCWEtZmlsaWNvLmFkcywgYS1maW5hbGkuYWRiLCBhLWZpbmFsaS5hZHMsIGEtZmx0ZWlvLmFkcywKCWEtZnd0ZWlvLmFkcywgYS1pbnRlaW8uYWRzLCBhLWludGVyci5hZGIsIGEtaW50ZXJyLmFkcywKCWEtaW50bmFtLmFkcywgYS1pbnRzaWcuYWRiLCBhLWludHNpZy5hZHMsIGEtaW9leGNlLmFkcywKCWEtaXd0ZWlvLmFkcywgYS1sZnRlaW8uYWRzLCBhLWxmd3Rpby5hZHMsIGEtbGl0ZWlvLmFkcywKCWEtbGl3dGlvLmFkcywgYS1sbGZ0aW8uYWRzLCBhLWxsZnd0aS5hZHMsIGEtbGxpdGlvLmFkcywKCWEtbGxpd3RpLmFkcywgYS1uY2VsZnUuYWRzLCBhLW5nY2VmdS5hZGIsIGEtbmdjZWZ1LmFkcywKCWEtbmdjb3R5LmFkYiwgYS1uZ2NvdHkuYWRzLCBhLW5nZWxmdS5hZGIsIGEtbmdlbGZ1LmFkcywKCWEtbmxjZWZ1LmFkcywgYS1ubGNvdHkuYWRzLCBhLW5sZWxmdS5hZHMsIGEtbmxsY2VmLmFkcywKCWEtbmxsY3R5LmFkcywgYS1ubGxlZnUuYWRzLCBhLW5zY2VmdS5hZHMsIGEtbnNjb3R5LmFkcywKCWEtbnNlbGZ1LmFkcywgYS1udWNvdHkuYWRzLCBhLW51ZGlyYS5hZGIsIGEtbnVkaXJhLmFkcywKCWEtbnVlbGZ1LmFkcywgYS1udWZscmEuYWRiLCBhLW51ZmxyYS5hZHMsIGEtbnVtYXV4LmFkcywKCWEtbnVtZXJpLmFkcywgYS1yZWF0aW0uYWRiLCBhLXJlYXRpbS5hZHMsIGEtcmV0aWRlLmFkYiwKCWEtcmV0aWRlLmFkcywgYS1zZXF1aW8uYWRiLCBhLXNlcXVpby5hZHMsIGEtc2Z0ZWlvLmFkcywKCWEtc2Z3dGlvLmFkcywgYS1zaW9jc3QuYWRiLCBhLXNpb2NzdC5hZHMsIGEtc2l0ZWlvLmFkcywKCWEtc2l3dGlvLmFkcywgYS1zc2ljc3QuYWRiLCBhLXNzaWNzdC5hZHMsIGEtc3NpdGlvLmFkcywKCWEtc3Npd3RpLmFkcywgYS1zdG1hY28uYWRzLCBhLXN0b3Jpby5hZGIsIGEtc3RvcmlvLmFkcywKCWEtc3RyYm91LmFkYiwgYS1zdHJib3UuYWRzLCBhLXN0cmVhbS5hZHMsIGEtc3RyZml4LmFkYiwKCWEtc3RyZml4LmFkcywgYS1zdHJpbmcuYWRzLCBhLXN0cm1hcC5hZGIsIGEtc3RybWFwLmFkcywKCWEtc3Ryc2VhLmFkYiwgYS1zdHJzZWEuYWRzLCBhLXN0cnVuYi5hZGIsIGEtc3RydW5iLmFkcywKCWEtc3RzdGlvLmFkYiwgYS1zdHN0aW8uYWRzLCBhLXN0dW5hdS5hZGIsIGEtc3R1bmF1LmFkcywKCWEtc3R3aWJvLmFkYiwgYS1zdHdpYm8uYWRzLCBhLXN0d2lmaS5hZGIsIGEtc3R3aWZpLmFkcywKCWEtc3R3aW1hLmFkYiwgYS1zdHdpbWEuYWRzLCBhLXN0d2lzZS5hZGIsIGEtc3R3aXNlLmFkcywKCWEtc3R3aXVuLmFkYiwgYS1zdHdpdW4uYWRzLCBhLXN1dGVpby5hZGIsIGEtc3V0ZWlvLmFkcywKCWEtc3dtd2NvLmFkcywgYS1zd3V3dGkuYWRiLCBhLXN3dXd0aS5hZHMsIGEtc3l0YWNvLmFkYiwKCWEtc3l0YWNvLmFkcywgYS10YWdzLmFkYiwgYS10YWdzLmFkcywgYS10YXNhdHQuYWRiLAoJYS10YXNhdHQuYWRzLCBhLXRhc2lkZS5hZGIsIGEtdGFzaWRlLmFkcywgYS10ZWlvZWQuYWRiLAoJYS10ZWlvZWQuYWRzLCBhLXRleHRpby5hZGIsIGEtdGV4dGlvLmFkcywgYS10aWNvYXUuYWRiLAoJYS10aWNvYXUuYWRzLCBhLXRpY29pby5hZGIsIGEtdGljb2lvLmFkcywgYS10aWRlYXUuYWRiLAoJYS10aWRlYXUuYWRzLCBhLXRpZGVpby5hZGIsIGEtdGlkZWlvLmFkcywgYS10aWVuYXUuYWRiLAoJYS10aWVuYXUuYWRzLCBhLXRpZW5pby5hZGIsIGEtdGllbmlvLmFkcywgYS10aWZpaW8uYWRiLAoJYS10aWZpaW8uYWRzLCBhLXRpZmxhdS5hZGIsIGEtdGlmbGF1LmFkcywgYS10aWZsaW8uYWRiLAoJYS10aWZsaW8uYWRzLCBhLXRpZ2VhdS5hZGIsIGEtdGlnZWF1LmFkcywgYS10aWluYXUuYWRiLAoJYS10aWluYXUuYWRzLCBhLXRpaW5pby5hZGIsIGEtdGlpbmlvLmFkcywgYS10aW1vYXUuYWRiLAoJYS10aW1vYXUuYWRzLCBhLXRpbW9pby5hZGIsIGEtdGltb2lvLmFkcywgYS10aW9jc3QuYWRiLAoJYS10aW9jc3QuYWRzLCBhLXRpdGVzdC5hZGIsIGEtdGl0ZXN0LmFkcywgYS11bmNjb24uYWRzLAoJYS11bmNkZWEuYWRzLCBhLXdpdGVpby5hZGIsIGEtd2l0ZWlvLmFkcywgYS13dGNvYXUuYWRiLAoJYS13dGNvYXUuYWRzLCBhLXd0Y29pby5hZGIsIGEtd3Rjb2lvLmFkcywgYS13dGNzdHIuYWRiLAoJYS13dGNzdHIuYWRzLCBhLXd0ZGVhdS5hZGIsIGEtd3RkZWF1LmFkcywgYS13dGRlaW8uYWRiLAoJYS13dGRlaW8uYWRzLCBhLXd0ZWRpdC5hZGIsIGEtd3RlZGl0LmFkcywgYS13dGVuYXUuYWRiLAoJYS13dGVuYXUuYWRzLCBhLXd0ZW5pby5hZGIsIGEtd3RlbmlvLmFkcywgYS13dGZpaW8uYWRiLAoJYS13dGZpaW8uYWRzLCBhLXd0ZmxhdS5hZGIsIGEtd3RmbGF1LmFkcywgYS13dGZsaW8uYWRiLAoJYS13dGZsaW8uYWRzLCBhLXd0Z2VhdS5hZGIsIGEtd3RnZWF1LmFkcywgYS13dGluYXUuYWRiLAoJYS13dGluYXUuYWRzLCBhLXd0aW5pby5hZGIsIGEtd3RpbmlvLmFkcywgYS13dG1vYXUuYWRiLAoJYS13dG1vYXUuYWRzLCBhLXd0bW9pby5hZGIsIGEtd3Rtb2lvLmFkcywgYS13dHRlc3QuYWRiLAoJYS13dHRlc3QuYWRzLCBhZGEtdHJlZS5oLCBhZGEuYWRzLCBhZGEuaCwKCWFkYWRlY29kZS5jLCBhZGFkZWNvZGUuaCwgYWxpLXV0aWwuYWRiLCBhbGktdXRpbC5hZHMsCglhbGkuYWRiLCBhbGkuYWRzLCBhbGxvYy5hZHMsIGFyZ3YuYywKCWF0cmVlLmFkYiwgYXRyZWUuYWRzLCBhdHJlZS5oLCBhdXgtaW8uYywKCWJhY2tfZW5kLmFkYiwgYmFja19lbmQuYWRzLCBiY2hlY2suYWRiLCBiY2hlY2suYWRzLAoJYmluZGUuYWRiLCBiaW5kZS5hZHMsIGJpbmRlcnIuYWRiLCBiaW5kZXJyLmFkcywKCWJpbmRnZW4uYWRiLCBiaW5kZ2VuLmFkcywgYmluZHVzZy5hZGIsIGJpbmR1c2cuYWRzLAoJYnV0aWwuYWRiLCBidXRpbC5hZHMsIGNhbC5jLCBjYWxlbmRhci5hZHMsCgljYXNpbmcuYWRiLCBjYXNpbmcuYWRzLCBjZWluZm8uYWRiLCBjaGVja3MuYWRiLAoJY2hlY2tzLmFkcywgY2lvLmMsIGNvbXBlcnIuYWRiLCBjb21wZXJyLmFkcywKCWNvbmZpZy1sYW5nLmluLCBjc2V0cy5hZGIsIGNzZXRzLmFkcywgY3NpbmZvLmFkYiwKCWNzdGFuZC5hZGIsIGNzdGFuZC5hZHMsIGN1aW50cC5jLCBkZWJ1Zy5hZGIsCglkZWJ1Zy5hZHMsIGRlYnVnX2EuYWRiLCBkZWJ1Z19hLmFkcywgZGVjLWlvLmFkYiwKCWRlYy1pby5hZHMsIGRlYy5hZHMsIGRlZnRhcmcuYywgZGlyZWN0aW8uYWRzLAoJZWluZm8uYWRiLCBlaW5mby5hZHMsIGVsaXN0cy5hZGIsIGVsaXN0cy5hZHMsCgllbGlzdHMuaCwgZXJybm8uYywgZXJyb3V0LmFkYiwgZXJyb3V0LmFkcywKCWV2YWxfZmF0LmFkYiwgZXZhbF9mYXQuYWRzLCBleGl0LmMsIGV4cF9hZ2dyLmFkYiwKCWV4cF9hZ2dyLmFkcywgZXhwX2F0dHIuYWRiLCBleHBfYXR0ci5hZHMsIGV4cF9jaDEwLmFkcywKCWV4cF9jaDExLmFkYiwgZXhwX2NoMTEuYWRzLCBleHBfY2gxMi5hZGIsIGV4cF9jaDEyLmFkcywKCWV4cF9jaDEzLmFkYiwgZXhwX2NoMTMuYWRzLCBleHBfY2gyLmFkYiwgZXhwX2NoMi5hZHMsCglleHBfY2gzLmFkYiwgZXhwX2NoMy5hZHMsIGV4cF9jaDQuYWRiLCBleHBfY2g0LmFkcywKCWV4cF9jaDUuYWRiLCBleHBfY2g1LmFkcywgZXhwX2NoNi5hZGIsIGV4cF9jaDYuYWRzLAoJZXhwX2NoNy5hZGIsIGV4cF9jaDcuYWRzLCBleHBfY2g4LmFkYiwgZXhwX2NoOC5hZHMsCglleHBfY2g5LmFkYiwgZXhwX2NoOS5hZHMsIGV4cF9jb2RlLmFkYiwgZXhwX2NvZGUuYWRzLAoJZXhwX2RidWcuYWRiLCBleHBfZGJ1Zy5hZHMsIGV4cF9kaXNwLmFkYiwgZXhwX2Rpc3AuYWRzLAoJZXhwX2Rpc3QuYWRiLCBleHBfZGlzdC5hZHMsIGV4cF9maXhkLmFkYiwgZXhwX2ZpeGQuYWRzLAoJZXhwX2ltZ3YuYWRiLCBleHBfaW1ndi5hZHMsIGV4cF9pbnRyLmFkYiwgZXhwX2ludHIuYWRzLAoJZXhwX3Bha2QuYWRiLCBleHBfcGFrZC5hZHMsIGV4cF9wcmFnLmFkYiwgZXhwX3ByYWcuYWRzLAoJZXhwX3NtZW0uYWRiLCBleHBfc21lbS5hZHMsIGV4cF9zdHJtLmFkYiwgZXhwX3N0cm0uYWRzLAoJZXhwX3Rzcy5hZGIsIGV4cF90c3MuYWRzLCBleHBfdXRpbC5hZGIsIGV4cF91dGlsLmFkcywKCWV4cF92ZnB0LmFkYiwgZXhwX3ZmcHQuYWRzLCBleHBhbmRlci5hZGIsIGV4cGFuZGVyLmFkcywKCWZtYXAuYWRiLCBmbWFwLmFkcywgZm5hbWUtc2YuYWRiLCBmbmFtZS1zZi5hZHMsCglmbmFtZS11Zi5hZGIsIGZuYW1lLXVmLmFkcywgZm5hbWUuYWRiLCBmbmFtZS5hZHMsCglmcmVlemUuYWRiLCBmcmVlemUuYWRzLCBmcm9udGVuZC5hZGIsIGZyb250ZW5kLmFkcywKCWctYXdrLmFkYiwgZy1hd2suYWRzLCBnLWJ1c29yYS5hZGIsIGctYnVzb3JhLmFkcywKCWctYnVzb3JnLmFkYiwgZy1idXNvcmcuYWRzLCBnLWNhbGVuZC5hZGIsIGctY2FsZW5kLmFkcywKCWctY2FzdXRpLmFkYiwgZy1jYXN1dGkuYWRzLCBnLWNhdGlpby5hZGIsIGctY2F0aWlvLmFkcywKCWctY2dpLmFkYiwgZy1jZ2kuYWRzLCBnLWNnaWNvby5hZGIsIGctY2dpY29vLmFkcywKCWctY2dpZGViLmFkYiwgZy1jZ2lkZWIuYWRzLCBnLWNvbWxpbi5hZGIsIGctY29tbGluLmFkcywKCWctY3JjMzIuYWRiLCBnLWNyYzMyLmFkcywgZy1jdXJleGMuYWRzLCBnLWRlYnBvby5hZGIsCglnLWRlYnBvby5hZHMsIGctZGVidXRpLmFkYiwgZy1kZWJ1dGkuYWRzLCBnLWRpb3BpdC5hZGIsCglnLWRpb3BpdC5hZHMsIGctZGlyb3BlLmFkYiwgZy1kaXJvcGUuYWRzLCBnLWR5bnRhYi5hZGIsCglnLWR5bnRhYi5hZHMsIGctZW5ibHNwLmFkYiwgZy1leGNlcHQuYWRzLCBnLWV4Y3RyYS5hZGIsCglnLWV4Y3RyYS5hZHMsIGctZXhwZWN0LmFkYiwgZy1leHBlY3QuYWRzLCBnLWZsb2Nvbi5hZHMsCglnLWhlc29yYS5hZGIsIGctaGVzb3JhLmFkcywgZy1oZXNvcmcuYWRiLCBnLWhlc29yZy5hZHMsCglnLWh0YWJsZS5hZGIsIGctaHRhYmxlLmFkcywgZy1pby5hZGIsIGctaW8uYWRzLAoJZy1pb19hdXguYWRiLCBnLWlvX2F1eC5hZHMsIGctbG9jZmlsLmFkcywgZy1tZDUuYWRiLAoJZy1tZDUuYWRzLCBnLW1vcmVleC5hZGIsIGctbW9yZWV4LmFkcywgZy1vc19saWIuYWRiLAoJZy1vc19saWIuYWRzLCBnLXJlZ2V4cC5hZGIsIGctcmVnZXhwLmFkcywgZy1yZWdpc3QuYWRzLAoJZy1yZWdwYXQuYWRiLCBnLXJlZ3BhdC5hZHMsIGctc29jY29uLmFkcywgZy1zb2NrZXQuYWRiLAoJZy1zb2NrZXQuYWRzLCBnLXNvY3RoaS5hZGIsIGctc29jdGhpLmFkcywgZy1zb2xpb3AuYWRzLAoJZy1zb3VpbmYuYWRzLCBnLXNwZWNoZS5hZGIsIGctc3BlY2hlLmFkcywgZy1zcGlwYXQuYWRiLAoJZy1zcGlwYXQuYWRzLCBnLXNwaXRiby5hZGIsIGctc3BpdGJvLmFkcywgZy1zcHRhYm8uYWRzLAoJZy1zcHRhaW4uYWRzLCBnLXNwdGF2cy5hZHMsIGctdGFibGUuYWRiLCBnLXRhYmxlLmFkcywKCWctdGFzbG9jLmFkYiwgZy10YXNsb2MuYWRzLCBnLXRocmVhZC5hZGIsIGctdGhyZWFkLmFkcywKCWctdHJhY2ViLmFkYiwgZy10cmFjZWIuYWRzLCBnLXRyYXN5bS5hZGIsIGctdHJhc3ltLmFkcywKCWdldF90YXJnLmFkYiwgZ2V0X3RhcmcuYWRzLCBnbmF0LXN0eWxlLnRleGksIGduYXQuYWRzLAoJZ25hdDFkcnYuYWRiLCBnbmF0MWRydi5hZHMsIGduYXRiaW5kLmFkYiwgZ25hdGJpbmQuYWRzLAoJZ25hdGJsLmMsIGduYXRjaG9wLmFkYiwgZ25hdGNtZC5hZGIsIGduYXRjbWQuYWRzLAoJZ25hdGRsbC5hZGIsIGduYXRmaW5kLmFkYiwgZ25hdGtyLmFkYiwgZ25hdGtyLmFkcywKCWduYXRsYnIuYWRiLCBnbmF0bGluay5hZGIsIGduYXRsaW5rLmFkcywgZ25hdGxzLmFkYiwKCWduYXRscy5hZHMsIGduYXRtYWtlLmFkYiwgZ25hdG1ha2UuYWRzLCBnbmF0bWVtLmFkYiwKCWduYXRuYW1lLmFkYiwgZ25hdG5hbWUuYWRzLCBnbmF0cHJlcC5hZGIsIGduYXRwcmVwLmFkcywKCWduYXRwc3RhLmFkYiwgZ25hdHZzbi5hZGIsIGduYXR2c24uYWRzLCBnbmF0eHJlZi5hZGIsCglobG8uYWRiLCBobG8uYWRzLCBob3N0cGFybS5hZHMsIGktYy5hZGIsCglpLWMuYWRzLCBpLWNleHRlbi5hZHMsIGktY29ib2wuYWRiLCBpLWNvYm9sLmFkcywKCWktY3BvaW50LmFkYiwgaS1jcG9pbnQuYWRzLCBpLWNwcC5hZGIsIGktY3BwLmFkcywKCWktY3N0cmVhLmFkYiwgaS1jc3RyZWEuYWRzLCBpLWNzdHJpbi5hZGIsIGktY3N0cmluLmFkcywKCWktZm9ydHJhLmFkYiwgaS1mb3J0cmEuYWRzLCBpLW9zMmVyci5hZHMsIGktb3MybGliLmFkYiwKCWktb3MybGliLmFkcywgaS1vczJzeW4uYWRzLCBpLW9zMnRoci5hZHMsIGktcGFjZGVjLmFkYiwKCWktcGFjZGVjLmFkcywgaS12eHdvcmsuYWRzLCBpbXB1bml0LmFkYiwgaW1wdW5pdC5hZHMsCglpbmxpbmUuYWRiLCBpbmxpbmUuYWRzLCBpbnRlcmZhYy5hZHMsIGlvZXhjZXB0LmFkcywKCWl0eXBlcy5hZGIsIGl0eXBlcy5hZHMsIGtydW5jaC5hZGIsIGtydW5jaC5hZHMsCglsYXlvdXQuYWRiLCBsYXlvdXQuYWRzLCBsaWItbGlzdC5hZGIsIGxpYi1sb2FkLmFkYiwKCWxpYi1sb2FkLmFkcywgbGliLXNvcnQuYWRiLCBsaWItdXRpbC5hZGIsIGxpYi11dGlsLmFkcywKCWxpYi13cml0LmFkYiwgbGliLXdyaXQuYWRzLCBsaWIteHJlZi5hZGIsIGxpYi14cmVmLmFkcywKCWxpYi5hZGIsIGxpYi5hZHMsIGxpdmUuYWRiLCBsaXZlLmFkcywKCW1hY2hjb2RlLmFkcywgbWFrZS5hZGIsIG1ha2UuYWRzLCBtYWtldXNnLmFkYiwKCW1ha2V1c2cuYWRzLCBtYXRoX2xpYi5hZGIsIG1kbGwtZmlsLmFkYiwgbWRsbC1maWwuYWRzLAoJbWRsbC11dGwuYWRiLCBtZGxsLXV0bC5hZHMsIG1kbGwuYWRiLCBtZGxsLmFkcywKCW1lbXJvb3QuYWRiLCBtZW1yb290LmFkcywgbWVtdHJhY2suYWRiLCBtbGliLWZpbC5hZGIsCgltbGliLWZpbC5hZHMsIG1saWItcHJqLmFkYiwgbWxpYi1wcmouYWRzLCBtbGliLXRndC5hZGIsCgltbGliLXRndC5hZHMsIG1saWItdXRsLmFkYiwgbWxpYi11dGwuYWRzLCBtbGliLmFkYiwKCW1saWIuYWRzLCBuYW1ldC5hZGIsIG5hbWV0LmFkcywgbmxpc3RzLmFkYiwKCW5saXN0cy5hZHMsIG9wdC5hZGIsIG9wdC5hZHMsIG9zaW50LWIuYWRiLAoJb3NpbnQtYi5hZHMsIG9zaW50LWMuYWRiLCBvc2ludC1jLmFkcywgb3NpbnQtbC5hZGIsCglvc2ludC1sLmFkcywgb3NpbnQtbS5hZGIsIG9zaW50LW0uYWRzLCBvc2ludC5hZGIsCglvc2ludC5hZHMsIG91dHB1dC5hZGIsIG91dHB1dC5hZHMsIHBhci1jaDEwLmFkYiwKCXBhci1jaDExLmFkYiwgcGFyLWNoMTIuYWRiLCBwYXItY2gxMy5hZGIsIHBhci1jaDIuYWRiLAoJcGFyLWNoMy5hZGIsIHBhci1jaDQuYWRiLCBwYXItY2g1LmFkYiwgcGFyLWNoNi5hZGIsCglwYXItY2g3LmFkYiwgcGFyLWNoOC5hZGIsIHBhci1jaDkuYWRiLCBwYXItZW5kaC5hZGIsCglwYXItbGFibC5hZGIsIHBhci1sb2FkLmFkYiwgcGFyLXByYWcuYWRiLCBwYXItc3luYy5hZGIsCglwYXItdGNoay5hZGIsIHBhci11dGlsLmFkYiwgcGFyLmFkYiwgcGFyLmFkcywKCXByai1hdHRyLmFkYiwgcHJqLWF0dHIuYWRzLCBwcmotY29tLmFkYiwgcHJqLWNvbS5hZHMsCglwcmotZGVjdC5hZGIsIHByai1kZWN0LmFkcywgcHJqLWVudi5hZGIsIHByai1lbnYuYWRzLAoJcHJqLWV4dC5hZGIsIHByai1leHQuYWRzLCBwcmotbWFrci5hZGIsIHByai1tYWtyLmFkcywKCXByai1ubXNjLmFkYiwgcHJqLW5tc2MuYWRzLCBwcmotcGFycy5hZGIsIHByai1wYXJzLmFkcywKCXByai1wYXJ0LmFkYiwgcHJqLXBhcnQuYWRzLCBwcmotcHAuYWRiLCBwcmotcHAuYWRzLAoJcHJqLXByb2MuYWRiLCBwcmotcHJvYy5hZHMsIHByai1zdHJ0LmFkYiwgcHJqLXN0cnQuYWRzLAoJcHJqLXRyZWUuYWRiLCBwcmotdHJlZS5hZHMsIHByai11dGlsLmFkYiwgcHJqLXV0aWwuYWRzLAoJcHJqLmFkYiwgcHJqLmFkcywgcmVwaW5mby5hZGIsIHJlcGluZm8uYWRzLAoJcmVzdHJpY3QuYWRiLCByZXN0cmljdC5hZHMsIHJpZGVudC5hZHMsIHJ0c2ZpbmQuYWRiLAoJcnRzZmluZC5hZHMsIHMtYWRkaW1hLmFkYiwgcy1hZGRpbWEuYWRzLCBzLWFyaXQ2NC5hZGIsCglzLWFyaXQ2NC5hZHMsIHMtYXNzZXJ0LmFkYiwgcy1hc3NlcnQuYWRzLCBzLWFzdGhhbi5hZGIsCglzLWFzdGhhbi5hZHMsIHMtYXRhY2NvLmFkYiwgcy1hdGFjY28uYWRzLCBzLWF1eGRlYy5hZGIsCglzLWF1eGRlYy5hZHMsIHMtYml0b3BzLmFkYiwgcy1iaXRvcHMuYWRzLCBzLWNoZXBvby5hZHMsCglzLWNyYzMyLmFkYiwgcy1jcmMzMi5hZHMsIHMtZGlyZWlvLmFkYiwgcy1kaXJlaW8uYWRzLAoJcy1lcnJyZXAuYWRiLCBzLWVycnJlcC5hZHMsIHMtZXhjZXB0LmFkcywgcy1leGN0YWIuYWRiLAoJcy1leGN0YWIuYWRzLCBzLWV4bmZsdC5hZHMsIHMtZXhuZ2VuLmFkYiwgcy1leG5nZW4uYWRzLAoJcy1leG5pbnQuYWRzLCBzLWV4bmxmbC5hZHMsIHMtZXhubGluLmFkcywgcy1leG5sbGYuYWRzLAoJcy1leG5sbGkuYWRzLCBzLWV4bnNmbC5hZHMsIHMtZXhuc2luLmFkcywgcy1leG5zc2kuYWRzLAoJcy1leHBmbHQuYWRzLCBzLWV4cGdlbi5hZGIsIHMtZXhwZ2VuLmFkcywgcy1leHBpbnQuYWRzLAoJcy1leHBsZmwuYWRzLCBzLWV4cGxpbi5hZHMsIHMtZXhwbGxmLmFkcywgcy1leHBsbGkuYWRzLAoJcy1leHBsbHUuYWRiLCBzLWV4cGxsdS5hZHMsIHMtZXhwbW9kLmFkYiwgcy1leHBtb2QuYWRzLAoJcy1leHBzZmwuYWRzLCBzLWV4cHNpbi5hZHMsIHMtZXhwc3NpLmFkcywgcy1leHB1bnMuYWRiLAoJcy1leHB1bnMuYWRzLCBzLWZhdGZsdC5hZHMsIHMtZmF0Z2VuLmFkYiwgcy1mYXRnZW4uYWRzLAoJcy1mYXRsZmwuYWRzLCBzLWZhdGxsZi5hZHMsIHMtZmF0c2ZsLmFkcywgcy1maWNvYmwuYWRzLAoJcy1maWxlaW8uYWRiLCBzLWZpbGVpby5hZHMsIHMtZmluaW1wLmFkYiwgcy1maW5pbXAuYWRzLAoJcy1maW5yb28uYWRiLCBzLWZpbnJvby5hZHMsIHMtZm9yZS5hZGIsIHMtZm9yZS5hZHMsCglzLWdsb2xvYy5hZGIsIHMtZ2xvbG9jLmFkcywgcy1pbWdiaXUuYWRiLCBzLWltZ2JpdS5hZHMsCglzLWltZ2Jvby5hZGIsIHMtaW1nYm9vLmFkcywgcy1pbWdjaGEuYWRiLCBzLWltZ2NoYS5hZHMsCglzLWltZ2RlYy5hZGIsIHMtaW1nZGVjLmFkcywgcy1pbWdlbnUuYWRiLCBzLWltZ2VudS5hZHMsCglzLWltZ2ludC5hZGIsIHMtaW1naW50LmFkcywgcy1pbWdsbGIuYWRiLCBzLWltZ2xsYi5hZHMsCglzLWltZ2xsZC5hZGIsIHMtaW1nbGxkLmFkcywgcy1pbWdsbGkuYWRiLCBzLWltZ2xsaS5hZHMsCglzLWltZ2xsdS5hZGIsIHMtaW1nbGx1LmFkcywgcy1pbWdsbHcuYWRiLCBzLWltZ2xsdy5hZHMsCglzLWltZ3JlYS5hZGIsIHMtaW1ncmVhLmFkcywgcy1pbWd1bnMuYWRiLCBzLWltZ3Vucy5hZHMsCglzLWltZ3djaC5hZGIsIHMtaW1nd2NoLmFkcywgcy1pbWd3aXUuYWRiLCBzLWltZ3dpdS5hZHMsCglzLWlubWFvcC5hZHMsIHMtaW50ZXJyLmFkYiwgcy1pbnRlcnIuYWRzLCBzLWludG1hbi5hZHMsCglzLWlvLmFkYiwgcy1pby5hZHMsIHMtbWFjY29kLmFkcywgcy1tYW50aXMuYWRiLAoJcy1tYW50aXMuYWRzLCBzLW1hc3RvcC5hZGIsIHMtbWFzdG9wLmFkcywgcy1tZW1vcnkuYWRiLAoJcy1tZW1vcnkuYWRzLCBzLW9zcHJpbS5hZHMsIHMtcGFjazAzLmFkYiwgcy1wYWNrMDMuYWRzLAoJcy1wYWNrMDUuYWRiLCBzLXBhY2swNS5hZHMsIHMtcGFjazA2LmFkYiwgcy1wYWNrMDYuYWRzLAoJcy1wYWNrMDcuYWRiLCBzLXBhY2swNy5hZHMsIHMtcGFjazA5LmFkYiwgcy1wYWNrMDkuYWRzLAoJcy1wYWNrMTAuYWRiLCBzLXBhY2sxMC5hZHMsIHMtcGFjazExLmFkYiwgcy1wYWNrMTEuYWRzLAoJcy1wYWNrMTIuYWRiLCBzLXBhY2sxMi5hZHMsIHMtcGFjazEzLmFkYiwgcy1wYWNrMTMuYWRzLAoJcy1wYWNrMTQuYWRiLCBzLXBhY2sxNC5hZHMsIHMtcGFjazE1LmFkYiwgcy1wYWNrMTUuYWRzLAoJcy1wYWNrMTcuYWRiLCBzLXBhY2sxNy5hZHMsIHMtcGFjazE4LmFkYiwgcy1wYWNrMTguYWRzLAoJcy1wYWNrMTkuYWRiLCBzLXBhY2sxOS5hZHMsIHMtcGFjazIwLmFkYiwgcy1wYWNrMjAuYWRzLAoJcy1wYWNrMjEuYWRiLCBzLXBhY2syMS5hZHMsIHMtcGFjazIyLmFkYiwgcy1wYWNrMjIuYWRzLAoJcy1wYWNrMjMuYWRiLCBzLXBhY2syMy5hZHMsIHMtcGFjazI0LmFkYiwgcy1wYWNrMjQuYWRzLAoJcy1wYWNrMjUuYWRiLCBzLXBhY2syNS5hZHMsIHMtcGFjazI2LmFkYiwgcy1wYWNrMjYuYWRzLAoJcy1wYWNrMjcuYWRiLCBzLXBhY2syNy5hZHMsIHMtcGFjazI4LmFkYiwgcy1wYWNrMjguYWRzLAoJcy1wYWNrMjkuYWRiLCBzLXBhY2syOS5hZHMsIHMtcGFjazMwLmFkYiwgcy1wYWNrMzAuYWRzLAoJcy1wYWNrMzEuYWRiLCBzLXBhY2szMS5hZHMsIHMtcGFjazMzLmFkYiwgcy1wYWNrMzMuYWRzLAoJcy1wYWNrMzQuYWRiLCBzLXBhY2szNC5hZHMsIHMtcGFjazM1LmFkYiwgcy1wYWNrMzUuYWRzLAoJcy1wYWNrMzYuYWRiLCBzLXBhY2szNi5hZHMsIHMtcGFjazM3LmFkYiwgcy1wYWNrMzcuYWRzLAoJcy1wYWNrMzguYWRiLCBzLXBhY2szOC5hZHMsIHMtcGFjazM5LmFkYiwgcy1wYWNrMzkuYWRzLAoJcy1wYWNrNDAuYWRiLCBzLXBhY2s0MC5hZHMsIHMtcGFjazQxLmFkYiwgcy1wYWNrNDEuYWRzLAoJcy1wYWNrNDIuYWRiLCBzLXBhY2s0Mi5hZHMsIHMtcGFjazQzLmFkYiwgcy1wYWNrNDMuYWRzLAoJcy1wYWNrNDQuYWRiLCBzLXBhY2s0NC5hZHMsIHMtcGFjazQ1LmFkYiwgcy1wYWNrNDUuYWRzLAoJcy1wYWNrNDYuYWRiLCBzLXBhY2s0Ni5hZHMsIHMtcGFjazQ3LmFkYiwgcy1wYWNrNDcuYWRzLAoJcy1wYWNrNDguYWRiLCBzLXBhY2s0OC5hZHMsIHMtcGFjazQ5LmFkYiwgcy1wYWNrNDkuYWRzLAoJcy1wYWNrNTAuYWRiLCBzLXBhY2s1MC5hZHMsIHMtcGFjazUxLmFkYiwgcy1wYWNrNTEuYWRzLAoJcy1wYWNrNTIuYWRiLCBzLXBhY2s1Mi5hZHMsIHMtcGFjazUzLmFkYiwgcy1wYWNrNTMuYWRzLAoJcy1wYWNrNTQuYWRiLCBzLXBhY2s1NC5hZHMsIHMtcGFjazU1LmFkYiwgcy1wYWNrNTUuYWRzLAoJcy1wYWNrNTYuYWRiLCBzLXBhY2s1Ni5hZHMsIHMtcGFjazU3LmFkYiwgcy1wYWNrNTcuYWRzLAoJcy1wYWNrNTguYWRiLCBzLXBhY2s1OC5hZHMsIHMtcGFjazU5LmFkYiwgcy1wYWNrNTkuYWRzLAoJcy1wYWNrNjAuYWRiLCBzLXBhY2s2MC5hZHMsIHMtcGFjazYxLmFkYiwgcy1wYWNrNjEuYWRzLAoJcy1wYWNrNjIuYWRiLCBzLXBhY2s2Mi5hZHMsIHMtcGFjazYzLmFkYiwgcy1wYWNrNjMuYWRzLAoJcy1wYXJhbWUuYWRiLCBzLXBhcmFtZS5hZHMsIHMtcGFyaW50LmFkYiwgcy1wYXJpbnQuYWRzLAoJcy1wb29nbG8uYWRiLCBzLXBvb2dsby5hZHMsIHMtcG9vbG9jLmFkYiwgcy1wb29sb2MuYWRzLAoJcy1wb29zaXouYWRiLCBzLXBvb3Npei5hZHMsIHMtcG93dGFiLmFkcywgcy1wcm9pbmYuYWRiLAoJcy1wcm9pbmYuYWRzLCBzLXJwYy5hZGIsIHMtcnBjLmFkcywgcy1zY2F2YWwuYWRzLAoJcy1zZWNzdGEuYWRiLCBzLXNlY3N0YS5hZHMsIHMtc2VxdWlvLmFkYiwgcy1zZXF1aW8uYWRzLAoJcy1zaGFzdG8uYWRiLCBzLXNoYXN0by5hZHMsIHMtc29mbGluLmFkYiwgcy1zb2ZsaW4uYWRzLAoJcy1zb3BjbzMuYWRiLCBzLXNvcGNvMy5hZHMsIHMtc29wY280LmFkYiwgcy1zb3BjbzQuYWRzLAoJcy1zb3BjbzUuYWRiLCBzLXNvcGNvNS5hZHMsIHMtc3RhY2hlLmFkYiwgcy1zdGFjaGUuYWRzLAoJcy1zdGFsaWIuYWRiLCBzLXN0YWxpYi5hZHMsIHMtc3RvZWxlLmFkYiwgcy1zdG9lbGUuYWRzLAoJcy1zdG9wb28uYWRzLCBzLXN0cmF0dC5hZGIsIHMtc3RyYXR0LmFkcywgcy1zdHJvcHMuYWRiLAoJcy1zdHJvcHMuYWRzLCBzLXRhYXNkZS5hZGIsIHMtdGFhc2RlLmFkcywgcy10YWRlY2EuYWRiLAoJcy10YWRlY2EuYWRzLCBzLXRhZGVydC5hZGIsIHMtdGFkZXJ0LmFkcywgcy10YWVuY2EuYWRiLAoJcy10YWVuY2EuYWRzLCBzLXRhcHJvYi5hZGIsIHMtdGFwcm9iLmFkcywgcy10YXByb3AuYWRzLAoJcy10YXJlc3QuYWRiLCBzLXRhcmVzdC5hZHMsIHMtdGFzZGViLmFkYiwgcy10YXNkZWIuYWRzLAoJcy10YXNpbmYuYWRiLCBzLXRhc2luZi5hZHMsIHMtdGFzaW5pLmFkYiwgcy10YXNpbmkuYWRzLAoJcy10YXNraW4uYWRiLCBzLXRhc2tpbi5hZHMsIHMtdGFzcXVlLmFkYiwgcy10YXNxdWUuYWRzLAoJcy10YXNyZW4uYWRiLCBzLXRhc3Jlbi5hZHMsIHMtdGFzcmVzLmFkcywgcy10YXNzdGEuYWRiLAoJcy10YXNzdGEuYWRzLCBzLXRhc3V0aS5hZGIsIHMtdGFzdXRpLmFkcywgcy10YXRhYXQuYWRiLAoJcy10YXRhYXQuYWRzLCBzLXRwaW5vcC5hZGIsIHMtdHBpbm9wLmFkcywgcy10cG9iZW4uYWRiLAoJcy10cG9iZW4uYWRzLCBzLXRwb2JvcC5hZGIsIHMtdHBvYm9wLmFkcywgcy10cG9zZW4uYWRiLAoJcy10cG9zZW4uYWRzLCBzLXRyYWNlYi5hZGIsIHMtdHJhY2ViLmFkcywgcy10cmFjZXMuYWRiLAoJcy10cmFjZXMuYWRzLCBzLXRyYXRhcy5hZGIsIHMtdHJhdGFzLmFkcywgcy11bnN0eXAuYWRzLAoJcy12YWZsb3AuYWRiLCBzLXZhZmxvcC5hZHMsIHMtdmFsYm9vLmFkYiwgcy12YWxib28uYWRzLAoJcy12YWxjaGEuYWRiLCBzLXZhbGNoYS5hZHMsIHMtdmFsZGVjLmFkYiwgcy12YWxkZWMuYWRzLAoJcy12YWxlbnUuYWRiLCBzLXZhbGVudS5hZHMsIHMtdmFsaW50LmFkYiwgcy12YWxpbnQuYWRzLAoJcy12YWxsbGQuYWRiLCBzLXZhbGxsZC5hZHMsIHMtdmFsbGxpLmFkYiwgcy12YWxsbGkuYWRzLAoJcy12YWxsbHUuYWRiLCBzLXZhbGxsdS5hZHMsIHMtdmFscmVhLmFkYiwgcy12YWxyZWEuYWRzLAoJcy12YWx1bnMuYWRiLCBzLXZhbHVucy5hZHMsIHMtdmFsdXRpLmFkYiwgcy12YWx1dGkuYWRzLAoJcy12YWx3Y2guYWRiLCBzLXZhbHdjaC5hZHMsIHMtdmVyY29uLmFkYiwgcy12ZXJjb24uYWRzLAoJcy12bWV4dGEuYWRiLCBzLXZtZXh0YS5hZHMsIHMtd2NoY252LmFkYiwgcy13Y2hjbnYuYWRzLAoJcy13Y2hjb24uYWRzLCBzLXdjaGppcy5hZGIsIHMtd2NoamlzLmFkcywgcy13Y2hzdHcuYWRiLAoJcy13Y2hzdHcuYWRzLCBzLXdjaHd0cy5hZGIsIHMtd2Nod3RzLmFkcywgcy13aWRib28uYWRiLAoJcy13aWRib28uYWRzLCBzLXdpZGNoYS5hZGIsIHMtd2lkY2hhLmFkcywgcy13aWRlbnUuYWRiLAoJcy13aWRlbnUuYWRzLCBzLXdpZGxsaS5hZGIsIHMtd2lkbGxpLmFkcywgcy13aWRsbHUuYWRiLAoJcy13aWRsbHUuYWRzLCBzLXdpZHdjaC5hZGIsIHMtd2lkd2NoLmFkcywgcy13d2RjaGEuYWRiLAoJcy13d2RjaGEuYWRzLCBzLXd3ZGVudS5hZGIsIHMtd3dkZW51LmFkcywgcy13d2R3Y2guYWRiLAoJcy13d2R3Y2guYWRzLCBzY2Fucy5hZGIsIHNjYW5zLmFkcywgc2NuLW5saXQuYWRiLAoJc2NuLXNsaXQuYWRiLCBzY24uYWRiLCBzY24uYWRzLCBzZGVmYXVsdC5hZHMsCglzZW0uYWRiLCBzZW0uYWRzLCBzZW1fYWdnci5hZGIsIHNlbV9hZ2dyLmFkcywKCXNlbV9hdHRyLmFkYiwgc2VtX2F0dHIuYWRzLCBzZW1fY2FzZS5hZGIsIHNlbV9jYXNlLmFkcywKCXNlbV9jYXQuYWRiLCBzZW1fY2F0LmFkcywgc2VtX2NoMTAuYWRiLCBzZW1fY2gxMC5hZHMsCglzZW1fY2gxMS5hZGIsIHNlbV9jaDExLmFkcywgc2VtX2NoMTIuYWRiLCBzZW1fY2gxMi5hZHMsCglzZW1fY2gxMy5hZGIsIHNlbV9jaDEzLmFkcywgc2VtX2NoMi5hZGIsIHNlbV9jaDIuYWRzLAoJc2VtX2NoMy5hZGIsIHNlbV9jaDMuYWRzLCBzZW1fY2g0LmFkYiwgc2VtX2NoNC5hZHMsCglzZW1fY2g1LmFkYiwgc2VtX2NoNS5hZHMsIHNlbV9jaDYuYWRiLCBzZW1fY2g2LmFkcywKCXNlbV9jaDcuYWRiLCBzZW1fY2g3LmFkcywgc2VtX2NoOC5hZGIsIHNlbV9jaDguYWRzLAoJc2VtX2NoOS5hZGIsIHNlbV9jaDkuYWRzLCBzZW1fZGlzcC5hZGIsIHNlbV9kaXNwLmFkcywKCXNlbV9kaXN0LmFkYiwgc2VtX2Rpc3QuYWRzLCBzZW1fZWxhYi5hZGIsIHNlbV9lbGFiLmFkcywKCXNlbV9lbGltLmFkYiwgc2VtX2VsaW0uYWRzLCBzZW1fZXZhbC5hZGIsIHNlbV9ldmFsLmFkcywKCXNlbV9pbnRyLmFkYiwgc2VtX2ludHIuYWRzLCBzZW1fbWFwcy5hZGIsIHNlbV9tYXBzLmFkcywKCXNlbV9tZWNoLmFkYiwgc2VtX21lY2guYWRzLCBzZW1fcHJhZy5hZGIsIHNlbV9wcmFnLmFkcywKCXNlbV9yZXMuYWRiLCBzZW1fcmVzLmFkcywgc2VtX3NtZW0uYWRiLCBzZW1fc21lbS5hZHMsCglzZW1fdHlwZS5hZGIsIHNlbV90eXBlLmFkcywgc2VtX3V0aWwuYWRiLCBzZW1fdXRpbC5hZHMsCglzZW1fdmZwdC5hZGIsIHNlbV92ZnB0LmFkcywgc2VtX3dhcm4uYWRiLCBzZW1fd2Fybi5hZHMsCglzZXF1ZW5pby5hZHMsIHNmbl9zY2FuLmFkYiwgc2ZuX3NjYW4uYWRzLCBzaW5mby1jbi5hZGIsCglzaW5mby1jbi5hZHMsIHNpbmZvLmFkYiwgc2luZm8uYWRzLCBzaW5wdXQtZC5hZGIsCglzaW5wdXQtZC5hZHMsIHNpbnB1dC1sLmFkYiwgc2lucHV0LWwuYWRzLCBzaW5wdXQtcC5hZGIsCglzaW5wdXQtcC5hZHMsIHNpbnB1dC5hZGIsIHNpbnB1dC5hZHMsIHNuYW1lcy5hZGIsCglzbmFtZXMuYWRzLCBzcHJpbnQuYWRiLCBzcHJpbnQuYWRzLCBzdGFuZC5hZGIsCglzdGFuZC5hZHMsIHN0cmluZ3QuYWRiLCBzdHJpbmd0LmFkcywgc3R5bGUuYWRiLAoJc3R5bGUuYWRzLCBzdHlsZXN3LmFkYiwgc3R5bGVzdy5hZHMsIHN3aXRjaC1iLmFkYiwKCXN3aXRjaC1iLmFkcywgc3dpdGNoLWMuYWRiLCBzd2l0Y2gtYy5hZHMsIHN3aXRjaC1tLmFkYiwKCXN3aXRjaC1tLmFkcywgc3dpdGNoLmFkYiwgc3dpdGNoLmFkcywgc3lzdGVtLmFkcywKCXRhYmxlLmFkYiwgdGFibGUuYWRzLCB0YXJncGFybS5hZGIsIHRhcmdwYXJtLmFkcywKCXRidWlsZC5hZGIsIHRidWlsZC5hZHMsIHRleHRfaW8uYWRzLCB0cmFucy5jLAoJdHJlZV9nZW4uYWRiLCB0cmVlX2dlbi5hZHMsIHRyZWVfaW4uYWRiLCB0cmVlX2luLmFkcywKCXRyZWVfaW8uYWRiLCB0cmVlX2lvLmFkcywgdHJlZXByLmFkYiwgdHJlZXByLmFkcywKCXR0eXBlZi5hZHMsIHR0eXBlcy5hZHMsIHR5cGVzLmFkYiwgdHlwZXMuYWRzLAoJdWludHAuYWRiLCB1aW50cC5hZHMsIHVuYW1lLmFkYiwgdW5hbWUuYWRzLAoJdW5jaGNvbnYuYWRzLCB1bmNoZGVhbC5hZHMsIHVyZWFscC5hZGIsIHVyZWFscC5hZHMsCgl1c2FnZS5hZGIsIHVzYWdlLmFkcywgdmFsaWRzdy5hZGIsIHZhbGlkc3cuYWRzLAoJd2lkZWNoYXIuYWRiLCB3aWRlY2hhci5hZHMsIHhlaW5mby5hZGIsIHhubWFrZS5hZGIsCgl4cl90YWJscy5hZGIsIHhyX3RhYmxzLmFkcywgeHJlZl9saWIuYWRiLCB4cmVmX2xpYi5hZHMsCgl4c2luZm8uYWRiLCB4c25hbWVzLmFkYiwgeHRyZWVwcnMuYWRiIDogTWVyZ2UgaGVhZGVyLAoJZm9ybWF0dGluZyBhbmQgb3RoZXIgdHJpdmlhbCBjaGFuZ2VzIGZyb20gQUNULgoKMjAwMy0wNC0xMiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGdpZ2kuaCwgdXRpbHMyLmMgKGJ1aWxkX2NvbnN0cnVjdG9yKToKCVJlbmFtZSBnbmF0X2J1aWxkX2NvbnN0cnVjdG9yLiBVc2UgYnVpbGRfY29uc3RydWN0b3IuCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KQoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgcG9zX3RvX2NvbnN0cnVjdG9yLCBleHRyYWN0X3ZhbHVlcykKCSogYWRhL3V0aWxzLmMgKGJ1aWxkX3RlbXBsYXRlLCBjb252ZXJ0X3RvX2ZhdF9wb2ludGVyLCBjb252ZXJ0KQoJKHVuY2hlY2tlZF9jb252ZXJ0KQoJKiBhZGEvdXRpbHMyLmMgKGJ1aWxkX2JpbmFyeV9vcCwgYnVpbGRfY2FsbF9yYWlzZSwgYnVpbGRfYWxsb2NhdG9yKQoJKGZpbGxfdm1zX2Rlc2NyaXB0b3IpOgoJVXBkYXRlIHRvIG1hdGNoLgoKMjAwMy0wNC0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFkYS10cmVlLmRlZjogTWFrZSBmb3VydGggZWxlbWVudCBmb3IgR05BVF9MT09QX0lEIHplcm8uCgkqIG1pc2MuYyAoZ25hdF90cmVlX3NpemUpOiBOZXcgZnVuY3Rpb24uCgkoTEFOR19IT09LU19UUkVFX1NJWkUpOiBPdmVycmlkZS4KCjIwMDMtMDQtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogbWlzYy5jIChnbmF0X2FkanVzdF9ybGkpOiAjaWYgMC4KCjIwMDMtMDMtMzEgICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJUFIgYWRhLzEwMDIwCgkqIGxpbmsuYyA6IEZpeCBtaXNzcGVsbGVkICJjb25zdCIga2V5d29yZAoKMjAwMy0wMy0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvNzA4NgoJKiB1dGlsczIuYzogQWRqdXN0IGNhbGxzIHRvIHB1dF92YXJfaW50b19zdGFjay4KCjIwMDMtMDMtMTIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluLCBNYWtlZmlsZS5pbiwgY29uZmlnLWxhbmcuaW46IEdDQywgbm90IEdOVSBDQy4KCjIwMDMtMDMtMDggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIG1pc2MuYyAoZ25hdF9pbml0KTogVXBkYXRlIGZvciBuZXcgcHJvdG90eXBlLgoKMjAwMy0wMy0wNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBnbmF0LmNvbT4KCglhZGEvOTk2MQoJKiByYWlzZS5jIChfX2duYXRfVW53aW5kX1JhaXNlRXhjZXB0aW9uKTogQWRkIHByb3RvdHlwZSB0byBhdm9pZAoJd2FybmluZywgYW5kIGZpeCByZXR1cm4gdHlwZSBmb3IgdGhlIElOX1JUUyAmJiAhU0pMSiBjYXNlLgoKMjAwMy0wMy0wNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChhZGEudGFncyk6IE5ldyB0YXJnZXQuCgoyMDAzLTAzLTA0ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJYWRhLzk5MTEKCSogYS1leGNlcHQuYWRiIChVbndpbmRfUmFpc2VFeGNlcHRpb24pOiBJbXBvcnQgYSBHTkFUIHNwZWNpZmljCgl3cmFwcGVyLCB3aGljaCBuYW1lIHJlbWFpbnMgY29uc3RhbnQgd2hhdGV2ZXIgdW5kZXJseWluZyBHQ0MKCXNjaGVtZS4KCgkqIHJhaXNlLmMgKF9fZ25hdF9VbndpbmRfUmFpc2VFeGNlcHRpb24pOiBOZXcgd3JhcHBlcnMsIHByb3ZpZGluZwoJdGhlIHN0YWJsZSBpbnRlcmZhY2UgbmVlZGVkIGZvciBhLWV4Y2VwdC4KCjIwMDMtMDMtMDIgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGduYXRfdWdfdW54LnRleGksIGduYXRfdWdfdm1zLnRleGksIGduYXRfdWdfdnh3LnRleGksCglnbmF0X3VnX3dudC50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMy0wMy0wMiAgTGF1cmVudCBHdWVyYnkgPGd1ZXJieUBhY20ub3JnPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtZ25hdGxpYik6IE1hdGNoIHByZXZpb3VzIGNoYW5nZSB0aGVyZQoJc28gaXQgd29ya3MuCgoyMDAzLTAyLTI4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogTWFrZS1sYW5nLmluIChpbnN0YWxsLWduYXRsaWIpOiBDaGFuZ2UgdG8gYWRhIGRpcmVjdG9yeSBiZWZvcmUKCXJ1bm5pbmcgbWFrZSBpbnN0ZWFkIG9mIHVzaW5nIGFkYS9NYWtlZmlsZSBkaXJlY3RseS4KCjIwMDMtMDItMTggIEJlbiBFbGxpc3RvbiAgPGJqZUByZWRoYXQuY29tPgoKCVBhcnQgb2YgUFIgYWRhLzk0MDYKCSogZ25hdF91Zy50ZXhpIChCaW5kZXIgb3V0cHV0IGZpbGUpOiBHcmFtbWFyIGZpeC4KCjIwMDMtMDItMTggIEJlbiBFbGxpc3RvbiAgPGJqZUByZWRoYXQuY29tPgoKCVBSIG90aGVyLzczNTAKCSogNXF0YXByb3AuYWRiIChTbGVlcCk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDAzLTAyLTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGduYXRfcm0udGV4aSwgZ25hdF91Zy50ZXhpOiBVcGRhdGUgdG8gR0ZETCAxLjIuCgkqIGduYXRfdWdfdW54LnRleGksIGduYXRfdWdfdm1zLnRleGksIGduYXRfdWdfdnh3LnRleGksCglnbmF0X3VnX3dudC50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMy0wMi0wMyAgQ2hyaXN0aWFuIENvcm5lbHNzZW4gPGNjb3JuQGNzLnR1LWJlcmxpbi5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhLmluc3RhbGwtaW5mbyk6IExldCAkKERFU1RESVIpJChpbmZvZGlyKQoJYmUgY3JlYXRlZCBpZiBuZWNlc3NhcnkuCgkoYWRhLmluc3RhbGwtY29tbW9uKTogTGV0ICQoREVTVERJUikkKGJpbmRpcikgYmUgY3JlYXRlZAoJaWYgbmVjZXNzYXJ5LiAgUmVtb3ZlIGVycm9uZW91cyBhbmQgcmVkdW5kYW50IGduYXRjaG9wCglpbnN0YWxsYXRpb24gY29tbWFuZHMuCVRlc3QgZm9yIGduYXRkbGwgYmVmb3JlIGF0dGVtcHRpbmcKCXRvIGluc3RhbGwgaXQuCgkoYWRhLnVuaW5zdGFsbCk6IEFsc28gdW5pbnN0YWxsIGduYXRmaW5kLCBnbmF0eHJlZiwgZ25hdGxiciwKCWFuZCBnbmF0ZGxsIGZyb20gYWxsIHBsYXVzaWJsZSBsb2NhdGlvbnMuCgoyMDAzLTAyLTAxICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJKiB1dGlsczIuYyAoYnVpbGRfdW5hcnlfb3ApOiBEb24ndCBjaGVjayBmbGFnX3ZvbGF0aWxlLgoJKiBnbmF0X3VnLnRleGk6IFJlbW92ZSAtZnZvbGF0aWxlIGZyb20gZXhhbXBsZS4KCSogZ25hdF91Z192eHcudGV4aTogTGlrZXdpc2UuCgoyMDAzLTAxLTI5ICBMYXVyZW50IEd1ZXJieSA8Z3VlcmJ5QGFjbS5vcmc+CgoJUFIgYWRhLzgzNDQKCSogZmluYWwuYzogcmVuYW1lIHRvIGFkYWZpbmFsLmMgdG8gYXZvaWQgZmlsZSBuYW1lIGNvbmZsaWN0cyB3aXRoIGdjYyBmaWxlLgoJKiBNYWtlZmlsZS5pbjogbWF0Y2ggcHJldmlvdXMgY2hhbmdlLgoJKiBNYWtlLWxhbmcuaW46IG1hdGNoIHByZXZpb3VzIGNoYW5nZS4KCjIwMDMtMDEtMjkJSm9lbCBTaGVycmlsbCA8am9lbEBPQVJjb3JwLmNvbT4KCgkqIDVyb3NpbnRlLmFkczogQWRkIFNJR1hDUFUuCgkqIDVydHBvcHNwLmFkYjogTmV3IGZpbGUuCgkqIE1ha2UtbGFuZy5pbjogRG8gbm90IGJ1aWxkIGduYXRwc3RhIGFuZCBnbmF0cHN5cyB3aGVuIGNyb3NzLgoJKiBNYWtlZmlsZS5pbjogUmVjb2duaXplIG1vcmUgUlRFTVMgdGFyZ2V0cyBhbmQgYWRkIHRoZSBSVEVNUwoJc3BlY2lmaWMgZmlsZSA1cnRwb3BzcC5hZGIuCgkqIGFkYWludC5oOiBBZGQgaW5jbHVkZSBvZiA8c3RkaW8uaD4gd2hlbiB0YXJnZXQgaXMgUlRFTVMuICBUaGlzCglpcyBsaWtlbHkgbmVlZGVkIGZvciBhbGwgbmV3bGliIHRhcmdldHMuCgkqIGluaXQuYzogQWRkIFJURU1TIHNwZWNpZmljIHZlcnNpb24gb2YgX19nbmF0X2luaXRpYWxpemUoKS4KCjIwMDMtMDEtMjggIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogYWRhaW50LmMsIGFkYWludC5oLCBnbWVtLmMsIGluaXQuYzogVXBkYXRlIGNvcHlyaWdodCB5ZWFyLgoKMjAwMy0wMS0yNyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBpbml0LmMgKF9fZ25hdF9lcnJvcl9oYW5kbGVyKTogTWFrZSBtc2cgY29uc3QuCgoJKiBnbWVtLmMgKGNvbnZlcnRfYWRkcmVzc2VzKTogTW92ZSBkZWNsYXJhdGlvbiAuLi4KCSogYWRhaW50Lmg6IC4uLiBoZXJlLgoJKiBhZGFpbnQuYyAoY29udmVydF9hZGRyZXNzZXMpOiBBZGFwdCBhZGRycyB0eXBlIHRvIG1hdGNoCglwcm90b3R5cGUuCgoJKiBhZGFpbnQuYyAoX19nbmF0X3RyeV9sb2NrKTogQ2FzdCBwaWRfdCB0byBsb25nLCBhZGFwdCBmb3JtYXQuCgoyMDAzLTAxLTI0ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogYWRhLXRyZWUuaCAoU0VUX1RZUEVfRElHSVRTX1ZBTFVFKTogQWRkIGludGVybWVkaWF0ZSBjYXN0IHRvCglzaXplX3QgdG8gYXZvaWQgd2FybmluZy4KCjIwMDMtMDEtMjEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW46IERpc2FibGUgLVdlcnJvciBmb3IgdHJhY2ViYWsuYyBhbmQgYl9nbmF0Yi5jLgoKMjAwMy0wMS0wOSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBnbmF0X3JtLnRleGk6IFJlbW92ZSBSQ1MgdmVyc2lvbiBudW1iZXIuCgoJKiBhZGEtdHJlZS5oICh1bmlvbiBsYW5nX3RyZWVfbm9kZSk6IEFkZCBjaGFpbl9uZXh0IG9wdGlvbi4KCjIwMDMtMDEtMDkgIENocmlzdGlhbiBDb3JuZWxzc2VuICA8Y2Nvcm5AY3MudHUtYmVybGluLmRlPgoKCSogTWFrZS1sYW5nLmluIChhZGEuaW5zdGFsbC1pbmZvLCBhZGEuaW5zdGFsbC1jb21tb24sCglhZGEudW5pbnN0YWxsKTogUHJlcGVuZCAkKERFU1RESVIpIHRvIHRoZSBkZXN0aW5hdGlvbgoJZGlyZWN0b3J5IGluIGFsbCAodW4paW5zdGFsbGF0aW9uIGNvbW1hbmRzLgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1nbmF0bGliLCBpbnN0YWxsLXJ0cyk6IERpdHRvLgoKMjAwMi0xMi0yOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnbmF0X3JtLnRleGksIGduYXRfdWcudGV4aTogVXNlIEBjb3B5aW5nLgoJKiBnbmF0X3VnX3VueC50ZXhpLCBnbmF0X3VnX3Ztcy50ZXhpLCBnbmF0X3VnX3Z4dy50ZXhpLAoJZ25hdF91Z193bnQudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDItMTItMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZ25hdF9ybS50ZXhpOiBJbmNsdWRlIGdjYy1jb21tb24udGV4aS4gIFVzZSBHQ0MgdmVyc2lvbiBudW1iZXIKCW9ubHkuCgkqIE1ha2UtbGFuZy5pbiAoJChzcmNkaXIpL2FkYS9nbmF0X3VnX3VueC5pbmZvLAoJJChzcmNkaXIpL2FkYS9nbmF0X3VnX3Ztcy5pbmZvLCAkKHNyY2RpcikvYWRhL2duYXRfdWdfdnh3LmluZm8sCgkkKHNyY2RpcikvYWRhL2duYXRfdWdfd250LmluZm8sICQoc3JjZGlyKS9hZGEvZ25hdF9ybS5pbmZvLAoJYWRhL2duYXRfdWdfdW54LmR2aSwgYWRhL2duYXRfdWdfdm1zLmR2aSwgYWRhL2duYXRfdWdfdnh3LmR2aSwKCWFkYS9nbmF0X3VnX3dudC5kdmksIGFkYS9nbmF0X3JtLmR2aSk6IERlcGVuZCBvbgoJJChzcmNkaXIpL2RvYy9pbmNsdWRlL2djYy1jb21tb24udGV4aS4KCjIwMDItMTItMTUgICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBGaXggdHlwbyBhbmQgZm9ybWF0dGluZwoKMjAwMi0xMi0xNCAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCglQUiBhZGEvNTY5MAoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBSZWNvZ25pemUgYWRkaXRpb25hbAoJY2FzZSBvZiBhIGJvZHkgY3JlYXRlZCBmb3IgYSBSZW5hbWluZ19Bc19Cb2R5LCBvbiB3aGljaAoJY29uZm9ybWFuY2UgY2hlY2tzIGFyZSBub3QgcGVyZm9ybWVkLgoKMjAwMi0xMS0zMCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGN1aW50cC5jLCBkZWNsLmMsIGRlZnRhcmcuYywgbWlzYy5jLCB0YXJndHlwcy5jLCB0cmFucy5jLAoJdXRpbHMuYywgdXRpbHMyLmM6IEluY2x1ZGUgY29yZXR5cGVzLmggYW5kIHRtLmgsIGFuZCBzeXN0ZW0uaCB3aGVuCglub3QgYWxyZWFkeSBpbmNsdWRlZC4KCSogTWFrZS1sYW5nLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMi0xMS0xOCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgkqIGFkYWludC5jIChfX2duYXRfdG1wX25hbWUpOiBCZXR0ZXIsIGJ1dCBnb29kIGVub3VnaCBmb3Igbm93LAoJc29sdXRpb24gdG8gYnVmZmVyIG92ZXJmbG93IGJ1ZyBvbiBHTlUvTGludXguCgoyMDAyLTExLTE0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCglQUiBhZGEvNTg1NgoJUFIgYWRhLzY5MTkKCSogYmluZGdlbi5hZGI6IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBQdWJsaWNfVmVyc2lvbi4KCSogY29tcGVyci5hZGI6IFJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBQdWJsaWNfVmVyc2lvbiBhbmQKCUdOQVRQUk9fVmVyc2lvbjsgY29ycmVjdCBidWcgcmVwb3J0aW5nIGluc3RydWN0aW9ucy4KCSogY29tcGVyci5hZHM6IENoYW5nZSB0byBtYXRjaCBidWcgYm94LgoJKiBnbmF0dnNuLmFkczogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIFB1YmxpYyB2ZXJzaW9uIGFuZAoJR05BVFBSTyB2ZXJzaW9uLgoKMjAwMi0xMS0xMyAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJUFIgYWRhLzY5MTkKCSogYWRhaW50LmMgKF9fZ25hdF90bXBfbmFtZSk6IFJlbW92ZSBidWZmZXIgb3ZlcmZsb3cgYnVnIG9uCglHTlUvTGludXguCgoJUFIgYWRhLzY1NTgKCSogY29uZmlnLWxhbmcuaW46IFJlbW92ZSBkaWZmX2V4Y2x1ZGVzLgoKMjAwMi0xMS0wNSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtLnN0b3R0QGJ0aW50ZXJuZXQuY29tPgoKCVBSIGFkYS84MzU4CgkqIHRyYW5zLmMgKGdudV9wZW5kaW5nX2VsYWJvcmF0aW9uX2xpc3RzKTogTmV3IEdDIHJvb3QuCgkoYnVpbGRfdW5pdF9lbGFiKTogVXNlLi4KCjIwMDItMTAtMzAgICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJUFIgYWRhLzY1NTgKCSogbWlzYy5jIDogSW5jbHVkZSBvcHRhYnMuaAoKCSogTWFrZS1sYW5nLmluIChtaXNjLm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBvcHRhYnMuaAoKMjAwMi0xMC0yOSAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCglQUiBhZGEvNjU1OAoJKiBNYWtlLWxhbmcuaW4gKGduYXRiaW5kKTogRGVwZW5kIG9uIENPTkZJR19ICgoyMDAyLTEwLTI5ICBHZWVydCBib3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCVBSIGFkYS82NTU4CgkqIG1pc2MuYzogVW5yZXZlcnQgbWlzYy5jICgxLjEzKQoKMjAwMi0xMC0yOCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBhLWNobGF0OS5hZHMgYS1jd2lsYTkuYWRzIGEtZHlucHJpLmFkYiBhLXJldGlkZS5hZGI6IFVwZGF0ZQoJbWFpbnRhaW5lcnNoaXAgY29tbWVudHMuCgoyMDAyLTA5LTI1ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCglQUiBhZGEvNTkwNAoJKiA1YXRhcHJvcC5hZGIgNWF0cG9wc3AuYWRiIDVib3NpbnRlLmFkYiA1ZnRhcHJvcC5hZGIKCTVndGFwcm9wLmFkYiA1aHRhcHJvcC5hZGIgNXJvc2ludGUuYWRzIDVzdGFwcm9wLmFkYgoJNXN0cG9wc2UuYWRiIDV2dGFzcHJpLmFkcyA1emludG1hbi5hZGIgNXp0YXByb3AuYWRiCgk3c3RhcHJvcC5hZGI6IENvcnJlY3Qgc3RhdGVtZW50cyBpbiBjb21tZW50cyBhYm91dAoJbWFpbnRhaW5lcnNoaXAgb2YgR05BVC4KCglQUiBhZGEvNTkwNAoJKiAxc3NlY3N0YS5hZGIgMXNzZWNzdGEuYWRzIGFkYWRlY29kZS5jIGFkYWRlY29kZS5oIGF1eC1pby5jCglnbmF0bmFtZS5hZGIgZ25hdG5hbWUuYWRzIG1rZGlyLmMgb3NpbnQtYi5hZGIgb3NpbnQtYi5hZHMKCW9zaW50LWMuYWRiIG9zaW50LWMuYWRzIG9zaW50LWwuYWRiIG9zaW50LWwuYWRzIG9zaW50LW0uYWRiCglvc2ludC1tLmFkcyBwcmotbWFrci5hZGIgcHJqLW1ha3IuYWRzIHByai1wcC5hZGIgcHJqLXBwLmFkcwoJcy1hdGFjY28uYWRzIHMtdHJhY2ViLmFkYiBzLXRyYWNlYi5hZHMgcy10cmFjZXMuYWRiCglzLXRyYWNlcy5hZHMgcy10cmF0YXMuYWRiIHMtdHJhdGFzLmFkcyBzaW5wdXQtZC5hZGIKCXNpbnB1dC1kLmFkcyBzd2l0Y2gtYi5hZGIgc3dpdGNoLWIuYWRzIHN3aXRjaC1jLmFkYgoJc3dpdGNoLWMuYWRzIHN3aXRjaC1tLmFkYiBzd2l0Y2gtbS5hZHM6IENvcnJlY3Qgc3RhdGVtZW50cyBpbgoJY29tbWVudHMgYWJvdXQgbWFpbnRhaW5lcnNoaXAgb2YgR05BVC4KCglQUiBhZGEvNjkxOSAoZm9yd2FyZCBwb3J0IG9mIHBhdGNoIGZvciBQUiBhZGEvNTkwNCkKCSogMWFleGNlcHQuYWRiIDFhZXhjZXB0LmFkcyA0MWludG5hbS5hZHMgNDJpbnRuYW0uYWRzCgk0YWludG5hbS5hZHMgNGNpbnRuYW0uYWRzIDRkaW50bmFtLmFkcyA0aGV4Y3BvbC5hZGIKCTRsaW50bmFtLmFkcyA0bWludG5hbS5hZHMgNG5pbnRuYW0uYWRzIDRvbnVtYXV4LmFkcwoJNHBpbnRuYW0uYWRzIDRyaW50bmFtLmFkcyA0c2ludG5hbS5hZHMgNHVpbnRuYW0uYWRzCgk0dmNhbGVuZC5hZGIgNHZpbnRuYW0uYWRzIDR3Y2FsZW5kLmFkYiA0d2V4Y3BvbC5hZGIKCTR3aW50bmFtLmFkcyA0emludG5hbS5hZHMgNHpudW1hdXguYWRzIDR6c3l0YWNvLmFkYgoJNHpzeXRhY28uYWRzIDUxb3NpbnRlLmFkYiA1MW9zaW50ZS5hZHMgNTJvc2ludGUuYWRiCgk1Mm9zaW50ZS5hZHMgNTJzeXN0ZW0uYWRzIDUzb3NpbnRlLmFkcyA1YW9zaW50ZS5hZHMKCTVhc3lzdGVtLmFkcyA1YXRhc2luZi5hZHMgNWF0YXNwcmkuYWRzIDVhdnh3b3JrLmFkcwoJNWJvc2ludGUuYWRzIDVic3lzdGVtLmFkcyA1Y29zaW50ZS5hZHMgNWRvc2ludGUuYWRzCgk1ZXN5c3RlbS5hZHMgNWZvc2ludGUuYWRzIDVmc3lzdGVtLmFkcyA1ZnRhc2luZi5hZHMKCTVnaW50ZXJyLmFkYiA1Z21hc3RvcC5hZGIgNWdvc2ludGUuYWRzIDVncHJvaW5mLmFkYgoJNWdwcm9pbmYuYWRzIDVnc3lzdGVtLmFkcyA1Z3Rhc2luZi5hZGIgNWd0YXNpbmYuYWRzCgk1Z3RwZ2V0Yy5hZGIgNWhwYXJhbWUuYWRzIDVoc3lzdGVtLmFkcyA1aHRhc3ByaS5hZHMKCTVpb3NpbnRlLmFkcyA1aXRhc3ByaS5hZHMgNWtzeXN0ZW0uYWRzIDVrdnh3b3JrLmFkcwoJNWxvc2ludGUuYWRzIDVsc3lzdGVtLmFkcyA1bW9zaW50ZS5hZHMgNW12eHdvcmsuYWRzCgk1bmlubWFvcC5hZGIgNW5pbnRtYW4uYWRiIDVub3NpbnRlLmFkcyA1bnRhc3ByaS5hZHMKCTVvb3NwcmltLmFkYiA1b3BhcmFtZS5hZGIgNW9zeXN0ZW0uYWRzIDVwb3NpbnRlLmFkcwoJNXBvc3ByaW0uYWRiIDVwdnh3b3JrLmFkcyA1cm9zaW50ZS5hZHMgNXJwYXJhbWUuYWRiCgk1c2ludG1hbi5hZGIgNXNvc2ludGUuYWRzIDVzcGFyYW1lLmFkYiA1c3N5c3RlbS5hZHMKCTVzdGFzaW5mLmFkYiA1c3Rhc2luZi5hZHMgNXN0YXNwcmkuYWRzIDVzdnh3b3JrLmFkcwoJNXRvc2ludGUuYWRzIDV1b3NpbnRlLmFkcyA1dmFzdGhhbi5hZGIgNXZpbnRlcnIuYWRiCgk1dmludG1hbi5hZHMgNXZvc2ludGUuYWRzIDV2b3NwcmltLmFkYiA1dm9zcHJpbS5hZHMKCTV2cGFyYW1lLmFkcyA1dnN5c3RlbS5hZHMgNXZ0YXNwcmkuYWRzIDV2dHBvcGRlLmFkYgoJNXZ0cG9wZGUuYWRzIDV2dmFmbG9wLmFkYiA1d2ludG1hbi5hZGIgNXdtZW1vcnkuYWRiCgk1d29zaW50ZS5hZHMgNXdvc3ByaW0uYWRiIDV3c3lzdGVtLmFkcyA1d3RhcHJvcC5hZGIKCTV3dGFzcHJpLmFkcyA1eXN5c3RlbS5hZHMgNXppbnRlcnIuYWRiIDV6b3NpbnRlLmFkYgoJNXpvc2ludGUuYWRzIDV6b3NwcmltLmFkYiA1enN5c3RlbS5hZHMgNnZjcHAuYWRiIDZ2Y3N0cmVhLmFkYgoJN3Nvc3ByaW0uYWRiIDg2bnVtYXV4LmFkYiA4Nm51bWF1eC5hZHMgOWRycGMuYWRiIGEtYXN0YWNvLmFkYgoJYS1jYWxkZWwuYWRzIGEtY2FsZW5kLmFkYiBhLWNhbGVuZC5hZHMgYS1jaGFoYW4uYWRiCglhLWNoYWhhbi5hZHMgYS1jb2xpZW4uYWRiIGEtY29saWVuLmFkcyBhLWNvbGlyZS5hZGIKCWEtY29saXJlLmFkcyBhLWNvbWxpbi5hZGIgYS1jb21saW4uYWRzIGEtY3dpbGExLmFkcwoJYS1kZWNpbWEuYWRiIGEtZGVjaW1hLmFkcyBhLWRpb2NzdC5hZGIgYS1kaW9jc3QuYWRzCglhLWRpcmVpby5hZGIgYS1kaXJlaW8uYWRzIGEtZWludW9jLmFkYiBhLWVpbnVvYy5hZHMKCWEtZXhjZXB0LmFkYiBhLWV4Y2VwdC5hZHMgYS1leGNwb2wuYWRiIGEtZXhjdHJhLmFkYgoJYS1leGN0cmEuYWRzIGEtZmlsaWNvLmFkYiBhLWZpbGljby5hZHMgYS1maW5hbGkuYWRiCglhLWZpbmFsaS5hZHMgYS1pbnRlcnIuYWRzIGEtaW50c2lnLmFkYiBhLWludHNpZy5hZHMKCWEtbmdjZWZ1LmFkYiBhLW5nY290eS5hZGIgYS1uZ2NvdHkuYWRzIGEtbmdlbGZ1LmFkYgoJYS1udWRpcmEuYWRiIGEtbnVkaXJhLmFkcyBhLW51ZmxyYS5hZGIgYS1udWZscmEuYWRzCglhLW51bWF1eC5hZHMgYS1yZWF0aW0uYWRzIGEtcmV0aWRlLmFkcyBhLXNlcXVpby5hZGIKCWEtc2VxdWlvLmFkcyBhLXNpb2NzdC5hZGIgYS1zaW9jc3QuYWRzIGEtc3NpY3N0LmFkYgoJYS1zc2ljc3QuYWRzIGEtc3RtYWNvLmFkcyBhLXN0b3Jpby5hZGIgYS1zdHJib3UuYWRiCglhLXN0cmJvdS5hZHMgYS1zdHJlYW0uYWRzIGEtc3RyZml4LmFkYiBhLXN0cmZpeC5hZHMKCWEtc3RybWFwLmFkYiBhLXN0cm1hcC5hZHMgYS1zdHJzZWEuYWRiIGEtc3Ryc2VhLmFkcwoJYS1zdHJ1bmIuYWRiIGEtc3RydW5iLmFkcyBhLXN0c3Rpby5hZGIgYS1zdHN0aW8uYWRzCglhLXN0dW5hdS5hZGIgYS1zdHVuYXUuYWRzIGEtc3R3aWJvLmFkYiBhLXN0d2liby5hZHMKCWEtc3R3aWZpLmFkYiBhLXN0d2ltYS5hZGIgYS1zdHdpbWEuYWRzIGEtc3R3aXNlLmFkYgoJYS1zdHdpc2UuYWRzIGEtc3R3aXVuLmFkYiBhLXN0d2l1bi5hZHMgYS1zdXRlaW8uYWRiCglhLXN1dGVpby5hZHMgYS1zd213Y28uYWRzIGEtc3d1d3RpLmFkYiBhLXN3dXd0aS5hZHMKCWEtc3l0YWNvLmFkYiBhLXN5dGFjby5hZHMgYS10YWdzLmFkYiBhLXRhZ3MuYWRzIGEtdGFzYXR0LmFkcwoJYS10YXNpZGUuYWRiIGEtdGFzaWRlLmFkcyBhLXRlaW9lZC5hZGIgYS10ZWlvZWQuYWRzCglhLXRleHRpby5hZGIgYS10ZXh0aW8uYWRzIGEtdGljb2F1LmFkYiBhLXRpY29hdS5hZHMKCWEtdGljb2lvLmFkYiBhLXRpY29pby5hZHMgYS10aWRlYXUuYWRiIGEtdGlkZWF1LmFkcwoJYS10aWRlaW8uYWRiIGEtdGlkZWlvLmFkcyBhLXRpZW5hdS5hZGIgYS10aWVuYXUuYWRzCglhLXRpZW5pby5hZGIgYS10aWVuaW8uYWRzIGEtdGlmaWlvLmFkYiBhLXRpZmlpby5hZHMKCWEtdGlmbGF1LmFkYiBhLXRpZmxhdS5hZHMgYS10aWZsaW8uYWRiIGEtdGlmbGlvLmFkcwoJYS10aWdlYXUuYWRiIGEtdGlnZWF1LmFkcyBhLXRpaW5hdS5hZGIgYS10aWluYXUuYWRzCglhLXRpaW5pby5hZGIgYS10aWluaW8uYWRzIGEtdGltb2F1LmFkYiBhLXRpbW9hdS5hZHMKCWEtdGltb2lvLmFkYiBhLXRpbW9pby5hZHMgYS10aW9jc3QuYWRiIGEtdGlvY3N0LmFkcwoJYS10aXRlc3QuYWRiIGEtd2l0ZWlvLmFkYiBhLXdpdGVpby5hZHMgYS13dGNvYXUuYWRiCglhLXd0Y29hdS5hZHMgYS13dGNvaW8uYWRiIGEtd3Rjc3RyLmFkYiBhLXd0Y3N0ci5hZHMKCWEtd3RkZWF1LmFkYiBhLXd0ZGVhdS5hZHMgYS13dGRlaW8uYWRiIGEtd3RkZWlvLmFkcwoJYS13dGVkaXQuYWRiIGEtd3RlZGl0LmFkcyBhLXd0ZW5hdS5hZGIgYS13dGVuYXUuYWRzCglhLXd0ZW5pby5hZGIgYS13dGVuaW8uYWRzIGEtd3RmaWlvLmFkYiBhLXd0Zmlpby5hZHMKCWEtd3RmbGF1LmFkYiBhLXd0ZmxhdS5hZHMgYS13dGZsaW8uYWRiIGEtd3RmbGlvLmFkcwoJYS13dGdlYXUuYWRiIGEtd3RnZWF1LmFkcyBhLXd0aW5hdS5hZGIgYS13dGluYXUuYWRzCglhLXd0aW5pby5hZGIgYS13dG1vYXUuYWRiIGEtd3Rtb2F1LmFkcyBhLXd0bW9pby5hZGIKCWEtd3Rtb2lvLmFkcyBhLXd0dGVzdC5hZGIgYWRhLXRyZWUuZGVmIGFkYS10cmVlLmggYWRhLmgKCWFkYWludC5jIGFkYWludC5oIGFsaS11dGlsLmFkYiBhbGktdXRpbC5hZHMgYWxpLmFkYiBhbGkuYWRzCglhbGxvYy5hZHMgYXJndi5jIGF0cmVlLmFkYiBhdHJlZS5hZHMgYXRyZWUuaCBiYWNrX2VuZC5hZGIKCWJhY2tfZW5kLmFkcyBiY2hlY2suYWRiIGJjaGVjay5hZHMgYmluZGUuYWRiIGJpbmRlLmFkcwoJYmluZGVyci5hZGIgYmluZGVyci5hZHMgYmluZGdlbi5hZGIgYmluZGdlbi5hZHMgYmluZHVzZy5hZGIKCWJpbmR1c2cuYWRzIGJ1dGlsLmFkYiBidXRpbC5hZHMgY2FsLmMgY2FzaW5nLmFkYiBjYXNpbmcuYWRzCgljZWluZm8uYWRiIGNoZWNrcy5hZGIgY2hlY2tzLmFkcyBjaW8uYyBjb21wZXJyLmFkYiBjb21wZXJyLmFkcwoJY3NldHMuYWRiIGNzZXRzLmFkcyBjc2luZm8uYWRiIGNzdGFuZC5hZGIgY3N0YW5kLmFkcwoJY3N0cmVhbXMuYyBjdWludHAuYyBkZWJ1Zy5hZGIgZGVidWcuYWRzIGRlYnVnX2EuYWRiCglkZWJ1Z19hLmFkcyBkZWMtaW8uYWRiIGRlYy1pby5hZHMgZGVjLmFkcyBkZWNsLmMgZGVmdGFyZy5jCgllaW5mby5hZGIgZWluZm8uYWRzIGVpbmZvLmggZWxpc3RzLmFkYiBlbGlzdHMuYWRzIGVsaXN0cy5oCgllcnJuby5jIGVycm91dC5hZGIgZXJyb3V0LmFkcyBldmFsX2ZhdC5hZGIgZXZhbF9mYXQuYWRzIGV4aXQuYwoJZXhwX2FnZ3IuYWRiIGV4cF9hZ2dyLmFkcyBleHBfYXR0ci5hZGIgZXhwX2F0dHIuYWRzCglleHBfY2gxMC5hZHMgZXhwX2NoMTEuYWRiIGV4cF9jaDExLmFkcyBleHBfY2gxMi5hZGIKCWV4cF9jaDEyLmFkcyBleHBfY2gxMy5hZGIgZXhwX2NoMTMuYWRzIGV4cF9jaDIuYWRiIGV4cF9jaDIuYWRzCglleHBfY2gzLmFkYiBleHBfY2gzLmFkcyBleHBfY2g0LmFkYiBleHBfY2g0LmFkcyBleHBfY2g1LmFkYgoJZXhwX2NoNS5hZHMgZXhwX2NoNi5hZGIgZXhwX2NoNi5hZHMgZXhwX2NoNy5hZGIgZXhwX2NoNy5hZHMKCWV4cF9jaDguYWRiIGV4cF9jaDguYWRzIGV4cF9jaDkuYWRiIGV4cF9jaDkuYWRzIGV4cF9jb2RlLmFkYgoJZXhwX2NvZGUuYWRzIGV4cF9kYnVnLmFkYiBleHBfZGJ1Zy5hZHMgZXhwX2Rpc3AuYWRiCglleHBfZGlzcC5hZHMgZXhwX2Rpc3QuYWRiIGV4cF9kaXN0LmFkcyBleHBfZml4ZC5hZGIKCWV4cF9maXhkLmFkcyBleHBfaW1ndi5hZGIgZXhwX2ltZ3YuYWRzIGV4cF9pbnRyLmFkYgoJZXhwX2ludHIuYWRzIGV4cF9wYWtkLmFkYiBleHBfcGFrZC5hZHMgZXhwX3ByYWcuYWRiCglleHBfcHJhZy5hZHMgZXhwX3NtZW0uYWRiIGV4cF9zbWVtLmFkcyBleHBfc3RybS5hZGIKCWV4cF9zdHJtLmFkcyBleHBfdHNzLmFkYiBleHBfdHNzLmFkcyBleHBfdXRpbC5hZGIgZXhwX3V0aWwuYWRzCglleHBfdmZwdC5hZGIgZXhwX3ZmcHQuYWRzIGV4cGFuZGVyLmFkYiBleHBhbmRlci5hZHMgZmUuaAoJZmluYWwuYyBmbWFwLmFkYiBmbWFwLmFkcyBmbmFtZS1zZi5hZGIgZm5hbWUtc2YuYWRzCglmbmFtZS11Zi5hZGIgZm5hbWUtdWYuYWRzIGZuYW1lLmFkYiBmbmFtZS5hZHMgZnJlZXplLmFkYgoJZnJlZXplLmFkcyBmcm9udGVuZC5hZGIgZnJvbnRlbmQuYWRzIGctY2FsZW5kLmFkcyBnLWNvbWxpbi5hZGIKCWctZGVicG9vLmFkYiBnLWRlYnBvby5hZHMgZy1sb2NmaWwuYWRiIGctb3NfbGliLmFkcwoJZy1yZWdpc3QuYWRiIGctcmVnaXN0LmFkcyBnZXRfdGFyZy5hZGIgZ2V0X3RhcmcuYWRzIGdpZ2kuaAoJZ21lbS5jIGduYXQxZHJ2LmFkYiBnbmF0MWRydi5hZHMgZ25hdF91Zy50ZXhpIGduYXRiaW5kLmFkYgoJZ25hdGJpbmQuYWRzIGduYXRibC5jIGduYXRjbWQuYWRiIGduYXRjbWQuYWRzIGduYXRkbGwuYWRiCglnbmF0ZmluZC5hZGIgZ25hdGtyLmFkYiBnbmF0a3IuYWRzIGduYXRsYnIuYWRiIGduYXRsaW5rLmFkYgoJZ25hdGxpbmsuYWRzIGduYXRscy5hZGIgZ25hdGxzLmFkcyBnbmF0bWFrZS5hZGIgZ25hdG1ha2UuYWRzCglnbmF0bWVtLmFkYiBnbmF0cHJlcC5hZGIgZ25hdHByZXAuYWRzIGduYXRwc3RhLmFkYiBnbmF0dnNuLmFkcwoJZ25hdHhyZWYuYWRiIGhsby5hZGIgaGxvLmFkcyBob3N0cGFybS5hZHMgaS1jLmFkYiBpLWNleHRlbi5hZHMKCWktY29ib2wuYWRiIGktY29ib2wuYWRzIGktY3BvaW50LmFkYiBpLWNwb2ludC5hZHMgaS1jcHAuYWRiCglpLWNwcC5hZHMgaS1jc3RyZWEuYWRiIGktY3N0cmVhLmFkcyBpLWNzdHJpbi5hZGIgaS1jc3RyaW4uYWRzCglpLWZvcnRyYS5hZGIgaS1vczJlcnIuYWRzIGktb3MybGliLmFkYiBpLW9zMmxpYi5hZHMKCWktb3Myc3luLmFkcyBpLW9zMnRoci5hZHMgaS1wYWNkZWMuYWRiIGktcGFjZGVjLmFkcwoJaW1wdW5pdC5hZGIgaW1wdW5pdC5hZHMgaW5pdC5jIGlubGluZS5hZGIgaW5saW5lLmFkcyBpby1hdXguYwoJaXR5cGVzLmFkYiBpdHlwZXMuYWRzIGtydW5jaC5hZGIga3J1bmNoLmFkcyBsYW5nLW9wdGlvbnMuaAoJbGFuZy1zcGVjcy5oIGxheW91dC5hZGIgbGF5b3V0LmFkcyBsaWItbGlzdC5hZGIgbGliLWxvYWQuYWRiCglsaWItbG9hZC5hZHMgbGliLXNvcnQuYWRiIGxpYi11dGlsLmFkYiBsaWItdXRpbC5hZHMKCWxpYi13cml0LmFkYiBsaWItd3JpdC5hZHMgbGliLXhyZWYuYWRiIGxpYi14cmVmLmFkcyBsaWIuYWRiCglsaWIuYWRzIGxpbmsuYyBsaXZlLmFkYiBsaXZlLmFkcyBtYWtlLmFkYiBtYWtlLmFkcyBtYWtldXNnLmFkYgoJbWFrZXVzZy5hZHMgbWF0aF9saWIuYWRiIG1kbGwuYWRiIG1kbGwuYWRzIG1lbXRyYWNrLmFkYiBtaXNjLmMKCW5hbWV0LmFkYiBuYW1ldC5hZHMgbmFtZXQuaCBubGlzdHMuYWRiIG5saXN0cy5hZHMgbmxpc3RzLmgKCW5tYWtlLmFkYiBubWFrZS5hZHMgbm1ha2UuYWR0IG9wdC5hZGIgb3B0LmFkcyBvc2ludC5hZGIKCW9zaW50LmFkcyBvdXRwdXQuYWRiIG91dHB1dC5hZHMgcGFyLWNoMTAuYWRiIHBhci1jaDExLmFkYgoJcGFyLWNoMTIuYWRiIHBhci1jaDEzLmFkYiBwYXItY2gyLmFkYiBwYXItY2gzLmFkYiBwYXItY2g0LmFkYgoJcGFyLWNoNS5hZGIgcGFyLWNoNi5hZGIgcGFyLWNoNy5hZGIgcGFyLWNoOC5hZGIgcGFyLWNoOS5hZGIKCXBhci1lbmRoLmFkYiBwYXItbGFibC5hZGIgcGFyLWxvYWQuYWRiIHBhci1wcmFnLmFkYgoJcGFyLXN5bmMuYWRiIHBhci10Y2hrLmFkYiBwYXItdXRpbC5hZGIgcGFyLmFkYiBwYXIuYWRzCglwcmotYXR0ci5hZGIgcHJqLWF0dHIuYWRzIHByai1jb20uYWRiIHByai1jb20uYWRzIHByai1kZWN0LmFkYgoJcHJqLWRlY3QuYWRzIHByai1lbnYuYWRiIHByai1lbnYuYWRzIHByai1leHQuYWRiIHByai1leHQuYWRzCglwcmotbm1zYy5hZGIgcHJqLW5tc2MuYWRzIHByai1wYXJzLmFkYiBwcmotcGFycy5hZHMKCXByai1wYXJ0LmFkYiBwcmotcGFydC5hZHMgcHJqLXByb2MuYWRiIHByai1wcm9jLmFkcwoJcHJqLXN0cnQuYWRiIHByai1zdHJ0LmFkcyBwcmotdHJlZS5hZGIgcHJqLXRyZWUuYWRzCglwcmotdXRpbC5hZGIgcHJqLXV0aWwuYWRzIHByai5hZGIgcHJqLmFkcyByYWlzZS5jIHJhaXNlLmgKCXJlcGluZm8uYWRiIHJlcGluZm8uYWRzIHJlcGluZm8uaCByZXN0cmljdC5hZGIgcmVzdHJpY3QuYWRzCglyaWRlbnQuYWRzIHJ0c2ZpbmQuYWRiIHJ0c2ZpbmQuYWRzIHMtYWRkaW1hLmFkYiBzLWFkZGltYS5hZHMKCXMtYXJpdDY0LmFkYiBzLWFyaXQ2NC5hZHMgcy1hc3NlcnQuYWRiIHMtYXNzZXJ0LmFkcwoJcy1hc3RoYW4uYWRiIHMtYXN0aGFuLmFkcyBzLWF0YWNjby5hZGIgcy1hdXhkZWMuYWRiCglzLWF1eGRlYy5hZHMgcy1iaXRvcHMuYWRiIHMtYml0b3BzLmFkcyBzLWNoZXBvby5hZHMKCXMtZGlyZWlvLmFkYiBzLWRpcmVpby5hZHMgcy1leGNlcHQuYWRzIHMtZXhjdGFiLmFkYgoJcy1leGN0YWIuYWRzIHMtZXhuZmx0LmFkcyBzLWV4bmdlbi5hZGIgcy1leG5nZW4uYWRzCglzLWV4bmludC5hZHMgcy1leG5sZmwuYWRzIHMtZXhubGluLmFkcyBzLWV4bmxsZi5hZHMKCXMtZXhubGxpLmFkcyBzLWV4bnNmbC5hZHMgcy1leG5zaW4uYWRzIHMtZXhuc3NpLmFkcwoJcy1leHBmbHQuYWRzIHMtZXhwZ2VuLmFkYiBzLWV4cGdlbi5hZHMgcy1leHBpbnQuYWRzCglzLWV4cGxmbC5hZHMgcy1leHBsaW4uYWRzIHMtZXhwbGxmLmFkcyBzLWV4cGxsaS5hZHMKCXMtZXhwbGx1LmFkYiBzLWV4cGxsdS5hZHMgcy1leHBtb2QuYWRiIHMtZXhwbW9kLmFkcwoJcy1leHBzZmwuYWRzIHMtZXhwc2luLmFkcyBzLWV4cHNzaS5hZHMgcy1leHB1bnMuYWRiCglzLWV4cHVucy5hZHMgcy1mYXRmbHQuYWRzIHMtZmF0Z2VuLmFkYiBzLWZhdGdlbi5hZHMKCXMtZmF0bGZsLmFkcyBzLWZhdGxsZi5hZHMgcy1mYXRzZmwuYWRzIHMtZmljb2JsLmFkcwoJcy1maWxlaW8uYWRiIHMtZmlsZWlvLmFkcyBzLWZpbmltcC5hZGIgcy1maW5pbXAuYWRzCglzLWZpbnJvby5hZGIgcy1maW5yb28uYWRzIHMtZm9yZS5hZGIgcy1mb3JlLmFkcyBzLWltZ2JpdS5hZGIKCXMtaW1nYml1LmFkcyBzLWltZ2Jvby5hZGIgcy1pbWdib28uYWRzIHMtaW1nY2hhLmFkYgoJcy1pbWdjaGEuYWRzIHMtaW1nZGVjLmFkYiBzLWltZ2RlYy5hZHMgcy1pbWdlbnUuYWRiCglzLWltZ2VudS5hZHMgcy1pbWdpbnQuYWRiIHMtaW1naW50LmFkcyBzLWltZ2xsYi5hZGIKCXMtaW1nbGxiLmFkcyBzLWltZ2xsZC5hZGIgcy1pbWdsbGQuYWRzIHMtaW1nbGxpLmFkYgoJcy1pbWdsbGkuYWRzIHMtaW1nbGx1LmFkYiBzLWltZ2xsdS5hZHMgcy1pbWdsbHcuYWRiCglzLWltZ2xsdy5hZHMgcy1pbWdyZWEuYWRiIHMtaW1ncmVhLmFkcyBzLWltZ3Vucy5hZGIKCXMtaW1ndW5zLmFkcyBzLWltZ3djaC5hZGIgcy1pbWd3Y2guYWRzIHMtaW1nd2l1LmFkYgoJcy1pbWd3aXUuYWRzIHMtaW5tYW9wLmFkcyBzLWludGVyci5hZGIgcy1pbnRlcnIuYWRzCglzLWludG1hbi5hZHMgcy1pby5hZGIgcy1pby5hZHMgcy1tYWNjb2QuYWRzIHMtbWFudGlzLmFkYgoJcy1tYW50aXMuYWRzIHMtbWVtb3J5LmFkYiBzLW1lbW9yeS5hZHMgcy1vc3ByaW0uYWRzCglzLXBhY2swMy5hZGIgcy1wYWNrMDMuYWRzIHMtcGFjazA1LmFkYiBzLXBhY2swNS5hZHMKCXMtcGFjazA2LmFkYiBzLXBhY2swNi5hZHMgcy1wYWNrMDcuYWRiIHMtcGFjazA3LmFkcwoJcy1wYWNrMDkuYWRiIHMtcGFjazA5LmFkcyBzLXBhY2sxMC5hZGIgcy1wYWNrMTAuYWRzCglzLXBhY2sxMS5hZGIgcy1wYWNrMTEuYWRzIHMtcGFjazEyLmFkYiBzLXBhY2sxMi5hZHMKCXMtcGFjazEzLmFkYiBzLXBhY2sxMy5hZHMgcy1wYWNrMTQuYWRiIHMtcGFjazE0LmFkcwoJcy1wYWNrMTUuYWRiIHMtcGFjazE1LmFkcyBzLXBhY2sxNy5hZGIgcy1wYWNrMTcuYWRzCglzLXBhY2sxOC5hZGIgcy1wYWNrMTguYWRzIHMtcGFjazE5LmFkYiBzLXBhY2sxOS5hZHMKCXMtcGFjazIwLmFkYiBzLXBhY2syMC5hZHMgcy1wYWNrMjEuYWRiIHMtcGFjazIxLmFkcwoJcy1wYWNrMjIuYWRiIHMtcGFjazIyLmFkcyBzLXBhY2syMy5hZGIgcy1wYWNrMjMuYWRzCglzLXBhY2syNC5hZGIgcy1wYWNrMjQuYWRzIHMtcGFjazI1LmFkYiBzLXBhY2syNS5hZHMKCXMtcGFjazI2LmFkYiBzLXBhY2syNi5hZHMgcy1wYWNrMjcuYWRiIHMtcGFjazI3LmFkcwoJcy1wYWNrMjguYWRiIHMtcGFjazI4LmFkcyBzLXBhY2syOS5hZGIgcy1wYWNrMjkuYWRzCglzLXBhY2szMC5hZGIgcy1wYWNrMzAuYWRzIHMtcGFjazMxLmFkYiBzLXBhY2szMS5hZHMKCXMtcGFjazMzLmFkYiBzLXBhY2szMy5hZHMgcy1wYWNrMzQuYWRiIHMtcGFjazM0LmFkcwoJcy1wYWNrMzUuYWRiIHMtcGFjazM1LmFkcyBzLXBhY2szNi5hZGIgcy1wYWNrMzYuYWRzCglzLXBhY2szNy5hZGIgcy1wYWNrMzcuYWRzIHMtcGFjazM4LmFkYiBzLXBhY2szOC5hZHMKCXMtcGFjazM5LmFkYiBzLXBhY2szOS5hZHMgcy1wYWNrNDAuYWRiIHMtcGFjazQwLmFkcwoJcy1wYWNrNDEuYWRiIHMtcGFjazQxLmFkcyBzLXBhY2s0Mi5hZGIgcy1wYWNrNDIuYWRzCglzLXBhY2s0My5hZGIgcy1wYWNrNDMuYWRzIHMtcGFjazQ0LmFkYiBzLXBhY2s0NC5hZHMKCXMtcGFjazQ1LmFkYiBzLXBhY2s0NS5hZHMgcy1wYWNrNDYuYWRiIHMtcGFjazQ2LmFkcwoJcy1wYWNrNDcuYWRiIHMtcGFjazQ3LmFkcyBzLXBhY2s0OC5hZGIgcy1wYWNrNDguYWRzCglzLXBhY2s0OS5hZGIgcy1wYWNrNDkuYWRzIHMtcGFjazUwLmFkYiBzLXBhY2s1MC5hZHMKCXMtcGFjazUxLmFkYiBzLXBhY2s1MS5hZHMgcy1wYWNrNTIuYWRiIHMtcGFjazUyLmFkcwoJcy1wYWNrNTMuYWRiIHMtcGFjazUzLmFkcyBzLXBhY2s1NC5hZGIgcy1wYWNrNTQuYWRzCglzLXBhY2s1NS5hZGIgcy1wYWNrNTUuYWRzIHMtcGFjazU2LmFkYiBzLXBhY2s1Ni5hZHMKCXMtcGFjazU3LmFkYiBzLXBhY2s1Ny5hZHMgcy1wYWNrNTguYWRiIHMtcGFjazU4LmFkcwoJcy1wYWNrNTkuYWRiIHMtcGFjazU5LmFkcyBzLXBhY2s2MC5hZGIgcy1wYWNrNjAuYWRzCglzLXBhY2s2MS5hZGIgcy1wYWNrNjEuYWRzIHMtcGFjazYyLmFkYiBzLXBhY2s2Mi5hZHMKCXMtcGFjazYzLmFkYiBzLXBhY2s2My5hZHMgcy1wYXJhbWUuYWRiIHMtcGFyYW1lLmFkcwoJcy1wYXJpbnQuYWRiIHMtcGFyaW50LmFkcyBzLXBvb2dsby5hZGIgcy1wb29nbG8uYWRzCglzLXBvb2xvYy5hZGIgcy1wb29sb2MuYWRzIHMtcG9vc2l6LmFkYiBzLXBvb3Npei5hZHMKCXMtcG93dGFiLmFkcyBzLXByb2luZi5hZGIgcy1wcm9pbmYuYWRzIHMtcnBjLmFkYiBzLXJwYy5hZHMKCXMtc2NhdmFsLmFkcyBzLXNlY3N0YS5hZGIgcy1zZWNzdGEuYWRzIHMtc2VxdWlvLmFkYgoJcy1zZXF1aW8uYWRzIHMtc2hhc3RvLmFkYiBzLXNoYXN0by5hZHMgcy1zb2ZsaW4uYWRiCglzLXNvZmxpbi5hZHMgcy1zb3BjbzMuYWRiIHMtc29wY28zLmFkcyBzLXNvcGNvNC5hZGIKCXMtc29wY280LmFkcyBzLXNvcGNvNS5hZGIgcy1zb3BjbzUuYWRzIHMtc3RhY2hlLmFkYgoJcy1zdGFjaGUuYWRzIHMtc3RhbGliLmFkYiBzLXN0YWxpYi5hZHMgcy1zdG9lbGUuYWRiCglzLXN0b3Bvby5hZHMgcy1zdHJhdHQuYWRiIHMtc3RyYXR0LmFkcyBzLXN0cm9wcy5hZGIKCXMtc3Ryb3BzLmFkcyBzLXRhcHJvYi5hZHMgcy10YXByb3AuYWRzIHMtdGFyZXN0LmFkcwoJcy10YXNkZWIuYWRiIHMtdGFzZGViLmFkcyBzLXRhc2luZi5hZGIgcy10YXNpbmYuYWRzCglzLXRhc2luaS5hZHMgcy10YXNraW4uYWRzIHMtdGFzcmVuLmFkcyBzLXRhc3Jlcy5hZHMKCXMtdGFzc3RhLmFkcyBzLXRwaW5vcC5hZGIgcy10cGlub3AuYWRzIHMtdHBvYmVuLmFkcwoJcy10cG9ib3AuYWRzIHMtdW5zdHlwLmFkcyBzLXZhZmxvcC5hZGIgcy12YWZsb3AuYWRzCglzLXZhbGJvby5hZGIgcy12YWxib28uYWRzIHMtdmFsY2hhLmFkYiBzLXZhbGNoYS5hZHMKCXMtdmFsZGVjLmFkYiBzLXZhbGRlYy5hZHMgcy12YWxlbnUuYWRiIHMtdmFsZW51LmFkcwoJcy12YWxpbnQuYWRiIHMtdmFsaW50LmFkcyBzLXZhbGxsZC5hZGIgcy12YWxsbGQuYWRzCglzLXZhbGxsaS5hZGIgcy12YWxsbGkuYWRzIHMtdmFsbGx1LmFkYiBzLXZhbGxsdS5hZHMKCXMtdmFscmVhLmFkYiBzLXZhbHJlYS5hZHMgcy12YWx1bnMuYWRiIHMtdmFsdW5zLmFkcwoJcy12YWx1dGkuYWRiIHMtdmFsdXRpLmFkcyBzLXZhbHdjaC5hZGIgcy12YWx3Y2guYWRzCglzLXZlcmNvbi5hZGIgcy12ZXJjb24uYWRzIHMtdm1leHRhLmFkYiBzLXZtZXh0YS5hZHMKCXMtd2NoY252LmFkYiBzLXdjaGNudi5hZHMgcy13Y2hjb24uYWRzIHMtd2NoamlzLmFkYgoJcy13Y2hqaXMuYWRzIHMtd2Noc3R3LmFkYiBzLXdjaHN0dy5hZHMgcy13Y2h3dHMuYWRiCglzLXdjaHd0cy5hZHMgcy13aWRib28uYWRiIHMtd2lkYm9vLmFkcyBzLXdpZGNoYS5hZGIKCXMtd2lkY2hhLmFkcyBzLXdpZGVudS5hZGIgcy13aWRlbnUuYWRzIHMtd2lkbGxpLmFkYgoJcy13aWRsbGkuYWRzIHMtd2lkbGx1LmFkYiBzLXdpZGxsdS5hZHMgcy13aWR3Y2guYWRiCglzLXdpZHdjaC5hZHMgcy13d2RjaGEuYWRiIHMtd3dkY2hhLmFkcyBzLXd3ZGVudS5hZGIKCXMtd3dkZW51LmFkcyBzLXd3ZHdjaC5hZGIgcy13d2R3Y2guYWRzIHNjYW5zLmFkYiBzY2Fucy5hZHMKCXNjbi1ubGl0LmFkYiBzY24tc2xpdC5hZGIgc2NuLmFkYiBzY24uYWRzIHNkZWZhdWx0LmFkcyBzZW0uYWRiCglzZW0uYWRzIHNlbV9hZ2dyLmFkYiBzZW1fYWdnci5hZHMgc2VtX2F0dHIuYWRiIHNlbV9hdHRyLmFkcwoJc2VtX2Nhc2UuYWRiIHNlbV9jYXNlLmFkcyBzZW1fY2F0LmFkYiBzZW1fY2F0LmFkcyBzZW1fY2gxMC5hZGIKCXNlbV9jaDEwLmFkcyBzZW1fY2gxMS5hZGIgc2VtX2NoMTEuYWRzIHNlbV9jaDEyLmFkYgoJc2VtX2NoMTIuYWRzIHNlbV9jaDEzLmFkYiBzZW1fY2gxMy5hZHMgc2VtX2NoMi5hZGIgc2VtX2NoMi5hZHMKCXNlbV9jaDMuYWRiIHNlbV9jaDMuYWRzIHNlbV9jaDQuYWRiIHNlbV9jaDQuYWRzIHNlbV9jaDUuYWRiCglzZW1fY2g1LmFkcyBzZW1fY2g2LmFkYiBzZW1fY2g2LmFkcyBzZW1fY2g3LmFkYiBzZW1fY2g3LmFkcwoJc2VtX2NoOC5hZGIgc2VtX2NoOC5hZHMgc2VtX2NoOS5hZGIgc2VtX2NoOS5hZHMgc2VtX2Rpc3AuYWRiCglzZW1fZGlzcC5hZHMgc2VtX2Rpc3QuYWRiIHNlbV9kaXN0LmFkcyBzZW1fZWxhYi5hZGIKCXNlbV9lbGFiLmFkcyBzZW1fZWxpbS5hZGIgc2VtX2VsaW0uYWRzIHNlbV9ldmFsLmFkYgoJc2VtX2V2YWwuYWRzIHNlbV9pbnRyLmFkYiBzZW1faW50ci5hZHMgc2VtX21hcHMuYWRiCglzZW1fbWFwcy5hZHMgc2VtX21lY2guYWRiIHNlbV9tZWNoLmFkcyBzZW1fcHJhZy5hZGIKCXNlbV9wcmFnLmFkcyBzZW1fcmVzLmFkYiBzZW1fcmVzLmFkcyBzZW1fc21lbS5hZGIgc2VtX3NtZW0uYWRzCglzZW1fdHlwZS5hZGIgc2VtX3R5cGUuYWRzIHNlbV91dGlsLmFkYiBzZW1fdXRpbC5hZHMKCXNlbV92ZnB0LmFkYiBzZW1fdmZwdC5hZHMgc2VtX3dhcm4uYWRiIHNlbV93YXJuLmFkcwoJc2ZuX3NjYW4uYWRiIHNmbl9zY2FuLmFkcyBzaW5mby1jbi5hZGIgc2luZm8tY24uYWRzIHNpbmZvLmFkYgoJc2luZm8uYWRzIHNpbmZvLmggc2lucHV0LWwuYWRiIHNpbnB1dC1sLmFkcyBzaW5wdXQtcC5hZGIKCXNpbnB1dC1wLmFkcyBzaW5wdXQuYWRiIHNpbnB1dC5hZHMgc25hbWVzLmFkYiBzbmFtZXMuYWRzCglzbmFtZXMuaCBzcHJpbnQuYWRiIHNwcmludC5hZHMgc3RhbmQuYWRiIHN0YW5kLmFkcyBzdHJpbmd0LmFkYgoJc3RyaW5ndC5hZHMgc3RyaW5ndC5oIHN0eWxlLmFkYiBzdHlsZS5hZHMgc3R5bGVzdy5hZGIKCXN0eWxlc3cuYWRzIHN3aXRjaC5hZGIgc3dpdGNoLmFkcyBzeXNkZXAuYyBzeXN0ZW0uYWRzCgl0YWJsZS5hZGIgdGFibGUuYWRzIHRhcmdwYXJtLmFkYiB0YXJncGFybS5hZHMgdGFyZ3R5cHMuYwoJdGJ1aWxkLmFkYiB0YnVpbGQuYWRzIHRyYW5zLmMgdHJlZV9nZW4uYWRiIHRyZWVfZ2VuLmFkcwoJdHJlZV9pbi5hZGIgdHJlZV9pbi5hZHMgdHJlZV9pby5hZGIgdHJlZV9pby5hZHMgdHJlZXByLmFkYgoJdHJlZXByLmFkcyB0cmVlcHJzLmFkcyB0cmVlcHJzLmFkdCB0dHlwZWYuYWRzIHR0eXBlcy5hZHMKCXR5cGVzLmFkYiB0eXBlcy5hZHMgdHlwZXMuaCB1aW50cC5hZGIgdWludHAuYWRzIHVpbnRwLmgKCXVuYW1lLmFkYiB1bmFtZS5hZHMgdXJlYWxwLmFkYiB1cmVhbHAuYWRzIHVyZWFscC5oIHVzYWdlLmFkYgoJdXNhZ2UuYWRzIHV0aWxzLmMgdXRpbHMyLmMgdmFsaWRzdy5hZGIgdmFsaWRzdy5hZHMKCXdpZGVjaGFyLmFkYiB3aWRlY2hhci5hZHMgeGVpbmZvLmFkYiB4bm1ha2UuYWRiIHhyX3RhYmxzLmFkYgoJeHJfdGFibHMuYWRzIHhyZWZfbGliLmFkYiB4cmVmX2xpYi5hZHMgeHNpbmZvLmFkYiB4c25hbWVzLmFkYgoJeHRyZWVwcnMuYWRiOiBDb3JyZWN0IHN0YXRlbWVudHMgaW4gY29tbWVudHMgYWJvdXQgbWFpbnRhaW5lcnNoaXAKCW9mIEdOQVQuCgoyMDAyLTA5LTIzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChFWFRSQV9HTkFUQklORF9PQkpTKTogQWRkIHZlcnNpb24uby4KCSogTWFrZWZpbGUuaW4gKFRPT0xTX0xJQlMpOiBBZGQgLi4vLi4vdmVyc2lvbi5vLgoJKiBnbmF0dnNuLmFkczogR25hdF9WZXJzaW9uX1N0cmluZyBpcyBub3cgYSBmdW5jdGlvbi4KCSogZ25hdHZzbi5hZGI6IE5ldyBmaWxlLiAgV2hlbiBhc2tlZCBmb3IgR25hdF9WZXJzaW9uX1N0cmluZywKCWNvcHkgdGhlIEMgdmVyc2lvbl9zdHJpbmcgaW50byBhIFN0cmluZyBhbmQgcmV0dXJuIGl0LgoJKiBnbmF0Y21kLmFkYiwgZ25hdGtyLmFkYiwgZ25hdGxici5hZGIsIGduYXRsaW5rLmFkYiwKCWduYXRscy5hZGIsZ25hdG1ha2UuYWRiLCBnbmF0cHJlcC5hZGIsIGduYXRwc3RhLmFkYjoKCVJlbW92ZSBwcmFnbWEgSWRlbnQgKEduYXRfVmVyc2lvbl9TdHJpbmcpLiAgSWYgdGhpcyB3YXMgdGhlCglzb2xlIHVzZSBvZiBwYWNrYWdlIEduYXR2c24sIHJlbW92ZSB0aGUgd2l0aCBzdGF0ZW1lbnQgdG9vLgoJKiBnbmF0MWRydi5hZGI6IFR3ZWFrIC1nbmF0diBvdXRwdXQuCgoyMDAyLTA5LTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pOiBVc2UgcmVhbF9sZGV4cCBub3QgUkVBTF9WQUxVRV9MREVYUC4KCSogY29uZmlnL2RzcDE2eHgvZHNwMTZ4eC5tZCAoZml4dW5zX3RydW5jaGZoaTIpOiBVc2UgcmVhbF8yZXhwTi4KCSogY29uZmlnL21pcHMvbWlwcy5tZCAoZml4dW5zX3RydW5jZGZzaTIpOiBMaWtld2lzZS4KCShmaXh1bnNfdHJ1bmNkZmRpMiwgZml4dW5zX3RydW5jc2ZzaTIsIGZpeHVuc190cnVuY3NmZGkyKTogTGlrZXdpc2UuCgkqIGNvbmZpZy9tNjhrL202OGsuYyAoZmxvYXRpbmdfZXhhY3RfbG9nMik6IFVzZSByZWFsX2V4cG9uZW50CglhbmQgcmVhbF8yZXhwTiBpbnN0ZWFkIG9mIGEgbG9vcC4KCSogZG9jL3RtLnRleGkgKFJFQUxfVkFMVUVfTERFWFApOiBSZW1vdmUuCgkoUkVBTF9WQUxVRV9STkRaSU5ULCBSRUFMX1ZBTFVFX1VOU0lHTkVEX1JORFpJTlQpOiBSZW1vdmUuCgoyMDAyLTA4LTI1ICBBbmRyZSBMZWlzIDxhLmxlaXNAZ214Lm5ldD4KCSAgICBEYXZpZCBCaWxsaW5naHVyc3QgKERhdmlkLkJpbGxpbmdodXJzdEByaW90aW50by5jb20+CgoJKiBzeXNkZXAuYyAoX19nbmF0X3R0eW5hbWUpOiBpbmNsdWRlIDx0ZXJtaW9zLmg+IG9uIGN5Z3dpbgoKMjAwMi0wOC0xMyAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBNYWtlLWxhbmcuaW4gKGduYXRiaW5kJChleGVleHQpKTogTGluayB3aXRoICQoU1lTTElCUykuCglSZW1vdmUgJChDT05GSUdfSCkgZGVwZW5kZW5jeS4KCjIwMDItMDgtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhZGEvTWFrZS1sYW5nLmluIChhZGEubW9zdGx5Y2xlYW4pOiBSZW1vdmUgY292ZXJhZ2UgZmlsZXMuCgoyMDAyLTA3LTI5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhZGFkZWNvZGUuYyAoYWRhX2RlbWFuZ2xlKTogVXNlIHhzdHJkdXAgaW4gbGlldSBvZgoJeG1hbGxvYy9zdHJjcHkuCgkqIG1pc2MuYyAoZ25hdF9kZWNvZGVfb3B0aW9uKTogTGlrZXdpc2UuCgoyMDAyLTA3LTE1ICBGbG9yaWFuIFdlaW1lciAgPGZ3QGRlbmViLmVueW8uZGU+CgoJKiBtYWtlLmFkYiAoQWRkX1N3aXRjaCk6IE1ha2UgR2VuZXJpY19Qb3NpdGlvbiBhIHByb2NlZHVyZS4gIFRoZQoJZnVuY3Rpb24gYXBwcm9hY2ggZGlkIG5vdCB3b3JrIHdlbGwgYmVjYXVzZSBvZiBhIHNpZGUgZWZmZWN0ICh0aGUKCWZ1bmN0aW9uIGNhbGwgY291bGQgcmVhbGxvY2F0ZSB0aGUgdGFibGUgd2hpY2ggd2FzIGJlaW5nIGluZGV4ZWQKCXVzaW5nIGl0cyByZXN1bHQpLiBGaXhlcyBhZGEvNDg1MS4gW1JFU1VSUkVDVEVEXQoKMjAwMi0wNy0wMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBhZGEvdXRpbHMuYyAoYnVpbHRpbl9mdW5jdGlvbik6IEFjY2VwdCBhbiBhZGRpdGlvbmFsIHBhcmFtZXRlci4KCjIwMDItMDYtMjggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCglQUiBhZGEvNzE0NAoJKiBNYWtlZmlsZS5pbjogRml4IHR5cG8gaW4gY29tbWVudCwgcGF0Y2ggYnkgQWRyaWFuIEtub3RoCgk8YWRpQHRodXIuZGU+LgoKMjAwMi0wNi0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKFNIRUxMKTogU2V0IHRvIEBTSEVMTEAuCgoyMDAyLTA2LTIwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB1dGlscy5jIChpbml0X2dpZ2lfZGVjbHMpOiBVc2UgQVJSQVlfU0laRSBpbiBsaWV1IG9mIGV4cGxpY2l0CglhcnJheSBzaXplIGNhbGN1bGF0aW9uLgoKMjAwMi0wNi0wNCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogTWFrZS1sYW5nLmluIChnbmF0YmluZCk6IFJlYWRkIHJ1bGUgdGhhdCBoYXMgYmVlbiBsb3N0IGluIGxhc3QKCXBhdGNoLgoKMjAwMi0wNi0wMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCU1lcmdlIGZyb20gcGNoLWJyYW5jaDoKCgkqIGNvbmZpZy1sYW5nLmluIChndGZpbGVzKTogQWRkIGFkYS10cmVlLmguCgkqIGFkYS10cmVlLmggKFNFVF9UWVBFX0NJX0NPX0xJU1QpOiBOZXcuCgkoU0VUX1RZUEVfTU9EVUxVUyk6IE5ldy4KCShTRVRfVFlQRV9JTkRFWCk6IE5ldy4KCShTRVRfVFlQRV9ESUdJVFNfVkFMVUUpOiBOZXcuCgkoU0VUX1RZUEVfUk1fU0laRSk6IE5ldy4KCShTRVRfVFlQRV9VTkNPTlNUUkFJTkVEX0FSUkFZKTogTmV3LgoJKFNFVF9UWVBFX0FEQV9TSVpFKTogTmV3LgoJKFNFVF9UWVBFX0FDVFVBTF9CT1VORFMpOiBOZXcuCgkoU0VUX0RFQ0xfQ09OU1RfQ09SUkVTUE9ORElOR19WQVIpOiBOZXcuCgkoU0VUX0RFQ0xfT1JJR0lOQUxfRklFTEQpOiBOZXcuCgkoVFJFRV9MT09QX0lEKTogQ29ycmVjdCB0eXBvLgoJKiBkZWNsLmM6IFVzZSBuZXcgbWFjcm9zLgoJKiB1dGlscy5jOiBJbmNsdWRlIGRlYnVnLmgsIHVzZSBuZXcgbWFjcm9zLgoJKiB1dGlsczIuYzogVXNlIG5ldyBtYWNyb3MuCgoJKiBhZGEtdHJlZS5oOiBVcGRhdGUgYWxsIG1hY3JvcyBmb3IgbmV3IHRyZWUgZGVzY3JpcHRpb24uCgkoc3RydWN0IHRyZWVfbG9vcF9pZCk6IE5ldy4KCSh1bmlvbiBsYW5nX3RyZWVfbm9kZSk6IE5ldy4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogTmV3LgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBOZXcuCgkqIG1pc2MuYyAoZ25hdF9tYXJrX3RyZWUpOiBEZWxldGUuCgkoTEFOR19IT09LU19NQVJLX1RSRUUpOiBEZWxldGUuCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtKTogTm8gbG9uZ2VyIGFueSBuZWVkIHRvIGNhc3QKCWZvciBUUkVFX0xPT1BfSUQuCgoJKiB1dGlscy5jIChzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiBOZXcgZHVtbXkgc3RydWN0dXJlLgoKCSogTWFrZWZpbGUuaW4gKGRlY2wubyk6IGd0LWFkYS08ZmlsZW5hbWUuaD4gaXMgaW4gb2JqZGlyLCBub3Qgc3JjZGlyLgoJKG1pc2Mubyk6IExpa2V3aXNlLgoJKHV0aWxzLm8pOiBMaWtld2lzZTsgYWxzbyBndHlwZS1hZGEuaC4KCSogTWFrZS1sYW5nLmluIChnbmF0MSk6IEFkZCBkZXBlbmRlbmN5IG9uIHMtZ3R5cGUuCgkoZ25hdGJpbmQpOiBBZGQgZGVwZW5kZW5jeSBvbiAkKENPTkZJR19IKS4KCSogdXRpbHMuYzogQ29ycmVjdCBsYXN0ICNpbmNsdWRlLgoJKHN0dWN0IGVfc3RhY2spOiBSZW1vdmUgdW5uZWNlc3NhcnkgJ3N0YXRpYycuCgkobWFya19lX3N0YWNrKTogUmVtb3ZlIHVudXNlZCBwcm90b3R5cGUuCgoJKiBzY24tbmxpdC5hZGI6IFJlbW92ZSB3aGl0ZXNwYWNlIGFmdGVyIHZlcnNpb24gbnVtYmVyIHRvCglrZWVwIGxpbmVzIHVuZGVyIDgwIGNoYXJzLgoJKiBzbmFtZXMuYWRiOiBMaWtld2lzZS4KCSogdHJlZXByLmFkczogTGlrZXdpc2UuCgoJKiBNYWtlZmlsZS5pbiAoZGVjbC5vKTogSW5jbHVkZSBndC1hZGEtPGZpbGVuYW1lPi5oLgoJKG1pc2Mubyk6IExpa2V3aXNlLgoJKHV0aWxzLm8pOiBJbmNsdWRlIGd0LWFkYS08ZmlsZW5hbWU+LmggYW5kIGd0eXBlLWFkYS5oLgoJKiBjb25maWctbGFuZy5pbiAoZ3RmaWxlcyk6IE5ldy4KCSogZGVjbC5jOiBVc2UgZ2VuZ3R5cGUgZm9yIHJvb3RzLgoJKiBnaWdpLmg6IFVzZSBnZW5ndHlwZSBmb3Igcm9vdHMuCgkqIHRyYW5zLmM6IFVzZSBnZW5ndHlwZSBmb3Igcm9vdHMuCgkqIHV0aWxzLmM6IFVzZSBnZW5ndHlwZSBmb3Igcm9vdHMsIG1hcmtpbmcuICBJbmNsdWRlIGd0eXBlLWFkYS5oLgoKMjAwMi0wNi0wMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogbWlzYy5jIChnbmF0X2luaXQpOiBBZGp1c3Qgc2V0dGluZyBvZiBpbnRlcm5hbF9lcnJvcl9mdW5jdGlvbi4KCjIwMDItMDYtMDEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGduYXRfdWcudGV4aTogVXNlIEBpZm5vdHRleCBpbnN0ZWFkIG9mIEBpZmluZm8uCgkqIGduYXRfdWdfdW54LnRleGksIGduYXRfdWdfdm1zLnRleGksIGduYXRfdWdfdnh3LnRleGksCglnbmF0X3VnX3dudC50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMi0wNS0zMSAgRmxvcmlhbiBXZWltZXIgIDxmd0BkZW5lYi5lbnlvLmRlPgoKCSogNW50YXByb3AuYWRiICh3aXRoIFN5c3RlbS5PU19QcmltaXRpdmVzKTogUmVtb3ZlLgoKCSogY3N0cmVhbXMuYyAobWF4X3BhdGhfbGVuKTogTW92ZSBmcm9tIGhlcmUgLi4uCgkqIGFkYWludC5jIChfX2duYXRfbWF4X3BhdGhfbGVuKTogLi4uIHRvIGhlcmUuCgkqIGFkYWludC5jIChfX2duYXRfbWF4X3BhdGhfbGVuKTogRGVjbGFyZS4KCSogZy1kaXJvcGUuYWRiIChNYXhfUGF0aCk6IEFkanVzdC4KCSogZy1vc19saWIuYWRiIChOb3JtYWxpemVfUGF0aG5hbWUuTWF4X1BhdGgpOiBBZGp1c3QuCgkqIGktY3N0cmVhLmFkcyAobWF4X3BhdGhfbGVuKTogQWRqdXN0LgoJKiBvc2ludC5hZGIgKEdldF9SVFNfU2VhcmNoX0Rpci5NYXhfUGF0aCk6IEFkanVzdC4KCSogeHJfdGFibHMuYWRiIChEaXJfTmFtZS5NYXhfUGF0aDogQWRqdXN0LgoKCSogTWFrZWZpbGUuaW4sIE1ha2UtbGFuZy5pbjogRG9jdW1lbnRhdGlvbiBpcyBub3cgYnVpbHQgaW4KCU1ha2UtbGFuZy5pbi4gIFN0b3JlIEluZm8gYW5kIGdlbmVyYXRlZCBUZXhpbmZvIGZpbGVzIGluIHRoZQoJc291cmNlIGRpcmVjdG9yeS4KCSogZ25hdF91Zy50ZXhpOiBSZW1vdmUgQ1ZTIGtleXdvcmRzLCBjb3JyZWN0IHZlcnNpb24gbnVtYmVyLgoJU2V0IGZpbGUgbmFtZSBjb3JyZWN0bHkuCgoJKiBnbmF0X3VnXyoudGV4aTogQWRkLgoJKiAuY3ZzaWdub3JlOiBJZ25vcmUgZ2VuZXJhdGVkIFRleGluZm8gZmlsZXMuCgoyMDAyLTA1LTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYWRhLmg6IEFkZCBNSSBndWFyZCBtYWNyby4KCShTVUJUWVBFKTogRGVmaW5lIGNvbnN0YW50cyB3aXRoIGFuIGFub255bW91cyBlbnVtLCBub3Qgc3RhdGljCgljb25zdCB2YXJpYWJsZXMuCgkoSU4pOiBDYXN0IGNvbnN0YW50cyB0byBhcHByb3ByaWF0ZSB0eXBlIGJlZm9yZSB1c2UuCgoyMDAyLTA1LTI2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnbmF0dnNuLmFkcyAoR25hdF9WZXJzaW9uX1N0cmluZyk6IENoYW5nZSB0byAiMy4yIDIwMDIwNTI2CgkoZXhwZXJpbWVudGFsKSIuCgoyMDAyLTA1LTIzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2UtbGFuZy5pbiAoQ1AsIEVDSE8pOiBDb3B5IGZyb20gTWFrZWZpbGUuaW4uCgkoWF9BREFfQ0ZMQUdTLCBUX0FEQV9DRkxBR1MsIFhfQURBRkxBR1MsIFRfQURBRkxBR1MpOiBMaWtld2lzZS4KCShBTExfQURBRkxBR1MsIEZPUkNFX0RFQlVHX0FEQUZMQUdTLCBBREFfQ0ZMQUdTKTogTGlrZXdpc2UuCgkoQUxMX0FEQV9DRkxBR1MpOiBMaWtld2lzZS4KCShBREFfSU5DTFVERVMpOiBMaWtld2lzZS4KCUFkYXB0IGZvciBuZXcgd29ya2luZyBkaXIuCgkoR05BVEJJTkQpOiBVc2UgTWFrZWZpbGUuaW4gdmVyc2lvbi4KCSguU1VGRklYRVMpOiBDb3B5IGZyb20gTWFrZWZpbGUuaW4uCgkoYWRhLXdhcm4pOiBEZWZpbmUuCgkoLmFkYi5vLCAuYWRzLm8pOiBDb3B5IGZyb20gTWFrZWZpbGUuaW4uCglBZGRlZCAkKE9VVFBVVF9PUFRJT04pLgoJKEdOQVQxX0NfT0JKUyk6IE1vdmVkIGZyb20gTWFrZWZpbGUuaW4uCglQcmVmaXggd2l0aCBhZGEgc3ViZGlyLgoJKEdOQVRfQURBX09CSlMsIEdOQVQxX0FEQV9PQkpTLCBHTkFUMV9PQkpTLCBHTkFUQklORF9PQkpTKTogTGlrZXdpc2UuCgkoRVhUUkFfR05BVDFfT0JKUyk6IE1vdmVkIGZyb20gTWFrZWZpbGUuaW4uCglBZGFwdCBmb3IgbmV3IHdvcmtpbmcgZGlyLgoJKEVYVFJBX0dOQVRCSU5EX09CSlMpOiBMaWtld2lzZS4KCShBREFfQkFDS0VORCk6IE1vdmVkIGZyb20gTWFrZWZpbGUuaW4uCglSZW5hbWVkIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggZ2xvYmFsIEJBQ0tFTkQuCglVc2UgdGhhdCBvbmUuCgkoVEFSR0VUX0FEQV9TUkNTKTogTW92ZWQgZnJvbSBNYWtlZmlsZS5pbi4KCShnbmF0MSQoZXhlZXh0KSk6IFJlcGxhY2VkIHJlY3Vyc2l2ZSBydWxlIHdpdGggTWFrZWZpbGUuaW4gdmVyc2lvbi4KCVVzZSBBREFfQkFDS0VORC4KCShnbmF0YmluZCQoZXhlZXh0KSk6IFJlcGxhY2VkIHJlY3Vyc2l2ZSBydWxlIHdpdGggTWFrZWZpbGUuaW4gdmVyc2lvbi4KCShhZGFfZXh0cmFfZmlsZXMpOiBNb3ZlZCBmcm9tIE1ha2VmaWxlLmluLgoJUHJlZml4IHdpdGggYWRhIHN1YmRpci4KCShhZGEvYl9nbmF0MS5jLCBhZGEvYl9nbmF0MS5vLCBhZGEvYl9nbmF0Yi5jLCBhZGEvYl9nbmF0Yi5vKTogTGlrZXdpc2UuCgkoYWRhL3RyZWVwcnMuYWRzLCBhZGEvZWluZm8uaCwgYWRhL3NpbmZvLmgsIGFkYS9ubWFrZS5hZGIpOiBMaWtld2lzZS4KCShhZGEvbm1ha2UuYWRzKTogTGlrZXdpc2UuCgkodXBkYXRlLXNvdXJjZXMpOiBNb3ZlZCBmcm9tIE1ha2VmaWxlLmluLgoJUHJlZml4IHdpdGggYWRhIHN1YmRpci4KCShhZGEvc2RlZmF1bHQuYWRiLCBhZGEvc3RhbXAtc2RlZmF1bHQsIGFkYS9zZGVmYXVsdC5vKTogTGlrZXdpc2UuCgkoQURBX1RSRUVfSCk6IExpa2V3aXNlLgoJKGFkYS9hLWV4Y2VwdC5vLCBhZGEvcy1hc3NlcnQubywgYWRhL3MtbWVtb3J5Lm8pOiBMaWtld2lzZS4KCShhZGEvbWVtdHJhY2subyk6IExpa2V3aXNlLgoJKGFkYS9hZGFkZWNvZGUubyk6IExpa2V3aXNlLgoJVXBkYXRlIGRlcGVuZGVuY2llcy4KCShhZGEvYWRhaW50Lm8pOiBOZXcuCgkoYWRhL2FyZ3Yubyk6IE1vdmVkIGZyb20gTWFrZWZpbGUuaW4uCglQcmVmaXggd2l0aCBhZGEgc3ViZGlyLgoJVXBkYXRlIGRlcGVuZGVuY2llcy4KCShhZGEvY3N0cmVhbXMubywgYWRhL2V4aXQubywgYWRhL2ZpbmFsLm8sIGFkYS9saW5rLm8pOiBMaWtld2lzZS4KCShhZGEvY2lvLm8sIGFkYS9pbml0Lm8sIGFkYS9yYWlzZS5vLCBhZGEvdHJhY2ViYWsubyk6IExpa2V3aXNlLgoJKGFkYS9jdWludHAubywgYWRhL2RlY2wubywgYWRhL21pc2Mubyk6IE1vdmVkIGZyb20gTWFrZWZpbGUuaW4uCglQcmVmaXggd2l0aCBhZGEgc3ViZGlyLgoJKGFkYS90YXJndHlwcy5vLCBhZGEvdHJhbnMubywgYWRhL3V0aWxzLm8sIGFkYS91dGlsczIubyk6IExpa2V3aXNlLgoJKEdOQVQgREVQRU5ERU5DSUVTKTogUmVnZW5lcmF0ZS4KCSogTWFrZWZpbGUuaW4gKE1BQ0hNT0RFX0gsIFJUTF9ILCBUUkVFX0gpOiBSZW1vdmVkLCBwcm92aWRlZCBieQoJdG9wbGV2ZWwgTWFrZWZpbGUuaW4uCgkoRVhUUkFfR05BVDFfT0JKUywgRVhUUkFfR05BVEJJTkRfT0JKUyk6IFJlbW92ZWQuCgkoVEFSR0VUX0FEQV9TUkNTKTogUmVtb3ZlZC4KCShHTkFUMV9DX09CSlMsIEdOQVRfQURBX09CSlMsIEdOQVQxX0FEQV9PQkpTLCBHTkFUMV9PQkpTKTogTGlrZXdpc2UuCgkoR05BVEJJTkRfT0JKUyk6IExpa2V3aXNlLgoJKEFEQV9JTkNMVURFX0RJUiwgQURBX1JUTF9PQkpfRElSKTogTW92ZWQgaGVyZS4KCShCQUNLRU5EKTogUmVtb3ZlZC4KCSguLi9nbmF0MSQoZXhlZXh0KSwgLi4vZ25hdGJpbmQkKGV4ZWV4dCkpOiBMaWtld2lzZS4KCShUUkVFX0gpOiBMaWtld2lzZS4KCShhZGFfZXh0cmFfZmlsZXMpOiBMaWtld2lzZS4KCShiX2duYXQxLmMsIGJfZ25hdDEubywgYl9nbmF0Yi5jLCBiX2duYXRiLm8pOiBMaWtld2lzZS4KCSh0cmVlcHJzLmFkcywgZWluZm8uaCwgc2luZm8uaCwgbm1ha2UuYWRiLCBubWFrZS5hZHMpOiBMaWtld2lzZS4KCSh1cGRhdGUtc291cmNlcyk6IExpa2V3aXNlLgoJKHNkZWZhdWx0LmFkYiwgc3RhbXAtc2RlZmF1bHQsIHNkZWZhdWx0Lm8pOiBMaWtld2lzZQoJKEFEQV9UUkVFX0gpOiBMaWtld2lzZS4KCShhZGFkZWNvY2Uubyk6IExpa2V3aXNlLgoJKGN1aW50cC5vLCBkZWNsLm8sIG1pc2MubywgdHJhbnMubywgdXRpbHMubywgdXRpbHMyLm8pOiBMaWtld2lzZS4KCShHTkFUIERFUEVOREVOQ0lFUyk6IExpa2V3aXNlLgoKMjAwMi0wNS0xNiAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBNYWtlZmlsZS5hZGFsaWI6IEFsbG93IGZvciBQV0RDTUQgdG8gb3ZlcnJpZGUgaGFyZGNvZGVkIHB3ZC4KCSogTWFrZWZpbGUuaW46IExpa2V3aXNlLgoKMjAwMi0wNS0xNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBNYWtlLWxhbmcuaW4gKGduYXQxJChleGVleHQpLCBnbmF0YmluZCQoZXhlZXh0KSwgZ25hdHRvb2xzKToKCVJlc3RvcmUgJChDT05GSUdfSCkgYW5kIHByZWZpeC5vIGRlcGVuZGVuY2llcy4KCShhZGEuc3RhZ2VbMS00XSk6IERlcGVuZCBvbiBzdGFnZT8tc3RhcnQuCgoJKiBNYWtlZmlsZS5pbiAoYl9nbmF0Yi5jKTogRGVwZW5kIG9uIGludGVyZmFjLm8uCgoyMDAyLTA1LTAyICBKaW0gV2lsc29uICA8d2lsc29uQHJlZGhhdC5jb20+CgoJKiB1dGlscy5jIChmaW5pc2hfcmVjb3JkX3R5cGUpOiBDaGFuZ2UgcmVjb3JkX3NpemUgdG8gcmVjb3JkX3R5cGUuCgoyMDAxLTA1LTAyICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogYWRhL01ha2VmaWxlLmluIChYX0FEQV9DRkxBR1MsIFRfQURBX0NGTEFHUyk6IE5ldyBmcmFnbWVudCBvdmVycmlkZXMuCgkoQUxMX0FEQV9DRkxBR1MpOiBEZWZpbmUuICBSZXBsYWNlIEFEQV9DRkxBR1Mgd2l0aCBBTExfQURBX0NGTEFHUyBpbgoJQUxMX0FEQUZMQUdTLCBNT1NUX0FEQUZMQUdTLCBhbmQgYWxsIGNvbXBpbGF0aW9ucyB1c2luZyBDQy4KCjIwMDItMDQtMjUgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1pc2MuYyAoZ25hdF9wYXJzZV9maWxlKTogVXBkYXRlLgoKMjAwMi0wNC0yNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X2luaXQpOiBEb24ndCBzZXQgbGFuZ19hdHRyaWJ1dGVfY29tbW9uLgoKMjAwMi0wNC0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ25hdF9ybS50ZXhpOiBVc2UgQGlmbm90dGV4IGluc3RlYWQgb2YgQGlmaW5mby4KCjIwMDItMDQtMjEgIEZsb3JpYW4gV2VpbWVyICA8ZndAZGVuZWIuZW55by5kZT4KCgkqIGduYXRfdWcudGV4aTogTmV3IGZpbGUuCgoJKiBnbmF0X3JtLnRleGk6IERvIG5vdCBpbmNsdWRlIHRleGlwbHVzLnRleGkuICBJbmNsdWRlIGZkbC50ZXhpCglpbnN0ZWFkIG9mIGdmZGwudGV4aQoKCSogeGduYXR1Zy5hZGIsIHVnX3dvcmRzOiBOZXcgZmlsZXMuCgoJKiBNYWtlZmlsZS5pbiAoZG9jLCBkdmkpOiBOZXcgdGFyZ2V0cy4gIEJ1aWxkIGduYXRfdWdfKiwKCWduYXRfcm0gYW5kIGduYXQtc3R5bGUgbWFudWFscy4KCjIwMDItMDQtMTggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGdpZ2kuaCAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogUmVtb3ZlLgoJKiB1dGlscy5jIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBSZW1vdmUuCgoyMDAyLTA0LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pOiBBZGQgaGFzX3Njb3BlIGFyZ3VtZW50IHRvCglleHBhbmRfc3RhcnRfc3RtdF9leHByLgoKMjAwMi0wNC0wNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZ2lnaS5oICh0cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBSZW5hbWUuCgkqIG1pc2MuYyAoTEFOR19IT09LU19UUlVUSFZBTFVFX0NPTlZFUlNJT04pOiBSZWRlZmluZS4KCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pOiBVcGRhdGUuCgkqIHV0aWxzMi5jICh0cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBSZW5hbWUsIHVwZGF0ZS4KCShidWlsZF9iaW5hcnlfb3AsIGJ1aWxkX3VuYXJ5X29wKTogVXBkYXRlLgoKMjAwMi0wNC0wNCAgTGF1cmVudCBHdWVyYnkgIDxndWVyYnlAYWNtLm9yZz4KCgkqIG1ha2UuYWRiOiBJbXBsZW1lbnQgLW1hcmdzLCByZW1vdmUgcmVzdHJpY3Rpb24gYWJvdXQgZmlsZSBuYW1lIHBsYWNlbWVudC4KCSogbWFrZXVzZy5hZGI6IERvY3VtZW50YXRpb24gdXBkYXRlLgoJKiBNYWtlZmlsZS5pbiAoVE9PTFNfRkxBR1NfVE9fUEFTUyk6IEFkZCBWUEFUSD0kKGZzcmNkaXIpLgoJKiBNYWtlZmlsZS5pbiAoZ25hdHRvb2xzMyk6IENvbW1lbnQgb3V0LCBnbmF0bWVtIGRvZXMgbm90IGJ1aWxkIHdpdGhvdXQgbGliYWRkcjJsaW5lLgoKMjAwMi0wNC0wNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogdXRpbHMuYyAoY3JlYXRlX3N1YnByb2dfZGVjbCk6IFVzZSBTRVRfREVDTF9BU1NFTUJMRVJfTkFNRS4KCShidWlsdGluX2Z1bmN0aW9uKTogU2ltaWxhcmx5LgoKMjAwMi0wNC0wMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpOiBVcGRhdGUuCgkqIGdpZ2kuaCAobWFya19hZGRyZXNzYWJsZSk6IFJlbmFtZS4KCSogbWlzYy5jIChMQU5HX0hPT0tTX01BUktfQUREUkVTU0FCTEUpOiBSZWRlZmluZS4KCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pOiBVcGRhdGUuCgkqIHV0aWxzLmMgKGNyZWF0ZV92YXJfZGVjbCk6IFVwZGF0ZS4KCSogdXRpbDIuYyAoYnVpbGRfYmluYXJ5X29wLCBidWlsZF91bmFyeV9vcCwKCWZpbGxfdm1zX2Rlc2NyaXB0b3IpOiBVcGRhdGUuCgkobWFya19hZGRyZXNzYWJsZSk6IFJlbmFtZSwgdXBkYXRlLgoKMjAwMi0wNC0wMSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZ2lnaS5oICh1bnNpZ25lZF90eXBlLCBzaWduZWRfdHlwZSwgc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpOgoJUmVuYW1lLgoJKiBtaXNjLmMgKExBTkdfSE9PS1NfU0lHTkVEX1RZUEUsIExBTkdfSE9PS1NfVU5TSUdORURfVFlQRSwKCUxBTkdfSE9PS1NfU0lHTkVEX09SX1VOU0lHTkVEX1RZUEUpOiBOZXcuCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBjb252ZXJ0X3dpdGhfY2hlY2spOiBVcGRhdGUuCgkqIHV0aWxzLmMgKHVuc2lnbmVkX3R5cGUsIHNpZ25lZF90eXBlLCBzaWduZWRfb3JfdW5zaWduZWRfdHlwZSk6CglSZW5hbWUuCgoyMDAyLTAzLTMxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBnaWdpLmggKGZpbmlzaF9pbmNvbXBsZXRlX2RlY2wpOiBSZW5hbWUuCgkqIG1pc2MuYyAoTEFOR19IT09LU19GSU5JU0hfSU5DT01QTEVURV9ERUNMKTogUmVkZWZpbmUuCgkqIHV0aWxzLmMgKGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgaG9vay4KCShmaW5pc2hfaW5jb21wbGV0ZV9kZWNsKTogUmVuYW1lLgoKMjAwMi0wMy0yOSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluOiBQYXNzIFZQQVRIPSQoZnNyY2Rpcikgd2hlbiBjYWxsaW5nIG1ha2UgaW4gcnRzCglkaXJlY3RvcnkuCgoyMDAxLTAzLTI4ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogY2hlY2tzLmFkczoKCShSZW1vdmVfQ2hlY2tzKTogTmV3IHByb2NlZHVyZQoKCSogY2hlY2tzLmFkYjoKCShSZW1vdmVfQ2hlY2tzKTogTmV3IHByb2NlZHVyZQoKCSogZXhwX3V0aWwuYWRiOgoJVXNlIG5ldyBEdXBsaWNhdGVfU3ViZXhwciBmdW5jdGlvbnMKCShEdXBsaWNhdGVfU3ViZXhwcl9Ob19DaGVja3MpOiBOZXcgcHJvY2VkdXJlCgkoRHVwbGljYXRlX1N1YmV4cHJfTm9fQ2hlY2tzX09yaWcpOiBOZXcgcHJvY2VkdXJlCgkoRHVwbGljYXRlX1N1YmV4cHIpOiBSZXN0b3JlIG9yaWdpbmFsIGZvcm0gKGNoZWNrcyBkdXBsaWNhdGVkKQoJKER1cGxpY2F0ZV9TdWJleHByKTogQ2FsbCBSZW1vdmVfQ2hlY2tzCgoJKiBleHBfdXRpbC5hZHM6CgkoRHVwbGljYXRlX1N1YmV4cHJfTm9fQ2hlY2tzKTogTmV3IHByb2NlZHVyZQoJKER1cGxpY2F0ZV9TdWJleHByX05vX0NoZWNrc19PcmlnKTogTmV3IHByb2NlZHVyZQoJQWRkIDIwMDIgdG8gY29weXJpZ2h0IG5vdGljZQoKCSogc2VtX3V0aWwuYWRiOiBVc2UgbmV3IER1cGxpY2F0ZV9TdWJleHByIGZ1bmN0aW9ucwoKCSogc2VtX2V2YWwuYWRiOgoJKEV2YWxfSW5kZXhlZF9Db21wb25lbnQpOiBUaGlzIGlzIHRoZSBwbGFjZSB0byBjYWxsCglDb25zdGFudF9BcnJheV9SZWYgYW5kIHRvIHJlcGxhY2UgdGhlIHZhbHVlLiBXZSBzaW1wbHkgbWVyZ2UKCXRoZSBjb2RlIG9mIHRoaXMgZnVuY3Rpb24gaW4gaGVyZSwgc2luY2UgaXQgaXMgbm93IG5vIGxvbmdlcgoJdXNlZCBlbHNld2hlcmUuIFRoaXMgZml4ZXMgdGhlIHByb2JsZW0gb2YgdGhlIGJhY2sgZW5kIG5vdAoJcmVhbGl6aW5nIHdlIHdlcmUgY2xldmVyIGVub3VnaCB0byBzZWUgdGhhdCB0aGlzIHdhcwoJY29uc3RhbnQuCgkoRXhwcl9WYWwpOiBSZW1vdmUgY2FsbCB0byBDb25zdGFudF9BcnJheV9SZWYKCShFeHByX1JlcF9WYWwpOiBSZW1vdmUgY2FsbCB0byBDb25zdGFudF9BcnJheV9SZWYKCU1pbm9yIHJlZm9ybWF0dGluZwoJKENvbnN0YW50X0FycmF5X1JlZik6IERlYWwgd2l0aCBzdHJpbmcgbGl0ZXJhbHMgKHBhdGNoCglzdWdnZXN0ZWQgYnkgWmFjayBXZWluYmVyZyBvbiB0aGUgZ2NjIGxpc3QpCgoyMDAxLTAzLTI4ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogZXhwX3V0aWwuYWRiOiBEdXBsaWNhdGVfU3ViZXhwcl9Ob19DaGVja3NfT3JpZyA9PgoJRHVwbGljYXRlX1N1YmV4cHJfTW92ZV9DaGVja3MuCgoJKiBleHBfdXRpbC5hZHM6IER1cGxpY2F0ZV9TdWJleHByX05vX0NoZWNrc19PcmlnID0+CglEdXBsaWNhdGVfU3ViZXhwcl9Nb3ZlX0NoZWNrcy4KCgkqIHNlbV9ldmFsLmFkYjogKENvbnN0YW50X0FycmF5X1JlZik6IFZlcmlmeSB0aGF0IGNvbnN0YW50Cgl2YWx1ZSBvZiBhcnJheSBleGlzdHMgYmVmb3JlIHJldHJpZXZpbmcgaXQgKGl0IG1heSBhIHByaXZhdGUKCXByb3RlY3RlZCBjb21wb25lbnQgaW4gYSBmdW5jdGlvbikuCgoyMDAyLTAzLTI4ICAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogcHJqLXBwLmFkYiA6IE5ldyBmaWxlLgoKCSogcHJqLXBwLmFkcyA6IE5ldyBmaWxlLgoKMjAwMi0wMy0yOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKHN0YW1wLXNkZWZhdWx0KTogRml4IHBhdGggZm9yIE1ha2VmaWxlLgoKMjAwMi0wMy0yOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9leHByKTogTW92ZSBwcm90b3R5cGUuCgoyMDAyLTAzLTI3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKGluc2VydF9kZWZhdWx0X2F0dHJpYnV0ZXMpOiBSZW1vdmUuCgoyMDAyLTAzLTI3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKExBTkdfSE9PS1NfRVhQQU5EX0VYUFIpOiBSZWRlZmluZS4KCShnbmF0X2luaXQpOiBEb24ndCBzZXQgaG9vay4KCShnbmF0X2V4cGFuZF9leHByKTogRml4IHByb3RvdHlwZS4KCjIwMDItMDMtMjcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1pc2MuYyAoZ2djX3ApOiBSZW1vdmUuCgoyMDAyLTAzLTI3ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogcHJqLW1ha3IuYWRzLCBwcmotbWFrci5hZGIgOiBOZXcgZmlsZXMuCgoyMDAyLTAzLTI2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKExBTkdfSE9PS1NfTUFSS19UUkVFKTogUmVkZWZpbmUuCgkobGFuZ19tYXJrX3RyZWUpOiBNYWtlIHN0YXRpYywgcmVuYW1lLgoKMjAwMi0wMy0yNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChtYXliZV9idWlsZF9jbGVhbnVwKTogUmVtb3ZlLgoKMjAwMi0wMy0yNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZ2lnaS5oICh5eXBhcnNlKTogUmVtb3ZlLgoKMjAwMi0wMy0yMyAgRmxvcmlhbiBXZWltZXIgIDxmd0BkZW5lYi5lbnlvLmRlPgoKCSogZ25hdF9ybS50ZXhpOiBTeW5jIHdpdGggQUNUIHZlcnNpb24uCgkgIChGcm9tIEJlbiBCcm9zZ29sIDxicm9zZ29sQGduYXQuY29tPikKCjIwMDItMDMtMjAgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1pc2MuYyAoTEFOR19IT09LU19ERUNMX1BSSU5UQUJMRV9OQU1FKTogUmVkZWZpbmUuCgkoZ25hdF9pbml0KTogUmVtb3ZlIG9sZCBob29rLgoKMjAwMi0wMy0xNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChMQU5HX0hPT0tTX1BBUlNFX0ZJTEUpOiBSZWRlZmluZS4KCSh5eXBhcnNlKTogUmVuYW1lIGduYXRfcGFyc2VfZmlsZS4KCjIwMDItMDMtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCglEZWxldGUgYWxsIGxpbmVzIGNvbnRhaW5pbmcgIiRSZXZpc2lvbjoiLgoJKiB4ZWluZm8uYWRiOiBEb24ndCBsb29rIGZvciByZXZpc2lvbiBudW1iZXJzLgoJKiB4bm1ha2UuYWRiOiBMaWtld2lzZS4KCSogeHNpbmZvLmFkYjogTGlrZXdpc2UuCgkqIHhzbmFtZXMuYWRiOiBMaWtld2lzZS4KCSogeHRyZWVwcnMuYWRiOiBMaWtld2lzZS4KCjIwMDItMDMtMTIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1pc2MuYyAoZ25hdF90cmVlX2NvZGVfdHlwZSwgZ25hdF90cmVlX2NvZGVfbGVuZ3RoLAoJZ25hdF90cmVlX2NvZGVfbmFtZSk6IERlbGV0ZS4KCSh0cmVlX2NvZGVfdHlwZSwgdHJlZV9jb2RlX2xlbmd0aCwgdHJlZV9jb2RlX25hbWUpOiBEZWZpbmUuCgkoZ25hdF9pbml0KTogRG9uJ3QgdHJ5IHRvIGNvcHkgaW50byB0aGUgdmFyaW91cyB0cmVlX2NvZGUKCWFycmF5cy4KCjIwMDItMDMtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoLk5PVFBBUkFMTEVMKTogQWRkIGZha2UgdGFnLgoKMjAwMi0wMy0wNyAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIGFkYWRlY29kZS5jLCBhZGFkZWNvZGUuaCwgYXV4LWlvLmMsIHMtdHJhY2VzLmFkYiwgcy10cmFjZXMuYWRzLAoJcy10cmF0YXMuYWRiLCBzLXRyYXRhcy5hZHMsIHNpbnB1dC1kLmFkYiwgc2lucHV0LWQuYWRzLAoJc3dpdGNoLWIuYWRiLCBzd2l0Y2gtYi5hZHMsIHN3aXRjaC1jLmFkYiwgc3dpdGNoLWMuYWRzLAoJc3dpdGNoLW0uYWRiLCBzd2l0Y2gtbS5hZHMgOiBOZXcgZmlsZXMuCgoyMDAyLTAzLTA3ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogNDFpbnRuYW0uYWRzLCA0MmludG5hbS5hZHMsIDRhaW50bmFtLmFkcywgNGNpbnRuYW0uYWRzLAoJNGRpbnRuYW0uYWRzLCA0Z2ludG5hbS5hZHMsIDRoaW50bmFtLmFkcywgNGxpbnRuYW0uYWRzLAoJNG1pbnRuYW0uYWRzLCA0cGludG5hbS5hZHMsIDRyaW50bmFtLmFkcywgNHNpbnRuYW0uYWRzLAoJNHVpbnRuYW0uYWRzLCA0dmNhbGVuZC5hZGIsIDR6aW50bmFtLmFkcywgNTJzeXN0ZW0uYWRzLAoJNWFtYXN0b3AuYWRiLCA1YXN5c3RlbS5hZHMsIDVhdGFwcm9wLmFkYiwgNWF0cG9wc3AuYWRiLAoJNWF2eHdvcmsuYWRzLCA1Ym9zaW50ZS5hZGIsIDVic3lzdGVtLmFkcywgNWVzeXN0ZW0uYWRzLAoJNWZzeXN0ZW0uYWRzLCA1ZnRhcHJvcC5hZGIsIDVnaW50ZXJyLmFkYiwgNWdtYXN0b3AuYWRiLAoJNWdzeXN0ZW0uYWRzLCA1Z3RhcHJvcC5hZGIsIDVndGFzaW5mLmFkYiwgNWd0YXNpbmYuYWRzLAoJNWhwYXJhbWUuYWRzLCA1aHN5c3RlbS5hZHMsIDVodGFwcm9wLmFkYiwgNWh0cmFjZWIuYWRiLAoJNWl0YXByb3AuYWRiLCA1a3N5c3RlbS5hZHMsIDVrdnh3b3JrLmFkcywgNWxpbnRtYW4uYWRiLAoJNWxzeXN0ZW0uYWRzLCA1bXZ4d29yay5hZHMsIDVuaW5tYW9wLmFkYiwgNW5vc2ludGUuYWRzLAoJNW50YXByb3AuYWRiLCA1b2ludGVyci5hZGIsIDVvbWFzdG9wLmFkYiwgNW9vc2ludGUuYWRiLAoJNW9zeXN0ZW0uYWRzLCA1b3RhcHJvcC5hZGIsIDVvdGFzcHJpLmFkcywgNXB2eHdvcmsuYWRzLAoJNXF0YXByb3AuYWRiLCA1c2ludG1hbi5hZGIsIDVzc3lzdGVtLmFkcywgNXN0YXByb3AuYWRiLAoJNXN0cG9wc2UuYWRiLCA1c3Z4d29yay5hZHMsIDV0b3NpbnRlLmFkcywgNXVpbnRtYW4uYWRiLAoJNXZhc3RoYW4uYWRiLCA1dmlubWFvcC5hZGIsIDV2aW50ZXJyLmFkYiwgNXZpbnRtYW4uYWRiLAoJNXZtYXN0b3AuYWRiLCA1dnBhcmFtZS5hZHMsIDV2c3lzdGVtLmFkcywgNXZ0YXByb3AuYWRiLAoJNXZ0cG9wZGUuYWRiLCA1d21lbW9yeS5hZGIsIDV3c3lzdGVtLmFkcywgNXd0YXByb3AuYWRiLAoJNXlzeXN0ZW0uYWRzLCA1emludGVyci5hZGIsIDV6aW50bWFuLmFkYiwgNXpvc2ludGUuYWRiLAoJNXpvc2ludGUuYWRzLCA1enN5c3RlbS5hZHMsIDV6dGFwcm9wLmFkYiwgNnZjcHAuYWRiLCA2dmNzdHJlYS5hZGIsCgk3c2ludG1hbi5hZGIsIDdzdGFwcm9wLmFkYiwgN3N0cG9wc3AuYWRiLCA5ZHJwYy5hZGIsCglNYWtlLWxhbmcuaW4sIE1ha2VmaWxlLmluLCBhLWNhbGRlbC5hZGIsIGEtY29tbGluLmFkcywKCWEtZHlucHJpLmFkYiwgYS1leGNlcHQuYWRiLCBhLWV4Y2VwdC5hZHMsIGEtZmluYWxpLmFkYiwKCWEtbmNlbGZ1LmFkcywgYS1yZWF0aW0uYWRiLCBhLXJldGlkZS5hZGIsIGEtc3RyZWFtLmFkcywKCWEtc3RzdGlvLmFkYiwgYS1zdHN0aW8uYWRzLCBhLXN0d2lmaS5hZGIsIGEtdGFncy5hZGIsIGEtdGFzYXR0LmFkYiwKCWEtdGV4dGlvLmFkYiwgYS10aWRlYXUuYWRiLCBhLXRpZmxhdS5hZGIsIGEtdGlnZWF1LmFkYiwKCWEtdGlnZWF1LmFkcywgYS10aWluYXUuYWRiLCBhLXRpbW9hdS5hZGIsIGEtd2l0ZWlvLmFkYiwKCWEtd3RkZWF1LmFkYiwgYS13dGVuYXUuYWRiLCBhLXd0ZmxhdS5hZGIsIGEtd3RnZWF1LmFkYiwKCWEtd3RnZWF1LmFkcywgYS13dGluYXUuYWRiLCBhLXd0bW9hdS5hZGIsIGFkYS10cmVlLmRlZiwgYWRhLXRyZWUuaCwKCWFkYWludC5jLCBhZGFpbnQuaCwgYWxpLXV0aWwuYWRiLCBhbGkuYWRiLCBhbGkuYWRzLCBhdHJlZS5hZGIsCglhdHJlZS5hZHMsIGF0cmVlLmgsIGJhY2tfZW5kLmFkYiwgYmNoZWNrLmFkYiwgYmluZGdlbi5hZGIsCgliaW5kdXNnLmFkYiwgY2hlY2tzLmFkYiwgY29tcGVyci5hZGIsIGNvbmZpZy1sYW5nLmluLCBjc2V0cy5hZGIsCgljc2V0cy5hZHMsIGNzdGFuZC5hZGIsIGNzdHJlYW1zLmMsIGRlYnVnLmFkYiwgZGVidWcuYWRzLCBkZWNsLmMsCgllaW5mby5hZGIsIGVpbmZvLmFkcywgZWluZm8uaCwgZWxpc3RzLmgsIGVycm91dC5hZGIsIGVycm91dC5hZHMsCglldmFsX2ZhdC5hZGIsIGV4cF9hZ2dyLmFkYiwgZXhwX2F0dHIuYWRiLCBleHBfY2gxMS5hZGIsCglleHBfY2gxMi5hZGIsIGV4cF9jaDEzLmFkYiwgZXhwX2NoMi5hZGIsIGV4cF9jaDMuYWRiLCBleHBfY2gzLmFkcywKCWV4cF9jaDQuYWRiLCBleHBfY2g1LmFkYiwgZXhwX2NoNi5hZGIsIGV4cF9jaDcuYWRiLCBleHBfY2g3LmFkcywKCWV4cF9jaDkuYWRiLCBleHBfY2g5LmFkcywgZXhwX2RidWcuYWRiLCBleHBfZGJ1Zy5hZHMsIGV4cF9kaXNwLmFkcywKCWV4cF9kaXN0LmFkYiwgZXhwX2ZpeGQuYWRiLCBleHBfaW50ci5hZGIsIGV4cF9wYWtkLmFkYiwKCWV4cF9wcmFnLmFkYiwgZXhwX3N0cm0uYWRiLCBleHBfdXRpbC5hZGIsIGV4cF91dGlsLmFkcywKCWV4cGFuZGVyLmFkYiwgZXhwZWN0LmMsIGZlLmgsIGZtYXAuYWRiLCBmbWFwLmFkcywgZm5hbWUtdWYuYWRiLAoJZnJlZXplLmFkYiwgZnJvbnRlbmQuYWRiLCBnLWF3ay5hZGIsIGctY2dpZGViLmFkYiwgZy1jb21saW4uYWRiLAoJZy1jb21saW4uYWRzLCBnLWRlYnBvby5hZGIsIGctZGlyb3BlLmFkYiwgZy1kaXJvcGUuYWRzLAoJZy1keW50YWIuYWRiLCBnLWV4cGVjdC5hZGIsIGctZXhwZWN0LmFkcywgZy1pby5hZHMsIGctaW9fYXV4LmFkYiwKCWctaW9fYXV4LmFkcywgZy1sb2NmaWwuYWRiLCBnLWxvY2ZpbC5hZHMsIGctb3NfbGliLmFkYiwKCWctb3NfbGliLmFkcywgZy1yZWdleHAuYWRiLCBnLXJlZ3BhdC5hZGIsIGctc29ja2V0LmFkYiwKCWctc29ja2V0LmFkcywgZy1zcGlwYXQuYWRiLCBnLXRhYmxlLmFkYiwgZy10cmFzeW0uYWRiLAoJZy10cmFzeW0uYWRzLCBnaWdpLmgsIGdtZW0uYywgZ25hdDFkcnYuYWRiLCBnbmF0YmluZC5hZGIsIGduYXRibC5jLAoJZ25hdGNob3AuYWRiLCBnbmF0Y21kLmFkYiwgZ25hdGRsbC5hZGIsIGduYXRmaW5kLmFkYiwgZ25hdGxici5hZGIsCglnbmF0bGluay5hZGIsIGduYXRscy5hZGIsIGduYXRtZW0uYWRiLCBnbmF0cHJlcC5hZGIsIGduYXR2c24uYWRzLAoJZ25hdHhyZWYuYWRiLCBobG8uYWRiLCBob3N0cGFybS5hZHMsIGktY29ib2wuYWRiLCBpLWNwcC5hZGIsCglpLWNzdHJlYS5hZHMsIGktY3N0cmluLmFkYiwgaS1wYWNkZWMuYWRiLCBpLXZ4d29yay5hZHMsCglpbXB1bml0LmFkYiwgaW5pdC5jLCBpbmxpbmUuYWRiLCBpby1hdXguYywgbGF5b3V0LmFkYiwgbGliLWxvYWQuYWRiLAoJbGliLXV0aWwuYWRiLCBsaWItd3JpdC5hZGIsIGxpYi13cml0LmFkcywgbGliLXhyZWYuYWRiLAoJbGliLXhyZWYuYWRzLCBsaWIuYWRiLCBsaWIuYWRzLCBtYWtlLmFkYiwgbWFrZXVzZy5hZGIsIG1kbGwuYWRiLAoJbWVtcm9vdC5hZGIsIG1pc2MuYywgbWxpYi10Z3QuYWRiLCBtbGliLXV0bC5hZGIsIG1saWItdXRsLmFkcywKCW1saWIuYWRiLCBuYW1ldC5hZGIsIG5hbWV0LmFkcywgbmFtZXQuaCwgbmxpc3RzLmgsIG5tYWtlLmFkYiwKCW5tYWtlLmFkcywgbm1ha2UuYWR0LCBvcHQuYWRiLCBvcHQuYWRzLCBvc2ludC5hZGIsIG9zaW50LmFkcywKCW91dHB1dC5hZGIsIG91dHB1dC5hZHMsIHBhci1jaDIuYWRiLCBwYXItY2gzLmFkYiwgcGFyLWNoNS5hZGIsCglwYXItcHJhZy5hZGIsIHBhci10Y2hrLmFkYiwgcGFyLXV0aWwuYWRiLCBwYXIuYWRiLCBwcmotYXR0ci5hZGIsCglwcmotZGVjdC5hZGIsIHByai1lbnYuYWRiLCBwcmotZW52LmFkcywgcHJqLW5tc2MuYWRiLCBwcmotcGFydC5hZGIsCglwcmotcHJvYy5hZGIsIHByai1zdHJ0LmFkYiwgcHJqLXRyZWUuYWRiLCBwcmotdHJlZS5hZHMsIHByai5hZGIsCglwcmouYWRzLCByYWlzZS5jLCByYWlzZS5oLCByZXBpbmZvLmFkYiwgcmVzdHJpY3QuYWRiLCByZXN0cmljdC5hZHMsCglyaWRlbnQuYWRzLCBydHNmaW5kLmFkYiwgcnRzZmluZC5hZHMsIHMtYXJpdDY0LmFkYiwgcy1hc3RoYW4uYWRiLAoJcy1hdGFjY28uYWRiLCBzLWF0YWNjby5hZHMsIHMtYXV4ZGVjLmFkYiwgcy1jcmMzMi5hZGIsIHMtY3JjMzIuYWRzLAoJcy1kaXJlaW8uYWRiLCBzLWZhdGdlbi5hZGIsIHMtZmlsZWlvLmFkYiwgcy1maW5pbXAuYWRiLAoJcy1nbG9sb2MuYWRiLCBzLWdsb2xvYy5hZHMsIHMtaW50ZXJyLmFkYiwgcy1tYXN0b3AuYWRiLAoJcy1tYXN0b3AuYWRzLCBzLW1lbW9yeS5hZGIsIHMtcGFyYW1lLmFkcywgcy1wYXJpbnQuYWRiLAoJcy1wb29nbG8uYWRiLCBzLXBvb2xvYy5hZGIsIHMtcnBjLmFkYiwgcy1zZWNzdGEuYWRiLCBzLXNlcXVpby5hZGIsCglzLXNoYXN0by5hZGIsIHMtc29mbGluLmFkYiwgcy1zb2ZsaW4uYWRzLCBzLXN0YWNoZS5hZGIsCglzLXRhYXNkZS5hZGIsIHMtdGFhc2RlLmFkcywgcy10YWRlY2EuYWRiLCBzLXRhZGVjYS5hZHMsCglzLXRhZGVydC5hZGIsIHMtdGFkZXJ0LmFkcywgcy10YWVuY2EuYWRiLCBzLXRhZW5jYS5hZHMsCglzLXRhcHJvYi5hZGIsIHMtdGFwcm9wLmFkcywgcy10YXJlc3QuYWRiLCBzLXRhc2RlYi5hZGIsCglzLXRhc2luaS5hZGIsIHMtdGFzaW5pLmFkcywgcy10YXNraW4uYWRiLCBzLXRhc2tpbi5hZHMsCglzLXRhc3F1ZS5hZGIsIHMtdGFzcXVlLmFkcywgcy10YXNyZW4uYWRiLCBzLXRhc3Jlbi5hZHMsCglzLXRhc3N0YS5hZGIsIHMtdGFzdXRpLmFkYiwgcy10YXN1dGkuYWRzLCBzLXRhdGFhdC5hZGIsCglzLXRhdGFhdC5hZHMsIHMtdHBvYmVuLmFkYiwgcy10cG9iZW4uYWRzLCBzLXRwb2JvcC5hZGIsCglzLXRwb3Nlbi5hZGIsIHMtdHBvc2VuLmFkcywgcy10cmFjZWIuYWRiLCBzLXRyYWNlYi5hZHMsCglzLXVuc3R5cC5hZHMsIHMtd2lkZW51LmFkYiwgc2NuLW5saXQuYWRiLCBzY24uYWRiLCBzZW0uYWRiLAoJc2VtX2FnZ3IuYWRiLCBzZW1fYXR0ci5hZGIsIHNlbV9hdHRyLmFkcywgc2VtX2Nhc2UuYWRiLAoJc2VtX2NoMTAuYWRiLCBzZW1fY2gxMS5hZGIsIHNlbV9jaDExLmFkcywgc2VtX2NoMTIuYWRiLAoJc2VtX2NoMTMuYWRiLCBzZW1fY2gxMy5hZHMsIHNlbV9jaDIuYWRiLCBzZW1fY2gzLmFkYiwgc2VtX2NoMy5hZHMsCglzZW1fY2g0LmFkYiwgc2VtX2NoNS5hZGIsIHNlbV9jaDYuYWRiLCBzZW1fY2g2LmFkcywgc2VtX2NoNy5hZGIsCglzZW1fY2g4LmFkYiwgc2VtX2NoOC5hZHMsIHNlbV9jaDkuYWRiLCBzZW1fZGlzcC5hZGIsIHNlbV9kaXN0LmFkYiwKCXNlbV9lbGFiLmFkYiwgc2VtX2VsaW0uYWRiLCBzZW1fZWxpbS5hZHMsIHNlbV9ldmFsLmFkYiwKCXNlbV9pbnRyLmFkYiwgc2VtX21lY2guYWRiLCBzZW1fcHJhZy5hZGIsIHNlbV9yZXMuYWRiLAoJc2VtX3R5cGUuYWRiLCBzZW1fdXRpbC5hZGIsIHNlbV91dGlsLmFkcywgc2VtX3ZmcHQuYWRiLAoJc2VtX3dhcm4uYWRiLCBzaW5mby5hZGIsIHNpbmZvLmFkcywgc2luZm8uaCwgc2lucHV0LWwuYWRiLAoJc2lucHV0LWwuYWRzLCBzaW5wdXQuYWRiLCBzaW5wdXQuYWRzLCBzbmFtZXMuYWRiLCBzbmFtZXMuYWRzLAoJc25hbWVzLmgsIHNwcmludC5hZGIsIHNwcmludC5hZHMsIHN0cmluZ3QuYWRiLCBzdHJpbmd0LmFkcywKCXN0cmluZ3QuaCwgc3R5bGUuYWRiLCBzd2l0Y2guYWRiLCBzd2l0Y2guYWRzLCBzeXNkZXAuYywgc3lzdGVtLmFkcywKCXRhYmxlLmFkYiwgdGFyZ3Bhcm0uYWRiLCB0YXJncGFybS5hZHMsIHRhcmd0eXBzLmMsIHRidWlsZC5hZGIsCgl0YnVpbGQuYWRzLCB0cmFjZWJhay5jLCB0cmFucy5jLCB0cmVlX2dlbi5hZGIsIHRyZWVfaW8uYWRiLAoJdHJlZXByLmFkYiwgdHJlZXByLmFkcywgdHJlZXBycy5hZHMsIHRyZWVwcnMuYWR0LCB0dHlwZXMuYWRzLAoJdHlwZXMuYWRiLCB0eXBlcy5hZHMsIHR5cGVzLmgsIHVpbnRwLmFkcywgdXJlYWxwLmFkcywgdXNhZ2UuYWRiLAoJdXRpbHMuYywgdXRpbHMyLmMsIHZhbGlkc3cuYWRiLCB4bm1ha2UuYWRiLCB4cl90YWJscy5hZGIsCgl4cl90YWJscy5hZHMsIHhyZWZfbGliLmFkYiwgeHJlZl9saWIuYWRzIDogTWVyZ2UgaW4gQUNUIGNoYW5nZXMuCgoJKiAxc3NlY3N0YS5hZGIsIDFzc2Vjc3RhLmFkcywgYS1jaGxhdDkuYWRzLCBhLWN3aWxhOS5hZHMsCglnLWVuYmxzcC5hZGIsIGctbWQ1LmFkYiwgZy1tZDUuYWRzLCBnbmF0bmFtZS5hZGIsIGduYXRuYW1lLmFkcywKCW1rZGlyLmMsIG9zaW50LWIuYWRiLCBvc2ludC1iLmFkcywgb3NpbnQtYy5hZGIsIG9zaW50LWMuYWRzLAoJb3NpbnQtbC5hZGIsIG9zaW50LWwuYWRzLCBvc2ludC1tLmFkYiwgb3NpbnQtbS5hZHMgOiBOZXcgZmlsZXMKCgkqIDNsc29jY29uLmFkcywgNXFwYXJhbWUuYWRzLCA1cXZ4d29yay5hZHMsIDVzbWFzdG9wLmFkYiwKCTV6cGFyYW1lLmFkcywgZ25hdG1haW4uYWRiLCBnbmF0bWFpbi5hZHMsIGduYXRwc3lzLmFkYiA6IFJlbW92ZWQKCgkqIG1kbGxmaWxlLmFkYiwgbWRsbGZpbGUuYWRzLCBtZGxsdG9vbC5hZGIsIG1kbGx0b29sLmFkcyA6IFJlbmFtZWQKCXRvIG1kbGwtZmlsLmFkW2JzXSBhbmQgbWRsbC11dGlsLmFkW2JzXQoKCSogbWRsbC1maWwuYWRiLCBtZGxsLWZpbC5hZHMsIG1kbGwtdXRsLmFkYiwgbWRsbC11dGwuYWRzIDogUmVuYW1lZAoJZnJvbSBtZGxsZmlsZS5hZFtic10gYW5kIG1kbGx0b29sLmFkW2JzXQoKMjAwMi0wMy0wMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogdXRpbHMuYyAoaW5pdF9nbmF0X3RvX2dudSwgaW5pdF9naWdpX2RlY2xzKTogVXNlIEFSUkFZX1NJWkUgaW4KCWxpZXUgb2YgZXhwbGljaXQgc2l6ZW9mL3NpemVvZi4KCjIwMDItMDItMjggIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1pc2MuYyAoY29weV9sYW5nX2RlY2wpOiBSZW1vdmUuCgoyMDAyLTAyLTI3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWlzYy5jOiBEZWxldGUgdHJhZGl0aW9uYWwtbW9kZS1yZWxhdGVkIGNvZGUgY29waWVkIGZyb20gdGhlCglDIGZyb250IGVuZCBidXQgbm90IHVzZWQsIG9yIHVzZWQgb25seSB0byBwZXJtaXQgdGhlIGNvbXBpbGVyCgl0byBsaW5rLgoKMjAwMi0wMi0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGFkYWludC5jIChfX2duYXRfdG9fZ21fdGltZSk6IEZpcnN0IGFyZyBpcyBpbnQsIG5vdCB0aW1lX3QuCgkqIGFkYWludC5oIChfX2duYXRfdG9fZ21fdGltZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgoyMDAyLTAxLTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pIFtOX0xvb3BfU3RhdGVtZW50XTogVXNlCglleHBhbmRfZXhpdF9sb29wX3RvcF9jb25kLgoKMjAwMS0xMi0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHV0aWxzLmMgKGVuZF9zdWJwcm9nX2JvZHkpOiBQdXNoIEdDIGNvbnRleHQgYXJvdW5kCglyZXN0X29mX2NvbXBpbGF0aW9uIGZvciBuZXN0ZWQgZnVuY3Rpb25zLgoKMjAwMS0xMi0yMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIDVub3NpbnRlLmFkczogR2V0IGRlZmluaXRpb24gb2YgImludCIgZnJvbSBJbnRlcmZhY2VzLkMuCgoyMDAxLTEyLTIzICBGbG9yaWFuIFdlaW1lciAgPGZ3QGRlbmViLmVueW8uZGU+CgoJKiBnbmF0LXN0eWxlLnRleGkgKERlY2xhcmF0aW9ucyBhbmQgVHlwZXMpOiBSZW1vdmUgYW5jaWVudCBzdHlsZQoJcnVsZSB3aGljaCB3YXMgbWFuZGF0ZWQgYnkgY29kZSBnZW5lcmF0aW9uIGlzc3Vlcy4KCgkqIGduYXQtc3R5bGUudGV4aSAoaGVhZGVyKTogQWRkIEBkaXJjYXRlZ29yeSwgQGRpcmVudHJ5LgoJKHRpdGxlIHBhZ2UpOiBSZW1vdmUgZGF0ZS4KCShnZW5lcmFsKSBBZGQgQC4vQDogd2hlcmUgYXBwcm9yaWF0ZSwgYW5kIHR3byBzcGFjZXMgYWZ0ZXIgdGhlCglmdWxsIHN0b3AgYXQgdGhlIGVuZCBvZiBhIHNlbnRlbmNlLiAgVXNlIEBzYW1wIG1hcmt1cCB3aGVuCglyZWZlcnJpbmcgY29uY3JldGUgbGV4aWNhbCBlbnRpdGllcyAoa2V5d29yZHMsIGF0dHJpYnV0ZSBuYW1lcwoJZXRjLiksIGFuZCBAc3ludGF4IGZvciBBUk0gZ3JhbW1hciBlbGVtZW50cy4gVXNlIEByIGZvciBFbmdsaXNoCgl0ZXh0IGluIGNvbW1lbnRzLiAgVXNlIEBlbXBoIGZvciBlbXBoYXNpcy4gIENoYW5nZSAiaWYtc3RhdGVtZW50cyIKCWV0Yy4gdG8gImlmIHN0YXRlbWVudHMiICh3aXRob3V0IEBzYW1wKS4gQnJlYWsgbG9uZyBsaW5lcy4gIE1ha2UKCWNhc2luZyBvZiBzZWN0aW9uIG5hbWVzIGNvbnNpc3RlbnQuCgkoSWRlbnRpZmllcnMpOiBVc2UgQHNhbXAgbWFya3VwIGZvciB2YXJpYWJsZSBuYW1lcy4KCShDb21tZW50cyk6IFVzZSBAc2FtcCBtYXJrdXAgZm9yIGNvbW1lbnQgY2hhcmFjdGVycy4gTGluZS1lbmQKCWNvbW1lbnRzIG1heSBmb2xsb3cgYW55IEFkYSBjb2RlLCBub3QganVzdCBzdGF0ZW1lbnRzLiAgRml4CgltaXNzcGVsbGluZyBvZiAiSW50ZWdlciIgYXMgImludGVnZXIiLgoJKExvb3Agc3RhdGVtZW50cyk6IERvIG5vdCB1c2UgdmFyaWFibGUgbmFtZSAiSSIsIHVzZSAiSiIuCgkoU3VicHJvZ3JhbSBEZWNsYXJhdGlvbnMpOiBEb2N1bWVudCBhbGlnbm1lbnQuCgkoU3VicHJvZ3JhbSBCb2RpZXMsIEJsb2NrIHN0YXRlbWVudHMpOiBEb2N1bWVudCBlbXB0eSBsaW5lIGJlZm9yZQoJImJlZ2luIi4KCjIwMDEtMTItMjIgIEZsb3JpYW4gV2VpbWVyICA8ZndAZGVuZWIuZW55by5kZT4KCgkqIG1ha2UuYWRiIChBZGRfU3dpdGNoKTogTWFrZSBHZW5lcmljX1Bvc2l0aW9uIGEgcHJvY2VkdXJlLiAgVGhlCglmdW5jdGlvbiBhcHByb2FjaCBkaWQgbm90IHdvcmsgd2VsbCBiZWNhdXNlIG9mIGEgc2lkZSBlZmZlY3QgKHRoZQoJZnVuY3Rpb24gY2FsbCBjb3VsZCByZWFsbG9jYXRlIHRoZSB0YWJsZSB3aGljaCB3YXMgYmVpbmcgaW5kZXhlZAoJdXNpbmcgaXRzIHJlc3VsdCkuIEZpeGVzIGFkYS80ODUxLgoKMjAwMS0xMi0xOSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGJpbmRnZW4uYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGNzdGFuZC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZm1hcC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJQ2hhbmdlIG5hbWUgZnJvbSBBZGQgZm9yIEFkZF9Ub19GaWxlX01hcCAoQWRkIGlzIG11Y2ggdG9vIGdlbmVyaWMpCglDaGFuZ2UgUGF0aF9OYW1lX09mIHRvIE1hcHBlZF9QYXRoX05hbWUKCUNoYW5nZSBGaWxlX05hbWVfT2YgdG8gTWFwcGVkX0ZpbGVfTmFtZQoJRml4IGNvcHlyaWdodCBkYXRlcyBpbiBoZWFkZXIKCgkqIGZtYXAuYWRzOgoJQ2hhbmdlIG5hbWUgZnJvbSBBZGQgZm9yIEFkZF9Ub19GaWxlX01hcCAoQWRkIGlzIG11Y2ggdG9vIGdlbmVyaWMpCglDaGFuZ2UgUGF0aF9OYW1lX09mIHRvIE1hcHBlZF9QYXRoX05hbWUKCUNoYW5nZSBGaWxlX05hbWVfT2YgdG8gTWFwcGVkX0ZpbGVfTmFtZQoJRml4IGNvcHlyaWdodCBkYXRlcyBpbiBoZWFkZXIKCgkqIGZuYW1lLXVmLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLiAgTmV3IG5hbWVzIG9mIHN0dWZmIGluIEZtYXAuCglBZGQgdXNlIGNsYXVzZSBmb3IgRm1hcC4KCgkqIG1ha2UuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIG9zaW50LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLiAgQ2hhbmdlIG9mIG5hbWVzIGluIEZtYXAuCglBZGQgdXNlIGNsYXVzZSBmb3IgRm1hcC4KCgkqIHByai1lbnYuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHByai1lbnYuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHN3aXRjaC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4gIERvIHByb3BlciByYWlzZSBvZiBCYWRfU3dpdGNoIGlmCgllcnJvciBmb3VuZCAodGhlcmUgd2VyZSBvZGQgZXhjZXB0aW9ucyB0byB0aGlzIGdlbmVyYWwgcnVsZSBpbgoJLWduYXRlYy8tZ25hdGVtIHByb2Nlc3NpbmcpCgoyMDAxLTEyLTE5ICBPbGl2aWVyIEhhaW5xdWUgPGhhaW5xdWVAZ25hdC5jb20+CgoJKiByYWlzZS5jIChfX2duYXRfZWhfcGVyc29uYWxpdHkpOiBFeGNlcHRpb24gaGFuZGxpbmcgcGVyc29uYWxpdHkKCXJvdXRpbmUgZm9yIEFkYS4gIFN0aWxsIGluIHJvdWdoIHN0YXRlLCBpbnNwaXJlZCBmcm9tIHRoZSBDKysgdmVyc2lvbgoJYW5kIHN0aWxsIGNvbnRhaW5pbmcgYSBidW5jaCBvZiBkZWJ1Z2dpbmcgYXJ0aWZhY3RzLgoJKHBhcnNlX2xzZGFfaGVhZGVyLCBnZXRfdHR5cGVfZW50cnkpOiBMb2NhbCAoc3RhdGljKSBoZWxwZXJzLCBhbHNvCglpbnNwaXJlZCBmcm9tIHRoZSBDKysgbGlicmFyeS4KCgkqIHJhaXNlLmMgKGVoX3BlcnNvbmFsaXR5KTogQWRkIGNvbW1lbnRzLiBQYXJ0IG9mIHdvcmsgZm9yIHRoZSBHQ0MgMwoJZXhjZXB0aW9uIGhhbmRsaW5nIGludGVncmF0aW9uLgoKMjAwMS0xMi0xOSAgQXJuYXVkIENoYXJsZXQgPGNoYXJsZXRAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHVzZSBvZiA1c21hc3RvcC5hZGIgd2hpY2ggaXMgb2Jzb2xldGUuCgkoSElFX1NPVVJDRVMpOiBBZGQgcy1zZWNzdGEuYWR7cyxifS4KCShISUVfT0JKUyk6IEFkZCBzLWZhdCoubwoJKFJBVkVOX1NPVVJDRVMpOiBSZW1vdmUgZmlsZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHJlcXVpcmVkLiBBZGQKCWludGVycnVwdCBoYW5kbGluZyBmaWxlcy4KCShSQVZFTl9NT0QpOiBSZW1vdmVkLCBubyBsb25nZXIgbmVlZGVkLgoKMjAwMS0xMi0xOSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGEtbmdlbGZ1LmFkYjogUmVtb3ZlID8/PyBjb21tZW50IGZvciBpbmFwcHJvcHJpYXRlIElubGluZV9BbHdheXMKCUFkZCAyMDAxIHRvIGNvcHlyaWdodCBkYXRlCgoJKiBnLXJlZ3BhdC5hZGI6IENoYW5nZSBwcmFnbWEgSW5saW5lX0Fsd2F5cyB0byBJbmxpbmUuIFRoZXJlIGlzIG5vCgluZWVkIHRvIGZvcmNlIHVuaXZlcnNhbCBpbmxpbmluZyBmb3IgdGhlc2UgY2FzZXMuCgoyMDAxLTEyLTE5ICBBcm5hdWQgQ2hhcmxldCA8Y2hhcmxldEBnbmF0LmNvbT4KCgkqIHMtdGFwcm9iLmFkYjogTWlub3IgY2xlYW4gdXBzIHNvIHRoYXQgdGhpcyB1bml0IGNhbiBiZSB1c2VkIGluCglSYXZlbnNjYXIgSEkuCgoJKiBleHBfY2g3LmFkYjogQWxsb3cgdXNlIG9mIHNlY29uZGFyeSBzdGFjayBpbiBISSBtb2RlLgoJRGlzYWxsb3cgaXQgd2hlbiBwcmFnbWEgUmVzdHJpY3Rpb25zIChOb19TZWNvbmRhcnlfU3RhY2spIGlzIHNwZWNpZmllZC4KCjIwMDEtMTItMTkgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotdHJlZS5hZHMgKFByb2plY3RfTm9kZV9SZWNvcmQpOiBBZGQgY29tbWVudHMgZm9yIGNvbXBvbmVudHMKCVBrZ19JZCBhbmQgQ2FzZV9JbnNlbnNpdGl2ZS4KCjIwMDEtMTItMTkgIFBhc2NhbCBPYnJ5IDxvYnJ5QGduYXQuY29tPgoKCSogZy1zb2NrZXQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuIEZvdW5kIHdoaWxlIHJlYWRpbmcgY29kZS4KCjIwMDEtMTItMTkgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBwcmotdHJlZS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0yMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY29uZmlnLWxhbmcuaW4gKGRpZmZfZXhjbHVkZXMpOiBSZW1vdmUuCgoyMDAxLTEyLTE3ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfU2VsZWN0ZWRfQ29tcG9uZW50KTogZG8gbm90IGdlbmVyYXRlIGEKCWRpc2NyaW1pbmFudCBjaGVjayBpZiB0aGUgc2VsZWN0ZWQgY29tcG9uZW50IGlzIGEgY29tcG9uZW50IG9mCgl0aGUgYXJndW1lbnQgb2YgYW4gaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlLgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGNhc2Ugb2YgYXJpdGhtZXRpYyBvcGVyYXRvcnMpOiBJZiByZXN1bHQKCXR5cGUgaXMgcHJpdmF0ZSwgdGhlIGdudV90eXBlIGlzIHRoZSBiYXNlIHR5cGUgb2YgdGhlIGZ1bGwgdmlldywKCWdpdmVuIHRoYXQgdGhlIGZ1bGwgdmlldyBpdHNlbGYgbWF5IGJlIGEgc3VidHlwZS4KCjIwMDEtMTItMTcgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fcmVzLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX1JlYWxfTGl0ZXJhbCk6IEFkZCBtaXNzaW5nIHRoaXJkCglwYXJhbWV0ZXIgaW4gY2FsbCB0byBNYWNoaW5lICh1bmtub3duIGhvcnJpYmxlIGVmZmVjdHMgZnJvbSB0aGlzCglvbWlzc2lvbikuCgoJKiB1cmVhbHAuaDogQWRkIGRlZmluaXRpb24gb2YgUm91bmRfRXZlbiBmb3IgY2FsbCB0byBNYWNoaW5lCglBZGQgdGhpcmQgcGFyYW1ldGVyIGZvciBNYWNoaW5lCgoyMDAxLTEyLTE3ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX3dhcm4uYWRiIChDaGVja19PbmVfVW5pdCk6IFN1cHByZXNzIHdhcm5pbmdzIGNvbXBsZXRlbHkgb24KCXByZWRlZmluZWQgdW5pdHMgaW4gTm9fUnVuX1RpbWUgbW9kZS4KCjIwMDEtMTItMTcgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAZ25hdC5jb20+CgoJKiBtaXNjLmMgKGluc24tY29kZXMuaCk6IE5vdyBpbmNsdWRlLgoKMjAwMS0xMi0xNyAgT2xpdmllciBIYWlucXVlIDxoYWlucXVlQGduYXQuY29tPgoKCSogYS1leGNlcHQuYWRiOiBQcmVwYXJhdGlvbiB3b3JrIGZvciBmdXR1cmUgaW50ZWdyYXRpb24gb2YgdGhlIEdDQyAzCglleGNlcHRpb24gaGFuZGxpbmcgbWVjaGFuaXNtCgkoTm90aWZ5X0hhbmRsZWRfRXhjZXB0aW9uLCBOb3RpZnlfVW5oYW5kbGVkX0V4Y2VwdGlvbik6IE5ldyByb3V0aW5lcwoJdG8gZmFjdG9yaXplIHByZXZpb3VzIGNvZGUgc2VxdWVuY2VzIGFuZCBtYWtlIHRoZW0gZXh0ZXJuYWxseSBjYWxsYWJsZSwKCWUuZy4gZm9yIHRoZSBBZGEgcGVyc29uYWxpdHkgcm91dGluZSB3aGVuIHRoZSBHQ0MgMyBtZWNoYW5pc20gaXMgdXNlZC4KCShQcm9wYWdhdGVfRXhjZXB0aW9uLCBSYWlzZV9DdXJyZW50X0V4Y2VwLCBSYWlzZV9Gcm9tX1NpZ25hbF9IYW5kbGVyKToKCVVzZSB0aGUgbmV3IG5vdGlmaWNhdGlvbiByb3V0aW5lcy4KCjIwMDEtMTItMTcgIEVtbWFudWVsIEJyaW90IDxicmlvdEBnbmF0LmNvbT4KCgkqIHByai10cmVlLmFkcyAoRmlyc3RfQ2hvaWNlX09mKTogRG9jdW1lbnQgdGhlIHdoZW4gb3RoZXJzIGNhc2UKCjIwMDEtMTItMTcgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGduYXQuY29tPgoKCSogYmluZGdlbi5hZGIgKEdlbl9BZGFfSW5pdF8qKTogU2V0IHByaW9yaXR5IG9mIGVudmlyb25tZW50IHRhc2sgaW4KCUhJLUUgbW9kZSwgaW4gb3JkZXIgdG8gc3VwcG9ydCBSYXZlbnNjYXIgcHJvZmlsZSBwcm9wZXJseS4KCgkqIGNzdGFuZC5hZGIgKENyZWF0ZV9TdGFuZGFyZCk6IER1cmF0aW9uIGlzIGEgMzIgYml0IHR5cGUgaW4gSEktRQoJbW9kZSBvbiAzMiBiaXRzIHRhcmdldHMuCgoyMDAxLTEyLTE3ICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogZm1hcC5hZGI6IEluaXRpYWwgdmVyc2lvbi4KCgkqIGZtYXAuYWRzOiBJbml0aWFsIHZlcnNpb24uCgoJKiBmbmFtZS11Zi5hZGIgKEdldF9GaWxlX05hbWUpOiBVc2UgbWFwcGluZyBpZiB1bml0IG5hbWUgbWFwcGVkLgoJSWYgc2VhcmNoIGlzIHN1Y2Nlc3NmdWxseSBkb25lLCBhZGQgdG8gbWFwcGluZy4KCgkqIGZyb250ZW5kLmFkYjogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBpZiBhIC1nbmF0ZW0gc3dpdGNoIHdhcyB1c2VkLgoKCSogbWFrZS5hZGI6CgkoR25hdG1ha2UpOiBBZGQgbmV3IGxvY2FsIHZhcmlhYmxlIE1hcHBpbmdfRmlsZV9OYW1lLgoJIENyZWF0ZSBtYXBwaW5nIGZpbGUgd2hlbiB1c2luZyBwcm9qZWN0IGZpbGUocykuCgkgRGVsZXRlIG1hcHBpbmcgZmlsZSBiZWZvcmUgZXhpdGluZy4KCgkqIG9wdC5hZHMgKE1hcHBpbmdfRmlsZV9OYW1lKTogTmV3IHZhcmlhYmxlCgoJKiBvc2ludC5hZGIgKEZpbmRfRmlsZSk6IFVzZSBwYXRoIG5hbWUgZm91bmQgaW4gbWFwcGluZywgaWYgYW55LgoKCSogcHJqLWVudi5hZGIgKENyZWF0ZV9NYXBwaW5nX0ZpbGUpOiBOZXcgcHJvY2VkdXJlCgoJKiBwcmotZW52LmFkcyAoQ3JlYXRlX01hcHBpbmdfRmlsZSk6IE5ldyBwcm9jZWR1cmUuCgoJKiBzd2l0Y2guYWRiIChTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IEFkZCBwcm9jZXNzaW5nIGZvciAtZ25hdGVtCgkoTWFwcGluZ19GaWxlKQoKCSogdXNhZ2UuYWRiOiBBZGQgZW50cnkgZm9yIG5ldyBzd2l0Y2ggLWduYXRlbS4KCgkqIE1ha2VmaWxlLmluOiBBZGQgZGVwZW5kZW5jaWVzIGZvciBmbWFwLm8uCgoyMDAxLTEyLTE3ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMTAuYWRiIChBbmFseXplX1dpdGhfQ2xhdXNlKTogUmV0cmlldmUgcHJvcGVyIGVudGl0eSB3aGVuIHVuaXQKCWlzIGEgcGFja2FnZSBpbnN0YW50aWF0aW9uIHJld3JpdHRlbiBhcyBhIHBhY2thZ2UgYm9keS4KCShJbnN0YWxsX1dpdGhlZF9Vbml0KTogVW5kbyBwcmV2aW91cyBjaGFuZ2UsIG5vdyByZWR1bmRhbnQuCgoyMDAxLTEyLTE3ICBHYXJ5IERpc211a2VzIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIGxheW91dC5hZGI6CgkoQ29tcHV0ZV9MZW5ndGgpOiBNb3ZlIGNvbnZlcnNpb24gdG8gVW5zaWduZWQgdG8gY2FsbGVycy4KCShHZXRfTWF4X1NpemUpOiBDb252ZXJ0IExlbiBleHByZXNzaW9uIHRvIFVuc2lnbmVkIGFmdGVyIGNhbGxzIHRvCglDb21wdXRlX0xlbmd0aCBhbmQgRGV0ZXJtaW5lX1JhbmdlLgoJKExheW91dF9BcnJheV9UeXBlKTogQ29udmVydCBMZW4gZXhwcmVzc2lvbiB0byBVbnNpZ25lZCBhZnRlciBjYWxscyB0bwoJQ29tcHV0ZV9MZW5ndGggYW5kIERldGVybWluZV9SYW5nZS4KCUFib3ZlIGNoYW5nZXMgZml4IHByb2JsZW0gd2l0aCBsZW5ndGggY29tcHV0YXRpb24gZm9yIHN1cGVybnVsbCBhcnJheXMKCXdoZXJlIE1heCAoTGVuLCAwKSB3YXNuJ3QgZ2V0dGluZyBhcHBsaWVkIGR1ZSB0byB0aGUgVW5zaWduZWQKCWNvbnZlcnNpb24gdXNlZCBieSBDb21wdXRlX0xlbmd0aC4KCjIwMDEtMTItMTcgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGduYXQuY29tPgoKCSogcnRzZmluZC5hZHM6CgkoT0tfVG9fVXNlX0luX05vX1J1bl9UaW1lX01vZGUpOiBBbGxvdyBBZGEuRXhjZXB0aW9ucyBhbmQKCSBTeXN0ZW0uU2Vjb25kYXJ5X1N0YWNrLgoJKE9LX1RvX1VzZV9Jbl9SYXZlbnNjYXJfTW9kZSk6IE5ldyB0YWJsZSBuZWVkZWQgdG8gaW1wbGVtZW50IFJhdmVuc2NhcgoJIGluIEhJLUUgbW9kZS4KCVJlbW92ZSB1bnVzZWQgZW50aXR5IFJFX0V4Y2VwdGlvbl9EYXRhLgoKCSogcnRzZmluZC5hZGIgKFJURSk6IEFsbG93IFJhdmVuc2NhciBQcm9maWxlIGluIEhJIG1vZGUuCgoJKiByaWRlbnQuYWRzIChOb19TZWNvbmRhcnlfU3RhY2spOiBOZXcgcmVzdHJpY3Rpb24uCgoyMDAxLTEyLTE3ICBKb2VsIEJyb2JlY2tlciA8YnJvYmVja2VAZ25hdC5jb20+CgoJKiBnbmF0X3JtLnRleGk6IEZpeCBtaW5vciB0eXBvcy4gRm91bmQgd2hpbGUgcmVhZGluZyB0aGUgc2VjdGlvbgoJcmVnYXJkaW5nICJCaXRfT3JkZXIgQ2xhdXNlcyIgdGhhdCB3YXMgc2VudCB0byBhIGN1c3RvbWVyLgoJVmVyeSBpbnRlcmVzdGluZyBkb2N1bWVudGF0aW9uIQoKMjAwMS0xMi0xNyAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jYXNlLmFkYiAoQ2hvaWNlX0ltYWdlKTogQXZvaWQgY3JlYXRpbmcgaW1wcm9wZXIgY2hhcmFjdGVyCglsaXRlcmFsIG5hbWVzIGJ5IHVzaW5nIHRoZSByb3V0aW5lIFNldF9DaGFyYWN0ZXJfTGl0ZXJhbF9OYW1lLiBUaGlzCglmaXhlcyBib21icyBpbiBjZXJ0YWluIGVycm9yIG1lc3NhZ2UgY2FzZXMuCgoyMDAxLTEyLTE3ICBBcm5hdWQgQ2hhcmxldCA8Y2hhcmxldEBnbmF0LmNvbT4KCgkqIGEtcmVhdGltLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwMS0xMi0xNyAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoVmFsaWRhdGVfRGVyaXZlZF9UeXBlX0luc3RhbmNlKTogSGFuZGxlIHByb3Blcmx5IHRoZQoJY2FzZSB3aGVyZSB0aGUgZm9ybWFsIGlzIGFuIGV4dGVuc2lvbiBvZiBhbm90aGVyIGZvcm1hbCBpbiB0aGUgY3VycmVudAoJdW5pdCBvciBpbiBhIHBhcmVudCBnZW5lcmljIHVuaXQuCgoyMDAxLTEyLTE3ICBBcm5hdWQgQ2hhcmxldCA8Y2hhcmxldEBnbmF0LmNvbT4KCgkqIHMtdHBvc2VuLmFkYjogVXBkYXRlIGNvbW1lbnRzLiAgTWlub3IgcmVmb3JtYXR0aW5nLgoJTWlub3IgY29kZSBjbGVhbiB1cC4KCgkqIHMtdGFyZXN0LmFkYjogVXBkYXRlIGNvbW1lbnRzLiAgTWlub3IgY29kZSByZW9yZ2FuaXphdGlvbi4KCjIwMDEtMTItMTcgIEdhcnkgRGlzbXVrZXMgPGRpc211a2VzQGduYXQuY29tPgoKCSogZXhwX2F0dHIuYWRiIChBdHRyaWJ1dGVfVGFnKTogU3VwcHJlc3MgZXhwYW5zaW9uIG9mIDx0eXBlX25hbWU+J1RhZwoJd2hlbiBKYXZhX1ZNLgoKMjAwMS0xMi0xNyAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF9hdHRyLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEyLTE3ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX0Rlcml2ZWRfUHJpdmF0ZV9UeXBlKTogUmVmaW5lIGNoZWNrIHRvIGhhbmRsZQoJZGVyaXZhdGlvbnMgbmVzdGVkIHdpdGhpbiBhIGNoaWxkIHVuaXQ6IHZlcmlmeSB0aGF0IHRoZSBwYXJlbnQKCXR5cGUgaXMgZGVjbGFyZWQgaW4gYW4gb3V0ZXIgc2NvcGUuCgoyMDAxLTEyLTE3ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMTcgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fd2Fybi5hZGIgKENoZWNrX09uZV9Vbml0KTogSW4gTm9fUnVuX1RpbWUgbW9kZSwgZG8gbm90IHBvc3QKCXdhcm5pbmcgaWYgY3VycmVudCB1bml0IGlzIGEgcHJlZGVmaW5lZCBvbmUsIGZyb20gd2hpY2ggYm9kaWVzIG1heQoJaGF2ZSBiZWVuIGRlbGV0ZWQuCgoyMDAxLTEyLTE3ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZXZhbF9mYXQuYWRzOiBBZGQgY29tbWVudCB0aGF0IFJvdW5kX0V2ZW4gaXMgcmVmZXJlbmNlZCBpbiBBZGEgY29kZQoJRml4IGhlYWRlciBmb3JtYXQuIEFkZCAyMDAxIHRvIGNvcHlyaWdodCBkYXRlLgoKCSogZXhwX2RidWcuYWRiIChHZXRfRW5jb2RlZF9OYW1lKTogRml4IG91dCBvZiBib3VuZHMgcmVmZXJlbmNlLAoJd2hpY2ggY2F1c2VkIENFIGR1cmluZyBjb21waWxhdGlvbiBpZiBjaGVja3Mgd2VyZSBlbmFibGVkLgoKMjAwMS0xMi0xNyAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiOgoJKFN3aXRjaGVzX09mKTogTmV3IGZ1bmN0aW9uCgkoVGVzdF9JZl9SZWxhdGl2ZV9QYXRoKTogTmV3IHByb2NlZHVyZQoJKEFkZF9Td2l0Y2hlcyk6IFVzZSBuZXcgZnVuY3Rpb24gU3dpdGNoZXNfT2YKCShDb2xsZWN0X0FyZ3VtZW50c19BbmRfQ29tcGlsZSk6IFVzZSBuZXcgZnVuY3Rpb24gU3dpdGNoZXNfT2YuCglXaGVuIHVzaW5nIGEgcHJvamVjdCBmaWxlLCB0ZXN0IGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRpdmUKCXNlYXJjaCBwYXRoLiBGYWlsIGlmIHRoZXJlIGFyZSBhbnkuCgkoR25hdG1ha2UpOiBPbmx5IGFkZCBzd2l0Y2hlcyBmb3IgdGhlIHByaW1hcnkgZGlyZWN0b3J5IHdoZW4gbm90IHVzaW5nCglhIHByb2plY3QgZmlsZS4gV2hlbiB1c2luZyBhIHByb2plY3QgZmlsZSwgY2hhbmdlIGRpcmVjdG9yeSB0byB0aGUKCW9iamVjdCBkaXJlY3Rvcnkgb2YgdGhlIG1haW4gcHJvamVjdCBmaWxlLiBXaGVuIHVzaW5nIGEgcHJvamVjdCBmaWxlLAoJdGVzdCBpZiB0aGVyZSBhcmUgYW55IHJlbGF0aXZlIHNlYXJjaCBwYXRoLiBGYWlsIGlmIHRoZXJlIGFyZSBhbnkuCglXaGVuIHVzaW5nIGEgcHJvamVjdCBmaWxlLCBmYWlsIGlmIHNwZWNpZmllZCBleGVjdXRhYmxlIGlzIHJlbGF0aXZlCglwYXRoIHdpdGggZGlyZWN0b3J5IGluZm9ybWF0aW9uLCBhbmQgcHJlcGVuZCBleGVjdXRhYmxlLCBpZiBub3QKCXNwZWNpZmllZCBhcyBhbiBhYnNvbHV0ZSBwYXRoLCB3aXRoIHRoZSBleGVjIGRpcmVjdG9yeS4gIE1ha2Ugc3VyZQoJdGhhdCBvbmx5IG9uZSAtbyBzd2l0Y2ggaXMgdHJhbnNtaXR0ZWQgdG8gdGhlIGxpbmtlci4KCgkqIHByai1hdHRyLmFkYiAoSW5pdGlhbGl6YXRpb25fRGF0YSk6IEFkZCBwcm9qZWN0IGF0dHJpYnV0ZSBFeGVjX0RpcgoKCSogcHJqLW5tc2MuYWRiOgoJKEFkYV9DaGVjayk6IEdldCBTcGVjX1N1ZmZpeF9Mb2MgYW5kIEltcGxfU3VmZml4X0xvYywKCXdoZW4gdXNpbmcgYSBub24gc3RhbmRhcmQgbmFtaW5nIHNjaGVtZS4KCShDaGVja19BZGFfTmFtaW5nX1NjaGVtZSk6IE1ha2Ugc3VyZSB0aGF0IGVycm9yIG1lc3NhZ2VzCglkbyBub3QgcmFpc2UgZXhjZXB0aW9ucy4KCShJc19JbGxlZ2FsX0FwcGVuZCk6IFJldHVybiBUcnVlIGlmIHRoZXJlIGlzIG5vIGRvdCBpbiB0aGUgc3VmZml4LgoJKExhbmd1YWdlX0luZGVwZW5kZW50X0NoZWNrKTogQ2hlY2sgdGhlIGV4ZWMgZGlyZWN0b3J5LgoKCSogcHJqLmFkYiAoUHJvamVjdF9FbXB0eSk6IEFkZCBuZXcgY29tcG9uZW50IEV4ZWNfRGlyZWN0b3J5CgoJKiBwcmouYWRzOgoJKERlZmF1bHRfQWRhX1NwZWNfU3VmZml4LCBEZWZhdWx0X0FkYV9JbXBsX1N1ZmZpeCk6IEFkZCBkZWZhdWx0cy4KCShQcm9qZWN0X0RhdGEpOiBBZGQgY29tcG9uZW50IEV4ZWNfRGlyZWN0b3J5CgoJKiBzbmFtZXMuYWRiOiBVcGRhdGVkIHRvIG1hdGNoIHNuYW1lcy5hZHMgcmV2aXNpb24gMS4yMTUKCgkqIHNuYW1lcy5hZHM6IEFkZGVkIEV4ZWNfRGlyCgoyMDAxLTEyLTE3ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogbWFrZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcHJqLW5tc2MuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHNuYW1lcy5hZGI6IFVwZGF0ZWQgdG8gbWF0Y2ggc25hbWVzLmFkcwoKCSogc25hbWVzLmFkczogQWxwaGViZXRpemUgZW50cmllcyBmb3IgcHJvamVjdCBmaWxlCgoyMDAxLTEyLTE3ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogdHJhbnMuYyAocHJvY2Vzc19mcmVlemVfZW50aXR5KTogRG8gbm90aGluZyBpZiB0aGUgZW50aXR5IGlzIGEKCXN1YnByb2dyYW0gdGhhdCB3YXMgYWxyZWFkeSBlbGFib3JhdGVkLgoKMjAwMS0xMi0xNyAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBvYmplY3QpOiBEbyBub3QgYmFjay1hbm5vdGF0ZSBBbGlnbm1lbnQKCWFuZCBFc2l6ZSBpZiBvYmplY3QgaXMgcmVmZXJlbmNlZCB2aWEgcG9pbnRlci4KCjIwMDEtMTItMTcgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9WYXJpYW50X1BhcnQpOiBjaGVjayB0aGF0IHR5cGUgb2YgZGlzY3JpbWluYW50CglpcyBkaXNjcmV0ZSBiZWZvcmUgYW5hbHl6aW5nIGNob2ljZXMuCgoyMDAxLTEyLTE3ICBKb2VsIEJyb2JlY2tlciA8YnJvYmVja2VAZ25hdC5jb20+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX091dHB1dF9GaWxlX0FkYSk6IEdlbmVyYXRlIGEgbmV3IEMtbGlrZSBzdHJpbmcKCWNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIEFkYSBNYWluIFByb2dyYW0uIFRoaXMgc3RyaW5nIGlzIG1haW5seQoJaW50ZW5kZWQgZm9yIHRoZSBkZWJ1Z2dlci4KCShHZW5fT3V0cHV0X0ZpbGVfQyk6IERvIHRoZSBlcXVpdmFsZW50IGNoYW5nZSB3aGVuIGdlbmVyYXRpbmcgYSBDIGZpbGUuCgoyMDAxLTEyLTE3ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogYWxpLmFkYjogU2V0IG5ldyBEdW1teV9FbnRyeSBmaWVsZCBpbiBkZXBlbmRlbmN5IGVudHJ5CgoJKiBhbGkuYWRzOiBBZGQgRHVtbXlfRW50cnkgZmllbGQgdG8gc291cmNlIGRlcGVuZGVuY3kgdGFibGUKCgkqIGJjaGVjay5hZGIgKENoZWNrX0NvbnNpc3RlbmN5KTogSWdub3JlIGR1bW15IEQgbGluZXMKCgkqIGxpYi13cml0LmFkYiAoV3JpdF9BTEkpOiBXcml0ZSBkdW1teSBEIGxpbmVzIGZvciBtaXNzaW5nIHNvdXJjZSBmaWxlcwoKCSogbGliLXdyaXQuYWRzOiBEb2N1bWVudCBkdW1teSBEIGxpbmVzIGZvciBtaXNzaW5nIGZpbGVzLgoKCSogdHlwZXMuYWRzOiAoRHVtbXlfVGltZV9TdGFtcCk6IE5ldyB2YWx1ZSBmb3Igbm9uLWV4aXN0YW50IGZpbGVzCgoyMDAxLTEyLTE3ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogYWxpLmFkYjogVHlwZSByZWZlcmVuY2UgZG9lcyBub3QgcmVzZXQgY3VycmVudCBmaWxlLgoKCSogYWxpLmFkYjogUmVjb2duaXplIGFuZCBzY2FuIHJlbmFtaW5nIHJlZmVyZW5jZQoKCSogYWxpLmFkczogQWRkIHNwZWMgZm9yIHN0b3JpbmcgcmVuYW1pbmcgcmVmZXJlbmNlcy4KCgkqIGxpYi14cmVmLmFkczogQWRkIGRvY3VtZW50YXRpb24gZm9yIGhhbmRsaW5nIG9mIHJlbmFtaW5nIHJlZmVyZW5jZXMKCgkqIGxpYi14cmVmLmFkYjogSW1wbGVtZW50IG91dHB1dCBvZiByZW5hbWluZyByZWZlcmVuY2UuCgoJKiBjaGVja3MuYWRiOgoJKERldGVybWluZV9SYW5nZSk6IERvY3VtZW50IGxvY2FsIHZhcmlhYmxlcwoJKERldGVybWluZV9SYW5nZSk6IE1ha2Ugc3VyZSBIYm91bmQgaXMgaW5pdGlhbGl6ZWQuIEl0IGxvb2tzIGFzIHRob3VnaAoJIHRoZXJlIGNvdWxkIGJlIGEgcmVhbCBwcm9ibGVtIGhlcmUgd2l0aCBhbiB1bmluaXRpYWxpemVkIHJlZmVyZW5jZQoJIHRvIEhib3VuZCwgYnV0IG5vIGFjdHVhbCBleGFtcGxlIG9mIGZhaWx1cmUgaGFzIGJlZW4gZm91bmQuCgoyMDAxLTEyLTE3ICBMYXVyZW50IFBhdXRldCA8cGF1dGV0QGduYXQuY29tPgoKCSogZy1zb2NrZXQuYWRzOgoJRml4IGNvbW1lbnQgb2YgU2h1dGRvd25fU29ja2V0IGFuZCBDbG9zZV9Tb2NrZXQuIFRoZXNlIGZ1bmN0aW9ucwoJc2hvdWxkIG5vdCBmYWlsIHNpbGVudGx5IGJlY2F1c2UgaWYgdGhleSBhcmUgY2FsbGVkIHR3aWNlLCB0aGlzCglwcm9iYWJseSBtZWFucyB0aGF0IHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHVzZXIgcHJvZ3JhbS4KCUFueXdheSwgdGhpcyBiZWhhdmlvdXIgaXMgY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mIHRoaXMgdW5pdC4KCVdoZW4gYW4gZXJyb3Igb2NjdXJzLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIHdpdGggdGhlIGVycm9yIG1lc3NhZ2UKCWFzIGV4Y2VwdGlvbiBtZXNzYWdlLgoKMjAwMS0xMi0xNyAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGZyb250ZW5kLmFkYjogTW92ZSBjYWxsIHRvIENoZWNrX1VudXNlZF9XaXRocyBmcm9tIEZyb250ZW5kLCBzbwoJdGhhdCBpdCBoYXBwZW5zIGJlZm9yZSBtb2RpZmljYXRpb24gb2YgU2xvYyB2YWx1ZXMgZm9yIC1nbmF0RC4KCgkqIGduYXQxZHJ2LmFkYjogTW92ZSBjYWxsIHRvIENoZWNrX1VudXNlZF9XaXRocyB0byBGcm9udGVuZCwKCXNvIHRoYXQgaXQgaGFwcGVucyBiZWZvcmUgbW9kaWZpY2F0aW9uIG9mIFNsb2MgdmFsdWVzIGZvciAtZ25hdEQuCgoJKiBzd2l0Y2guYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBzZW1fY2g3LmFkYjogV3JhcCBjb21tZW50LgoKMjAwMS0xMi0xNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogNWF0YXByb3AuYWRiLCA1YXRwb3BzcC5hZGIsIDVmdGFwcm9wLmFkYiwgNWdtYXN0b3AuYWRiLAoJNWd0YXByb3AuYWRiLCA1aHRhcHJvcC5hZGIsIDVpdGFwcm9wLmFkYiwgNWxpbnRtYW4uYWRiLAoJNW9tYXN0b3AuYWRiLCA1b29zaW50ZS5hZGIsIDVvdGFwcm9wLmFkYiwgNXN0YXByb3AuYWRiLAoJNXZpbnRlcnIuYWRiLCA1dnRhcHJvcC5hZGIsIDV2dHBvcGRlLmFkYiwgNXdpbnRtYW4uYWRiLAoJNXd0YXByb3AuYWRiLCA1emludGVyci5hZGIsIDV6dGFwcm9wLmFkYiwgNnZjc3RyZWEuYWRiLAoJN3NpbnRtYW4uYWRiLCA3c3RhcHJvcC5hZGIsIDlkcnBjLmFkYiwgQ2hhbmdlTG9nLCBNYWtlZmlsZS5pbiwKCWEtZXhjZXB0LmFkYiwgYS10YWdzLmFkcywgYS10YXNhdHQuYWRiLCBhLXRlaW9lZC5hZGIsCglhLXRleHRpby5hZHMsIGEtd2l0ZWlvLmFkcywgYS13dGVkaXQuYWRiLCBhbGkuYWRzLCBjb21wZXJyLmFkYiwKCWNzdGFuZC5hZGIsIGVpbmZvLmFkcywgZXJyb3V0LmFkYiwgZXhwX2NoMTEuYWRiLCBleHBfY2gyLmFkYiwKCWV4cF9jaDMuYWRiLCBleHBfY2g0LmFkYiwgZXhwX2NoNS5hZGIsIGV4cF9jaDYuYWRiLCBleHBfY2g5LmFkYiwKCWV4cF91dGlsLmFkYiwgZXhwX3V0aWwuYWRzLCBmbmFtZS11Zi5hZGIsIGctY2dpLmFkcywgZy1leGN0cmEuYWRzLAoJZy1leHBlY3QuYWRzLCBnLXJlZ2lzdC5hZGIsIGctc3BpcGF0LmFkYiwgZ25hdGNob3AuYWRiLAoJZ25hdGxpbmsuYWRiLCBnbmF0bHMuYWRiLCBnbmF0bWFpbi5hZGIsIGduYXRtZW0uYWRiLCBpbml0LmMsCgltYWtlLmFkYiwgbWFrZS5hZHMsIG1kbGx0b29sLmFkYiwgbmxpc3RzLmFkcywgb3NpbnQuYWRzLAoJcGFyLWNoMy5hZGIsIHBhci1jaDQuYWRiLCBwYXItY2g1LmFkYiwgcGFyLWNoNi5hZGIsIHBhci5hZGIsCglyZXBpbmZvLmFkYiwgcy1mYXRmbHQuYWRzLCBzLWZhdGxmbC5hZHMsIHMtZmF0bGxmLmFkcywKCXMtZmF0c2ZsLmFkcywgcy1maW5pbXAuYWRiLCBzLWZpbmltcC5hZHMsIHMtaW50ZXJyLmFkYiwKCXMtc2Vjc3RhLmFkcywgcy1zaGFzdG8uYWRzLCBzLXN0YWxpYi5hZGIsIHMtc3RhbGliLmFkcywKCXMtdGFyZXN0LmFkcywgcy10YXNkZWIuYWRiLCBzLXRhc3N0YS5hZGIsIHMtdGFzc3RhLmFkcywKCXMtdmFmbG9wLmFkcywgc2NhbnMuYWRzLCBzY24uYWRiLCBzZW0uYWRzLCBzZW1fYWdnci5hZGIsCglzZW1fYXR0ci5hZGIsIHNlbV9jYXNlLmFkcywgc2VtX2NoMTAuYWRiLCBzZW1fY2gxMi5hZGIsCglzZW1fY2gxMy5hZGIsIHNlbV9jaDMuYWRiLCBzZW1fY2gzLmFkcywgc2VtX2NoNS5hZGIsIHNlbV9jaDcuYWRiLAoJc2VtX2NoOC5hZGIsIHNlbV9jaDguYWRzLCBzZW1fdHlwZS5hZGIsIHNlbV91dGlsLmFkcywgc2luZm8uYWRzLAoJc3ByaW50LmFkYiwgdGJ1aWxkLmFkcywgdHlwZXMuYWRzLCB1dGlscy5jLCB4ZWluZm8uYWRiOiBGaXgKCXNwZWxsaW5nIGVycm9ycy4KCjIwMDEtMTItMTQgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBvc2ludC5hZGIoQ3JlYXRlX0RlYnVnX0ZpbGUpOiBXaGVuIGFuIG9iamVjdCBmaWxlIGlzIHNwZWNpZmllZCwKCXB1dCB0aGUgLmRnIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBvYmplY3QgZmlsZS4KCjIwMDEtMTItMTQgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBvc2ludC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogbGliLXhyZWYuYWRiIChPdXRwdXRfSW5zdGFudGlhdGlvbik6IE5ldyBwcm9jZWR1cmUgdG8gZ2VuZXJhdGUKCWluc3RhbnRpYXRpb24gcmVmZXJlbmNlcy4KCgkqIGxpYi14cmVmLmFkczogQWRkIGRvY3VtZW50YXRpb24gb2YgaGFuZGxpbmcgb2YgZ2VuZXJpYyByZWZlcmVuY2VzLgoKCSogYWxpLmFkYiAoUmVhZF9JbnN0YW50aWF0aW9uX1JlZik6IE5ldyBwcm9jZWR1cmUgdG8gcmVhZAoJaW5zdGFudGlhdGlvbiByZWZlcmVuY2VzCgoJKiBhbGkuYWRzOiBBZGQgc3BlYyBmb3Igc3RvcmluZyBpbnN0YW50aWF0aW9uIHJlZmVyZW5jZXMKCgkqIGJpbmR1c2cuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHN3aXRjaC5hZGI6IEFkZCBlbnRyeSBmb3IgTGF0aW4tNSAoQ3lyaWxsaWMgSVNPLTg4NTktNSkKCgkqIHVzYWdlLmFkYjogQWRkIGVudHJ5IGZvciBMYXRpbi01IChDeXJpbGxpYyBJU08tODg1OS01KQoKCSogZ25hdGNtZC5hZGI6IEFkZCBlbnRyeSBmb3IgTGF0aW4tNSAoQ3lyaWxsaWMgSVNPLTg4NTktNSkKCgkqIGNzZXRzLmFkYjogQWRkIGVudHJ5IGZvciBMYXRpbi01IChDeXJpbGxpYyBJU08tODg1OS01KQoKCSogY3NldHMuYWRzOgoJRml4IGhlYWRlciBmb3JtYXQKCUFkZCAyMDAxIHRvIGNvcHlyaWdodCBkYXRlCglBZGQgZW50cnkgZm9yIExhdGluLTUgKEN5cmlsbGljIElTTy04ODU5LTUpCgoyMDAxLTEyLTE0ICBNYXR0IEdpbmdlbGwgPGdpbmdlbGxAZ25hdC5jb20+CgoJKiBhZGFpbnQuYzogbWt0ZW1wIGlzIGEgbWFjcm8gb24gTHlueCBhbmQgY2FuIG5vdCBiZSB1c2VkIGFzIGFuCglleHByZXNzaW9uLgoKMjAwMS0xMi0xNCAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIG1pc2MuYyAoZ25hdF9leHBhbmRfY29uc3RhbnQpOiBEbyBub3Qgc3RyaXAgVU5DSEVDS0VEX0NPTlZFUlRfRVhQUgoJaWYgb3BlcmFuZCBpcyBDT05TVFJVQ1RPUi4KCjIwMDEtMTItMTQgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX0Fzc2lnbm1lbnRfU3RhdGVtZW50KTogU2V0IGxpbmVubwoJYmVmb3JlIGVtaXRpbmcgY2hlY2sgb24gcmlnaHQtaGFuZCBzaWRlLCBzbyB0aGF0IGV4Y2VwdGlvbiBpbmZvcm1hdGlvbgoJaXMgY29ycmVjdC4KCjIwMDEtMTItMTQgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAZ25hdC5jb20+CgoJKiB1dGlscy5jIChjcmVhdGVfdmFyX2RlY2wpOiBUaHJvdyBhd2F5IGluaXRpYWxpemluZyBleHByZXNzaW9uCglpZiBqdXN0IGFubm90YXRpbmcgdHlwZXMgYW5kIG5vbi1jb25zdGFudC4KCjIwMDEtMTItMTQgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotbm1zYy5hZGI6IChBZGFfQ2hlY2spOiBNaWdyYXRlIGRyb20gQWRhX0RlZmF1bHRfLi4uIHRvCglEZWZhdWx0X0FkYV8uLi4KCgkqIHByai5hZGI6IChBZGFfRGVmYXVsdF9TcGVjX1N1ZmZpeCwgQWRhX0RlZmF1bHRfSW1wbF9TdWZmaXgpOgoJUmVtb3ZlIGZ1bmN0aW9ucy4KCShEZWZhdWx0X0FkYV9TcGVjX1N1ZmZpeCwgRGVmYXVsdF9BZGFfSW1wbF9TdWZmaXgpOiBNb3ZlIHRvIHNwZWMuCgoJKiBwcmouYWRzOiAoQWRhX0RlZmF1bHRfU3BlY19TdWZmaXgsIEFkYV9EZWZhdWx0X0ltcGxfU3VmZml4KToKCVJlbW92ZSBmdW5jdGlvbnMuCgkoRGVmYXVsdF9BZGFfU3BlY19TdWZmaXgsIERlZmF1bHRfQWRhX0ltcGxfU3VmZml4KTogTW92ZSBmcm9tIGJvZHkuCgoyMDAxLTEyLTE2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBDaGFuZ2VMb2c6IFJlbW92ZSBwaWVjZSBvZiBkaWZmIG91dHB1dC4KCjIwMDEtMTItMTQgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIGNvbmZpZy1sYW5nLmluOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZQoKCSogbGF5b3V0LmFkYjogUmVtb3ZlIGNvbW1lbnRlZCBvdXQgY29kZS4KCgkqIG1kbGxmaWxlLmFkczogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuIEZpeCBoZWFkZXIgZm9ybWF0LgoKCSogc2VtX2Nhc2UuYWRzOiBMaWtld2lzZS4KCgkqIHNlbV9jaDMuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDAxLTEyLTEyICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiBmcmVlemUuYWRzOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgoJKiBnLWNvbWxpbi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIGduYXQtc3R5bGUudGV4aTogRml4IHR5cG8uCgoyMDAxLTEyLTEyICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiAgZWluZm8uaDogUmVnZW5lcmF0ZS4KCjIwMDEtMTItMTIgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKFNhdmVfRW50aXR5X0Rlc2NlbmRhbnQpOiBVc2Ugc3ludGFjdGljIGZpZWxkIG5hbWVzCglvbiBrbm93biBub2RlIHR5cGVzLCByYXRoZXIgdGhhbiB1bnR5cGVkIGZpZWxkcy4gRnVydGhlciBjbGVhbnVwcy4KCjIwMDEtMTItMTIgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGI6CgkoU2F2ZV9FbnRpdHlfRGVzY2VuZGFudCk6IE1pbm9yIGNvbW1lbnQgdXBkYXRlLgoJKENvcHlfR2VuZXJpY19Ob2RlKTogRGVhbCB3aXRoIGluY29ycmVjdCByZWZlcmVuY2UgdG8gQXNzb2NpYXRlZF9Ob2RlCgkgb2YgYW4gTl9BdHRyaWJ1dGVfUmVmZXJlbmNlIG5vZGUuIEFzIHBlciBub3RlIGJlbG93LCB0aGlzIGRvZXMgbm90CgllbGltaW5hdGUgbmVlZCBmb3IgQXNzb2NpYXRlZF9Ob2RlIGluIGF0dHJpYnV0ZSByZWYgbm9kZXMuCgkoQXNzb2NpYXRlZF9Ob2RlKTogRG9jdW1lbnRhdGlvbiBleHBsaWNpdGx5IG1lbnRpb25zIGF0dHJpYnV0ZQoJcmVmZXJlbmNlIG5vZGVzLCBzaW5jZSB0aGlzIGZpZWxkIGlzIHVzZWQgaW4gc3VjaCBub2Rlcy4KCgkqIHNlbV9jaDEyLmFkYiAoQXNzb2NpYXRlZF9Ob2RlKTogTWlub3IgZG9jdW1lbnRhdGlvbiBjbGVhbnVwLgoKMjAwMS0xMi0xMiAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHMtc3RhbGliLmFkYjogQWRkIG1vcmUgY29tbWVudHMgb24gd2l0aCBzdGF0ZW1lbnRzIGJlaW5nIG5lZWRlZAoKCSogcGFyLWNoMTIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHByai1kZWN0LmFkczogRml4IGNvcHlyaWdodCBoZWFkZXIKCgkqIHMtYXJpdDY0LmFkYiAoTXVsdGlwbHlfV2l0aF9PdmZsb19DaGVjayk6IEZpeCBjYXNlIHdoZXJlIGJvdGgKCWlucHV0cyBmaXQgaW4gMzIgYml0cywgYnV0IHRoZSByZXN1bHQgc3RpbGwgb3ZlcmZsb3dzLgoKCSogcy1mYXRnZW4uYWRzOiBNaW5vciBjb21tZW50IGltcHJvdmVtZW50CgoyMDAxLTEyLTEyICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogSWYgdGhlIHByZWZpeCBpcyBvZiBhCglmb3JtYWwgZGVyaXZlZCB0eXBlLCBsb29rIGZvciBhbiBpbmhlcml0ZWQgY29tcG9uZW50IGZyb20gdGhlIGZ1bGwKCXZpZXcgb2YgdGhlIHBhcmVudCwgaWYgYW55LgoKMjAwMS0xMi0xMiAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGNoZWNrcy5hZHMgKEFwcGx5X0FsaWdubWVudF9DaGVjayk6IE5ldyBwcm9jZWR1cmUuCgoJKiBleHBfY2gxMy5hZGIgKEV4cGFuZF9OX0ZyZWV6ZV9FbnRpdHkpOiBHZW5lcmF0ZSBkeW5hbWljIGNoZWNrIHRvCgllbnN1cmUgdGhhdCB0aGUgYWxpZ25tZW50IG9mIG9iamVjdHMgd2l0aCBhZGRyZXNzIGNsYXVzZXMgaXMKCWFwcHJvcHJpYXRlLCBhbmQgcmFpc2UgUEUgaWYgbm90LgoKCSogZXhwX3V0aWwuYWRzIChNdXN0X0JlX0FsaWduZWQpOiBSZW1vdmVkLCByZXBsYWNlZCBieQoJRXhwX1Bha2QuS25vd25fQWxpZ25lZF9Fbm91Z2gKCgkqIG1kbGxmaWxlLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBtbGliLWZpbC5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0xMiAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGV4cF9jaDguYWRiIChFeHBhbmRfTl9PYmplY3RfUmVuYW1pbmdfRGVjbGFyYXRpb24pOiBFeHRlbmQgcHJldmlvdXMKCWZpeCB0byBhbnkgY29tcG9uZW50IHJlZmVyZW5jZSBpZiBlbmNsb3NpbmcgcmVjb3JkIGhhcyBub24tc3RhbmRhcmQKCXJlcHJlc2VudGF0aW9uLgoKMjAwMS0xMi0xMiAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIGctZGlyb3BlLmFkcyAoRmluZCwgV2lsZGNhcmRfSXRlcmF0b3IpOiBNb3ZlZCB0byBjaGlsZCBwYWNrYWdlCglJdGVyYXRpb24KCjIwMDEtMTItMTIgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBmcmVlemUuYWRzOiBNYWtlIEZyZWV6ZV9GaXhlZF9Qb2ludF9UeXBlIHZpc2libGUsIGZvciB1c2UgaW4KCXNlbV9hdHRyLgoKMjAwMS0xMi0xMiAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGltcHVuaXQuYWRiOiBBZGQgZW50cnkgZm9yIEdOQVQuRGlyZWN0b3J5X09wZXJhdGlvbnMuSXRlcmF0aW9uCgoyMDAxLTEyLTEyICBFbW1hbnVlbCBCcmlvdCA8YnJpb3RAZ25hdC5jb20+CgoJKiBnLXJlZ2V4cC5hZGI6IFJlbW92ZSBhbGwgZGVidWcgY29kZSwgc2luY2UgaXQgaXNuJ3QgcmVxdWlyZWQgYW55bW9yZSwKCWFuZCBpdCBhZGRzIGRlcGVuZGVuY2llcyB0byBzeXN0ZW0uaW8uCgoyMDAxLTEyLTEyICBQYXNjYWwgT2JyeSA8b2JyeUBnbmF0LmNvbT4KCgkqIGctZGlyb3BlLmFkYiAoRXhwYW5kX1BhdGguVmFyKTogQ29ycmVjdGx5IGRldGVjdCBlbmQgb2YKCXZhcmlhYmxlIG5hbWUuCgoyMDAxLTEyLTExICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMTAuYWRiIChJbnN0YWxsX1dpdGhlZF9Vbml0KTogSWYgdGhlIHVuaXQgaXMgYSBnZW5lcmljIGluc3RhbmNlCgl0aGF0IGlzIHRoZSBwYXJlbnQgb2Ygb3RoZXIgZ2VuZXJpY3MsIHRoZSBpbnN0YW5jZSBib2R5IHJlcGxhY2VzIHRoZQoJaW5zdGFuY2Ugbm9kZS4gIFJldHJpZXZlIHRoZSBpbnN0YW5jZSBvZiB0aGUgc3BlYywgd2hpY2ggaXMgdGhlIG9uZQoJdGhhdCBpcyB2aXNpYmxlIGluIGNsaWVudHMgYW5kIHdpdGhpbiB0aGUgYm9keS4KCjIwMDEtMTItMTEgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnbmF0bWFpbi5hZGI6IEluaXRpYWwgdmVyc2lvbi4KCgkqIGduYXRtYWluLmFkczogSW5pdGlhbCB2ZXJzaW9uLgoKCSogcHJqLWF0dHIuYWRiIChJbml0aWFsaXNhdGlvbl9EYXRhKTogQWRkIHBhY2thZ2UgR25hdHN0dWIuCgoJKiBzbmFtZXMuYWRiOiBVcGRhdGVkIHRvIG1hdGNoIHNuYW1lcy5hZHMuCgoJKiBzbmFtZXMuYWRzOiBBZGRlZCBHbmF0c3R1Yi4KCjIwMDEtMTItMTEgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotYXR0ci5hZGIgKEluaXRpYWxpemF0aW9uX0RhdGEpOiBDaGFuZ2UgbmFtZSBmcm9tCglJbml0aWFsaXNhdGlvbl9EYXRhLgoKMjAwMS0xMi0xMSAgRW1tYW51ZWwgQnJpb3QgPGJyaW90QGduYXQuY29tPgoKCSogZy1yZWdwYXQuYWRiIChQYXJzZV9MaXRlcmFsKTogUHJvcGVybHkgaGFuZGxlIHNpbXBsZSBvcGVyYXRvcnMgPywKCSsgYW5kICogYXBwbGllZCB0byBiYWNrc2xhc2hlZCBleHByZXNzaW9ucyBsaWtlIFxyLgoKMjAwMS0xMi0xMSAgVmFzaWxpeSBGb2Zhbm92IDxmb2Zhbm92QGduYXQuY29tPgoKCSogZy1vc19saWIuYWRzOiBTdHJpbmdfTGlzdCB0eXBlIGFkZGVkLCBBcmd1bWVudF9MaXN0IHR5cGUgaXMgbm93CglzdWJ0eXBlIG9mIFN0cmluZ19MaXN0LgoKMjAwMS0xMi0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGctb3NfbGliLmFkczogQ2hhbmdlIGNvcHlyaWdodCB0byBGU0YKCUFkZCBjb21tZW50cyBmb3IgU3RyaW5nX0xpc3QgdHlwZQoKMjAwMS0xMi0xMSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIGctZGlyb3BlLmFkYiAoRXhwYW5kX1BhdGgpOiBGaXggYnVnLiAod3JvbmcgbGVuZ3RoIHdoZW4gYWRkaW5nIGEKCXN0cmluZyB0byB0aGUgYnVmZmVyKS4KCjIwMDEtMTItMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBmcmVlemUuYWRiOiBNYWtlIEZyZWV6ZV9GaXhlZF9Qb2ludF9UeXBlIHZpc2libGUsIGZvciB1c2UgaW4KCXNlbV9hdHRyLgoKCSogc2VtX2F0dHIuYWRiOiBTaW1wbGlmeSBwcmV2aW91cyBmaXggZm9yIEFkZHJlc3MuCgkoU2V0X0JvdW5kcyk6IElmIHByZWZpeCBpcyBhIG5vbi1mcm96ZW4gZml4ZWQtcG9pbnQgdHlwZSwgZnJlZXplIG5vdywKCXRvIGF2b2lkIGFub21hbGllcyB3aGVyZSB0aGUgYm91bmQgb2YgdGhlIHR5cGUgYXBwZWFycyB0byByYWlzZQoJY29uc3RyYWludCBlcnJvci4KCjIwMDEtMTItMTEgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBsaWIteHJlZi5hZGIgKE91dHB1dF9SZWZzKTogTWFrZSBzdXJlIHBvaW50ZXJzIGFyZSBhbHdheXMgcHJvcGVybHkKCWhhbmRsZWQuCgoyMDAxLTEyLTExICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX1N1YnByb2dyYW1fSW5zdGFudGlhdGlvbik6IENoZWNrIGZvciBhCglyZW5hbWVkIHVuaXQgYmVmb3JlIGNoZWNraW5nIGZvciByZWN1cnNpdmUgaW5zdGFudGlhdGlvbnMuCgoyMDAxLTEyLTExICBFbW1hbnVlbCBCcmlvdCA8YnJpb3RAZ25hdC5jb20+CgoJKiBwcmouYWRzOiBBZGQgY29tbWVudHMgZm9yIHNvbWUgb2YgdGhlIGZpZWxkcy4KCjIwMDEtMTItMTEgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBsaWIteHJlZi5hZGIgKE91dHB1dF9SZWZzKTogRG9uJ3Qgb3V0cHV0IHR5cGUgcmVmZXJlbmNlcyBvdXRzaWRlCgl0aGUgbWFpbiB1bml0IGlmIHRoZXkgYXJlIG5vdCBvdGhlcndpc2UgcmVmZXJlbmNlZC4KCjIwMDEtMTItMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fYXR0ci5hZGIgKEFuYWx5emVfYXR0cmlidXRlLCBjYXNlIEFkZHJlc3MgYW5kIFNpemUpOiBTaW1wbGlmeQoJY29kZSBhbmQgZGlhZ25vc2UgYWRkaXRpb25hbCBpbGxlZ2FsIHVzZXMKCgkqIHNlbV91dGlsLmFkYiAoSXNfT2JqZWN0X1JlZmVyZW5jZSk6IEFuIGluZGV4ZWQgY29tcG9uZW50IGlzIGFuCglvYmplY3Qgb25seSBpZiB0aGUgcHJlZml4IGlzLgoKMjAwMS0xMi0xMSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIGctZGlvcGl0LmFkYjogSW5pdGlhbCB2ZXJzaW9uLgoKCSogZy1kaW9waXQuYWRzOiBJbml0aWFsIHZlcnNpb24uCgoJKiBnLWRpcm9wZS5hZGI6CgkoRXhwYW5kX1BhdGgpOiBBdm9pZCB1c2Ugb2YgVW5ib3VuZGVkX1N0cmluZwoJKEZpbmQsIFdpbGRjYXJkX0l0ZXJhdG9yKTogTW92ZWQgdG8gY2hpbGQgcGFja2FnZSBJdGVyYXRpb24KCgkqIE1ha2VmaWxlLmluOiBBZGRlZCBnLWRpb3BpdC5vIHRvIEdOQVRSVExfTk9OVEFTS0lOR19PQkpTCgoyMDAxLTEyLTExICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2F0dHIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYjogQ2xhcmlmeSBzb21lID8/Py4KCjIwMDEtMTItMTEgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfdXRpbC5hZGIgKE11c3RfQmVfQWxpZ25lZCk6IFJlbW92ZWQsIHJlcGxhY2VkIGJ5CglFeHBfUGFrZC5Lbm93bl9BbGlnbmVkX0Vub3VnaAoKCSogc2VtX2NoMTMuYWRiIChDaGVja19BZGRyZXNzX0FsaWdubWVudCk6IFJlbW92ZWQsIGV4dGVuZGVkCgl2ZXJzaW9uIGlzIG1vdmVkIHRvIEV4cF9DaDEzLgoKMjAwMS0xMi0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGVpbmZvLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBleHBfY2g1LmFkYjogQWRkIGNvbW1lbnQgZm9yIHByZXZpb3VzLmNoYW5nZQoKCSogYWxpLmFkYjogTmV3IGludGVyZmFjZSBmb3IgZXh0ZW5kZWQgdHlwZXJlZiBzdHVmZi4KCgkqIGFsaS5hZHM6IE5ldyBpbnRlcmZhY2UgZm9yIHR5cGVyZWYgc3R1ZmYuCgoJKiBjaGVja3MuYWRiIChBcHBseV9BbGlnbm1lbnRfQ2hlY2spOiBOZXcgcHJvY2VkdXJlLgoKCSogZGVidWcuYWRiOiBBZGQgLWduYXRkTSBmb3IgbW9kaWZpZWQgQUxJIG91dHB1dAoKCSogZXhwX3Bha2QuYWRiIChLbm93bl9BbGlnbmVkX0Vub3VnaCk6IFJlcGxhY2VzIEtub3duX0FsaWduZWRfRW5vdWdoLgoKCSogbGliLXhyZWYuYWRiOiBFeHRlbmQgZ2VuZXJhdGlvbiBvZiA8Li4+IG5vdGF0aW9uIHRvIGNvdmVyCglzdWJ0eXBlL29iamVjdCB0eXBlcy4gTm90ZSB0aGF0IHRoaXMgaXMgYSBjb21wbGV0ZSByZXdyaXRlLAoJZ2V0dGluZyByaWQgb2YgdGhlIHZlcnkgbmFzdHkgcXVhZHJhdGljIGFsZ29yaXRobSBwcmV2aW91c2x5Cgl1c2VkIGZvciBkZXJpdmVkIHR5cGUgb3V0cHV0LgoKCSogbGliLXhyZWYuYWRzOiBFeHRlbmQgZGVzY3JpcHRpb24gb2YgPC4uPiBub3RhdGlvbiB0byBjb3ZlcgoJc3VidHlwZS9vYmplY3QgdHlwZXMuIFVzZXMgey4ufSBmb3IgdGhlc2Ugb3RoZXIgY2FzZXMuCglBbHNvIHVzZSAoLi4pIGZvciBwb2ludGVyIHR5cGVzLgoKCSogc2VtX3V0aWwuYWRiIChDaGVja19Qb3RlbnRpYWxseV9CbG9ja2luZ19PcGVyYXRpb24pOiBTbGlnaHQgY2xlYW51cC4KCgkqIGV4cF9wYWtkLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLiAgTm90ZSB0aGF0IHByZXZvdXMgUkggc2hvdWxkIHNheToKCShLbm93bl9BbGlnbmVkX0Vub3VnaCk6IFJlcGxhY2VzIE11c3RfQmVfQWxpZ25lZC4KCjIwMDEtMTItMTEgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnbmF0Y21kLmFkYjoKCUNoYW5nZWQgL0NPTVBJTEVfT05MWSB0byAvQUNUSU9OUz1DT01QSUxFCglDaGFuZ2VkIC9CSU5EX09OTFkgdG8gL0FDVElPTlM9QklORAoJQ2hhbmdlZCAvTElOS19PTkxZIHRvIC9BQ1RJT05TPUxJTksKCjIwMDEtMTItMTEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoOC5hZGIgKEZpbmRfU2VsZWN0ZWRfQ29tcG9uZW50KTogaW1wcm92ZWQgc2VhcmNoIGZvciBhCgljYW5kaWRhdGUgcGFja2FnZSBpbiBjYXNlIG9mIGVycm9yLgoKCSogc2VtX2NoMTIuYWRiIChJbmxpbmVfSW5zdGFuY2VfQm9keSk6IHBsYWNlIGhlYWQgb2YgdXNlX2NsYXVzZQoJY2hhaW4gYmFjayBvbiBzY29wZSBzdGFjayBiZWZvcmUgcmVpbnN0YWxsaW5nIHVzZSBjbGF1c2VzLgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9OX0lmX1N0YXRlbWVudCk6IGlmIENvbnN0YW50X0NvbmRpdGlvbl9XYXJuaW5ncwoJaXMgZW5hYmxlZCwgZG8gbm90IGtpbGwgdGhlIGNvZGUgZm9yIHRoZSBjb25kaXRpb24sIHRvIHByZXNlcnZlCgl3YXJuaW5nLgoKMjAwMS0xMi0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGNoZWNrcy5hZGIgKEluc2VydF9WYWxpZF9DaGVjayk6IEFwcGx5IHZhbGlkaXR5IGNoZWNrIHRvIGV4cHJlc3Npb24KCW9mIGNvbnZlcnNpb24sIG5vdCB0byByZXN1bHQgb2YgY29udmVyc2lvbi4KCjIwMDEtMTItMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IHNldCBDb250cm9sbGVkIGZsYWcKCWJlZm9yZSBmcmVlemluZyBwYXJlbnQuIElmIHRoZSBkZWNsYXJhdGlvbnMgYXJlIG11dHVhbGx5IHJlY3Vyc2l2ZSwKCWFuIGFjY2VzcyB0byB0aGUgY3VycmVudCByZWNvcmQgdHlwZSBtYXkgYmUgZnJvemVuIGJlZm9yZSB0aGUKCWRlcml2YXRpb24gaXMgY29tcGxldGUuCgoyMDAxLTEyLTA1ICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ25hdGNtZC5hZGI6IChNQUtFKTogQWRkIG5ldyB0cmFuc2xhdGlvbnM6IC1iIC9CSU5EX09OTFksCgktYyAvQ09NUElMRV9PTkxZLCAtbCAvTElOS19PTkxZCgoJKiBvcHQuYWRzOgoJKEJpbmRfT25seSk6IE5ldyBGbGFnCgkoTGlua19Pbmx5KTogTmV3IGZsYWcKCgkqIHN3aXRjaC5hZGIgKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IEFkZCBwcm9jZXNzaW5nIGZvciAtYiAoQmluZF9Pbmx5KQoJYW5kIC1sIChMaW5rX09ubHkpCgoJKiBtYWtldXNnLmFkYjogQWRkIG5ldyBzd2l0Y2hlcyAtYiBhbmQgLWwuIFVwZGF0ZSBDb3B5cmlnaHQgbm90aWNlLgoKCSogbWFrZS5hZGI6CgkoRG9fQ29tcGlsZV9TdGVwLCBEb19CaW5kX1N0ZXAsIERvX0xpbmtfU3RlcCk6IE5ldyBmbGFncy4KCShHbmF0bWFrZSk6IFNldCB0aGUgc3RlcCBmbGFncy4gT25seSBwZXJmb3JtIGEgc3RlcCBpZiB0aGUKCWNvcnJlc3BvbmRpbmcgc3RlcCBmbGFnIGlzIFRydWUuCgkoU2Nhbl9NYWtlX0FyZyk6IFJlc2V0IHRoZSBiaW5kIGFuZCBsaW5rIHN0ZXAgZmxhZ3Mgd2hlbiAtdQoJb3IgLWduYXRjIGhhcyBiZWVuIHNwZWNpZmllZC4KCjIwMDEtMTItMDUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fZXZhbC5hZGIgKEV2YWxfQ29uY2F0ZW5hdGlvbik6IElmIGxlZnQgb3BlcmFuZCBpcyBhIG51bGwgc3RyaW5nLAoJZ2V0IGJvdW5kcyBmcm9tIHJpZ2h0IG9wZXJhbmQuCgoJKiBzZW1fZXZhbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZXhwX3V0aWwuYWRiIChNYWtlX0xpdGVyYWxfUmFuZ2UpOiB1c2UgYm91bmQgb2YgbGl0ZXJhbCByYXRoZXIKCXRoYW4gSW5kZXgnRmlyc3QsIGl0cyBsb3dlciBib3VuZCBtYXkgYmUgZGlmZmVyZW50IGZyb20gMS4KCgkqIGV4cF91dGlsLmFkYjogVW5kbyBlYXJsaWVyIGNoYW5nZSwgZml4ZXMgQUNWQyByZWdyZXNzaW9ucyBDNDgwMDlCCglhbmQgQzQ4MDA5SgoKMjAwMS0xMi0wNSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1ubXNjLmFkYiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHByai1ubXNjLmFkYiAoTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2spOiBSZXNldCBMaWJyYXJ5IGZsYWcgaWYKCXNldCBhbmQgbGlicmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLgoKMjAwMS0xMi0wNSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiIChCdWlsZF9EZXJpdmVkX1ByaXZhdGVfVHlwZSk6IHNldCBQdWJsaWMgc3RhdHVzIG9mCglwcml2YXRlIHZpZXcgZXhwbGljaXRseSwgc28gdGhlIGJhY2stZW5kIGNhbiB0cmVhdCBhcyBhIGdsb2JhbAoJd2hlbiBhcHByb3ByaWF0ZS4KCjIwMDEtMTItMDUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKEluc3RhbnRpYXRlX1BhY2thZ2VfQm9keSk6IGlmIGluc3RhbmNlIGlzIGEgY29tcGlsYXRpb24KCSB1bml0LCBhbHdheXMgcmVwbGFjZSBpbnN0YW5jZSBub2RlIHdpdGggbmV3IGJvZHksIGZvciBBU0lTIHVzZS4KCjIwMDEtMTItMDUgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotbm1zYy5hZGIgKExhbmd1YWdlX0luZGVwZW5kZW50X0NoZWNrKTogSXNzdWUgYSB3YXJuaW5nIGlmCglsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYW5kIGJvdGggYXR0cmlidXRlcyBMaWJyYXJ5X05hbWUgYW5kCglMaWJyYXJ5X0RpciBhcmUgc3BlY2lmaWVkLgoKCSogcHJqLXByb2MuYWRiIChFeHByZXNzaW9uKTogU2V0IGxvY2F0aW9uIG9mIFJlc3VsdCB0byBsb2NhdGlvbiBvZgoJZmlyc3QgdGVybS4KCgkqIE1ha2VmaWxlLmluOiBBZGQgbWxpYi5vLCBtbGliLWZpbC5vLCBtbGliLXRndCBhbmQgbWxpYi11dGwgdG8gR05BVExTLgoJKHByai1ubXNjIGlzIG5vdyBpbXBvcnRpbmcgTUxpYi5UZ3QpCgoJKiBwcmotcHJvYy5hZGI6IFB1dCB0aGUgY2hhbmdlIGluZGljYXRlZCBhYm92ZSB0aGF0IHdhcyBmb3Jnb3R0ZW4uCgoyMDAxLTEyLTA1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkZCBkZXBlbmRlbmNpZXMgZm9yIFN5c3RlbS5JTyBmb3IgR05BVC5SZWdleHAKCjIwMDEtMTItMDUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQnVpbGRfRGVyaXZlZF9Db25jdXJyZW50X1R5cGUpOiBJZiBkZXJpdmF0aW9uIGltcG9zZXMgYQoJY29uc3RyYWludCwgaW50cm9kdWNlIGV4cGxpY2l0IHN1YnR5cGUgZGVjbGFyYXRpb24gYW5kIGRlcml2ZSBmcm9tIGl0LgoKCSogc2VtX2NoMy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0wNSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGNoZWNrcy5hZGIgKERldGVybWluZV9SYW5nZSk6IEluY3JlYXNlIGNhY2hlIHNpemUgZm9yIGNoZWNrcy4KCU1pbm9yIHJlZm9ybWF0dGluZwoKCSogZXhwX2NoNi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJKEV4cGFuZF9OX1N1YnByb2dyYW1fQm9keSk6IFJlc2V0IElzX1B1cmUgZm9yIGFueSBzdWJwcm9ncmFtIHRoYXQgaGFzCglhIHBhcmFtZXRlciB3aG9zZSByb290IHR5cGUgaXMgU3lzdGVtLkFkZHJlc3MsIHNpbmNlIHRyZWF0aW5nIHN1Y2gKCXN1YnByb2dyYW1zIGFzIHB1cmUgaW4gdGhlIGNvZGUgZ2VuZXJhdG9yIGlzIGFsbW9zdCBzdXJlbHkgYSBtaXN0YWtlCgl0aGF0IHdpbGwgbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuCgoJKiBleHBfdXRpbC5hZGIgKFJlbW92ZV9TaWRlX0VmZmVjdHMpOiBDbGVhbiB1cCBvbGQgPz8/IGNvbW1lbnQgYW5kCgljaGFuZ2UgaGFuZGxpbmcgb2YgY29udmVyc2lvbnMuCgoJKiBnLXJlZ2V4cC5hZGI6IFVzZSBTeXN0ZW0uSU8gaW5zdGVhZCBvZiBBZGEuVGV4dF9JTy4KCjIwMDEtMTItMDUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9PYmplY3RfRGVjbGFyYXRpb24pOiBJZiBleHByZXNzaW9uIGlzIGFuCglhZ2dyZWdhdGUgd2l0aCBzdGF0aWMgd3Jvbmcgc2l6ZSwgYXR0YWNoIGdlbmVyYXRlZCBSYWlzZSBub2RlIHRvCglkZWNsYXJhdGlvbi4KCjIwMDEtMTItMDUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fYXR0ci5hZGIgKEFuYWx5emVfQXR0cmlidXRlKTogRGVmZW5kIGFnYWluc3QgYmFkIFZhbCBhdHRyaWJ1dGUuCglGaXhlcyBjb21waWxhdGlvbiBhYmFuZG9uZWQgYm9tYiBpbiBCMjQwMDlCLgoKMjAwMS0xMi0wNSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjoKCURvY3VtZW50IHVzZSBvZiBBc3NvY2lhdGVkX05vZGUgb24gU2VsZWN0ZWRfQ29tcG9uZW50cy4KCShTYXZlX0dsb2JhbF9PcGVyYW5kX0Rlc2NlbmRhbnRzKTogQ2hhbmdlIHRvIFNhdmVfRW50aXR5X0Rlc2NlbmRhbnRzLAoJdG8gY2xhcmlmeSB1c2Ugb2YgdW50eXBlZCBkZXNjZW5kYW50IGZpZWxkcy4KCjIwMDEtMTItMDUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBwcmotZGVjdC5hZHM6IEFkZCA/Pz8gY29tbWVudAoJQWRkIDIwMDEgdG8gY29weXJpZ2h0IG5vdGljZSAod2FzIG5vdCBkb25lIGluIGFmdGVyIGFsbCkKCgkqIHByai1wYXJ0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLiBSZXdvcmQgb25lIGF3a3dhcmQgZXJyb3IgbWVzc2FnZS4KCgkqIHByai5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZyB0aHJvdWdob3V0LCBhbmQgYWRkIHNvbWUgPz8/IGNvbW1lbnRzCgoJKiBzbmFtZXMuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMDUgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIHNuYW1lcy5hZGI6IEF1dG91cGRhdGUKCjIwMDEtMTItMDUgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotZGVjdC5hZGIgKFBhcnNlKTogUmVuYW1lIHBhcmFtZXRlciBNb2RpZnlpbmcgdG8gRXh0ZW5kcy4KCgkqIHByai1kZWN0LmFkcyAoUGFyc2UpOiBSZW5hbWUgcGFyYW1ldGVyIE1vZGlmeWluZyB0byBFeHRlbmRzLgoKCSogcHJqLWVudi5hZGI6IE1pbm9yIGNvbW1lbnQgY2hhbmdlcyAobW9kaWZ5aW5nIC0+IGV4dGVuZHMpLgoKCSogcHJqLW5tc2MuYWRiOiBNaW5vciBjb21tZW50IGNoYW5nZXMgKG1vZGlmeWluZyAtPiBleHRlbmRzKS4KCgkqIHByai1wYXJ0LmFkYiAoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBDaGFuZ2UgVG9rX01vZGlmeWluZyB0bwoJVG9rX0V4dGVuZHMuCgoJKiBwcmouYWRiIChJbml0aWFsaXplKTogQ2hhbmdlIE1vZGlmeWluZyB0byBFeHRlbmRzLgoKCSogc2NhbnMuYWRzIChUb2tlbl9UeXBlKTogQ2hhbmdlIFRva19Nb2RpZnlpbmcgdG8gVG9rX0V4dGVuZHMuCgoJKiBwcmouYWRzOiBNaW5vciBjb21tZW50IGNoYW5nZSAoTW9kaWZ5aW5nIC0+IGV4dGVuZGluZykuCgoJKiBzbmFtZXMuYWRzOiBDaGFuZ2UgbW9kaWZ5aW5nIHRvIGV4dGVuZHMuCgoyMDAxLTEyLTA1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX3dhcm4uYWRiOiBSZW1vdmUgc3R1ZmYgZm9yIGNvbmRpdGlvbmFscywgd2UgYXJlIG5vdCBnb2luZyB0bwoJZG8gdGhpcyBhZnRlciBhbGwuCgoJKiBzZW1fd2Fybi5hZHM6IFJlbW92ZSBzdHVmZiBmb3IgY29uZGl0aW9uYWxzLCB3ZSBhcmUgbm90IGdvaW5nIHRvCglkbyB0aGlzIGFmdGVyIGFsbC4gIEFkZCAyMDAxIHRvIGNvcHlyaWdodCBub3RpY2UKCjIwMDEtMTItMDQgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqICBlaW5mby5oLCBzaW5mby5oLCB0cmVlcHJzLmFkczogUmVnZW5lcmF0ZS4KCjIwMDEtMTItMDQgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBlcnJvdXQuYWRiIChFcnJvcl9Nc2cpOiBJZ25vcmUgYXR0ZW1wdCB0byBwdXQgZXJyb3IgbXNnIGF0IGp1bmsKCWxvY2F0aW9uIGlmIHdlIGFscmVhZHkgaGF2ZSBlcnJvcnMuIFN0b3BzIHNvbWUgY2FzZXMgb2YgY2FzY2FkZWQKCWVycm9ycy4KCgkqIGVycm91dC5hZGI6IEltcHJvdmUgY29tbWVudC4KCjIwMDEtMTItMDQgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGI6CgkoQW5hbHl6ZV9Gb3JtYWxfVHlwZV9EZWZpbml0aW9uKTogRGVmZW5kIGFnYWluc3QgRXJyb3IuCgkoQW5hbHl6ZV9Gb3JtYWxfU3VicHJvZ3JhbSk6IERlZmVuZCBhZ2FpbnN0IEVycm9yLgoKCSogcGFyLWNoMTIuYWRiIChGX0Zvcm1hbF9UeXBlX0RlY2xhcmF0aW9uKTogSW4gY2FzZSBvZiBlcnJvciwKCXJlbW92ZSBmb2xsb3dpbmcgc2VtaWNvbG9uIGlmIHByZXNlbnQuIFJlbW92ZXMgY2FzY2FkZWQgZXJyb3IuCgoyMDAxLTEyLTA0ICBEb3VnbGFzIEIuIFJ1cHAgPHJ1cHBAZ25hdC5jb20+CgoJKiBiaW5kZ2VuLmFkYjoKCShHZW5fRXhjZXB0aW9uX1RhYmxlX0FkYSk6IFdyaXRlICJiZWdpbiIgYW5kIHRoZW4gcmV0dXJuIGlmIE51bQoJIGV4Y2VwdGlvbnMgZXF1YWxzIDAuCgkoR2VuX0V4Y2VwdGlvbl9UYWJsZV9DKTogUmV0dXJuIGlmIE51bSBleGNlcHRpb25zIGVxdWFscyAwLgoJRml4ZXMgUElXRyBFIHRlc3RzICh3aGljaCBoYXZlIHRvIGJlIHJ1biB3aXRoIC1nbmF0TCkuCgoyMDAxLTEyLTA0ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZWluZm8uYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMDQgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBlaW5mby5hZHM6IEJsb2NrX05vZGUgcG9pbnRzIHRvIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBibG9jaywgbm90IHRvCgl0aGUgYmxvY2sgbm9kZSBpdHNlbGYsIHRvIHByZXNlcnZlIHRoZSBsaW5rIHdoZW4gdGhlIGJsb2NrIGlzCglyZXdyaXR0ZW4sIGUuZy4gd2l0aGluIGFuIGlmLXN0YXRlbWVudCB3aXRoIGEgc3RhdGljIGNvbmRpdGlvbi4KCgkqIGlubGluZS5hZGIgKENsZWFudXBfU2NvcGVzKTogcmVjb3ZlciBibG9jayBzdGF0ZW1lbnQgZnJvbSBibG9jawoJZW50aXR5IHVzaW5nIG5ldyBtZWFuaW5nIG9mIEJsb2NrX05vZGUuCgoJKiBzZW1fY2g1LmFkYiAoQW5hbHl6ZV9CbG9ja19TdGF0ZW1lbnQpOiBzZXQgQmxvY2tfTm9kZSB0byBwb2ludCB0bwoJaWRlbnRpZmllciBvZiBibG9jayBub2RlLCByYXRoZXIgdGhhbiB0byBub2RlIGl0c2VsZi4KCjIwMDEtMTItMDQgIEdhcnkgRGlzbXVrZXMgPGRpc211a2VzQGduYXQuY29tPgoKCSogbGF5b3V0LmFkYjoKCShHZXRfTWF4X1NpemUpOiBGaXggInN0YXJ0IG9mIHByb2Nlc3NpbmciIGNvbW1lbnQgdG8gc2F5IEdldF9NYXhfU2l6ZS4KCShEaXNjcmltaWZ5KTogR28gYmFjayB0byBzZXR0aW5nIHRoZSBFdHlwZXMgb2YgdGhlIHNlbGVjdGVkIGNvbXBvbmVudAoJYmVjYXVzZSB0aGUgVm5hbWUgY29tcG9uZW50IGRvZXMgbm90IGV4aXN0IGF0IHRoaXMgcG9pbnQgYW5kIHdpbGwKCWZhaWwgbmFtZSByZXNvbHV0aW9uLiBBbHNvIHNldCBBbmFseXplZC4KCVJlbW92ZSB3aXRoIGFuZCB1c2Ugb2YgU2VtX1Jlcy4KCjIwMDEtMTItMDQgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGduYXQuY29tPgoKCSogTWFrZWZpbGUuaW46IChISUVfU09VUkNFUyk6IGFkZCBzLWZhdCouCgoyMDAxLTEyLTA0ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2F0dHIuYWRiOgoJKENvbXBpbGVfVGltZV9Lbm93bl9BdHRyaWJ1dGUpOiBOZXcgcHJvY2VkdXJlLgoJKEV2YWxfQXR0cmlidXRlLCBjYXNlIFNpemUpOiBVc2UgQ29tcGlsZV9UaW1lX0tub3duX0F0dHJpYnV0ZSB0byBlbnN1cmUKCSBwcm9wZXIgcmFuZ2UgY2hlY2suCgoyMDAxLTEyLTA0ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoNy5hZGIgKE5ld19Qcml2YXRlX1R5cGUpOiBTZXQgSXNfVGFnZ2VkX1R5cGUgZmxhZyBiZWZvcmUKCXByb2Nlc3NpbmcgZGlzY3JpbWluYW50cyB0byBkaWFnbm9zZSBpbGxlZ2FsIGRlZmF1bHQgdmFsdWVzLgoKMjAwMS0xMi0wNCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9hdHRyLmFkYiAoUmVzb2x2ZV9BdHRyaWJ1dGUpOiBIYW5kbGUgcHJvcGVybHkgYW4gbm9uLWNsYXNzd2lkZQoJYWNjZXNzIGRpc2NyaW1pbmFudCB3aXRoaW4gYSB0eXBlIGV4dGVuc2lvbiB0aGF0IGNvbnN0cmFpbnMgaXRzCglwYXJlbnQgZGlzY3JpbWluYW50cy4KCjIwMDEtMTItMDQgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoRmluZF9UeXBlX09mX1N1YnR5cGVfSW5kaWMpOiBJZiBzdWJ0eXBlIGluZGljYXRpb24KCWlzIG1hbGZvcm1lZCwgdXNlIGluc3RhbmNlIG9mIEFueV9JZCB0byBhbGxvdyBhbmFseXNpcyB0byBwcm9jZWVkLgoKCSogcGFyLWNoMTIuYWRiIChQX0Zvcm1hbF9UeXBlX0RlY2xhcmF0aW9uKTogUHJvcGFnYXRlIEVycm9yIGlmCgl0eXBlIGRlZmluaXRpb24gaXMgaWxsZWdhbC4KCShQX0Zvcm1hbF9EZXJpdmVkX1R5cGVfRGVmaW5pdGlvbik6IEJldHRlciByZWNvdmVyeSB3aGVuIFRBR0dFRCBpcwoJbWlzcGxhY2VkLgoKMjAwMS0xMi0wNCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV93YXJuLmFkYiAoT3V0cHV0X1VucmVmZXJlbmNlZF9NZXNzYWdlcyk6IEV4dGVuZCBwcmV2aW91cyBmaXggdG8KCWNvbnN0YW50cy4KCjIwMDEtMTItMDQgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBlcnJvdXQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMDQgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfdXRpbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZyBmcm9tIGxhc3QgY2hhbmdlCgoJKiBlcnJvdXQuYWRiIChDaGVja19Gb3JfV2FybmluZyk6IEZvciBhIFJhaXNlZF9Db25zdHJhaW50X0Vycm9yIG5vZGUKCXdoaWNoIGlzIGEgcmV3cml0aW5nIG9mIGFuIGV4cHJlc3Npb24sIHRyYXZlcnNlIHRoZSBvcmlnaW5hbAoJZXhwcmVzc2lvbiB0byByZW1vdmUgd2FybmluZ3MgdGhhdCBtYXkgaGF2ZSBiZWVuIHBvc3RlZCBvbiBpdC4KCjIwMDEtMTItMDQgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBleHBfdXRpbC5hZGIgKE11c3RfQmVfQWxpZ25lZCk6IFJldHVybiBmYWxzZSBmb3IgYSBjb21wb25lbnQgb2YgYQoJcmVjb3JkIHRoYXQgaGFzIG90aGVyIHBhY2tlZCBjb21wb25lbnRzLgoKMjAwMS0xMi0wNCAgRG91Z2xhc3MgQi4gUnVwcCA8cnVwcEBnbmF0LmNvbT4KCgkqIGFkYWludC5jOiBNaW5vciBjbGVhbnVwcy4KCjIwMDEtMTItMDQgIERvdWdsYXNzIEIuIFJ1cHAgPHJ1cHBAZ25hdC5jb20+CgoJKiBhZGFpbnQuYzogRG8gbm90IHVzZSB1dGltZS5oIG9uIHZ4d29ya3MuCgoyMDAxLTEyLTA0ICBBcm5hdWQgQ2hhcmxldCA8Y2hhcmxldEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmFkYWxpYjogQ2xhcmlmeSBzdGVwIDMgKHVzZSBvZiBnbmF0LmFkYykgYXMgaXQgY2F1c2VzCgltb3JlIGNvbmZ1c2lvbiB0aGFuIGl0IHNvbHZlcy4KCjIwMDEtMTItMDQgIEdlZXJ0IGJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIGVpbmZvLmgsIG5tYWtlLmFkYiwgbm1ha2UuYWRzLCBzaW5mby5oIHRyZWVwcnMuYWRzOiBSZWdlbmVyYXRlLgoKMjAwMS0xMi0wNCAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluICh1cGRhdGUtc291cmNlcyk6IE5ldyB0YXJnZXQuCglGb3IgdXNlIGJ5IGdjY19yZWxlYXNlIHNjcmlwdC4KCjIwMDEtMTItMDQgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fcHJhZy5hZGIgKEFuYWx5emVfUHJhZ21hLCBjYXNlIFZhbGlkaXR5X0NoZWNrcyk6IGRvIG5vdCB0cmVhdCBhcwoJYSBjb25maWd1cmF0aW9uIHByYWdtYSwgaXQgaXMgbm93IGxlZ2FsIHdoZXJldmVyIGEgcHJhZ21hIGNhbiBhcHBlYXIuCgoyMDAxLTEyLTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW46IERvbid0IHNldCBBTEwuICBEZWxldGUgQGNyb3NzX2RlZmluZXNALAoJQGNyb3NzX292ZXJyaWRlc0AsIEBidWlsZF9vdmVycmlkZXNAIHN0YW56YXMuICBJTlRFUk5BTF9DRkxBR1MKCWlzIG5vdyBAQ1JPU1NAIC1ESU5fR0NDOyB1cGRhdGUgY29tbWVudC4KCjIwMDEtMTItMDQgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBlaW5mby5hZGIgKEhhc19QcmFnbWFfUHVyZV9GdW5jdGlvbik6IE5ldyBmbGFnLgoJRml4IHByb2JsZW0gdGhhdCBzdG9wcGVkIGNlaW5mbyBmcm9tIHdvcmtpbmcKCgkqIGVpbmZvLmFkcyAoSGFzX1ByYWdtYV9QdXJlX0Z1bmN0aW9uKTogTmV3IGZsYWcuCgoJKiBzZW1fcHJhZy5hZGIgKFB1cmVfRnVuY3Rpb24pOiBTZXQgbmV3IGZsYWcgSGFzX1ByYWdtYV9QdXJlX0Z1bmN0aW9uLgoKMjAwMS0xMi0wNCAgRG91Z2xhcyBCLiBSdXBwIDxydXBwQGduYXQuY29tPgoKCSogZ25hdGNob3AuYWRiOgoJKEZpbGVfVGltZV9TdGFtcCk6IE5ldyBwcm9jZWR1cmUuCgkoUHJlc2VydmVfTW9kZSk6IE5ldyBib29sZWFuLgoJKFdyaXRlX1VuaXQpOiBQYXNzIHRpbWUgc3RhbXAuCglJbXBsZW1lbnQgLXAgc3dpdGNoIChwcmVzZXJ2ZSB0aW1lIHN0YW1wcykuCgoJKiBnbmF0Y21kLmFkYiAoQ0hPUCk6IEFkZCB0cmFuc2xhdGlvbiBmb3IgLXAgKC9QUkVTRVJWRSkuCgoJKiBnbmF0Y2hvcC5hZGI6IERvIHVzYWdlIGluZm8gZm9yIC1wIHN3aXRjaAoKCSogYWRhaW50LmggKF9fZ25hdF9zZXRfZmlsZV90aW1lX25hbWUpOiBOZXcgZnVuY3Rpb24KCgkqIGFkYWludC5jIChfX2duYXRfc2V0X2ZpbGVfdGltZV9uYW1lKTogSW1wbGVtZW50CgoJKiBhZGFpbnQuaDogRml4IHR5cG8KCjIwMDEtMTItMDMgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzaW5mby5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4gTl9GcmVlemVfRW50aXR5IG5vZGUgZG9lcyBub3QKCWhhdmUgQXNzb2NpYXRlZF9Ob2RlLgoKMjAwMS0xMi0wMyAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHByai1wcm9jLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBtYWtlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEyLTAzICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiBtYWtlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwMS0xMi0wMyBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEyLTAzICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiIChJbmxpbmVfSW5zdGFuY2VfQm9keSk6IFVzZSBTYXZlX1Njb3BlX1N0YWNrIGFuZAoJcHVzaCBTdGFuZGFyZCBvbiB0aGUgc3RhY2sgYmVmb3JlIGFuYWx5emluZyB0aGUgaW5zdGFuY2UgYm9keSwKCWluIG9yZGVyIHRvIGhhdmUgYSBjbGVhbiB2aXNpYmlsaXR5IGVudmlyb25tZW50LgoKCSogc2VtX2NoMTIuYWRiIChJbmxpbmVfSW5zdGFuY2VfQm9keSk6IFJlbW92ZSByZWR1bmRhbnQgY29kZS4KCjIwMDEtMTItMDMgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKEluc3RhbnRpYXRlX1BhY2thZ2VfQm9keSk6IFByb3RlY3QgYWdhaW5zdCBkb3VibGUKCWluc3RhbnRpYXRpb24gb2YgYSBib2R5IHRoYXQgY29udGFpbnMgYW4gaW5saW5lZCBib2R5LgoKMjAwMS0xMi0wMyAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjoKCShBbmFseXplX2dlbmVyaWNfc3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IFNldCBvdXRlcl9nZW5lcmljX3Njb3BlLAoJdG8gcHJldmVudCBmcmVlemluZyB3aXRoaW4gZm9ybWFsIHBhY2thZ2VzLgoJKEZyZWV6ZV9TdWJwcm9ncmFtX0JvZHkpOiBJZiBib2R5IGNvbWVzIGZyb20gYW5vdGhlciBpbnN0YW5jZSB0aGF0CglhcHBlYXJlZCBiZWZvcmUgaXRzIG93biBib2R5LCBwbGFjZSBmcmVlemUgbm9kZSBhdCBlbmQgb2YgY3VycmVudAoJZGVjbGFyYXRpdmUgcGFydCwgdG8gcHJldmVudCBhIGJhY2stZW5kIGNyYXNoLgoJKElubGluZV9JbnN0YW5jZV9Cb2R5KTogSGFuZGxlIHByb3Blcmx5IGEgcGFja2FnZSBpbnN0YW5jZSB3aXRoaW4KCWEgc3VicHJvZ3JhbSBpbnN0YW5jZSB0aGF0IGlzIGEgY2hpbGQgdW5pdC4KCjIwMDEtMTItMDEgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChtaXNjLm8pOiBBZGQgbWlzc2luZyAkKHNyY2RpcikgcHJlZml4CglhbmQgYWRkIG9wdGFicy5oIGRlcGVuZGVuY3kuCgoJKiBtaXNjLmM6IEluY2x1ZGUgb3B0YWJzLmgKCShnbmF0X3RyZWVfY29kZV90eXBlKTogTWFrZSBzdGF0aWMgYW5kIGNvbnN0LgoJKGduYXRfdHJlZV9jb2RlX2xlbmd0aCk6IExpa2V3aXNlLgoJKGduYXRfdHJlZV9jb2RlX25hbWUpOiBMaWtld2lzZS4KCSh1cGRhdGVfc2V0am1wX2J1Zik6IE9idGFpbiBvcGVyYW5kcyBtb2RlIGZyb20gaW5zbl9kYXRhLgoKMjAwMS0xMS0yOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGluaXQuYzogUmVtb3ZlIG9ic29sZXRlIGR3YXJmMiBmcmFtZS5oIHNlY3Rpb24uCgoyMDAxLTExLTI5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBNYWtlLWxhbmcuaW4gKGFkYS5nZW5lcmF0ZWQtbWFucGFnZXMpOiBOZXcgZHVtbXkgdGFyZ2V0LgoKMjAwMS0xMS0yOSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGctb3NfbGliLmFkYiAoQWRkX1RvX0NvbW1hbmQpOiB1c2UgZXhwbGljaXQgbG9vcCB0byBtb3ZlIHN0cmluZwoJaW50byBDb21tYW5kLCBhbiBhcnJheSBjb252ZXJzaW9uIGlzIGlsbGVnYWwgaGVyZS4gVW5jb3ZlcmVkIGJ5CglBQ0FUUyBCNDYwMDA1LgoKMjAwMS0xMS0yOCAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogaW5pdC5jOiBNaW5vciB3aGl0ZXNwYWNlIGNoYW5nZXMuCgoyMDAxLTExLTI4ICBEb3VnIFJ1cHAgPHJ1cHBAZ25hdC5jb20+CgoJKiBpbml0LmM6IChfX2duYXRfaW5zdGFsbF9oYW5kbGVyLFZNUyk6IEluY3JlYXNlIHNpemUgb2YgYWx0ZXJuYXRlCglzaWduYWwgc3RhY2suCgoyMDAxLTExLTI4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9jb25zdGFudCk6IE1vdmUgZGVjbGFyYXRpb24gYWJvdmUKCWRlZmluaXRpb24gb2YgbGFuZ19ob29rcy4KCShMQU5HX0hPT0tTX0VYUEFORF9DT05TVEFOVCk6IFNldCB0byBnbmF0X2V4cGFuZF9jb25zdGFudC4KCShnbmF0X2luaXQpOiBsYW5nX2V4cGFuZF9jb25zdGFudCBubyBsb25nZXIgZXhpc3RzLgoKCShpbnRlcm5hbF9lcnJvcl9mdW5jdGlvbik6IFJlbW92ZSAjaWZkZWYgSEFWRV9WUFJJTlRGLiAgV2UKCWFsd2F5cyBoYXZlIHZwcmludGYuCgkoZ25hdF9pbml0KTogQWx3YXlzIGNhbGwgc2V0X2ludGVybmFsX2Vycm9yX2Z1bmN0aW9uLgoKMjAwMS0xMS0yNyAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKHN0YW1wLXRvb2xfc3JjX2Rpcik6IFVzZSBzeW1ib2xpYyBsaW5rLgoKMjAwMS0xMS0yNyAgTGF1cmVudCBHdWVyYnkgIDxndWVyYnlAYWNtLm9yZz4KCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlIEFkYSBkZXBlbmRlbmNpZXMuCgoyMDAxLTExLTI2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChnbmF0YmluZCwgZ25hdG1ha2UsIGduYXRibCwgZ25hdGNob3AsIGduYXRjbWQsCglnbmF0bGluaywgZ25hdGtyLCBnbmF0bHMsIGduYXRtZW0sIGduYXRwcmVwLCBnbmF0cHN0YSwgZ25hdHBzeXMsCglnbmF0eHJlZiwgZ25hdGZpbmQsIGduYXRsYnIpOiBEZXBlbmQgb24gQ09ORklHX0ggYW5kIHByZWZpeC5vLgoKMjAwMS0xMS0yNSAgTGF1cmVudCBHdWVyYnkgIDxndWVyYnlAYWNtLm9yZz4KCgkqIHN5c2RlcC5jIChydHNfZ2V0XyopOiBGaXggc3R5bGUuCgoyMDAxLTExLTE5ICBMYXVyZW50IEd1ZXJieSAgPGd1ZXJieUBhY20ub3JnPgoKCSogTWFrZWZpbGUuaW4gKElOQ0xVREVTX0ZPUl9TVUJESVIpOiBSZW1vdmUgcmVkdW5kYW50IHN5c3RlbSBpbmNsdWRlCglzaW5jZSBpdCBpcyBvZiBubyBhcHBhcmVudCB1c2UgYW5kIGNhdXNlIHdhcm5pbmdzLgoKMjAwMS0xMS0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X2RlY29kZV9vcHRpb24sIGduYXRfaW5pdF9vcHRpb25zKTogTWFrZSBkZWZpbml0aW9ucwoJc3RhdGljIHRvby4KCShnbmF0X2luaXQpOiBEb24ndCByZXR1cm4gTlVMTC4KCShmaW5pc2hfcGFyc2UpOiBSZW1vdmUuCgoyMDAxLTExLTE3ICBMYXVyZW50IEd1ZXJieSAgPGd1ZXJieUBhY20ub3JnPgoKCSogTWFrZS1sYW5nLmluIChHTkFUTElCRkxBR1MpOiBBZGQgLVcgLVdhbGwuCgkqIGdpZ2kuaCAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZW5hbWUgdG8gZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZy4KCSogaW8tYXV4LmM6IFByb3ZpZGUgSyZSIHByb3RvdHlwZXMgdG8gYWxsIGZ1bmN0aW9ucywgcmVmb3JtYXQgY29kZS4KCSogbGFuZy1zcGVjLmg6IEFkZCBtaXNzaW5nIHN0cnVjdCBmaWVsZCB0byBzaWxlbmNlIHdhcm5pbmdzLgoJKiBzeXNkZXAuYyAocnRzX2dldF8qKTogUHJvdmlkZSBLJlIgcHJvdG90eXBlLgoJKiBzeXNkZXAuYyAoVW5sb2NrX1Rhc2ssIExvY2tfVGFzayk6IE1vdmUgdG8gSyZSIHByb3RvdHlwZS4KCSogdHJhY2ViYWNrLmMgKFVubG9ja19UYXNrLCBMb2NrX1Rhc2spOiBMaWtld2lzZS4KCSogdHJhY2ViYWsuYyAoX19nbmF0X2JhY2t0cmFjZSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIHV0aWxzLmMgKGVuZF9zdWJwcm9nX2JvZHkpOiBNb3ZlIHRvIEsmUiBzdHlsZS4KClRodSBOb3YgMTUgMTg6MTY6MTcgMjAwMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyYW5zLmMsIHV0aWxzMi5jOiBSZW1vdmUgUEFMSUdOIHBhcmFtZXRlciB0byBnZXRfaW5uZXJfcmVmZXJlbmNlLgoKMjAwMS0xMS0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X2luaXQpOiBDaGFuZ2UgcHJvdG90eXBlLiAgSW5jbHVkZSB0aGUKCWZ1bmN0aW9uYWxpdHkgb2YgdGhlIG9sZCBpbml0X3BhcnNlIGFuZCBpbml0X2RlY2xfcHJvY2Vzc2luZy4KCShnbmF0X2luaXRfZGVjbF9wcm9jZXNzaW5nKTogTmV3IHByb3RvdHlwZS4KCShpbml0X3BhcnNlKTogUmVtb3ZlLgoJKiB1dGlscy5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbmFtZSBnbmF0X2luaXRfZGVjbF9wcm9jZXNzaW5nLgoKMjAwMS0xMS0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X3ByaW50X2RlY2wsIGduYXRfcHJpbnRfdHlwZSk6IFJlbmFtZWQuCgkoTEFOR19IT09LU19QUklOVF9ERUNMLCBMQU5HX0hPT0tTX1BSSU5UX1RZUEUpOiBPdmVycmlkZS4KCShwcmludF9sYW5nX3N0YXRpc3RpY3MsIGxhbmdfcHJpbnRfeG5vZGUsIHByaW50X2xhbmdfaWRlbnRpZmllciwKCXNldF95eWRlYnVnKTogUmVtb3ZlLgoKMjAwMS0xMS0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChMQU5HX0hPT0tTX05BTUUsIExBTkdfSE9PS1NfSURFTlRJRklFUl9TSVpFKTogT3ZlcnJpZGUuCgkoc3RydWN0IGxhbmdfaG9va3MpOiBDb25zdGlmeS4KCShsYW5ndWFnZV9zdHJpbmcsIGxhbmdfaWRlbnRpZnkpOiBSZW1vdmUuCgkqIHV0aWxzLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXBkYXRlLgoKMjAwMS0xMS0wNiAgTmVpbCBCb290aCAgPG5laWxAY2F0LmRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1pc2MuYzogSW5jbHVkZSBsYW5naG9va3MtZGVmLmguCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUuCgoyMDAxLTEwLTMwICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc3R5bGUuYWRiOgoJKENoZWNrX0lkZW50aWZpZXIpOiBSZXdyaXRlIGNpcmN1aXQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHVzZSBvZiBsZXR0ZXJzCglpbiB0aGUgdXBwZXIgaGFsZiBvZiBBU0NJSS4KCShDaGVja19JZGVudGlmaWVyKTogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEwLTMwICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiAoQXNzb2NpYXRlZF9Ob2RlLCBTZXRfQXNzb2NpYXRlZF9Ob2RlKTogRG8gbm90IGNoZWNrIGZvcgoJRnJlZXplX0VudGl0eS4KCjIwMDEtMTAtMzAgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhLXJlYXRpbS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMC0zMCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGduYXRkbGwuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcgdGhyb3VnaG91dC4gTWFueSA/Pz8gYWRkZWQgZm9yCgl1bmRvY3VtZW50ZWQgZGVjbGFyYXRpb25zLgoKMjAwMS0xMC0zMCAgUGFzY2FsIE9icnkgPG9icnlAZ25hdC5jb20+CgoJKiBnbmF0ZGxsLmFkYiAoUGFyc2VfQ29tbWFuZF9MaW5lKTogaGFuZGxlIC1nIG9wdGlvbiB0byBiZSBwYXNzZWQKCXRvIHRoZSBiaW5kZXIgYW5kIGxpbmtlci4KCU1pbm9yIHN0eWxlIGZpeC4KCgkqIG1kbGwuYWRzOiBGaXggbGF5b3V0LiAgVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoJKiBtZGxsLmFkYjogRml4IGxheW91dC4gIFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoKMjAwMS0xMC0zMCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHVzYWdlLmFkYjogTWlub3IgZml4IHRvIG91dHB1dCBmb3IgLWduYXR5LgoKMjAwMS0xMC0zMCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGEtcmVhdGltLmFkczogTWFrZXMgU2Vjb25kc19Db3VudCBpbnRvIGEgNjQtYml0IGludGVnZXIsCgl0byBhY2NvbW1vZGF0ZSBhbGwgaXRzIHBvc3NpYmxlIHZhbHVlcy4KCgkqIGEtcmVhdGltLmFkYiAoU3BsaXQpOiBTcGVjaWFsLWNhc2UgaGFuZGxpbmcgb2YgVGltZV9TcGFuX0ZpcnN0CglhbmQgb2Ygc21hbGwgYWJzb2x1dGUgdmFsdWVzIG9mIFQuCgoyMDAxLTEwLTMwICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQGduYXQuY29tPgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9leHByLCBjYXNlIE5VTExfRVhQUik6IFJlbW92ZSBjYWxsIHRvCglzZXRfbWVtX2F0dHJpYnV0ZXMgc2luY2Ugbm90IG5lZWRlZCBhbmQgd3JvbmcgaWYgUkVTVUxUIGlmIGEgUkVHOwoJZml4ZXMgQUNBVFMgZmFpbHVyZXMuCgoyMDAxLTEwLTMwICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiA4Nm51bWF1eC5hZGIsIGEtdGlnZWF1LmFkcywgYS13dGdlYXUuYWRzLCBmbmFtZS1zZi5hZHMsIGctdHJhY2ViLmFkcywKCXMtdGFzZGViLmFkcywgc2VtX21hcHMuYWRzOiBBZGQgMjAwMSB0byBjb3B5cmlnaHQgbm90aWNlLgoKMjAwMS0xMC0zMCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGJpbmR1c2cuYWRiOiBVbmRvY3VtZW50IC1mIHN3aXRjaC4KCgkqIGduYXRjbWQuYWRiOiBSZW1vdmUgL0ZVTExfRUxBQk9SQVRJT04uCgoJKiBvcHQuYWRzIChGb3JjZV9STV9FbGFib3JhdGlvbl9PcmRlcik6IERvY3VtZW50IHRoYXQgdGhpcyBpcwoJb2Jzb2xlc2NlbnQuCgoJKiBnbmF0YmluZC5hZGI6IE91dHB1dCBuZXcgd2FybmluZyBmb3IgdXNlIG9mIG9ic29sZXNjZW50IC1mIHN3aXRjaC4KCgkqIGduYXRiaW5kLmFkYjogTWlub3IgdXBkYXRlIG9mIHdhcm5pbmcgbXNnLgoKMjAwMS0xMC0zMCAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRjbWQuYWRiIChNQUtFLCBCSU5ELCBMSU5LLCBMSVNULCBGSU5ELCBYUkVGKTogQWRkIHRyYW5zbGF0aW9ucwoJZm9yIHByb2plY3QgZmlsZSBzd2l0Y2hlcyAoLVAgKC9QUk9KRUNUX0ZJTEU9KSwKCSAtWCAoL0VYVEVSTkFMX1JFRkVSRU5DRT0pIGFuZCAtdlB4ICgvUFJPSkVDVF9GSUxFX1ZFUkJPU0lUWT1ERUZBVUxUCglvciBNRURJVU0gb3IgSElHSCkKCjIwMDEtMTAtMzAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIGRlY2wuYzogTWlub3Igd2hpdGVzcGFjZSBmaXhlcy4KCjIwMDEtMTAtMzAgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAZ25hdC5jb20+CgoJKiB1dGlsczIuYyAoYnVpbGRfYWxsb2NhdG9yKTogVGVzdCBmb3IgU0laRSBvdmVyZmxvdyBpbiBhcnJheSBjYXNlIHRvbwoKMjAwMS0xMC0zMCAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogYWxpLXV0aWwuYWRiIChJbml0aWFsaXplX0NoZWNrc3VtKTogVXNlIG91dC1tb2RlIGluc3RlYWQgb2YgaW4gb3V0LgoJRm91bmQgZHVlIHRvIEdDQyAzLjAgd2FybmluZyBvZiB1c2luZyB1bmluaXRpYWxpemVkIHZhbHVlLgoKCSogbGF5b3V0LmFkYjoKCShHZXRfTWF4X1NpemUpOiBVc2UgdmFyaWFudCByZWNvcmQgZm9yIHRyYWNraW5nIHZhbHVlL2V4cHJlc3Npb24uCgkgTWFrZXMgbG9naWMgY2xlYXJlciBhbmQgcHJldmVudHMgd2FybmluZ3MgZm9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoJKExheW91dF9BcnJheV9UeXBlKTogVXNlIHZhcmlhbnQgcmVjb3JkIGZvciB0cmFja2luZyB2YWx1ZS9leHByZXNzaW9uLgoJIE1ha2VzIGxvZ2ljIGNsZWFyZXIgYW5kIHByZXZlbnRzIHdhcm5pbmdzIGZvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4KCjIwMDEtMTAtMzAgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBsaWIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHMtdGFwcm9wLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEwLTI5ICBMYXVyZW50IEd1ZXJieSAgPGd1ZXJieUBhY20ub3JnPgoKCSogaW5pdC5jOgoJKFJhaXNlX0Zyb21fU2lnbmFsX0hhbmRsZXIsIFByb3BhZ2F0ZV9TaWduYWxfRXhjZXB0aW9uKTogTWFrZSBhcmcKCWNvbnN0LgoJKF9nbmF0X2Vycm9yX2hhbmRsZXIpOiBNYWtlIE1TRyBjb25zdC4KCjIwMDEtMTAtMjkgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAZ25hdC5jb20+CgoJKiBzeXNkZXAuYzogRml4IGxvY2FsdGltZV9yIHByb2JsZW0gb24gTHlueE9TLgoJQWxzbyByZW1vdmUgI2VsaWYgdG8gYXZvaWQgd2FybmluZ3MuCgoJKiBtaXNjLmMgKHl5cGFyc2UpOiBEb24ndCBzZXQgdXAgYW5kIHJlZ2lzdGVyIGptcGJ1ZjsgcmVtb3ZlIGRlY2xzCgl1c2VkIGJ5IHRoaXMuCgoJKiBkZWNsLmMgKGFubm90YXRlX3ZhbHVlKTogTWFrZSBTSVpFIHVuc2lnbmVkIHRvIGF2b2lkIHdhcm5pbmcuCgoyMDAxLTEwLTI4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiA4Nm51bWF1eC5hZGIsIGEtdGlnZWF1LmFkcywgYS13dGdlYXUuYWRzLCBkZWNsLmMsIGV4cF9jaDYuYWRiLAoJZXhwX2NoOS5hZGIsIGV4cF91dGlsLmFkYiwgZm5hbWUtc2YuYWRzLCBmcmVlemUuYWRzLCBnLWF3ay5hZGIsCglnLWNvbWxpbi5hZHMsIGctZGlyb3BlLmFkYiwgZy1keW50YWIuYWRzLCBnLXNvY2tldC5hZHMsCglnLXRhYmxlLmFkcywgZy10cmFjZWIuYWRzLCBnbmF0LXN0eWxlLnRleGksIGduYXRjaG9wLmFkYiwgaW5pdC5jLAoJbGF5b3V0LmFkYiwgbGF5b3V0LmFkcywgbWRsbGZpbGUuYWRzLCBtbGliLWZpbC5hZHMsIG9zaW50LmFkcywKCXMtZmF0Z2VuLmFkYiwgcy1pbWdyZWEuYWRiLCBzLXRhcHJvcC5hZHMsIHMtdGFzZGViLmFkcywKCXNlbV9hZ2dyLmFkYiwgc2VtX2F0dHIuYWRiLCBzZW1fY2FzZS5hZHMsIHNlbV9jaDEzLmFkYiwKCXNlbV9jaDMuYWRiLCBzZW1fZWxhYi5hZGIsIHNlbV9tYXBzLmFkcywgc2VtX3Jlcy5hZGIsCglzZW1fdXRpbC5hZHMsIHNpbmZvLmFkcywgc2lucHV0LmFkcywgdGFibGUuYWRiLCB0YWJsZS5hZHMsCgl0eXBlcy5hZHMsIHVyZWFscC5hZGI6IEZpeCBzcGVsbGluZyBlcnJvcnMuCgoyMDAxLTEwLTI3ICBMYXVyZW50IEd1ZXJieSA8Z3VlcmJ5QGFjbS5vcmc+CgoJKiB0cmFucy5jIChnaWdpKTogRml4IG5vbiBkZXRlcm1pbmlzbSBsZWFkaW5nIHRvIGJvb3RzdHJhcAoJY29tcGFyaXNvbiBmYWlsdXJlcyBmb3IgZGVidWdnaW5nIGluZm9ybWF0aW9uLgoKMjAwMS0xMC0yNiAgRmxvcmlhbiBXZWltZXIgIDxmd0BkZW5lYi5lbnlvLmRlPgoKCSogZ25hdF9ybS50ZXhpOiBVc2UgQC4vQDogd2hlcmUgYXBwcm9wcmlhdGUuCgoyMDAxLTEwLTI2ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2luZm8uYWRiOiBEZWZpbmUgQXNzb2NpYXRlZF9Ob2RlIHRvIG92ZXJsYXAgRW50aXR5IGZpZWxkLiBDbGVhbnVwLgoKMjAwMS0xMC0yNiAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIGdtZW0uYyAoX19nbmF0X2dtZW1fcmVhZF9uZXh0KTogUHJvcGVybHkgY2hlY2sgZm9yIEVPRgoKMjAwMS0xMC0yNiAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIGRlY2wuYyAodmFsaWRhdGVfc2l6ZSk6IE1vZGlmeSBtZXNzYWdlIGZvciBiYWQgc2l6ZSB0byBhdm9pZAoJaW1wbGljYXRpb24gdGhhdCBjb21waWxlciBpcyBtb2RpZnlpbmcgdGhlIHNpemUuCgoyMDAxLTEwLTI2ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcHJqLXV0aWwuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuIEZpeCBiYWQgaGVhZGVyIGZvcm1hdC4KCjIwMDEtMTAtMjYgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzaW5mby5hZHM6IERlZmluZSBBc3NvY2lhdGVkX05vZGUgdG8gb3ZlcmxhcCBFbnRpdHkgZmllbGQuIENsZWFudXAuCgoJKiBzaW5mby5hZHM6IENsYXJpZnkgdXNlIG9mIEFzc29jaWF0ZWRfTm9kZSAoZG9jdW1lbnRhdGlvbiBvbmx5KS4KCgkqIHNlbV9jaDEyLmFkYjogQ2hhbmdlIE5vZGU0IHRvIEFzc29jaWF0ZWRfTm9kZS4gQ2hhbmdlCglBc3NvY2lhdGVkX05vZGUgdG8gR2V0X0Fzc29jaWF0ZWRfTm9kZS4gUHV0IHVzZSBvZiBVbmNoZWNrZWRfQWNjZXNzCgltdWNoIG1vcmUgbmFycm93bHkgaW4gcGxhY2VzIHdoZXJlIG5lZWRlZC4gVGhlc2UgYXJlIGNsZWFudXBzLgoKMjAwMS0xMC0yNiAgSm9lbCBCcm9iZWNrZXIgPGJyb2JlY2tlQGduYXQuY29tPgoKCSogNXpvc2ludGUuYWRzIChudWxsX3B0aHJlYWQpOiBuZXcgY29uc3RhbnQuCgoJKiA1enRhcHJvcC5hZGI6CgkoSW5pdGlhbGl6ZV9UQ0IpOiBJbml0aWFsaXplIHRocmVhZCBJRCB0byBudWxsLCB0byBiZSBhYmxlIHRvIHZlcmlmeQoJIGxhdGVyIHRoYXQgdGhpcyBmaWVsZCBoYXMgYmVlbiBzZXQuCgkoRmluYWxpemVfVENCKTogZGl0dG8uCgkoU3VzcGVuZF9UYXNrKTogVmVyaWZ5IHRoYXQgdGhlIHRocmVhZCBJRCBpcyBub3QgbnVsbCBiZWZvcmUgdXNpbmcgaXQuCgkoUmVzdW1lX1Rhc2spOiBkaXR0by4KCgkqIHMtdGFzZGViLmFkYjoKCShSZXN1bWVfQWxsX1Rhc2tzKTogTG9jayB0aGUgdGFza3MgbGlzdCBiZWZvcmUgdXNpbmcgaXQuCgkoU3VzcGVuZF9BbGxfVGFza3MpOiBkaXR0by4KCjIwMDEtMTAtMjYgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAZ25hdC5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0dlbmVyYWxfQWNjZXNzX1R5cGUpOgoJTWFrZSBjb25zdGFudCB2YXJpYW50IG9mIGRlc2lnbmF0ZWQgdHlwZSBmb3IgSXNfQWNjZXNzX0NvbnN0YW50LgoJQ2FsbCB1cGRhdGVfcG9pbnRlcl90byB3aXRoIG1haW4gdmFyaWFudC4KCgkqIHRyYW5zLmMgKHByb2Nlc3NfZnJlZXplX2VudGl0eSwgcHJvY2Vzc190eXBlKToKCUNhbGwgdXBkYXRlX3BvaW50ZXJfdG8gb24gbWFpbiB2YXJpYW50LgoKCSogdXRpbHMuYyAodXBkYXRlX3BvaW50ZXJfdG8pOiBNYWtlIGNvcnJlc3BvbmRpbmcgdmFyaWFudCBmb3IgTkVXX1RZUEUuCglJZiBtYWluIHZhcmlhbnQsIHVwZGF0ZSBhbGwgb3RoZXIgdmFyaWFudHMuCgoJKiB1dGlsczIuYyAoYnVpbGRfdW5hcnlfb3AsIGNhc2UgSU5ESVJFQ1RfUkVGKTogTm8gbG9uZ2VyIHNldAoJVFJFRV9TVEFUSUMuCgoyMDAxLTEwLTI2ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcHJqLXV0aWwuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTAtMjYgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBwcmotdXRpbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMC0yNiAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHByai1hdHRyLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQKCjIwMDEtMTAtMjYgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBwcmotYXR0ci5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoJQWRkID8/PyBjb21tZW50ICh0aGlzIHdob2xlIHNwZWMgaGFzIGFsbW9zdCBubyBjb21tZW50cykKCjIwMDEtMTAtMjYgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnLW9zX2xpYi5hZGIgKE5vcm1hbGl6ZV9QYXRobmFtZSk6IFByZXNlcnZlIHRoZSBkb3VibGUgc2xhc2gKCSgiLy8iKSB0aGF0IHByZWNlZGUgdGhlIGRyaXZlIGxldHRlciBvbiBJbnRlcml4LgoKMjAwMS0xMC0yNiAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogZ25hdF9ybS50ZXhpOiBBZGQgR05BVCBSZWZlcmVuY2UgTWFudWFsLgoKMjAwMS0xMC0yNSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jaDguYWRiIChBbmFseXplX1BhY2thZ2VfUmVuYW1pbmcpOiBTa2lwIGFuYWx5c2lzIGlmIE5hbWUKCWlzIEVycm9yLiBTaW1pbGFyIGNoYW5nZSBmb3Igb3RoZXIgcmVuYW1pbmcgY2FzZXMuCgoyMDAxLTEwLTI1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcy1hdGFjY28uYWRzOiBBZGQgcHJhZ21hIElubGluZV9BbHdheXMgZm9yIGZ1bmN0aW9ucy4KCUZpeCBoZWFkZXIgZm9ybWF0LiBBZGQgY29weXJpZ2h0IDIwMDEKCjIwMDEtMTAtMjUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBwYXItY2gzLmFkYiAoUF9TdWJ0eXBlX01hcmtfUmVzeW5jKTogZm9yIGFuIGFub255bW91cyBhcnJheQoJcmV0dXJuIEVycm9yIHJhdGhlciB0aGFuIEVtcHR5IHNvIHRoYXQgYW5hbHlzaXMgY2FuIHByb2NlZWQuCgoyMDAxLTEwLTI1ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX3V0aWwuYWRiIChFbnRlcl9OYW1lKTogYmV0dGVyIGhhbmRsaW5nIG9mIGNhc2NhZGVkIGVycm9yCgltZXNzYWdlcyB3aGVuIGEgdW5pdCBhcHBlYXJzIGluIGl0cyBvd24gY29udGV4dC4KCjIwMDEtMTAtMjUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fdXRpbC5hZGIgKERlZmluaW5nX0VudGl0eSk6IGluIGNhc2Ugb2YgZXJyb3IsIGF0dGFjaCBjcmVhdGVkCgllbnRpdHkgdG8gc3BlY2lmaWNhdGlvbiwgc28gdGhhdCBzZW1hbnRpYyBhbmFseXNpcyBjYW4gcHJvY2VlZC4KCjIwMDEtMTAtMjUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fdXRpbC5hZGIKCShEZWZpbmluZ19FbnRpdHkpOiBEZWFsIHdpdGggRXJyb3IuCgkoUHJvY2Vzc19FbmRfTGFiZWwpOiBEZWFsIHdpdGggYmFkIGVuZCBsYWJlbCBmb3IuCgoyMDAxLTEwLTI1ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2VsYWIuYWRiIChDaGVja19BX0NhbGwpOiByZWZpbmUgbWVzc2FnZSB3aGVuIGNhbGwgaXMgaW4gYW4KCWluc3RhbmNlIGJ1dCBjYWxsZWUgaXMgbm90IGRlY2xhcmVkIGluIHRoZSBnZW5lcmljIHVuaXQuCgoyMDAxLTEwLTI1ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2VsYWIuYWRiIChDaGVja19BX0NhbGwpOiBjaGVjayBmb3IgcmVuYW1pbmcgYmVmb3JlIGZpbmRpbmcgdGhlCgllbmNsb3NpbmcgdW5pdCwgd2hpY2ggbWF5IGFscmVhZHkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGNhbGxpbmcgdW5pdC4KCjIwMDEtMTAtMjUgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIDRnaW50bmFtLmFkczogZml4IGhlYWRlciBmb3JtYXQuCgoyMDAxLTEwLTI1ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfQ2FsbCk6IGlmIHRoZSBjYWxsIGlzIGFjdHVhbGx5IGFuIGluZGV4aW5nCglvcGVyYXRpb24gb24gdGhlIHJlc3VsdCBvZiBhIHBhcmFtZXRlcmxlc3MgY2FsbCwgcGVyZm9ybSBlbGFib3JhdGlvbgoJY2hlY2sgYWZ0ZXIgdGhlIG5vZGUgaGFzIGJlZW4gcHJvcGVybHkgcmV3cml0dGVuLgoKCSogc2VtX2NoMTIuYWRiIChDb3B5X0dlbmVyaWNfTm9kZSk6IGFmdGVyIHRoZSBwcm9wZXIgYm9keSBoYXMgYmVlbgoJaW5saW5lZCB3aXRoaW4gdGhlIGdlbmVyaWMgdHJlZSwgdGhlIGRlZmluaW5nIGlkZW50aWZpZXIgaXMgbm90IGEKCWNvbXBpbGF0aW9uX3VuaXQuCgoyMDAxLTEwLTI1ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmUpOiBzcGVjaWFsLWNhc2UgcmVzb2x1dGlvbiBvZiBOdWxsIGluIGFuCgkgaW5zdGFuY2Ugb3IgYW4gaW5saW5lZCBib2R5IHRvIGF2b2lkIHZpZXcgY29uZmxpY3RzLgoKCSogc2VtX2NoMTIuYWRiIChDb3B5X0dlbmVyaWNfTm9kZSk6IGZvciBhbGxvY2F0b3JzLCBjaGVjayBmb3IgdmlldwoJIGNvbXBhdGliaWxpdHkgYnkgcmV0cmlldmluZyB0aGUgYWNjZXNzIHR5cGUgb2YgdGhlIGdlbmVyaWMgY29weS4KCjIwMDEtMTAtMjUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYjoKCShBbmFseXplX051bWJlcl9EZWNsYXJhdGlvbik6IEhhbmRsZSBlcnJvciBleHByZXNzaW9uLgoJKFNpZ25lZF9JbnRlZ2VyX1R5cGVfRGVjbGFyYXRpb24pOiBIYW5kbGUgZXJyb3IgYm91bmQuCgkoQW5hbHl6ZV9TdWJ0eXBlX0luZGljYXRpb24pOiBIYW5kbGUgZXJyb3IgcmFuZ2UuCgoJKiBzZW1fdXRpbC5hZGIgKEdldF9JbmRleF9Cb3VuZHMpOiBDaGVjayBmb3IgRXJyb3IuCgoyMDAxLTEwLTI1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcmVzdHJpY3QuYWRiIChTZXRfTm9fUnVuX1RpbWVfTW9kZSk6IFNldCBEaXNjYXJkX05hbWVzIGFzIGRlZmF1bHQKCWluIG5vIHJ1biB0aW1lIG1vZGUuCgoyMDAxLTEwLTI1ICBQYXNjYWwgT2JyeSA8b2JyeUBnbmF0LmNvbT4KCgkqIGduYXRtZW0uYWRiIChSZWFkX05leHQpOiBmaXggQ3VyczIgdmFsdWUgdG8gcHJvcGVybHkgaGFuZGxlIHF1aWV0Cgltb2RlIGNhc2UgZm9yIEFMTE9DIGNhc2UuCgoJKiBnbmF0bWVtLmFkYiAoUmVhZF9OZXh0KTogY29ycmVjdGx5IGZpeCBwYXJzaW5nIGluIFF1aWV0IG1vZGUgb24KCWFsbCBwbGF0Zm9ybXMuIEltcHJvdmVtZW50IG9mIGxhc3QgY2hhbmdlLgoKMjAwMS0xMC0yNSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9BbGxvY2F0b3IpOiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDAxLTEwLTI1ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogb3NpbnQuYWRiIChJc19SZWxhdGl2ZSk6IFJlbW92ZSBkdXBsaWNhdGUuCgoyMDAxLTEwLTI1ICBQYXNjYWwgT2JyeSA8b2JyeUBnbmF0LmNvbT4KCgkqIG9zaW50LmFkYiAoUmVhZF9EZWZhdWx0X1NlYXJjaF9EaXJzKTogY29ycmVjdGx5IGRldGVjdCByZWxhdGl2ZQoJcGF0aG5hbWVzIGluIFVOSVggYW5kIERPUyBzdHlsZSB3aXRoIGRyaXZlIGxldHRlci4KCShJc19SZWxhdGl2ZSk6IG5ldyByb3V0aW5lLgoKCSogb3NpbnQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIG9zaW50LmFkYiAoSXNfUmVsYXRpdmUpOiBpbXBsZW1lbnRhdGlvbiB1c2luZwoJR05BVC5PU19MaWIuSXNfQWJzb2x1dGVfUGF0aC4gQmV0dGVyIGZpeC4KCjIwMDEtMTAtMjUgIFBhc2NhbCBPYnJ5IDxvYnJ5QGduYXQuY29tPgoKCSogZy1kaXJvcGUuYWRiIChCYXNlbmFtZSk6IGNvcnJlY3RseSBjb21wdXRlIG9mZnNldCBiZXR3ZWVuIHRoZQoJb3JpZ2luYWwgUGF0aCBhbmQgdGhlIHRyYW5zbGF0ZWQgb25lLgoKCSogZy1kaXJvcGUuYWRiOiAoQmFzZV9OYW1lKTogYWRkIHNvbWUgY29tbWVudHMuCgoyMDAxLTEwLTI1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZXhwX2ltZ3YuYWRiIChFeHBhbmRfSW1hZ2VfQXR0cmlidXRlKTogRGVmZW5kIGFnYWluc3QgYmFkIHVzZQoJaW4gSElFIG1vZGUsIGF2b2lkcyBjb21waWxhdGlvbiBhYmFuZG9uZWQgbWVzc2FnZQoKCSogZXhwX2ltZ3YuYWRiOiBDb3JyZWN0IHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlCgoJKiBleHBfaW1ndi5hZGI6IENvcnJlY3QgdHlwbyBpbiBwcmV2aW91cyBjaGFuZ2UgKG5vdCBteSBkYXkhKQoKMjAwMS0xMC0yNSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHMtdHBpbm9wLmFkczogQWRkIDIwMDEgdG8gY29weXJpZ2h0IG5vdGljZS4gRml4IGhlYWRlciBmb3JtYXQuCgoyMDAxLTEwLTI1ICBQYXNjYWwgT2JyeSA8b2JyeUBnbmF0LmNvbT4KCgkqIGctYXdrLmFkczogTW92ZSBhbGwgcHJhZ21hIGlubGluZXMgbmV4dCB0byB0aGUgcm91dGluZQoJIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBtb3JlIHVuaWZvcm0gd2l0aCBvdGhlciBHTkFUIHNwZWMuCgoyMDAxLTEwLTIyICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChnbmF0dG9vbHMsIGNyb3NzLWduYXR0b29scyk6IFJlbW92ZSBnbmF0bWVtLgoKMjAwMS0xMC0xOSAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluICh0b29scywgZ25hdHRvb2xzKTogUmVtb3ZlIGduYXRtZW0uCgoyMDAxLTEwLTE3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKG1pc2Mubyk6IERlcGVuZCBvbiBsYW5naG9va3MuaC4KCSogbWlzYy5jOiBJbmNsdWRlIGl0LgoJKExBTkdfSE9PS1NfSU5JVCwgTEFOR19IT09LU19JTklUX09QVElPTlMpOiBOZXcuCgkoTEFOR19IT09LU19ERUNPREVfT1BUSU9OKTogTmV3LgoJKGxhbmdfaG9va3MpOiBVc2UgTEFOR19IT09LU19JTklUSUFMSVpFUi4KCjIwMDEtMTAtMTYgIEZsb3JpYW4gV2VpbWVyICA8ZndAZGVuZWIuZW55by5kZT4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtKTogQWRqdXN0IHRvIHJlY2VudCBjaGFuZ2UgaW4KCWV4cGFuZF9hc21fb3BlcmFuZHMgdG8gaW1wbGVtZW50IG5hbWVkIGFzbSBvcGVyYW5kcy4KCjIwMDEtMTAtMTEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogZXhwX2NoOC5hZGIgKEV4cGFuZF9OX09iamVjdF9SZW5hbWluZ19EZWNsYXJhdGlvbik6IEJ1Z2ZpeCBpbgoJcmVuYW1pbmcgb2YgZGlzY3JpbWluYW50IGZvciBtdXRhYmxlIHJlY29yZCB0eXBlLgoKMjAwMS0xMC0xMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiB2YWxpZHN3LmFkYjogUHJvcGVybHkgc2F2ZSAtZ25hdFZuIHN0YXR1cy4KCjIwMDEtMTAtMTEgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiB1c2FnZS5hZGI6IEFkZCBsaW5lcyBmb3IgViBzd2l0Y2guCgoJKiBnbmF0Y21kLmFkYiAoQ09NUElMRSk6IFJldmlzZSB0cmFuc2xhdGlvbnMgZm9yIC1nbmF0VgoJKC9WQUxJRElUWV9DSEVDS0lORykuCgoyMDAxLTEwLTExICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX3R5cGUuYWRiIChBZGRfT25lX0ludGVycCk6IGFuIG9wZXJhdG9yIGZvciBhIHR5cGUgZGVjbGFyZWQgaW4KCWFuIGV4dGVuc2lvbiBvZiBTeXN0ZW0gaXMga25vd24gdG8gYmUgdmlzaWJsZS4KCjIwMDEtMTAtMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fZXZhbC5hZGIgKENvbXBhcmVfRml4dXApOiBnZXQgdGhlIGJvdW5kcyBvZiBhIFN0cmluZ19MaXRlcmFsCglwcm9wZXJseS4gRml4ZXMgcmVncmVzc2lvbiBvbiBBQ0FUUyBDMzQwMDVHLgoKMjAwMS0xMC0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0l0ZXJhdGlvbl9TY2hlbWUpOiBTdXBwcmVzcyB3YXJuaW5nIG9uIG51bGwKCWxvb3AgaW4gZ2VuZXJpYyBpbnN0YW5jZSwgc2luY2UgdGhpcyBpcyBsaWtlbHkgbm90IHZlcnkgdXNlZnVsLgoKMjAwMS0xMC0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHJlc3RyaWN0LmFkYiAoRGlzYWxsb3cgaW4gTm9fUnVuX1RpbWVfTW9kZSk6IFByb3Blcmx5IHNwZWNpYWxpemUKCXRoZSBlcnJvciBtZXNzYWdlIGZvciBoaWdoIGludGVncml0eSBtb2RlLgoKCSogcnRzZmluZC5hZGIgKFJURSk6IEdpdmUgbWVzc2FnZSBpZiB3ZSB0cnkgdG8gZmluZCBhbiBlbnRpdHkgdGhhdAoJaXMgbm90IGF2YWlsYWJsZSBpbiBoaWdoIGludGVncml0eSBtb2RlLgoKCSogcnRzZmluZC5hZHM6CgkoT0tfVG9fVXNlX0luX0hJRV9Nb2RlKTogTmV3IGFycmF5LgoJKFJURSk6IE1heSByZXR1cm4gRW1wdHkgaW4gaGlnaCBpbnRlZ3JpdHkgbW9kZS4KCgkqIHJ0c2ZpbmQuYWRzIChPS19Ub19Vc2VfSW5fTm9fUnVuX1RpbWVfTW9kZSk6IE5ldyBuYW1lIGZvcgoJT0tfVG9fVXNlX0luX0hJRV9Nb2RlLCBub3cgaW5jbHVkZXMgU3lzdGVtX0ZBVF94eHguCgoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBLaWxsIGJvZHkgaW4gcHJlZGVmaW5lZAoJdW5pdCBpZiBub3QgaW5saW5lZCBhbHdheXMgYW5kIGluIG5vIHJ1bnRpbWUgbW9kZS4gRml4ZXMgcHJvYmxlbQoJY2F1c2VkIGJ5IG5ldyBSdHNmaW5kIGNoYW5nZXMuCgoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9TdWJyb2dyYW1fQm9keSk6IERvIG5vdCBDaGVja19SZWZlcmVuY2VzIGlmCglib2R5IGlzIGRlbGV0ZWQuCgoJKiBydHNmaW5kLmFkYiAoUlRFKTogTWFrZSBzdXJlIHdlIGRvIG5vdCB0cnkgdG8gbG9hZCB1bml0IGFmdGVyCglnaXZpbmcgbWVzc2FnZSBmb3IgZW50aXR5IG5vdCBhdmFpbGFibGUgaW4gaGlnaCBpbnRlZ3JpdHkgbW9kZS4KCjIwMDEtMTAtMTEgIFBhc2NhbCBPYnJ5IDxvYnJ5QGduYXQuY29tPgoKCSogaW1wdW5pdC5hZGI6IEFkZCBHTkFULkNSQzMyLgoKMjAwMS0xMC0xMSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGV4cF9maXhkLmFkYiAoRXhwYW5kX011bHRpcGx5X0ZpeGVkX0J5X0ZpeGVkX0dpdmluZ19GaXhlZCk6IGhhbmRsZQoJcHJvcGVybHkgdGhlIGNhc2Ugd2hlcmUgb25lIHVuaXZlcnNhbCBvcGVyYW5kIGluIGEgbm9uLXN0YXRpYwoJZXhwb25lbnRpYXRpb24gb2YgYSByZWFsIGxpdGVyYWwuCgoyMDAxLTEwLTExICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogZXhwX2NoNy5hZGIgKEZpbmRfRmluYWxfTGlzdCk6IGZvciBhIHR5cGUgYXBwZWFyaW5nIGluIGEgd2l0aF90eXBlCgljbGF1c2UsIHJldHVybiB0aGUgZ29iYWwgZmluYWxpemF0aW9uIGxpc3QsIGZvciBsYWNrIG9mIGFudGhpbmcgZWxzZS4KCjIwMDEtMTAtMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBleHBfY2g3LmFkYiAoTWFrZV9UcmFuc2llbnRfQmxvY2spOiBpZiBzdGF0ZW1lbnQgaXMgd2l0aGluCglleGNlcHRpb24gaGFuZGxlciwgYWx3YXlzIHVzZSBuZXcgdHJhbnNpZW50IHNjb3BlIHRvIHBsYWNlIENsZWFuCglwcm9jZWR1cmUuCgoyMDAxLTEwLTExICBQYXNjYWwgT2JyeSA8b2JyeUBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluOgoJKEdOQVRfQURBX09CSlMpOiBhZGQgZy1jcmMzMi5vLCBhLXRhZ3MubywgYS1zdHJlYW0ubwoJKEdOQVRCSU5EX09CSlMpOiBhZGQgZy1jcmMzMi5vLCBhLXRhZ3MubywgYS1zdHJlYW0ubwoJKEdOQVRMU19SVExfT0JKUyk6IGFkZCBnLWNyYzMyLm8KCShHTkFUTUFLRV9SVExfT0JKUyk6IGFkZCBnLWNyYzMyLm8KCgkqIGFsaS11dGlsLmFkYjoKCShDUkNfTWF0Y2gpOiBuZXcgZnVuY3Rpb24uCgkoR2V0X0ZpbGVfQ2hlY2tzdW0pOiByZW5hbWVkIEdldF9GaWxlX0NSQy4gVXNlIHRoZSBHTkFULkNSQzMyIHVuaXQKCWluc3RlYWQgb2YgdGhlIHByZXZpb3VzIHNpbXBsZSBjaGVja3N1bSBhbGdvcml0aG0uCgkoVGltZV9TdGFtcF9NaXNtYXRjaCk6IHVzZSBDUkNfTWF0Y2ggZm9yIGNvbXBhcmlzb24uCgkoU2V0X1NvdXJjZV9UYWJsZSk6IGlkZW0uCgoJKiBhbGktdXRpbC5hZHM6CgkoR2V0X0ZpbGVfQ2hlY2tzdW0pOiByZW5hbWVkIEdldF9GaWxlX0NSQyBhcyBub3cgd2UgY29tcHV0ZSBDUkMKCWluc3RlYWQgb2Ygc2ltcGxlIGNoZWNrc3VtLgoJKENSQ19NYXRjaCk6IG5ldyBmdW5jdGlvbi4KCShDUkNfRXJyb3IpOiBuZXcgY29uc3RhbnQuCgoJKiBhbGkuYWRiIChTY2FuX0FMSSk6IHJlbmFtZSB2YXJpYWJsZSBDaGsgdG8gQ1JDIGFzIHdlIGFyZSBoYW5kbGluZwoJYSBDUkMgbm93IGFuZCBub3QgYSBzaW1wbGUgY2hlY2tzdW0uIEEgQ1JDIHVzZXMgbG93ZXItY2FzZSBoZXgKCWxldHRlcnMsIGZpeGVzIGFtYmlndWl0eSBpbiBwYXJzaW5nLgoKCSogYWxpLmFkcyAoU2RlcF9SZWNvcmQuQ2hlY2tzdW0pOiByZW5hbWVkIFNkZXBfUmVjb3JkLkNSQyBhcyB0aGlzCglpcyB3aGF0IHRoaXMgdmFyaWFibGUgd2lsbCBzdG9yZS4KCgkqIGJjaGVjay5hZGI6IENoYW5nZSByZWZlcmVuY2UgdG8gY2hlY2hzdW0gaW4gY29tbWVudHMgYnkgQ1JDLgoJKENoZWNrX0NvbnNpc3RlbmN5KTogUmVuYW1lIEdldF9GaWxlX0NoZWNrc3VtIHRvIEdldF9GaWxlX0NSQy4KCXJlbmFtZSBBbGxfQ2hlY2tzdW1fTWF0Y2ggdG8gQWxsX0NSQ19NYXRjaC4gQ2hhbmdlIGR1ZSB0byBBUEkKCXJlbmFtaW5nIHNpbmNlIG5vdyBHTkFUIGRvZXMgbm90IHVzZSBhIHNpbXBsZSBjaGVja3N1bSBidXQgYQoJQ1JDIHVzaW5nIEdOQVQuQ1JDMzIuCgoJKiBnbmF0bHMuYWRiOiBSZW5hbWUgQ2hlY2tzdW0gdG8gQ1JDIGluIG1hbnkgcGxhY2VzLCB3ZSB1c2UgYSBDUkMKCW5vdyBhbmQgbm90IGFueW1vcmUgYSBzaW1wbGUgY2hlY2tzdW0uCgoJKiBsaWItbG9hZC5hZGI6IFVzZSBTb3VyY2VfQ1JDIGluc3RlYWQgb2YgU291cmNlX0NoZWNrc3VtIGluIG1hbnkKCXBsYWNlcy4KCgkqIGxpYi13cml0LmFkYiAoV3JpdGVfQUxJKTogVXNlIFNvdXJjZV9DUkMgaW5zdGVhZCBvZiBTb3VyY2VfQ2hlY2tzdW0uCgoJKiBzY2Fucy5hZGI6CgkoUmVzdG9yZV9TY2FuX1N0YXRlKTogcmVuYW1lIENoZWNrc3VtIHRvIENSQy4KCShTYXZlX1NjYW5fU3RhdGUpOiBpZGVtLgoKCSogc2NhbnMuYWRzOgoJV2l0aCBHTkFULkNSQzMyLgoJKENoZWNrc3VtKTogcmVuYW1lIHRvIENSQy4KCShTYXZlZF9TY2FuX1N0YXRlKTogU2F2ZV9DaGVja3N1bSBmaWVsZCByZW5hbWVkIHRvIFNhdmVfQ1JDCgoJKiBzY24tbmxpdC5hZGI6IFJlbmFtZSBtYW55IEFjY3VtdWxhdGVfQ2hlY2tzdW0gdG8gVXBkYXRlIChmcm9tCglHTkFULkNSQzMyKS4gIFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoKCSogc2NuLXNsaXQuYWRiOiBSZW5hbWUgbWFueSBBY2N1bXVsYXRlX0NoZWNrc3VtIHRvIFVwZGF0ZSAoZnJvbQoJR05BVC5DUkMzMikuICBVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCgkqIHNjbi5hZGI6CgkoQWNjdW11bGF0ZV9DaGVja3N1bSk6IHJlbW92ZWQuCgkoVXBkYXRlKTogbmV3IHByb2NlZHVyZS4gQWRkIGEgd2lkZS1jaGFyYWN0ZXIgaW50byB0aGUgQ1JDLgoKCSogc2lucHV0LWwuYWRiOgoJKENvbXBsZXRlX1NvdXJjZV9GaWxlX0VudHJ5KTogdXNlIENSQzMyIGluc3RlYWQgb2Ygc2ltcGxlIGNoZWNrc3VtLgoJKExvYWRfRmlsZSk6IGZpeCBpbml0aWFsaXphdGlvbiBvZiBTIChjaGFuZ2UgU291cmNlX0NoZWNrc3VtIHRvCglTb3VyY2VfQ1JDKQoKCSogc2lucHV0LXAuYWRiIChMb2FkX1Byb2plY3RfRmlsZSk6IHJlbmFtZSBTb3VyY2VfQ2hlY2tzdW0gdG8KCVNvdXJjZV9DUkMgaW4gUyBpbml0aWFsaXphdGlvbi4KCgkqIHNpbnB1dC5hZGIgKFNvdXJjZV9DaGVja3N1bSk6IHJlbmFtZWQgdG8gU291cmNlX0NSQy4KCgkqIHNpbnB1dC5hZHMgKFNvdXJjZV9DaGVja3N1bSk6IHJlbmFtZWQgdG8gU291cmNlX0NSQy4KCVVwZGF0ZSBjb21tZW50cyBmb3IgdGhlIENSQy4KCgkqIHR5cGVzLmFkYiAoSGV4KTogVXNlIGxvd2VyY2FzZSBmb3IgdGhlIGxldHRlciBwYXJ0LgoKCSogdHlwZXMuYWRzIChHZXRfSGV4X1N0cmluZyk6IFJldHVybnMgdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uCglmb3IgYSB3b3JkLiBUaGlzIGlzIGN1cnJlbnRseSB1c2VkIG9ubHkgZm9yIENSQy4gSW4gcHJldmlvdXMgdmVyc2lvbiwKCXRoZSBjaGVja3N1bSB3YXMgdXNpbmcgYSByZXByZXNlbnRhdGlvbiB3aXRoIGFsbCBsZXR0ZXIgYmVpbmcKCXVwcGVyLWNhc2UuIFdpdGggdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiAodXNpbmcgQ1JDKSB3ZSBkbyBub3QgcmVtb3ZlCgl0aGUgMzJ0aCBiaXQgb2YgdGhlIENSQywgc28gd2UgY2FuIGhhdmUgYW4gdXBwZXItY2FzZSBzdGFydGluZyBsZXR0ZXIKCWluIHRoZSBDUkMuIFRoaXMgaXMgbm90IHBvc3NpYmxlIHRvIHBhcnNlIGluIFNjYW5fQUxJIChhbGkuYWRiKS4KCUl0IGlzIGFtYmlnb3VzIHNpbmNlIHRoZSBDUkMgd2FzIG9wdGlvbmFsIGFuZCBjb3VsZCBiZSBmb2xsb3dlZCBieQoJb3B0aW9ucyBsaWtlIEVCLCBFRS4gU28gbm93IHRoaXMgcm91dGluZXMgdXNlcyBsb3dlci1jYXNlIGxldHRlciBmb3IKCXRoZSBoZXhhZGVjaW1hbCByZXByZXNlbnRhdGlvbi4gU3RyYW5nZSBlbm91Z2ggb25seSBsb3dlciBjYXNlIGxldHRlcnMKCXdoZXJlIGNoZWNrZWQgaW4gU2Nhbl9BTEkgKGV2ZW4gaWYgdGhpcyB3YXMgbm90IGEgcG9zc2libGUgY2FzZSkuCgoJKiBnbmF0dnNuLmFkcyAoTGlicmFyeV9WZXJzaW9uKTogY2hhbmdlZCB0byAzLjE1YS4KCgkqIHMtY3JjMzIuYWRzOiBJbml0aWFsIHZlcnNpb24gZnJvbSBHTkFULkNSQzMyLiBUaGlzIGlzIHRoZSB2ZXJzaW9uCglmb3IgdGhlIGNvbXBpbGVyLgoKCSogcy1jcmMzMi5hZGI6IEluaXRpYWwgdmVyc2lvbiBmcm9tIEdOQVQuQ1JDMzIuIFRoaXMgaXMgdGhlIHZlcnNpb24KCWZvciB0aGUgY29tcGlsZXIuCgoJKiBhbGktdXRpbC5hZGI6IFJlZG8gcHJldmlvdXMgY2hhbmdlIHRvIGF2b2lkIHVzaW5nIHdvcmQgQ1JDIGV2ZXJ5d2hlcmUKCUFkZCAyMDAxIHRvIGNvcHlyaWdodCBub3RpY2UKCShBY2N1bXVsYXRlX0NoZWNrc3VtKTogTW9kaWZ5IHRvIHVzZSBTeXN0ZW0uQ1JDMzIuCgoJKiBhbGktdXRpbC5hZHM6IFJlZG8gY2hhbmdlcyBvZiBwcmV2aW91cyByZXZpc2lvbiB0byBjb250aW51ZSB0byB1c2UKCXRoZSB3b3JkIENoZWNrc3VtLiBBZGQgMjAwMSB0byBjb3B5cmlnaHQgbm90aWNlLgoKCSogYWxpLmFkYjogVW5kbyBzb21lIG9mIHByZXZpb3VzIGNoYW5nZXMsIG5vdCBuZWVkZWQuCglLZWVwIHRoZSBjaGFuZ2UgZm9yIGxvd2VyIGNhc2UgbGV0dGVycyBpbiB0aGUgY2hlY2tzdW0uCgoJKiBhbGkuYWRzOiBVbmRvIHByZXZpb3VzIGNoYW5nZSBub3QgbmVlZGVkLgoKCSogYmNoZWNrLmFkYjogVW5kbyBtb3N0IG9mIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4KCUJ1dCBkbyB1c2UgQ2hlY2tzdW1zX01hdGNoIGZvciBjaGVja3N1bSBjb21wYXJpc29uLgoKCSogZ25hdGxzLmFkYjogVW5kbyBtb3N0IG9mIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4KCUJ1dCBkbyB1c2UgQ2hlY2tzdW1zX01hdGNoIGZvciBjb21wYXJpbmcgY2hlY2tzdW1zLgoKCSogbGliLWxvYWQuYWRiOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4KCgkqIGxpYi13cml0LmFkYjogVW5kbyBwcmV2aW91cyBjaGFuZ2UsIG5vdCBuZWVkZWQuCgoJKiBsaWItd3JpdC5hZHM6IERvY3VtZW50IHRoYXQgY2hlY2tzdW1zIHVzZSBsb3dlciBjYXNlLAoJbm90IHVwcGVyIGNhc2UgbGV0dGVycy4KCgkqIHNjYW5zLmFkYjogVW5kbyBwcmV2aW91cyBjaGFuZ2UsIG5vdCBuZWVkZWQKCgkqIHNjYW5zLmFkczogVW5kbyBwcmV2aW91cyBjaGFuZ2UsIG5vdCBuZWVkZWQuCgoJKiBzY24tbmxpdC5hZGI6IFVuZG8gcHJldmlvdXMgY2hhbmdlcywgbm90IG5lZWRlZC4KCgkqIHNjbi1zbGl0LmFkYjogVW5kbyBwcmV2aW91cyBjaGFuZ2UsIG5vdCBuZWVkZWQuICBGaXggaGVhZGVyIGZvcm1hdC4KCgkqIHNjbi5hZGI6CgkoQWNjdW11bGF0ZV9DaGVja3N1bSk6IFVzZSBTeXN0ZW0uQ1JDMzIuCgkoSW5pdGlhbGl6ZV9DaGVja3N1bSk6IE5ldyBwcm9jZWR1cmUuCglSZW1vdmUgb3RoZXIgY2hhbmdlcyBvZiBwcmV2aW91cyByZXZpc2lvbi4KCgkqIHNpbnB1dC1wLmFkYjogVW5kbyBwcmV2aW91cyBjaGFuZ2UsIG5vdCBuZWVkZWQuCgoJKiBzaW5wdXQuYWRiOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4KCgkqIHNpbnB1dC1sLmFkYjogVW5kbyBwcmV2aW91cyBjaGFuZ2UsIG5vdCBuZWVkZWQuCgoJKiBzaW5wdXQuYWRzOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4gIEtlZXAgb25seSBjb21tZW50CglvbiBuZXcgY2hlY2tzdW0gYWxnb3JpdGhtCgoJKiBNYWtlZmlsZS5pbjogQWRkIHMtY3JjMzIgYXMgbmVlZGVkLCByZW1vdmUgZy1jcmMzMi4KCUFsc28gcmVtb3ZlIGEtdGFncyBhbmQgYS1zdHJlYW0gZnJvbSBHTkFUIHNvdXJjZXMuCgoJKiBhbGkuYWRiIChTY2FuX0FMSSk6IGZpeCB0eXBvIGludHJvZHVjZSBpbiBsYXRlc3QgY2hlY2staW4uCgoJKiBNYWtlZmlsZS5pbiAoR05BVFJUTF9OT05UQVNLSU5HX09CSlMpOiBBZGQgZy1jcmMzMi5vLgoKMjAwMS0xMC0xMSAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIGVpbmZvLmg6IFJlZ2VuZXJhdGUuCgoJKiBubWFrZS5hZHM6IFJlZ2VuZXJhdGUuCgoJKiBubWFrZS5hZGI6IFJlZ2VuZXJhdGUuCgoJKiBzaW5mby5oOiBSZWdlbmVyYXRlLgoKCSogdHJlZXBycy5hZGI6IFJlZ2VuZXJhdGUuCgoyMDAxLTEwLTEwICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogZ25hdC1zdHlsZS50ZXhpOiBOZXcgZmlsZSBkZXNjcmliaW5nIGNvZGluZyBndWlkZWxpbmVzIGZvciBBZGEuCgoyMDAxLTEwLTEwICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogZWluZm8uYWRiIChXcml0ZV9FbnRpdHlfRmxhZ3MpOiBFbGFib3JhdGlvbl9FbnRpdHlfUmVxdWlyZWQKCWlzIEZsYWcxNzQuCgoyMDAxLTEwLTEwICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogc25hbWVzLmFkczogQWRkIG5ldyBuYW1lcyBmb3IgcHJvamVjdCBmYWNpbGl0eS4KCgkqIHNuYW1lcy5hZGI6IFVwZGF0ZSB0byByZWZsZWN0IHNuYW1lcy5hZHMgY2hhbmdlcy4KCgkqIHNuYW1lcy5oOiBVcGRhdGUgdG8gcmVmbGVjdCBzbmFtZXMuYWRzIGNoYW5nZXMuCgoyMDAxLTEwLTEwICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZS5hZGI6CgkoQWRkX1N3aXRjaGVzKTogcmVmbGVjdCB0aGUgY2hhbmdlcyBmb3IgdGhlIHN3aXRjaGVzIGF0dHJpYnV0ZXMKCURlZmF1bHRfU3dpdGNoZXMgaW5kZXhlZCBieSB0aGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsCglTd2l0Y2hlcyBpbmRleGVkIGJ5IHRoZSBmaWxlIG5hbWUuCgkoQ29sbGVjdF9Bcmd1bWVudHNfQW5kX0NvbXBpbGUpOiBJZGVtLgoJUmVmbGVjdCB0aGUgYXR0cmlidXRlIG5hbWUgY2hhbmdlcy4KCgkqIHByai1hdHRyLmFkYjoKCShJbml0aWFsaXNhdGlvbl9EYXRhKTogQ2hhbmdlIHRoZSBuYW1lcyBvZiBzb21lIHBhY2thZ2VzIGFuZAoJYXR0cmlidXRlcy4KCShJbml0aWFsaXplKTogcHJvY2VzcyBjYXNlIGluc2Vuc2l0aXZlIGFzc29jaWF0aXZlIGFycmF5cy4KCgkqIHByai1hdHRyLmFkczoKCShBdHRyaWJ1dGVfS2luZCk6IFJlbW92ZSBCb3RoLCBhZGQgQ2FzZV9JbnNlbnNpdGl2ZV9Bc3NvY2lhdGl2ZV9BcnJheS4KCgkqIHByai1kZWN0LmFkYjoKCShQYXJzZV9BdHRyaWJ1dGVfRGVjbGFyYXRpb24pOiBGb3IgY2FzZSBpbnNlbnNpdGl2ZSBhc3NvY2lhdGl2ZQoJIGFycmF5cywgc2V0IHRoZSBpbmRleCBzdHJpbmcgdG8gbG93ZXIgY2FzZS4KCgkqIHByai1lbnYuYWRiOgoJUmVmbGVjdCB0aGUgY2hhbmdlcyBvZiB0aGUgcHJvamVjdCBhdHRyaWJ1dGVzLgoKCSogcHJqLW5tc2MuYWRiOgoJUmVwbGFjZSBDaGVja19OYW1pbmdfU2NoZW1lIGJ5IEFkYV9DaGVjayBhbmQKCUxhbmd1YWdlX0luZGVwZW5kZW50X0NoZWNrLgoKCSogcHJqLW5tc2MuYWRzOgoJUmVwbGFjZWQgQ2hlY2tfTmFtaW5nX1NjaGVtZSBieSAyIHByb2NlZHVyZXM6CglBZGFfQ2hlY2sgYW5kIExhbmd1YWdlX0luZGVwZW5kZW50X0NoZWNrLgoKCSogcHJqLXByb2MuYWRiOgoJKFByb2Nlc3NfRGVjbGFyYXRpdmVfSXRlbXMpOiBGb3IgY2FzZS1pbnNlbnNpdGl2ZSBhc3NvY2lhdGl2ZQoJYXJyYXlzLCBzZXQgdGhlIGluZGV4IHN0cmluZyB0byBsb3dlciBjYXNlLgoJKFJlY3Vyc2l2ZV9DaGVjayk6IENhbGwgUHJqLk5tc2MuQWRhX0NoZWNrLCBpbnN0ZWFkIG9mCglQcmouTm1zYy5DaGVja19OYW1pbmdfU2NoZW1lLgoKCSogcHJqLXRyZWUuYWRiOgoJKENhc2VfSW5zZW5zaXRpdmUpOiBOZXcgZnVuY3Rpb24KCShTZXRfQ2FzZV9JbnNlbnNpdGl2ZSk6IE5ldyBwcm9jZWR1cmUKCgkqIHByai10cmVlLmFkczoKCShDYXNlX0luc2Vuc2l0aXZlKTogTmV3IGZ1bmN0aW9uCgkoU2V0X0Nhc2VfSW5zZW5zaXRpdmUpOiBOZXcgcHJvY2VkdXJlCgkoUHJvamVjdF9Ob2RlX1JlY29yZCk6IE5ldyBmbGFnIENhc2VfSW5zZW5zaXRpdmUuCgoJKiBwcmotdXRpbC5hZGI6CgkoVmFsdWVfT2YpOiBuZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBzaW5nbGUKCXN0cmluZyB2YXJpYWJsZSBvciBhdHRyaWJ1dGUuCgoJKiBwcmotdXRpbC5hZHM6CgkoVmFsdWVfT2YpOiBuZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzdHJpbmcgdmFsdWUgb2YgYSBzaW5nbGUKCXN0cmluZyB2YXJpYWJsZSBvciBhdHRyaWJ1dGUuCgoJKiBwcmouYWRiOgoJKEFkYV9EZWZhdWx0X1NwZWNfU3VmZml4KTogTmV3IGZ1bmN0aW9uCgkoQWRhX0RlZmF1bHRfSW1wbF9TdWZmaXgpOiBOZXcgZnVuY3Rpb24KCUNoYW5nZSBkZWZpbml0aW9ucyBvZiBzZXZlcmFsIGNvbnN0YW50cyB0byByZWZsZWN0CgluZXcgY29tcG9uZW50cyBvZiByZWNvcmQgdHlwZXMuCgoJKiBwcmouYWRzOgoJKE5hbWluZ19EYXRhKTogQ2hhbmdlIHNldmVyYWwgY29tcG9uZW50cyB0byByZWZsZWN0IG5ldwoJZWxlbWVudHMgb2YgbmFtaW5nIHNjaGVtZXMuCgkoUHJvamVjdF9EYXRhKTogTmV3IGZsYWdzIFNvdXJjZXNfUHJlc2VudCBhbmQKCUxhbmd1YWdlX0luZGVwZW5kZW50X0NoZWNrZWQuCgkoQWRhX0RlZmF1bHRfU3BlY19TdWZmaXgpOiBOZXcgZnVuY3Rpb24uCgkoQWRhX0RlZmF1bHRfSW1wbF9TdWZmaXgpOiBOZXcgZnVuY3Rpb24uCgoJKiBzbmFtZXMuYWRzOgoJTW9kaWZpY2F0aW9uIG9mIHByZWRlZmluZWQgbmFtZXMgZm9yIHByb2plY3QgbWFuYWdlcjogYWRkZWQKCUltcGxlbWVudGF0aW9uLCBTcGVjaWZpY2F0aW9uX0V4Y2VwdGlvbnMsIEltcGxlbWVudGF0aW9uX0V4Y2VwdGlvbnMsCglTcGVjaWZpY2F0aW9uX1N1ZmZpeCwgSW1wbGVtZW50YXRpb25fU3VmZml4LCBTZXBhcmF0ZV9TdWZmaXgsCglEZWZhdWx0X1N3aXRjaGVzLCBfTGFuZ3VhZ2VzLCBCdWlsZGVyLCBDcm9zc19SZWZlcmVuY2UsCglGaW5kZXIuIFJlbW92ZWQgQm9keV9QYXJ0LCBTcGVjaWZpY2F0aW9uX0FwcGVuZCwgQm9keV9BcHBlbmQsCglTZXBhcmF0ZV9BcHBlbmQsIEduYXRtYWtlLCBHbmF0eHJlZiwgR25hdGZpbmQsIEduYXRiaW5kLAoJR25hdGxpbmsuCgoJKiBwcmouYWRzOiAoQWRhX0RlZmF1bHRfU3BlY19TdWZmaXgsIEFkYV9EZWZhdWx0X0ltcGxfU3VmZml4KToKCUFkZCBjb21tZW50cy4KCgkqIHByai1ubXNjLmFkYiAoQWRhX0NoZWNrKTogVGVzdCB0aGF0IFNlcGFyYXRlX1N1ZmZpeCBpcyBkZWZhdWx0ZWQsCglub3QgdGhhdCBpdCBpcyBOaWxfVmFyaWFibGVfVmFsdWUuCgoJKiBwcmouYWRzOiBBZGQgPz8/IGZvciB1bmNvbW1lbnRlZCBkZWNsYXJhdGlvbnMKCjIwMDEtMTAtMTAgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fcHJhZy5hZGI6IChBbmFseXplX1ByYWdtYSwgY2FzZSBFeHRlcm5hbCk6IElmIGVudGl0eSBpcyBhCgljb25zdGFudCwgZG8gbm90IGluZGljYXRlIHBvc3NpYmxlIG1vZGlmaWNhdGlvbiwgc28gdGhhdCBnaWdpIGNhbgoJdHJlYXQgaXQgYXMgYSBib25hIGZpZGUgY29uc3RhbnQuCgoyMDAxLTEwLTEwICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX3ByYWcuYWRiOiBBZGQgcHJvY2Vzc2luZyBmb3IgcHJhZ21hIEV4dGVybmFsLgoKCSogc25hbWVzLmFkczogQWRkIGVudHJ5IGZvciBwcmFnbWEgRXh0ZXJuYWwuCgoJKiBwYXItcHJhZy5hZGI6IEFkZCBwcmFnbWEgRXh0ZXJuYWwuCgoJKiBzbmFtZXMuYWRiOiBVcGRhdGVkIHRvIG1hdGNoIHNuYW1lcy5hZHMuCgoyMDAxLTEwLTEwICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX0FsbG9jYXRvcik6IEdlbmVyYXRlIG1lYW5pbmdmdWwgbmFtZXMgZm9yCglhIGR5bmFtaWMgdGFzayBpZiB0aGUgYWxsb2NhdG9yIGFwcGVhcnMgaW4gYW4gaW5kZXhlZCBhc3NpZ25tZW50CglvciBzZWxlY3RlZCBjb21wb25lbnQgYXNzaWdubWVudC4KCgkqIGV4cF91dGlsLmFkYiAoQnVpbGRfVGFza19BcnJheV9JbWFnZSwgQnVpbGRfVGFza19SZWNvcmRfSW1hZ2UpOgoJRm9yIGEgZHluYW1pYyB0YXNrIGluIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50LCB1c2UgdGFyZ2V0IG9mCglhc3NpZ25tZW50IHRvIGdlbmVyYXRlIG1lYW5pbmdmdWwgbmFtZS4KCjIwMDEtMTAtMTAgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBlaW5mby5hZGIgKFdyaXRlX0ZpZWxkMTlfTmFtZSk6IEJvZHlfRW50aXR5IGlzIGFsc28gZGVmaW5lZCBmb3IKCWEgZ2VuZXJpYyBwYWNrYWdlLgoKCSogZWluZm8uYWRzOiBCb2R5X0VudGl0eSBpcyBhbHNvIGRlZmluZWQgZm9yIGdlbmVyaWMgcGFja2FnZS4KCURvY3VtZW50YXRpb24gY2hhbmdlIG9ubHkKCgkqIGV4cF9hZ2dyLmFkYiAoQnVpbGRfQXJyYXlfQWdncl9Db2RlKTogV2hlbiBleHBhbmRpbmcgYW4KCW90aGVyc19jaG9pY2UgZm9yIGEgZGlzY3JpbWluYXRlZCBjb21wb25lbnQgaW5pdGlhbGl6YXRpb24sCgljb252ZXJ0IGRpc2NyaW1pbmFudCByZWZlcmVuY2VzIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZGlzY3JpbWluYWxzLgoKCSogZXhwX2NoMy5hZGIgKEdldF9TaW1wbGVfSW5pdF9WYWwpOiBBZGQgcXVhbGlmaWNhdGlvbiB0byBhZ2dyZWdhdGUKCW9ubHkgaWYgb3JpZ2luYWwgdHlwZSBpcyBwcml2YXRlIGFuZCBleHByZXNzaW9uIGhhcyB0byBiZSB3cmFwcGVkCglpbiBhIGNvbnZlcnNpb24uCgoJKiBjaGVja3MuYWRiOgoJKEFwcGx5X0NvbnN0cmFpbnRfQ2hlY2spOiBEbyBub3QgcGVyZm9ybSBsZW5ndGggY2hlY2sKCWlmIGV4cHJlc3Npb24gaXMgYW4gYWdncmVnYXRlIHdpdGggb25seSBhbiBvdGhlcnNfY2hvaWNlLgoJKExlbmd0aF9OX0NvbmQpOiB0d28gcmVmZXJlbmNlcyB0byB0aGUgc2FtZSBpbl9wYXJhbWV0ZXIKCSh0eXBpY2FsbHkgdGhlIGRpc2NyaW1pbmFsIGluIGFuIGluaXRfcHJvYykgZGVub3RlIHRoZSBzYW1lIHZhbHVlLgoJVHdvIHVzZWZ1bCBvcHRpbWl6YXRpb24gdW5jb3ZlcmVkIGJ5IGJ1Z2ZpeGVzIGFib3ZlLgoKMjAwMS0xMC0xMCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHhlaW5mby5hZGI6IENoYW5nZSBpbnQgdG8gY2hhciBpbiB0cmFuc2xhdGlvbiBvZiBlbnVtZXJhdGlvbiB0eXBlcy4KCVRoaXMgZml4ZXMgYSBwcm9ibGVtIGluIHRoZSBDIHJlcHJlc2VudGF0aW9uIG9mIGNvbXBvbmVudCBhbGlnbm1lbnQuCglBZGQgMjAwMSB0byBjb3B5cmlnaHQgbm90aWNlCgoyMDAxLTEwLTEwICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQGduYXQuY29tPgoKCSogZGVjbC5jOiAodmFsaWRhdGVfc2l6ZSk6IERvIGNoZWNrIHNpemUgb2Ygb2JqZWN0IG9mIGludGVncmFsIHR5cGUKCWlmIGl0IGlzIGEgcGFja2VkIGFycmF5IHR5cGUuCgoyMDAxLTEwLTEwICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQGduYXQuY29tPgoKCSogZGVjbC5jOiAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIG9iamVjdCk6IEFsc28gbWF0ZXJpYWxpemUKCVZBUl9ERUNMIGZvciBjb25zdGFudCBpZiBub3QgSXNfUHVibGljIGJ1dCAtTzAuCgoyMDAxLTEwLTEwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckBnbmF0LmNvbT4KCgkqIG1pc2MuYyAoc3RydWN0IGxhbmdfaG9va3MpOiBBZGQgbmV3IGluaXRpYWxpemVyIHRvIG1hdGNoIEdDQyBjaGFuZ2UuCgoyMDAxLTEwLTEwICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogeG5tYWtlLmFkYiAoWE5tYWtlKTogRml4IGhhbmRsaW5nIG9mIC1zLy1iIG9wdGlvbnMuICBObyBsb25nZXIKCXVzZSAnLycgYXMgc3dpdGNoIGNoYXJhY3RlciwgYWxsb3dpbmcgZm9yIGFic29sdXRlIGZpbGUgbmFtZXMuCgoyMDAxLTEwLTA5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiA0Z2ludG5hbS5hZHMsIE1ha2UtbGFuZy5pbiwgTWFrZWZpbGUuaW4sIGNvbmZpZy1sYW5nLmluOiBVcGRhdGUKCUZTRiBhZGRyZXNzLgoKMjAwMS0xMC0wOCAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluICh0cmVlcHJzLmFkcywgZWluZm8uaCwgc2luZm8uaCwgbm1ha2UuYWRiLCBubWFrZS5hZHMpOgoJQXV0b21hdGljYWxseSBidWlsZCB1dGlsaXRpZXMgd2hlbiBmaWxlcyBuZWVkIHRvIGJlIHJlZ2VuZXJhdGVkLgoKMjAwMS0xMC0wOCAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIHhzbmFtZXMuYWRiOiBOZXcgdXRpbGl0eSBmb3IgdXBkYXRpbmcgc25hbWVzLmFkcyBhbmQgc25hbWVzLmFkYgoKMjAwMS0xMC0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoQURBRkxBR1MpOiBBZGQgLVcgLVdhbGwuCgkoQURBX0ZMQUdTX1RPX1BBU1MpOiBTZXQgQURBX0NGTEFHUz0kKENGTEFHUykgYWxzby4KCShnbmF0MSk6IEFsc28gZGVwZW5kIG9uIGF0dHJpYnMuby4KCShnbmF0bGliLCBnbmF0bGliLXNoYXJlZCk6IFNldCBDQyBhbmQgQURBQyBpbiByZWN1cnNpdmUgbWFrZS4KCSogTWFrZWZpbGUuaW4gKFhfQURBRkxBR1MsIFRfQURBRkxBR1MpOiBOZXcuCgkoQURBQyk6IFNldCB0byBAQURBQ0AgaW4gc3RhZ2UxLCAkKENDKSBsYXRlci4KCShBREFGTEFHUyk6IEFkZCAtVyAtV2FsbC4KCShBTExfQURBRkxBR1MsIE1PU1RfQURBRkxBR1MpOiBBZGQgWF9BREFGTEFHUyBhbmQgVF9BREFGTEFHUzsKCXRha2Ugb3V0IENGTEFHUy4KCgkoLmFkYi5vLCAuYWRzLm8sIGEtbnVtYXV4Lm8sIGEtdGVpb2VkLm8sIHMtaW50ZXJyLm8sCglzLXRhc2tpbi5vLCBzZGVmYXVsdC5vLCBzLXRhc2RlYi5vLCBzLXZhZmxvcC5vLCBhLWV4Y2VwdC5vLAoJcy1hc3NlcnQubywgcy1zdGFsaWIubywgcy1tZW1vcnkubywgbWVtdHJhY2subywgbWxpYi10Z3Qubyk6CglVc2UgJChBREFDKSwgbm90ICQoQ0MpLCBhcyBjb21waWxhdGlvbiBjb21tYW5kLgoKCShnbmF0dG9vbHMpOiBEZXBlbmQgZGlyZWN0bHkgb24gdG9vbHMgdG8gYnVpbGQsIGRvbid0IHVzZQoJcmVjdXJzaXZlIG1ha2UuCgkoZ25hdGxpYik6IFNldCBBREFfQ0ZMQUdTPSQoR05BVExJQkNGTEFHUykgaW4gcmVjdXJzaXZlIG1ha2UuCgoJKiBlaW5mby5oLCBzaW5mby5oOiBOZXcgZmlsZXMgKGF1dG9nZW5lcmF0ZWQpLgoKMjAwMS0xMC0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNvbXBlcnIuYWRiIChBYm9ydF9Jbl9Qcm9ncmVzcyk6IE5ldy4KCShDb21waWxlcl9BYm9ydCk6IFVzZSBpdCB0byBwcmV2ZW50IHJlY3Vyc2lvbi4KCjIwMDEtMTAtMDggIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhdHJlZS5hZGI6IFNldCBFcnJvcl9Qb3N0ZWQgaW4gRXJyb3Igbm9kZSwgaGVscHMgZXJyb3IgcmVjb3ZlcnkuCgoJKiBwYXItZW5kaC5hZGIgKE91dHB1dF9FbmRfRXhwZWN0ZWQpOiBXZSBzaG91bGQgYWxzbyBub3QgdGVzdAoJRXJyb3JfUG9zdGVkIG9uIHRoZSBFcnJvciBub2RlLCBzaW5jZSBub3cgaXQgaXMgYWx3YXlzIHNldC4KCgkqIGNzdGFuZC5hZGIgKENyZWF0ZV9TdGFuZGFyZCk6IFNldCBFdHlwZSBvZiBFcnJvciB0byBBbnlfVHlwZQoJdG8gaGVscCBlcnJvciByZWNvdmVyeS4gUGFydCBvZiBnZW5lcmFsIHdvcmsgb24gOTQwNy0wMDQuCgoJKiBwYXIuYWRiOiBBZGQgPz8/IGZvciBtaXN1c2Ugb2YgZXJyb3IKCgkqIHNlbV9yZXMuYWRiOgoJKFJlc29sdmUpOiBEZWZlbmQgYWdhaW5zdCBFcnJvciwgZml4ZXMgOTQwNy0wMDMuCgkoUmVzb2x2ZV9EaXNjcmV0ZV9TdWJ0eXBlX0luZGljYXRpb24pOiBEZWZlbmQgYWdhaW5zdCBFcnJvci4KCgkqIHNpbmZvLmFkcyAoTl9FcnJvcik6IE5vdyBoYXMgRXR5cGUgZmllbGQgKHdoaWNoIHdpbGwgYmUgc2V0Cgl0byBBbnlfVHlwZSB0byBoZWxwIGVycm9yIHJlY292ZXJ5KS4KCjIwMDEtMTAtMDggIFJpY2hhcmQgS2VubmVyIChrZW5uZXJAZ25hdC5jb20pCgoJKiBtaXNjLmMgKGduYXRfZXhwYW5kX2V4cHIsIGNhc2UgVU5DSEVDS0VEX0NPTlZFUlRfRVhQUik6CglDb25zaXN0ZW50bHkgc2V0IE1FTSBhdHRyaWJ1dGVzIGZyb20gZXhwcmVzc2lvbjsgZml4ZXMKCWJvb3RzdHJhcCBmYWlsdXJlIG9uIHg4Ni4KCjIwMDEtMTAtMDggIEdlZXJ0IEJvc2NoICAoYm9zY2hAZ25hdC5jb20pCgoJKiA1b29zaW50ZS5hZGI6IEFkZCAyMDAxIHRvIGNvcHlyaWdodCBub3RpY2UuCgoyMDAxLTEwLTA4ICBHZWVydCBCb3NjaCAgKGJvc2NoQGduYXQuY29tKQoKCSogY2VpbmZvLmFkYjogQWRkIHV0aWxpdHkgZm9yIGNvbnNpc3RlbmN5IGNoZWNraW5nIG9mIGVpbmZvLmFkW2JzXS4KCgkqIGNzaW5mby5hZGI6IEFkZCB1dGlsaXR5IGZvciBjb25zaXN0ZW5jeSBjaGVja2luZyBvZiBzaW5mby5hZFtic10uCgoyMDAxLTEwLTA3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiA1b29zaW50ZS5hZGI6IEZpeCBzcGVsbGluZyBlcnJvciBvZiAic2VwYXJhdGUiIGFzICJzZXBlcmF0ZSIuCgoyMDAxLTEwLTA1ICBHZWVydCBCb3NjaCAgKGJvc2NoQGduYXQuY29tKQoKCSogYWRhaW50Lmg6IFNtYWxsIGZvcm1hdHRpbmcgZml4LgoKMjAwMS0xMC0wNCAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIHN5c2RlcC5jIChfX2duYXRfc2V0X2JpbmFyeV9tb2RlLCBfX2duYXRfc2V0X3RleHRfbW9kZSk6CglBcmcgaXMgaW50LCBub3QgRklMRSAqLCBpbiBkdW1teSB2ZXJzaW9uIG9mIGZ1bmN0aW9ucy4KCgkqIGFkYWludC5oIChfX2duYXRfc2V0X2JpbmFyeV9tb2RlLCBfX2duYXRfc2V0X3RleHRfbW9kZSk6CglBcmcgaXMgaW50LCBub3QgRklMRSAqLgoKMjAwMS0xMC0wNCAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIDNsc29jY29uLmFkczogQWRkZWQgZmlsZSwgbWlzc2VkIHdpdGggaW5pdGlhbCBjaGVjayBpbnMuCgoJKiA0bGludG5hbS5hZHM6IEZpeCBoZWFkZXIgZm9ybWF0LgoJQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIDVpb3NpbnRlLmFkYjogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIDVpb3NpbnRlLmFkczogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIDVpdGFwcm9wLmFkYjogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIDVpdGFzcHJpLmFkczogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCVVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoKCSogNWxpbnRtYW4uYWRiOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNWxtbC10Z3QuYWRiOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNWxvc2ludGUuYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNWxzeXN0ZW0uYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNXFvc2ludGUuYWRiOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNXFvc2ludGUuYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNXFwYXJhbWUuYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNXF0YXByb3AuYWRiOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNXF0YXNwcmkuYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoJQWRkIDIwMDEgdG8gY29weXJpZ2h0IG5vdGljZS4KCgkqIDV2aW50bWFuLmFkczogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCUZpeCBoZWFkZXIgZm9ybWF0LiAgQWRkIDIwMDEgdG8gY29weXJpZ2h0IG5vdGljZS4KCgkqIGctc29jY29uLmFkczogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIGctdHJhc3ltLmFkczogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCUFkZCAyMDAxIHRvIGNvcHlyaWdodCBub3RpY2UuCgoJKiBtZW10cmFjay5hZGI6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiBzLWludG1hbi5hZHM6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCglBZGQgMjAwMSB0byBjb3B5cmlnaHQgbm90aWNlLiAgRml4IGhlYWRlciBmb3JtYXQuCgoJKiBzLXN0YWNoZS5hZGI6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiBhZGFpbnQuYzogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIGNpby5jOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogY3N0cmVhbXMuYzogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIGluaXQuYzogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIGdtZW0uYzogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIHRyYWNlYmFrLmM6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoKMjAwMS0xMC0wMiAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIG1pc2MuYyAoaW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyk6IEFkZCBkdW1teSB2ZXJzaW9uLgo=