CiAgICAgICAgTkVXUyBmaWxlIGZvciBsaWJ4bWwyCgogIE5vdGUgdGhhdCB0aGlzIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gdGhlIG5ld3Mgd2VicGFnZSBhdDoKICAgICAgIGh0dHA6Ly94bWxzb2Z0Lm9yZy9uZXdzLmh0bWwKCgpDVlMgb25seSA6IGNoZWNrIHRoZSBDaGFuZ2Vsb2cgYXQgCmh0dHA6Ly9jdnMuZ25vbWUub3JnL2x4ci9zb3VyY2UvZ25vbWUteG1sL0NoYW5nZUxvZwogZmlsZQpmb3IgYSByZWFsbHkgYWNjdXJhdGUgZGVzY3JpcHRpb246Ckl0ZW1zIG5vdCBmaW5pc2hlZCBhbmQgd29ya2VkIG9uLCBnZXQgaW4gdG91Y2ggd2l0aCB0aGUgbGlzdCBpZiB5b3Ugd2FudAp0byB0ZXN0IHRob3NlICAgLSBNb3JlIHRlc3Rpbmcgb24gUmVsYXhORwogICAtIEZpbmlzaGluZyB1cCBYTUwKICBTY2hlbWFzCgoKMi41Ljg6IEp1bCA2IDIwMDM6CiAgIC0gYnVnZml4ZXM6IFhQYXRoLCBYSW5jbHVkZSwgZmlsZS9VUkkgbWFwcGluZywgVVRGLTE2IHNhdmUgKE1hcmsKICAgIEl0emNvdml0eiksIFVURi04IGNoZWNraW5nLCBVUkkgc2F2aW5nLCBlcnJvciBwcmludGluZyAoV2lsbGlhbSBCcmFjayksCiAgICBQSSByZWxhdGVkIG1lbWxlYWssIGNvbXBpbGF0aW9uIHdpdGhvdXQgc2NoZW1hcyBvciB3aXRob3V0IHhwYXRoIChKb2VyZwogICAgU2NobWl0ei1MaW5uZXdlYmVyL0dhcnJ5IFBlbm5pbmd0b24pLCB4bWxVbmxpbmtOb2RlIHByb2JsZW0gd2l0aCBEVERzLAogICAgcnBtIHByb2JsZW0gb24gLCBpODZfNjQsIHJlbW92ZWQgYSBmZXcgY29tcGlsYXRpb24gcHJvYmxlbXMgZnJvbSAyLjUuNywKICAgIHhtbElPUGFyc2VEVEQsIGFuZCB4bWxTQVhQYXJzZURURCAoTWFsY29sbSBUcmVkaW5uaWNrKQogICAtIHBvcnRhYmlsaXR5OiBESkdQUCAoTXNEb3MpICwgT3BlblZNUyAoQ3JhaWcgQS4gQmVycnkpCiAgIC0gV2lsbGlhbSBCcmFjayBmaXhlZCBtdWx0aXRocmVhZGluZyBsb2NrIHByb2JsZW1zCiAgIC0gSVB2NiBwYXRjaCBmb3IgRlRQIGFuZCBIVFRQIGFjY2Vzc2VzIChBcmNoYW5hIFNoYWgvV2lwcm8pCiAgIC0gV2luZG93cyBmaXhlcyAoSWdvciBabGF0a292aWMsICBFcmljIFp1cmNoZXIpLCB0aHJlYWRpbmcgKFN06XBoYW5lCiAgICBCaWRvdWwpCiAgIC0gQSBmZXcgVzNDIFNjaGVtYXMgU3RydWN0dXJlIGltcHJvdmVtZW50cwogICAtIFczQyBTY2hlbWFzIERhdGF0eXBlIGltcHJvdmVtZW50cyAoQ2hhcmxpZSBCb3plbWFuKQogICAtIFB5dGhvbiBiaW5kaW5ncyBmb3IgdGhyZWFkIGdsb2JhbHMgKFN06XBoYW5lIEJpZG91bCksIGFuZCBtZXRob2QvY2xhc3MKICAgIGdlbmVyYXRvciAKICAgLSBhZGRlZCAtLW5vbmV0IG9wdGlvbiB0byB4bWxsaW50IAogICAtIGRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnRzIChKb2huIEZsZWNrKQoKCjIuNS43OiBBcHIgMjUgMjAwMzoKICAgLSBSZWxheC1ORzogQ29tcGlsaW5nIHRvIHJlZ2V4cCBhbmQgc3RyZWFtaW5nIHZhbGlkYXRpb24gb24gdG9wIG9mIHRoZQogICAgeG1sUmVhZGVyIGludGVyZmFjZSwgYWRkZWQgdG8geG1sbGludCAtLXN0cmVhbQogICAtIHhtbFJlYWRlcjogRXhwYW5kKCksIE5leHQoKSBhbmQgRE9NIGFjY2VzcyBnbHVlLCBidWcgZml4ZXMKICAgLSBTdXBwb3J0IGZvciBsYXJnZSBmaWxlczogUkdOIHZhbGlkYXRlZCBhIDQuNUdCIGluc3RhbmNlCiAgIC0gVGhyZWFkIHN1cHBvcnQgaXMgbm93IGNvbmZpZ3VyZWQgaW4gYnkgZGVmYXVsdAogICAtIEZpeGVzOiB1cGRhdGUgb2YgdGhlIFRyaW8gY29kZSAoQmpvcm4pLCBXWFMgRGF0ZSBhbmQgRHVyYXRpb24gZml4ZXMKICAgIChDaGFybGVzIEJvemVtYW4pLCBEVEQgYW5kIG5hbWVzcGFjZXMgKEJyZW50IEhlbmRyaWNrcyksIEhUTUwgcHVzaCBwYXJzZXIKICAgIGFuZCB6ZXJvIGJ5dGVzIGhhbmRsaW5nLCBzb21lIG1pc3NpbmcgV2luZG93cyBmaWxlIHBhdGggY29udmVyc2lvbnMsCiAgICBiZWhhdmlvdXIgb2YgdGhlIHBhcnNlciBhbmQgdmFsaWRhdG9yIGluIHRoZSBwcmVzZW5jZSBvZiAib3V0IG9mIG1lbW9yeSIKICAgIGVycm9yIGNvbmRpdGlvbnMKICAgLSBleHRlbmRlZCB0aGUgQVBJIHRvIGJlIGFibGUgdG8gcGx1ZyBhIGdhcmJhZ2UgY29sbGVjdGluZyBtZW1vcnkKICAgIGFsbG9jYXRvciwgYWRkZWQgeG1sTWFsbG9jQXRvbWljKCkgYW5kIG1vZGlmaWVkIHRoZSBhbGxvY2F0aW9ucwogICAgYWNjb3JkaW5nbHkuCiAgIC0gUGVyZm9ybWFuY2VzOiByZW1vdmVkIGV4Y2Vzc2l2ZSBtYWxsb2MoKSBjYWxscywgc3BlZWR1cCBvZiB0aGUgcHVzaCBhbmQKICAgIHhtbFJlYWRlciBpbnRlcmZhY2VzLCByZW1vdmVkIGV4Y2Vzc2l2ZSB0aHJlYWQgbG9ja2luZwogICAtIERvY3VtZW50YXRpb246IG1hbiBwYWdlIChKb2huIEZsZWNrKSwgeG1sUmVhZGVyIGRvY3VtZW50YXRpb24KICAgLSBQeXRob246IGFkZGluZyBiaW5kaW5nIGZvciB4bWxDYXRhbG9nQWRkTG9jYWwgKEJyZW50IE0gSGVuZHJpY2tzKQoKCjIuNS42OiBBcHIgMSAyMDAzOgogICAtIEZpeGVkIFczQyBYTUwgU2NoZW1hcyBkYXRhdHlwZSwgc2hvdWxkIGJlIGNvbXBsaWFudCBub3cgZXhjZXB0IGZvcgogICAgYmluSGV4IGFuZCBiYXNlNjQgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgogICAtIGJ1ZyBmaXhlczogbm9uLUFTQ0lJIElEcywgSFRNTCBvdXRwdXQsIFhJbmNsdWRlIG9uIGxhcmdlIGRvY3MgYW5kCiAgICBYSW5jbHVkZSBlbnRpdGllcyBoYW5kbGluZywgZW5jb2RpbmcgZGV0ZWN0aW9uIG9uIGV4dGVybmFsIHN1YnNldHMsIFhNTAogICAgU2NoZW1hcyBidWdzIGFuZCBtZW1vcnkgbGVha3MsIEhUTUwgcGFyc2VyIChKYW1lcyBCdXJzYSkKICAgLSBwb3J0YWJpbGl0eTogcHl0aG9uL3RyaW8gKEFsYmVydCBDaGluKSwgU3VuIGNvbXBpbGVyIHdhcm5pbmdzCiAgIC0gZG9jdW1lbnRhdGlvbjogYWRkZWQgLS1yZWxheG5nIG9wdGlvbiB0byB4bWxsaW50IG1hbiBwYWdlIChKb2huKQogICAtIGltcHJvdmVkIGVycm9yIHJlcG9ydGluZzogeG1sOnNwYWNlLCBzdGFydC9lbmQgdGFnIG1pc21hdGNoZXMsIFJlbGF4IE5HCiAgICBlcnJvcnMKCgoyLjUuNTogTWFyIDI0IDIwMDM6CiAgIC0gTG90IG9mIGZpeGVzIG9uIHRoZSBSZWxheCBORyBpbXBsZW1lbnRhdGlvbi4gTW9yZSB0ZXN0aW5nIGluY2x1ZGluZwogICAgRG9jQm9vayBhbmQgVEVJIGV4YW1wbGVzLgogICAtIEluY3JlYXNlZCB0aGUgc3VwcG9ydCBmb3IgVzNDIFhNTCBTY2hlbWFzIGRhdGF0eXBlCiAgIC0gU2V2ZXJhbCBidWcgZml4ZXMgaW4gdGhlIFVSSSBoYW5kbGluZyBsYXllcgogICAtIEJ1ZyBmaXhlczogSFRNTCBwYXJzZXIsIHhtbFJlYWRlciwgRFREIHZhbGlkYXRpb24sIFhQYXRoLCBlbmNvZGluZwogICAgY29udmVyc2lvbiwgbGluZSBjb3VudGluZyBpbiB0aGUgcGFyc2VyLgogICAtIEFkZGVkIHN1cHBvcnQgZm9yICRYTUxMSU5UX0lOREVOVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgRlRQIGRlbGV0ZQogICAtIEZpeGVkIHRoZSBSUE0gc3BlYyBmaWxlIG5hbWUKCgoyLjUuNDogRmViIDIwIDIwMDM6CiAgIC0gQ29uZm9ybWFuY2UgdGVzdGluZyBhbmQgbG90IG9mIGZpeGVzIG9uIFJlbGF4IE5HIGFuZCBYSW5jbHVkZQogICAgaW1wbGVtZW50YXRpb24KICAgLSBJbXBsZW1lbnRhdGlvbiBvZiBYUG9pbnRlciBlbGVtZW50KCkgc2NoZW1lCiAgIC0gQnVnIGZpeGVzOiBYTUwgcGFyc2VyLCBYSW5jbHVkZSBlbnRpdGllcyBtZXJnZSwgdmFsaWRpdHkgY2hlY2tpbmcgb24KICAgIG5hbWVzcGFjZXMsCiAgICAyIHNlcmlhbGl6YXRpb24gYnVncywgbm9kZSBpbmZvIGdlbmVyYXRpb24gcHJvYmxlbXMsIGEgRFREIHJlZ2V4cAogICAgZ2VuZXJhdGlvbiBwcm9ibGVtLgogIAogICAtIFBvcnRhYmlsaXR5OiB3aW5kb3dzIHVwZGF0ZXMgYW5kIHBhdGggY2Fub25pY2FsaXphdGlvbiAoSWdvcikKICAgLSBBIGZldyB0eXBvIGZpeGVzIChLamFydGFuIE1hcmFhcykKICAgLSBQeXRob24gYmluZGluZ3MgZ2VuZXJhdG9yIGZpeGVzIChTdGVwaGFuZSBCaWRvdWwpCgoKMi41LjM6IEZlYiAxMCAyMDAzOgogICAtIFJlbGF4TkcgYW5kIFhNTCBTY2hlbWFzIGRhdGF0eXBlcyBpbXByb3ZlbWVudHMsIGFuZCBhZGRlZCBhIGZpcnN0CiAgICB2ZXJzaW9uIG9mIFJlbGF4TkcgUHl0aG9uIGJpbmRpbmdzCiAgIC0gRml4ZXM6IFhMaW5rIChTZWFuIENoaXR0ZW5kZW4pLCBYSW5jbHVkZSAoU2VhbiBDaGl0dGVuZGVuKSwgQVBJIGZpeCBmb3IKICAgIHNlcmlhbGl6aW5nIG5hbWVzcGFjZSBub2RlcywgZW5jb2RpbmcgY29udmVyc2lvbiBidWcsIFhIVE1MMQogIHNlcmlhbGl6YXRpb24KICAgLSBQb3J0YWJpbGl0eSBmaXhlczogV2luZG93cyAoSWdvciksIEFNRCA2NGJpdHMgUlBNIHNwZWMgZmlsZQoKCjIuNS4yOiBGZWIgNSAyMDAzOgogICAtIEZpcnN0IGltcGxlbWVudGF0aW9uIG9mIFJlbGF4TkcsIGFkZGVkIC0tcmVsYXhuZyBmbGFnIHRvIHhtbGxpbnQKICAgLSBTY2hlbWFzIHN1cHBvcnQgbm93IGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQuCiAgIC0gQnVnIGZpeGVzOiBEVEQgdmFsaWRhdGlvbiwgbmFtZXNwYWNlIGNoZWNraW5nLCBYSW5jbHVkZSBhbmQgZW50aXRpZXMsCiAgICBkZWxlZ2F0ZVVSSSBpbiBYTUwgQ2F0YWxvZ3MsIEhUTUwgcGFyc2VyLCBYTUwgcmVhZGVyIChTdOlwaGFuZSBCaWRvdWwpLAogICAgWFBhdGggcGFyc2VyIGFuZCBldmFsdWF0aW9uLCAgVVRGOFRvVVRGOCBzZXJpYWxpemF0aW9uLCBYTUwgcmVhZGVyIG1lbW9yeQogICAgY29uc3VtcHRpb24sIEhUTUwgcGFyc2VyLCBIVE1MIHNlcmlhbGl6YXRpb24gaW4gdGhlIHByZXNlbmNlIG9mCiAgbmFtZXNwYWNlcwogICAtIGFkZGVkIGFuIEhUTUwgQVBJIHRvIGNoZWNrIGVsZW1lbnRzIGFuZCBhdHRyaWJ1dGVzLgogICAtIERvY3VtZW50YXRpb24gaW1wcm92ZW1lbnQsIFBERiBmb3IgdGhlIHR1dG9yaWFsIChKb2huIEZsZWNrKSwgZG9jCiAgICBwYXRjaGVzIChTdGVmYW4gS29zdCkKICAgLSBQb3J0YWJpbGl0eSBmaXhlczogTmV0QlNEIChKdWxpbyBNZXJpbm8pLCBXaW5kb3dzIChJZ29yIFpsYXRrb3ZpYykKICAgLSBBZGRlZCBweXRob24gYmluZGluZ3MgZm9yIFhQb2ludGVyLCBjb250ZXh0dWFsIGVycm9yIHJlcG9ydGluZwogICAgKFN06XBoYW5lIEJpZG91bCkKICAgLSBVUkkvZmlsZSBlc2NhcGluZyBwcm9ibGVtcyAoU3RlZmFubyBaYWNjaGlyb2xpKQoKCjIuNS4xOiBKYW4gOCAyMDAzOgogICAtIEZpeGVzIGEgbWVtb3J5IGxlYWsgYW5kIGNvbmZpZ3VyYXRpb24vY29tcGlsYXRpb24gcHJvYmxlbXMgaW4gMi41LjAKICAgLSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgKEpvaG4pCiAgIC0gYSBjb3VwbGUgb2YgWG1sVGV4dFJlYWRlciBmaXhlcwoKCjIuNS4wOiBKYW4gNiAyMDAzOgogICAtIE5ldyBYbWx0ZXh0UmVhZGVyIGludGVyZmFjZSBiYXNlZCBvbiBDIwogICAgQVBJICh3aXRoIGhlbHAgb2YgU3TpcGhhbmUgQmlkb3VsKQogICAtIFdpbmRvd3M6IG1vcmUgZXhwb3J0cywgaW5jbHVkaW5nIHRoZSBuZXcgQVBJIChJZ29yKQogICAtIFhJbmNsdWRlIGZhbGxiYWNrIGZpeAogICAtIFB5dGhvbjogYmluZGluZ3MgZm9yIHRoZSBuZXcgQVBJLCBwYWNrYWdpbmcgKFN06XBoYW5lIEJpZG91bCksCiAgICBkcnZfbGlieG1sMi5weSBQeXRob24geG1sLnNheCBkcml2ZXIgKFN06XBoYW5lIEJpZG91bCksIGZpeGVzLCBzcGVlZHVwCiAgICBhbmQgaXRlcmF0b3JzIGZvciBQeXRob24tMi4yIChIYW5udSBLcm9zaW5nKQogICAtIFR1dG9yaWFsIGZpeGVzIChqb2huIEZsZWNrIGFuZCBOaXJhaiBUb2xpYSkgeG1sbGludCBtYW4gdXBkYXRlCiAgKEpvaG4pCiAgIC0gRml4IGFuIFhNTCBwYXJzZXIgYnVnIHJhaXNlZCBieSBWeWFjaGVzbGF2IFBpbmR5dXJhCiAgIC0gRml4IGZvciBWTVMgc2VyaWFsaXphdGlvbiAoTmlnZWwgSGFsbCkgYW5kIGNvbmZpZyAoQ3JhaWcgQS4gQmVycnkpCiAgIC0gRW50aXRpZXMgaGFuZGxpbmcgZml4ZXMKICAgLSBuZXcgQVBJIHRvIG9wdGlvbmFsbHkgdHJhY2sgbm9kZSBjcmVhdGlvbiBhbmQgZGVsZXRpb24gKEx1a2FzCiAgU2Nocm9lZGVyKQogICAtIEFkZGVkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBYbWx0ZXh0UmVhZGVyIGludGVyZmFjZSBhbmQgc29tZSBYTUwgZ3VpZGVsaW5lcwoKCjIuNC4zMDogRGVjIDEyIDIwMDI6CiAgIC0gMi40LjI5IGJyb2tlIHRoZSBweXRob24gYmluZGluZ3MsIHJlcmVsZWFzaW5nCiAgIC0gSW1wcm92ZW1lbnQvZml4ZXMgb2YgdGhlIFhNTCBBUEkgZ2VuZXJhdG9yLCBhbmQgY291cGxlIG9mIG1pbm9yIGNvZGUKICAgIGZpeGVzLgoKCjIuNC4yOTogRGVjIDExIDIwMDI6CiAgIC0gV2luZG93cyBmaXhlcyAoSWdvcik6IFdpbmRvd3MgQ0UgcG9ydCwgcHRocmVhZCBsaW5raW5nLCBweXRob24gYmluZGluZ3MKICAgIChTdOlwaGFuZSBCaWRvdWwpLCBNaW5ndyAoTWFnbnVzIEhlbm9jaCksIGFuZCBleHBvcnQgbGlzdCB1cGRhdGVzCiAgIC0gRml4IGZvciBwcmV2IGluIHB5dGhvbiBiaW5kaW5ncyAoRVJESSBHZXJnbykKICAgLSBGaXggZm9yIGVudGl0aWVzIGhhbmRsaW5nIChNYXJjdXMgQ2xhcmtlKQogICAtIFJlZmFjdG9yZWQgdGhlIFhNTCBhbmQgSFRNTCBkdW1wcyB0byBhIHNpbmdsZSBjb2RlIHBhdGgsIGZpeGVkIFhIVE1MMQogICAgZHVtcAogICAtIEZpeCBmb3IgVVJJIHBhcnNpbmcgd2hlbiBoYW5kbGluZyBVUk5zIHdpdGggZnJhZ21lbnQgaWRlbnRpZmllcnMKICAgLSBGaXggZm9yIEhUVFAgVVJMIGVzY2FwaW5nIHByb2JsZW0KICAgLSBhZGRlZCBhbiBUZXh0WG1sUmVhZGVyIChDIykgbGlrZSBBUEkgKHdvcmsgaW4gcHJvZ3Jlc3MpCiAgIC0gUmV3cm90ZSB0aGUgQVBJIGluIFhNTCBnZW5lcmF0aW9uIHNjcmlwdCwgaW5jbHVkZXMgYSBDIHBhcnNlciBhbmQgc2F2ZXMKICAgIG1vcmUgaW5mb3JtYXRpb25zIG5lZWRlZCBmb3IgQyMgYmluZGluZ3MKCgoyLjQuMjg6IE5vdiAyMiAyMDAyOgogICAtIGEgY291cGxlIG9mIHB5dGhvbiBiaW5kaW5nIGZpeGVzCiAgIC0gMiBidWcgZml4ZXMgaW4gdGhlIFhNTCBwdXNoIHBhcnNlcgogICAtIHBvdGVudGlhbCBtZW1vcnkgbGVhayByZW1vdmVkIChNYXJ0aW4gU3RvaWxvdikKICAgLSBmaXggdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZm9yIFVuaXggKERpbWl0cmkgUGFwYWRvcG91bG9zKQogICAtIGFkZGVkIGVuY29kaW5nIHN1cHBvcnQgZm9yIFhJbmNsdWRlIHBhcnNlPSJ0ZXh0IgogICAtIGF1dG9kZXRlY3Rpb24gb2YgWEhUTUwxIGFuZCBzcGVjaWZpYyBzZXJpYWxpemF0aW9uIHJ1bGVzIGFkZGVkCiAgIC0gbmFzdHkgdGhyZWFkaW5nIGJ1ZyBmaXhlZCAoV2lsbGlhbSBCcmFjaykKCgoyLjQuMjc6IE5vdiAxNyAyMDAyOgogICAtIGZpeGVzIGZvciB0aGUgUHl0aG9uIGJpbmRpbmdzCiAgIC0gYSBudW1iZXIgb2YgYnVnIGZpeGVzOiBTR01MIGNhdGFsb2dzLCB4bWxQYXJzZUJhbGFuY2VkQ2h1bmtNZW1vcnkoKSwKICAgIEhUTUwgcGFyc2VyLCAgU2NoZW1hcyAoQ2hhcmxlcyBCb3plbWFuKSwgZG9jdW1lbnQgZnJhZ21lbnQgc3VwcG9ydAogICAgKENocmlzdGlhbiBHbGFobiksIHhtbFJlY29uY2lsaWF0ZU5zIChCcmlhbiBTdGFmZm9yZCksIFhQb2ludGVyLAogICAgeG1sRnJlZU5vZGUoKSwgeG1sU0FYUGFyc2VNZW1vcnkgKFBldGVyIEpvbmVzKSwgeG1sR2V0Tm9kZVBhdGggKFBldHIKICAgIFBhamFzKSwgZW50aXRpZXMgcHJvY2Vzc2luZwogICAtIGFkZGVkIGdyZXAgdG8geG1sbGludCAtLXNoZWxsCiAgIC0gVk1TIHVwZGF0ZSBwYXRjaCBmcm9tIENyYWlnIEEuIEJlcnJ5CiAgIC0gY2xlYW51cCBvZiB0aGUgV2luZG93cyBidWlsZCB3aXRoIHN1cHBvcnQgZm9yIG1vcmUgY29tcGlsZXJzIChJZ29yKSwKICAgIGJldHRlciB0aHJlYWQgc3VwcG9ydCBvbiBXaW5kb3dzCiAgIC0gY2xlYW51cCBvZiBVbml4IE1ha2VmaWxlcyBhbmQgc3BlYyBmaWxlCiAgIC0gSW1wcm92ZW1lbnRzIHRvIHRoZSBkb2N1bWVudGF0aW9uIChKb2huIEZsZWNrKQoKCjIuNC4yNjogT2N0IDE4IDIwMDI6CiAgIC0gUGF0Y2hlcyBmb3IgV2luZG93cyBDRSBwb3J0LCBpbXByb3ZlbWVudHMgb24gV2luZG93cyBwYXRocyBoYW5kbGluZwogICAtIEZpeGVzIHRvIHRoZSB2YWxpZGF0aW9uICBjb2RlIChEVEQgYW5kIFNjaGVtYXMpLCB4bWxOb2RlR2V0UGF0aCgpICwKICAgIEhUTUwgc2VyaWFsaXphdGlvbiwgTmFtZXNwYWNlIGNvbXBsaWFuY2UsICBhbmQgYSBudW1iZXIgb2Ygc21hbGwKICBwcm9ibGVtcwoKCjIuNC4yNTogU2VwIDI2IDIwMDI6CiAgIC0gQSBudW1iZXIgb2YgYnVnIGZpeGVzOiBYUGF0aCwgdmFsaWRhdGlvbiwgUHl0aG9uIGJpbmRpbmdzLCBET00gYW5kCiAgICB0cmVlLCB4bWxJL08sICBIdG1sCiAgIC0gU2VyaW91cyByZXdyaXRlIG9mIFhJbmNsdWRlCiAgIC0gTWFkZSBYTUwgU2NoZW1hcyByZWdleHAgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCBhbmQgQVBJcywgc21hbGwgZml4CiAgICBhbmQgaW1wcm92ZW1lbnQgb2YgdGhlIHJlZ2V4cCBjb3JlCiAgIC0gQ2hhbmdlZCB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIHJldXNlIFhNTCBTY2hlbWFzIHJlZ2V4cCBBUElzCiAgIC0gQmV0dGVyIGhhbmRsaW5nIG9mIFdpbmRvd3MgZmlsZSBwYXRocywgaW1wcm92ZW1lbnQgb2YgTWFrZWZpbGVzIChJZ29yLAogICAgRGFuaWVsIEdlaHJpZ2VyLCBNYXJrIFZha29jKQogICAtIEltcHJvdmVkIHRoZSBweXRob24gSS9PIGJpbmRpbmdzLCB0aGUgdGVzdHMsIGFkZGVkIHJlc29sdmVyIGFuZCByZWdleHAKICAgIEFQSXMKICAgLSBOZXcgbG9nb3MgZnJvbSBNYXJjIExpeWFuYWdlCiAgIC0gVHV0b3JpYWwgaW1wcm92ZW1lbnRzOiBKb2huIEZsZWNrLCBDaHJpc3RvcGhlciBIYXJyaXMKICAgLSBNYWtlZmlsZTogRml4ZXMgZm9yIEFNRCB4ODZfNjQgKE1hbmRyYWtlKSwgREVTVERJUiAoQ2hyaXN0b3BoZQogIE1lcmxldCkKICAgLSByZW1vdmFsIG9mIGFsbCBzdGRlcnIvcGVycm9yIHVzZSBmb3IgZXJyb3IgcmVwb3J0aW5nCiAgIC0gQmV0dGVyIGVycm9yIHJlcG9ydGluZzogWFBhdGggYW5kIERURCB2YWxpZGF0aW9uCiAgIC0gdXBkYXRlIG9mIHRoZSB0cmlvIHBvcnRhYmlsaXR5IGxheWVyIChCam9ybiBSZWVzZSkKCjIuNC4yNDogQXVnIDIyIDIwMDIgICAtIFhQYXRoIGZpeGVzIChXaWxsaWFtKSwgeGY6ZXNjYXBlLXVyaSgpIChXZXNsZXkgVGVycHN0cmEpCiAgIC0gUHl0aG9uIGJpbmRpbmcgZml4ZXM6IG1ha2VmaWxlcyAoV2lsbGlhbSksIGdlbmVyYXRvciwgcnBtIGJ1aWxkLCB4ODYtNjQKICAgIChmY3JvemF0KQogICAtIEhUTUwgPHN0eWxlPiBhbmQgYm9vbGVhbiBhdHRyaWJ1dGVzIHNlcmlhbGl6ZXIgZml4ZXMKICAgLSBDMTROIGltcHJvdmVtZW50cyBieSBBbGVrc2V5CiAgIC0gZG9jIGNsZWFudXBzOiBSaWNrIEpvbmVzCiAgIC0gV2luZG93cyBjb21waWxlciBtYWtlZmlsZSB1cGRhdGVzOiBJZ29yIGFuZCBFbGl6YWJldGggQmFyaGFtCiAgIC0gWEluY2x1ZGU6IGltcGxlbWVudGF0aW9uIG9mIGZhbGxiYWNrIGFuZCB4bWw6YmFzZSBmaXh1cCBhZGRlZAoKCjIuNC4yMzogSnVseSA2IDIwMDI6CiAgIC0gcGVyZm9ybWFuY2VzIHBhdGNoZXM6IFBldGVyIEphY29iaQogICAtIGMxNG4gZml4ZXMsIHRlc3RzdWl0ZSBhbmQgcGVyZm9ybWFuY2VzOiBBbGVrc2V5IFNhbmluCiAgIC0gYWRkZWQgeG1sRG9jRm9ybWF0RHVtcDogQ2hlbWEgQ2Vsb3JpbwogICAtIG5ldyB0dXRvcmlhbDogSm9obiBGbGVjawogICAtIG5ldyBoYXNoIGZ1bmN0aW9ucyBhbmQgcGVyZm9ybWFuY2VzOiBTYW5kZXIgVmVzaWssIHBvcnRhYmlsaXR5IGZpeCBmcm9tCiAgICBQZXRlciBKYWNvYmkKICAgLSBhIG51bWJlciBvZiBidWcgZml4ZXM6IFhQYXRoIChXaWxsaWFtIEJyYWNrLCBSaWNoYXJkIEppbmtzKSwgWE1MIGFuZAogICAgSFRNTCBwYXJzZXJzLCBJRCBsb29rdXAgZnVuY3Rpb24KICAgLSByZW1vdmFsIG9mIGFsbCByZW1haW5pbmcgc3ByaW50ZjogQWxla3NleSBTYW5pbgoKCjIuNC4yMjogTWF5IDI3IDIwMDI6CiAgIC0gYSBudW1iZXIgb2YgYnVnIGZpeGVzOiBjb25maWd1cmUgc2NyaXB0cywgYmFzZSBoYW5kbGluZywgcGFyc2VyLCBtZW1vcnkKICAgIHVzYWdlLCBIVE1MIHBhcnNlciwgWFBhdGgsIGRvY3VtZW50YXRpb24gKENocmlzdGlhbiBDb3JuZWxzc2VuKSwKICAgIGluZGVudGF0aW9uLCBVUkkgcGFyc2luZwogICAtIE9wdGltaXphdGlvbnMgZm9yIFhNTFNlYywgZml4aW5nIGFuZCBtYWtpbmcgcHVibGljIHNvbWUgb2YgdGhlIG5ldHdvcmsKICAgIHByb3RvY29sIGhhbmRsZXJzIChBbGVrc2V5KQogICAtIHBlcmZvcm1hbmNlIHBhdGNoIGZyb20gR2FyeSBQZW5uaW5ndG9uCiAgIC0gQ2hhcmxlcyBCb3plbWFuIHByb3ZpZGVkIGRhdGUgYW5kIHRpbWUgc3VwcG9ydCBmb3IgWE1MIFNjaGVtYXMKICBkYXRhdHlwZXMKCgoyLjQuMjE6IEFwciAyOSAyMDAyOgpUaGlzIHJlbGVhc2UgaXMgYm90aCBhIGJ1ZyBmaXggcmVsZWFzZSBhbmQgYWxzbyBjb250YWlucyB0aGUgZWFybHkgWE1MClNjaGVtYXMgc3RydWN0dXJlcyBhdCAKaHR0cDovL3d3dy53My5vcmcvVFIveG1sc2NoZW1hLTEvCiBhbmQgZGF0YXR5cGVzIGF0IApodHRwOi8vd3d3LnczLm9yZy9UUi94bWxzY2hlbWEtMi8KIGNvZGUsIGJld2FyZSwgYWxsCmludGVyZmFjZXMgYXJlIGxpa2VseSB0byBjaGFuZ2UsIHRoZXJlIGlzIGh1Z2UgaG9sZXMsIGl0IGlzIGNsZWFybHkgYSB3b3JrIGluCnByb2dyZXNzIGFuZCBkb24ndCBldmVuIHRoaW5rIG9mIHB1dHRpbmcgdGhpcyBjb2RlIGluIGEgcHJvZHVjdGlvbiBzeXN0ZW0sCml0J3MgYWN0dWFsbHkgbm90IGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQuIFRoZSByZWFsIGZpeGVzIGFyZTogICAtIGEgY291cGxlIG9mIGJ1Z3Mgb3IgbGltaXRhdGlvbnMgaW50cm9kdWNlZCBpbiAyLjQuMjAKICAgLSBwYXRjaGVzIGZvciBCb3JsYW5kIEMrKyBhbmQgTVNDIGJ5IElnb3IKICAgLSBzb21lIGZpeGVzIG9uIFhQYXRoIHN0cmluZ3MgYW5kIGNvbmZvcm1hbmNlIHBhdGNoZXMgYnkgUmljaGFyZAogIEppbmtzCiAgIC0gcGF0Y2ggZnJvbSBBbGVrc2V5IGZvciB0aGUgRXhjQzE0TiBzcGVjaWZpY2F0aW9uCiAgIC0gT1NGLzEgYnVnIGZpeCBieSBCam9ybgoKCjIuNC4yMDogQXByIDE1IDIwMDI6CiAgIC0gYnVnIGZpeGVzOiBmaWxlIGRlc2NyaXB0b3IgbGVhaywgWFBhdGgsIEhUTUwgb3V0cHV0LCBEVEQgdmFsaWRhdGlvbgogICAtIFhQYXRoIGNvbmZvcm1hbmNlIHRlc3RpbmcgYnkgUmljaGFyZCBKaW5rcwogICAtIFBvcnRhYmlsaXR5IGZpeGVzOiBTb2xhcmlzLCBNUEUvaVgsIFdpbmRvd3MsIE9TRi8xLCBweXRob24gYmluZGluZ3MsCiAgICBsaWJ4bWwubTQKCgoyLjQuMTk6IE1hciAyNSAyMDAyOgogICAtIGJ1ZyBmaXhlczogaGFsZiBhIGRvemVuIFhQYXRoIGJ1Z3MsIFZhbGlkYXRpb24sIElTTy1MYXRpbiB0byBVVEY4CiAgICBlbmNvZGVyCiAgIC0gcG9ydGFiaWxpdHkgZml4ZXMgaW4gdGhlIEhUVFAgY29kZQogICAtIG1lbW9yeSBhbGxvY2F0aW9uIGNoZWNrcyB1c2luZyB2YWxncmluZCwgYW5kIHByb2ZpbGluZyB0ZXN0cwogICAtIHJldmFtcCBvZiB0aGUgV2luZG93cyBidWlsZCBhbmQgTWFrZWZpbGVzCgoKMi40LjE4OiBNYXIgMTggMjAwMjoKICAgLSBidWcgZml4ZXM6IHRyZWUsIFNBWCwgY2Fub25pY2FsaXphdGlvbiwgdmFsaWRhdGlvbiwgcG9ydGFiaWxpdHksCiAgWFBhdGgKICAgLSByZW1vdmVkIHRoZSAtLXdpdGgtYnVmZmVyIG9wdGlvbiBpdCB3YXMgYmVjb21pbmcgdW5tYWludGFpbmFibGUKICAgLSBzZXJpb3VzIGNsZWFudXAgb2YgdGhlIFB5dGhvbiBtYWtlZmlsZXMKICAgLSBzcGVlZHVwIHBhdGNoIHRvIFhQYXRoIHZlcnkgZWZmZWN0aXZlIGZvciBEb2NCb29rIHN0eWxlc2hlZXRzCiAgIC0gRml4ZXMgZm9yIFdpbmRvd3MgYnVpbGQsIGNsZWFudXAgb2YgdGhlIGRvY3VtZW50YXRpb24KCgoyLjQuMTc6IE1hciA4IDIwMDI6CiAgIC0gYSBsb3Qgb2YgYnVnIGZpeGVzLCBpbmNsdWRpbmcgIm5hbWVzcGFjZSBub2RlcyBoYXZlIG5vIHBhcmVudHMgaW4KICBYUGF0aCIKICAgLSBmaXhlZC9pbXByb3ZlZCB0aGUgUHl0aG9uIHdyYXBwZXJzLCBhZGRlZCBtb3JlIGV4YW1wbGVzIGFuZCBtb3JlCiAgICByZWdyZXNzaW9uIHRlc3RzLCBYUGF0aCBleHRlbnNpb24gZnVuY3Rpb25zIGNhbiBub3cgcmV0dXJuIG5vZGUtc2V0cwogICAtIGFkZGVkIHRoZSBYTUwgQ2Fub25pY2FsaXphdGlvbiBzdXBwb3J0IGZyb20gQWxla3NleSBTYW5pbgoKCjIuNC4xNjogRmViIDIwIDIwMDI6CiAgIC0gYSBsb3Qgb2YgYnVnIGZpeGVzLCBtb3N0IG9mIHRoZW0gd2VyZSB0cmlnZ2VyZWQgYnkgdGhlIFhNTCBUZXN0c3VpdGUKICAgIGZyb20gT0FTSVMgYW5kIFczQy4gQ29tcGxpYW5jZSBoYXMgYmVlbiBzaWduaWZpY2FudGx5IGltcHJvdmVkLgogICAtIGEgY291cGxlIG9mIHBvcnRhYmlsaXR5IGZpeGVzIHRvby4KCgoyLjQuMTU6IEZlYiAxMSAyMDAyOgogICAtIEZpeGVkIHRoZSBNYWtlZmlsZXMsIGVzcGVjaWFsbHkgdGhlIHB5dGhvbiBtb2R1bGUgb25lcwogICAtIEEgZmV3IGJ1ZyBmaXhlcyBhbmQgY2xlYW51cAogICAtIEluY2x1ZGVzIGNsZWFudXAKCgoyLjQuMTQ6IEZlYiA4IDIwMDI6CiAgIC0gQ2hhbmdlIG9mIExpY2Vuc2UgdG8gdGhlIE1JVAogICAgTGljZW5zZSBiYXNpY2FsbHkgZm9yIGludGVncmF0aW9uIGluIFhGcmVlODYgY29kZWJhc2UsIGFuZCByZW1vdmluZwogICAgY29uZnVzaW9uIGFyb3VuZCB0aGUgcHJldmlvdXMgZHVhbC1saWNlbnNpbmcKICAgLSBhZGRlZCBQeXRob24gYmluZGluZ3MsIGJldGEgc29mdHdhcmUgYnV0IHNob3VsZCBhbHJlYWR5IGJlIHF1aXRlCiAgICBjb21wbGV0ZQogICAtIGEgbGFyZ2UgbnVtYmVyIG9mIGZpeGVzIGFuZCBjbGVhbnVwcywgZXNwZWNpYWxseSBmb3IgYWxsIHRyZWUKICAgIG1hbmlwdWxhdGlvbnMKICAgLSBjbGVhbnVwIG9mIHRoZSBoZWFkZXJzLCBnZW5lcmF0aW9uIG9mIGEgcmVmZXJlbmNlIEFQSSBkZWZpbml0aW9uIGluCiAgWE1MCgoKMi40LjEzOiBKYW4gMTQgMjAwMjoKICAgLSB1cGRhdGUgb2YgdGhlIGRvY3VtZW50YXRpb246IEpvaG4gRmxlY2sgYW5kIENoYXJsaWUgQm96ZW1hbgogICAtIGNsZWFudXAgb2YgdGltaW5nIGNvZGUgZnJvbSBKdXN0aW4gRmxldGNoZXIKICAgLSBmaXhlcyBmb3IgV2luZG93cyBhbmQgaW5pdGlhbCB0aHJlYWQgc3VwcG9ydCBvbiBXaW4zMjogSWdvciBhbmQgU2VyZ3VlaQogICAgTmFyb2pueWkKICAgLSBDeWd3aW4gcGF0Y2ggZnJvbSBSb2JlcnQgQ29sbGlucwogICAtIGFkZGVkIHhtbFNldEVudGl0eVJlZmVyZW5jZUZ1bmMoKSBmb3IgS2VpdGggSXNkYWxlIHdvcmsgb24geHNsZGJnCgoKMi40LjEyOiBEZWMgNyAyMDAxOgogICAtIGEgZmV3IGJ1ZyBmaXhlczogdGhyZWFkIChHYXJ5IFBlbm5pbmd0b24pLCB4bWxsaW50IChHZWVydCBLbG9vc3Rlcm1hbiksCiAgICBYTUwgcGFyc2VyIChSb2JpbiBCZXJqb24pLCBYUG9pbnRlciAoRGFubnkgSmFtc2h5KSwgSS9PIGNsZWFudXBzCiAgKHJvYmVydCkKICAgLSBFcmljIExhdmlnbmUgY29udHJpYnV0ZWQgcHJvamVjdCBmaWxlcyBmb3IgTWFjT1MKICAgLSBzb21lIG1ha2VmaWxlcyBjbGVhbnVwcwoKCjIuNC4xMTogTm92IDI2IDIwMDE6CiAgIC0gZml4ZWQgYSBjb3VwbGUgb2YgZXJyb3JzIGluIHRoZSBpbmNsdWRlcywgZml4ZWQgYSBmZXcgYnVncywgc29tZSBjb2RlCiAgICBjbGVhbnVwcwogICAtIHhtbGxpbnQgbWFuIHBhZ2VzIGltcHJvdmVtZW50IGJ5IEhlaWtvIFJ1cHAKICAgLSB1cGRhdGVkIFZNUyBidWlsZCBpbnN0cnVjdGlvbnMgZnJvbSBKb2huIEEgRm90aGVyaW5naGFtCiAgIC0gV2luZG93cyBNYWtlZmlsZXMgdXBkYXRlcyBmcm9tIElnb3IKCgoyLjQuMTA6IE5vdiAxMCAyMDAxOgogICAtIFVSSSBlc2NhcGluZyBmaXggKEpvZWwgWW91bmcpCiAgIC0gYWRkZWQgeG1sR2V0Tm9kZVBhdGgoKSAoZm9yIHBhdGhzIG9yIFhQb2ludGVycyBnZW5lcmF0aW9uKQogICAtIEZpeGVzIG5hbWVzcGFjZSBoYW5kbGluZyBwcm9ibGVtcyB3aGVuIHVzaW5nIERURCBhbmQgdmFsaWRhdGlvbgogICAtIGltcHJvdmVtZW50cyBvbiB4bWxsaW50OiBNb3J1cyBXYWx0ZXIgcGF0Y2hlcyBmb3IgLS1mb3JtYXQgYW5kCiAgICAtLWVuY29kZSwgU3RlZmFuIEtvc3QgYW5kIEhlaWtvIFJ1cHAgaW1wcm92ZW1lbnRzIG9uIHRoZSAtLXNoZWxsCiAgIC0gZml4ZXMgZm9yIHhtbGNhdGFsb2cgbGlua2luZyBwb2ludGVkIGJ5IFdlaXFpIEdhbwogICAtIGZpeGVzIHRvIHRoZSBIVE1MIHBhcnNlcgoKCjIuNC45OiBOb3YgNiAyMDAxOgogICAtIGZpeGVzIG1vcmUgY2F0YWxvZyBidWdzCiAgIC0gYXZvaWQgYSBjb21waWxhdGlvbiBwcm9ibGVtLCBpbXByb3ZlIHhtbEdldExpbmVObygpCgoKMi40Ljg6IE5vdiA0IDIwMDE6CiAgIC0gZml4ZWQgU0dNTCBjYXRhbG9ncyBicm9rZW4gaW4gcHJldmlvdXMgcmVsZWFzZSwgdXBkYXRlZCB4bWxjYXRhbG9nCiAgdG9vbAogICAtIGZpeGVkIGEgY29tcGlsZSBlcnJvcnMgYW5kIHNvbWUgaW5jbHVkZXMgdHJvdWJsZXMuCgoKMi40Ljc6IE9jdCAzMCAyMDAxOgogICAtIGV4cG9ydGVkIHNvbWUgZGVidWdnaW5nIGludGVyZmFjZXMKICAgLSBzZXJpb3VzIHJld3JpdGUgb2YgdGhlIGNhdGFsb2cgY29kZQogICAtIGludGVncmF0ZWQgR2FyeSBQZW5uaW5ndG9uIHRocmVhZCBzYWZldHkgcGF0Y2gsIGFkZGVkIGNvbmZpZ3VyZSBvcHRpb24KICAgIGFuZCByZWdyZXNzaW9uIHRlc3RzCiAgIC0gcmVtb3ZlZCBhbiBIVE1MIHBhcnNlciBidWcKICAgLSBmaXhlZCBhIGNvdXBsZSBvZiBwb3RlbnRpYWxseSBzZXJpb3VzIHZhbGlkYXRpb24gYnVncwogICAtIGludGVncmF0ZWQgdGhlIFNHTUwgRG9jQm9vayBzdXBwb3J0IGluIHhtbGxpbnQKICAgLSBjaGFuZ2VkIHRoZSBuYW5vZnRwIGFub255bW91cyBsb2dpbiBwYXNzd2QKICAgLSBzb21lIEkvTyBjbGVhbnVwIGFuZCBhIGNvdXBsZSBvZiBpbnRlcmZhY2VzIGZvciBQZXJsIHdyYXBwZXIKICAgLSBnZW5lcmFsIGJ1ZyBmaXhlcwogICAtIHVwZGF0ZWQgeG1sbGludCBtYW4gcGFnZSBieSBKb2huIEZsZWNrCiAgIC0gc29tZSBWTVMgYW5kIFdpbmRvd3MgdXBkYXRlcwoKCjIuNC42OiBPY3QgMTAgMjAwMToKICAgLSBhZGRlZCBhbiB1cGRhdGVkIG1hbiBwYWdlcyBieSBKb2huIEZsZWNrCiAgIC0gcG9ydGFiaWxpdHkgYW5kIGNvbmZpZ3VyZSBmaXhlcwogICAtIGFuIGluZmluaXRlIGxvb3Agb24gdGhlIEhUTUwgcGFyc2VyIHdhcyByZW1vdmVkIChXaWxsaWFtKQogICAtIFdpbmRvd3MgbWFrZWZpbGUgcGF0Y2hlcyBmcm9tIElnb3IKICAgLSBmaXhlZCBoYWxmIGEgZG96ZW4gYnVncyByZXBvcnRlZCBmb3IgbGlieG1sIG9yIGxpYnhzbHQKICAgLSB1cGRhdGVkIHhtbGNhdGFsb2cgdG8gYmUgYWJsZSB0byBtb2RpZnkgU0dNTCBzdXBlciBjYXRhbG9ncwoKCjIuNC41OiBTZXAgMTQgMjAwMToKICAgLSBSZW1vdmUgYSBmZXcgYW5ub3lpbmcgYnVncyBpbiAyLjQuNAogICAtIGZvcmNlcyB0aGUgSFRNTCBzZXJpYWxpemVyIHRvIG91dHB1dCBkZWNpbWFsIGNoYXJyZWZzIHNpbmNlIHNvbWUKICAgIHZlcnNpb24gb2YgTmV0c2NhcGUgY2FuJ3QgaGFuZGxlIGhleGFkZWNpbWFsIG9uZXMKCgoxLjguMTY6IFNlcCAxNCAyMDAxOgogICAtIG1haW50ZW5hbmNlIHJlbGVhc2Ugb2YgdGhlIG9sZCBsaWJ4bWwxIGJyYW5jaCwgY291cGxlIG9mIGJ1ZyBhbmQKICAgIHBvcnRhYmlsaXR5IGZpeGVzCgoKMi40LjQ6IFNlcCAxMiAyMDAxOgogICAtIGFkZGVkIC0tY29udmVydCB0byB4bWxjYXRhbG9nLCBidWcgZml4ZXMgYW5kIGNsZWFudXBzIG9mIFhNTAogIENhdGFsb2cKICAgLSBhIGZldyBidWcgZml4ZXMgYW5kIHNvbWUgcG9ydGFiaWxpdHkgY2hhbmdlcwogICAtIHNvbWUgZG9jdW1lbnRhdGlvbiBjbGVhbnVwcwoKCjIuNC4zOiAgQXVnIDIzIDIwMDE6CiAgIC0gWE1MIENhdGFsb2cgc3VwcG9ydCBzZWUgdGhlIGRvYwogICAtIE5ldyBOYU4vSW5maW5pdHkgZmxvYXRpbmcgcG9pbnQgY29kZQogICAtIEEgZmV3IGJ1ZyBmaXhlcwoKCjIuNC4yOiAgQXVnIDE1IDIwMDE6CiAgIC0gYWRkcyB4bWxMaW5lTnVtYmVyc0RlZmF1bHQoKSB0byBjb250cm9sIGxpbmUgbnVtYmVyIGdlbmVyYXRpb24KICAgLSBsb3Qgb2YgYnVnIGZpeGVzCiAgIC0gdGhlIE1pY3Jvc29mdCBNU0MgcHJvamVjdHMgZmlsZXMgc2hvdWxkIG5vdyBiZSB1cCB0byBkYXRlCiAgIC0gaW5oZXJpdGFuY2Ugb2YgbmFtZXNwYWNlcyBmcm9tIERURCBkZWZhdWx0ZWQgYXR0cmlidXRlcwogICAtIGZpeGVzIGEgc2VyaW91cyBwb3RlbnRpYWwgc2VjdXJpdHkgYnVnCiAgIC0gYWRkZWQgYSAtLWZvcm1hdCBvcHRpb24gdG8geG1sbGludAoKCjIuNC4xOiAgSnVseSAyNCAyMDAxOgogICAtIHBvc3NpYmlsaXR5IHRvIGtlZXAgbGluZSBudW1iZXJzIGluIHRoZSB0cmVlCiAgIC0gc29tZSBjb21wdXRhdGlvbiBOYU4gZml4ZXMKICAgLSBleHRlbnNpb24gb2YgdGhlIFhQYXRoIEFQSQogICAtIGNsZWFudXAgZm9yIGFscGhhIGFuZCBpYTY0IHRhcmdldHMKICAgLSBwYXRjaCB0byBhbGxvdyBzYXZpbmcgdGhyb3VnaCBIVFRQIFBVVCBvciBQT1NUCgoKMi40LjA6IEp1bHkgMTAgMjAwMToKICAgLSBGaXhlZCBhIGZldyBidWdzIGluIFhQYXRoLCB2YWxpZGF0aW9uLCBhbmQgdHJlZSBoYW5kbGluZy4KICAgLSBGaXhlZCBYTUwgQmFzZSBpbXBsZW1lbnRhdGlvbiwgYWRkZWQgYSBjb3VwbGUgb2YgZXhhbXBsZXMgdG8gdGhlCiAgICByZWdyZXNzaW9uIHRlc3RzCiAgIC0gQSBiaXQgb2YgY2xlYW51cAoKCjIuMy4xNDogSnVseSA1IDIwMDE6CiAgIC0gZml4ZWQgc29tZSBlbnRpdGllcyBwcm9ibGVtcyBhbmQgcmVkdWNlIG1lbW9yeSByZXF1aXJlbWVudCB3aGVuCiAgICBzdWJzdGl0dXRpbmcgdGhlbQogICAtIGxvdHMgb2YgaW1wcm92ZW1lbnRzIGluIHRoZSBYUGF0aCBxdWVyaWVzIGludGVycHJldGVyIGNhbiBiZQogICAgc3Vic3RhbnRpYWxseSBmYXN0ZXIKICAgLSBNYWtlZmlsZXMgYW5kIGNvbmZpZ3VyZSBjbGVhbnVwcwogICAtIEZpeGVzIHRvIFhQYXRoIHZhcmlhYmxlIGV2YWwsIGFuZCBjb21wYXJlIG9uIGVtcHR5IG5vZGUgc2V0CiAgIC0gSFRNTCB0YWcgY2xvc2luZyBidWcgZml4ZWQKICAgLSBGaXhlZCBhbiBVUkkgcmVmZXJlbmNlIGNvbXB1dGF0aW9uIHByb2JsZW0gd2hlbiB2YWxpZGF0aW5nCgoKMi4zLjEzOiBKdW5lIDI4IDIwMDE6CiAgIC0gMi4zLjEyIGNvbmZpZ3VyZS5pbiB3YXMgYnJva2VuIGFzIHdlbGwgYXMgdGhlIHB1c2ggbW9kZSBYTUwgcGFyc2VyCiAgIC0gYSBmZXcgbW9yZSBmaXhlcyBmb3IgY29tcGlsYXRpb24gb24gV2luZG93cyBNU0MgYnkgWW9uIERlcmVrCgoKMS44LjE0OiBKdW5lIDI4IDIwMDE6CiAgIC0gWmJpZ25pZXcgQ2h5bGEgZ2F2ZSBhIHBhdGNoIHRvIHVzZSB0aGUgb2xkIFhNTCBwYXJzZXIgaW4gcHVzaCBtb2RlCiAgIC0gU21hbGwgTWFrZWZpbGUgZml4CgoKMi4zLjEyOiBKdW5lIDI2IDIwMDE6CiAgIC0gbG90cyBvZiBjbGVhbnVwCiAgIC0gYSBjb3VwbGUgb2YgdmFsaWRhdGlvbiBmaXgKICAgLSBmaXhlZCBsaW5lIG51bWJlciBjb3VudGluZwogICAtIGZpeGVkIHNlcmlvdXMgcHJvYmxlbXMgaW4gdGhlIFhJbmNsdWRlIHByb2Nlc3NpbmcKICAgLSBhZGRlZCBzdXBwb3J0IGZvciBVVEY4IEJPTSBhdCBiZWdpbm5pbmcgb2YgZW50aXRpZXMKICAgLSBmaXhlZCBhIHN0cmFuZ2UgZ2NjIG9wdGltaXplciBidWdzIGluIHhwYXRoIGhhbmRsaW5nIG9mIGZsb2F0LCBnY2MtMy4wCiAgICBtaXNjb21waWxlIHVyaS5jIChXaWxsaWFtKSwgVGhvbWFzIExlaXRuZXIgcHJvdmlkZWQgYSBmaXggZm9yIHRoZQogICAgb3B0aW1pemVyIG9uIFRydTY0CiAgIC0gaW5jb3Jwb3JhdGVkIFlvbiBEZXJlayBhbmQgSWdvciBabGF0a292aWMgIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMgZm9yCiAgICBjb21waWxhdGlvbiBvbiBXaW5kb3dzIE1TQwogICAtIHVwZGF0ZSBvZiBsaWJ4bWwtZG9jLmVsIChGZWxpeCBOYXR0ZXIpCiAgIC0gZml4ZWQgMiBidWdzIGluIFVSSSBub3JtYWxpemF0aW9uIGNvZGUKCgoyLjMuMTE6IEp1bmUgMTcgMjAwMToKICAgLSB1cGRhdGVzIHRvIHRyaW8sIE1ha2VmaWxlcyBhbmQgY29uZmlndXJlIHNob3VsZCBmaXggc29tZSBwb3J0YWJpbGl0eQogICAgcHJvYmxlbXMgKGFscGhhKQogICAtIGZpeGVkIHNvbWUgSFRNTCBzZXJpYWxpemF0aW9uIHByb2JsZW1zIChwcmUsIHNjcmlwdCwgYW5kIGJsb2NrL2lubGluZQogICAgaGFuZGxpbmcpLCBhZGRlZCBlbmNvZGluZyBhd2FyZSBBUElzLCBjbGVhbnVwIG9mIHRoaXMgY29kZQogICAtIGFkZGVkIHhtbEhhc05zUHJvcCgpCiAgIC0gaW1wbGVtZW50ZWQgYSBzcGVjaWZpYyBQSSBmb3IgZW5jb2Rpbmcgc3VwcG9ydCBpbiB0aGUgRG9jQm9vayBTR01MCiAgICBwYXJzZXIKICAgLSBzb21lIFhQYXRoIGZpeGVzICgtSW5maW5pdHksIC8gYXMgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgYW5kIG5hbWVzcGFjZXMKICAgIG5vZGUgc2VsZWN0aW9uKQogICAtIGZpeGVkIGEgcGVyZm9ybWFuY2UgcHJvYmxlbSBhbmQgYW4gZXJyb3IgaW4gdGhlIHZhbGlkYXRpb24gY29kZQogICAtIGZpeGVkIFhJbmNsdWRlIHJvdXRpbmUgdG8gaW1wbGVtZW50IHRoZSByZWN1cnNpdmUgYmVoYXZpb3VyCiAgIC0gZml4ZWQgeG1sRnJlZU5vZGUgcHJvYmxlbSB3aGVuIGxpYnhtbCBpcyBpbmNsdWRlZCBzdGF0aWNhbGx5IHR3aWNlCiAgIC0gYWRkZWQgLS12ZXJzaW9uIHRvIHhtbGxpbnQgZm9yIGJ1ZyByZXBvcnRzCgoKMi4zLjEwOiBKdW5lIDEgMjAwMToKICAgLSBmaXhlZCB0aGUgU0dNTCBjYXRhbG9nIHN1cHBvcnQKICAgLSBhIG51bWJlciBvZiByZXBvcnRlZCBidWdzIGdvdCBmaXhlZCwgaW4gWFBhdGgsIGljb252IGRldGVjdGlvbiwKICAgIFhJbmNsdWRlIHByb2Nlc3NpbmcKICAgLSBYUGF0aCBzdHJpbmcgZnVuY3Rpb24gc2hvdWxkIG5vdyBoYW5kbGUgdW5pY29kZSBjb3JyZWN0bHkKCgoyLjMuOTogTWF5IDE5IDIwMDE6CkxvdHMgb2YgYnVnZml4ZXMsIGFuZCBhZGRlZCBhIGJhc2ljIFNHTUwgY2F0YWxvZyBzdXBwb3J0OiAgIC0gSFRNTCBwdXNoIGJ1Z2ZpeCAjNTQ4OTEgYW5kIGFub3RoZXIgcGF0Y2ggZnJvbSBKb25hcyBCb3Jnc3Ry9m0KICAgLSBzb21lIHNlcmlvdXMgc3BlZWQgb3B0aW1pemF0aW9uIGFnYWluCiAgIC0gc29tZSBkb2N1bWVudGF0aW9uIGNsZWFudXBzCiAgIC0gdHJ5aW5nIHRvIGdldCBiZXR0ZXIgbGlua2luZyBvbiBTb2xhcmlzICgtUikKICAgLSBYUGF0aCBBUEkgY2xlYW51cCBmcm9tIFRob21hcyBCcm95ZXIKICAgLSBWYWxpZGF0aW9uIGJ1ZyBmaXhlZCAjNTQ2MzEsIGFkZGVkIGEgcGF0Y2ggZnJvbSBHYXJ5IFBlbm5pbmd0b24sIGZpeGVkCiAgICB4bWxWYWxpZEdldFZhbGlkRWxlbWVudHMoKQogICAtIEFkZGVkIGFuIElOU1RBTEwgZmlsZQogICAtIEF0dHJpYnV0ZSByZW1vdmFsIGFkZGVkIHRvIEFQSTogIzU0NDMzCiAgIC0gYWRkZWQgYSBiYXNpYyBzdXBwb3J0IGZvciBTR01MIGNhdGFsb2dzCiAgIC0gZml4ZWQgeG1sS2VlcEJsYW5rc0RlZmF1bHQoMCkgQVBJCiAgIC0gYnVnZml4IGluIHhtbE5vZGVHZXRMYW5nKCkKICAgLSBmaXhlZCBhIHNtYWxsIGNvbmZpZ3VyZSBwb3J0YWJpbGl0eSBwcm9ibGVtCiAgIC0gZml4ZWQgYW4gaW52ZXJzaW9uIG9mIFNZU1RFTSBhbmQgUFVCTElDIGlkZW50aWZpZXIgaW4gSFRNTCBkb2N1bWVudAoKCjEuOC4xMzogTWF5IDE0IDIwMDE6CiAgIC0gYnVnZml4ZXMgcmVsZWFzZSBvZiB0aGUgb2xkIGxpYnhtbDEgYnJhbmNoIHVzZWQgYnkgR25vbWUKCgoyLjMuODogTWF5IDMgMjAwMToKICAgLSBJbnRlZ3JhdGVkIGFuIFNHTUwgRG9jQm9vayBwYXJzZXIgZm9yIHRoZSBHbm9tZSBwcm9qZWN0CiAgIC0gRml4ZWQgYSBmZXcgdGhpbmdzIGluIHRoZSBIVE1MIHBhcnNlcgogICAtIEZpeGVkIHNvbWUgWFBhdGggYnVncyByYWlzZWQgYnkgWFNMVCB1c2UsIHRyaWVkIHRvIGZpeCB0aGUgZmxvYXRpbmcKICAgIHBvaW50IHBvcnRhYmlsaXR5IGlzc3VlCiAgIC0gU3BlZWQgaW1wcm92ZW1lbnQgKDhNL3MgZm9yIFNBWCwgM00vcyBmb3IgRE9NLCAxLjVNL3MgZm9yCiAgICBET00rdmFsaWRhdGlvbiB1c2luZyB0aGUgWE1MIFJFQyBhcyBpbnB1dCBhbmQgYSA3MDBNSHogY2VsZXJvbikuCiAgIC0gaW5jb3Jwb3JhdGVkIG1vcmUgV2luZG93cyBjbGVhbnVwCiAgIC0gYWRkZWQgeG1sU2F2ZUZvcm1hdEZpbGUoKQogICAtIGZpeGVkIHByb2JsZW1zIGluIGNvcHlpbmcgbm9kZXMgd2l0aCBlbnRpdGllcyByZWZlcmVuY2VzIChnZG9tZSkKICAgLSByZW1vdmVkIHNvbWUgdHJvdWJsZXMgc3Vycm91bmRpbmcgdGhlIG5ldyB2YWxpZGF0aW9uIG1vZHVsZQoKCjIuMy43OiBBcHJpbCAyMiAyMDAxOgogICAtIGxvdHMgb2Ygc21hbGwgYnVnIGZpeGVzLCBjb3JyZWN0ZWQgWFBvaW50ZXIKICAgLSBOb24gZGV0ZXJtaW5pc3RpYyBjb250ZW50IG1vZGVsIHZhbGlkYXRpb24gc3VwcG9ydAogICAtIGFkZGVkIHhtbERvY0NvcHlOb2RlIGZvciBnZG9tZTIKICAgLSByZXZhbXBlZCB0aGUgd2F5IHRoZSBIVE1MIHBhcnNlciBoYW5kbGVzIGVuZCBvZiB0YWdzCiAgIC0gWFBhdGg6IGNvcnJlY3Rpb25zIG9mIG5hbWVzcGFjZXMgc3VwcG9ydCBhbmQgbnVtYmVyIGZvcm1hdHRpbmcKICAgLSBXaW5kb3dzOiBJZ29yIFpsYXRrb3ZpYyBwYXRjaGVzIGZvciBNU0MgY29tcGlsYXRpb24KICAgLSBIVE1MIG91dHB1dCBmaXhlcyBmcm9tIFAgQyBDaG93IGFuZCBXaWxsaWFtIE0uIEJyYWNrCiAgIC0gSW1wcm92ZWQgdmFsaWRhdGlvbiBzcGVlZCBzZW5zaWJsZSBmb3IgRG9jQm9vawogICAtIGZpeGVkIGEgYmlnIGJ1ZyB3aXRoIElEIGRlY2xhcmVkIGluIGV4dGVybmFsIHBhcnNlZCBlbnRpdGllcwogICAtIHBvcnRhYmlsaXR5IGZpeGVzLCB1cGRhdGUgb2YgVHJpbyBmcm9tIEJqb3JuIFJlZXNlCgoKMi4zLjY6IEFwcmlsIDggMjAwMToKICAgLSBDb2RlIGNsZWFudXAgdXNpbmcgZXh0cmVtZSBnY2MgY29tcGlsZXIgd2FybmluZyBvcHRpb25zLCBmb3VuZCBhbmQKICAgIGNsZWFyZWQgaGFsZiBhIGRvemVuIHBvdGVudGlhbCBwcm9ibGVtCiAgIC0gdGhlIEVhemVsIHRlYW0gZm91bmQgYW4gWE1MIHBhcnNlciBidWcKICAgLSBjbGVhbmVkIHVwIHRoZSB1c2VyIG9mIHNvbWUgb2YgdGhlIHN0cmluZyBmb3JtYXR0aW5nIGZ1bmN0aW9uLiB1c2VkIHRoZQogICAgdHJpbyBsaWJyYXJ5IGNvZGUgdG8gcHJvdmlkZSB0aGUgb25lIG5lZWRlZCB3aGVuIHRoZSBwbGF0Zm9ybSBpcyBtaXNzaW5nCiAgICB0aGVtCiAgIC0geHBhdGg6IHJlbW92ZWQgYSBtZW1vcnkgbGVhayBhbmQgZml4ZWQgdGhlIHByZWRpY2F0ZSBldmFsdWF0aW9uCiAgICBwcm9ibGVtLCBleHRlbmRlZCB0aGUgdGVzdHN1aXRlIGFuZCBjbGVhbmVkIHVwIHRoZSByZXN1bHQuIFhQb2ludGVyIHNlZW1zCiAgICBicm9rZW4gLi4uCgoKMi4zLjU6IE1hciAyMyAyMDAxOgogICAtIEJpZ2dlc3QgY2hhbmdlIGlzIHNlcGFyYXRlIHBhcnNpbmcgYW5kIGV2YWx1YXRpb24gb2YgWFBhdGggZXhwcmVzc2lvbnMsCiAgICB0aGVyZSBpcyBzb21lIG5ldyBBUElzIGZvciB0aGlzIHRvbwogICAtIGluY2x1ZGVkIGEgbnVtYmVyIG9mIGJ1ZyBmaXhlcyhYTUwgcHVzaCBwYXJzZXIsIDUxODc2LCBub3RhdGlvbnMsCiAgNTIyOTkpCiAgIC0gRml4ZWQgc29tZSBwb3J0YWJpbGl0eSBpc3N1ZXMKCgoyLjMuNDogTWFyIDEwIDIwMDE6CiAgIC0gRml4ZWQgYnVncyAjNTE4NjAgYW5kICM1MTg2MQogICAtIEFkZGVkIGEgZ2xvYmFsIHZhcmlhYmxlIHhtbERlZmF1bHRCdWZmZXJTaXplIHRvIGFsbG93IGRlZmF1bHQgYnVmZmVyCiAgICBzaXplIHRvIGJlIGFwcGxpY2F0aW9uIHR1bmFibGUuCiAgIC0gU29tZSBjbGVhbnVwIGluIHRoZSB2YWxpZGF0aW9uIGNvZGUsIHN0aWxsIGEgYnVnIGxlZnQgYW5kIHRoaXMgcGFydAogICAgc2hvdWxkIHByb2JhYmx5IGJlIHJld3JpdHRlbiB0byBzdXBwb3J0IGFtYmlndW91cyBjb250ZW50IG1vZGVsIDotXAogICAtIEZpeCBhIGNvdXBsZSBvZiBzZXJpb3VzIGJ1Z3MgaW50cm9kdWNlZCBvciByYWlzZWQgYnkgY2hhbmdlcyBpbiAyLjMuMwogICAgcGFyc2VyCiAgIC0gRml4ZWQgYW5vdGhlciBidWcgaW4geG1sTm9kZUdldENvbnRlbnQoKQogICAtIEJqb3JuIGZpeGVkIFhQYXRoIG5vZGUgY29sbGVjdGlvbiBhbmQgTnVtYmVyIGZvcm1hdHRpbmcKICAgLSBGaXhlZCBhIGxvb3AgcmVwb3J0ZWQgaW4gdGhlIEhUTUwgcGFyc2luZwogICAtIGJsYW5rIHNwYWNlIGFyZSByZXBvcnRlZCBldmVuIGlmIHRoZSBEdGQgY29udGVudCBtb2RlbCBwcm92ZXMgdGhhdCB0aGV5CiAgICBhcmUgZm9ybWF0dGluZyBzcGFjZXMsIHRoaXMgaXMgZm9yIFhNTCBjb25mb3JtYW5jZQoKCjIuMy4zOiBNYXIgMSAyMDAxOgogICAtIHNtYWxsIGNoYW5nZSBpbiBYUGF0aCBmb3IgWFNMVAogICAtIGRvY3VtZW50YXRpb24gY2xlYW51cHMKICAgLSBmaXggaW4gdmFsaWRhdGlvbiBieSBHYXJ5IFBlbm5pbmd0b24KICAgLSBzZXJpb3VzIHBhcnNpbmcgcGVyZm9ybWFuY2VzIGltcHJvdmVtZW50cwoKCjIuMy4yOiBGZWIgMjQgMjAwMToKICAgLSBjaGFzaW5nIFhQYXRoIGJ1Z3MsIGZvdW5kIGEgYnVuY2gsIGNvbXBsZXRlZCBzb21lIFRPRE8KICAgLSBmaXhlZCBhIER0ZCBwYXJzaW5nIGJ1ZwogICAtIGZpeGVkIGEgYnVnIGluIHhtbE5vZGVHZXRDb250ZW50CiAgIC0gSUQvSURSRUYgc3VwcG9ydCBwYXJ0bHkgcmV3cml0dGVuIGJ5IEdhcnkgUGVubmluZ3RvbgoKCjIuMy4xOiBGZWIgMTUgMjAwMToKICAgLSBzb21lIFhQYXRoIGFuZCBIVE1MIGJ1ZyBmaXhlcyBmb3IgWFNMVAogICAtIHNtYWxsIGV4dGVuc2lvbiBvZiB0aGUgaGFzaCB0YWJsZSBpbnRlcmZhY2VzIGZvciBET00gZ2RvbWUyCiAgICBpbXBsZW1lbnRhdGlvbgogICAtIEEgZmV3IGJ1ZyBmaXhlcwoKCjIuMy4wOiBGZWIgOCAyMDAxICgyLjIuMTIgd2FzIG9uIDI1IEphbiBidXQgSSBkaWRuJ3Qga2VwdCB0cmFjayk6CiAgIC0gTG90cyBvZiBYUGF0aCBidWcgZml4ZXMKICAgLSBBZGQgYSBtb2RlIHdpdGggRHRkIGxvb2t1cCBidXQgd2l0aG91dCB2YWxpZGF0aW9uIGVycm9yIHJlcG9ydGluZyBmb3IKICAgIFhTTFQKICAgLSBBZGQgc3VwcG9ydCBmb3IgdGV4dCBub2RlIHdpdGhvdXQgZXNjYXBpbmcgKFhTTFQpCiAgIC0gYnVnIGZpeGVzIGZvciB4bWxDaGVja0ZpbGVuYW1lCiAgIC0gdmFsaWRhdGlvbiBjb2RlIGJ1ZyBmaXhlcyBmcm9tIEdhcnkgUGVubmluZ3RvbgogICAtIFBhdGNoIGZyb20gUGF1bCBELiBTbWl0aCBjb3JyZWN0aW5nIFVSSSBwYXRoIG5vcm1hbGl6YXRpb24KICAgLSBQYXRjaCB0byBhbGxvdyBzaW11bHRhbmVvdXMgaW5zdGFsbCBvZiBsaWJ4bWwtZGV2ZWwgYW5kCiAgbGlieG1sMi1kZXZlbAogICAtIHRoZSBleGFtcGxlIE1ha2VmaWxlIGlzIG5vdyBmaXhlZAogICAtIGFkZGVkIEhUTUwgdG8gdGhlIFJQTSBwYWNrYWdlcwogICAtIHRyZWUgY29weWluZyBidWdmaXhlcwogICAtIHVwZGF0ZXMgdG8gV2luZG93cyBtYWtlZmlsZXMKICAgLSBvcHRpbWl6YXRpb24gcGF0Y2ggZnJvbSBCam9ybiBSZWVzZQoKCjIuMi4xMTogSmFuIDQgMjAwMToKICAgLSBidW5jaCBvZiBidWcgZml4ZXMgKG1lbW9yeSBJL08sIHhwYXRoLCBmdHAvaHR0cCwgLi4uKQogICAtIGFkZGVkIGh0bWxIYW5kbGVPbWl0dGVkRWxlbSgpCiAgIC0gQXBwbGllZCBCam9ybiBSZWVzZSdzIElQVjYgZmlyc3QgcGF0Y2gKICAgLSBBcHBsaWVkIFBhdWwgRC4gU21pdGggcGF0Y2hlcyBmb3IgdmFsaWRhdGlvbiBvZiBYSW5jbHVkZSByZXN1bHRzCiAgIC0gYWRkZWQgWFBvaW50ZXIgeG1sbnMoKSBuZXcgc2NoZW1lIHN1cHBvcnQKCgoyLjIuMTA6IE5vdiAyNSAyMDAwOgogICAtIEZpeCB0aGUgV2luZG93cyBwcm9ibGVtcyBvZiAyLjIuOAogICAtIGludGVncmF0ZSBPcGVuVk1TIHBhdGNoZXMKICAgLSBiZXR0ZXIgaGFuZGxpbmcgb2Ygc29tZSBuYXN0eSBIVE1MIGlucHV0CiAgIC0gSW1wcm92ZWQgdGhlIFhQb2ludGVyIGltcGxlbWVudGF0aW9uCiAgIC0gaW50ZWdyYXRlIGEgbnVtYmVyIG9mIHByb3ZpZGVkIHBhdGNoZXMKCgoyLjIuOTogTm92IDI1IDIwMDA6CiAgIC0gZXJyb25lb3VzIHJlbGVhc2UgOi0oCgoKMi4yLjg6IE5vdiAxMyAyMDAwOgogICAtIEZpcnN0IHZlcnNpb24gb2YgWEluY2x1ZGUKICAgIHN1cHBvcnQKICAgLSBQYXRjaCBpbiBjb25kaXRpb25hbCBzZWN0aW9uIGhhbmRsaW5nCiAgIC0gdXBkYXRlZCBNUyBjb21waWxlciBwcm9qZWN0CiAgIC0gZml4ZWQgc29tZSBYUGF0aCBwcm9ibGVtcwogICAtIGFkZGVkIGFuIFVSSSBlc2NhcGluZyBmdW5jdGlvbgogICAtIHNvbWUgb3RoZXIgYnVnIGZpeGVzCgoKMi4yLjc6IE9jdCAzMSAyMDAwOgogICAtIGFkZGVkIG1lc3NhZ2UgcmVkaXJlY3Rpb24KICAgLSBYUGF0aCBpbXByb3ZlbWVudHMgKHRoYW5rcyBUT00gISkKICAgLSB4bWxJT1BhcnNlRFREKCkgYWRkZWQKICAgLSB2YXJpb3VzIHNtYWxsIGZpeGVzIGluIHRoZSBIVE1MLCBVUkksIEhUVFAgYW5kIFhQb2ludGVyIHN1cHBvcnQKICAgLSBzb21lIGNsZWFudXAgb2YgdGhlIE1ha2VmaWxlLCBhdXRvY29uZiBhbmQgdGhlIGRpc3RyaWJ1dGlvbiBjb250ZW50CgoKMi4yLjY6IE9jdCAyNSAyMDAwOjoKICAgLSBBZGRlZCBhbiBoYXNoIHRhYmxlIG1vZHVsZSwgbWlncmF0ZWQgYSBudW1iZXIgb2YgaW50ZXJuYWwgc3RydWN0dXJlIHRvCiAgICB0aG9zZQogICAtIEZpeGVkIGEgcG9zdGVyaW9yaSB2YWxpZGF0aW9uIHByb2JsZW1zCiAgIC0gSFRUUCBtb2R1bGUgY2xlYW51cHMKICAgLSBIVE1MIHBhcnNlciBpbXByb3ZlbWVudHMgKHRhZyBlcnJvcnMsIHNjcmlwdC9zdHlsZSBoYW5kbGluZywgYXR0cmlidXRlCiAgICBub3JtYWxpemF0aW9uKQogICAtIGNvYWxlc2Npbmcgb2YgYWRqYWNlbnQgdGV4dCBub2RlcwogICAtIGNvdXBsZSBvZiBYUGF0aCBidWcgZml4ZXMsIGV4cG9ydGVkIHRoZSBpbnRlcm5hbCBBUEkKCgoyLjIuNTogT2N0IDE1IDIwMDA6OgogICAtIFhQb2ludGVyIGltcGxlbWVudGF0aW9uIGFuZCB0ZXN0c3VpdGUKICAgLSBMb3Qgb2YgWFBhdGggZml4ZXMsIGFkZGVkIHZhcmlhYmxlIGFuZCBmdW5jdGlvbnMgcmVnaXN0cmF0aW9uLCBtb3JlCiAgICB0ZXN0cwogICAtIFBvcnRhYmlsaXR5IGZpeGVzLCBsb3RzIG9mIGVuaGFuY2VtZW50cyB0b3dhcmQgYW4gZWFzeSBXaW5kb3dzIGJ1aWxkCiAgICBhbmQgcmVsZWFzZQogICAtIExhdGUgdmFsaWRhdGlvbiBmaXhlcwogICAtIEludGVncmF0ZWQgYSBsb3Qgb2YgY29udHJpYnV0ZWQgcGF0Y2hlcwogICAtIGFkZGVkIG1lbW9yeSBtYW5hZ2VtZW50IGRvY3MKICAgLSBhIHBlcmZvcm1hbmNlIHByb2JsZW0gd2hlbiB1c2luZyBsYXJnZSBidWZmZXIgc2VlbXMgZml4ZWQKCgoyLjIuNDogT2N0IDEgMjAwMDo6CiAgIC0gbWFpbiBYUGF0aCBwcm9ibGVtIGZpeGVkCiAgIC0gSW50ZWdyYXRlZCBwb3J0YWJpbGl0eSBwYXRjaGVzIGZvciBXaW5kb3dzCiAgIC0gU2VyaW91cyBidWcgZml4ZXMgb24gdGhlIFVSSSBhbmQgSFRNTCBjb2RlCgoKMi4yLjM6IFNlcCAxNyAyMDAwOgogICAtIGJ1ZyBmaXhlcwogICAtIGNsZWFudXAgb2YgZW50aXR5IGhhbmRsaW5nIGNvZGUKICAgLSBvdmVyYWxsIHJldmlldyBvZiBhbGwgbG9vcHMgaW4gdGhlIHBhcnNlcnMsIGFsbCBzcHJpbnRmIHVzYWdlIGhhcyBiZWVuCiAgICBjaGVja2VkIHRvbwogICAtIEZhciBiZXR0ZXIgaGFuZGxpbmcgb2YgbGFyZ2VzIER0ZC4gVmFsaWRhdGluZyBhZ2FpbnN0IERvY0Jvb2sgWE1MIER0ZAogICAgd29ya3Mgc21vb3RobHkgbm93LgoKCjEuOC4xMDogU2VwIDYgMjAwMDoKICAgLSBidWcgZml4IHJlbGVhc2UgZm9yIHNvbWUgR25vbWUgcHJvamVjdHMKCgoyLjIuMjogQXVndXN0IDEyIDIwMDA6CiAgIC0gbW9zdGx5IGJ1ZyBmaXhlcwogICAtIHN0YXJ0ZWQgYWRkaW5nIHJvdXRpbmVzIHRvIGFjY2VzcyB4bWwgcGFyc2VyIGNvbnRleHQgb3B0aW9ucwoKCjIuMi4xOiBKdWx5IDIxIDIwMDA6CiAgIC0gYSBwdXJlbHkgYnVnIGZpeGVzIHJlbGVhc2UKICAgLSBmaXhlZCBhbiBlbmNvZGluZyBzdXBwb3J0IHByb2JsZW0gd2hlbiBwYXJzaW5nIGZyb20gYSBtZW1vcnkgYmxvY2sKICAgLSBmaXhlZCBhIERPQ1RZUEUgcGFyc2luZyBwcm9ibGVtCiAgIC0gcmVtb3ZlZCBhIGJ1ZyBpbiB0aGUgZnVuY3Rpb24gYWxsb3dpbmcgdG8gb3ZlcnJpZGUgdGhlIG1lbW9yeQogICAgYWxsb2NhdGlvbiByb3V0aW5lcwoKCjIuMi4wOiBKdWx5IDE0IDIwMDA6CiAgIC0gYXBwbGllZCBhIGxvdCBvZiBwb3J0YWJpbGl0eSBmaXhlcwogICAtIGJldHRlciBlbmNvZGluZyBzdXBwb3J0L2NsZWFudXAgYW5kIHNhdmluZyAoY29udGVudCBpcyBub3cgYWx3YXlzCiAgICBlbmNvZGVkIGluIFVURi04KQogICAtIHRoZSBIVE1MIHBhcnNlciBub3cgY29ycmVjdGx5IGhhbmRsZXMgZW5jb2RpbmdzCiAgIC0gYWRkZWQgeG1sSGFzUHJvcCgpCiAgIC0gZml4ZWQgYSBzZXJpb3VzIHByb2JsZW0gd2l0aCAmIzM4OwogICAtIHByb3BhZ2F0ZWQgdGhlIGZpeCB0byBGVFAgY2xpZW50CiAgIC0gY2xlYW51cCwgYnVnZml4ZXMsIGV0YyAuLi4KICAgLSBBZGRlZCBhIHBhZ2UgYWJvdXQgbGlieG1sIEludGVybmF0aW9uYWxpemF0aW9uCiAgICBzdXBwb3J0CgoKMS44Ljk6ICBKdWx5IDkgMjAwMDoKICAgLSBmaXhlZCB0aGUgc3BlYyB0aGUgUlBNcyBzaG91bGQgYmUgYmV0dGVyCiAgIC0gZml4ZWQgYSBzZXJpb3VzIGJ1ZyBpbiB0aGUgRlRQIGltcGxlbWVudGF0aW9uLCByZWxlYXNlZCAxLjguOSB0byBzb2x2ZQogICAgcnBtZmluZCB1c2VycyBwcm9ibGVtCgoKMi4xLjE6IEp1bHkgMSAyMDAwOgogICAtIGZpeGVzIGEgY291cGxlIG9mIGJ1Z3MgaW4gdGhlIDIuMS4wIHBhY2thZ2luZwogICAtIGltcHJvdmVtZW50cyBvbiB0aGUgSFRNTCBwYXJzZXIKCgoyLjEuMCBhbmQgMS44Ljg6IEp1bmUgMjkgMjAwMDoKICAgLSAxLjguOCBpcyBtb3N0bHkgYSBjb21tb2RpdHkgcGFja2FnZSBmb3IgdXBncmFkaW5nIHRvIGxpYnhtbDIgYWNjb3JkaW5nCiAgICB0byBuZXcgaW5zdHJ1Y3Rpb25zLiBJdCBmaXhlcyBhIG5hc3R5IHByb2JsZW0KICAgIGFib3V0ICYjMzg7IGNoYXJyZWYgcGFyc2luZwogICAtIDIuMS4wIGFsc28gZWFzZSB0aGUgdXBncmFkZSBmcm9tIGxpYnhtbCB2MSB0byB0aGUgcmVjZW50IHZlcnNpb24uIGl0CiAgICBhbHNvIGNvbnRhaW5zIG51bWVyb3VzIGZpeGVzIGFuZCBlbmhhbmNlbWVudHM6CiAgICBhZGRlZCB4bWxTdG9wUGFyc2VyKCkgdG8gc3RvcCBwYXJzaW5nCiAgICAgIGltcHJvdmVkIGEgbG90IHBhcnNpbmcgc3BlZWQgd2hlbiB0aGVyZSBpcyBsYXJnZSBDREFUQSBibG9jcwogICAgICBpbmNsdWRlcyBYUGF0aCBwYXRjaGVzIHByb3ZpZGVkIGJ5IFBpY2RhciBUZWNobm9sb2d5CiAgICAgIHRyaWVkIHRvIGZpeCBhcyBtdWNoIGFzIHBvc3NpYmxlIERURCB2YWxpZGF0aW9uIGFuZCBuYW1lc3BhY2UKICAgICAgICByZWxhdGVkIHByb2JsZW1zCiAgICAgIG91dHB1dCB0byBhIGdpdmVuIGVuY29kaW5nIGhhcyBiZWVuIGFkZGVkL3Rlc3RlZAogICAgICBsb3Qgb2YgdmFyaW91cyBmaXhlcwogICAgCiAgIC0gYWRkZWQgeG1sU3RvcFBhcnNlcigpIHRvIHN0b3AgcGFyc2luZwogICAtIGltcHJvdmVkIGEgbG90IHBhcnNpbmcgc3BlZWQgd2hlbiB0aGVyZSBpcyBsYXJnZSBDREFUQSBibG9jcwogICAtIGluY2x1ZGVzIFhQYXRoIHBhdGNoZXMgcHJvdmlkZWQgYnkgUGljZGFyIFRlY2hub2xvZ3kKICAgLSB0cmllZCB0byBmaXggYXMgbXVjaCBhcyBwb3NzaWJsZSBEVEQgdmFsaWRhdGlvbiBhbmQgbmFtZXNwYWNlCiAgICAgICAgcmVsYXRlZCBwcm9ibGVtcwogICAtIG91dHB1dCB0byBhIGdpdmVuIGVuY29kaW5nIGhhcyBiZWVuIGFkZGVkL3Rlc3RlZAogICAtIGxvdCBvZiB2YXJpb3VzIGZpeGVzCgoKMi4wLjA6IEFwciAxMiAyMDAwOgogICAtIEZpcnN0IHB1YmxpYyByZWxlYXNlIG9mIGxpYnhtbDIuIElmIHlvdSBhcmUgdXNpbmcgbGlieG1sLCBpdCdzIGEgZ29vZAogICAgaWRlYSB0byBjaGVjayB0aGUgMS54IHRvIDIueCB1cGdyYWRlIGluc3RydWN0aW9ucy4gTk9URTogd2hpbGUgaW5pdGlhbGx5CiAgICBzY2hlZHVsZWQgZm9yIEFwciAzIHRoZSByZWxlYXNlIG9jY3VycmVkIG9ubHkgb24gQXByIDEyIGR1ZSB0byBtYXNzaXZlCiAgICB3b3JrbG9hZC4KICAgLSBUaGUgaW5jbHVkZSBhcmUgbm93IGxvY2F0ZWQgdW5kZXIgJHByZWZpeC9pbmNsdWRlL2xpYnhtbCAoaW5zdGVhZCBvZgogICAgJHByZWZpeC9pbmNsdWRlL2dub21lLXhtbCksIHRoZXkgYWxzbyBhcmUgcmVmZXJlbmNlZCBieQogICAgI2luY2x1ZGUgPGxpYnhtbC94eHguaD4KICAgIGluc3RlYWQgb2YKICAgICNpbmNsdWRlICJ4eHguaCIKICAKICAgLSBhIG5ldyBVUkkgbW9kdWxlIGZvciBwYXJzaW5nIFVSSXMgYW5kIGZvbGxvd2luZyBzdHJpY3RseSBSRkMgMjM5NgogICAtIHRoZSBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyB1c2VkIGJ5IGxpYnhtbCBjYW4gbm93IGJlIG92ZXJsb2FkZWQKICAgIGR5bmFtaWNhbGx5IGJ5IHVzaW5nIHhtbE1lbVNldHVwKCkKICAgLSBUaGUgcHJldmlvdXNseSBDVlMgb25seSB0b29sIHRlc3RlciBoYXMgYmVlbiByZW5hbWVkCiAgICB4bWxsaW50IGFuZCBpcyBub3cgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIGxpYnhtbDIKICAgIHBhY2thZ2UKICAgLSBUaGUgSS9PIGludGVyZmFjZSBoYXMgYmVlbiByZXZhbXBlZC4gVGhlcmUgaXMgbm93IHdheXMgdG8gcGx1ZyBpbgogICAgc3BlY2lmaWMgSS9PIG1vZHVsZXMsIGVpdGhlciBhdCB0aGUgVVJJIHNjaGVtZSBkZXRlY3Rpb24gbGV2ZWwgdXNpbmcKICAgIHhtbFJlZ2lzdGVySW5wdXRDYWxsYmFja3MoKSAgb3IgYnkgcGFzc2luZyBJL08gZnVuY3Rpb25zIHdoZW4gY3JlYXRpbmcgYQogICAgcGFyc2VyIGNvbnRleHQgdXNpbmcgeG1sQ3JlYXRlSU9QYXJzZXJDdHh0KCkKICAgLSB0aGVyZSBpcyBhIEMgcHJlcHJvY2Vzc29yIG1hY3JvIExJQlhNTF9WRVJTSU9OIHByb3ZpZGluZyB0aGUgdmVyc2lvbgogICAgbnVtYmVyIG9mIHRoZSBsaWJ4bWwgbW9kdWxlIGluIHVzZQogICAtIGEgbnVtYmVyIG9mIG9wdGlvbmFsIGZlYXR1cmVzIG9mIGxpYnhtbCBjYW4gbm93IGJlIGV4Y2x1ZGVkIGF0CiAgICBjb25maWd1cmUgdGltZSAoRlRQL0hUVFAvSFRNTC9YUGF0aC9EZWJ1ZykKCgoyLjAuMGJldGE6IE1hciAxNCAyMDAwOgogICAtIFRoaXMgaXMgYSBmaXJzdCBCZXRhIHJlbGVhc2Ugb2YgbGlieG1sIHZlcnNpb24gMgogICAtIEl0J3MgYXZhaWxhYmxlIG9ubHkgZnJvbXhtbHNvZnQub3JnCiAgICBGVFAsIGl0J3MgcGFja2FnZWQgYXMgbGlieG1sMi0yLjAuMGJldGEgYW5kIGF2YWlsYWJsZSBhcyB0YXIgYW5kCiAgUlBNcwogICAtIFRoaXMgdmVyc2lvbiBpcyBub3cgdGhlIGhlYWQgaW4gdGhlIEdub21lIENWUyBiYXNlLCB0aGUgb2xkIG9uZSBpcwogICAgYXZhaWxhYmxlIHVuZGVyIHRoZSB0YWcgTElCX1hNTF8xX1gKICAgLSBUaGlzIGluY2x1ZGVzIGEgdmVyeSBsYXJnZSBzZXQgb2YgY2hhbmdlcy4gRnJvbSBhICBwcm9ncmFtbWF0aWMgcG9pbnQKICAgIG9mIHZpZXcgYXBwbGljYXRpb25zIHNob3VsZCBub3QgaGF2ZSB0byBiZSBtb2RpZmllZCB0b28gbXVjaCwgY2hlY2sgdGhlCiAgICB1cGdyYWRlIHBhZ2UKICAgLSBTb21lIGludGVyZmFjZXMgbWF5IGNoYW5nZXMgKGVzcGVjaWFsbHkgYSBiaXQgYWJvdXQgZW5jb2RpbmcpLgogICAtIHRoZSB1cGRhdGVzIGluY2x1ZGVzOgogICAgZml4IEkxOE4gc3VwcG9ydC4gSVNPLUxhdGluLXgvVVRGLTgvVVRGLTE2IChuZWFybHkpIHNlZW1zIGNvcnJlY3RseQogICAgICAgIGhhbmRsZWQgbm93CiAgICAgIEJldHRlciBoYW5kbGluZyBvZiBlbnRpdGllcywgZXNwZWNpYWxseSB3ZWxsLWZvcm1lZG5lc3MgY2hlY2tpbmcKICAgICAgICBhbmQgcHJvcGVyIFBFcmVmIGV4dGVuc2lvbnMgaW4gZXh0ZXJuYWwgc3Vic2V0cwogICAgICBEVEQgY29uZGl0aW9uYWwgc2VjdGlvbnMKICAgICAgVmFsaWRhdGlvbiBub3cgY29ycmVjdGx5IGhhbmRsZSBlbnRpdGllcyBjb250ZW50CiAgICAgIGNoYW5nZQogICAgICAgIHN0cnVjdHVyZXMgdG8gYWNjb21tb2RhdGUgRE9NCiAgICAKICAgLSBmaXggSTE4TiBzdXBwb3J0LiBJU08tTGF0aW4teC9VVEYtOC9VVEYtMTYgKG5lYXJseSkgc2VlbXMgY29ycmVjdGx5CiAgICAgICAgaGFuZGxlZCBub3cKICAgLSBCZXR0ZXIgaGFuZGxpbmcgb2YgZW50aXRpZXMsIGVzcGVjaWFsbHkgd2VsbC1mb3JtZWRuZXNzIGNoZWNraW5nCiAgICAgICAgYW5kIHByb3BlciBQRXJlZiBleHRlbnNpb25zIGluIGV4dGVybmFsIHN1YnNldHMKICAgLSBEVEQgY29uZGl0aW9uYWwgc2VjdGlvbnMKICAgLSBWYWxpZGF0aW9uIG5vdyBjb3JyZWN0bHkgaGFuZGxlIGVudGl0aWVzIGNvbnRlbnQKICAgLSBjaGFuZ2UKICAgICAgICBzdHJ1Y3R1cmVzIHRvIGFjY29tbW9kYXRlIERPTQogICAtIFNlcmlvdXMgcHJvZ3Jlc3Mgd2VyZSBtYWRlIHRvd2FyZCBjb21wbGlhbmNlLCBoZXJlIGFyZSB0aGUgcmVzdWx0IG9mIHRoZSB0ZXN0IGFnYWluc3QgdGhlCiAgICBPQVNJUyB0ZXN0c3VpdGUgKGV4Y2VwdCB0aGUgSmFwYW5lc2UgdGVzdHMgc2luY2UgSSBkb24ndCBzdXBwb3J0IHRoYXQKICAgIGVuY29kaW5nIHlldCkuIFRoaXMgVVJMIGlzIHJlYnVpbHQgZXZlcnkgY291cGxlIG9mIGhvdXJzIHVzaW5nIHRoZSBDVlMKICAgIGhlYWQgdmVyc2lvbi4KCgoxLjguNzogTWFyIDYgMjAwMDoKICAgLSBUaGlzIGlzIGEgYnVnIGZpeCByZWxlYXNlOgogICAtIEl0IGlzIHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIGlnbm9yYWJsZSBibGFua3MgaGV1cmlzdGljIHVzZWQgYnkKICAgIGxpYnhtbC0xLngsIGEgbmV3IGZ1bmN0aW9uICB4bWxLZWVwQmxhbmtzRGVmYXVsdCgwKSB3aWxsIGFsbG93IHRoaXMuIE5vdGUKICAgIHRoYXQgZm9yIGFkaGVyZW5jZSB0byBYTUwgc3BlYywgdGhpcyBiZWhhdmlvdXIgd2lsbCBiZSBkaXNhYmxlZCBieQogICAgZGVmYXVsdCBpbiAyLnggLiBUaGUgc2FtZSBmdW5jdGlvbiB3aWxsIGFsbG93IHRvIGtlZXAgY29tcGF0aWJpbGl0eSBmb3IKICAgIG9sZCBjb2RlLgogICAtIEJsYW5rcyBpbiA8YT4gIDwvYT4gY29uc3RydWN0cyBhcmUgbm90IGlnbm9yZWQgYW55bW9yZSwKICAgIGF2b2lkaW5nIGhldXJpc3RpYyBpcyByZWFsbHkgdGhlIFJpZ2h0IFdheSA6LVwKICAgLSBUaGUgdW5jaGVja2VkIHVzZSBvZiBzbnByaW50ZiB3aGljaCB3YXMgYnJlYWtpbmcgbGlieG1sLTEuOC42CiAgICBjb21waWxhdGlvbiBvbiBzb21lIHBsYXRmb3JtcyBoYXMgYmVlbiBmaXhlZAogICAtIG5hbm9mdHAuYyBuYW5vaHR0cC5jOiBGaXhlZCAnIycgYW5kICc/JyBzdHJpcHBpbmcgd2hlbiBwcm9jZXNzaW5nCiAgVVJJcwoKCjEuOC42OiBKYW4gMzEgMjAwMDoKICAgLSBhZGRlZCBhIG5hbm9GVFAgdHJhbnNwb3J0IG1vZHVsZSwgZGVidWdnZWQgdW50aWwgdGhlIG5ldyB2ZXJzaW9uIG9mIHJwbWZpbmQgY2FuIHVzZQogICAgaXQgd2l0aG91dCB0cm91YmxlcwoKCjEuOC41OiBKYW4gMjEgMjAwMDoKICAgLSBhZGRpbmcgQVBJcyB0byBwYXJzZSBhIHdlbGwgYmFsYW5jZWQgY2h1bmsgb2YgWE1MIChwcm9kdWN0aW9uIFs0M10gY29udGVudCBvZiB0aGUKICAgIFhNTCBzcGVjKQogICAtIGZpeGVkIGEgaGlkZW91cyBidWcgaW4geG1sR2V0UHJvcCBwb2ludGVkIGJ5IFJ1bmUuRGp1cmh1dXNAZmFzdC5ubwogICAtIEpvZHkgR29sZGJlcmcgPGpnb2xkYmVyZ0Bob21lLmNvbT4gcHJvdmlkZWQgYW5vdGhlciBwYXRjaCB0cnlpbmcKICAgIHRvIHNvbHZlIHRoZSB6bGliIGNoZWNrcyBwcm9ibGVtcwogICAtIFRoZSBjdXJyZW50IHN0YXRlIGluIGdub21lIENWUyBiYXNlIGlzIGV4cGVjdGVkIHRvIHNoaXAgYXMgMS44LjUgd2l0aAogICAgZ251bWVyaWMgc29vbgoKCjEuOC40OiBKYW4gMTMgMjAwMDoKICAgLSBidWcgZml4ZXMsIHJlaW50cm9kdWNlZCB4bWxOZXdHbG9iYWxOcygpLCBmaXhlZCB4bWxOZXdOcygpCiAgIC0gYWxsIGV4aXQoKSBjYWxsIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIGxpYnhtbAogICAtIGZpeGVkIGEgcHJvYmxlbSB3aXRoIElOQ0xVREVfV0lOU09DSyBvbiBXSU4zMiBwbGF0Zm9ybQogICAtIGFkZGVkIG5ld0RvY0ZyYWdtZW50KCkKCgoxLjguMzogSmFuIDUgMjAwMDoKICAgLSBhIFB1c2ggaW50ZXJmYWNlIGZvciB0aGUgWE1MIGFuZCBIVE1MIHBhcnNlcnMKICAgLSBhIHNoZWxsLWxpa2UgaW50ZXJmYWNlIHRvIHRoZSBkb2N1bWVudCB0cmVlICh0cnkgdGVzdGVyIC0tc2hlbGwgOi0pCiAgIC0gbG90cyBvZiBidWcgZml4ZXMgYW5kIGltcHJvdmVtZW50IGFkZGVkIG92ZXIgWE1hcyBob2xpZGF5cwogICAtIGZpeGVkIHRoZSBEVEQgcGFyc2luZyBjb2RlIHRvIHdvcmsgd2l0aCB0aGUgeGh0bWwgRFRECiAgIC0gYWRkZWQgeG1sUmVtb3ZlUHJvcCgpLCB4bWxSZW1vdmVJRCgpIGFuZCB4bWxSZW1vdmVSZWYoKQogICAtIEZpeGVkIGJ1Z3MgaW4geG1sTmV3TnMoKQogICAtIEV4dGVybmFsIGVudGl0eSBsb2FkaW5nIGNvZGUgaGFzIGJlZW4gcmV2YW1wZWQsIG5vdyBpdCB1c2VzCiAgICB4bWxMb2FkRXh0ZXJuYWxFbnRpdHkoKSwgc29tZSBmaXggb24gZW50aXRpZXMgcHJvY2Vzc2luZyB3ZXJlIGFkZGVkCiAgIC0gY2xlYW5lZCB1cCBXSU4zMiBpbmNsdWRlcyBvZiBzb2NrZXQgc3R1ZmYKCgoxLjguMjogRGVjIDIxIDE5OTk6CiAgIC0gSSBnb3QgYW5vdGhlciBwcm9ibGVtIHdpdGggaW5jbHVkZXMgYW5kIEMrKywgSSBob3BlIHRoaXMgaXNzdWUgaXMgZml4ZWQKICAgIGZvciBnb29kIHRoaXMgdGltZQogICAtIEFkZGVkIGEgZmV3IHRyZWUgbW9kaWZpY2F0aW9uIGZ1bmN0aW9uczogeG1sUmVwbGFjZU5vZGUsCiAgICB4bWxBZGRQcmV2U2libGluZywgeG1sQWRkTmV4dFNpYmxpbmcsIHhtbE5vZGVTZXROYW1lIGFuZAogICAgeG1sRG9jU2V0Um9vdEVsZW1lbnQKICAgLSBUcmllZCB0byBpbXByb3ZlIHRoZSBIVE1MIG91dHB1dCB3aXRoIGhlbHAgZnJvbSBDaHJpcyBMYWhleQoKCjEuOC4xOiBEZWMgMTggMTk5OToKICAgLSB2YXJpb3VzIHBhdGNoZXMgdG8gYXZvaWQgdHJvdWJsZXMgd2hlbiB1c2luZyBsaWJ4bWwgd2l0aCBDKysgY29tcGlsZXJzCiAgICB0aGUgIm5hbWVzcGFjZSIga2V5d29yZCBhbmQgQyBlc2NhcGluZyBpbiBpbmNsdWRlIGZpbGVzCiAgIC0gYSBwcm9ibGVtIGluIG9uZSBvZiB0aGUgY29yZSBtYWNyb3MgSVNfQ0hBUiB3YXMgY29ycmVjdGVkCiAgIC0gZml4ZWQgYSBidWcgaW50cm9kdWNlZCBpbiAxLjguMCBicmVha2luZyBkZWZhdWx0IG5hbWVzcGFjZSBwcm9jZXNzaW5nLAogICAgYW5kIG1vcmUgc3BlY2lmaWNhbGx5IHRoZSBEaWEgYXBwbGljYXRpb24KICAgLSBmaXhlZCBhIHBvc3RlcmlvcmkgdmFsaWRhdGlvbiAodmFsaWRhdGlvbiBhZnRlciBwYXJzaW5nLCBvciBieSB1c2luZyBhCiAgICBEdGQgbm90IHNwZWNpZmllZCBpbiB0aGUgb3JpZ2luYWwgZG9jdW1lbnQpCiAgIC0gZml4ZWQgYSBidWcgaW4KCgoxLjguMDogRGVjIDEyIDE5OTk6CiAgIC0gY2xlYW51cCwgZXNwZWNpYWxseSBtZW1vcnkgd2lzZQogICAtIHRoZSBwYXJzZXIgc2hvdWxkIGJlIG1vcmUgcmVsaWFibGUsIGVzcGVjaWFsbHkgdGhlIEhUTUwgb25lLCBpdCBzaG91bGQKICAgIG5vdCBjcmFzaCwgd2hhdGV2ZXIgdGhlIGlucHV0ICEKICAgLSBJbnRlZ3JhdGVkIHZhcmlvdXMgcGF0Y2hlcywgZXNwZWNpYWxseSBhIHNwZWVkdXAgaW1wcm92ZW1lbnQgZm9yIGxhcmdlCiAgICBkYXRhc2V0IGZyb20gQ2FybCBOeWdhcmQsCiAgICBjb25maWd1cmUgd2l0aCAtLXdpdGgtYnVmZmVycyB0byBlbmFibGUgdGhlbS4KICAgLSBhdHRyaWJ1dGUgbm9ybWFsaXphdGlvbiwgb29wcyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIGxvbmcgYWdvICEKICAgLSBhdHRyaWJ1dGVzIGRlZmF1bHRlZCBmcm9tIERURHMgc2hvdWxkIGJlIGF2YWlsYWJsZSwgeG1sU2V0UHJvcCgpIG5vdwogICAgZG9lcyBlbnRpdGllcyBlc2NhcGluZyBieSBkZWZhdWx0LgoKCjEuNy40OiBPY3QgMjUgMTk5OToKICAgLSBMb3RzIG9mIEhUTUwgaW1wcm92ZW1lbnQKICAgLSBGaXhlZCBzb21lIGVycm9ycyB3aGVuIHNhdmluZyBib3RoIFhNTCBhbmQgSFRNTAogICAtIE1vcmUgZXhhbXBsZXMsIHRoZSByZWdyZXNzaW9uIHRlc3RzIHNob3VsZCBub3cgbG9vayBjbGVhbgogICAtIEZpeGVkIGEgYnVnIHdpdGggY29udGlndW91cyBjaGFycmVmCgoKMS43LjM6IFNlcCAyOSAxOTk5OgogICAtIHBvcnRhYmlsaXR5IHByb2JsZW1zIGZpeGVkCiAgIC0gc25wcmludGYgd2FzIHVzZWQgdW5jb25kaXRpb25hbGx5LCBsZWFkaW5nIHRvIGxpbmsgcHJvYmxlbXMgb24gc3lzdGVtCiAgICB3ZXJlIGl0J3Mgbm90IGF2YWlsYWJsZSwgZml4ZWQKCgoxLjcuMTogU2VwIDI0IDE5OTk6CiAgIC0gVGhlIGJhc2ljIHR5cGUgZm9yIHN0cmluZ3MgbWFuaXB1bGF0ZWQgYnkgbGlieG1sIGhhcyBiZWVuIHJlbmFtZWQgaW4KICAgIDEuNy4xIGZyb20gQ0hBUiB0byB4bWxDaGFyLiBUaGUgcmVhc29uCiAgICBpcyB0aGF0IENIQVIgd2FzIGNvbmZsaWN0aW5nIHdpdGggYSBwcmVkZWZpbmVkIHR5cGUgb24gV2luZG93cy4gSG93ZXZlcgogICAgb24gbm9uIFdJTjMyIGVudmlyb25tZW50LCBjb21wYXRpYmlsaXR5IGlzIHByb3ZpZGVkIGJ5IHRoZSB3YXkgb2YgIGEKICAgICNkZWZpbmUgLgogICAtIENoYW5nZWQgYW5vdGhlciBlcnJvciA6IHRoZSB1c2Ugb2YgYSBzdHJ1Y3R1cmUgZmllbGQgY2FsbGVkIGVycm5vLCBhbmQKICAgIGxlYWRpbmcgdG8gdHJvdWJsZXMgb24gcGxhdGZvcm1zIHdoZXJlIGl0J3MgYSBtYWNybwoKCjEuNy4wOiBTZXAgMjMgMTk5OToKICAgLSBBZGRlZCB0aGUgYWJpbGl0eSB0byBmZXRjaCByZW1vdGUgRFREIG9yIHBhcnNlZCBlbnRpdGllcywgc2VlIHRoZSBuYW5vaHR0cCBtb2R1bGUuCiAgIC0gQWRkZWQgYW4gZXJybm8gdG8gcmVwb3J0IGVycm9ycyBieSBhbm90aGVyIG1lYW4gdGhhbiBhIHNpbXBsZSBwcmludGYKICAgIGxpa2UgY2FsbGJhY2sKICAgLSBGaW5pc2hlZCBJRC9JRFJFRiBzdXBwb3J0IGFuZCBjaGVja2luZyB3aGVuIHZhbGlkYXRpb24KICAgLSBTZXJpb3VzIG1lbW9yeSBsZWFrcyBmaXhlZCAodGhlcmUgaXMgbm93IGEgbWVtb3J5IHdyYXBwZXIgbW9kdWxlKQogICAtIEltcHJvdmVtZW50IG9mIFhQYXRoCiAgICBpbXBsZW1lbnRhdGlvbgogICAtIEFkZGVkIGFuIEhUTUwgcGFyc2VyIGZyb250LWVuZAoKRGFuaWVsIFZlaWxsYXJkIGF0IApidWdzLmh0bWwK