MS4gSU5UUk9EVcfDTwoKV2luZSDpIHVtIHByb2dyYW1hIHF1ZSBwZXJtaXRlIGV4ZWN1dGFyIHByb2dyYW1hcyBNaWNyb3NvZnQgV2luZG93cyAKKGluY2x1aW5kbyBleGVjdXThdmVpcyBET1MsIFdpbmRvd3MgMy54LCBXaW4zMiBlIFdpbjY0KSBubyBVbml4LgpDb25zdGl0de1kbyBkZSB1bSBwcm9ncmFtYSBjYXJyZWdhZG9yIChsb2FkZXIpIHF1ZSBjYXJyZWdhIGUgZXhlY3V0YSAKdW0gYmlu4XJpbyBNaWNyb3NvZnQgV2luZG93cywgZSB1bWEgYmlibGlvdGVjYSAoY2hhbWFkYSBXaW5lbGliKSBxdWUgCmltcGxlbWVudGEgY2hhbWFkYXMgZGEgQVBJIGRvIFdpbmRvd3MgdXNhbmRvIG9zIGVxdWl2YWxlbnRlcyBkbyBVbml4Cm91IGRvIFgxMS4gQSBiaWJsaW90ZWNhIHRhbWLpbSBwb2RlIHNlciB1c2FkYSBwYXJhIHBvcnRhciBj82RpZ28gCldpbjMyIGVtIGV4ZWN1dOF2ZWlzIG5hdGl2b3MgVW5peC4KCldpbmUg6SBzb2Z0d2FyZSBsaXZyZSwgbGliZXJhZG8gc2VndW5kbyBhIEdOVSBMR1BMOyB2ZWphIG8gYXJxdWl2byAKTElDRU5TRSBwYXJhIGRldGFsaGVzLgoKCjIuIElOzUNJTyBSwVBJRE8KClNlbXByZSBxdWUgc2UgY29tcGlsYW0gb3MgZm9udGVzLCDpIHJlY29tZW5kYWRvIHVzYXIgbyBXaW5lIEluc3RhbGxlcgpwYXJhIGNvbnN0cnVpciBlIGluc3RhbGFyIG8gV2luZS4gRXN0YW5kbyBubyBkaXJldPNyaW8gZGUgbWFpcyBhbHRvCm7tdmVsIGRvIGPzZGlnbyBmb250ZSBkbyBXaW5lLCBleGVjdXRlOgoKLi90b29scy93aW5laW5zdGFsbAoKRXhlY3V0ZSBwcm9ncmFtYXMgY29uZm9ybWUgIndpbmUgcHJvZ3JhbWEiLiBQYXJhIG1haW9yZXMgaW5mb3JtYef1ZXMKZSByZXNvbHXn428gZGUgcHJvYmxlbWFzLCBsZWlhIG8gcmVzdGFudGUgZGVzdGUgYXJxdWl2bywgYSBw4WdpbmEKIm1hbiIgZG8gV2luZSAobWFuIHdpbmUpLCBlIGVzcGVjaWFsbWVudGUgYSBhYnVuZOJuY2lhIGRlIGluZm9ybWHn428KZW5jb250cmFkYSBlbSBodHRwOi8vd3d3LndpbmVocS5vcmcuCgoKMy4gUkVRVUVSSU1FTlRPUwoKUGFyYSBjb21waWxhciBlIGV4ZWN1dGFyIG8gV2luZSwgdm9j6iBkZXZlIHRlciBvIHNlZ3VpbnRlOgoKCQlMaW51eCB2ZXJz428gMi4wLjM2IG91IHBvc3RlcmlvcgoJCUZyZWVCU0QgOC4wIG91IHBvc3RlcmlvcgoJCVNvbGFyaXMgeDg2IDkgb3UgcG9zdGVyaW9yCgkJTmV0QlNELWF0dWFsCgkJTWFjIE9TIFggMTAuNSBvdSBwb3N0ZXJpb3IKCkNvbW8gbyBXaW5lIHJlcXVlciBzdXBvcnRlIGEgdGFyZWZhcyBubyBu7XZlbCBkZSBrZXJuZWwgcGFyYSBleGVjdXRhciwKc29tZW50ZSBvcyBzaXN0ZW1hcyBvcGVyYWNpb25haXMgYWNpbWEgbWVuY2lvbmFkb3Mgc+NvIHN1cG9ydGFkb3MuCk91dHJvcyBzaXN0ZW1hcyBvcGVyYWNpb25haXMgcXVlIHN1cG9ydGFyZW0gdGFyZWZhcyBkbyBrZXJuZWwgcG9kZXLjbyAKdGVyIHN1cG9ydGUgbm8gZnV0dXJvLgoKSW5mb3JtYef1ZXMgcGFyYSBvIEZyZWVCU0Q6CiAgTyBXaW5lIGVtIGdlcmFsIG7jbyBkZXZlIGZ1bmNpb25hciBjb3JyZXRhbWVudGUgZW0gdmVyc/VlcyBhbnRlcyBkYSA4LjAuCiAgVmVqYSBodHRwOi8vd2lraS5mcmVlYnNkLm9yZy9XaW5lIHBhcmEgbWFpcyBpbmZvcm1h5/Vlcy4KCkluZm9ybWHn9WVzIHBhcmEgbyBTb2xhcmlzOgogIFZvY+ogcHJvdmF2ZWxtZW50ZSBuZWNlc3NpdGFy4SBjb25zdHJ1aXIgbyBXaW5lIGNvbSBhcyBmZXJyYW1lbnRhcyBHTlUKICAoZ2NjLCBnYXMsIGV0Yy4pLiBBdmlzbzogaW5zdGFsYXIgZ2FzIE7DTyBhc3NlZ3VyYSBxdWUgc2Vy4SB1c2FkbyBwZWxvCiAgZ2NjLiBSZWNvbXBpbGFyIG8gZ2NjIGRlcG9pcyBkZSBpbnN0YWxhciBvIGdhcyBvdSBjcmlhciB1bWEgbGlnYefjbyBhbwogIGNjLCBhcyBlIGxkIHBhcmEgYXMgZmVycmFtZW50YXMgZ251IOkgZGl0byBzZXIgbmVjZXNz4XJpby4KCkluZm9ybWHn9WVzIHBhcmEgbyBOZXRCU0Q6CiAgQ2VydGlmaXF1ZS1zZSBkZSB0ZXIgYXMgb3Dn9WVzIFVTRVJfTERULCBTWVNWU0hNLCBTWVNWU0VNLCBlIFNZU1ZNU0cKICBsaWdhZGFzIG5vIGtlcm5lbC4KCkluZm9ybWHn9WVzIHBhcmEgTWFjIE9TIFg6CiAgU2Vy4SBuZWNlc3PhcmlvIG8gWGNvZGUgMi40IG91IHN1cGVyaW9yIHBhcmEgY29tcGlsYXIgY29ycmV0YW1lbnRlIG5vIHg4Ni4KICBPIGRyaXZlciBncuFmaWNvIE1hYyByZXF1ZXIgT1MgWCAxMC42IG91IHN1cGVyaW9yIGUgbuNvIHNlcuEgdXNhZG8gbm8gMTAuNS4KCgpTaXN0ZW1hcyBkZSBhcnF1aXZvIHN1cG9ydGFkb3M6CiAgTyBXaW5lIGRldmUgcm9kYXIgbmEgbWFpb3JpYSBkb3Mgc2lzdGVtYXMgZGUgYXJxdWl2b3MuIEFsZ3VucyBwcm9ibGVtYXMgZGUKICBjb21wYXRpYmlsaWRhZGUgZm9yYW0gcmVwb3J0YWRvcyBxdWFuZG8gdXNhZG8gdmlhIFNhbWJhLiBBbOltIGRpc3NvLCBvIE5URlMKICBu428gcHJvduogdG9kYXMgYXMgZnVuY2lvbmFsaWRhZGVzIG5lY2Vzc+FyaWFzIHBhcmEgYWxndW5zIGFwbGljYXRpdm9zLgogIFVzYXIgdW1hIHBhcnRp5+NvIG5hdGl2YSBVbml4IOkgcmVjb21lbmRhZG8uCgpSZXF1aXNpdG9zIGLhc2ljb3M6CiAgVm9j6iBuZWNlc3NpdGEgdGVyIGluc3RhbGFkb3Mgb3MgYXJxdWl2b3MgZGUgaW5jbHVz428gcGFyYSBkZXNlbnZvbHZpbWVudG8KICBkbyBYMTEgKGNoYW1hZG9zIGRlIHhsaWI2Zy1kZXYgbm8gRGViaWFuIGUgWEZyZWU4Ni1kZXZlbCBubyBSZWRIYXQpLgoKICBPYnZpYW1lbnRlIHZvY+ogdGFtYultIGly4SBwcmVjaXNhciBkbyAibWFrZSIgKGNvbXVtZW50ZSBvIEdOVSBtYWtlKS4KCiAgVGFtYultIHNlcuEgbmVjZXNz4XJpbyBvIGZsZXggdmVyc+NvIDIuNS4zMyBvdSBzdXBlcmlvciBlIG8gYmlzb24uCgpCaWJsaW90ZWNhcyBkZSBzdXBvcnRlIG9wY2lvbmFpczoKICBPIHNjcmlwdCBjb25maWd1cmUgaXLhIG1vc3RyYXIgZGl2ZXJzYXMgbWVuc2FnZW5zIHF1YW5kbyBiaWJsaW90ZWNhcwogIG9wY2lvbmFpcyBu428gZm9yZW0gZW5jb250cmFkYXMgbm8gc2V1IHNpc3RlbWEuCiAgVmVqYSBodHRwOi8vd2lraS53aW5laHEub3JnL1JlY29tbWVuZGVkX1BhY2thZ2VzIHBhcmEgZGljYXMgc29icmUKICBwYWNvdGVzIHF1ZSB2b2PqIHBvZGUgaW5zdGFsYXIuCgogIEVtIHBsYXRhZm9ybWFzIGRlIDY0IGJpdHMsIHNlIGNvbXBpbGFyIFdpbmUgY29tbyAzMiBiaXRzIChwYWRy428pLCB2b2PqCiAgcHJlY2lzYSBhc3NlZ3VyYXIgcXVlIGFzIHZlcnP1ZXMgMzIgYml0cyBkYXMgYmlibGlvdGVjYXMgZXN0428gaW5zdGFsYWRhcywKICB2ZWphIGh0dHA6Ly93aWtpLndpbmVocS5vcmcvV2luZU9uNjRiaXQgcGFyYSBtYWlzIGRldGFsaGVzLgogIFNlIHZvY+ogcXVlciB1bSB2ZXJkYWRlaXJvIFdpbmUgZGUgNjQgYml0cyAob3UgdW1hIGNvbmZpZ3VyYefjbyBtaXN0YSBkZQogIDMyIGUgNjQgYml0cykgdmVqYSBodHRwOi8vd2lraS53aW5laHEub3JnL1dpbmU2NCBwYXJhIG1haXMgZGV0YWxoZXMuCgoKNC4gQ09NUElMQcfDTwoKTm8gY2FzbyBkZSBlc2NvbGhlciBu428gdXNhciBvIHdpbmVpbnN0YWxsLCBleGVjdXRlIG9zIGNvbWFuZG9zIGEgc2VndWlyCnBhcmEgY29uc3RydWlyIG8gV2luZToKCi4vY29uZmlndXJlCm1ha2UKCklzdG8gY29uc3RydWly4SBvIHByb2dyYW1hICJ3aW5lIiBlIHbhcmlvcyBiaW7hcmlvcy9iaWJsaW90ZWNhcyBkZSBzdXBvcnRlLgpPIHByb2dyYW1hICJ3aW5lIiBjYXJyZWdhcuEgZSBleGVjdXRhcuEgZXhlY3V04XZlaXMgZG8gV2luZG93cy4KQSBiaWJsaW90ZWNhICJsaWJ3aW5lIiAoIldpbmVsaWIiKSBwb2RlIHNlciB1c2FkYSBwYXJhIGNvbXBpbGFyIGUgbGlnYXIKY/NkaWdvLWZvbnRlIGRvIFdpbmRvd3Mgc29iIG8gVW5peC4KClBhcmEgdmVyIGFzIG9w5/VlcyBkZSBjb21waWxh5+NvIGRhIGNvbmZpZ3VyYefjbywgcm9kZSAuL2NvbmZpZ3VyZSAtLWhlbHAuCgoKNS4gQ09ORklHVVJBx8NPCgpVbWEgdmV6IHF1ZSBvIFdpbmUgZXN0ZWphIGNvbnN0cnXtZG8gY29ycmV0YW1lbnRlLCB2b2PqIHBvZGUgZXhlY3V0YXIKIm1ha2UgaW5zdGFsbCI7IGFzc2ltIGly4SBpbnN0YWxhciBvIGV4ZWN1dOF2ZWwgZG8gd2luZSwgYXMgcOFnaW5hcyAKIm1hbiIgZG8gV2luZSwgZSBvdXRyb3MgYXJxdWl2b3MgbmVjZXNz4XJpb3MuCgpO428gZXNxdWXnYSBkZSBkZXNpbnN0YWxhciBwcmltZWlyYW1lbnRlIHF1YWxxdWVyIGluc3RhbGHn428gcHLpdmlhIGRvIApXaW5lIHF1ZSBwb3NzYSBzZXIgY29uZmxpdGFudGUuIFRlbnRlIHRhbnRvICJkcGtnIC1yIHdpbmUiLCAicnBtIC1lIHdpbmUiCm91ICJtYWtlIHVuaW5zdGFsbCIgYW50ZXMgZGUgaW5zdGFsYXIuCgpEZXBvaXMgZGUgaW5zdGFsYWRvLCBwb2RlLXNlIGV4ZWN1dGFyIG8gcHJvZ3JhbWEgZGUgY29uZmlndXJh5+NvICJ3aW5lY2ZnIi4KVmVqYSBhIOFyZWEgZGUgc3Vwb3J0ZSBlbSBodHRwOi8vd3d3LndpbmVocS5vcmcvIHBhcmEgZGljYXMgZGUgY29uZmlndXJh5+NvLgoKCjYuIEVYRUNVVEFORE8gUFJPR1JBTUFTCgpBbyBpbnZvY2FyIG8gV2luZSwgdm9j6iBwb2RlIGVzcGVjaWZpY2FyIG8gY2FtaW5obyBjb21wbGV0byBkbyBleGVjdXThdmVsLApvdSBzb21lbnRlIHVtIG5vbWUgZGUgYXJxdWl2by4KClBvciBleGVtcGxvLCBwYXJhIGV4ZWN1dGFyIG8gYmxvY28gZGUgbm90YXM6CgoJd2luZSBub3RlcGFkICAgICAgICAgICAgICAgICAgICAodXNhbmRvIG8gY2FtaW5obyBkZSBwZXNxdWlzYSBjb21vCgl3aW5lIG5vdGVwYWQuZXhlICAgICAgICAgICAgICAgICBlc3BlY2lmaWNhZG8gbm8gcmVnaXN0cm8gcGFyYQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb250cmFyIG8gYXJxdWl2bykKCgl3aW5lIGM6XFx3aW5kb3dzXFxub3RlcGFkLmV4ZSAgICh1c2FuZG8gdW0gbm9tZSBkZSBhcnF1aXZvIERPUykKCgl3aW5lIH4vLndpbmUvZHJpdmVfYy93aW5kb3dzL25vdGVwYWQuZXhlICAgKHVzYW5kbyB1bSBub21lIGRlIGFycXVpdm8gVW5peCkKCgl3aW5lIG5vdGVwYWQuZXhlIGxlaWFtZS50eHQgICAgIChjaGFtYW5kbyBvIHByb2dyYW1hIGNvbSBwYXLibWV0cm9zKQoKTyBXaW5lIG7jbyDpIHBlcmZlaXRvLCBlbnTjbyBhbGd1bnMgcHJvZ3JhbWFzIHBvZGVtIHRyYXZhci4gU2UgaXNzbwphY29udGVjZXIgdm9j6iB2ZXLhIHVtIHJlZ2lzdHJvIGRvIHRyYXZhbWVudG8gKGNyYXNoIGxvZykgcXVlIHZvY+oKcG9kZXLhIGFuZXhhciBhbyBidWcgcXVlIGZvciBjcmlhci4KCgo3LiBPQlRFTkRPIE1BSVMgSU5GT1JNQcfDTwoKV1dXOglVbWEgZ3JhbmRlIHF1YW50aWRhZGUgZGUgaW5mb3JtYefjbyBzb2JyZSBvIFdpbmUgZXN04SBkaXNwb27tdmVsCglubyBXaW5lSFEgZW0gaHR0cDovL3d3dy53aW5laHEub3JnLyA6IHbhcmlvcyBndWlhcyBkbyBXaW5lLCBiYXNlCglkZSBkYWRvcyBkZSBhcGxpY2Hn9WVzLCByYXN0cmVhbWVudG8gZGUgZXJyb3MuIEVzdGUg6SBwcm92YXZlbG1lbnRlCglvIG1lbGhvciBwb250byBwYXJhIGNvbWXnYXIuCgpGQVE6CU8gRkFRIChwZXJndW50YXMgZnJlcXVlbnRlcykgZG8gV2luZSBlc3ThIGVtIGh0dHA6Ly93d3cud2luZWhxLm9yZy9GQVEKCldpa2k6CU8gd2lraSBkbyBXaW5lIGVzdOEgZGlzcG9u7XZlbCBlbSBodHRwOi8vd2lraS53aW5laHEub3JnCgpMaXN0YXMgZGUgZGlzY3Vzc+NvOgoJSOEgZGl2ZXJzYXMgbGlzdGFzIGRlIG1lbnNhZ2VucyBwYXJhIHVzdeFyaW9zIGUgY29sYWJvcmFkb3JlcyBubwoJZGVzZW52b2x2aW1lbnRvIGRvIFdpbmU7IHZlamEgaHR0cDovL3d3dy53aW5laHEub3JnL2ZvcnVtcyBwYXJhCgltYWlzIGluZm9ybWHn428uCgpCdWdzOglSZWxhdGUgZXJyb3MgYW8gQnVnemlsbGEgZG8gV2luZSBlbSBodHRwOi8vYnVncy53aW5laHEub3JnCglQb3IgZmF2b3IsIHBlc3F1aXNlIGEgYmFzZSBkZSBkYWRvcyBkbyBidWd6aWxsYSBwYXJhIHZlcmlmaWNhcgoJc2Ugc2V1IHByb2JsZW1hIGrhIGZvaSBlbmNvbnRyYWRvIG91IHJlc29sdmlkbyBhbnRlcyBkZSBlbnZpYXIKCXVtIHJlbGF083JpbyBkbyBlcnJvLgoKSVJDOglBIGFqdWRhIG9ubGluZSBlc3ThIGRpc3Bvbu12ZWwgZW0gI1dpbmVIUSBlbSBpcmMuZnJlZW5vZGUubmV0LgoKR2l0OglBIOFydm9yZSBkZSBkZXNlbnZvbHZpbWVudG8gYXR1YWwgZG8gV2luZSBlc3ThIGRpc3Bvbu12ZWwgcG9yIEdpdC4KCVZpc2l0ZSBodHRwOi8vd3d3LndpbmVocS5vcmcvZ2l0IHBhcmEgbWFpcyBpbmZvcm1h5+NvLgoKU2Ugdm9j6iBhbHRlcmFyIGFsZ28gb3UgcmVwYXJhciB1bSBlcnJvLCBlbnZpZSwgcG9yIGZhdm9yLCB1bSBwYXRjaAoocHJlZmVyZW5jaWFsbWVudGUgdXNhbmRvIGdpdC1mb3JtYXQtcGF0Y2gpIOAgbGlzdGEgd2luZS1wYXRjaGVzQHdpbmVocS5vcmcKcGFyYSBpbmNsdXPjbyBuYSBwcvN4aW1hIGRpc3RyaWJ1aefjby4KCi0tCkFycXVpdm8gb3JpZ2luYWwgZXNjcml0byBwb3I6CkFsZXhhbmRyZSBKdWxsaWFyZApqdWxsaWFyZEB3aW5laHEub3JnCgotLQpUcmFkdefjbyBwYXJhIFBvcnR1Z3XqcyBkbyBCcmFzaWw6Ck1hcmNlbG8gRHVhcnRlCndpbmUtZGV2ZWxAYm9sLmNvbS5icgoKQnJ1bm8gSmVzdXMKMDBjcHh4eEBnbWFpbC5jb20K