A/MNCjFc/FVjAAAAAAAAAAADAAAAQAAAAHNGAAAAZAAAWgAAZAEAZAIAbAEAbQIAWgIAAWQDAGUDAGYBAGQEAIQAAIMAAFlaBABkBQBlBQBmAQBkBgCEAACDAABZWgYAZAcAUygIAAAAc8gAAABQYXJzZXIgZW5naW5lIGZvciB0aGUgZ3JhbW1hciB0YWJsZXMgZ2VuZXJhdGVkIGJ5IHBnZW4uCgpUaGUgZ3JhbW1hciB0YWJsZSBtdXN0IGJlIGxvYWRlZCBmaXJzdC4KClNlZSBQYXJzZXIvcGFyc2VyLmMgaW4gdGhlIFB5dGhvbiBkaXN0cmlidXRpb24gZm9yIGFkZGl0aW9uYWwgaW5mbyBvbgpob3cgdGhpcyBwYXJzaW5nIGVuZ2luZSB3b3Jrcy4KCmkBAAAAKAEAAAB0BQAAAHRva2VudAoAAABQYXJzZUVycm9yYwAAAAAAAAAAAQAAAEIAAABzFwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAFJTKAIAAABzKAAAAEV4Y2VwdGlvbiB0byBzaWduYWwgdGhlIHBhcnNlciBpcyBzdHVjay5jBQAAAAUAAAAHAAAAQwAAAHNIAAAAdAAAagEAfAAAZAEAfAEAfAIAfAMAfAQAZgQAFoMCAAF8AQB8AABfAgB8AgB8AABfAwB8AwB8AABfBAB8BAB8AABfBQBkAABTKAIAAABOcyEAAAAlczogdHlwZT0lciwgdmFsdWU9JXIsIGNvbnRleHQ9JXIoBgAAAHQJAAAARXhjZXB0aW9udAgAAABfX2luaXRfX3QDAAAAbXNndAQAAAB0eXBldAUAAAB2YWx1ZXQHAAAAY29udGV4dCgFAAAAdAQAAABzZWxmUgQAAABSBQAAAFIGAAAAUgcAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYjJ0bzMvcGdlbjIvcGFyc2UucHlSAwAAABMAAABzDAAAAAABDAEUAQkBCQEJASgEAAAAdAgAAABfX25hbWVfX3QKAAAAX19tb2R1bGVfX3QHAAAAX19kb2NfX1IDAAAAKAAAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYjJ0bzMvcGdlbjIvcGFyc2UucHlSAQAAABAAAABzBAAAAAYBBgJ0BgAAAFBhcnNlcmMAAAAAAAAAAAIAAABCAAAAc1MAAABlAABaAQBkAABaAgBkCABkAQCEAQBaBABkCABkAgCEAQBaBQBkAwCEAABaBgBkBACEAABaBwBkBQCEAABaCABkBgCEAABaCQBkBwCEAABaCgBSUygJAAAAczUEAABQYXJzZXIgZW5naW5lLgoKICAgIFRoZSBwcm9wZXIgdXNhZ2Ugc2VxdWVuY2UgaXM6CgogICAgcCA9IFBhcnNlcihncmFtbWFyLCBbY29udmVydGVyXSkgICMgY3JlYXRlIGluc3RhbmNlCiAgICBwLnNldHVwKFtzdGFydF0pICAgICAgICAgICAgICAgICAgIyBwcmVwYXJlIGZvciBwYXJzaW5nCiAgICA8Zm9yIGVhY2ggaW5wdXQgdG9rZW4+OgogICAgICAgIGlmIHAuYWRkdG9rZW4oLi4uKTogICAgICAgICAgICMgcGFyc2UgYSB0b2tlbjsgbWF5IHJhaXNlIFBhcnNlRXJyb3IKICAgICAgICAgICAgYnJlYWsKICAgIHJvb3QgPSBwLnJvb3Rub2RlICAgICAgICAgICAgICAgICAjIHJvb3Qgb2YgYWJzdHJhY3Qgc3ludGF4IHRyZWUKCiAgICBBIFBhcnNlciBpbnN0YW5jZSBtYXkgYmUgcmV1c2VkIGJ5IGNhbGxpbmcgc2V0dXAoKSByZXBlYXRlZGx5LgoKICAgIEEgUGFyc2VyIGluc3RhbmNlIGNvbnRhaW5zIHN0YXRlIHBlcnRhaW5pbmcgdG8gdGhlIGN1cnJlbnQgdG9rZW4KICAgIHNlcXVlbmNlLCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGNvbmN1cnJlbnRseSBieSBkaWZmZXJlbnQgdGhyZWFkcwogICAgdG8gcGFyc2Ugc2VwYXJhdGUgdG9rZW4gc2VxdWVuY2VzLgoKICAgIFNlZSBkcml2ZXIucHkgZm9yIGhvdyB0byBnZXQgaW5wdXQgdG9rZW5zIGJ5IHRva2VuaXppbmcgYSBmaWxlIG9yCiAgICBzdHJpbmcuCgogICAgUGFyc2luZyBpcyBjb21wbGV0ZSB3aGVuIGFkZHRva2VuKCkgcmV0dXJucyBUcnVlOyB0aGUgcm9vdCBvZiB0aGUKICAgIGFic3RyYWN0IHN5bnRheCB0cmVlIGNhbiB0aGVuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSByb290bm9kZQogICAgaW5zdGFuY2UgdmFyaWFibGUuICBXaGVuIGEgc3ludGF4IGVycm9yIG9jY3VycywgYWRkdG9rZW4oKSByYWlzZXMKICAgIHRoZSBQYXJzZUVycm9yIGV4Y2VwdGlvbi4gIFRoZXJlIGlzIG5vIGVycm9yIHJlY292ZXJ5OyB0aGUgcGFyc2VyCiAgICBjYW5ub3QgYmUgdXNlZCBhZnRlciBhIHN5bnRheCBlcnJvciB3YXMgcmVwb3J0ZWQgKGJ1dCBpdCBjYW4gYmUKICAgIHJlaW5pdGlhbGl6ZWQgYnkgY2FsbGluZyBzZXR1cCgpKS4KCiAgICBjAwAAAAMAAAADAAAAQwAAAHMfAAAAfAEAfAAAXwAAfAIAcBUAZAEAhAAAfAAAXwEAZAIAUygDAAAAc9oEAABDb25zdHJ1Y3Rvci4KCiAgICAgICAgVGhlIGdyYW1tYXIgYXJndW1lbnQgaXMgYSBncmFtbWFyLkdyYW1tYXIgaW5zdGFuY2U7IHNlZSB0aGUKICAgICAgICBncmFtbWFyIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICAgICAgVGhlIHBhcnNlciBpcyBub3QgcmVhZHkgeWV0IGZvciBwYXJzaW5nOyB5b3UgbXVzdCBjYWxsIHRoZQogICAgICAgIHNldHVwKCkgbWV0aG9kIHRvIGdldCBpdCBzdGFydGVkLgoKICAgICAgICBUaGUgb3B0aW9uYWwgY29udmVydCBhcmd1bWVudCBpcyBhIGZ1bmN0aW9uIG1hcHBpbmcgY29uY3JldGUKICAgICAgICBzeW50YXggdHJlZSBub2RlcyB0byBhYnN0cmFjdCBzeW50YXggdHJlZSBub2Rlcy4gIElmIG5vdAogICAgICAgIGdpdmVuLCBubyBjb252ZXJzaW9uIGlzIGRvbmUgYW5kIHRoZSBzeW50YXggdHJlZSBwcm9kdWNlZCBpcwogICAgICAgIHRoZSBjb25jcmV0ZSBzeW50YXggdHJlZS4gIElmIGdpdmVuLCBpdCBtdXN0IGJlIGEgZnVuY3Rpb24gb2YKICAgICAgICB0d28gYXJndW1lbnRzLCB0aGUgZmlyc3QgYmVpbmcgdGhlIGdyYW1tYXIgKGEgZ3JhbW1hci5HcmFtbWFyCiAgICAgICAgaW5zdGFuY2UpLCBhbmQgdGhlIHNlY29uZCBiZWluZyB0aGUgY29uY3JldGUgc3ludGF4IHRyZWUgbm9kZQogICAgICAgIHRvIGJlIGNvbnZlcnRlZC4gIFRoZSBzeW50YXggdHJlZSBpcyBjb252ZXJ0ZWQgZnJvbSB0aGUgYm90dG9tCiAgICAgICAgdXAuCgogICAgICAgIEEgY29uY3JldGUgc3ludGF4IHRyZWUgbm9kZSBpcyBhICh0eXBlLCB2YWx1ZSwgY29udGV4dCwgbm9kZXMpCiAgICAgICAgdHVwbGUsIHdoZXJlIHR5cGUgaXMgdGhlIG5vZGUgdHlwZSAoYSB0b2tlbiBvciBzeW1ib2wgbnVtYmVyKSwKICAgICAgICB2YWx1ZSBpcyBOb25lIGZvciBzeW1ib2xzIGFuZCBhIHN0cmluZyBmb3IgdG9rZW5zLCBjb250ZXh0IGlzCiAgICAgICAgTm9uZSBvciBhbiBvcGFxdWUgdmFsdWUgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nICh0eXBpY2FsbHkgYQogICAgICAgIChsaW5lbm8sIG9mZnNldCkgcGFpciksIGFuZCBub2RlcyBpcyBhIGxpc3Qgb2YgY2hpbGRyZW4gZm9yCiAgICAgICAgc3ltYm9scywgYW5kIE5vbmUgZm9yIHRva2Vucy4KCiAgICAgICAgQW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgbm9kZSBtYXkgYmUgYW55dGhpbmc7IHRoaXMgaXMgZW50aXJlbHkKICAgICAgICB1cCB0byB0aGUgY29udmVydGVyIGZ1bmN0aW9uLgoKICAgICAgICBjAgAAAAIAAAABAAAAUwAAAHMEAAAAfAEAUygBAAAATigAAAAAKAIAAAB0BwAAAGdyYW1tYXJ0BAAAAG5vZGUoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9z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cG9wc3RhdGV0BwAAAHBvcG5vZGVSGAAAAFIjAAAAUiQAAABSDgAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbGliMnRvMy9wZ2VuMi9wYXJzZS5weVIfAAAAvwAAAHMQAAAAAAIYARUBDAEJARYBFAIJAU4oCwAAAFIJAAAAUgoAAABSCwAAAFIRAAAAUgMAAABSGgAAAFIvAAAAUhsAAABSHgAAAFIhAAAAUh8AAAAoAAAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbGliMnRvMy9wZ2VuMi9wYXJzZS5weVIMAAAAGwAAAHMQAAAABhwGAgwgDBgJMAkOCQkJB04oBwAAAFILAAAAdAAAAABSAAAAAFICAAAAUgEAAAB0BgAAAG9iamVjdFIMAAAAKAAAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYjJ0bzMvcGdlbjIvcGFyc2UucHl0CAAAADxtb2R1bGU+CwAAAHMGAAAABgMQAhYL