ICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5IGhvdy10bwogICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gMS42LWRldgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMTUvMDgvMzAKCgoxKSBIb3cgdG8gYnVpbGQgaXQKLS0tLS0tLS0tLS0tLS0tLS0tCgpGaXJzdCwgcGxlYXNlIG5vdGUgdGhhdCB0aGlzIHZlcnNpb24gaXMgYSBkZXZlbG9wbWVudCB2ZXJzaW9uLCBzbyBpbiBnZW5lcmFsIGlmCnlvdSBhcmUgbm90IHVzZWQgdG8gYnVpbGQgZnJvbSBzb3VyY2VzIG9yIGlmIHlvdSBkb24ndCBoYXZlIHRoZSB0aW1lIHRvIHRyYWNrCnZlcnkgZnJlcXVlbnQgdXBkYXRlcywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdCBpbnN0ZWFkIHlvdSBzd2l0Y2ggdG8gdGhlIHN0YWJsZQp2ZXJzaW9uICgxLjUpIG9yIGZvbGxvdyB0aGUgcGFja2FnZWQgdXBkYXRlcyBwcm92aWRlZCBieSB5b3VyIHNvZnR3YXJlIHZlbmRvcgpvciBMaW51eCBkaXN0cmlidXRpb24uIE1vc3Qgb2YgdGhlbSBhcmUgdGFraW5nIHRoaXMgdGFzayBzZXJpb3VzbHkgYW5kIGFyZQpkb2luZyBhIGdvb2Qgam9iLiBJZiBmb3IgYW55IHJlYXNvbiB5b3UnZCBwcmVmZXIgYSBkaWZmZXJlbnQgdmVyc2lvbiB0aGFuIHRoZQpvbmUgcGFja2FnZWQgZm9yIHlvdXIgc3lzdGVtLCBvciB0byBnZXQgc29tZSBjb21tZXJjaWFsIHN1cHBvcnQsIG90aGVyIGNob2ljZXMKYXJlIGF2YWlsYWJsZSBhdCA6CgogICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmhhcHJveHkuY29tLwoKVG8gYnVpbGQgaGFwcm94eSwgeW91IHdpbGwgbmVlZCA6CiAgLSBHTlUgbWFrZS4gTmVpdGhlciBTb2xhcmlzIG5vciBPcGVuQlNEJ3MgbWFrZSB3b3JrIHdpdGggdGhlIEdOVSBNYWtlZmlsZS4KICAgIElmIHlvdSBnZXQgbWFueSBzeW50YXggZXJyb3JzIHdoZW4gcnVubmluZyAibWFrZSIsIHlvdSBtYXkgd2FudCB0byByZXRyeQogICAgd2l0aCAiZ21ha2UiIHdoaWNoIGlzIHRoZSBuYW1lIGNvbW1vbmx5IHVzZWQgZm9yIEdOVSBtYWtlIG9uIEJTRCBzeXN0ZW1zLgogIC0gR0NDIGJldHdlZW4gMi45NSBhbmQgNC44LiBPdGhlcnMgbWF5IHdvcmssIGJ1dCBub3QgdGVzdGVkLgogIC0gR05VIGxkCgpBbHNvLCB5b3UgbWlnaHQgd2FudCB0byBidWlsZCB3aXRoIGxpYnBjcmUgc3VwcG9ydCwgd2hpY2ggd2lsbCBwcm92aWRlIGEgdmVyeQplZmZpY2llbnQgcmVnZXggaW1wbGVtZW50YXRpb24gYW5kIHdpbGwgYWxzbyBmaXggc29tZSBiYWRuZXNzIG9uIFNvbGFyaXMnIG9uZS4KClRvIGJ1aWxkIGhhcHJveHksIHlvdSBoYXZlIHRvIGNob29zZSB5b3VyIHRhcmdldCBPUyBhbW9uZ3N0IHRoZSBmb2xsb3dpbmcgb25lcwphbmQgYXNzaWduIGl0IHRvIHRoZSBUQVJHRVQgdmFyaWFibGUgOgoKICAtIGxpbnV4MjIgICAgIGZvciBMaW51eCAyLjIKICAtIGxpbnV4MjQgICAgIGZvciBMaW51eCAyLjQgYW5kIGFib3ZlIChkZWZhdWx0KQogIC0gbGludXgyNGUgICAgZm9yIExpbnV4IDIuNCB3aXRoIHN1cHBvcnQgZm9yIGEgd29ya2luZyBlcG9sbCAoPiAwLjIxKQogIC0gbGludXgyNiAgICAgZm9yIExpbnV4IDIuNiBhbmQgYWJvdmUKICAtIGxpbnV4MjYyOCAgIGZvciBMaW51eCAyLjYuMjgsIDMueCwgYW5kIGFib3ZlIChlbmFibGVzIHNwbGljZSBhbmQgdHByb3h5KQogIC0gc29sYXJpcyAgICAgZm9yIFNvbGFyaXMgOCBvciAxMCAob3RoZXJzIHVudGVzdGVkKQogIC0gZnJlZWJzZCAgICAgZm9yIEZyZWVCU0QgNSB0byAxMCAob3RoZXJzIHVudGVzdGVkKQogIC0gb3N4ICAgICAgICAgZm9yIE1hYyBPUy9YCiAgLSBvcGVuYnNkICAgICBmb3IgT3BlbkJTRCAzLjEgYW5kIGFib3ZlCiAgLSBhaXg1MSAgICAgICBmb3IgQUlYIDUuMQogIC0gYWl4NTIgICAgICAgZm9yIEFJWCA1LjIKICAtIGN5Z3dpbiAgICAgIGZvciBDeWd3aW4KICAtIGdlbmVyaWMgICAgIGZvciBhbnkgb3RoZXIgT1Mgb3IgdmVyc2lvbi4KICAtIGN1c3RvbSAgICAgIHRvIG1hbnVhbGx5IGFkanVzdCBldmVyeSBzZXR0aW5nCgpZb3UgbWF5IGFsc28gY2hvb3NlIHlvdXIgQ1BVIHRvIGJlbmVmaXQgZnJvbSBzb21lIG9wdGltaXphdGlvbnMuIFRoaXMgaXMKcGFydGljdWxhcmx5IGltcG9ydGFudCBvbiBVbHRyYVNwYXJjIG1hY2hpbmVzLiBGb3IgdGhpcywgeW91IGNhbiBhc3NpZ24Kb25lIG9mIHRoZSBmb2xsb3dpbmcgY2hvaWNlcyB0byB0aGUgQ1BVIHZhcmlhYmxlIDoKCiAgLSBpNjg2IGZvciBpbnRlbCBQZW50aXVtUHJvLCBQZW50aXVtIDIgYW5kIGFib3ZlLCBBTUQgQXRobG9uCiAgLSBpNTg2IGZvciBpbnRlbCBQZW50aXVtLCBBTUQgSzYsIFZJQSBDMy4KICAtIHVsdHJhc3BhcmMgOiBTdW4gVWx0cmFTcGFyYyBJL0lJL0lJSS9JViBwcm9jZXNzb3IKICAtIG5hdGl2ZSA6IHVzZSB0aGUgYnVpbGQgbWFjaGluZSdzIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zLiBVc2Ugd2l0aAogICAgZXh0cmVtZSBjYXJlLCBhbmQgbmV2ZXIgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChrbm93biB0byBicmVhaykuCiAgLSBnZW5lcmljIDogYW55IG90aGVyIHByb2Nlc3NvciBvciBubyBDUFUtc3BlY2lmaWMgb3B0aW1pemF0aW9uLiAoZGVmYXVsdCkKCkFsdGVybmF0aXZlbHksIHlvdSBtYXkganVzdCBzZXQgdGhlIENQVV9DRkxBR1MgdmFsdWUgdG8gdGhlIG9wdGltYWwgR0NDIG9wdGlvbnMKZm9yIHlvdXIgcGxhdGZvcm0uCgpZb3UgbWF5IHdhbnQgdG8gYnVpbGQgc3BlY2lmaWMgdGFyZ2V0IGJpbmFyaWVzIHdoaWNoIGRvIG5vdCBtYXRjaCB5b3VyIG5hdGl2ZQpjb21waWxlcidzIHRhcmdldC4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBvbiA2NC1iaXQgc3lzdGVtcyB3aGVuIHlvdSB3YW50CnRvIGJ1aWxkIGEgMzItYml0IGJpbmFyeS4gVXNlIHRoZSBBUkNIIHZhcmlhYmxlIGZvciB0aGlzIHB1cnBvc2UuIFJpZ2h0IG5vdwppdCBvbmx5IGtub3dzIGFib3V0IGEgZmV3IHg4NiB2YXJpYW50cyAoaTM4NixpNDg2LGk1ODYsaTY4Nix4ODZfNjQpLCB0d28KZ2VuZXJpYyBvbmVzICgzMiw2NCkgYW5kIHNldHMgLW0zMi8tbTY0IGFzIHdlbGwgYXMgLW1hcmNoPTxhcmNoPiBhY2NvcmRpbmdseS4KCklmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIFBDUkUgKFBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zKSwgdGhlbiB5b3UKcmVhbGx5IHNob3VsZCBidWlsZCB3aXRoIGxpYnBjcmUgd2hpY2ggaXMgYmV0d2VlbiAyIGFuZCAxMCB0aW1lcyBmYXN0ZXIgdGhhbgpvdGhlciBsaWJjIGltcGxlbWVudGF0aW9ucy4gUmVnZXggYXJlIHVzZWQgZm9yIGhlYWRlciBwcm9jZXNzaW5nIChkZWxldGlvbiwKcmV3cml0aW5nLCBhbGxvdywgZGVueSkuIFRoZSBvbmx5IGluY29udmVuaWVudCBvZiBsaWJwY3JlIGlzIHRoYXQgaXQgaXMgbm90CnlldCB3aWRlbHkgc3ByZWFkLCBzbyBpZiB5b3UgYnVpbGQgZm9yIG90aGVyIHN5c3RlbXMsIHlvdSBtaWdodCBnZXQgaW50bwp0cm91YmxlIGlmIHRoZXkgZG9uJ3QgaGF2ZSB0aGUgZHluYW1pYyBsaWJyYXJ5LiBJbiB0aGlzIHNpdHVhdGlvbiwgeW91IHNob3VsZApzdGF0aWNhbGx5IGxpbmsgbGlicGNyZSBpbnRvIGhhcHJveHkgc28gdGhhdCBpdCB3aWxsIG5vdCBiZSBuZWNlc3NhcnkgdG8KaW5zdGFsbCBpdCBvbiB0YXJnZXQgc3lzdGVtcy4gQXZhaWxhYmxlIGJ1aWxkIG9wdGlvbnMgZm9yIFBDUkUgYXJlIDoKCiAgLSBVU0VfUENSRT0xIHRvIHVzZSBsaWJwY3JlLCBpbiB3aGF0ZXZlciBmb3JtIGlzIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbQogICAgKHNoYXJlZCBvciBzdGF0aWMpCgogIC0gVVNFX1NUQVRJQ19QQ1JFPTEgdG8gdXNlIGEgc3RhdGljIHZlcnNpb24gb2YgbGlicGNyZSBldmVuIGlmIHRoZSBkeW5hbWljCiAgICBvbmUgaXMgYXZhaWxhYmxlLiBUaGlzIHdpbGwgZW5oYW5jZSBwb3J0YWJpbGl0eS4KCiAgLSB3aXRoIG5vIG9wdGlvbiwgdXNlIHlvdXIgT1MgbGliYydzIHN0YW5kYXJkIHJlZ2V4IGltcGxlbWVudGF0aW9uIChkZWZhdWx0KS4KICAgIFdhcm5pbmchIGdyb3VwIHJlZmVyZW5jZXMgb24gU29sYXJpcyBzZWVtIGJyb2tlbi4gVXNlIHN0YXRpYy1wY3JlIHdoZW5ldmVyCiAgICBwb3NzaWJsZS4KClJlY2VudCBzeXN0ZW1zIGNhbiByZXNvbHZlIElQdjYgaG9zdCBuYW1lcyB1c2luZyBnZXRhZGRyaW5mbygpLiBUaGlzIHByaW1pdGl2ZQppcyBub3QgcHJlc2VudCBpbiBhbGwgbGliY3MgYW5kIGRvZXMgbm90IHdvcmsgaW4gYWxsIG9mIHRoZW0gZWl0aGVyLiBTdXBwb3J0IGluCmdsaWJjIHdhcyBicm9rZW4gYmVmb3JlIDIuMy4gU29tZSBlbWJlZGRlZCBsaWJzIG1heSBub3QgcHJvcGVybHkgd29yayBlaXRoZXIsCnRodXMsIHN1cHBvcnQgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdCwgbWVhbmluZyB0aGF0IHNvbWUgaG9zdCBuYW1lcyB3aGljaCBvbmx5CnJlc29sdmUgYXMgSVB2NiBhZGRyZXNzZXMgd2lsbCBub3QgcmVzb2x2ZSBhbmQgY29uZmlncyBtaWdodCBlbWl0IGFuIGVycm9yCmR1cmluZyBwYXJzaW5nLiBJZiB5b3Uga25vdyB0aGF0IHlvdXIgT1MgbGliYyBoYXMgcmVsaWFibGUgc3VwcG9ydCBmb3IKZ2V0YWRkcmluZm8oKSwgeW91IGNhbiBhZGQgVVNFX0dFVEFERFJJTkZPPTEgb24gdGhlIG1ha2UgY29tbWFuZCBsaW5lIHRvIGVuYWJsZQppdC4gVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgb3B0aW9uIGZvciBtb3N0IExpbnV4IGRpc3RybyBwYWNrYWdlcnMgc2luY2UgaXQncwp3b3JraW5nIGZpbmUgb24gYWxsIHJlY2VudCBtYWluc3RyZWFtIGRpc3Ryb3MuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBvbgpTb2xhcmlzIDggYW5kIGFib3ZlLCBhcyBpdCdzIGtub3duIHRvIHdvcmsuCgpJdCBpcyBwb3NzaWJsZSB0byBhZGQgbmF0aXZlIHN1cHBvcnQgZm9yIFNTTCB1c2luZyB0aGUgR05VIG1ha2VmaWxlLCBieSBwYXNzaW5nCiJVU0VfT1BFTlNTTD0xIiBvbiB0aGUgbWFrZSBjb21tYW5kIGxpbmUuIFRoZSBsaWJzc2wgYW5kIGxpYmNyeXB0byB3aWxsCmF1dG9tYXRpY2FsbHkgYmUgbGlua2VkIHdpdGggaGFwcm94eS4gU29tZSBzeXN0ZW1zIGFsc28gcmVxdWlyZSBsaWJ6LCBzbyBpZiB0aGUKYnVpbGQgZmFpbHMgZHVlIHRvIG1pc3Npbmcgc3ltYm9scyBzdWNoIGFzIGRlZmxhdGVJbml0KCksIHRoZW4gdHJ5IGFnYWluIHdpdGgKIkFERExJQj0tbHoiLgoKVG8gbGluayBPcGVuU1NMIHN0YXRpY2FsbHkgYWdhaW5zdCBoYXByb3h5LCBidWlsZCBPcGVuU1NMIHdpdGggdGhlIG5vLXNoYXJlZAprZXl3b3JkIGFuZCBpbnN0YWxsIGl0IHRvIGEgbG9jYWwgZGlyZWN0b3J5LCBzbyB5b3VyIHN5c3RlbSBpcyBub3QgYWZmZWN0ZWQgOgoKICAgICQgZXhwb3J0IFNUQVRJQ0xJQlNTTD0vdG1wL3N0YXRpY2xpYnNzbAogICAgJCAuL2NvbmZpZyAtLXByZWZpeD0kU1RBVElDTElCU1NMIG5vLXNoYXJlZAogICAgJCBtYWtlICYmIG1ha2UgaW5zdGFsbF9zdwoKV2hlbiBidWlsZGluZyBoYXByb3h5LCBwYXNzIHRoYXQgcGF0aCB2aWEgU1NMX0lOQyBhbmQgU1NMX0xJQiB0byBtYWtlIGFuZAppbmNsdWRlIGFkZGl0aW9uYWwgbGlicyB3aXRoIEFERExJQiBpZiBuZWVkZWQgKGluIHRoaXMgY2FzZSBmb3IgZXhhbXBsZSBsaWJkbCk6CgogICAgJCBtYWtlIFRBUkdFVD1saW51eDI2IFVTRV9PUEVOU1NMPTEgU1NMX0lOQz0kU1RBVElDTElCU1NML2luY2x1ZGUgU1NMX0xJQj0kU1RBVElDTElCU1NML2xpYiBBRERMSUI9LWxkbAoKSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBpbmNsdWRlIG5hdGl2ZSBzdXBwb3J0IGZvciBaTElCIHRvIGJlbmVmaXQgZnJvbSBIVFRQCmNvbXByZXNzaW9uLiBGb3IgdGhpcywgcGFzcyAiVVNFX1pMSUI9MSIgb24gdGhlICJtYWtlIiBjb21tYW5kIGxpbmUgYW5kIGVuc3VyZQp0aGF0IHpsaWIgaXMgcHJlc2VudCBvbiB0aGUgc3lzdGVtLiBBbHRlcm5hdGl2ZWx5IGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBsaWJzbHoKZm9yIGEgZmFzdGVyLCBtZW1vcnkgbGVzcywgYnV0IHNsaWdodGx5IGxlc3MgZWZmaWNpZW50IGNvbXByZXNzaW9uLCBieSBwYXNzaW5nCiJVU0VfU0xaPTEiLgoKQnkgZGVmYXVsdCwgdGhlIERFQlVHIHZhcmlhYmxlIGlzIHNldCB0byAnLWcnIHRvIGVuYWJsZSBkZWJ1ZyBzeW1ib2xzLiBJdCBpcwpub3Qgd2lzZSB0byBkaXNhYmxlIGl0IG9uIHVuY29tbW9uIHN5c3RlbXMsIGJlY2F1c2UgaXQncyBvZnRlbiB0aGUgb25seSB3YXkgdG8KZ2V0IGEgY29tcGxldGUgY29yZSB3aGVuIHlvdSBuZWVkIG9uZS4gT3RoZXJ3aXNlLCB5b3UgY2FuIHNldCBERUJVRyB0byAnLXMnIHRvCnN0cmlwIHRoZSBiaW5hcnkuCgpGb3IgZXhhbXBsZSwgSSB1c2UgdGhpcyB0byBidWlsZCBmb3IgU29sYXJpcyA4IDoKCiAgICAkIG1ha2UgVEFSR0VUPXNvbGFyaXMgQ1BVPXVsdHJhc3BhcmMgVVNFX1NUQVRJQ19QQ1JFPTEKCkFuZCBJIGJ1aWxkIGl0IHRoaXMgd2F5IG9uIE9wZW5CU0Qgb3IgRnJlZUJTRCA6CgogICAgJCBnbWFrZSBUQVJHRVQ9ZnJlZWJzZCBVU0VfUENSRT0xIFVTRV9PUEVOU1NMPTEgVVNFX1pMSUI9MQoKQW5kIG9uIGEgY2xhc3NpYyBMaW51eCB3aXRoIFNTTCBhbmQgWkxJQiBzdXBwb3J0IChlZzogUmVkIEhhdCA1LngpIDoKCiAgICAkIG1ha2UgVEFSR0VUPWxpbnV4MjYgVVNFX1BDUkU9MSBVU0VfT1BFTlNTTD0xIFVTRV9aTElCPTEKCkFuZCBvbiBhIHJlY2VudCBMaW51eCA+PSAyLjYuMjggd2l0aCBTU0wgYW5kIFpMSUIgc3VwcG9ydCA6CgogICAgJCBtYWtlIFRBUkdFVD1saW51eDI2MjggVVNFX1BDUkU9MSBVU0VfT1BFTlNTTD0xIFVTRV9aTElCPTEKCkluIG9yZGVyIHRvIGJ1aWxkIGEgMzItYml0IGJpbmFyeSBvbiBhbiB4ODZfNjQgTGludXggc3lzdGVtIHdpdGggU1NMIHN1cHBvcnQKd2l0aG91dCBzdXBwb3J0IGZvciBjb21wcmVzc2lvbiBidXQgd2hlbiBPcGVuU1NMIHJlcXVpcmVzIFpMSUIgYW55d2F5IDoKCiAgICAkIG1ha2UgVEFSR0VUPWxpbnV4MjYgQVJDSD1pMzg2IFVTRV9PUEVOU1NMPTEgQURETElCPS1segoKVGhlIFNTTCBzdGFjayBzdXBwb3J0cyBzZXNzaW9uIGNhY2hlIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIGFsbCBydW5uaW5nCnByb2Nlc3Nlcy4gVGhpcyBpbnZvbHZlcyBzb21lIGF0b21pYyBvcGVyYXRpb25zIGFuZCBzeW5jaHJvbml6YXRpb24gb3BlcmF0aW9ucwp3aGljaCBjb21lIGluIG11bHRpcGxlIGZsYXZvcnMgZGVwZW5kaW5nIG9uIHRoZSBzeXN0ZW0gYW5kIGFyY2hpdGVjdHVyZSA6CgogIEF0b21pYyBvcGVyYXRpb25zIDoKICAgIC0gaW50ZXJuYWwgYXNzZW1ibGVyIHZlcnNpb25zIGZvciB4ODYveDg2XzY0IGFyY2hpdGVjdHVyZXMKCiAgICAtIGdjYyBidWlsdGlucyBmb3Igb3RoZXIgYXJjaGl0ZWN0dXJlcy4gU29tZSBhcmNoaXRlY3R1cmVzIG1pZ2h0IG5vdAogICAgICBiZSBmdWxseSBzdXBwb3J0ZWQgb3IgbWlnaHQgcmVxdWlyZSBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgZ2NjLgogICAgICBJZiB5b3VyIGFyY2hpdGVjdHVyZSBpcyBub3Qgc3VwcG9ydGVkLCB5b3Ugd2lsbHkgaGF2ZSB0byBlaXRoZXIgdXNlCiAgICAgIHB0aHJlYWQgaWYgc3VwcG9ydGVkLCBvciB0byBkaXNhYmxlIHRoZSBzaGFyZWQgY2FjaGUuCgogICAgLSBwdGhyZWFkIChwb3NpeCB0aHJlYWRzKS4gUHRocmVhZHMgYXJlIHZlcnkgY29tbW9uIGJ1dCBpbnRlci1wcm9jZXNzCiAgICAgIHN1cHBvcnQgaXMgbm90IHRoYXQgY29tbW9uLCBhbmQgc29tZSBvbGRlciBvcGVyYXRpbmcgc3lzdGVtcyBkaWQgbm90CiAgICAgIHJlcG9ydCBhbiBlcnJvciB3aGVuIGVuYWJsaW5nIG11bHRpLXByb2Nlc3MgbW9kZSwgc28gdGhleSB1c2VkIHRvCiAgICAgIHNpbGVudGx5IGZhaWwsIHBvc3NpYmx5IGNhdXNpbmcgY3Jhc2hlcy4gTGludXgncyBpbXBsZW1lbnRhdGlvbiBpcwogICAgICBmaW5lLiBPcGVuQlNEIGRvZXNuJ3Qgc3VwcG9ydCB0aGVtIGFuZCBkb2Vzbid0IGJ1aWxkLiBGcmVlQlNEIDkgYnVpbGRzCiAgICAgIGFuZCByZXBvcnRzIGFuIGVycm9yIGF0IHJ1bnRpbWUsIHdoaWxlIGNlcnRhaW4gb2xkZXIgdmVyc2lvbnMgbWlnaHQKICAgICAgc2lsZW50bHkgZmFpbC4gUHRocmVhZHMgYXJlIGVuYWJsZWQgdXNpbmcgVVNFX1BUSFJFQURfUFNIQVJFRD0xLgoKICBTeW5jaHJvbml6YXRpb24gb3BlcmF0aW9ucyA6CiAgICAtIGludGVybmFsIHNwaW5sb2NrIDogdGhpcyBtb2RlIGlzIE9TLWluZGVwZW5kYW50LCBsaWdodCBidXQgd2lsbCBub3QKICAgICAgc2NhbGUgd2VsbCB0byBtYW55IHByb2Nlc3Nlcy4gSG93ZXZlciwgYWNjZXNzZXMgdG8gdGhlIHNlc3Npb24gY2FjaGUKICAgICAgYXJlIHJhcmUgZW5vdWdoIHRoYXQgdGhpcyBtb2RlIGNvdWxkIGNlcnRhaW5seSBhbHdheXMgYmUgdXNlZC4gVGhpcwogICAgICBpcyB0aGUgZGVmYXVsdCBtb2RlLgoKICAgIC0gRnV0ZXhlcywgd2hpY2ggYXJlIExpbnV4LXNwZWNpZmljIGhpZ2hseSBzY2FsYWJsZSBsaWdodCB3ZWlnaHQgbXV0ZXhlcwogICAgICBpbXBsZW1lbnRlZCBpbiB1c2VyLXNwYWNlIHdpdGggc29tZSBsaW1pdGVkIGFzc2lzdGFuY2UgZnJvbSB0aGUga2VybmVsLgogICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IG9uIExpbnV4IDIuNiBhbmQgYWJvdmUgYW5kIGlzIGVuYWJsZWQgYnkgcGFzc2luZwogICAgICBVU0VfRlVURVg9MQoKICAgIC0gcHRocmVhZCAocG9zaXggdGhyZWFkcykuIFNlZSBhYm92ZS4KCklmIG5vbmUgb2YgdGhlc2UgbWVjaGFuaXNtcyBpcyBzdXBwb3J0ZWQgYnkgeW91ciBwbGF0Zm9ybSwgeW91IG1heSBuZWVkIHRvCmJ1aWxkIHdpdGggVVNFX1BSSVZBVEVfQ0FDSEU9MSB0byB0b3RhbGx5IGRpc2FibGUgU1NMIGNhY2hlIHNoYXJpbmcuIFRoZW4KaXQgaXMgYmV0dGVyIG5vdCB0byBydW4gU1NMIG9uIG11bHRpcGxlIHByb2Nlc3Nlcy4KCklmIHlvdSBuZWVkIHRvIHBhc3Mgb3RoZXIgZGVmaW5lcywgaW5jbHVkZXMsIGxpYnJhcmllcywgZXRjLi4uIHRoZW4gcGxlYXNlCmNoZWNrIHRoZSBNYWtlZmlsZSB0byBzZWUgd2hpY2ggb25lcyB3aWxsIGJlIGF2YWlsYWJsZSBpbiB5b3VyIGNhc2UsIGFuZAp1c2UgdGhlIFVTRV8qIHZhcmlhYmxlcyBpbiB0aGUgTWFrZWZpbGUuCgpBSVggNS4zIGlzIGtub3duIHRvIHdvcmsgd2l0aCB0aGUgZ2VuZXJpYyB0YXJnZXQuIEhvd2V2ZXIsIGZvciB0aGUgYmluYXJ5IHRvCmFsc28gcnVuIG9uIDUuMiBvciBlYXJsaWVyLCB5b3UgbmVlZCB0byBidWlsZCB3aXRoIERFRklORT0iLURfTVNHUVNVUFBPUlQiLApvdGhlcndpc2UgX19mZF9zZWxlY3QoKSB3aWxsIGJlIHVzZWQgd2hpbGUgbm90IGJlaW5nIHByZXNlbnQgaW4gdGhlIGxpYmMsIGJ1dAp0aGlzIGlzIGVhc2lseSBhZGRyZXNzZWQgdXNpbmcgdGhlICJhaXg1MiIgdGFyZ2V0LiBJZiB5b3UgZ2V0IGJ1aWxkIGVycm9ycwpiZWNhdXNlIG9mIHN0cmFuZ2Ugc3ltYm9scyBvciBzZWN0aW9uIG1pc21hdGNoZXMsIHNpbXBseSByZW1vdmUgLWcgZnJvbQpERUJVR19DRkxBR1MuCgpZb3UgY2FuIGVhc2lseSBkZWZpbmUgeW91ciBvd24gdGFyZ2V0IHdpdGggdGhlIEdOVSBNYWtlZmlsZS4gVW5rbm93biB0YXJnZXRzCmFyZSBwcm9jZXNzZWQgd2l0aCBubyBkZWZhdWx0IG9wdGlvbiBleGNlcHQgVVNFX1BPTEw9ZGVmYXVsdC4gU28geW91IGNhbiB2ZXJ5CndlbGwgdXNlIHRoYXQgcHJvcGVydHkgdG8gZGVmaW5lIHlvdXIgb3duIHNldCBvZiBvcHRpb25zLiBVU0VfUE9MTCBjYW4gZXZlbiBiZQpkaXNhYmxlZCBieSBzZXR0aW5nIFVTRV9QT0xMPSIiLiBGb3IgZXhhbXBsZSA6CgogICAgJCBnbWFrZSBUQVJHRVQ9dGlueSBVU0VfUE9MTD0iIiBUQVJHRVRfQ0ZMQUdTPS1mb21pdC1mcmFtZS1wb2ludGVyCgoKMS4xKSBEZXZpY2VBdGxhcyBEZXZpY2UgRGV0ZWN0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKSW4gb3JkZXIgdG8gYWRkIERldmljZUF0bGFzIERldmljZSBEZXRlY3Rpb24gc3VwcG9ydCwgeW91IHdvdWxkIG5lZWQgdG8gZG93bmxvYWQKdGhlIEFQSSBzb3VyY2UgY29kZSBmcm9tIGh0dHBzOi8vZGV2aWNlYXRsYXMuY29tL2RldmljZWF0bGFzLWhhcHJveHktbW9kdWxlIGFuZApvbmNlIGV4dHJhY3RlZCA6CgogICAgJCBtYWtlIFRBUkdFVD08dGFyZ2V0PiBVU0VfUENSRT0xIFVTRV9ERVZJQ0VBVExBUz0xIERFVklDRUFUTEFTX1NSQz08cGF0aCB0byB0aGUgQVBJIHJvb3QgZm9sZGVyPgoKT3B0aW9uYWxseSBERVZJQ0VBVExBU19JTkMgYW5kIERFVklDRUFUTEFTX0xJQiBtYXkgYmUgc2V0IHRvIG92ZXJyaWRlIHRoZSBwYXRoCnRvIHRoZSBpbmNsdWRlIGZpbGVzIGFuZCBsaWJyYXJpZXMgcmVzcGVjdGl2ZWx5IGlmIHRoZXkncmUgbm90IGluIHRoZSBzb3VyY2UKZGlyZWN0b3J5LgoKVGhlc2UgYXJlIHN1cHBvcnRlZCBEZXZpY2VBdGxhcyBkaXJlY3RpdmVzIChzZWUgZG9jL2NvbmZpZ3VyYXRpb24udHh0KSA6CiAgLSBkZXZpY2VhdGxhcy1qc29uLWZpbGUgPHBhdGggdG8gdGhlIERldmljZUF0bGFzIEpTT04gZGF0YSBmaWxlPi4KICAtIGRldmljZWF0bGFzLWxvZy1sZXZlbCA8bnVtYmVyPiAoMCB0byAzLCBsZXZlbCBvZiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieQogICAgdGhlIEFQSSwgMCBieSBkZWZhdWx0KS4KICAtIGRldmljZWF0bGFzLXByb3BlcnR5LXNlcGFyYXRvciA8Y2hhcmFjdGVyPiAoY2hhcmFjdGVyIHVzZWQgdG8gc2VwYXJhdGUgdGhlCiAgICBwcm9wZXJ0aWVzIHByb2R1Y2VkIGJ5IHRoZSBBUEksIHwgYnkgZGVmYXVsdCkuCgpTYW1wbGUgY29uZmlndXJhdGlvbiA6CgogICAgZ2xvYmFsCglkZXZpY2VhdGxhcy1qc29uLWZpbGUgPHBhdGggdG8ganNvbiBmaWxlPgoKICAgIC4uLgogICAgZnJvbnRlbmQKCWJpbmQgKjo4ODgxCglkZWZhdWx0X2JhY2tlbmQgc2VydmVycwoJaHR0cC1yZXF1ZXN0IHNldC1oZWFkZXIgWC1EZXZpY2VBdGxhcy1EYXRhICVbcmVxLmZoZHIoVXNlci1BZ2VudCksZGEtY3N2KHByaW1hcnlIYXJkd2FyZVR5cGUsb3NOYW1lLG9zVmVyc2lvbixicm93c2VyTmFtZSxicm93c2VyVmVyc2lvbildCgoKMS4yKSA1MURlZ3JlZXMgRGV2aWNlIERldGVjdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpZb3UgY2FuIGFsc28gaW5jbHVkZSA1MURlZ3JlZXMgZm9yIGluYnVpbHQgZGV2aWNlIGRldGVjdGlvbiBlbmFibGluZyBhdHRyaWJ1dGVzCnN1Y2ggYXMgc2NyZWVuIHNpemUgKHBoeXNpY2FsICYgcGl4ZWxzKSwgc3VwcG9ydGVkIGlucHV0IG1ldGhvZHMsIHJlbGVhc2UgZGF0ZSwKaGFyZHdhcmUgdmVuZG9yIGFuZCBtb2RlbCwgYnJvd3NlciBpbmZvcm1hdGlvbiwgYW5kIGRldmljZSBwcmljZSBhbW9uZyBtYW55Cm90aGVycy4gU3VjaCBpbmZvcm1hdGlvbiBjYW4gYmUgdXNlZCB0byBpbXByb3ZlIHRoZSB1c2VyIGV4cGVyaWVuY2Ugb2YgYSB3ZWIKc2l0ZSBieSB0YWlsb3JpbmcgdGhlIHBhZ2UgY29udGVudCwgbGF5b3V0IGFuZCBidXNpbmVzcyBwcm9jZXNzZXMgdG8gdGhlCnByZWNpc2UgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBkZXZpY2UuIFN1Y2ggY3VzdG9taXNhdGlvbnMgaW1wcm92ZSBwcm9maXQgYnkKbWFraW5nIGl0IGVhc2llciBmb3IgY3VzdG9tZXJzIHRvIGdldCB0byB0aGUgaW5mb3JtYXRpb24gb3Igc2VydmljZXMgdGhleQpuZWVkLiBBdHRyaWJ1dGVzIG9mIHRoZSBkZXZpY2UgbWFraW5nIGEgd2ViIHJlcXVlc3QgY2FuIGJlIGFkZGVkIHRvIEhUVFAKaGVhZGVycyBhcyBjb25maWd1cmFibGUgcGFyYW1ldGVycy4KCkluIG9yZGVyIHRvIGVuYWJsZSA1MURlZ3JlZXMgZG93bmxvYWQgdGhlIDUxRGVncmVlcyBzb3VyY2UgY29kZSBmcm9tIHRoZQpvZmZpY2lhbCBnaXRodWIgcmVwb3NpdG9yeSA6CgogICAgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS81MURlZ3JlZXMvRGV2aWNlLURldGVjdGlvbgoKdGhlbiBydW4gJ21ha2UnIHdpdGggVVNFXzUxREVHUkVFUyBhbmQgNTFERUdSRUVTX1NSQyBzZXQuIEJvdGggNTFERUdSRUVTX0lOQwphbmQgNTFERUdSRUVTX0xJQiBtYXkgYWRkaXRpb25hbGx5IGJlIHVzZWQgdG8gZm9yY2Ugc3BlY2lmaWMgZGlmZmVyZW50IHBhdGhzCmZvciAubyBhbmQgLmgsIGJ1dCB3aWxsIGRlZmF1bHQgdG8gNTFERUdSRUVTX1NSQy4gTWFrZSBzdXJlIHRvIHJlcGxhY2UKJzUxRF9SRVBPX1BBVEgnIHdpdGggdGhlIHBhdGggdG8gdGhlIDUxRGVncmVlcyByZXBvc2l0b3J5LgoKNTFEZWdyZWVzIHByb3ZpZGUgMiBkaWZmZXJlbnQgZGV0ZWN0aW9uIGFsZ29yaXRobXM6CgogICAgMS4gUGF0dGVybiAtIGJhbGFuY2VzIG1haW4gbWVtb3J5IHVzYWdlIGFuZCBDUFUuCiAgICAyLiBUcmllIC0gYSB2ZXJ5IGhpZ2ggcGVyZm9ybWFuY2UgZGV0ZWN0aW9uIHNvbHV0aW9uIHdoaWNoIHVzZXMgbW9yZSBtYWluCiAgICAgICBtZW1vcnkgdGhhbiBQYXR0ZXJuLgoKVG8gbWFrZSB3aXRoIDUxRGVncmVlcyBQYXR0ZXJuIGFsZ29yaXRobSB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmUuCgogICAgJCBtYWtlIFRBUkdFVD1saW51eDI2IFVTRV81MURFR1JFRVM9MSA1MURFR1JFRVNfU1JDPSc1MURfUkVQT19QQVRIJy9zcmMvcGF0dGVybgoKVG8gdXNlIHRoZSA1MURlZ3JlZXMgVHJpZSBhbGdvcml0aG0gdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lLgoKICAgICQgbWFrZSBUQVJHRVQ9bGludXgyNiBVU0VfNTFERUdSRUVTPTEgNTFERUdSRUVTX1NSQz0nNTFEX1JFUE9fUEFUSCcvc3JjL3RyaWUKCkEgZGF0YSBmaWxlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgZGV2aWNlcywgYnJvd3NlcnMsIG9wZXJhdGluZyBzeXN0ZW1zCmFuZCB0aGVpciBhc3NvY2lhdGVkIHNpZ25hdHVyZXMgaXMgdGhlbiBuZWVkZWQuIDUxRGVncmVlcyBwcm92aWRlIGEgZnJlZQpkYXRhYmFzZSB3aXRoIEdpdGh1YiByZXBvIGZvciB0aGlzIHB1cnBvc2UuIFRoZXNlIGZyZWUgZGF0YSBmaWxlcyBhcmUgbG9jYXRlZAppbiAnNTFEX1JFUE9fUEFUSCcvZGF0YSB3aXRoIHRoZSBleHRlbnNpb25zIC5kYXQgZm9yIFBhdHRlcm4gZGF0YSBhbmQgLnRyaWUgZm9yClRyaWUgZGF0YS4KClRoZSBjb25maWd1cmF0aW9uIGZpbGUgbmVlZHMgdG8gc2V0IHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKCiAgICA1MWRlZ3JlZXMtZGF0YS1maWxlICAgICAgICAgICBwYXRoIHRvIHRoZSBQYXR0ZXJuIG9yIFRyaWUgZGF0YSBmaWxlCiAgICA1MWRlZ3JlZXMtcHJvcGVydHktbmFtZS1saXN0ICBsaXN0IG9mIDUxRGVncmVlcyBwcm9wZXJ0aWVzIHRvIGRldGVjdAogICAgNTFkZWdyZWVzLXByb3BlcnR5LXNlcGFyYXRvciAgc2VwYXJhdG9yIHRvIHVzZSBiZXR3ZWVuIHZhbHVlcwogICAgNTFkZWdyZWVzLWNhY2hlLXNpemUgICAgICAgICAgTFJVLWJhc2VkIGNhY2hlIHNpemUgKGRpc2FibGVkIGJ5IGRlZmF1bHQpCgpUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgdGhlIHNldHRpbmdzIGZvciBQYXR0ZXJuLgoKICAgIDUxZGVncmVlcy1kYXRhLWZpbGUgJzUxRF9SRVBPX1BBVEgnL2RhdGEvNTFEZWdyZWVzLUxpdGVWMy4yLmRhdAogICAgNTFkZWdyZWVzLXByb3BlcnR5LW5hbWUtbGlzdCBJc1RhYmxldCBEZXZpY2VUeXBlIElzTW9iaWxlCiAgICA1MWRlZ3JlZXMtcHJvcGVydHktc2VwYXJhdG9yICwKICAgIDUxZGVncmVlcy1jYWNoZS1zaXplIDEwMDAwCgpIQVByb3h5IG5lZWRzIGEgd2F5IHRvIHBhc3MgZGV2aWNlIGluZm9ybWF0aW9uIHRvIHRoZSBiYWNrZW5kIHNlcnZlcnMuIFRoaXMgaXMKZG9uZSBieSB1c2luZyB0aGUgNTFkIGNvbnZlcnRlciBvciBmZXRjaCBtZXRob2QsIHdoaWNoIGludGVyY2VwdHMgdGhlIEhUVFAKaGVhZGVycyBhbmQgY3JlYXRlcyBzb21lIG5ldyBoZWFkZXJzLiBUaGlzIGlzIGNvbnRyb2xsZWQgaW4gdGhlIGZyb250ZW5kCmh0dHAtaW4gc2VjdGlvbi4KClRoZSBmb2xsb3dpbmcgaXMgYW4gZXhhbXBsZSB3aGljaCBhZGRzIHR3byBuZXcgSFRUUCBoZWFkZXJzIHByZWZpeGVkIFgtNTFELQoKICAgIGZyb250ZW5kIGh0dHAtaW4KICAgICAgICBiaW5kICo6ODA4MQogICAgICAgIGRlZmF1bHRfYmFja2VuZCBzZXJ2ZXJzCiAgICAgICAgaHR0cC1yZXF1ZXN0IHNldC1oZWFkZXIgWC01MUQtRGV2aWNlVHlwZU1vYmlsZVRhYmxldCAlWzUxZC5hbGwoRGV2aWNlVHlwZSxJc01vYmlsZSxJc1RhYmxldCldCiAgICAgICAgaHR0cC1yZXF1ZXN0IHNldC1oZWFkZXIgWC01MUQtVGFibGV0ICVbNTFkLmFsbChJc1RhYmxldCldCgpIZXJlLCB0d28gaGVhZGVycyBhcmUgY3JlYXRlZCB3aXRoIDUxRGVncmVlcyBkYXRhLCBYLTUxRC1EZXZpY2VUeXBlTW9iaWxlVGFibGV0CmFuZCBYLTUxRC1UYWJsZXQuIEFueSBudW1iZXIgb2YgaGVhZGVycyBjYW4gYmUgY3JlYXRlZCB0aGlzIHdheSBhbmQgY2FuIGJlCm5hbWVkIGFueXRoaW5nLiA1MWQuYWxsKCApIGludm9rZXMgdGhlIDUxZGVncmVlcyBmZXRjaC4gSXQgY2FuIGJlIHBhc3NlZCB1cCB0bwpmaXZlIHByb3BlcnR5IG5hbWVzIG9mIHZhbHVlcyB0byByZXR1cm4uIFZhbHVlcyB3aWxsIGJlIHJldHVybmVkIGluIHRoZSBzYW1lCm9yZGVyLCBzZXBlcmF0ZWQgYnkgdGhlIDUxLWRlZ3JlZXMtcHJvcGVydHktc2VwYXJhdG9yIGNvbmZpZ3VyZWQgZWFybGllci4gSWYgYQpwcm9wZXJ0eSBuYW1lIGNhbid0IGJlIGZvdW5kIHRoZSB2YWx1ZSAnTm9EYXRhJyBpcyByZXR1cm5lZCBpbnN0ZWFkLgoKSW4gYWRkaXRpb24gdG8gdGhlIGRldmljZSBwcm9wZXJ0aWVzIHRocmVlIGFkZGl0aW9uYWwgcHJvcGVydGllcyByZWxhdGVkIHRvIHRoZQp2YWxpZGl0eSBvZiB0aGUgcmVzdWx0IGNhbiBiZSByZXR1cm5lZCB3aGVuIHVzZWQgd2l0aCB0aGUgUGF0dGVybiBtZXRob2QuIFRoZQpmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBob3cgTWV0aG9kLCBEaWZmZXJlbmNlIGFuZCBSYW5rIGNvdWxkIGJlIGluY2x1ZGVkIGFzIG9uZQpuZXcgSFRUUCBoZWFkZXIgWC01MUQtU3RhdHMuCgogICAgICAgIGh0dHAtcmVxdWVzdCBzZXQtaGVhZGVyIFgtNTFELVN0YXRzICVbNTFkLmFsbChNZXRob2QsRGlmZmVyZW5jZSxSYW5rKV0KClRoZXNlIHZhbHVlcyBpbmRpY2F0ZSBob3cgY29uZmlkZW50IDUxRGVncmVlcyBpcyBpbiB0aGUgcmVzdWx0IHRoYXQgdGhhdCB3YXMKcmV0dXJuZWQuIE1vcmUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIG9uIHRoZSA1MURlZ3JlZXMgd2ViIHNpdGUgYXQ6CgogICAgaHR0cHM6Ly81MWRlZ3JlZXMuY29tL3N1cHBvcnQvZG9jdW1lbnRhdGlvbi9wYXR0ZXJuCgpUaGUgYWJvdmUgNTFkLmFsbCBmZXRjaCBtZXRob2QgdXNlcyBhbGwgYXZhaWxhYmxlIEhUVFAgaGVhZGVycyBmb3IgZGV0ZWN0aW9uLiBBCm1vZGVzdCBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBjYW4gYmUgb2J0YWluZWQgYnkgb25seSBwYXNzaW5nIG9uZSBIVFRQIGhlYWRlcgp0byB0aGUgZGV0ZWN0aW9uIG1ldGhvZCB3aXRoIHRoZSA1MWQuc2luZ2xlIGNvbnZlcnRlci4gVGhlIGZvbGxvd2luZyBleGFtcGxlCnVzZXMgdGhlIFVzZXItQWdlbnQgSFRUUCBoZWFkZXIgb25seSBmb3IgZGV0ZWN0aW9uLgoKICAgICAgICBodHRwLXJlcXVlc3Qgc2V0LWhlYWRlciBYLTUxRC1EZXZpY2VUeXBlTW9iaWxlVGFibGV0ICVbcmVxLmZoZHIoVXNlci1BZ2VudCksNTFkLnNpbmdsZShEZXZpY2VUeXBlLElzTW9iaWxlLElzVGFibGV0KV0KCkFueSBIVFRQIGhlYWRlciBjb3VsZCBiZSB1c2VkIGlucGxhY2Ugb2YgVXNlci1BZ2VudCBieSBjaGFuZ2luZyB0aGUgcGFyYW1ldGVyCnByb3ZpZGVkIHRvIHJlcS5maGRyLgoKV2hlbiBjb21waWxlZCB0byB1c2UgdGhlIFRyaWUgZGV0ZWN0aW9uIG1ldGhvZCB0aGUgdHJpZSBmb3JtYXQgZGF0YSBmaWxlIG5lZWRzCnRvIGJlIHByb3ZpZGVkLiBDaGFuZ2luZyB0aGUgZXh0ZW5zaW9uIG9mIHRoZSBkYXRhIGZpbGUgZnJvbSBkYXQgdG8gdHJpZSB3aWxsCnVzZSB0aGUgY29ycmVjdCBkYXRhLgoKICAgICAgICA1MWRlZ3JlZXMtZGF0YS1maWxlICc1MURfUkVQT19QQVRIJy9kYXRhLzUxRGVncmVlcy1MaXRlVjMuMi50cmllCgpXaGVuIHVzZWQgd2l0aCBUcmllIHRoZSBNZXRob2QsIERpZmZlcmVuY2UgYW5kIFJhbmsgcHJvcGVydGllcyBhcmUgbm90CmF2YWlsYWJsZS4KClRoZSBmcmVlIExpdGUgZGF0YSBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHNjcmVlbiBzaXplIGluIHBpeGVscyBhbmQKd2hldGhlciB0aGUgZGV2aWNlIGlzIGEgbW9iaWxlLiBBIGZ1bGwgbGlzdCBvZiBhdmFpbGFibGUgcHJvcGVydGllcyBpcyBsb2NhdGVkCm9uIHRoZSA1MURlZ3JlZXMgd2ViIHNpdGUgYXQ6CgogICAgaHR0cHM6Ly81MWRlZ3JlZXMuY29tL3Jlc291cmNlcy9wcm9wZXJ0eS1kaWN0aW9uYXJ5CgpTb21lIHByb3BlcnRpZXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBwYWlkIGZvciBQcmVtaXVtIGFuZCBFbnRlcnByaXNlCnZlcnNpb25zIG9mIDUxRGVncmVlcy4gVGhlc2UgZGF0YSBzZXRzIG5vdCBvbmx5IGNvbnRhaW4gbW9yZSBwcm9wZXJ0aWVzIGJ1dAphcmUgdXBkYXRlZCB3ZWVrbHkgYW5kIGRhaWx5IGFuZCBjb250YWluIHNpZ25hdHVyZXMgZm9yIDEwMCwwMDBzIG9mIGRpZmZlcmVudApkZXZpY2UgY29tYmluYXRpb25zLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlIGRhdGEgb3B0aW9ucyBjb21wYXJpc29uIHdlYgpwYWdlOgoKICAgIGh0dHBzOi8vNTFkZWdyZWVzLmNvbS9jb21wYXJlLWRhdGEtb3B0aW9ucwoKCjIpIEhvdyB0byBpbnN0YWxsIGl0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUbyBpbnN0YWxsIGhhcHJveHksIHlvdSBjYW4gZWl0aGVyIGNvcHkgdGhlIHNpbmdsZSByZXN1bHRpbmcgYmluYXJ5IHRvIHRoZQpwbGFjZSB5b3Ugd2FudCwgb3IgcnVuIDoKCiAgICAkIHN1ZG8gbWFrZSBpbnN0YWxsCgpJZiB5b3UncmUgcGFja2FnaW5nIGl0IGZvciBhbm90aGVyIHN5c3RlbSwgeW91IGNhbiBzcGVjaWZ5IGl0cyByb290IGRpcmVjdG9yeQppbiB0aGUgdXN1YWwgREVTVERJUiB2YXJpYWJsZS4KCgozKSBIb3cgdG8gc2V0IGl0IHVwCi0tLS0tLS0tLS0tLS0tLS0tLS0KClRoZXJlIGlzIHNvbWUgZG9jdW1lbnRhdGlvbiBpbiB0aGUgZG9jLyBkaXJlY3RvcnkgOgoKICAgIC0gaW50cm8udHh0IDogdGhpcyBpcyBhbiBpbnRyb2R1Y3Rpb24gdG8gaGFwcm94eSwgaXQgZXhwbGFpbnMgd2hhdCBpdCBpcwogICAgICB3aGF0IGl0IGlzIG5vdC4gVXNlZnVsIGZvciBiZWdpbm5lcnMgb3IgdG8gcmUtZGlzY292ZXIgaXQgd2hlbiBwbGFubmluZwogICAgICBmb3IgYW4gdXBncmFkZS4KCiAgICAtIGFyY2hpdGVjdHVyZS50eHQgOiB0aGlzIGlzIHRoZSBhcmNoaXRlY3R1cmUgbWFudWFsLiBJdCBpcyBxdWl0ZSBvbGQgYW5kCiAgICAgIGRvZXMgbm90IHRlbGwgYWJvdXQgdGhlIG5pY2UgbmV3IGZlYXR1cmVzLCBidXQgaXQncyBzdGlsbCBhIGdvb2Qgc3RhcnRpbmcKICAgICAgcG9pbnQgd2hlbiB5b3Uga25vdyB3aGF0IHlvdSB3YW50IGJ1dCBkb24ndCBrbm93IGhvdyB0byBkbyBpdC4KCiAgICAtIGNvbmZpZ3VyYXRpb24udHh0IDogdGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBtYW51YWwuIEl0IHJlY2FsbHMgYSBmZXcKICAgICAgZXNzZW50aWFsIEhUVFAgYmFzaWMgY29uY2VwdHMsIGFuZCBkZXRhaWxzIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmaWxlCiAgICAgIHN5bnRheCAoa2V5d29yZHMsIHVuaXRzKS4gSXQgYWxzbyBkZXNjcmliZXMgdGhlIGxvZyBhbmQgc3RhdHMgZm9ybWF0LiBJdAogICAgICBpcyBub3JtYWxseSBhbHdheXMgdXAgdG8gZGF0ZS4gSWYgeW91IHNlZSB0aGF0IHNvbWV0aGluZyBpcyBtaXNzaW5nIGZyb20KICAgICAgaXQsIHBsZWFzZSByZXBvcnQgaXQgYXMgdGhpcyBpcyBhIGJ1Zy4gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGZpbGUgaXMKICAgICAgaHVnZSBhbmQgdGhhdCBpdCdzIGdlbmVyYWxseSBtb3JlIGNvbnZlbmllbnQgdG8gcmV2aWV3IEN5cmlsIEJvbnTpJ3MKICAgICAgSFRNTCB0cmFuc2xhdGlvbiBvbmxpbmUgaGVyZSA6CgogICAgICAgICAgIGh0dHA6Ly9jYm9udGUuZ2l0aHViLmlvL2hhcHJveHktZGNvbnYvY29uZmlndXJhdGlvbi0xLjUuaHRtbAoKICAgIC0gaGFwcm94eS1lbi50eHQgLyBoYXByb3h5LWZyLnR4dCA6IHRoZXNlIGFyZSB0aGUgb2xkIG91dGRhdGVkIGRvY3MuIFlvdQogICAgICBzaG91bGQgbmV2ZXIgbmVlZCB0aGVtLiBJZiB5b3UgZG8sIHRoZW4gcGxlYXNlIHJlcG9ydCB3aGF0IHlvdSBkaWRuJ3QKICAgICAgZmluZCBpbiB0aGUgb3RoZXIgb25lcy4KCiAgICAtIGdwbC50eHQgLyBsZ3BsLnR4dCA6IHRoZSBjb3B5IG9mIHRoZSBsaWNlbnNlcyBjb3ZlcmluZyB0aGUgc29mdHdhcmUuIFNlZQogICAgICB0aGUgJ0xJQ0VOU0UnIGZpbGUgYXQgdGhlIHRvcCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICAtIHRoZSByZXN0IGlzIG1haW5seSBmb3IgZGV2ZWxvcGVycy4KClRoZXJlIGFyZSBhbHNvIGEgbnVtYmVyIG9mIG5pY2UgY29uZmlndXJhdGlvbiBleGFtcGxlcyBpbiB0aGUgImV4YW1wbGVzIgpkaXJlY3RvcnkgYXMgd2VsbCBhcyBvbiBzZXZlcmFsIHNpdGVzIGFuZCBhcnRpY2xlcyBvbiB0aGUgbmV0IHdoaWNoIGFyZSBsaW5rZWQKdG8gZnJvbSB0aGUgaGFwcm94eSB3ZWIgc2l0ZS4KCgo0KSBIb3cgdG8gcmVwb3J0IGEgYnVnCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkl0IGlzIHBvc3NpYmxlIHRoYXQgZnJvbSB0aW1lIHRvIHRpbWUgeW91J2xsIGZpbmQgYSBidWcuIEEgYnVnIGlzIGEgY2FzZSB3aGVyZQp3aGF0IHlvdSBzZWUgaXMgbm90IHdoYXQgaXMgZG9jdW1lbnRlZC4gT3RoZXJ3aXNlIGl0IGNhbiBiZSBhIG1pc2Rlc2lnbi4gSWYgeW91CmZpbmQgdGhhdCBzb21ldGhpbmcgaXMgc3R1cGlkbHkgZGVzaWduLCBwbGVhc2UgZGlzY3VzcyBpdCBvbiB0aGUgbGlzdCAoc2VlIHRoZQoiaG93IHRvIGNvbnRyaWJ1dGUiIHNlY3Rpb24gYmVsb3cpLiBJZiB5b3UgZmVlbCBsaWtlIHlvdSdyZSBwcm9jZWVkaW5nIHJpZ2h0CmFuZCBoYXByb3h5IGRvZXNuJ3Qgb2JleSwgdGhlbiBmaXJzdCBhc2sgeW91cnNlbGYgaWYgaXQgaXMgcG9zc2libGUgdGhhdCBub2JvZHkKYmVmb3JlIHlvdSBoYXMgZXZlbiBlbmNvdW50ZXJlZCB0aGlzIGlzc3VlLiBJZiBpdCdzIHVubGlrZWx5LCB0aGUgeW91IHByb2JhYmx5CmhhdmUgYW4gaXNzdWUgaW4geW91ciBzZXR1cC4gSnVzdCBpbiBjYXNlIG9mIGRvdWJ0LCBwbGVhc2UgY29uc3VsdCB0aGUgbWFpbGluZwpsaXN0IGFyY2hpdmVzIDoKCiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9tYXJjLmluZm8vP2w9aGFwcm94eQoKT3RoZXJ3aXNlLCBwbGVhc2UgdHJ5IHRvIGdhdGhlciB0aGUgbWF4aW11bSBhbW91bnQgb2YgaW5mb3JtYXRpb24gdG8gaGVscApyZXByb2R1Y2UgdGhlIGlzc3VlIGFuZCBzZW5kIHRoYXQgdG8gdGhlIG1haWxpbmcgbGlzdCA6CgogICAgICAgICAgICAgICAgICAgICAgICBoYXByb3h5QGZvcm1pbHV4Lm9yZwoKUGxlYXNlIGluY2x1ZGUgeW91ciBjb25maWd1cmF0aW9uIGFuZCBsb2dzLiBZb3UgY2FuIG1hc2sgeW91ciBJUCBhZGRyZXNzZXMgYW5kCnBhc3N3b3Jkcywgd2UgZG9uJ3QgbmVlZCB0aGVtLiBCdXQgaXQncyBlc3NlbnRpYWwgdGhhdCB5b3UgcG9zdCB5b3VyIGNvbmZpZyBpZgp5b3Ugd2FudCBwZW9wbGUgdG8gZ3Vlc3Mgd2hhdCBpcyBoYXBwZW5pbmcuCgpBbHNvLCBrZWVwIGluIG1pbmQgdGhhdCBoYXByb3h5IGlzIGRlc2lnbmVkIHRvIE5FVkVSIENSQVNILiBJZiB5b3Ugc2VlIGl0IGRpZQp3aXRob3V0IGFueSByZWFzb24sIHRoZW4gaXQgZGVmaW5pdGVseSBpcyBhIGNyaXRpY2FsIGJ1ZyB0aGF0IG11c3QgYmUgcmVwb3J0ZWQKYW5kIHVyZ2VudGx5IGZpeGVkLiBJdCBoYXMgaGFwcGVuZWQgYSBjb3VwbGUgb2YgdGltZXMgaW4gdGhlIHBhc3QsIGVzc2VudGlhbGx5Cm9uIGRldmVsb3BtZW50IHZlcnNpb25zIHJ1bm5pbmcgb24gbmV3IGFyY2hpdGVjdHVyZXMuIElmIHlvdSB0aGluayB5b3VyIHNldHVwCmlzIGZhaXJseSBjb21tb24sIHRoZW4gaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgaXNzdWUgaXMgdG90YWxseSB1bnJlbGF0ZWQuCkFueXdheSwgaWYgdGhhdCBoYXBwZW5zLCBmZWVsIGZyZWUgdG8gY29udGFjdCBtZSBkaXJlY3RseSwgYXMgSSB3aWxsIGdpdmUgeW91Cmluc3RydWN0aW9ucyBvbiBob3cgdG8gY29sbGVjdCBhIHVzYWJsZSBjb3JlIGZpbGUsIGFuZCB3aWxsIHByb2JhYmx5IGFzayBmb3IKb3RoZXIgY2FwdHVyZXMgdGhhdCB5b3UnbGwgbm90IHdhbnQgdG8gc2hhcmUgd2l0aCB0aGUgbGlzdC4KCgo1KSBIb3cgdG8gY29udHJpYnV0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLQoKUGxlYXNlIGNhcmVmdWxseSByZWFkIHRoZSBDT05UUklCVVRJTkcgZmlsZSB0aGF0IGNvbWVzIHdpdGggdGhlIHNvdXJjZXMuIEl0IGlzCm1hbmRhdG9yeS4KCi0tIGVuZAo=