看板 FB_announce 關於我們 聯絡資訊
RnJlZUJTRCBRdWFydGVybHkgU3RhdHVzIFJlcG9ydCwgSmFudWFyeS1NYXJjaCAyMDE0CgogICBU aGlzIHJlcG9ydCBjb3ZlcnMgRnJlZUJTRC1yZWxhdGVkIHByb2plY3RzIGJldHdlZW4gSmFudWFy eSBhbmQgTWFyY2gKICAgMjAxNC4gVGhpcyBpcyB0aGUgZmlyc3Qgb2YgZm91ciByZXBvcnRzIHBs YW5uZWQgZm9yIDIwMTQuCgogICBOb3RlIHRoYXQgdGhlcmUgaXMgYW4gSFRNTCB2ZXJzaW9uIGF2 YWlsYWJsZSBhdAoKICAgICAgIGh0dHA6Ly93d3cuRnJlZUJTRC5vcmcvbmV3cy9zdGF0dXMvcmVw b3J0LTIwMTQtMDEtMjAxNC0wMy5odG1sCgpJbnRyb2R1Y3Rpb24KCiAgIFRoZSBmaXJzdCBxdWFy dGVyIG9mIDIwMTQgd2FzLCBhZ2FpbiwgYSBoZWN0aWMgYW5kIHByb2R1Y3RpdmUgdGltZSBmb3IK ICAgRnJlZUJTRC4gVGhlIFBvcnRzIHRlYW0gcmVsZWFzZWQgdGhlaXIgbGFuZG1hcmsgZmlyc3Qg cXVhcnRlcmx5CiAgICJzdGFibGUiIGJyYW5jaC4gRnJlZUJTRCBjb250aW51ZXMgdG8gZ3JvdyBv biB0aGUgQVJNIGFyY2hpdGVjdHVyZSwgbm93CiAgIHJ1bm5pbmcgb24gYW4gQVJNLWJhc2VkIENo cm9tZUJvb2suIFNNUCBpcyBub3cgcG9zc2libGUgb24gbXVsdGktY29yZQogICBBUk0gc3lzdGVt cy4gYmh5dmUsIHRoZSBuYXRpdmUgRnJlZUJTRCBoeXBlcnZpc29yLCBjb250aW51ZXMgdG8KICAg aW1wcm92ZS4gQW4gaW50ZWdyYWwgdGVzdCBzdWl0ZSBpcyB0YWtpbmcgc2hhcGUsIGFuZCB0aGUg SmVua2lucwogICBDb250aW51b3VzIEludGVncmF0aW9uIHN5c3RlbSBoYXMgYmVlbiBpbXBsZW1l bnRlZC4gRnJlZUJTRCBwYXRjaGVzIHRvCiAgIEdDQyBhcmUgYmVpbmcgImZvcndhcmQtcG9ydGVk IiwgYW5kIExMREIsIHRoZSBDbGFuZy9MTFZNIGRlYnVnZ2VyIGlzCiAgIGJlaW5nIHBvcnRlZC4g RGVza3RvcCB1c2UgaGFzIGFsc28gc2VlbiBpbXByb3ZlbWVudHMsIHdpdGggd29yayBvbgogICBH bm9tZSwgS0RFLCBYZmNlLCBLTVMgdmlkZW8gZHJpdmVycywgWC5vcmcsIGFuZCB2dCwgdGhlIG5l dyBjb25zb2xlCiAgIGRyaXZlciB3aGljaCBzdXBwb3J0cyBLTVMgYW5kIFVuaWNvZGUuIExpbnV4 IGFuZCBXaW5lIGJpbmFyeQogICBjb21wYXRpYmlsaXR5IGxheWVycyBoYXZlIGJlZW4gaW1wcm92 ZWQuIFVFRkkgYm9vdGluZyBzdXBwb3J0IGhhcyBiZWVuCiAgIG1lcmdlZCB0byBoZWFkLiBUaGUg RnJlZUJTRCBGb3VuZGF0aW9uIGNvbnRpbnVlcyB0byBhc3Npc3QgaW4gbW92aW5nCiAgIEZyZWVC U0QgZm9yd2FyZCwgc3BvbnNvcmluZyBjb25mZXJlbmNlcyBhbmQgbWVldGluZ3MgYW5kIG51bWVy b3VzCiAgIGRldmVsb3BtZW50IHByb2plY3RzLiBBbmQgdGhlc2UgYXJlIG9ubHkgc29tZSBvZiB0 aGUgdGhpbmdzIHRoYXQKICAgaGFwcGVuZWQhIFJlYWQgb24gZm9yIGV2ZW4gbW9yZS4KCiAgIFRo YW5rcyB0byBhbGwgdGhlIHJlcG9ydGVycyBmb3IgdGhlIGV4Y2VsbGVudCB3b3JrISBUaGlzIHJl cG9ydAogICBjb250YWlucyA0MSBlbnRyaWVzIGFuZCB3ZSBob3BlIHlvdSBlbmpveSByZWFkaW5n IGl0LgoKICAgVGhlIGRlYWRsaW5lIGZvciBzdWJtaXNzaW9ucyBjb3ZlcmluZyBiZXR3ZWVuIEFw cmlsIGFuZCBKdW5lIDIwMTQgaXMKICAgSnVseSA3dGgsIDIwMTQuCiAgICAgX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpG cmVlQlNEIFRlYW0gUmVwb3J0cwoKICAgICAqIEZyZWVCU0QgQ2x1c3RlciBBZG1pbmlzdHJhdGlv biBUZWFtCiAgICAgKiBGcmVlQlNEIENvcmUgVGVhbQogICAgICogRnJlZUJTRCBEb2N1bWVudGF0 aW9uIEVuZ2luZWVyaW5nIFRlYW0KICAgICAqIEZyZWVCU0QgUG9ydCBNYW5hZ2VtZW50IFRlYW0K ICAgICAqIEZyZWVCU0QgUG9zdG1hc3RlciBUZWFtCiAgICAgKiBGcmVlQlNEIFJlbGVhc2UgRW5n aW5lZXJpbmcgVGVhbQoKUHJvamVjdHMKCiAgICAgKiBKZW5raW5zIENvbnRpbnVvdXMgSW50ZWdy YXRpb24gZm9yIEZyZWVCU0QKICAgICAqIFpGU2d1cnUKCktlcm5lbAoKICAgICAqIEFTTFIgYW5k IFBJRQogICAgICogSW50ZWwgR1BVIERyaXZlciBVcGRhdGUKICAgICAqIE5hdGl2ZSBpU0NTSSBT dGFjawogICAgICogTmV3IEF1dG9tb3VudGVyCiAgICAgKiBQQ0kgU1ItSU9WIEluZnJhc3RydWN0 dXJlCiAgICAgKiBTRElPIERyaXZlcgogICAgICogVUVGSSBCb290CiAgICAgKiBVcGRhdGVkIHZ0 KDQpIFN5c3RlbSBDb25zb2xlCgpBcmNoaXRlY3R1cmVzCgogICAgICogYmh5dmUKICAgICAqIEZy ZWVCU0QgSG9zdCBTdXBwb3J0IGZvciBPcGVuU3RhY2sgYW5kIE9wZW5Db250cmFpbAogICAgICog RnJlZUJTRCBvbiBDaHJvbWVib29rCiAgICAgKiBGcmVlQlNEL2FybTY0CiAgICAgKiBGcmVlQlNE L2FybXY2aGYKICAgICAqIFNNUCBvbiBNdWx0aS1Db3JlIEFSTSBTeXN0ZW1zCgpVc2VybGFuZCBQ cm9ncmFtcwoKICAgICAqIGF1ZGl0ZGlzdGQoOCkKICAgICAqIEV4dGVybmFsIFRvb2xjaGFpbiBJ bXByb3ZlbWVudHMKICAgICAqIEZvcndhcmQgUG9ydCBGcmVlQlNEIEdDQwogICAgICogRnJlZUJT RCBUZXN0IFN1aXRlCiAgICAgKiBMTERCIERlYnVnZ2VyIFBvcnQKClBvcnRzCgogICAgICogQ2hy b21pdW0KICAgICAqIEZyZWVCU0QgQWRhIFBvcnRzCiAgICAgKiBHQ0MgaW4gdGhlIFBvcnRzIENv bGxlY3Rpb24KICAgICAqIEdOT01FL0ZyZWVCU0QKICAgICAqIEtERS9GcmVlQlNECiAgICAgKiBs aWJ2aXJ0L2JoeXZlIFN1cHBvcnQKICAgICAqIE9wZW5BRlMgb24gRnJlZUJTRAogICAgICogVGhl IEdyYXBoaWNzIFN0YWNrIG9uIEZyZWVCU0QKICAgICAqIFVzaW5nIENlbnRPUyA2LjUgYXMgTGlu dXggQmFzZQogICAgICogV2luZS9GcmVlQlNECiAgICAgKiBYZmNlL0ZyZWVCU0QKCkRvY3VtZW50 YXRpb24KCiAgICAgKiBaRlMgQ2hhcHRlciBvZiB0aGUgSGFuZGJvb2sKCk1pc2NlbGxhbmVvdXMK CiAgICAgKiBGcmVlQlNEIFBhcnRpY2lwYXRpbmcgaW4gU3VtbWVyIG9mIENvZGUgMjAxNAogICAg ICogVGhlIEZyZWVCU0QgRm91bmRhdGlvbgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKRnJlZUJTRCBDbHVzdGVy IEFkbWluaXN0cmF0aW9uIFRlYW0KCiAgIENvbnRhY3Q6IEZyZWVCU0QgQ2x1c3RlciBBZG1pbmlz dHJhdGlvbiBUZWFtIDxhZG1pbnNAPgoKICAgVGhlIEZyZWVCU0QgQ2x1c3RlciBBZG1pbmlzdHJh dGlvbiBUZWFtIGNvbnNpc3RzIG9mIHRoZSBwZW9wbGUKICAgcmVzcG9uc2libGUgZm9yIGFkbWlu aXN0ZXJpbmcgdGhlIG1hY2hpbmVzIHRoYXQgdGhlIHByb2plY3QgcmVsaWVzIG9uCiAgIGZvciBp dHMgZGlzdHJpYnV0ZWQgd29yayBhbmQgY29tbXVuaWNhdGlvbnMgdG8gYmUgc3luY2hyb25pc2Vk LiBJbiB0aGlzCiAgIHF1YXJ0ZXIsIHRoZSB0ZWFtIGhhcyB3b3JrZWQgb24gdGhlIGZvbGxvd2lu ZzoKCiAgICAgKiBBc3NpbWlsYXRlZCBtYXN0ZXIgZW1haWwgY29uZmlndXJhdGlvbnMgaW50byBh IHNpbmdsZSBzb3VyY2UKICAgICAgIGNvbnRyb2wgcmVwb3NpdG9yeS4KICAgICAqIE1vdmVkIHRo ZSBGcmVlQlNEIHdlYiBzZXJ2ZXIgQ0dJIHNlcnZpY2VzIHRvIGEgbmV3IGxvY2F0aW9uCiAgICAg ICAoc3BvbnNvcmVkKS4KICAgICAqIEZ1cnRoZXIgZW5oYW5jZWQgdXBvbiBvdXIgaW50ZXJuYWwg bW9uaXRvcmluZyB1dGlsaXRpZXMuCiAgICAgKiBBZGRlZCBhIFJ1c3NpYW4gcGtnKDgpIG1pcnJv ciwgaG9zdGVkIGJ5IFlhbmRleC4KICAgICAqIE1vdmVkIHRoZSBGcmVlQlNEIEZvdW5kYXRpb24g d2ViIHNlcnZpY2VzIHRvIGEgbmV3IHNlcnZlcgogICAgICAgKHNwb25zb3JlZCkuCgogICBUaGlz IHByb2plY3QgaXMgc3BvbnNvcmVkIGJ5IFRoZSBGcmVlQlNEIEZvdW5kYXRpb24uCiAgICAgX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCgpGcmVlQlNEIENvcmUgVGVhbQoKICAgQ29udGFjdDogRnJlZUJTRCBDb3JlIFRlYW0g PGNvcmVARnJlZUJTRC5vcmc+CgogICBUaGUgRnJlZUJTRCBDb3JlIFRlYW0gY29uc3RpdHV0ZXMg dGhlIHByb2plY3QncyAiQm9hcmQgb2YgRGlyZWN0b3JzIiwKICAgcmVzcG9uc2libGUgZm9yIGRl Y2lkaW5nIHRoZSBwcm9qZWN0J3Mgb3ZlcmFsbCBnb2FscyBhbmQgZGlyZWN0aW9uIGFzCiAgIHdl bGwgYXMgbWFuYWdpbmcgc3BlY2lmaWMgYXJlYXMgb2YgdGhlIEZyZWVCU0QgcHJvamVjdCBsYW5k c2NhcGUuCgogICBUaGUgZmlyc3QgcXVhcnRlciBvZiAyMDE0IHdhcyB2ZXJ5IGFjdGl2ZSBmb3Ig dGhlIENvcmUgVGVhbS4gSm9obgogICBCYWxkd2luIGFuZCBEYXZpZCBDaGlzbmFsbCBrZXB0IGNv b3JkaW5hdGluZyB0aGUgd29yayByZXF1aXJlZCBmb3IKICAgcHJvdmlkaW5nIGEgbmV3ZXIgdmVy c2lvbiBvZiBYLk9yZyBmb3IgOS54IGFuZCAxMC54IHN5c3RlbXMuIE5vdyB0aGF0CiAgIHZ0KDQp LCBhIHN1Y2Nlc3NvciB0byBzeXNjb25zKDQpIHRoYXQgb2ZmZXJzIGEgS01TLWVuYWJsZWQgY29u c29sZSwgaGFzCiAgIGJlZW4gbWVyZ2VkIHRvIGJvdGggc3RhYmxlLzkgYW5kIHN0YWJsZS8xMCwg YW4gYWx0ZXJuYXRpdmUgcGtnKDgpCiAgIHJlcG9zaXRvcnkgaXMgaW4gcHJlcGFyYXRpb24gZm9y IHdpZGVyIHRlc3Rpbmcgb2YgdnQoNCkgYW5kIHRoZSBuZXcKICAgWC5PcmcgdmVyc2lvbi4gSW4g YWRkaXRpb24gdG8gdGhhdCwgSm9obiBCYWxkd2luIHB1Ymxpc2hlZCB0aGUgcG9saWN5CiAgIG9u IGxpY2Vuc2VzIGZvciBuZXcgZmlsZXMgYW5kIGZpbGVzIHdpdGggbm9uLXN0YW5kYXJkIGxpY2Vu c2VzLiBUaGFua3MKICAgdG8gdGhlIGVmZm9ydHMgb2YgR2F2aW4gQXRraW5zb24sIEZyZWVCU0Qg aGFzIGFnYWluIG1hZGUgaXQgaW50byB0aGUKICAgR29vZ2xlIFN1bW1lciBvZiBDb2RlIHByb2dy YW0sIGZvciB0aGUgdGVudGggdGltZS4gRGF2aWQgQ2hpc25hbGwKICAgcmVwb3J0ZWQgdGhhdCBi b3RoIGxpYmMrKyBhbmQgbGlic3RkYysrIGNhbiBub3cgYmUgYnVpbHQsIGFzIGFsbCBvZiB0aGUK ICAgc3RhbmRhcmRzLWNvbXBsaWFudCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHJlcXVpcmVkIG51 bWVyaWNhbCBmdW5jdGlvbnMKICAgaGF2ZSBiZWVuIGFkZGVkLgoKICAgVGhlIENvcmUgVGVhbSBj b25kdWN0ZWQgYW4gYW5udWFsIHJldmlldyBhbW9uZyB0aGUgUHJvamVjdCB0ZWFtcyBhbmQKICAg aGF0cywgd2hlcmUgdGVhbSBtZW1iZXJzIGhhZCB0byBkZWNsYXJlIHdoZXRoZXIgdGhleSB3aXNo ZWQgdG8gY29udGludWUKICAgdGhlaXIgc2VydmljZS4gQXMgYSByZXN1bHQsIEZsb3JpYW4gU21l ZXRzIHJlcGxhY2VkIERhdmlkIFdvbGZza2lsbCBpbgogICB0aGUgbGVhZCByb2xlIG9mIHRoZSBQ b3N0bWFzdGVyIFRlYW0sIGFuZCBHbGVuIEJhcmJlciBhc3N1bWVkIHRoZSBoZWFkCiAgIFJlbGVh c2UgRW5naW5lZXIgcG9zaXRpb24gZnJvbSBLZW4gU21pdGguIFRoZSBDb3JlIFRlYW0gY29uZ3Jh dHVsYXRlcwogICBGbG9yaWFuIGFuZCBHbGVuLCBhbmQgdGhhbmtzIERhdmlkIGFuZCBLZW4gZm9y IHRoZWlyIGxvbmctc3RhbmRpbmcKICAgd29yay4KCiAgIFRoZSBDb3JlIFRlYW0gYXBwcm92ZWQg Y2hhcnRlcmluZyB0aGUgUG9ydHMgU2VjdXJpdHkgVGVhbSwgd2hpY2ggaXMKICAgZXN0YWJsaXNo ZWQgdG8gbWFpbnRhaW4gc2VjdXJpdHkgdXBkYXRlcyBmb3IgdGhlIHBvcnRlZCBhcHBsaWNhdGlv bnMuCiAgIEluIGNvb3JkaW5hdGlvbiB3aXRoIHRoZSBQb3J0IE1hbmFnZW1lbnQgVGVhbSwgcGtn X3Rvb2xzIHdhcyBldmVudHVhbGx5CiAgIGRlcHJlY2F0ZWQgYW5kIHRhZ2dlZCB3aXRoIGFuIEVu ZC1vZi1MaWZlIGRhdGUsIGluIG9yZGVyIHRvIGNsZWFyIHRoZQogICB3YXkgZm9yIHBrZyg4KS4g VGhlIFBvcnQgTWFuYWdlbWVudCBUZWFtIGFsc28gcmVxdWVzdGVkIGEgd2F5IHRvIG1ha2UKICAg aXQgcG9zc2libGUgdG8gdHJhY2sgdXNlcmxhbmQgQUJJIGFuZCBLQkkgY2hhbmdlcyByZWxpYWJs eSBmb3IgdGhlCiAgIFBvcnRzIENvbGxlY3Rpb24uIElkZWFsbHkgdGhpcyBjYW4gYmUgYWNoaWV2 ZWQgYnkgaW5jcmVhc2luZyB0aGUgdmFsdWUKICAgb2YgX19GcmVlQlNEX3ZlcnNpb24gb24gZWFj aCBmaXgsIHRoZXJlZm9yZSB0aGUgY29ycmVzcG9uZGluZwogICBkaXNjdXNzaW9uIGNvbmNsdWRl ZCBpbiBmcmVlemluZyB0aGUgQUJJIG5vdGUgdGFnIGZvciByZWxlYXNlcyBpbiBvcmRlcgogICB0 byBrZWVwIHRoZSBzaXplIG9mIGJpbmFyeSBwYXRjaGVzIGZvciBmcmVlYnNkLXVwZGF0ZSg4KSBs b3cuIEEgcmVsYXRlZAogICBFcnJhdGEgTm90aWNlIGlzIGFib3V0IHRvIGJlIHB1Ymxpc2hlZCBz b29uLgoKICAgT25seSBhIHNpbmdsZSBjb21taXQgYml0IHdhcyB0YWtlbiBmb3Igc2FmZWtlZXBp bmcuIFdlIGRpZCBub3QgaGF2ZSBuZXcKICAgY29tbWl0dGVycyB0byB0aGUgc3JjLyByZXBvc2l0 b3J5IGluIHRoaXMgcXVhcnRlci4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCkZyZWVCU0QgRG9jdW1lbnRhdGlv biBFbmdpbmVlcmluZyBUZWFtCgogICBVUkw6IGh0dHA6Ly9saXN0cy5mcmVlYnNkLm9yZy9waXBl cm1haWwvZnJlZWJzZC1kb2MvMjAxNC1GZWJydWFyeS8wMjMyNjUuaHRtbAoKICAgQ29udGFjdDog RnJlZUJTRCBEb2N1bWVudGF0aW9uIEVuZ2luZWVyaW5nIFRlYW0gPGRvY2VuZ0BGcmVlQlNELm9y Zz4KCiAgIFRoZSBGcmVlQlNEIERvY3VtZW50YXRpb24gRW5naW5lZXJpbmcgVGVhbSBpcyByZXNw b25zaWJsZSBmb3IgZGVmaW5pbmcKICAgYW5kIGZvbGxvd2luZyB1cCBvbiB0aGUgZG9jdW1lbnRh dGlvbiBnb2FscyBmb3IgdGhlIGNvbW1pdHRlcnMgaW4gdGhlCiAgIERvY3VtZW50YXRpb24gcHJv amVjdC4gVGhlIHRlYW0gaXMgcGxlYXNlZCB0byBhbm5vdW5jZSBhIG5ldyBtZW1iZXIgLS0KICAg V2FycmVuIEJsb2NrLiBJbiBlYXJseSBNYXJjaCwgdGhlIEZyZWVCU0QgRG9jdW1lbnRhdGlvbiBF bmdpbmVlcmluZwogICBUZWFtIG1lbWJlcnMgYXNzdW1lZCByZXNwb25zaWJpbGl0eSBmb3IgdGhl IEZyZWVCU0QgV2VibWFzdGVyIFRlYW0uCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpGcmVlQlNEIFBvcnQgTWFu YWdlbWVudCBUZWFtCgogICBVUkw6IGh0dHA6Ly93d3cuRnJlZUJTRC5vcmcvcG9ydHMvCiAgIFVS TDogaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9kb2MvZW5fVVMuSVNPODg1OS0xL2FydGljbGVzL2Nv bnRyaWJ1dGluZy1wb3J0cy8KICAgVVJMOiBodHRwOi8vcG9ydHNtb24uZnJlZWJzZC5vcmcvaW5k ZXguaHRtbAogICBVUkw6IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvcG9ydG1nci9pbmRleC5odG1s CiAgIFVSTDogaHR0cDovL2Jsb2dzLmZyZWVic2Rpc2gub3JnL3BvcnRtZ3IvCiAgIFVSTDogaHR0 cDovL3d3dy50d2l0dGVyLmNvbS9mcmVlYnNkX3BvcnRtZ3IvCiAgIFVSTDogaHR0cDovL3d3dy5m YWNlYm9vay5jb20vcG9ydG1ncgogICBVUkw6IGh0dHA6Ly9wbHVzLmdvb2dsZS5jb20vY29tbXVu aXRpZXMvMTA4MzM1ODQ2MTk2NDU0MzM4MzgzCgogICBDb250YWN0OiBUaG9tYXMgQWJ0aG9ycGUg PHBvcnRtZ3Itc2VjcmV0YXJ5QEZyZWVCU0Qub3JnPgogICBDb250YWN0OiBGcmVkZXJpYyBDdWxv dCA8Y3Vsb3RARnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IEZyZWVCU0QgUG9ydCBNYW5hZ2VtZW50 IFRlYW0gPHBvcnRtZ3JARnJlZUJTRC5vcmc+CgogICBUaGUgcm9sZSBvZiB0aGUgRnJlZUJTRCBQ b3J0IE1hbmFnZW1lbnQgVGVhbSBpcyB0byBlbnN1cmUgdGhhdCB0aGUKICAgRnJlZUJTRCBQb3J0 cyBEZXZlbG9wZXIgY29tbXVuaXR5IHByb3ZpZGVzIGEgcG9ydHMgY29sbGVjdGlvbiB0aGF0IGlz CiAgIGZ1bmN0aW9uYWwsIHN0YWJsZSwgdXAtdG8tZGF0ZSBhbmQgZnVsbC1mZWF0dXJlZC4gSXQg aXMgYWxzbyB0bwogICBjb29yZGluYXRlIGFtb25nIHRoZSBjb21taXR0ZXJzIGFuZCBkZXZlbG9w ZXJzIHdobyB3b3JrIG9uIGl0LgoKICAgVGhlIHBvcnRzIHRyZWUgc2xvd2x5IGFwcHJvYWNoZXMg dGhlIDI1LDAwMCBwb3J0cyB0aHJlc2hvbGQsIHdoaWxlIHRoZQogICBQUiBjb3VudCBleGNlZWRz IDEsODAwLiBJbiB0aGUgZmlyc3QgcXVhcnRlciwgd2UgYWRkZWQgZm91ciBuZXcKICAgY29tbWl0 dGVycywgdG9vayBpbiB0aHJlZSBjb21taXQgYml0cyBmb3Igc2FmZSBrZWVwaW5nLCBhbmQgcmVp bnN0YXRlZAogICBvbmUgY29tbWl0IGJpdC4KCiAgIEluIEphbnVhcnksIHRoZSBsb25nZXN0IHNl cnZpbmcgcG9ydCBtYW5hZ2VyLCBKb2UgTWFyY3VzIENsYXJrZSwKICAgc3RlcHBlZCBkb3duIGZy b20gaGlzIGFjdGl2ZSBkdXRpZXMgb24gdGhlIHRlYW0uIEF0IGEgc2ltaWxhciB0aW1lCiAgIElv bi1NaWhhaSBUZXRjdSBhbHNvIHN0ZXBwZWQgZG93biBmcm9tIGhpcyBkdXRpZXMuIEZvcnR1bmF0 ZWx5LCBhcyBhCiAgIHJlc3VsdCBvZiB0aGUgZmlyc3QgcG9ydG1nci1sdXJrZXJzIGludGFrZSwg d2Ugd2VyZSBhYmxlIHRvIHJlcGxhY2UKICAgdGhlbSB3aXRoIE1hdGhpZXUgQXJub2xkIGFuZCBB bnRvaW5lIEJyb2Rpbi4KCiAgIENvbW1lbmNpbmcgTWFyY2ggMSwgdGhlIHNlY29uZCBpbnRha2Ug b2YgcG9ydG1nci1sdXJrZXJzIHN0YXJ0ZWQgYWN0aXZlCiAgIGR1dHkgb24gcG9ydG1nciBmb3Ig YSBmb3VyIG1vbnRoIGR1cmF0aW9uLiBUaGUgbmV4dCB0d28gY2FuZGlkYXRlcyBhcmUKICAgQWxl eGV5IERva3VjaGFldiBhbmQgRnJlZGVyaWMgQ3Vsb3QuCgogICBUaGlzIHF1YXJ0ZXIgYWxzbyBz YXcgdGhlIHJlbGVhc2Ugb2YgdGhlIGZpcnN0IHF1YXJ0ZXJseSBicmFuY2gsIG5hbWVseQogICAy MDE0UTEuIFRoaXMgYnJhbmNoIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzdGFibGUgYW5kIGhp Z2gtcXVhbGl0eQogICBwb3J0cyB0cmVlLCB3aXRoIHBhdGNoZXMgcmVsYXRlZCB0byBzZWN1cml0 eSBmaXhlcyBhcyB3ZWxsIGFzIHBhY2thZ2luZwogICBhbmQgcnVudGltZSBmaXhlcyBiZWluZyBi YWNrcG9ydGVkIGZyb20gaGVhZC4KCiAgIE9uZ29pbmcgbWFpbnRlbmFuY2UgZ29lcyBpbnRvIHJl ZHBvcnRzLm9yZywgaW5jbHVkaW5nIFFBVCBydW5zIGFuZAogICBwb3J0cyBhbmQgc2VjdXJpdHkg dXBkYXRlcy4KCk9wZW4gdGFza3M6CgogICAgMS4gQXMgcHJldmlvdXNseSBub3RlZCwgbWFueSBQ UnMgY29udGludWUgdG8gbGFuZ3Vpc2guIFdlIHdvdWxkIGxpa2UKICAgICAgIHRvIHNlZSBjb21t aXR0ZXJzIGRlZGljYXRlIHRoZW1zZWx2ZXMgdG8gY2xvc2luZyBhcyBtYW55IGFzCiAgICAgICBw b3NzaWJsZS4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KCkZyZWVCU0QgUG9zdG1hc3RlciBUZWFtCgogICBDb250 YWN0OiBGcmVlQlNEIFBvc3RtYXN0ZXIgVGVhbSA8cG9zdG1hc3RlckBGcmVlQlNELm9yZz4KCiAg IFRoZSBGcmVlQlNEIFBvc3RtYXN0ZXIgVGVhbSBpcyByZXNwb25zaWJsZSBmb3IgbWFpbCBiZWlu ZyBjb3JyZWN0bHkKICAgZGVsaXZlcmVkIHRvIHRoZSBjb21taXR0ZXJzJyBlbWFpbCBhZGRyZXNz ZXMsIGVuc3VyaW5nIHRoYXQgdGhlIG1haWxpbmcKICAgbGlzdHMgd29yaywgYW5kIHNob3VsZCB0 YWtlIG1lYXN1cmVzIGFnYWluc3QgcG9zc2libGUgZGlzcnVwdGlvbnMgb2YKICAgcHJvamVjdCBt YWlsIHNlcnZpY2VzLCBzdWNoIGFzIGhhdmluZyB0cm9sbC0sIHNwYW0tIGFuZCB2aXJ1cy1maWx0 ZXJzLgoKICAgSW4gdGhlIGZpcnN0IHF1YXJ0ZXIgb2YgMjAxNCwgdGhlIHRlYW0gaGFzIGltcGxl bWVudGVkIHRoZXNlIGl0ZW1zIHRoYXQKICAgbWF5IGJlIGludGVyZXN0IG9mIHRoZSBnZW5lcmFs IHB1YmxpYzoKCiAgICAgKiBDb250aW51ZWQgYSBkaXNjdXNzaW9uIG9uIGN1cnJlbnQgYW5kIHBv c3NpYmxlIGZ1dHVyZSBtYWlsIGFuZCBzcGFtCiAgICAgICBmaWx0ZXJpbmcuCiAgICAgKiBEaXNj b3ZlcmVkIG1vcmUgb2Ygd2hhdCBuZWVkcyB0byBiZSBkb25lIGZvciBhIG5ldyB5ZWFyICh3aXRo CiAgICAgICByZXNwZWN0IHRvIGVtYWlsIGFyY2hpdmVzKSwgZGlkIHdoYXQgd2UgY291bGQsIGFu ZCByZWNvcmRlZCB0aGUKICAgICAgIHN0ZXBzIGZvciBuZXh0IHRpbWUuCiAgICAgKiBBZGRlZCBL dWJpbGF5IEtvY2FrIHRvIGRvbmF0aW9ucywgcmVxdWVzdGVkIGJ5IFBpZXRybyBDZXJ1dHRpLgog ICAgICogQWRkZWQgV2FycmVuIEJsb2NrIHRvIGRvY2VuZy4KICAgICAqIE1hZGUgc3VyZSBwb3J0 bWdyIHJlY2VpdmVzIGJvdW5jZXMgZm9yIHBrZy1mYWxsb3V0IG1lc3NhZ2VzLgogICAgICogQ3Jl YXRlZCBhIGplbmtpbnMtYWRtaW4gbWFpbCBhbGlhcy4KICAgICAqIEVuYWJsZWQgTWFpbG1hbiBw YXNzd29yZCByZW1pbmRlciBlbWFpbHMgYWdhaW4uCiAgICAgKiBEaXNjb3ZlcmVkIHRoYXQgYWxs IE1haWxtYW4gY3JvbiBqb2JzIHdlcmUgZGlzYWJsZWQgaW4gTm92ZW1iZXIKICAgICAgIGR1cmlu ZyB1cGdyYWRlcy4gRW5hYmxlZCB0aG9zZSBhZ2Fpbi4gVGhpcyBjYXVzZWQgcHJvYmxlbXMgbGlr ZQogICAgICAgZGlnZXN0cyBub3QgYmVpbmcgc2VudC4KICAgICBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCkZyZWVCU0Qg UmVsZWFzZSBFbmdpbmVlcmluZyBUZWFtCgogICBVUkw6IGh0dHA6Ly93d3cuRnJlZUJTRC5vcmcv cmVsZWFzZXMvOS4zUi9zY2hlZHVsZS5odG1sCiAgIFVSTDogaHR0cDovL3d3dy5GcmVlQlNELm9y Zy9yZWxlYXNlcy85LjNSL3RvZG8uaHRtbAogICBVUkw6IGh0dHA6Ly9mdHAuRnJlZUJTRC5vcmcv cHViL0ZyZWVCU0Qvc25hcHNob3RzL0lTTy1JTUFHRVMvCgogICBDb250YWN0OiBGcmVlQlNEIFJl bGVhc2UgRW5naW5lZXJpbmcgVGVhbSA8cmVARnJlZUJTRC5vcmc+CgogICBUaGUgRnJlZUJTRCBS ZWxlYXNlIEVuZ2luZWVyaW5nIFRlYW0gaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgYW5kCiAg IHB1Ymxpc2hpbmcgcmVsZWFzZSBzY2hlZHVsZXMgZm9yIG9mZmljaWFsIHByb2plY3QgcmVsZWFz ZXMgb2YgRnJlZUJTRCwKICAgYW5ub3VuY2luZyBjb2RlIGZyZWV6ZXMgYW5kIG1haW50YWluaW5n IHRoZSByZXNwZWN0aXZlIGJyYW5jaGVzLCBhbW9uZwogICBvdGhlciB0aGluZ3MuCgogICBJbiBl YXJseSBKYW51YXJ5LCB0aGUgdGVhbSBiZWNhbWUgYXdhcmUgb2Ygc2V2ZXJhbCBsYXN0LW1pbnV0 ZQogICBzaG93c3RvcHBlciBpc3N1ZXMgaW4gRnJlZUJTRCAxMC4wLCB3aGljaCBsZWQgdG8gYW4g ZXh0ZW5zaW9uIGluIHRoZQogICBmaW5hbCByZWxlYXNlIGJ1aWxkcy4gRnJlZUJTRCAxMC4wLVJF TEVBU0Ugd2FzIGFubm91bmNlZCBvbiBKYW51YXJ5IDIwLAogICB0d28gbW9udGhzIGJlaGluZCB0 aGUgb3JpZ2luYWwgc2NoZWR1bGUuCgogICBUaGUgc2NoZWR1bGUgZm9yIHRoZSBGcmVlQlNEIDku My1SRUxFQVNFIGN5Y2xlIGhhcyBiZWVuIHdyaXR0ZW4gYW5kCiAgIHBvc3RlZCB0byB0aGUgd2Vi c2l0ZSwgYW5kIHRoZSByZWxlYXNlIGN5Y2xlIHdpbGwgYmVnaW4gZWFybHkgTWF5LgoKICAgVGhl cmUgaXMgb25nb2luZyB3b3JrIHRvIGludGVncmF0ZSBzdXBwb3J0IGZvciBlbWJlZGRlZCBhcmNo aXRlY3R1cmVzCiAgIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgYnVpbGQgcHJvY2Vzcy4gQXQgdGhp cyB0aW1lLCBzdXBwb3J0IGV4aXN0cyBmb3IKICAgYSBudW1iZXIgb2YgQVJNIGtlcm5lbHMsIGlu IHBhcnRpY3VsYXIgdGhlIFJhc3BiZXJyeSBQaSwgQmVhZ2xlQm9uZSwKICAgYW5kIFdhbmRCb2Fy ZC4KCiAgIFRoaXMgcHJvamVjdCBpcyBzcG9uc29yZWQgYnkgVGhlIEZyZWVCU0QgRm91bmRhdGlv bi4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KCkplbmtpbnMgQ29udGludW91cyBJbnRlZ3JhdGlvbiBmb3IgRnJl ZUJTRAoKICAgVVJMOiBodHRwczovL2plbmtpbnMuRnJlZUJTRC5vcmcKICAgVVJMOiBodHRwczov L3dpa2kuZnJlZWJzZC5vcmcvSmVua2lucyNKZW5raW5zX2Zvcl9GcmVlQlNEX3N0YXR1cwogICBV Ukw6IGh0dHBzOi8vd2lraS5mcmVlYnNkLm9yZy9KZW5raW5zI1ByZXNlbnRhdGlvbnNfYW5kX1dv cmtpbmdfR3JvdXBzCiAgIFVSTDogaHR0cDovL2VtcHQxZS5ibG9nc3BvdC5ydS8yMDE0LzAzL3Vz aW5nLWplbmtpbnMtbGlidmlydC1zbGF2ZS1wbHVnaW4td2l0aC5odG1sCiAgIFVSTDogaHR0cDov L2plbmtpbnMtY2kub3JnLwogICBVUkw6IGh0dHA6Ly93d3cuYW5zaWJsZS5jb20vCgogICBDb250 YWN0OiBDcmFpZyBSb2RyaWd1ZXMgPHJvZHJpZ2NARnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IEpl bmtpbnMgQWRtaW5pc3RyYXRvcnMgPGplbmtpbnMtYWRtaW5ARnJlZUJTRC5vcmc+CiAgIENvbnRh Y3Q6IEZyZWVCU0QgVGVzdGluZyA8ZnJlZWJzZC10ZXN0aW5nQEZyZWVCU0Qub3JnPgoKICAgSmVu a2lucyBpcyBhIGZyYW1ld29yayB1c2VkIGJ5IG1hbnkgY29tcGFuaWVzIGFuZCBvcGVuIHNvdXJj ZSBwcm9qZWN0cwogICBmb3IgQ29udGludW91cyBJbnRlZ3JhdGlvbiAoQ0kpLiBDSSBhbGxvd3Mg ZGV2ZWxvcGVycyB0byBjb21taXQgY29kZSB0bwogICBhIFNvdXJjZSBDb2RlIE1hbmFnZW1lbnQg KFNDTSkgc3lzdGVtIHN1Y2ggYXMgU3VidmVyc2lvbiwgYW5kIHRoZW4gaGF2ZQogICBhdXRvbWF0 ZWQgcHJvZ3JhbXMgY2hlY2sgb3V0LCBidWlsZCwgYW5kIHRlc3QgdGhlIGNvZGUuIEplbmtpbnMg aXMKICAgaW1wbGVtZW50ZWQgaW4gdGhlIEphdmEgbGFuZ3VhZ2UuCgogICBFZCBNYXN0ZSByZXZp ZXdlZCBzb21lIENJIHdvcmsgdGhhdCBDcmFpZyBSb2RyaWd1ZXMgaGFkIGRvbmUgZm9yIHRoZQog ICBGcmVlTkFTIHByb2plY3Qgd2l0aCBKZW5raW5zLCBhbmQgZW5jb3VyYWdlZCBoaW0gdG8gc2V0 IHVwIHNvbWV0aGluZwogICBzaW1pbGFyIGZvciB0aGUgRnJlZUJTRCBQcm9qZWN0LiBXaXRoIHRo ZSBoZWxwIG9mIHRoZSBGcmVlQlNEIENsdXN0ZXIKICAgQWRtaW5pc3RyYXRpb24gVGVhbSwgaGUg c2V0IHVwIGEgRnJlZUJTRCBtYWNoaW5lIHJ1bm5pbmcgdHdvIGJoeXZlCiAgIHZpcnR1YWwgbWFj aGluZXMsIGplbmtpbnMtOS5GcmVlQlNELm9yZyBhbmQgamVua2lucy0xMC5GcmVlQlNELm9yZy4g SGUKICAgc2V0IHVwIHNvZnR3YXJlIGJ1aWxkcyBvZiBoZWFkIGFuZCBzZXZlcmFsIHN0YWJsZSBi cmFuY2hlcyBvbiB0aGVzZQogICBtYWNoaW5lcy4gVGhlIHN0YXR1cyBvZiB0aGVzZSBidWlsZHMg aXMgdmlzaWJsZSBvbiBhIHdlYiBpbnRlcmZhY2UKICAgYWNjZXNzaWJsZSBhdCBqZW5raW5zLkZy ZWVCU0Qub3JnLiBXaGVuIGFueSBvZiB0aGUgYnVpbGRzIGZhaWwsIGVtYWlscwogICBhcmUgc2Vu dCB0byBmcmVlYnNkLWN1cnJlbnQgb3IgZnJlZWJzZC1zdGFibGUuIEVtYWlscyBhcmUgYWxzbyBz ZW50CiAgIGRpcmVjdGx5IHRvIHRoZSBsaXN0IG9mIHBlb3BsZSB3aG8gcmVjZW50bHkgY29tbWl0 dGVkIGNvZGUgdG8KICAgU3VidmVyc2lvbiBzaW5jZSB0aGUgbGFzdCBzdWNjZXNzZnVsIGJ1aWxk LgoKICAgQXMgcGFydCBvZiB0aGUgSmVua2lucyBzZXR1cCwgQ3JhaWcgUm9kcmlndWVzIGVuY291 bnRlcmVkIHByb2JsZW1zIHdpdGgKICAgcnVubmluZyBKYXZhIG9uIEZyZWVCU0QgOS4yIGFuZCBG cmVlQlNEIDEwLjAuIEJvdGggcHJvYmxlbXMgc3RlbW1lZAogICBmcm9tIGNoYW5nZXMgdG8gdGhl IEZyZWVCU0QgVmlydHVhbCBNZW1vcnkgKFZNKSBzdWJzeXN0ZW0uIE9uIEZyZWVCU0QKICAgOS4y LVJFTEVBU0UsIHJ1bm5pbmcgSmVua2lucyB1bmRlciBKYXZhIHdvdWxkIGNhdXNlIHRoZSBrZXJu ZWwgdG8KICAgcGFuaWMuIFRoaXMgd2FzIGEga25vd24gcHJvYmxlbSwgYW5kIGZpeGVkIGluIDku Mi4tUkVMRUFTRS1wMy4gT24KICAgRnJlZUJTRCAxMC4wLVJFTEVBU0UsIEphdmEgcHJvY2Vzc2Vz IHdvdWxkIHJhbmRvbWx5IGNyYXNoLiBEaXNhYmxpbmcKICAgdGhlIHZtLnBtYXAucGNpZF9lbmFi bGVkIHN5c2N0bCgzKSB2YXJpYWJsZSBzZWVtZWQgdG8gZml4IHRoZSBwcm9ibGVtLgogICBJbiBr ZXJuLzE4NzIzOCwgSGVucmlrIEd1bGJyYW5kc2VuIHN1Ym1pdHRlZCBmaXhlcyB0byB0aGUgRnJl ZUJTRCBWTSB0bwogICBhZGRyZXNzIHRoaXMgcHJvYmxlbS4gS29uc3RhbnRpbiBCZWxvdXNvdiBj b21taXR0ZWQgdGhlIGZpeGVzIHRvIGhlYWQsCiAgIHdoZXJlIHRoZXkgYXJlIGJlaW5nIHRlc3Rl ZCBub3cuCgogICBEdXJpbmcgdGhlIHNldHVwIG9mIHRoZSBiaHl2ZSBWTXMgd2hpY2ggcnVuIEpl bmtpbnMgcHJvY2Vzc2VzLCBDcmFpZwogICBSb2RyaWd1ZXMgd3JvdGUgc2NyaXB0cyB0byBzdGFy dCBiaHl2ZSBWTXMgZnJvbSB0aGUgcmMuZCBib290dXAKICAgc2NyaXB0cywgd2hpY2ggd2VyZSB0 aGVuIHB1Ymxpc2hlZCBhdCBHaXRIdWIuCgogICBPbiBGZWJydWFyeSAxOSwgMjAxNCwgQ3JhaWcg Um9kcmlndWVzIG5vdGlmaWVkIHRoZSBGcmVlQlNEIGRldmVsb3BlcnMKICAgdGhhdCBKZW5raW5z IHdhcyBydW5uaW5nIGluIHRoZSBGcmVlQlNEIGNsdXN0ZXIsIGFuZCB0aGF0IHRoZXkgY291bGQK ICAgbG9vayBhdCB0aGUgd2ViIGludGVyZmFjZSB0byBzZWUgdGhlIHN0YXR1cyBvZiBidWlsZHMu CgogICBPbiBNYXJjaCAxMywgMjAxNCwgQ3JhaWcgUm9kcmlndWVzIGdhdmUgYSBwcmVzZW50YXRp b24gb2YgdGhlIEplbmtpbnMKICAgd29yayBhdCB0aGUgQmF5IEFyZWEgRnJlZUJTRCBVc2VyIEdy b3VwIChCQUZVRykgaW4gTW91bnRhaW4gVmlldywKICAgQ2FsaWZvcm5pYSwgVVNBLiBWaWRlbyBv ZiB0aGUgcHJlc2VudGF0aW9uIHdhcyByZWNvcmRlZCBhbmQgcHV0IG9ubGluZQogICBieSBpWHN5 c3RlbXMuCgogICBDcmFpZyBSb2RyaWd1ZXMgYXNzZW1ibGVkIGEgdGVhbSBvZiB2b2x1bnRlZXJz LCBqZW5raW5zLWFkbWluLCB0byBoZWxwCiAgIG1haW50YWluIGplbmtpbnMuRnJlZUJTRC5vcmcg YW5kIGV4cGFuZCB0aGUgdXNlIG9mIEplbmtpbnMgQ0kgdXNlZCBpbgogICB0aGUgRnJlZUJTRCBj bHVzdGVyLiBqZW5raW5zLWFkbWluIGNvbnNpc3RzIG9mIHRoZSBmb2xsb3dpbmcgcGVvcGxlCiAg IHdvcmtpbmcgaW4gdGhlIGZvbGxvd2luZyBhcmVhczoKCiAgICAgKiBSLiBUeWxlciBDcm95IGlz IGJvdGggYSBGcmVlQlNEIGRldmVsb3BlciBhbmQgYSBKZW5raW5zIGRldmVsb3Blci4KICAgICAg IEhlIHdpbGwgYmUgd29ya2luZyBvbiBmaXhpbmcgYnVncyBpbiBKZW5raW5zIHNwZWNpZmljIHRv IEZyZWVCU0QuCiAgICAgICBIZSBpcyBmaXJzdCBsb29raW5nIGF0IGZpeGluZyB0aGUgbGlicGFt NGogbGlicmFyeSB3aGljaCBpcyB1c2VkIGJ5CiAgICAgICBKZW5raW5zIHRvIGludGVyZmFjZSB3 aXRoIHRoZSBQQU0gc3lzdGVtIGZvciB1c2VyIGF1dGhlbnRpY2F0aW9uLgogICAgICAgVGhlIHJl bGVhc2VkIHZlcnNpb24gb2YgbGlicGFtNGogZG9lcyBub3QgY3VycmVudGx5IHdvcmsgb24KICAg ICAgIEZyZWVCU0QuCiAgICAgKiBMaS1XZW4gSHN1IG1haW50YWlucyB0aGUgZGV2ZWwvamVua2lu cyBwb3J0LiBIZSBzZXQgdXAgYSBKZW5raW5zCiAgICAgICBidWlsZCB3aGljaCBydW5zIHRoZSBz Y2FuLWJ1aWxkIHN0YXRpYyBhbmFseXplciB3aGljaCBpcyBwYXJ0IG9mCiAgICAgICBMTFZNLgog ICAgICogU3RldmVuIEtyZXV6ZXIgaGFzIGV4cGVyaWVuY2UgYWRtaW5pc3RlcmluZyBKZW5raW5z IHN5c3RlbXMuIEhlIHNldAogICAgICAgdXAgc2V2ZXJhbCBidWlsZHMgb24gamVua2lucy5GcmVl QlNELm9yZywgaW5jbHVkaW5nIGEgSmVua2lucyBidWlsZAogICAgICAgb2YgdGhlIEZyZWVCU0Qg ZG9jdW1lbnRhdGlvbi4gSGUgaXMgbG9va2luZyBpbnRvIHVzaW5nIEFuc2libGUgZm9yCiAgICAg ICBhdXRvbWF0aWMgcHJvdmlzaW9uaW5nIG9mIFZNcyBydW5uaW5nIEplbmtpbnMgaW4gdGhlIEZy ZWVCU0QKICAgICAgIGNsdXN0ZXIuCiAgICAgKiBDcmFpZyBSb2RyaWd1ZXMgd2lsbCBiZSBydW5u aW5nIGEgQ29udGludW91cyBUZXN0aW5nIHdvcmtpbmcgZ3JvdXAKICAgICAgIGF0IHRoZSBGcmVl QlNEIERldnN1bW1pdCBpbiBPdHRhd2Egb24gTWF5IDE1LCAyMDE0LiBIZSB3aWxsIGFsc28KICAg ICAgIGdpdmUgYSBKZW5raW5zIHByZXNlbnRhdGlvbiBvbiBNYXkgMTcsIDIwMTQuIEhlIGlzIGlu dGVyZXN0ZWQgaW4KICAgICAgIHdvcmtpbmcgd2l0aCBKdWxpbyBNZXJpbm8gdG8gaW50ZWdyYXRl IEplbmtpbnMgYW5kIEt5dWEuIFRoZXkgaGF2ZQogICAgICAgZXhjaGFuZ2VkIHNvbWUgZW1haWxz IGFib3V0IHRoaXMgb24gdGhlIGZyZWVic2QtdGVzdGluZyBsaXN0LgogICAgICogU3RldmUgV2ls bHMgbWFpbnRhaW5zIHRoZSBkZXZlbC9qZW5raW5zLWx0cyBwb3J0LiBIZSBoYXMKICAgICAgIGlt cGxlbWVudGVkIHNldmVyYWwgYnVpbGRzIGF0IGplbmtpbnMuRnJlZUJTRC5vcmcgd2hpY2ggZGV0 ZWN0CiAgICAgICBjb21taXRzIHRvIHRoZSBGcmVlQlNEIHBvcnRzIHJlcG9zaXRvcnksIGFuZCB0 aGVuIGJ1aWxkIHRoZSBwb3J0cwogICAgICAgdHJlZSB1c2luZyBQb3VkcmnDqHJlLgoKICAgQXQg dGhlIGVuZCBvZiBNYXJjaCwgUm9tYW4gQm9nb3JvZHNraXkgcmVwb3J0ZWQgdG8gamVua2lucy1h ZG1pbiB0aGF0CiAgIGhlIGhhcyBzdWNjZXNzZnVsbHkgcnVuIHRoZSBKZW5raW5zIGxpYnZpcnQg cGx1Z2luIHdpdGggaGlzIGxpYnZpcnQKICAgbW9kaWZpY2F0aW9ucyB0byBpbnRlZ3JhdGUgd2l0 aCBiaHl2ZS4gSGUgcHJvdmlkZWQgYSBsaW5rIHRvIGEgYmxvZwogICBwb3N0aW5nIHdoZXJlIGhl IGRlc2NyaWJlZCBoaXMgZXhwZXJpZW5jZS4KCiAgIFRoaXMgcHJvamVjdCBpcyBzcG9uc29yZWQg YnkgaVhzeXN0ZW1zLCBJbmMuCgpPcGVuIHRhc2tzOgoKICAgIDEuIE9idGFpbiBjZXJ0aWZpY2F0 ZXMgZm9yIExEQVAgYW5kIHdlYiBzZXJ2ZXJzLCB0byByZXBsYWNlCiAgICAgICBzZWxmLXNpZ25l ZCBjZXJ0aWZpY2F0ZXMuCiAgICAyLiBTZXQgdXAgbW9yZSBKZW5raW5zIGJ1aWxkcyBvZiB0aGUg RnJlZUJTRCBiYXNlIHJlcG9zaXRvcnkgb24KICAgICAgIGRpZmZlcmVudCBicmFuY2hlcyBhbmQg d2l0aCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbnMuCiAgICAzLiBTZXQgdXAgbW9yZSBKZW5raW5z IGJ1aWxkcyBvZiB0aGUgRnJlZUJTRCBwb3J0cyByZXBvc2l0b3J5IG9uCiAgICAgICBkaWZmZXJl bnQgRnJlZUJTRCB2ZXJzaW9ucy4KICAgIDQuIEludGVncmF0ZSB3aXRoIEt5dWEsIHNvIHRoYXQg SmVua2lucyBjYW4gcnVuIEt5dWEgdGVzdHMgYW5kIHJlcG9ydAogICAgICAgdGhlIHJlc3VsdHMg ZGlyZWN0bHkgaW4gdGhlIG5hdGl2ZSBKZW5raW5zIHdlYiBVSSB3aGVyZSB0ZXN0CiAgICAgICBy ZXN1bHRzIGFyZSByZXBvcnRlZC4KICAgIDUuIFdyaXRlIHNjcmlwdHMgd2hpY2ggY2FuIHRha2Ug YSBKZW5raW5zIGJ1aWxkIG9mIEZyZWVCU0QsIGFuZCBib290CiAgICAgICB0aGUgcmVzdWx0cyBp biBhIGJoeXZlIFZNIG9yIG9uIHJlYWwgaGFyZHdhcmUuCiAgICA2LiBGaXggbGlicGFtNGogb24g RnJlZUJTRC4KICAgIDcuIENvbnRpbnVvdXMgVGVzdGluZyB3b3JraW5nIGdyb3VwIGF0IERldnN1 bW1pdCBvbiBNYXkgMTUsIDIwMTQKICAgIDguIEplbmtpbnMgcHJlc2VudGF0aW9uIGF0IEJTRENh biBvbiBNYXkgMTcsIDIwMTQKICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KClpGU2d1cnUKCiAgIFVSTDogaHR0cDov L3pmc2d1cnUuY29tLwoKICAgQ29udGFjdDogSmFzb24gRWR3YXJkcyA8c3ViLm1lc2FAZ21haWwu Y29tPgoKICAgWkZTZ3VydSBpcyBhIG11bHRpZnVuY3Rpb25hbCBzZXJ2ZXIgYXBwbGlhbmNlIHdp dGggYSBzdHJvbmcgZW1waGFzaXMgb24KICAgc3RvcmFnZS4gSXQgd2FudHMgdG8gZGVsaXZlciBh bGwgdGhlIGdyZWF0IEJTRCBhbmQgWkZTIHRlY2hub2xvZ3kgdG8gYQogICB3aWRlciBhdWRpZW5j ZSwgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSBwbGVhc2luZyBtb3JlIGFkdmFuY2VkIHVzZXJzIGFz CiAgIHdlbGwgd2l0aCB1bmlxdWUgZmVhdHVyZXMgYW5kIGN1c3RvbWl6YXRpb24uCgogICBBICJ2 YW5pbGxhIiBaRlNndXJ1IGluc3RhbGxhdGlvbiBjb21lcyB3aXRoIG9ubHkgU2FtYmEgYW5kIGEK ICAgd2ViLWludGVyZmFjZSBzZXR1cCwgYnV0IGNhbiBiZSBleHRlbmRlZCBlYXNpbHkgYnkgaW5z dGFsbGluZyBhZGRvbnMKICAgY2FsbGVkICJzZXJ2aWNlcyIgdG8gYWRkIGZ1bmN0aW9uYWxpdHkg YXMgZGVzaXJlZC4gVGhpcyBwcmV2ZW50cyB1c2VycwogICBmcm9tIHJ1bm5pbmcgcHJvZ3JhbXMg dGhleSBkbyBub3QgbmVlZCBhbmQgZG8gbm90IHdhbnQuIEFkdmFuY2VkIHVzZXJzCiAgIGNhbiBz dGlsbCB1c2UgWkZTZ3VydSBhcyB0aGV5IHdvdWxkIGEgbm9ybWFsIEZyZWVCU0QgaW5zdGFsbGF0 aW9uIHdpdGgKICAgYSAxMDAlIFpGUyBzZXR1cCAoIlJvb3Qtb24tWkZTIikuIFpGU2d1cnUgZG9l cyBub3Qgc3RyaXAgYXdheSBhbnl0aGluZywKICAgYW5kIHVzZXMgYSBHRU5FUklDLWxpa2Uga2Vy bmVsIHdpdGggb25seSBzb21lIGFkZGl0aW9uYWwgc2V0dGluZ3MgYWRkZWQKICAgbGlrZSBJbmZp bmlCYW5kIG5ldHdvcmtpbmcsIERldmljZSBQb2xsaW5nIGFuZCBBbHRRLiBUaGlzIG1lYW5zIHlv dSBjYW4KICAgdXNlIGEgWkZTZ3VydSBpbnN0YWxsYXRpb24gYXMgeW91IHdvdWxkIHVzZSBhIEZy ZWVCU0QgaW5zdGFsbGF0aW9uLgoKICAgSW4gdGhlIGZpcnN0IG1vbnRoIG9mIDIwMTQsIFpGU2d1 cnUgaGFzIHJlbGVhc2VkIGJldGE5IHZlcnNpb24gb2YgdGhlCiAgIHdlYiBpbnRlcmZhY2UuIFRo aXMgcmVsZWFzZSBicmluZ3MgdmFzdGx5IGltcHJvdmVkIHN1cHBvcnQgZm9yIFNhbWJhCiAgIGFu ZCBORlMgY29uZmlndXJhdGlvbi4gSW4gcGFydGljdWxhciwgaXQgYWRkcyBhIGNvbnZlbmllbnQK ICAgZHJhZy1hbmQtZHJvcCBpbnRlcmZhY2UgZm9yIFNhbWJhIHBlcm1pc3Npb25zLiBUaGlzIGFs bG93cyBub3ZpY2UgdXNlcnMKICAgdG8gY29uZmlndXJlIGFjY2VzcyB0byBzaGFyZXMgaW4gdmFy aW91cyBjb25maWd1cmF0aW9ucy4gSXQgYWxsb3dzIGJvdGgKICAgY29udHJvbCBhbmQgdXNhYmls aXR5LCB3aXRoIG5vIG1hbnVhbCBiZWluZyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8KICAgb3BlcmF0 ZSBpdC4gVGhpcyBpcyB0aGUgWkZTZ3VydSBzdHlsZS4KCiAgIE5ldyBzeXN0ZW0gdmVyc2lvbnMg aGF2ZSBiZWVuIHJlbGVhc2VkLCBiYXNlZCBvbiBGcmVlQlNEIDkuMiwgMTAuMCwgYW5kCiAgIGhl YWQuIFRoZSBleHBlcmltZW50YWwgaGVhZCB2ZXJzaW9uIGhhcyB2dCg0KSBhbmQgWC5vcmcgNy4x Mi40IGFuZCB0aGUKICAgSW50ZWwvUmFkZW9uIEtNUyBncmFwaGljcyBkcml2ZXJzLiBUaGF0IGlz LCB0aGUgbGF0ZXN0IGFuZCBncmVhdGVzdCBvZgogICBGcmVlQlNEIGdyYXBoaWNzIGRldmVsb3Bt ZW50LiBUaGUgWkZTZ3VydSBwcm9qZWN0IHBsYW5zIHRvIHJlbGVhc2UKICAgc3RhYmxlLzEwIGJ1 aWxkcyBpbiB0aGUgbmVhciBmdXR1cmUgd2hpY2ggYWxzbyBoYXZlIHRoZSBNRkNlZCBwYXRjaGVz CiAgIGZvciB2dCg0KSwgdGhlIEtNUy1lbmFibGVkIHN5c3RlbSBjb25zb2xlIHdpdGggVW5pY29k ZSBzdXBwb3J0LiBQbGVhc2UKICAgc2VlIHRoZSB2dCg0KSBlbnRyeSBmb3IgbW9yZSBpbmZvcm1h dGlvbi4KCiAgIFN1cHBvcnQgZm9yIFpGUyB2ZXJzaW9uIDUwMDAgaXMgbm93IHVuaXZlcnNhbCBh Y3Jvc3MgOS4yLCAxMC4wIGFuZCBoZWFkCiAgIGJ1aWxkcy4gTFo0IGNvbXByZXNzaW9uIGlzIHRo ZSBrZXkgZmVhdHVyZSBmb3IgWkZTIHZlcnNpb24gNTAwMC4KICAgT3RoZXJ3aXNlIHVzZXJzIGFy ZSBhZHZpc2VkIHRvIGtlZXAgdGhlaXIgcG9vbCB2ZXJzaW9ucyBhcyBpcywgdG8gYmUgYXMKICAg Y29tcGF0aWJsZSBhcyB5b3UgY2FuIHdpdGggYXMgbWFueSBaRlMgcGxhdGZvcm1zIGFzIHBvc3Np YmxlLiBPbmx5CiAgIHVwZ3JhZGUgdGhlIHBvb2wgYXMgeW91IGRlc2lyZSBpdHMgZnVuY3Rpb25h bGl0eSwgZm9yZmVpdGluZyB0aGUKICAgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHN0b3JhZ2Ug cGxhdGZvcm1zLgoKT3BlbiB0YXNrczoKCiAgICAxLiBaRlNndXJ1IGJldGExMCB3aWxsIGluY3Jl YXNlIHRoZSBjb21wYXRpYmlsaXR5IG9mIG5ld2x5IGFkZGVkIFNhbWJhCiAgICAgICBmdW5jdGlv bmFsaXR5IHdpdGggbm9uLUdlY2tvIGJyb3dzZXJzLiBJdCB3aWxsIGFsc28gZml4IHNvbWUgbWlu b3IKICAgICAgIGJ1Z3MgYXMgd2VsbCBhcyBzcGVlZCB1cCBzb21lIHBhZ2VzIGJ5IGhhdmluZyBh IHJlZGVzaWduZWQgcmVtb3RlCiAgICAgICBkYXRhYmFzZSBzeXN0ZW0gY2FsbGVkIEd1cnVEQi4K ICAgIDIuIFpGU2d1cnUgYmV0YTExIHdpbGwgYWRkIHRoZSBvbmUgbWFqb3IgZmVhdHVyZSBzdGls bCBtaXNzaW5nIGluCiAgICAgICBaRlNndXJ1OiB0aGUgTWlncmF0aW9uIE1hbmFnZXIuIFRoaXMg YWxsb3dzIHVzZXJzIHRvIG1haW50YWluIGEKICAgICAgIGZpbGUgd2l0aCBhbGwgdGhlIGNvbmZp Z3VyYXRpb24gb2YgdGhlaXIgWkZTZ3VydSBpbnN0YWxsYXRpb24uIEl0CiAgICAgICBjYW4gYmUg dXNlZCBsaWtlIGEgZmlybXdhcmUgLS0gcmVzdG9yaW5nIHRoZSBtYWNoaW5lIHRvIHRoZSBleGFj dAogICAgICAgc3RhdGUgYW5kIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHNuYXBzaG90IGNvbmZpZ3Vy YXRpb24uIEl0IGFsbG93cwogICAgICAgdXNlcnMgdG8gbWFpbnRhaW4gYSBiYWNrdXAgb2YgdGhl aXIgWkZTZ3VydSBjb25maWd1cmF0aW9uIGFuZAogICAgICAgYWxsb3dzIHVwZ3JhZGluZyB0byBh IG5ld2VyIFpGU2d1cnUgc3lzdGVtIHZlcnNpb24gd2l0aG91dCBhbnkKICAgICAgIGhhc3NsZS4K ICAgIDMuIEF1dG9tYXRlZCBzeXN0ZW0gYnVpbGRzIHNob3VsZCBicmluZyBtb3JlIHN5c3RlbSBp bWFnZSByZWxlYXNlcy4KICAgIDQuIE5ldyB3ZWJzaXRlIHdpdGggbmV3IGZvcnVtIGFuZCBuZXcg bG9naW4gc3lzdGVtLgogICAgNS4gRGV2ZWxvcGVyIHdlYnNpdGUgd2l0aCBHaXRMYWIgc2V0dXAs IGFsbG93aW5nIGJ1ZyByZXBvcnRzLCBjb2RlCiAgICAgICBjb250cmlidXRpb25zLCB3aWtpLCBh bmQgd2FsbCBtZXNzYWdlcy4gTm90ZSB0aGF0IEdpdExhYiBoYXMgYWxzbwogICAgICAgYmVlbiBw cm92aWRlZCBhcyBhIFpGU2d1cnUgc2VydmljZSwgZm9yIHRob3NlIGludGVyZXN0ZWQgaW4gdHJ5 aW5nCiAgICAgICBHaXRMYWIuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpBU0xSIGFuZCBQSUUKCiAgIFVSTDog aHR0cDovLzB4ZmVlZGZhY2Uub3JnL2Jsb2cvbGF0dGVyYS8yMDE0LTA0LTAzL2F3ZXNvbWUtZnJl ZWJzZC1hc2xyLXByb2dyZXNzCiAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL2xhdHRlcmEvZnJl ZWJzZC90cmVlL3NvbGRpZXJ4L2xhdHRlcmEvYXNscgogICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNv bS9vcG50ci9vcEJTRC90cmVlL29wL3N0YWJsZS8xMC1hc2xyCgogICBDb250YWN0OiBTaGF3biBX ZWJiIDxsYXR0ZXJhQGdtYWlsLmNvbT4KICAgQ29udGFjdDogT2xpdsOpciBQaW50w6lyIDxvbGl2 ZXIucG50ckBnbWFpbC5jb20+CgogICBBZGRyZXNzIHNwYWNlIGxheW91dCByYW5kb21pemF0aW9u IChBU0xSKSBpcyBhIGNvbXB1dGVyIHNlY3VyaXR5CiAgIHRlY2huaXF1ZSBpbnZvbHZlZCBpbiBw cm90ZWN0aW9uIGZyb20gYnVmZmVyIG92ZXJmbG93IGF0dGFja3MuIEluIG9yZGVyCiAgIHRvIHBy ZXZlbnQgYW4gYXR0YWNrZXIgZnJvbSByZWxpYWJseSBqdW1waW5nIHRvIGEgcGFydGljdWxhciBl eHBsb2l0ZWQKICAgZnVuY3Rpb24gaW4gbWVtb3J5LCBBU0xSIGludm9sdmVzIHJhbmRvbWx5IGFy cmFuZ2luZyB0aGUgcG9zaXRpb25zIG9mCiAgIGtleSBkYXRhIGFyZWFzIG9mIGEgcHJvZ3JhbSwg aW5jbHVkaW5nIHRoZSBiYXNlIG9mIHRoZSBleGVjdXRhYmxlIGFuZAogICB0aGUgcG9zaXRpb25z IG9mIHRoZSBzdGFjaywgaGVhcCwgYW5kIGxpYnJhcmllcywgaW4gYSBwcm9jZXNzJyBhZGRyZXNz CiAgIHNwYWNlLgoKICAgV2UgaGF2ZSBhZGRlZCBBU0xSIHN1cHBvcnQgdG8gYWxsIGFyY2hpdGVj dHVyZXMuIEFzIHRoZSBwcmltYXJ5CiAgIGRldmVsb3BlcnMgYmVoaW5kIHRoaXMgZmVhdHVyZSBo YXZlIHRoZSBtb3N0IGFjY2VzcyB0byBhbWQ2NCwgdGhlIGZvY3VzCiAgIG9mIGRldmVsb3BtZW50 IGlzIG9uIHRoZSBhbWQ2NCBhcmNoaXRlY3R1cmUuIE90aGVyIGFyY2hpdGVjdHVyZXMsIHN1Y2gK ICAgYXMgQVJNLCBoYXZlIGtub3duIGJ1Z3Mgd2l0aCBvdXIgY3VycmVudCBBU0xSIGltcGxlbWVu dGF0aW9uIGFuZCB3ZSBhcmUKICAgd29ya2luZyBoYXJkIHRvIGZpeCB0aGVtLiBXZSBhZGRlZCBz dXBwb3J0IGZvciBQb3NpdGlvbi1JbmRlcGVuZGVudAogICBFeGVjdXRhYmxlcyAoUElFcykgaW4g YSBudW1iZXIgb2YgYXBwbGljYXRpb25zIGluIGJhc2UuCgpPcGVuIHRhc2tzOgoKICAgIDEuIFNo YXduIGhhcyBhY2Nlc3MgdG8gYSBSYXNwYmVycnkgUGkgKFJQSSkuIFBJRSBpcyA5MCUgYnJva2Vu LiBEZWJ1ZwogICAgICAgYW5kIGZpeCBtYWpvciBpc3N1ZXMgb24gdGhlIFJQSS4gVGhlIGV4aXN0 aW5nIE5YIHN0YWNrIHByb3RlY3Rpb25zCiAgICAgICBhcmUgbm90IG9iZXllZCBvbiBSUEkuIFBy b3Blcmx5IGltcGxlbWVudGVkIEFTTFIgcmVxdWlyZXMgYSBOWAogICAgICAgc3RhY2suCiAgICAy LiBTaGF3biB3aWxsIGJlIHJlY2VpdmluZyBhIHNwYXJjNjQgYm94IG9uIEFwcmlsIDYsIDIwMTQu IEhlIHdpbGwKICAgICAgIHRlc3QgQVNMUiBvbiBzcGFyYzY0LCBpZGVudGlmeWluZyBhbmQgZml4 aW5nIGFueSBidWdzIHRoYXQgcG9wIHVwLgogICAgMy4gT2xpdsOpciBoYXMgaWRlbnRpZmllZCBv bmUgb3IgbW9yZSBidWdzIHdpdGggdGhlIExpbnV4dWxhdG9yLiBIZQogICAgICAgd2lsbCBiZSBs b29raW5nIGludG8gdGhhdCBhbmQgZml4aW5nIHRob3NlLgogICAgNC4gU2hhd24gd2lsbCBiZSBj bGVhbmluZyB1cCBjb2RlIGFuZCBhZGRpbmcgc3VwcG9ydCBmb3IgUElFIHRvIG1vcmUKICAgICAg IGFwcGxpY2F0aW9ucyBpbiBiYXNlLiBIZSB3aWxsIGFsc28gYWRkIFBJRSBzdXBwb3J0IHRvIHRo ZSBwb3J0cwogICAgICAgZnJhbWV3b3JrIGZvciBnZW5lcmFsIGNvbnN1bXB0aW9uLgogICAgNS4g U2hhd24gd2lsbCBiZSBnaXZpbmcgYSBwcmVzZW50YXRpb24gcmVnYXJkaW5nIEFTTFIgYXQgQlNE Q2FuIDIwMTQuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCgpJbnRlbCBHUFUgRHJpdmVyIFVwZGF0ZQoKICAgQ29u dGFjdDogS29uc3RhbnRpbiBCZWxvdXNvdiA8a2liQEZyZWVCU0Qub3JnPgoKICAgVGhlIHByb2pl Y3QgdG8gdXBkYXRlIHRoZSBJbnRlbCBncmFwaGljcyBjaGlwc2V0IGRyaXZlciAoaTkxNWttcykg dG8gYQogICByZWNlbnQgc25hcHNob3Qgb2YgdGhlIExpbnV4IHVwc3RyZWFtIGNvZGUgY29udGlu dWVzLiBQcm9ncmVzcyB3YXMKICAgZGVsYXllZCBieSBleHRlcm5hbCBjaXJjdW1zdGFuY2VzLCBi dXQgaXQgaXMgaG9wZWQgdG8gcmVhY2ggYSB1c2VmdWwKICAgbWlsZXN0b25lIGluIHRoZSBuZWFy IGZ1dHVyZS4KCiAgIFRoaXMgcHJvamVjdCBpcyBzcG9uc29yZWQgYnkgVGhlIEZyZWVCU0QgRm91 bmRhdGlvbi4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KCk5hdGl2ZSBpU0NTSSBTdGFjawoKICAgVVJMOiBodHRw czovL3dpa2kuZnJlZWJzZC5vcmcvTmF0aXZlJTIwaVNDU0klMjB0YXJnZXQKCiAgIENvbnRhY3Q6 IEVkd2FyZCBUb21hc3ogTmFwaWVyYWwvYSA8dHJhc3pARnJlZUJTRC5vcmc+CgogICBUaGUgbmV3 IEZyZWVCU0QgaW4ta2VybmVsIGlTQ1NJIHN0YWNrIHdhcyBmdW5jdGlvbmFsbHkgY29tcGxldGUg aW4KICAgRnJlZUJTRCAxMC4wLVJFTEVBU0UsIGJ1dCBvbmdvaW5nIGVuaGFuY2VtZW50cyBhbmQg YnVnIGZpeGVzIGFyZSBiZWluZwogICBjb21taXR0ZWQgdG8gRnJlZUJTRCBoZWFkLCB3aXRoIGEg cGxhbiB0byBtZXJnZSB0aGVtIGJhY2sgdG8gc3RhYmxlLzEwCiAgIGluIHRpbWUgZm9yIEZyZWVC U0QgMTAuMS1SRUxFQVNFLgoKICAgTWFueSBpc3N1ZXMgaGF2ZSBiZWVuIHJlc29sdmVkLCBpbmNs dWRpbmcgdmVyeSBzbG93IG9wZXJhdGlvbiB3aXRoIGRhdGEKICAgZGlnZXN0cyBlbmFibGVkLCBi dWdzIGluIHBlcnNpc3RlbnQgcmVzZXJ2YXRpb25zIHdoaWNoIGltcGFjdGVkIEh5cGVyLVYKICAg RmFpbG92ZXIgQ2x1c3RlciwgYW5kIGEgbmVnb3RpYXRpb24gcHJvYmxlbSBhZmZlY3RpbmcgRGVs bCBFcXVhbGxvZ2ljCiAgIHVzZXJzLgoKICAgVGhlcmUgaGF2ZSBhbHNvIGJlZW4gbnVtZXJvdXMg ZW5oYW5jZW1lbnRzLCBzdWNoIGFzIHN1cHBvcnQgZm9yCiAgIHJlZGlyZWN0aW9ucywgd2hpY2gg YXJlIG5lY2Vzc2FyeSBmb3Igc29tZSBIaWdoIEF2YWlsYWJpbGl0eSBzZXR1cHMsCiAgIGFuZCB0 aGUgYWJpbGl0eSB0byBtb2RpZnkgc2Vzc2lvbiBwYXJhbWV0ZXJzIGluIHRoZSBpc2NzaWN0bCB1 dGlsaXR5LgogICBQcmV2aW91c2x5IGl0IHdhcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIHRoZSBzZXNz aW9uIGFuZCBhZGQgaXQgYWdhaW4uCgogICBUaGlzIHByb2plY3QgaXMgc3BvbnNvcmVkIGJ5IFRo ZSBGcmVlQlNEIEZvdW5kYXRpb24uCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpOZXcgQXV0b21vdW50ZXIKCiAg IENvbnRhY3Q6IEVkd2FyZCBUb21hc3ogTmFwaWVyYWwvYSA8dHJhc3pARnJlZUJTRC5vcmc+Cgog ICBUaGUgYXV0b21vdW50IHByb2plY3QgaXMgbmVhcmluZyB0aGUgZnVuY3Rpb25hbCBwcm90b3R5 cGUgc3RhZ2UsIGFuZCBhCiAgIGNhbGwgZm9yIHRlc3RpbmcgaXMgZXhwZWN0ZWQgaW4gdGhlIG5l eHQgbW9udGguIFRoZSB1c2Vyc3BhY2UgcG9ydGlvbgogICBjb25zaXN0cyBvZiB0aGUgYXV0b21v dW50ZCg4KSBkYWVtb24sIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGZ1bGx5CiAgIGNvbXBhdGli bGUgd2l0aCBpdHMgY291bnRlcnBhcnRzIGluIE9TIFgsIFNvbGFyaXMsIGFuZCBMaW51eCwgYW5k IHdoaWNoCiAgIGlzIG5lYXJseSBjb21wbGV0ZS4gV29yayBvbiB0aGUga2VybmVsIGNvbXBvbmVu dCBjb250aW51ZXMuCgogICBUaGlzIHByb2plY3QgaXMgc3BvbnNvcmVkIGJ5IFRoZSBGcmVlQlNE IEZvdW5kYXRpb24uCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCgpQQ0kgU1ItSU9WIEluZnJhc3RydWN0dXJlCgog ICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9yeXN0bzMyL2ZyZWVic2QvdHJlZS9pb3ZfaXhnYmUK CiAgIENvbnRhY3Q6IFJ5YW4gU3RvbmUgPHJzdG9uZUBGcmVlQlNELm9yZz4KCiAgIFBDSSBTaW5n bGUgUm9vdCBJL08gVmlydHVhbGl6YXRpb24gKFNSLUlPVikgaXMgYW4gb3B0aW9uYWwgcGFydCBv ZiB0aGUKICAgUENJZSBzdGFuZGFyZCB0aGF0IHByb3ZpZGVzIGhhcmR3YXJlIGFjY2VsZXJhdGlv biBmb3IgdGhlCiAgIHZpcnR1YWxpemF0aW9uIG9mIFBDSWUgZGV2aWNlcy4gV2hlbiBTUi1JT1Yg aXMgaW4gdXNlLCBhIGZ1bmN0aW9uIGluIGEKICAgUENJIGRldmljZSAoa25vd24gYXMgYSBQaHlz aWNhbCBGdW5jdGlvbiwgb3IgUEYpIHdpbGwgcHJlc2VudCBtdWx0aXBsZQogICBWaXJ0dWFsIFBD SSBGdW5jdGlvbnMgKFZGKSBvbiB0aGUgUENJIGJ1cy4gVGhlc2UgVkZzIGFyZSBmdWxseQogICBp bmRlcGVuZGVudCBQQ0kgZGV2aWNlcyB0aGF0IGhhdmUgYWNjZXNzIHRvIHRoZSByZXNvdXJjZXMg b2YgdGhlIFBGLgogICBGb3IgZXhhbXBsZSwgb24gYSBuZXR3b3JrIGludGVyZmFjZSBjYXJkLCBW RnMgY291bGQgdHJhbnNtaXQgYW5kCiAgIHJlY2VpdmUgcGFja2V0cyBpbmRlcGVuZGVudCBvZiB0 aGUgUEYuCgogICBUaGUgbW9zdCBvYnZpb3VzIHVzZSBjYXNlIGZvciBTUi1JT1YgaXMgdmlydHVh bGl6YXRpb24uIEEgaHlwZXJ2aXNvcgogICBsaWtlIGJoeXZlIGNvdWxkIGluc3RhbnRpYXRlIGEg VkYgZm9yIGV2ZXJ5IFZNIGFuZCB1c2UgUENJIHBhc3N0aHJvdWdoCiAgIHRvIGFzc2lnbiB0aGUg VkZzIHRvIHRoZSBWTXMuIFRoaXMgd291bGQgYWxsb3cgbXVsdGlwbGUgVk1zIHRvIHNoYXJlCiAg IGFjY2VzcyB0byB0aGUgUENJIGRldmljZSB3aXRob3V0IGhhdmluZyB0byBkbyBhbnkgZXhwZW5z aXZlCiAgIGNvbW11bmljYXRpb24gd2l0aCB0aGUgaHlwZXJ2aXNvciwgZ3JlYXRseSBpbmNyZWFz aW5nIHBlcmZvcm1hbmNlIG9mCiAgIHBlcmZvcm1pbmcgSS9PIGZyb20gYSBWTS4KCiAgIFRoZXJl IGFyZSB0d28gcGFydHMgdG8gdGhpcyBwcm9qZWN0LiBUaGUgZmlyc3QgaXMgaW1wbGVtZW50aW5n IGFuIEFQSQogICBpbiB0aGUgUENJIHN1YnN5c3RlbSBmb3IgY3JlYXRpbmcgVkZzIGFuZCBjb25m aWd1cmluZyBzdGFuZGFyZCBQQ0kKICAgZmVhdHVyZXMgbGlrZSBCQVJzLiBUaGUgc2Vjb25kIHBh cnQgaXMgdXBkYXRpbmcgaW5kaXZpZHVhbCBkcml2ZXJzIGZvcgogICBQQ0kgZGV2aWNlcyB0aGF0 IHN1cHBvcnQgU1ItSU9WIHRvIGNvbmZpZ3VyZSB0aGVpciBWRnMuIEZvciBleGFtcGxlLCBhCiAg IG5ldHdvcmsgaW50ZXJmYWNlIGRyaXZlciB3aWxsIHR5cGljYWxseSBoYXZlIHRvIGFzc2lnbiBh IE1BQyBhZGRyZXNzIHRvCiAgIGEgVkYgYW5kIGNvbmZpZ3VyZSB0aGUgaW50ZXJmYWNlIHRvIHJv dXRlIHBhY2tldHMgZGVzdGluZWQgZm9yIHRoYXQgTUFDCiAgIGFkZHJlc3MgdG8gdGhlIFZGLgoK ICAgQXQgdGhpcyBwb2ludCBvbmx5IFNSLUlPViBzdXBwb3J0IGZvciB0aGUgaXhnYmUoNCkgZHJp dmVyIGlzIHBsYW5uZWQuCiAgIFRoZSBQQ0kgc3Vic3lzdGVtIEFQSSBpcyBkZXNpZ25lZCB0byBi ZSBnZW5lcmljIGFuZCBzaG91bGQgc3VwcG9ydAogICBTUi1JT1Ygb24gYW55IGRldmljZSwgYnV0 IGZhaXJseSBleHRlbnNpdmUgZHJpdmVyIHdvcmsgaXMgbmVjZXNzYXJ5IHRvCiAgIHN1cHBvcnQg U1ItSU9WLCB3aGljaCBpcyBjdXJyZW50bHkgbm90IHBsYW5uZWQgZHVlIHRvIGxhY2sgb2YgdGlt ZSBhbmQKICAgaGFyZHdhcmUuCgogICBBdCBwcmVzZW50LCBpeGdiZSg0KSBpcyBhYmxlIHRvIGNy ZWF0ZSBWRnMgYW5kIHRoZSBpeGdiZXZmIGRyaXZlciBpcwogICBhYmxlIHRvIHBhc3MgdHJhZmZp Yy4gVGhlcmUgaXMgc3RpbGwgYSBmYWlyIGFtb3VudCBvZiB3b3JrIHRvIHN1cHBvcnQKICAgVkxB TiB0YWdzLCBtdWx0aWNhc3QgYWRkcmVzc2VzLCBhbmQgb3RoZXIgZmVhdHVyZXMgb24gdGhlIFZG cy4gQWxzbywKICAgdGhlIFZGIGNvbmZpZ3VyYXRpb24gbmVlZHMgdG8gYmUgYmV0dGVyIGludGVn cmF0ZWQgd2l0aCB0aGUgUEYKICAgaW5pdGlhbGl6YXRpb24gcGF0aCB0byBlbnN1cmUgdGhhdCBy ZXNldHMgb2YgdGhlIFBGIGRvIG5vdCBpbnRlcnJ1cHQKICAgb3BlcmF0aW9uIG9mIHRoZSBWRnMu CgogICBUaGlzIHByb2plY3QgaXMgc3BvbnNvcmVkIGJ5IFNhbmR2aW5lLCBJbmMuCiAgICAgX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCgpTRElPIERyaXZlcgoKICAgVVJMOiBodHRwczovL3dpa2kuZnJlZWJzZC5vcmcvU0RJ TwogICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9raWJhYi9mcmVlYnNkL3RyZWUvbW1jY2FtCgog ICBDb250YWN0OiBJbHlhIEJha3VsaW4gPGlseWFAYmFrdWxpbi5kZT4KCiAgIFNESU8gaXMgYW4g aW50ZXJmYWNlIGRlc2lnbmVkIGFzIGFuIGV4dGVuc2lvbiBvZiB0aGUgZXhpc3RpbmcgU0QgY2Fy ZAogICBzdGFuZGFyZCwgYWxsb3dpbmcgY29ubmVjdGlvbiBvZiBkaWZmZXJlbnQgcGVyaXBoZXJh bHMgdG8gdGhlIGhvc3Qgd2l0aAogICB0aGUgc3RhbmRhcmQgU0QgY29udHJvbGxlci4gUGVyaXBo ZXJhbHMgY3VycmVudGx5IHNvbGQgb24gdGhlIGdlbmVyYWwKICAgbWFya2V0IGluY2x1ZGUgV0xB Ti9CVCBtb2R1bGVzLCBjYW1lcmFzLCBmaW5nZXJwcmludCByZWFkZXJzLCBhbmQKICAgYmFyY29k ZSBzY2FubmVycy4gVGhlIEZyZWVCU0QgZHJpdmVyIGlzIGltcGxlbWVudGVkIGFzIGFuIGV4dGVu c2lvbiB0bwogICB0aGUgZXhpc3RpbmcgTU1DIGJ1cywgYWRkaW5nIGEgbG90IG9mIG5ldyBTRElP LXNwZWNpZmljIGJ1cyBtZXRob2RzLiBBCiAgIHByb3RvdHlwZSBvZiB0aGUgZHJpdmVyIGZvciB0 aGUgTWFydmVsbCBTRElPIFdMQU4vQlQgKEF2YXN0YXIgODhXODc4NykKICAgbW9kdWxlIGlzIGFs c28gYmVpbmcgZGV2ZWxvcGVkLCB1c2luZyB0aGUgZXhpc3RpbmcgTGludXggZHJpdmVyIGFzIGEK ICAgcmVmZXJlbmNlLgoKICAgU0RJTyBjYXJkIGRldGVjdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24g YWxyZWFkeSB3b3JrOyBtb3N0IG5lZWRlZCBidXMKICAgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQg YW5kIHRlc3RlZC4KCiAgIFRoZSBXaUZpIGRyaXZlciBpcyBhYmxlIHRvIGxvYWQgZmlybXdhcmUg b250byB0aGUgY2FyZCBhbmQgaW5pdGlhbGl6ZQogICBpdC4gTWlncmF0aW9uIG9mIHRoZSBNTUMg c3RhY2sgdG8gdGhlIG5ldyBsb2NraW5nIG1vZGVsIGlzIG5lY2Vzc2FyeSBpbgogICBvcmRlciB0 byB3b3JrIHdpdGggU0RJTyBjYXJkcyBlZmZlY3RpdmVseS4gVGhlIEZyZWVCU0QgQ0FNCiAgIGlt cGxlbWVudGF0aW9uIGlzIGJlbGlldmVkIHRvIGJlIGEgZ29vZCBjaG9pY2UuIFRoZXJlIGlzIG9u Z29pbmcgd29yawogICB0byBpbXBsZW1lbnQgYW4gTU1DIHRyYW5zcG9ydCBmb3IgQ0FNLgoKT3Bl biB0YXNrczoKCiAgICAxLiBTRElPIHN0YWNrOiBmaW5pc2ggQ0FNIG1pZ3JhdGlvbi4gVGhlIFhQ VCBsYXllciBpcyBhbG1vc3QgcmVhZHkuCiAgICAgICBXaGF0IGlzIG1pc3NpbmcgaXMgYSBTSU0g bW9kdWxlLCBmb3Igd2hpY2ggYSBtb2RpZmllZCB2ZXJzaW9uIG9mCiAgICAgICB0aGUgU0RIQ0kg Y29udHJvbGxlciBkcml2ZXIgd2lsbCBiZSB1c2VkLCBhbmQgYSBwZXJpcGhlcmFsIG1vZHVsZSwK ICAgICAgIHdoZXJlIHBvcnRpbmcgdGhlIG1tY3NkKDQpIGRyaXZlciBpcyByZXF1aXJlZC4KICAg IDIuIE1hcnZlbGwgU0RJTyBXaUZpOiBjb25uZWN0IGl0IHRvIHRoZSBGcmVlQlNEIG5ldHdvcmsg c3RhY2ssIHdyaXRlCiAgICAgICB0aGUgY29kZSB0byBpbXBsZW1lbnQgcmVxdWlyZWQgZnVuY3Rp b25zLCBzdWNoIGFzIHNlbmRpbmcgYW5kCiAgICAgICByZWNlaXZpbmcgZGF0YSwgbmV0d29yayBz Y2FubmluZyBhbmQgc28gb24uCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpVRUZJIEJvb3QKCiAgIFVSTDogaHR0 cHM6Ly93aWtpLmZyZWVic2Qub3JnL1VFRkkKCiAgIENvbnRhY3Q6IEVkIE1hc3RlIDxlbWFzdGVA RnJlZUJTRC5vcmc+CgogICBUaGUgVW5pZmllZCBFeHRlbnNpYmxlIEZpcm13YXJlIEludGVyZmFj ZSAoVUVGSSkgcHJvdmlkZXMgYm9vdC0gYW5kCiAgIHJ1bi10aW1lIHNlcnZpY2VzIGZvciB4ODYg Y29tcHV0ZXJzLCBhbmQgaXMgYSByZXBsYWNlbWVudCBmb3IgdGhlCiAgIGxlZ2FjeSBCSU9TLiBU aGlzIHByb2plY3Qgd2lsbCBhZGFwdCB0aGUgRnJlZUJTRCBsb2FkZXIgYW5kIGtlcm5lbCBib290 CiAgIHByb2Nlc3MgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBVRUZJIGZpcm13YXJlLCBmb3VuZCBv biBjb250ZW1wb3JhcnkKICAgc2VydmVycywgZGVza3RvcHMsIGFuZCBsYXB0b3BzLgoKICAgU3Rh cnRpbmcgd2l0aCBSdWkgUGF1bG8ncyBpMzg2IEVGSSBsb2FkZXIsIEJlbm5vIFJpY2UgZGV2ZWxv cGVkIGEKICAgd29ya2luZyBwcm9vZi1vZi1jb25jZXB0IGFtZDY0IGxvYWRlciBpbiAyMDEzIHVu ZGVyIHNwb25zb3JzaGlwIGZyb20KICAgdGhlIEZyZWVCU0QgRm91bmRhdGlvbi4gQWZ0ZXIgcmVm aW5lbWVudCwgdGhhdCB3b3JrIGhhcyBub3cgYmVlbiBtZXJnZWQKICAgZnJvbSB0aGUgcHJvamVj dHMvdWVmaSBTdWJ2ZXJzaW9uIGJyYW5jaCBpbnRvIEZyZWVCU0QgaGVhZC4gVGhlIHByb2plY3QK ICAgaW5jbHVkZXMgdGhlIGluZnJhc3RydWN0dXJlIHRvIGJ1aWxkIGEgVUVGSS1lbmFibGVkIGxv YWRlciwgYW5kIHRoZQogICBrZXJuZWwtc2lkZSBjaGFuZ2VzIHRvIHBhcnNlIG1ldGFkYXRhIHBy b3ZpZGVkIGJ5IHRoZSBsb2FkZXIuCgogICBBIG51bWJlciBvZiBpbnRlZ3JhdGlvbiB0YXNrcyBy ZW1haW4sIHdpdGggYSBwbGFuIHRvIGhhdmUgVUVGSQogICBpbnN0YWxsYXRpb24gYW5kIGJvb3Qg c3VwcG9ydCBtZXJnZWQgdG8gc3RhYmxlLzEwIGluIHRpbWUgZm9yIEZyZWVCU0QKICAgMTAuMS1S RUxFQVNFLgoKICAgVGhpcyBwcm9qZWN0IGlzIHNwb25zb3JlZCBieSBUaGUgRnJlZUJTRCBGb3Vu ZGF0aW9uLgoKT3BlbiB0YXNrczoKCiAgICAxLiBEb2N1bWVudCBtYW51YWwgaW5zdGFsbGF0aW9u LCBpbmNsdWRpbmcgZHVhbC1ib290IGNvbmZpZ3VyYXRpb25zLgogICAgMi4gSW1wbGVtZW50IGNo YWluLWxvYWRpbmcgZnJvbSBVRlMvWkZTIGZpbGUgc3lzdGVtcy4KICAgIDMuIEludGVncmF0ZSBV RUZJIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgRnJlZUJTRCBpbnN0YWxsZXIuCiAgICA0LiBTdXBw b3J0IHNlY3VyZSBib290LgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKVXBkYXRlZCB2dCg0KSBTeXN0ZW0gQ29u c29sZQoKICAgVVJMOiBodHRwczovL3dpa2kuZnJlZWJzZC5vcmcvTmV3Y29ucwoKICAgQ29udGFj dDogQWxla3NhbmRyIFJ5YmFsa28gPHJheUBGcmVlQlNELm9yZz4KICAgQ29udGFjdDogRWQgTWFz dGUgPGVtYXN0ZUBGcmVlQlNELm9yZz4KICAgQ29udGFjdDogRWQgU2Nob3V0ZW4gPGVkQEZyZWVC U0Qub3JnPgoKICAgdnQoNCkgaXMgYSBtb2Rlcm4gcmVwbGFjZW1lbnQgZm9yIHRoZSBleGlzdGlu ZywgcXVpdGUgb2xkLCB2aXJ0dWFsCiAgIHRlcm1pbmFsIGVtdWxhdG9yIGNhbGxlZCBzeXNjb25z KDQpLiBJbml0aWFsbHkgbW90aXZhdGVkIGJ5IHRoZSBsYWNrIG9mCiAgIFVuaWNvZGUgc3VwcG9y dCBhbmQgaW5mcmFzdHJ1Y3R1cmFsIGlzc3VlcyBpbiBzeXNjb25zKDQpLCB0aGUgcHJvamVjdAog ICB3YXMgbGF0ZXIgZXhwYW5kZWQgdG8gY292ZXIgdGhlIG5ldyByZXF1aXJlbWVudCB0byBzdXBw b3J0IEtlcm5lbCBNb2RlCiAgIFNldHRpbmcgKEtNUykuCgogICBUaGUgcHJvamVjdCBpcyBub3cg aW4gaGVhZCwgc3RhYmxlLzEwIGFuZCBzdGFibGUvOSBicmFuY2hlcy4gSGVuY2UsCiAgIHZ0KDQp IGNhbiBiZSB0ZXN0ZWQgYnkgdXNpbmcgdGhlIFZUIGtlcm5lbCBjb25maWd1cmF0aW9uIChpMzg2 IGFuZAogICBhbWQ2NCkgb3IgYnkgcmVwbGFjaW5nIHR3byBsaW5lcyBpbiB0aGUgR0VORVJJQyBr ZXJuZWwgY29uZmlndXJhdGlvbgogICBmaWxlOgoKZGV2aWNlIHNjCmRldmljZSB2Z2EKCiAgIHdp dGggdGhlIGZvbGxvd2luZyBvbmVzOgoKZGV2aWNlIHZ0CmRldmljZSB2dF92Z2EKCiAgIE9yLCB0 byB1c2UgZm9yIFVFRkkgdGVzdGluZywgYWRkIHRoZSBmb2xsb3dpbmcgbGluZXMgaW5zdGVhZDoK CmRldmljZSB2dApkZXZpY2UgdnRfZWZpZmIKCiAgIE1ham9yIGhpZ2hsaWdodHM6CgogICAgICog VW5pY29kZSBzdXBwb3J0LgogICAgICogRG91YmxlLXdpZHRoIGNoYXJhY3RlciBzdXBwb3J0IGZv ciBDSksgY2hhcmFjdGVycy4KICAgICAqIHh0ZXJtKDEpLWxpa2UgdGVybWluYWwgZW11bGF0aW9u LgogICAgICogU3VwcG9ydCBmb3IgS2VybmVsIE1vZGUgU2V0dGluZyAoS01TKSBkcml2ZXJzIChp OTE1a21zLCByYWRlb25rbXMpLgogICAgICogU3VwcG9ydCBmb3IgZGlmZmVyZW50IGZvbnRzIHBl ciB0ZXJtaW5hbCB3aW5kb3cuCiAgICAgKiBTaW1wbGlmaWVkIGRyaXZlcnMuCgogICBCcmllZiBz dGF0dXMgb2Ygc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgYW5kIGhhcmR3YXJlOgoKICAgICAqIGFt ZDY0IChWR0EvaTkxNWttcy9yYWRlb25rbXMpIC0tIHdvcmtzLgogICAgICogQVJNIGZyYW1lYnVm ZmVyIC0tIHdvcmtzLgogICAgICogaTM4NiAoVkdBL2k5MTVrbXMvcmFkZW9ua21zKSAtLSB3b3Jr cy4KICAgICAqIElBNjQgLS0gdW50ZXN0ZWQuCiAgICAgKiBNSVBTIC0tIHVudGVzdGVkLgogICAg ICogUFBDIGFuZCBQUEM2NCAtLSB3b3JrLCBidXQgd2l0aG91dCBYLk9yZyB5ZXQuCiAgICAgKiBT UEFSQyAtLSB3b3JrcyBvbiBjZXJ0YWluIGhhcmR3YXJlIChlLmcuLCBVbHRyYSA1KS4KICAgICAq IHZlc2EoNCkgLS0gaW4gcHJvZ3Jlc3MuCiAgICAgKiBpMzg2L2FtZDY0IG5WaWRpYSBkcml2ZXIg LS0gbm90IHN1cHBvcnRlZC4gVkdBIHNob3VsZCBiZSB1c2VkIChWRVNBCiAgICAgICBwbGFubmVk KS4KICAgICAqIFhib3ggZnJhbWVidWZmZXIgZHJpdmVyIC0tIHdpbGwgYmUgZGVsZXRlZCBhcyB1 bnVzZWQuCgogICBUaGlzIHByb2plY3QgaXMgc3BvbnNvcmVkIGJ5IFRoZSBGcmVlQlNEIEZvdW5k YXRpb24uCgpPcGVuIHRhc2tzOgoKICAgIDEuIENyZWF0ZSBzdWItZGlyZWN0b3JpZXMgZm9yIHZ0 KDQpIHVuZGVyIC91c3Ivc2hhcmUvIHRvIHN0b3JlIGtleQogICAgICAgbWFwcyBhbmQgZm9udHMu CiAgICAyLiBJbXBsZW1lbnQgdGhlIHJlbWFpbmluZyBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdmlk Y29udHJvbCgxKS4KICAgIDMuIFdyaXRlIHRoZSB2dCg0KSBtYW51YWwgcGFnZS4gKFRoaXMgaXMg aW4gcHJvZ3Jlc3MuKQogICAgNC4gU3VwcG9ydCBkaXJlY3QgaGFuZGxpbmcgb2Yga2V5Ym9hcmQg YnkgdGhlIGtiZCBkZXZpY2UgKHdpdGhvdXQKICAgICAgIGtiZG11eCg0KSkuCiAgICA1LiBDSksg Zm9udHMuIChUaGlzIGlzIGluIHByb2dyZXNzKS4KICAgIDYuIEFkZHJlc3MgcGVyZm9ybWFuY2Ug aXNzdWVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy4KICAgIDcuIFN3aXRjaCB0byB2dCg0KSBieSBk ZWZhdWx0LgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwoKYmh5dmUKCiAgIFVSTDogaHR0cDovL3d3dy5iaHl2ZS5v cmcvCiAgIFVSTDogaHR0cDovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWxUT2lTeXUwLU1BCgog ICBDb250YWN0OiBQZXRlciBHcmVoYW4gPGdyZWhhbkBGcmVlQlNELm9yZz4KICAgQ29udGFjdDog TmVlbCBOYXR1IDxuZWVsQEZyZWVCU0Qub3JnPgogICBDb250YWN0OiBKb2huIEJhbGR3aW4gPGpo YkBGcmVlQlNELm9yZz4KICAgQ29udGFjdDogVHljaG8gTmlnaHRpbmdhbGUgPHR5Y2hvbkBGcmVl QlNELm9yZz4KICAgQ29udGFjdDogQWxsYW4gSnVkZSA8ZnJlZWJzZEBhbGxhbmp1ZGUuY29tPgoK ICAgYmh5dmUgaXMgYSBUeXBlLTEgaHlwZXJ2aXNvciB0aGF0IHJ1bnMgb24gdGhlIEZyZWVCU0Qg cGxhdGZvcm0uIEl0CiAgIGN1cnJlbnRseSBvbmx5IHJ1bnMgRnJlZUJTRCAoOS54IG9yIGxhdGVy KSBhbmQgTGludXggZ3Vlc3RzOyBjdXJyZW50CiAgIGRldmVsb3BtZW50IGVmZm9ydHMgYWltIGF0 IHdpZGVuaW5nIHN1cHBvcnQgZm9yIG90aGVyIHg4NiA2NC1iaXQKICAgb3BlcmF0aW5nIHN5c3Rl bXMuIEFmdGVyIGEgZ3JlYXQgZGVhbCBvZiB3b3JrIGJ5IGFsbCBpbnZvbHZlZCwgYmh5dmUKICAg d2FzIHNoaXBwZWQgYXMgcGFydCBvZiBGcmVlQlNEIDEwLjAtUkVMRUFTRS4gSW5jcmVhc2VkIGlu dGVyZXN0IGluCiAgIGJoeXZlIGFuZCB0aGUgZmlyc3QgdXNhYmxlIHZlcnNpb25zIGhhdmUgcHJv dmlkZWQgZ3JlYXQgZmVlZGJhY2sgYW5kCiAgIG1hbnkgYnVnIHJlcG9ydHMuCgogICBBIG51bWJl ciBvZiBpbXBvcnRhbnQgaW1wcm92ZW1lbnRzIGhhdmUgYmVlbiBtYWRlIHRvIGJoeXZlIHRoaXMK ICAgcXVhcnRlcjoKCiAgICAgKiBPcHRpb25hbGx5IGlnbm9yZSBhY2Nlc3NlcyB0byB1bmltcGxl bWVudGVkIE1TUnMKICAgICAqIFN1cHBvcnQgc29mdCBwb3dlci1vZmYgdmlhIHRoZSBBQ1BJIFM1 IHN0YXRlIGZvciBiaHl2ZSBndWVzdHMKICAgICAqIEdyYWNlZnVsIHNodXRkb3duIHZpYSBBQ1BJ IG9uIFNJR1RFUk0KICAgICAqIEZpeCBhbiBpc3N1ZSB3aXRoIHZpcnRpby1ibGsgZGV2aWNlcyBv biBMaW51eCBndWVzdHMgd2l0aCBtb3JlIHRoYW4KICAgICAgIDRHQiBvZiBSQU0KICAgICAqIElu Y3JlYXNlIHRoZSBibG9jay1sYXllciBiYWNrZW5kIG1heGltdW0gcmVxdWVzdHMgdG8gbWF0Y2gg QUhDSQogICAgICAgY29tbWFuZCBxdWV1ZSBkZXB0aAogICAgICogQWRkIFNNQklPUyBzdXBwb3J0 CiAgICAgKiBJbXByb3ZlIHN1cHBvcnQgZm9yIG5tZG0sIG9wZW5pbmcgdGhlIHR0eSBub24tYmxv Y2tpbmcKICAgICAqIEFkZCBIUEVUIGRldmljZSBlbXVsYXRpb24KICAgICAqIEltcGxlbWVudCB0 aGUgIlZpcnR1YWwgSW50ZXJydXB0IERlbGl2ZXJ5IiBhbmQgIlBvc3RlZCBJbnRlcnJ1cHQKICAg ICAgIFByb2Nlc3NpbmciIFZULXggZmVhdHVyZXMgb24gbmV3ZXIgSW50ZWwgQ1BVcwogICAgICog QWRkIHN1cHBvcnQgZm9yIGJvb3RpbmcgRnJlZUJTRC9pMzg2IGd1ZXN0cwogICAgICogQWRkIHZp cnR1YWxpemVkIFhTQVZFIHN1cHBvcnQgZm9yIGZlYXR1cmVzIGxpa2UgQVZYCiAgICAgKiBBZGQg U3VwcG9ydCBmb3IgYm9vdGluZyBmcm9tIFpGUyB3aXRoIGJoeXZlbG9hZAoKT3BlbiB0YXNrczoK CiAgICAxLiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCiAgICAyLiBXcml0ZSBIYW5kYm9vayBjaGFw dGVyIGZvciBiaHl2ZS4KICAgIDMuIE1lcmdlIGZpeGVzIGFuZCBmZWF0dXJlcyBiYWNrIHRvIHN0 YWJsZS8xMC4KICAgIDQuIFN1cHBvcnQgZm9yIGJvb3Rpbmcgd2l0aCBVRUZJIGluc3RlYWQgb2Yg dXNlcnNwYWNlIGxvYWRlcnMuCiAgICA1LiBDU00gQklPUyBib290IHN1cHBvcnQgZm9yIEZyZWVC U0QgKHdoaWNoIGhhcyBubyBVRUZJIHN1cHBvcnQKICAgICAgIGN1cnJlbnRseSkuCiAgICA2LiBB ZGQgc3VwcG9ydCBmb3IgdmlydGlvLXNjc2kuCiAgICA3LiBJbXByb3ZlIHZpcnRpby1uZXQsIGFk ZCBvZmZsb2FkIGZlYXR1cmVzLCBzdXBwb3J0IG11bHRpcGxlIHF1ZXVlcy4KICAgIDguIEltcGxl bWVudCBJbnRlbCA4MjU4MCBhbmQgZTEwMDAgTklDIGVtdWxhdGlvbi4KICAgIDkuIE5ldG1hcCBz dXBwb3J0LgogICAxMC4gRmxleGlibGUgbmV0d29ya2luZyBiYWNrZW5kOiB3YW5wcm94eSwgdmhv c3QtbmV0LgogICAxMS4gSW1wcm92ZSByZXNvdXJjZSBhY2NvdW50aW5nLgogICAxMi4gTW92ZSB0 byBhIHNpbmdsZSBwcm9jZXNzIG1vZGVsLCBpbnN0ZWFkIG9mIGJoeXZlbG9hZCBhbmQgYmh5dmUu CiAgIDEzLiBTdXBwb3J0IHJ1bm5pbmcgYmh5dmUgYXMgbm9uLXJvb3QuCiAgIDE0LiBBZGQgZmls dGVycyBmb3IgcG9wdWxhciBWTSBmaWxlIGZvcm1hdHMgKFZNREssIFZIRCwgUUNPVzIpLgogICAx NS4gSW1wbGVtZW50IGFuIGFic3RyYWN0aW9uIGxheWVyIGZvciB2aWRlbyAobm8gWDExIG9yIFNE TCBpbiBiYXNlCiAgICAgICBzeXN0ZW0pLgogICAxNi4gU3VwcG9ydCBmb3IgVk5DIGFzIGEgdmlk ZW8gb3V0cHV0LgogICAxNy4gSW1wbGVtZW50IFVTQiBhbmQgU291bmQuCiAgIDE4LiBTdXNwZW5k L3Jlc3VtZSBzdXBwb3J0LgogICAxOS4gTGl2ZSBNaWdyYXRpb24uCiAgIDIwLiBOZXN0ZWQgVlQt eCBzdXBwb3J0IChiaHl2ZSBpbiBiaHl2ZSkuCiAgIDIxLiBTdXBwb3J0IGZvciBvdGhlciBhcmNo aXRlY3R1cmVzIChBUk0sIE1JUFMsIFBQQykuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpGcmVlQlNEIEhvc3Qg U3VwcG9ydCBmb3IgT3BlblN0YWNrIGFuZCBPcGVuQ29udHJhaWwKCiAgIFVSTDogaHR0cDovL3d3 dy5vcGVuc3RhY2sub3JnLwogICBVUkw6IGh0dHA6Ly93d3cub3BlbmNvbnRyYWlsLm9yZy8KICAg VVJMOiBodHRwczovL2dpdGh1Yi5jb20vU2VtaWhhbGYvb3BlbnN0YWNrLWRldnN0YWNrCiAgIFVS TDogaHR0cHM6Ly9naXRodWIuY29tL1NlbWloYWxmL29wZW5zdGFjay1ub3ZhCiAgIFVSTDogaHR0 cHM6Ly9naXRodWIuY29tL1NlbWloYWxmL2NvbnRyYWlsLXZyb3V0ZXIKICAgVVJMOiBodHRwczov L2JsdWVwcmludHMubGF1bmNocGFkLm5ldC9ub3ZhLytzcGVjL2ZyZWVic2QtY29tcHV0ZS1ub2Rl CgogICBDb250YWN0OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KICAgQ29u dGFjdDogTWljaGHFgiBEdWJpZWwgPG1kQHNlbWloYWxmLmNvbT4KICAgQ29udGFjdDogRG9taW5p ayBFcm1lbCA8ZGVyQHNlbWloYWxmLmNvbT4KICAgQ29udGFjdDogUmFmYcWCIEphd29yb3dza2kg PHJhakBzZW1paGFsZi5jb20+CgogICBPcGVuU3RhY2sgaXMgYSBjbG91ZCBvcGVyYXRpbmcgc3lz dGVtIHRoYXQgY29udHJvbHMgbGFyZ2UgcG9vbHMgb2YKICAgY29tcHV0ZSwgc3RvcmFnZSwgYW5k IG5ldHdvcmtpbmcgcmVzb3VyY2VzIGluIGEgZGF0YSBjZW50ZXIuCiAgIE9wZW5Db250cmFpbCBp cyBhIG5ldHdvcmsgdmlydHVhbGl6YXRpb24gKFNETikgc29sdXRpb24gY29tcHJpc2luZyBhCiAg IG5ldHdvcmsgY29udHJvbGxlciwgdmlydHVhbCByb3V0ZXIsIGFuZCBhbmFseXRpY3MgZW5naW5l LCB3aGljaCBjYW4gYmUKICAgaW50ZWdyYXRlZCB3aXRoIGNsb3VkIG9yY2hlc3RyYXRpb24gc3lz dGVtcyBsaWtlIE9wZW5TdGFjayBvcgogICBDbG91ZFN0YWNrLgoKICAgVGhlIGdvYWwgb2YgdGhp cyB3b3JrIGlzIHRvIG1ha2UgRnJlZUJTRCBhIGZ1bGx5IHN1cHBvcnRlZCBjb21wdXRlIGhvc3QK ICAgZm9yIE9wZW5TdGFjayB1c2luZyBPcGVuQ29udHJhaWwgdmlydHVhbGl6ZWQgbmV0d29ya2lu Zy4gVGhlIG1haW4gYXJlYXMKICAgb2YgZGV2ZWxvcG1lbnQgYXJlOgoKICAgICAqIExpYnZpcnQg aHlwZXJ2aXNvciBkcml2ZXIgZm9yIGJoeXZlLgogICAgICogU3VwcG9ydCBmb3IgYmh5dmUgKHZp YSB0aGUgbGlidmlydCBjb21wdXRlIGRyaXZlcikgYW5kIHRoZSBGcmVlQlNECiAgICAgICBwbGF0 Zm9ybSBpbiBvdmVyYWxsIGluIG5vdmEtY29tcHV0ZS4KICAgICAqIFBvcnQgT3BlbkNvbnRyYWls IHZSb3V0ZXIgKGZvcndhcmRpbmcgcGxhbmUga2VybmVsIG1vZHVsZSkgdG8KICAgICAgIEZyZWVC U0QuCiAgICAgKiBQb3J0IE9wZW5Db250cmFpbCBBZ2VudCAobmV0d29yayBjb250cm9sbGVyIG5v ZGUpIHRvIEZyZWVCU0QuCiAgICAgKiBJbnRlZ3JhdGlvbiwgcGVyZm9ybWFuY2Ugb3B0aW1pemF0 aW9uLgoKICAgVGhlIGN1cnJlbnQgc3RhdGUgb2YgZGV2ZWxvcG1lbnQgYWxsb3dzIGZvciBhIHdv cmtpbmcgZGVtbyBvZiBPcGVuU3RhY2sKICAgd2l0aCBjb21wdXRlIG5vZGUgY29tcG9uZW50IHJ1 bm5pbmcgb24gYSBGcmVlQlNEIGhvc3Q6CgogICAgICogVGhlIG5hdGl2ZSBiaHl2ZSBoeXBlcnZp c29yIGlzIGRyaXZlbiBieSBhIG5vdmEtY29tcHV0ZSBjb21wb25lbnQKICAgICAgIGZvciBzcGF3 bmluZyBndWVzdCBpbnN0YW5jZXMgdXNpbmcgbGlidmlydCBhbmQgYSBub3ZhLW5ldHdvcmsKICAg ICAgIGNvbXBvbmVudCBmb3IgcHJvdmlkaW5nIHNpbXBsZSBuZXR3b3JraW5nIHVzaW5nIGJyaWRn ZXMgYmV0d2VlbgogICAgICAgZ3Vlc3QgVk1zLgogICAgICogUUVNVSBtaWdodCBhbHNvIGJlIHVz ZWQgaW5zdGVhZCBvZiBiaHl2ZSB0aGlzIHdheS4KICAgICAqIFRoZSBtYWluIGdvYWwgb24gdGhl IG5ldHdvcmtpbmcgc2lkZSBpcyB0byB1c2UgdGhlIE9wZW5Db250cmFpbAogICAgICAgc29sdXRp b24sIGNvbXBsaWFudCB3aXRoIHRoZSBtb2Rlcm4gT3BlblN0YWNrIG5ldHdvcmtpbmcgQVBJCiAg ICAgICAoIm5ldXRyb24iKS4KCiAgIEFsc28sIGFuIGluaXRpYWwgcG9ydCBvZiB0aGUgT3BlbkNv bnRyYWlsIHZSb3V0ZXIga2VybmVsIG1vZHVsZSBoYXMKICAgYmVlbiBjb21wbGV0ZWQuIEl0IHN1 Y2Nlc3NmdWxseSBoYW5kbGVzIGFsbCBuZXR3b3JraW5nIG9uIHRoZSBob3N0LgoKICAgVGhpcyBw cm9qZWN0IGlzIHNwb25zb3JlZCBieSBKdW5pcGVyIE5ldHdvcmtzLgogICAgIF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoK RnJlZUJTRCBvbiBDaHJvbWVib29rCgogICBVUkw6IGh0dHBzOi8vd2lraS5mcmVlYnNkLm9yZy9G cmVlQlNEL2FybS9DaHJvbWVib29rCgogICBDb250YWN0OiBSdXNsYW4gQnVraW4gPGJyQEZyZWVC U0Qub3JnPgoKICAgT25lIG1vZGVsIG9mIENocm9tZWJvb2sgaXMgYW4gQVJNdjcgQ29ydGV4LUEx NSBwZXJzb25hbCBjb21wdXRlcgogICBwb3dlcmVkIGJ5IGEgU2Ftc3VuZyBFeHlub3MgNSBEdWFs IFN5c3RlbS1vbi1DaGlwLiBBcyBvZiB0aGUgY3VycmVudAogICBzdGF0dXMgb2YgdGhpcyBwcm9q ZWN0LCBzdWNoIGxhcHRvcHMgY2FuIGJlIGJvb3RlZCB3aXRoIEZyZWVCU0QgZnJvbQogICBVU0Ig Zmxhc2ggLS0gaXQgd29ya3Mgc3RhYmx5IChpbmNsdWRpbmcgU01QKSBhbmQgaXQgY2FuIGJ1aWxk CiAgIHRoaXJkLXBhcnR5IGFwcGxpY2F0aW9ucy4gVGhlIGRpc3BsYXkgYW5kIGtleWJvYXJkIHdv cmsuCgogICBUaGFua3MgdG8gUGV0ZXIgR3JlaGFuIGZvciBwcm92aWRpbmcgaGFyZHdhcmUuCgpP cGVuIHRhc2tzOgoKICAgIDEuIEltcGxlbWVudCBrZXlib2FyZCBwb2xsaW5nIG1vZGUuCiAgICAy LiBBZGQgc3VwcG9ydCBmb3IgdGhlIHVwY29taW5nIHNlY29uZCBnZW5lcmF0aW9uIG9mIENocm9t ZWJvb2suCiAgICAzLiBXcml0ZSBTRCwgU0FUQSBkcml2ZXJzLgogICAgIF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKRnJl ZUJTRC9hcm02NAoKICAgVVJMOiBodHRwOi8vc3Zud2ViLmZyZWVic2Qub3JnL2Jhc2UvcHJvamVj dHMvYXJtNjQvCiAgIFVSTDogaHR0cHM6Ly9naXRodWIuY29tL3p4b21iaWUvYWFyY2g2NC1mcmVl YnNkLXNhbmRib3gKCiAgIENvbnRhY3Q6IEFuZHJldyBUdXJuZXIgPGFuZHJld0BGcmVlQlNELm9y Zz4KCiAgIEFybTY0IGlzIHRoZSBuYW1lIG9mIHRoZSBpbi1wcm9ncmVzcyBwb3J0IG9mIEZyZWVC U0QgdG8gdGhlIEFSTXY4IENQVQogICB3aGVuIGl0IGlzIGluIEFBcmNoNjQgbW9kZS4gVW50aWwg cmVjZW50bHksIGFsbCBBUk0gQ1BVIGRlc2lnbnMgd2VyZQogICAzMi1iaXQgb25seS4gV2l0aCB0 aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBBUk12OCBhcmNoaXRlY3R1cmUsIEFSTSBoYXMKICAgYWRk ZWQgYSBuZXcgNjQtYml0IG1vZGUuIFRoaXMgbmV3IG1vZGUgaGFzIGJlZW4gbmFtZWQgQUFyY2g2 NC4KCiAgIFByb2dyZXNzIGhhcyBiZWVuIGdvb2Qgb24gZ2V0dGluZyBGcmVlQlNEIHRvIGJ1aWxk IGFuZCBydW4gb24gdGhlIEFSTQogICBGb3VuZGF0aW9uIG1vZGVsLiBGcmVlQlNEIGlzIGFibGUg dG8gYmUgYnVpbHQgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLAogICBob3dldmVyLCBpdCByZXF1aXJl cyBhIG51bWJlciBvZiBleHRlcm5hbCB0b29scyBpbmNsdWRpbmcgb2JqZHVtcCgxKQogICBhbmQg bGQoMSkuIFRoZXNlIHRvb2xzIGFyZSBwcm92aWRlZCBieSBhbiBleHRlcm5hbCBjb3B5IG9mIGJp bnV0aWxzCiAgIHVudGlsIHJlcGxhY2VtZW50cyBjYW4gYmUgd3JpdHRlbi4KCiAgIEZyZWVCU0Qg d2lsbCBydW4gdGhlIGVhcmx5IGJvb3Qgb24gdGhlIEZvdW5kYXRpb24gbW9kZWwuIFRoZSBsb2Fk ZXIgaGFzCiAgIGJlZW4gcG9ydGVkIHRvIHRoZSBBQXJjaDY0IFVFRkkgZW52aXJvbm1lbnQgYW5k IGNhbiBsb2FkIGFuZCBydW4gdGhlCiAgIGtlcm5lbC4gVGhlIGtlcm5lbCBpcyBhYmxlIHRvIGNy ZWF0ZSB0aGUgaW5pdGlhbCBwYWdlIHRhYmxlcyB0byBiZSBhYmxlCiAgIHRvIHJ1biBmcm9tIHZp cnR1YWwgbWVtb3J5LiBJdCBjYW4gdGhlbiBleGVjdXRlIEMgY29kZSB0byBwYXJzZSB0aGUKICAg bWVtb3J5IG1hcCBwcm92aWRlZCBieSB0aGUgbG9hZGVyLiBUaGlzIGlzIGFzIGZhciBhcyB0aGUg a2VybmVsCiAgIGN1cnJlbnRseSBib290cy4KCiAgIFRoaXMgd29yayBpcyBub3cgaGFwcGVuaW5n IGluIHRoZSBGcmVlQlNEIFN1YnZlcnNpb24gcmVwb3NpdG9yeSBpbiBhCiAgIHByb2plY3QgYnJh bmNoLCBzZWUgdGhlIGxpbmtzLgoKT3BlbiB0YXNrczoKCiAgICAxLiBJbXBsZW1lbnQgYW4gaW5p dGlhbCBwbWFwKDkpIGxheWVyLgogICAgMi4gV3JpdGUgdGhlIG1pc3NpbmcgbWFjaGluZS1kZXBl bmRlbnQgY29kZS4KICAgIDMuIFRlc3Qgb24gcmVhbCBoYXJkd2FyZS4KICAgICBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K CkZyZWVCU0QvYXJtdjZoZgoKICAgQ29udGFjdDogQW5kcmV3IFR1cm5lciA8YW5kcmV3QEZyZWVC U0Qub3JnPgoKICAgRnJlZUJTRCBoYXMgYmVlbiB1cGRhdGVkIHRvIGFsbG93IGl0IHRvIHVzZSB0 aGUgVkZQIHZhcmlhbnQgb2YgdGhlIEFSTQogICBFQUJJIEFCSS4gVGhlIFZGUCB1bml0IGlzIHRo ZSBBUk0gaGFyZHdhcmUgdG8gcGVyZm9ybSBmbG9hdGluZy1wb2ludAogICBvcGVyYXRpb25zLiBU aGlzIGNoYW5nZXMgdGhlIEFCSSB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBjb2RlCiAg IHRoYXQgdXNlcyBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zLiBCeSBkZWZhdWx0LCBGcmVlQlNE IGFscmVhZHkgdXNlcwogICB0aGUgQVJNIEVBQkkgb24gYWxsIHJlbGVhc2VzIGZyb20gMTAuMC4K CiAgIFRoaXMgaXMgaW1wb3J0YW50IGZvciBGcmVlQlNEL2FybSB1c2VycyBydW5uaW5nIGNvZGUg d2l0aAogICBmbG9hdGluZy1wb2ludCBvcGVyYXRpb25zIG9uIEFSTXY2IG9yIEFSTXY3IFNvQyBz eXN0ZW1zLiBJdCByZW1vdmVzIHRoZQogICBuZWVkIGZvciB0aGUgc2xvdyBzb2Z0d2FyZSBmbG9h dGluZy1wb2ludCBzdXBwb3J0IGluIGxpYmMuIFRoaXMgaXMKICAgbW9zdGx5IGNvbXBhdGlibGUg d2l0aCB0aGUgZXhpc3RpbmcgQUJJLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgaG93CiAgIGZsb2F0 aW5nLXBvaW50IHZhbHVlcyBhcmUgcGFzc2VkIGludG8gZnVuY3Rpb25zLiBCZWNhdXNlIG5vCiAg IGZsb2F0aW5nLXBvaW50IHZhbHVlcyBhcmUgcGFzc2VkIHRvIHRoZSBrZXJuZWwsIHRoZSBhcm12 NiBhbmQgYXJtdjZoZgogICBrZXJuZWxzIHdpbGwgd29yayB3aXRoIGVpdGhlciB1c2VybGFuZC4K CiAgIEFzIHBhcnQgb2YgdGhpcyBjaGFuZ2UsIHNvbWUgc3VwcG9ydCBmdW5jdGlvbnMgaGF2ZSBi ZWVuIHVwZGF0ZWQgdG8gdXNlCiAgIHRoZSBWRlAgdW5pdCB3aGVuIGF2YWlsYWJsZS4gVGhlIGV4 aXN0aW5nIGFybXY2IHRhcmdldCBhcmNoaXRlY3R1cmUKICAgd2lsbCBiZSBrZXB0IGZvciBjYXNl cyB3aGVyZSB0aGUgU29DIGxhY2tzIGEgVkZQIHVuaXQsIG9yIGV4aXN0aW5nCiAgIGJpbmFyaWVz IHRoYXQgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZSBuZXcgQUJJLgoKT3BlbiB0YXNrczoKCiAg ICAxLiBUZXN0aW5nLgogICAgMi4gTW9yZSB0ZXN0aW5nLgogICAgIF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKU01QIG9u IE11bHRpLUNvcmUgQVJNIFN5c3RlbXMKCiAgIFVSTDogaHR0cDovL2xpc3RzLmZyZWVic2Qub3Jn L3BpcGVybWFpbC9mcmVlYnNkLWFybS8yMDE0LUFwcmlsLzAwNzg4Ni5odG1sCgogICBDb250YWN0 OiBJYW4gTGVwb3JlIDxpYW5ARnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IE9saXZpZXIgSG91Y2hh cmQgPGNvZ25ldEBjaTAub3JnPgogICBDb250YWN0OiBXb2pjaWVjaCBNYWNlayA8d21hQHNlbWlo YWxmLmNvbT4KCiAgIEZyZWVCU0Qgbm93IHN1cHBvcnRzIFN5bW1ldHJpY2FsIE11bHRpUHJvY2Vz c2luZyAoU01QKSBvbiBhIHZhcmlldHkgb2YKICAgQVJNIG11bHRpLWNvcmUgc3lzdGVtcy4gVGhl IGVmZm9ydCB0byBicmluZyBTTVAgdG8gQVJNIGhhcyBiZWVuCiAgIHVuZGVyd2F5IGZvciBxdWl0 ZSBzb21lIHRpbWUsIGJ1dCBhIG1ham9yIHB1c2ggYnkgdGhlIEZyZWVCU0QgQVJNCiAgIGRldmVs b3BlciBjb21tdW5pdHkgb3ZlciB0aGUgcGFzdCB0d28gbW9udGhzIGhhcyByZXN1bHRlZCBpbiBy b2J1c3QKICAgcHJvZHVjdGlvbi1yZWFkeSBTTVAgc3VwcG9ydC4KCiAgIEFuIGV2ZXItZ3Jvd2lu ZyBudW1iZXIgb2YgQVJNLWJhc2VkIGRldmVsb3BtZW50IGJvYXJkcyBhbmQgc21hbGwKICAgbG93 LXBvd2VyIGNvbXB1dGVyIHN5c3RlbXMgYXJlIGF2YWlsYWJsZSB3aXRoIG11bHRpLWNvcmUgcHJv Y2Vzc29ycy4KICAgRnJlZUJTRCBpcyBub3cgYWJsZSB0byBtYWtlIGdvb2QgdXNlIG9mIGFsbCB0 aGF0IGNvbXB1dGluZyBwb3dlciwKICAgbWFraW5nIHN1Y2ggc3lzdGVtcyBtb3JlIGF0dHJhY3Rp dmUgdG8gYm90aCBlbmQgdXNlcnMgYW5kIHZlbmRvcnMKICAgbG9va2luZyB0byBjcmVhdGUgcHJv ZHVjdHMgYmFzZWQgb24gc2ltaWxhciBkZXNpZ25zLgoKICAgQXMgb2YgcjI2NDEzOCBpbiBGcmVl QlNEIGhlYWQsIFNNUCBpcyBub3cgZW5hYmxlZCBieSBkZWZhdWx0IGluIHRoZQogICBjb25maWd1 cmF0aW9uIGZpbGVzIGZvciBhbGwgY3VycmVudGx5LXN1cHBvcnRlZCBzeXN0ZW1zIHRoYXQgaGF2 ZQogICBtdWx0aS1jb3JlIHByb2Nlc3NvcnMuIFRoaXMgaW5jbHVkZXMgc3lzdGVtcyBiYXNlZCBv biB0aGUgZm9sbG93aW5nCiAgIHByb2Nlc3NvciBmYW1pbGllczoKCiAgICAgKiBBbGx3aW5uZXIg QTIwCiAgICAgKiBGcmVlc2NhbGUgaS5NWDYKICAgICAqIE1hcnZlbGwgQXJtYWRhIFhQCiAgICAg KiBTYW1zdW5nIEV4eW5vcyA1CiAgICAgKiBUZXhhcyBJbnN0cnVtZW50cyBPTUFQNAoKICAgV2Ug cGxhbiB0byBtZXJnZSB0aGlzIHdvcmsgdG8gc3RhYmxlLzEwIGluIHRpbWUgZm9yIDEwLjEtUkVM RUFTRS4KCiAgIFRoaXMgcHJvamVjdCBpcyBzcG9uc29yZWQgYnkgTWljcm9zZW1pLCBJbmMuLCBh bmQgU2VtaWhhbGYgc3Auai4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCmF1ZGl0ZGlzdGQoOCkKCiAgIENvbnRh Y3Q6IFBhd2VsIEpha3ViIERhd2lkZWsgPHBqZEBGcmVlQlNELm9yZz4KCiAgIFRoZSBhdWRpdGRp c3RkKDgpIGRhZW1vbiBpcyByZXNwb25zaWJsZSBmb3IgZGlzdHJpYnV0aW5nIGF1ZGl0IHRyYWls CiAgIGZpbGVzIG92ZXIgVENQL0lQIG5ldHdvcmtzIHNlY3VyZWx5IGFuZCByZWxpYWJseS4KCiAg IFRoZSBkYWVtb24gbm93IHN1cHBvcnRzIGNsaWVudC1zaWRlIGNlcnRpZmljYXRlcywgd2hpY2gg Y2FuIGJlIHVzZWQgdG8KICAgYXV0b21hdGljYWxseSBjb25maWd1cmUgdGhlIHJlY2VpdmVyIHNp ZGUgLS0gdGhlIGRpcmVjdG9yeSBuYW1lIGZvcgogICByZWNlaXZlZCB0cmFpbCBmaWxlcyBpcyBk ZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBjb21tb25OYW1lIGZpZWxkIGluCiAgIGNsaWVudCdzIGNl cnRpZmljYXRlLiBUaGVyZSBpcyBubyBuZWVkIGFueSBtb3JlIHRvIGFkZCBldmVyeSBzZW5kZXIg dG8KICAgdGhlIHJlY2VpdmVyJ3MgY29uZmlndXJhdGlvbiBmaWxlLgoKICAgVGhlIHNlbmRlcidz IGZ1bmN0aW9uYWxpdHkgd2FzIGV4dGVuZGVkIHRvIGFsbG93IHNlbmRpbmcgYXVkaXQgdHJhaWwK ICAgZmlsZXMgdG8gbXVsdGlwbGUgcmVjZWl2ZXJzLgoKICAgQ29tcGxldGUgUHVibGljIEtleSBJ bmZyYXN0cnVjdHVyZSAoUEtJKSBzdXBwb3J0IGlzIG5vdyBpbXBsZW1lbnRlZCwKICAgaW5jbHVk aW5nIGZ1bGwgY2VydGlmaWNhdGUgY2hhaW4gdmVyaWZpY2F0aW9uLCBDZXJ0aWZpY2F0ZSBSZXZv Y2F0aW9uCiAgIExpc3RzIChDUkwpIHZlcmlmaWNhdGlvbiBhdCBldmVyeSBsZXZlbCBhbmQgc3Vw cG9ydCBmb3IgbXVsdGlwbGUKICAgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IChDQSkgY2VydGlmaWNh dGVzLgoKICAgVGhpcyBwcm9qZWN0IGlzIHNwb25zb3JlZCBieSBUaGUgRnJlZUJTRCBGb3VuZGF0 aW9uLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwoKRXh0ZXJuYWwgVG9vbGNoYWluIEltcHJvdmVtZW50cwoKICAg VVJMOiBodHRwczovL3dpa2kuZnJlZWJzZC5vcmcvRXh0ZXJuYWxUb29sY2hhaW4KCiAgIENvbnRh Y3Q6IFdhcm5lciBMb3NoIDxpbXBARnJlZUJTRC5vcmc+CgogICBCdWlsZGluZyBvbiB0aGUgd29y ayB0aGF0IEJyb29rcyBEYXZpcyBkaWQgdG8gZW5hYmxlIGV4dGVybmFsIENsYW5nCiAgIHRvb2xj aGFpbnMsIHRoaXMgcHJvamVjdCBob3BlcyB0byBnZW5lcmFsaXplIHRoYXQgdG8gR0NDLCBhcyB3 ZWxsIGFzCiAgIHN1cHBvcnQgZGlmZmVyZW50IHZlcnNpb25zIG9mIHRoZXNlIGNvbXBpbGVycyBz aW11bHRhbmVvdXNseSBmb3IgdGhlCiAgIEZyZWVCU0QgYmFzZSBzeXN0ZW0gYW5kIHRoZSBrZXJu ZWwuIFdlIGFsc28gaG9wZSBnZXQgdG8gdGhlIHBvaW50IHRoYXQKICAgYSBwb3J0IGNhbiBiZSBj cm9zcy1jb21waWxlZCBlbnRpcmVseSBmcm9tIHNjcmF0Y2ggd2l0aCBubyBpbml0aWFsCiAgIGJp bmFyeSBhcnRpZmFjdHMuCgpPcGVuIHRhc2tzOgoKICAgIDEuIFNldHVwIFN1YnZlcnNpb24gcHJv amVjdCByZXBvc2l0b3J5LgogICAgMi4gRml4IGlzc3VlcyB3aXRoIGRpZmZlcmVuY2VzIG9mIGlu dGVycHJldGF0aW9uIG9mIHRoZSAtQiBhcmd1bWVudAogICAgICAgYmV0d2VlbiBHQ0MgYW5kIENs YW5nLgogICAgMy4gU3VwcG9ydCBidWlsZGluZyB0aGUgZW50aXJlIHRyZWUgYmFzZWQgb25seSBv biB4ZGV2LWJ1aWx0CiAgICAgICBjb21waWxlcnMuCiAgICA0LiBTdXBwb3J0IGJ1aWxkaW5nIHRo ZSBlbnRpcmUgdHJlZSBiYXNlZCBvbmx5IG9uIHBvcnRzLWJ1aWx0IEdDQwogICAgICAgY29tcGls ZXJzLgogICAgNS4gU3VwcG9ydCBmdWxsIGJvb3RzdHJhcHBpbmcgb2YgRnJlZUJTRCB0byBuZXcg cGxhdGZvcm1zLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwoKRm9yd2FyZCBQb3J0IEZyZWVCU0QgR0NDCgogICBD b250YWN0OiBXYXJuZXIgTG9zaCA8aW1wQEZyZWVCU0Qub3JnPgoKICAgTm90IGFsbCBvZiB0aGUg RnJlZUJTRCBjaGFuZ2VzIHRvIEdDQyBoYXZlIGJlZW4gcmVmbGVjdGVkIHVwc3RyZWFtLiBBCiAg IGxhcmdlIGFtb3VudCBvZiB0aGUgcGxhdGZvcm0gc3VwcG9ydCBhcyB3ZWxsIGFzIGEgY291cGxl IG9mIG1pbm9yCiAgIGltcHJvdmVtZW50cyBsaWtlIHRoZSBrZXJuZWwgZm9ybWF0dGluZyBjaGVj a2VyIG5lZWQgdG8gYmUgZm9yd2FyZAogICBwb3J0ZWQgKGFuZCBpZiBwb3NzaWJsZSwgbW92ZWQg dXBzdHJlYW0gaW50byBHQ0MpLgoKICAgV2Ugd2lsbCBiZSB0YXJnZXRpbmcgdGhlIEZyZWVCU0Qg cG9ydHMgdHJlZSBsYW5nL2djYyogcG9ydHMgZm9yIHRoZXNlCiAgIGVmZm9ydHMgdG8gKG9wdGlv bmFsbHkpIGluY2x1ZGUgdGhlbSBpbiB0aGVzZSBidWlsZHMuIFNvbWUgdmFyaWF0aW9uCiAgIGZy b20gbm9ybWFsIGJ1aWxkcyBtYXkgYmUgcmVxdWlyZWQgZHVlIHRvIGJvb3RzdHJhcHBpbmcgaXNz dWVzIHdoZW4KICAgY29tYmluZWQgd2l0aCB0aGUgZXh0ZXJuYWwgdG9vbGNoYWluIGVuaGFuY2Vt ZW50cyBwcm9qZWN0LgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKRnJlZUJTRCBUZXN0IFN1aXRlCgogICBVUkw6 IGh0dHA6Ly93aWtpLkZyZWVCU0Qub3JnL1Rlc3RTdWl0ZQogICBVUkw6IGh0dHA6Ly9reXVhMS5u eWkuRnJlZUJTRC5vcmcvCiAgIFVSTDogaHR0cDovL2p1bGlwZWRpYS5tZXJvaC5uZXQvMjAxNC8w MS9mcmVlYnNkLXRlc3Qtc3VpdGUtZ29hbHMtYW5kLXBsYW5uaW5nLmh0bWwKICAgVVJMOiBodHRw czovL2RyaXZlLmdvb2dsZS5jb20vYS9tZXJvaC5uZXQvI2ZvbGRlcnMvMEIwOGctWDFrUGtTWU5t bEVkVEI1UmpsRmJrawoKICAgQ29udGFjdDogSnVsaW8gTWVyaW5vIDxqbW12QEZyZWVCU0Qub3Jn PgoKICAgVGhlIEZyZWVCU0QgVGVzdCBTdWl0ZSBwcm9qZWN0IGFpbXMgdG8gZXF1aXAgRnJlZUJT RCB3aXRoIGEKICAgY29tcHJlaGVuc2l2ZSBjb2xsZWN0aW9uIG9mIHRlc3RzIHRoYXQgYXJlIGVh c3kgdG8gcnVuIG91dCBvZiB0aGUgYm94CiAgIGFuZCBkdXJpbmcgdGhlIGRldmVsb3BtZW50IG9m IHRoZSBzeXN0ZW0uIFRoZSB0ZXN0IHN1aXRlIGlzIGluc3RhbGxlZAogICBpbnRvIC91c3IvdGVz dHMvIGFuZCB0aGUga3l1YSgxKSBjb21tYW5kLWxpbmUgdG9vbCAoZGV2ZWwva3l1YSBpbiB0aGUK ICAgUG9ydHMgQ29sbGVjdGlvbikgaXMgdXNlZCB0byBydW4gdGhlbS4gU2VlIHRoZSBwcm9qZWN0 IHBhZ2UgZm9yIG1vcmUKICAgZGV0YWlscy4KCiAgIFNpbmNlIHRoZSBsYXN0IHN0YXR1cyByZXBv cnQsIHdlIGhhdmUgYmVlbiBoYXJkIGF0IHdvcmsgcG9saXNoaW5nIHRoZQogICBmcmFtZXdvcmsg aW4gbWFueSBkaWZmZXJlbnQgYXJlYXMuIFRoZSBoaWdobGlnaHRzIGFyZToKCiAgICAgKiBBIHJv YWRtYXAgZm9yIHRoZSBwcm9qZWN0IGhhcyBiZWVuIHByZXBhcmVkIGFuZCBwdWJsaXNoZWQsIHNl ZQogICAgICAgbGlua3MuCiAgICAgKiBNYW55IHRlc3RzIGhhdmUgYmVlbiBhZGRlZCB0byB0aGUg dGVzdCBzdWl0ZSB0aGFua3MgdG8gdGhlIHdvcmsgb2YKICAgICAgIHZhcmlvdXMgZGV2ZWxvcGVy cyBhbmQsIGluIHBhcnRpY3VsYXIsIGEgZ29vZCBidW5jaCBvZiBvbGQgdGVzdHMKICAgICAgIGZy b20gc3JjL3Rvb2xzL3JlZ3Jlc3Npb24vIGhhdmUgYmVlbiBpbmNvcnBvcmF0ZWQgaW50byB0aGUg bmV3IHRlc3QKICAgICAgIHN1aXRlLiBBcyBvZiB0aGlzIHdyaXRpbmcsIHRoZXJlIGFyZSA1MDkg dGVzdCBjYXNlcyBjb250aW51b3VzbHkKICAgICAgIHJ1bm5pbmcuCiAgICAgKiBUaGUgdGVzdGlu ZyBpbmZyYXN0cnVjdHVyZSBpbiB0aGUgc3RhYmxlLzEwIGJyYW5jaCBoYXMgYmVlbiBzeW5jZWQK ICAgICAgIHRvIGhlYWQuIEl0IHNob3VsZCBub3cgYmUgcG9zc2libGUgdG8gc2VhbWxlc3NseSBN RkMgY2hhbmdlcyB0byB0aGUKICAgICAgIHN0YWJsZSBicmFuY2ggYWxvbmcgd2l0aCB0aGVpciB0 ZXN0cywgaWYgYW55LgogICAgICogVGhlIHRlc3RpbmcgY2x1c3Rlciwgd2hpY2ggb25seSBpc3N1 ZWQgYW1kNjQgYnVpbGRzLCBoYXMgYmVlbgogICAgICAgZXh0ZW5kZWQgdG8gcGVyZm9ybSBpMzg2 IGJ1aWxkcyBhcyB3ZWxsLiBBZGRpdGlvbmFsbHksIGEgY2FuYXJ5CiAgICAgICBtYWNoaW5lIGhh cyBiZWVuIHB1dCBpbiBwbGFjZSBzbyB0aGF0IGNoYW5nZXMgdG8gdGhlIGNsdXN0ZXIKICAgICAg IGNvbmZpZ3VyYXRpb24gY2FuIGJlIHByb3Blcmx5IHZhbGlkYXRlZCBiZWZvcmUgZGVwbG95bWVu dC4KICAgICAqIEEgdHV0b3JpYWwgb24gS3l1YSBhbmQgdGhlIEZyZWVCU0QgVGVzdCBTdWl0ZSB3 YXMgZ2l2ZW4gYXQKICAgICAgIEFzaWFCU0RDb24gMjAxNC4gVGhlIHR1dG9yaWFsIG1hdGVyaWFs cyBhcmUgYXZhaWxhYmxlIGZvciBwdWJsaWMKICAgICAgIGNvbnN1bXB0aW9uLCBwbGVhc2UgY29u c3VsdCB0aGUgbGlua3MuCiAgICAgKiBCb3RoIEt5dWEncyBhbmQgQVRGJ3MgdXBzdHJlYW0gc2l0 ZXMgaGF2ZSBiZWVuIG1vdmVkIHRvIEdpdEh1YiwKICAgICAgIG1vc3RseSBkdWUgdG8gdGhlIGRp c2NvbnRpbnVhdGlvbiBvZiBmaWxlIGRvd25sb2FkcyBpbiBHb29nbGUgQ29kZS4KCk9wZW4gdGFz a3M6CgogICAgMS4gRW5hYmxlIHRoZSBidWlsZCBvZiB0aGUgdGVzdCBzdWl0ZSBieSBkZWZhdWx0 LgogICAgMi4gQWRkIGFsZXJ0aW5nIGZvciBmYWlsZWQgb3IgbWlzc2luZyB0ZXN0IHJ1bnMgZnJv bSB0aGUgdGVzdGluZwogICAgICAgY2x1c3Rlci4KICAgIDMuIEFkZCBiaHl2ZSBzdXBwb3J0IHRv IHRoZSB0ZXN0aW5nIGNsdXN0ZXIgZm9yIGZhc3RlciB0dXJuYXJvdW5kCiAgICAgICB0aW1lcy4K ICAgIDQuIFNpbXBsaWZ5IGFuZCBpbXByb3ZlIEt5dWEgSFRNTCByZXBvcnRzLiBJbiBwYXJ0aWN1 bGFyLCByZXBvcnRzIHdpbGwKICAgICAgIGJlIGNvYWxlc2NlZCBpbnRvIHNpbmdsZSBIVE1MIGZp bGVzIGZvciBlYXNpZXIgbWFuYWdlbWVudCBhbmQgd2lsbAogICAgICAgaW5jbHVkZSBtb3JlIHVz ZWZ1bCBkZXRhaWxzIGZvciBkZWJ1Z2dpbmcuIFN1Y2ggZGV0YWlscyBhcmUgdGhlCiAgICAgICBy ZXZpc2lvbiBhdCB3aGljaCB0aGUgc3lzdGVtIHdhcyBidWlsdCwgdGhlIGRhdGUgYW5kIGR1cmF0 aW9uIG9mCiAgICAgICB0aGUgd2hvbGUgcnVuLCBvciB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgcGFj a2FnZXMsIHRvIG1lbnRpb24gYSBmZXcKICAgICAgIGV4YW1wbGVzLgogICAgNS4gQWRkIEpVbml0 IFhNTCBvdXRwdXQgdG8gS3l1YSBmb3IgYmV0dGVyIGludGVncmF0aW9uIHdpdGggSmVua2lucy4K ICAgICAgIFRoaXMgd29yayBpcyBhY3RpdmVseSBvbmdvaW5nIGFuZCBzaG91bGQgYmUgcmVhZHkg Zm9yIHByaW1lIHRpbWUgYXQKICAgICAgIEJTRENhbiAyMDE0LgogICAgIF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKTExE QiBEZWJ1Z2dlciBQb3J0CgogICBVUkw6IGh0dHBzOi8vd2lraS5GcmVlQlNELm9yZy9sbGRiCgog ICBDb250YWN0OiBFZCBNYXN0ZSA8ZW1hc3RlQEZyZWVCU0Qub3JnPgoKICAgTExEQiBpcyB0aGUg ZGVidWdnZXIgcHJvamVjdCBhc3NvY2lhdGVkIHdpdGggQ2xhbmcvTExWTS4gSXQgc3VwcG9ydHMK ICAgdGhlIE1hYyBPUyBYLCBMaW51eCwgYW5kIEZyZWVCU0QgcGxhdGZvcm1zLCB3aXRoIG9uZ29p bmcgd29yayBvbgogICBXaW5kb3dzLiBJdCBidWlsZHMgb24gZXhpc3RpbmcgY29tcG9uZW50cyBp biB0aGUgbGFyZ2VyIExMVk0gcHJvamVjdCwKICAgZm9yIGV4YW1wbGUgdXNpbmcgQ2xhbmcncyBl eHByZXNzaW9uIHBhcnNlciBhbmQgTExWTSdzIGRpc2Fzc2VtYmxlci4KCiAgIFRoZSBtYWpvcml0 eSBvZiB3b3JrIHNpbmNlIHRoZSBsYXN0IHN0YXR1cyB1cGRhdGUgaGFzIGJlZW4gb24gYnVnZml4 ZXMKICAgYW5kIGltcGxlbWVudGF0aW9uIG9mIHRoZSByZW1haW5pbmcgZnVuY3Rpb25hbGl0eSBt aXNzaW5nIG9uIEZyZWVCU0QuCiAgIE1vc3Qgb2YgdGhlc2UgaW1wcm92ZW1lbnRzIGFyZSBub3cg aW4gdGhlIExMREIgc25hcHNob3QgaW4gdGhlIGJhc2UKICAgc3lzdGVtLCB3aGljaCBoYXMgYmVl biB1cGRhdGVkIHRvIHVwc3RyZWFtIFN1YnZlcnNpb24gcmV2aXNpb24gcjIwMjE4OS4KICAgU29t ZSBoaWdobGlnaHRzIG9mIHRoZSBuZXcgdXBkYXRlIGluY2x1ZGU6CgogICAgICogSW1wcm92ZW1l bnRzIHRvIHRoZSByZW1vdGUgR0RCIHByb3RvY29sIGNsaWVudC4KICAgICAqIEJ1ZyBmaXhlcyBm b3IgYmlnLWVuZGlhbiB0YXJnZXRzLgogICAgICogSW5pdGlhbCBzdXBwb3J0IGZvciBsaWJkaXNw YXRjaCAoR0NEKSBxdWV1ZXMgaW4gdGhlIGRlYnVnZ2VlLgogICAgICogQWRkICJzdGVwLWF2b2lk LWxpYnJhcmllcyIgc2V0dGluZy4KICAgICAqIElPIHN1YnN5c3RlbSBpbXByb3ZlbWVudHMgKGlu Y2x1ZGluZyBpbml0aWFsIHdvcmsgb24gYSBjdXJzZXMgR1VJKS4KICAgICAqIFN1cHBvcnQgaGFy ZHdhcmUgd2F0Y2hwb2ludHMuCiAgICAgKiBJbXByb3ZlZCB1bndpbmRpbmcgdGhyb3VnaCBoYW5k LXdyaXR0ZW4gYXNzZW1ibHkgZnVuY3Rpb25zLgogICAgICogSGFuZGxlIERXX1RBR191bnNwZWNp ZmllZF9wYXJhbWV0ZXJzIGZvciB2YXJpYWRpYyBmdW5jdGlvbnMuCiAgICAgKiBGaXggQ3RybCtD IGludGVycnVwdGluZyBhIHJ1bm5pbmcgaW5mZXJpb3IgcHJvY2Vzcy4KICAgICAqIFZhcmlvdXMg YnVnIGZpeGVzIGZvciBtZW1vcnkgbGVha3MsIExMREIgc2VnZmF1bHRzLCB0aGUgQysrCiAgICAg ICBkZW1hbmdsZXIsIEVMRiBjb3JlIGZpbGVzLCBEV0FSRiBkZWJ1ZyBpbmZvLCBhbmQgb3RoZXJz LgoKICAgTExEQiBpcyBjdXJyZW50bHkgbm90IHlldCBidWlsdCBieSBkZWZhdWx0IGFuZCBtYXkg YmUgZW5hYmxlZCBieSBhZGRpbmcKICAgV0lUSF9MTERCPSB0byBzcmMuY29uZig1KS4gQSBwb3J0 IHdpbGwgYmUgbWFkZSBhdmFpbGFibGUgZm9yIHRob3NlIHdobwogICB3aXNoIHRvIHRyYWNrIG9u Z29pbmcgZGV2ZWxvcG1lbnQgbW9yZSBjbG9zZWx5LgoKICAgVGhpcyBwcm9qZWN0IGlzIHNwb25z b3JlZCBieSBEQVJQL0FGUkwsIFNSSSBJbnRlcm5hdGlvbmFsLCBhbmQKICAgVW5pdmVyc2l0eSBv ZiBDYW1icmlkZ2UuCgpPcGVuIHRhc2tzOgoKICAgIDEuIEFkZCBzdXBwb3J0IGZvciByZW1vdGUg ZGVidWdnaW5nIChnZGJzZXJ2ZXItY29tcGF0aWJsZQogICAgICAgZGVidWdzZXJ2ZXIpLgogICAg Mi4gQWRkIHN1cHBvcnQgZm9yIGxvY2FsIGFuZCBjb3JlIGZpbGUga2VybmVsIGRlYnVnZ2luZy4K ICAgIDMuIEltcGxlbWVudCwgZml4IG9yIHRlc3Qgc3VwcG9ydCBvbiBhbGwgbm9uLWFtZDY0IGFy Y2hpdGVjdHVyZXMuCiAgICA0LiBWZXJpZnkgY3Jvc3MtZGVidWdnaW5nLgogICAgNS4gSW52ZXN0 aWdhdGUgYW5kIGZpeCB0ZXN0IHN1aXRlIGZhaWx1cmVzLgogICAgNi4gUGFja2FnZSBMTERCIGFz IGEgcG9ydC4KICAgIDcuIEVuYWJsZSBieSBkZWZhdWx0IGluIHRoZSBiYXNlIHN5c3RlbSBmb3Ig d29ya2luZyBhcmNoaXRlY3R1cmVzLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKQ2hyb21pdW0KCiAgIFVSTDog aHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvSG9tZQogICBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9n bGlhc2tvcy9mcmVlYnNkLWNocm9taXVtCiAgIFVSTDogaHR0cHM6Ly93aWtpLmZyZWVic2Qub3Jn L0Nocm9taXVtCgogICBDb250YWN0OiBDaHJvbWl1bSBvbiBGcmVlQlNEIFRlYW0gPGZyZWVic2Qt Y2hyb21pdW1ARnJlZUJTRC5vcmc+CgogICBDaHJvbWl1bSBpcyB0aGUgb3BlbiBzb3VyY2Ugd2Vi IGJyb3dzZXIgcHJvamVjdCBmcm9tIHdoaWNoIEdvb2dsZQogICBDaHJvbWUgZHJhd3MgaXRzIHNv dXJjZSBjb2RlLiBUaGUgYnJvd3NlcnMgc2hhcmUgdGhlIG1ham9yaXR5IG9mIGNvZGUKICAgYW5k IGZlYXR1cmVzLCB0aG91Z2ggdGhlcmUgYXJlIHNvbWUgbWlub3IgZGlmZmVyZW5jZXMgaW4gZmVh dHVyZXMgYW5kCiAgIHRoZXkgaGF2ZSBkaWZmZXJlbnQgbGljZW5zaW5nLiBPdmVyIHRoZSBsYXN0 IGZvdXIgeWVhcnMsIHRoZSBDaHJvbWl1bQogICB0ZWFtIGhhcyBiZWVuIGJ1c3kgd2l0aCBwb3J0 aW5nIENocm9taXVtIHRvIEZyZWVCU0QuIFRoaXMgaW52b2x2ZXMKICAgcGF0Y2hpbmcgdGhlIGJy b3dzZXIgc28gdGhhdCBpdCBydW5zIG9uIEZyZWVCU0QsIHRyYWNraW5nIGFuZAogICBkb2N1bWVu dGluZyBzZWN1cml0eSB1cGRhdGVzLCBhbmQgbWVyZ2luZyBwYXRjaGVzIGJhY2sgdXBzdHJlYW0u CgogICBXaGlsZSB0aGVyZSBhcmUgYWxyZWFkeSBzZXZlcmFsIGJyb3dzZXJzIGF2YWlsYWJsZSBm b3IgRnJlZUJTRCwKICAgYWR2YW50YWdlcyBvZiBDaHJvbWl1bSBhcmU6CgogICAgICogUXVpY2sg cmVzcG9uc2UgZnJvbSB1cHN0cmVhbSB0byBzZWN1cml0eSBpc3N1ZXMsIHJlc3VsdGluZyBpbgog ICAgICAgYXBwcm94aW1hdGVseSBiaS13ZWVrbHkgdXBkYXRlcy4KICAgICAqIEEgdGVzdGJlZCBm b3Igc2VjdXJpdHkgZmVhdHVyZXMgb2YgRnJlZUJTRCwgbGlrZSBDYXBzaWN1bS4gV2hpbGUKICAg ICAgIHN1cHBvcnQgZm9yIHRoaXMgY2FwYWJpbGl0eSBhbmQgc2FuZGJveCBmcmFtZXdvcmsgaXMg Y3VycmVudGx5IG5vdAogICAgICAgaW5jbHVkZWQgaW4gdGhlIGJyb3dzZXIsIGEgcHJvb2Ytb2Yt Y29uY2VwdCBpbXBsZW1lbnRhdGlvbiBmb3IgYW4KICAgICAgIGVhcmx5IHZlcnNpb24gb2YgQ2hy b21pdW0gd2FzIHJlYWxpemVkIHdpdGhpbiBhIHNpbmdsZSB3ZWVrZW5kLgoKICAgR2VvcmdlIExp YXNrb3MgYW5kIFJlbsOpIExhZGFuIGFyZSBjdXJyZW50bHkgYnVzeSB3aXRoIHN1Ym1pdHRpbmcg dGhlCiAgIHJlbWFpbmluZyBwYXRjaGVzIHNwZWNpZmljIHRvIEZyZWVCU0QgYmFjayB1cHN0cmVh bS4gQXBhcnQgZnJvbSBtYWtpbmcKICAgZnV0dXJlIHVwZGF0ZXMgZWFzaWVyLCBpdCBzb21ldGlt ZXMgYWxzbyBpbXByb3ZlcyB0aGUgb3ZlcmFsbCBjb2RlCiAgIHF1YWxpdHkuCgogICBKb25hdGhh biBBbmRlcnNvbiByZWNlbnRseSB1cGRhdGVkIHRoZSBDYXBzaWN1bSBwYXRjaGVzIGZvciBDaHJv bWl1bQogICBhbmQgaXMgdGFsa2luZyB0byB1cHN0cmVhbSBhYm91dCB0aGVtLgoKT3BlbiB0YXNr czoKCiAgICAxLiBBZHZvY2F0ZSBGcmVlQlNELiBXaGlsZSBwYXRjaGVzIGFyZSBnZXR0aW5nIGFj Y2VwdGVkIGJ5IGJvdGggaHVtYW5zCiAgICAgICBhbmQgYm90cywgaXQgaXMgbm90IGFuIG9mZmlj aWFsIHBsYXRmb3JtIHNvIGF0dGl0dWRlIHZhcmllcyBmcm9tCiAgICAgICBkZXZlbG9wZXIgdG8g ZGV2ZWxvcGVyLiBXaGlsZSBSZW7DqSBMYWRhbiB0aGlua3MgaXQgaXMgYSBiaXQgZWFybHksCiAg ICAgICBpdCBtaWdodCBiZSBmcnVpdGZ1bCB0byBpbnZlc3RpZ2F0ZSB3aGF0IGlzIHJlcXVpcmVk IHRvIG1ha2UKICAgICAgIEZyZWVCU0QgKGFuZCBwb3NzaWJseSBPcGVuQlNEKSBhbiBvZmZpY2lh bCBwbGF0Zm9ybSBpbiB0ZXJtcyBvZgogICAgICAgYm90aCBoYXJkd2FyZSBhbmQgcHJvY2VkdXJl cy4KICAgIDIuIElmIHlvdSBmZWVsIGNvbWZvcnRhYmxlIHdpdGggbGFyZ2Ugc291cmNlIHRyZWVz LCB5b3UgY2FuIHRyeSB0bwogICAgICAgYnVpbGQgdGhlIEdpdCB2ZXJzaW9uIG9mIENocm9taXVt IG9uIEZyZWVCU0QuIElmIHlvdSBhcmUgYWxzbwogICAgICAgY29tZm9ydGFibGUgd2l0aCBzaWdu aW5nIEdvb2dsZSdzIENvbnRyaWJ1dG9yIExpY2Vuc2UgQWdyZWVtZW50LAogICAgICAgeW91IGNh biBqb2luIGluIHRlc3RpbmcgYW5kIHN1Ym1pdHRpbmcgcGF0Y2hlcyB1cHN0cmVhbS4KICAgICBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KCkZyZWVCU0QgQWRhIFBvcnRzCgogICBVUkw6IGh0dHA6Ly93d3cuZHJhZ29ubGFj ZS5uZXQvCiAgIFVSTDogaHR0cDovL3d3dy5zcGFyay0yMDE0Lm9yZy9hYm91dC8KCiAgIENvbnRh Y3Q6IEpvaG4gTWFyaW5vIDxtYXJpbm9ARnJlZUJTRC5vcmc+CgogICBBZGEgaXMgYSBzdHJ1Y3R1 cmVkLCBzdGF0aWNhbGx5IHR5cGVkLCBpbXBlcmF0aXZlLCB3aWRlLXNwZWN0cnVtLCBhbmQKICAg b2JqZWN0LW9yaWVudGVkIGhpZ2gtbGV2ZWwgY29tcHV0ZXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2Us IGV4dGVuZGVkIGZyb20KICAgUGFzY2FsIGFuZCBvdGhlciBsYW5ndWFnZXMsIG9yaWdpbmFsbHkg dGFyZ2V0ZWQgYXQgZW1iZWRkZWQgYW5kCiAgIHJlYWwtdGltZSBzeXN0ZW1zLiBUaGUgbnVtYmVy IG9mIEFkYSBwb3J0cyBpbiB0aGUgY29sbGVjdGlvbiBoYXMgZ3Jvd24KICAgc2lnbmlmaWNhbnRs eSBzaW5jZSB0aGUgbGFzdCByZXBvcnQgc2l4IG1vbnRocyBhZ28uIFRoZXJlIGFyZSBhbG1vc3Qg NTAKICAgQWRhLXJlbGF0ZWQgcG9ydHMgbm93LCB3aXRoIG5ldyBvbmVzIGdldHRpbmcgYWRkZWQg YWxsIHRoZSB0aW1lLgoKICAgVGhlIHByZXZpb3VzIHBsYW4gd2FzIHRvIG1vdmUgZnJvbSB0aGUg R0NDIDQuNy1iYXNlZCBHTkFUIGNvbXBpbGVyIHRvIGEKICAgR0NDIDQuOC1iYXNlZCBvbmUsIGJ1 dCBmaW5hbGx5IEdDQyA0Ljggd2FzIHNraXBwZWQgYW5kIG5vdyBhIEdDQwogICA0LjktYmFzZWQg R05BVCBpcyB0aGUgc3RhbmRhcmQgQWRhIGNvbXBpbGVyLCB3aGljaCBmdWxseSBzdXBwb3J0cyB0 aGUKICAgbmV3IElTTyBzdGFuZGFyZCwgQWRhIDIwMTIuIE1vdmluZyB0byBhIG5ld2VyIGNvbXBp bGVyIGFsbG93ZWQgc2V2ZXJhbAogICBpbXBvcnRhbnQgcG9ydHMgbGlrZSBQb2x5T3JiIGFuZCBH UFJCdWlsZCB0byBiZSB1cGdyYWRlZCB0byB0aGUgbGF0ZXN0CiAgIGF2YWlsYWJsZSB2ZXJzaW9u cy4gSW4gZmFjdCwgYWxtb3N0IGV2ZXJ5IEFkYSBwb3J0IGlzIGN1cnJlbnRseSBhdCBpdHMKICAg bW9zdCByZWNlbnQgdXBzdHJlYW0gdmVyc2lvbi4KCiAgIEZvciBub24tV2luZG93cy1iYXNlZCBB ZGEgZGV2ZWxvcG1lbnQsIEZyZWVCU0QgYW5kIERyYWdvbkZseSBhcmUgbm93CiAgIHVuZGlzcHV0 ZWQgYXMgdGhlIGdvLXRvIHBsYXRmb3Jtcy4gVGhlIG90aGVyIGNhbmRpZGF0ZXMgYXJlIERlYmlh biBhbmQKICAgRmVkb3JhLCBidXQgdGhlcmUgYXJlIGZldyBBZGEgc29mdHdhcmVzIG9uIHRob3Nl IHBsYXRmb3JtcyB0aGF0IGFyZSBub3QKICAgYWxzbyBpbiB0aGUgRnJlZUJTRCBwb3J0cyB0cmVl LCBhbmQgdGhlIEZyZWVCU0QgdmVyc2lvbnMgYXJlIG11Y2gKICAgbmV3ZXIuIFRoZSBQb3J0cyBD b2xsZWN0aW9uIGFsc28gZmVhdHVyZXMgc29mdHdhcmUgbm90IGZvdW5kIGFueXdoZXJlCiAgIGVs c2Ugc3VjaCBhcyB0aGUgVVNBRkEncyBJcm9uc2lkZXMgRE5TIHNlcnZlciwgbGlic3Bhcmtjcnlw dG8sCiAgIG1hdHJlc2hrYSwgR05BVERyb2lkIChBbmRyb2lkIGNyb3NzLWNvbXBpbGVyKSBhbmQg c2V2ZXJhbCBkZXZlbG9wZXIKICAgbGlicmFyaWVzLgoKICAgQSBkZXNpcmVkIGFkZGl0aW9uIHRv IHRoZSBBZGEgcG9ydHMgd2lsbCBiZSBTUEFSSyAyMDE0IChzZWUgbGlua3MpLAogICB3aGljaCBz aG91bGQgY2VtZW50IEZyZWVCU0QgYXMgYW4gb3B0aW9uIGZvciBwcm9mZXNzaW9uYWwsCiAgIHNh ZmV0eS1jcml0aWNhbCBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudC4gVGhpcyBwYWNrYWdlIHNob3Vs ZCBoYXZlIGl0cwogICBmaXJzdCByZWxlYXNlIGJ5IGVhcmx5IHN1bW1lci4KICAgICBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KCkdDQyBpbiB0aGUgUG9ydHMgQ29sbGVjdGlvbgoKICAgVVJMOiBodHRwOi8vZ2NjLmdudS5v cmcvCgogICBDb250YWN0OiBHZXJhbGQgUGZlaWZlciA8Z2VyYWxkQEZyZWVCU0Qub3JnPgoKICAg V2hpbGUgdGhlIGFnZSBvbGQgdmVyc2lvbiBvZiB0aGUgR05VIENvbXBpbGVyIENvbGxlY3Rpb24g KEdDQykgaW4gdGhlCiAgIGJhc2Ugc3lzdGVtIGlzIG9uIGl0cyB3YXkgb3V0IHdpdGggRnJlZUJT RCAxMCBhbmQgbGF0ZXIsIHRoZXJlIGFyZSBtYW55CiAgIHVzZXJzIHdobyB3YW50LS1hbmQgc29t ZSBwbGF0Zm9ybXMgd2hpY2ggbmVlZC0tdG8gdXNlIEdDQy4KCiAgIEZvciB0aGF0IHB1cnBvc2Ug dGhlcmUgYXJlIHZhcmlvdXMgdmVyc2lvbnMgb2YgR0NDIGluIHRoZSBwb3J0cyB0cmVlLAogICBp bmNsdWRpbmcgbGFuZy9nY2M0NiwgbGFuZy9nY2M0NywgbGFuZy9nY2M0OCBhbmQgbGFuZy9nY2M0 OSB3aGljaCB0cmFjawogICB1cHN0cmVhbSBzbmFwc2hvdHMgb2YgdGhlIHJlc3BlY3RpdmUgcmVs ZWFzZSBicmFuY2hlcywgYW5kIG1vcmUKICAgaW1wb3J0YW50bHkgbGFuZy9nY2Mgd2hpY2ggc2Vy dmVzIGFzIHRoZSBjYW5vbmljYWwgdmVyc2lvbiBvZiBHQ0MgYW5kCiAgIGlzIHRoZSBkZWZhdWx0 IHdoZW4gYSBwb3J0IHJlcXVlc3RzIFVTRV9HQ0M9eWVzIGFzIHdlbGwgYXMgZm9yIHNvbWUKICAg Y2FzZXMgb2YgVVNFUz1jb21waWxlci4KCiAgIFdpdGggYSBsb3Qgb2YgaGVscCBmcm9tIENocmlz dG9waCBNb2VuY2gtVGVnZWRlciB3aG8gZml4ZWQgbWFueSBwb3J0cwogICBhbmQgbWFkZSBhIGZh aXIgbnVtYmVyIHJlc3BlY3QgQ1hYRkxBR1MsIExERkxBR1MgYW5kIGZyaWVuZHMsIHdlCiAgIG1h bmFnZWQgdG8gdXBkYXRlIHRoZSBjYW5vbmljYWwgdmVyc2lvbiBmcm9tIEdDQyA0LjYuNCB0byBH Q0MgNC43LjMuCiAgIE1hbnkgb2YgQ2hyaXN0b3BoJ3MgZml4ZXMgYWxzbyBiZW5lZml0IENsYW5n IGFuZCBvdGhlciBtb2Rlcm4KICAgY29tcGlsZXJzLgoKICAgRm9yIHVzZXJzIG9mIGxhbmcvZ2Nj LCB0aGlzIHVwZ3JhZGUgcHJvdmVkIHZlcnkgc21vb3RoLCBhbmQgd2UKICAgZ2VuZXJhbGx5IHJl Y29tbWVuZCB1c2luZyB0aGlzIHBvcnQgb3ZlciB2ZXJzaW9uIHNwZWNpZmljIG9uZXMuCgogICBB ZnRlciB0ZW4geWVhcnMgb2Ygc2VydmljZSBsYW5nL2djYzM0IHJldGlyZWQsIGFzIGRpZCBsYW5n L2djYzQ0IGFmdGVyCiAgIGhhbGYgdGhhdCB0aW1lc3Bhbi4KCiAgIE9uIGEgcmVsYXRlZCBub3Rl LCB3aXRoIHRoZSBoZWxwIG9mIEpvaG4gTWFyaW5vLCB0aGUgbGljZW5zZSBvZiB0aGUgR0NDCiAg IHBvcnRzIG5vdyBwcm9wZXJseSByZWZsZWN0cyB0aGUgY29tYmluYXRpb24gb2YgR1BMdjMgZm9y IHRoZSBjb21waWxlcgogICBpdHNlbGYgYW5kIEdQTHYzIHdpdGggR0NDIFJ1bnRpbWUgTGlicmFy eSBFeGNlcHRpb24gZm9yIHRoZSBydW50aW1lLgogICBUaGUgbGF0dGVyIGlzIHRoZSBrZXkgaW4g bWFraW5nIGl0IHBvc3NpYmxlIHRvIHVzZSBHQ0MgZm9yIGJ1aWxkaW5nIGFuZAogICBkaXN0cmli dXRpbmcgbm9uLWZyZWUgc29mdHdhcmUuCgpPcGVuIHRhc2tzOgoKICAgIDEuIE1vdmUgbGFuZy9n Y2MgZnJvbSBHQ0MgNC43IHRvIEdDQyA0LjguCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpHTk9NRS9GcmVlQlNE CgogICBVUkw6IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvZ25vbWUKICAgVVJMOiBodHRwczovL3dp a2kuZ25vbWUub3JnL1Byb2plY3RzL0poYnVpbGQvRnJlZUJTRAogICBVUkw6IGh0dHBzOi8vZ2l0 aHViLmNvbS9qbG1lc3M3Ny9tYXRlLXBvcnRzCiAgIFVSTDogaHR0cDovL21hcmN1c2NvbS5jb20v ZG93bmxvYWRzL21hcmN1c21lcmdlCgogICBDb250YWN0OiBGcmVlQlNEIEdOT01FIFRlYW0gPGdu b21lQEZyZWVCU0Qub3JnPgoKICAgR05PTUUgaXMgYSBkZXNrdG9wIGVudmlyb25tZW50IGFuZCBn cmFwaGljYWwgdXNlciBpbnRlcmZhY2UgdGhhdCBydW5zCiAgIG9uIHRvcCBvZiBhIGNvbXB1dGVy IG9wZXJhdGluZyBzeXN0ZW0uIEdOT01FIGlzIHBhcnQgb2YgdGhlIEdOVSBQcm9qZWN0CiAgIGFu ZCBjYW4gYmUgdXNlZCB3aXRoIHZhcmlvdXMgVW5peC1saWtlIG9wZXJhdGluZyBzeXN0ZW1zLCBp bmNsdWRpbmcKICAgRnJlZUJTRC4KCiAgIFByZXBhcmF0aW9ucyBmb3IgbWVyZ2luZyBHTk9NRSAz IGFyZSBtb3ZpbmcgZm9yd2FyZC4gVGhlIHdvcmsgb24gdGhlCiAgIGRvY3VtZW50YXRpb24gaXMg ZmFsbGluZyBiZWhpbmQgYSBiaXQsIGJ1dCB3ZSBnb3Qgc29tZSBzb2xpZCBmZWVkYmFjawogICBv biB0aGUgcm91Z2ggd29yayB0byBrZWVwIHRoaXMgbW92aW5nIGZvcndhcmQgYXMgd2VsbC4gSW4g dGhlIG1lYW50aW1lLAogICBkZXByZWNhdGlvbiBvZiBwb3J0cyB0aGF0IG5lZWQgdGhlIG9sZCBH Tk9NRSAyIGRlc2t0b3AgcG9ydHMgaGFzIGJlZ3VuLgogICBUaGVzZSBwb3J0cyB3aWxsIGJyZWFr IHdoZW4gdGhlIEdOT01FIGRlc2t0b3AgY29tcG9uZW50cyBhcmUgdXBkYXRlZCB0bwogICB0aGUg R05PTUUgMyB2ZXJzaW9uLgoKICAgVGhhbmtzIHRvIGEgY29tYmluZWQgZWZmb3J0IGJ5IFJ5YW4g TG9ydGllIChHTk9NRSBkZXZlbG9wZXIpLCBUaW5nLVdlaQogICBMYW4gKHVwc3RyZWFtIGNvbnRy aWJ1dG9yKSwgYW5kIEtvb3AgTWFzdCwgd2Ugbm93IGhhdmUgYQogICBGcmVlQlNELXBvd2VyZWQg SkhidWlsZCB0aW5kZXJib3guIEpIYnVpbGQgaXMgYSBidWlsZCBzeXN0ZW0gdGhhdAogICBhbGxv d3MgYnVpbGRpbmcgR05PTUUgdXBzdHJlYW0gY29kZS4gVHdpY2UgYSBkYXksIGl0IHdpbGwgYXR0 ZW1wdCB0bwogICBidWlsZCBHbm9tZSBjb21wb25lbnRzIGZyb20gYSBzcGVjaWZpYyBicmFuY2gs IHVzdWFsbHkgdGhlIGdpdCBtYXN0ZXIKICAgYnJhbmNoLCB0byBjYXRjaCBjb21waWxlIGlzc3Vl cy4gQSBwb3NpdGl2ZSBzaWRlIGVmZmVjdCBpcyB0aGF0IGl0IGxldHMKICAgdXBzdHJlYW0ga25v dyBHTk9NRSBzdGlsbCBsaXZlcyBvbiBub24tTGludXggc3lzdGVtcy4gSXQgYWxzbyBleHBvc2Vz CiAgIHRoZSBHTk9NRSBjb2RlIGJhc2UgdG8gdGhlIENsYW5nIGNvbXBpbGVyIGFuZCBsaWJjKysu IFNpbmNlIHRoZSBzdGFydAogICBvZiB0aGlzIHByb2plY3Qgb3ZlciBhIGh1bmRyZWQgaXNzdWVz IGhhdmUgYmVlbiBmaXhlZC4KCiAgIEd1c3RhdSBQZXJleiBoYXMgc3RlcHBlZCB1cCBhbmQgcHV0 IHRvZ2V0aGVyIGEgcG9ydCBzZXQgaW4gdGhlCiAgICJwb3J0cy1leHBlcmltZW50YWwiIHRyZWUg b2Ygb3VyIGRldmVsb3BtZW50IHJlcG9zaXRvcnkgd2l0aCBHTk9NRQogICAzLjEyLiBJdCB3YXMg ZGVjaWRlZCB0byBwb2xpc2ggR05PTUUgMy4xMi4gSXQgd2lsbCBiZSBtZXJnZWQgd2hlbiB0aGUK ICAgcHJlcGFyYXRpb24gd29yayBoYXMgKG1vc3RseSkgZmluaXNoZWQsIGFuZCB3ZSBhcmUgaGFw cHkgd2l0aCB0aGUKICAgc3RhYmlsaXR5IG9mIEdOT01FIDMuMTIuCgogICBHdXN0YXUgUGVyZXog YWxzbyBwb3J0ZWQgQ2lubmFtb24gMi4wIHRvIEZyZWVCU0QuIEl0IHdpbGwgYXBwZWFyIGluIHRo ZQogICBQb3J0cyBDb2xsZWN0aW9uIGFmdGVyIEdOT01FIDMgaGFzIGJlZW4gbWVyZ2VkLgoKICAg TUFURSAxLjggd2FzIHJlbGVhc2VkIGF0IHRoZSBiZWdpbm5pbmcgb2YgQXByaWwsIEVyaWMgVHVy Z2VvbiBvZgogICBHaG9zdEJTRCBoYWQgdm9sdW50ZWVyZWQgdG8gZG8gdGhhdCB1cGRhdGUgZm9y IEZyZWVCU0QuIE5vdGUgdGhhdCB0aGlzCiAgIHVwZGF0ZSBpcyBzdGlsbCBiYXNlZCBvbiBHVEsr LCB2ZXJzaW9uIDIuIFRoZSBHVEsrIDMtYmFzZWQgTUFURSBpcyBvbgogICB0aGUgcm9hZG1hcCBm b3IgMS4xMC4KCk9wZW4gdGFza3M6CgogICAgMS4gRmluaXNoIHRoZSB3b3JrIG5lZWRlZCB0byBi ZSBkb25lIGJlZm9yZSBHTk9NRSAzIGNhbiBiZSBtZXJnZWQgYXQKICAgICAgIGFsbC4gRG9jdW1l bnRhdGlvbiB3b3JrLCBwb3J0IGRlcHJlY2F0aW9uLCBhbmQgc28gb24uCiAgICAyLiBGaW5pc2gg cG9ydGluZyBvZiBNQVRFIDEuOC4KICAgIDMuIFVwZGF0ZSBDYWlybyB0byAxLjEyIGluIGNvb3Jk aW5hdGlvbiB3aXRoIHRoZSBHcmFwaGljcyBUZWFtLgogICAgIF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKS0RFL0ZyZWVC U0QKCiAgIFVSTDogaHR0cDovL0ZyZWVCU0Qua2RlLm9yZy8KICAgVVJMOiBodHRwOi8vRnJlZUJT RC5rZGUub3JnL2FyZWE1MS5waHAKICAgVVJMOiBodHRwOi8vcG9ydHNjb3V0LmZyZWVic2Qub3Jn L2tkZUBmcmVlYnNkLm9yZy5odG1sCgogICBDb250YWN0OiBLREUvRnJlZUJTRCBUZWFtIDxrZGVA RnJlZUJTRC5vcmc+CgogICBLREUgaXMgYW4gaW50ZXJuYXRpb25hbCBmcmVlIHNvZnR3YXJlIGNv bW11bml0eSBwcm9kdWNpbmcgYW4gaW50ZWdyYXRlZAogICBzZXQgb2YgY3Jvc3MtcGxhdGZvcm0g YXBwbGljYXRpb25zIGRlc2lnbmVkIHRvIHJ1biBvbiBMaW51eCwgRnJlZUJTRCwKICAgU29sYXJp cywgTWljcm9zb2Z0IFdpbmRvd3MsIGFuZCBPUyBYIHN5c3RlbXMuIFRoZSBLREUvRnJlZUJTRCBU ZWFtIGhhdmUKICAgY29udGludWVkIHRvIGltcHJvdmUgdGhlIGV4cGVyaWVuY2Ugb2YgS0RFIHNv ZnR3YXJlIGFuZCBRdCB1bmRlcgogICBGcmVlQlNELgoKICAgRHVyaW5nIHRoaXMgcXVhcnRlciwg dGhlIHRlYW0gaGFzIGtlcHQgbW9zdCBvZiB0aGUgS0RFIGFuZCBRdCBwb3J0cwogICB1cC10by1k YXRlLCB3b3JraW5nIG9uIHRoZSBmb2xsb3dpbmcgcmVsZWFzZXM6CgogICAgICogS0RFIFNDOiA0 LjEyLjIsIDQuMTIuMywgYW5kIDQuMTIuNDsgV29ya3NwYWNlOiA0LjExLjYsIDQuMTEuNywgYW5k CiAgICAgICA0LjExLjgKICAgICAqIFF0OiA1LjIuMQogICAgICogS0RldmVsb3A6IDQuNi4wCiAg ICAgKiBEaWdpa2FtIChhbmQgS0lQSS1wbHVnaW5zKTogMy41LjAKCiAgIEFzIGEgcmVzdWx0IC0t IGFjY29yZGluZyB0byBQb3J0U2NvdXQgLS0ga2RlQCBoYXMgNTI2IHBvcnRzICh1cCBmcm9tCiAg IDQ2NCksIG9mIHdoaWNoIDk4Ljg2JSBhcmUgdXAtdG8tZGF0ZSAodXAgZnJvbSA4OC4xNSUpLiBp WHN5c3RlbXMKICAgY29udGludWVzIHRvIHByb3ZpZGUgYSBtYWNoaW5lIGZvciB0aGUgdGVhbSB0 byBidWlsZCBwYWNrYWdlcyBhbmQgdG8KICAgdGVzdCB1cGRhdGVzLiBUaGV5IGhhdmUgYmVlbiBw cm92aWRpbmcgdGhlIEtERS9GcmVlQlNEIHRlYW0gd2l0aAogICBzdXBwb3J0IGZvciBxdWl0ZSBh IGxvbmcgdGltZSBhbmQgd2UgYXJlIHZlcnkgZ3JhdGVmdWwgZm9yIHRoYXQuCgogICBBIG1ham9y IGNoYW5nZSBoYXMgYmVlbiB0aGUgZGVwcmVjYXRpb24gb2YgdGhlIEtERTMgcG9ydHMgYW5kIHRo ZSBtb3ZlCiAgIG9mIHRoZSBLREU0X1BSRUZJWCB0byBMT0NBTEJBU0UuIEFsc28sIHdvcmsgb24g UXQ1IGNvbnRpbnVlcyB0bwogICBtYXR1cml0eS4gUmFwaGFlbCBLdWJvIGRhIENvc3RhIGhhcyBi ZWVuIHdvcmtpbmcgd2l0aCB1cHN0cmVhbSB0bwogICBlbnN1cmUgQmFsb28gKE5lcG9tdWsgc3Vj Y2Vzc29yIGluIEtERSBTQyA0LjEzKSBjb21waWxlcyBhbmQgcnVucyBvbgogICBub24tTGludXgg c3lzdGVtcy4gSGlzIHdvcmsgbm90IG9ubHkgYmVuZWZpdHMgRnJlZUJTRCBidXQgb3RoZXIgQlNE cwogICBhbmQgT1MgWC4KCiAgIEFzIHVzdWFsLCB0aGUgdGVhbSBpcyBhbHdheXMgbG9va2luZyBm b3IgbW9yZSB0ZXN0ZXJzIGFuZCBwb3J0ZXJzLCBzbwogICBwbGVhc2UgY29udGFjdCB1cyBhbmQg dmlzaXQgb3VyIGhvbWUgcGFnZSAoc2VlIGxpbmtzKS4gSXQgd291bGQgYmUKICAgZXNwZWNpYWxs eSB1c2VmdWwgdG8gaGF2ZSBtb3JlIGhlbHBpbmcgaGFuZHMgb24gdGFza3Mgc3VjaCBhcyBnZXR0 aW5nCiAgIHJpZCBvZiB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgZGVmdW5jdCBIQUwgcHJvamVjdCBh bmQgcHJvdmlkaW5nCiAgIGludGVncmF0aW9uIHdpdGggS0RFJ3MgQmx1ZWRldmlsIEJsdWV0b290 aCBpbnRlcmZhY2UuCgogICBUaGlzIHByb2plY3QgaXMgc3BvbnNvcmVkIGJ5IGlYc3lzdGVtcywg SW5jLgoKT3BlbiB0YXNrczoKCiAgICAxLiBVcGRhdGUgb3V0LW9mLWRhdGUgcG9ydHMsIHNlZSBQ b3J0U2NvdXQgZm9yIGEgbGlzdC4KICAgIDIuIFdvcmsgb24gUXQgNS4KICAgIDMuIE1ha2Ugc3Vy ZSB0aGUgd2hvbGUgS0RFIHN0YWNrIChpbmNsdWRpbmcgUXQpIGJ1aWxkcyBhbmQgd29ya3MKICAg ICAgIGNvcnJlY3RseSB3aXRoIENsYW5nIGFuZCBsaWJjKysuCiAgICA0LiBSZW1vdmUgdGhlIGRl cGVuZGVuY3kgb24gSEFMLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKbGlidmlydC9iaHl2ZSBTdXBwb3J0Cgog ICBVUkw6IGh0dHA6Ly9saWJ2aXJ0Lm9yZy9kcnZiaHl2ZS5odG1sCiAgIFVSTDogaHR0cDovL2xp YnZpcnQub3JnLwogICBVUkw6IGh0dHA6Ly9lbXB0MWUuYmxvZ3Nwb3QucnUvc2VhcmNoL2xhYmVs L2xpYnZpcnQKCiAgIENvbnRhY3Q6IFJvbWFuIEJvZ29yb2Rza2l5IDxub3ZlbEBGcmVlQlNELm9y Zz4KCiAgIExpYnZpcnQgaXMgYSB2aXJ0dWFsaXphdGlvbiBsaWJyYXJ5IHByb3ZpZGluZyBhIGNv bW1vbiBBUEkgZm9yIHZhcmlvdXMKICAgaHlwZXJ2aXNvcnMgKFFlbXUvS1ZNLCBYZW4sIExYQywg YW5kIG90aGVycyksIGFuZCBhbHNvIGEgcG9wdWxhcgogICBsaWJyYXJ5IHVzZWQgYnkgYSBudW1i ZXIgb2YgcHJvamVjdHMuIExpYnZpcnQgMS4yLjIsIHJlbGVhc2VkIG9uIE1hcmNoLAogICAyMDE0 LCB3YXMgdGhlIGZpcnN0IHJlbGVhc2UgdG8gaW5jbHVkZSBiaHl2ZSBzdXBwb3J0LiBFbmFibGlu ZyBiaHl2ZQogICBzdXBwb3J0IGFsbG93cyBjb25zdW1lcnMgdG8gdXNlIGJoeXZlIGluIGxpYnZp cnQtcmVhZHkgYXBwbGljYXRpb25zCiAgIHdpdGhvdXQgbWFqb3IgZWZmb3J0cy4KCiAgIEN1cnJl bnRseSwgbGlidmlydCBzdXBwb3J0cyBhbG1vc3QgYWxsIGVzc2VudGlhbCBmZWF0dXJlcyBvZiBi aHl2ZSwKICAgc3VjaCBhcyBWaXJ0dWFsIE1hY2hpbmUgbGlmZWN5Y2xlIChzdGFydCwgc3RvcCks IGJyaWRnZWQgbmV0d29ya2luZywKICAgYW5kIHZpcnRpby9TQVRBIGRyaXZlciBzdXBwb3J0LiBU aGUgd29yayBjb250aW51ZXMgdG8gaW1wbGVtZW50IG1vcmUKICAgQVBJIGNhbGxzIGFuZCB0byBj b3ZlciBtb3JlIG9mIGZlYXR1cmVzIG9mZmVyZWQgYnkgYmh5dmUuCgpPcGVuIHRhc2tzOgoKICAg IDEuIEZyZWVCU0QgcG9ydCBvZiBuZXRjZiBpcyBuZWVkZWQgZm9yIGFkZGluZyBpbnRlcmZhY2Ug ZHJpdmVyIHN1cHBvcnQKICAgICAgIHRvIGxpYnZpcnQuCiAgICAgX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpPcGVuQUZT IG9uIEZyZWVCU0QKCiAgIFVSTDogaHR0cDovL29wZW5hZnMub3JnLwoKICAgQ29udGFjdDogQmVu amFtaW4gS2FkdWsgPGJqa0BGcmVlQlNELm9yZz4KCiAgIEFGUyBpcyBhIGRpc3RyaWJ1dGVkIG5l dHdvcmsgZmlsZXN5c3RlbSB0aGF0IG9yaWdpbmF0ZWQgZnJvbSB0aGUgQW5kcmV3CiAgIFByb2pl Y3QgYXQgQ2FybmVnaWUtTWVsbG9uIFVuaXZlcnNpdHkuIE9wZW5BRlMgaXMgYW4gb3Blbi1zb3Vy Y2UKICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFGUyBwcm90b2NvbCBkZXJpdmVkIGZyb20gSUJN IEFGUywgd2hpY2ggd2FzCiAgIHJlbGVhc2VkIHVuZGVyIHRoZSBJQk0gUHVibGljIExpY2Vuc2Uu IE9wZW5BRlMgb24gRnJlZUJTRCAodGhlCiAgIG5ldC9vcGVuYWZzIHBvcnQpIGlzIHN1aXRhYmxl IGZvciBsaWdodCB1c2UsIGJ1dCBpcyBub3QgeWV0IHByb2R1Y3Rpb24KICAgcmVhZHkuCgogICBX ZSBnb3QgYSBjaGFuY2UgdG8gcGljayB1cCB0aGlzIHBvcnRpbmcgcHJvamVjdCBhZnRlciBzb21l IGhpYXR1cy4KICAgUmVjZW50IHdvcmsgZm9jdXNlZCBvbiBpbnZlc3RpZ2F0aW5nIHRoZSBidWdz IHByZXZlbnRpbmcgdGhlIHVzZSBvZiBhCiAgIGRpc2sgY2FjaGUgZm9yIGNhY2hpbmcgZmlsZSBk YXRhLiBBbiBpbnRlcm5hbCAibG9va3VwbmFtZSIgYWJzdHJhY3Rpb24KICAgd2FzIGludGVuZGVk IHRvIHJldHVybiBhbiB1bmxvY2tlZCwgcmVmZXJlbmNlZCB2bm9kZSwgYnV0IGluc3RlYWQKICAg cmV0dXJuZWQgYSBsb2NrZWQsIHJlZmVyZW5jZWQgdm5vZGUsIGxlYWRpbmcgdG8gdmFyaW91cyBm YWlsdXJlIG1vZGVzCiAgIGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIGtlcm5lbCBkZWJ1Z2dp bmcgb3B0aW9ucyBlbmFibGVkLgoKT3BlbiB0YXNrczoKCiAgICAxLiBUcmFjayBkb3duIGFuIGlz c3VlIGludm9sdmluZyBpbmNvcnJlY3QgcmVmZXJlbmNlIGNvdW50cyBvbiB0aGUgQUZTCiAgICAg ICByb290IHZub2RlIHRoYXQgY2F1c2Ugd2FybmluZ3Mgb24gc2h1dGRvd24uCiAgICAyLiBBdWRp dCB0aGUgbG9ja2luZyBpbiBhbGwgdGhlIHZub2RlIG9wZXJhdGlvbnMgY29kZSAtLSBpdCBpcwog ICAgICAgZXhwZWN0ZWQgdGhhdCB0aGVyZSByZW1haW4gc29tZSBpbmNvcnJlY3RseSBsb2NrZWQg YXJlYXMsIHRob3VnaAogICAgICAgbm9uZSB0aGF0IHByZXNlbnQgdmlzaWJsZSBpc3N1ZXMgdW5k ZXIgbGlnaHQgbG9hZC4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KClRoZSBHcmFwaGljcyBTdGFjayBvbiBGcmVl QlNECgogICBVUkw6IGh0dHBzOi8vd2lraS5mcmVlYnNkLm9yZy9HcmFwaGljcwogICBVUkw6IGh0 dHBzOi8vd2lraS5mcmVlYnNkLm9yZy9HcmFwaGljcy9XSVRIX05FV19YT1JHCiAgIFVSTDogaHR0 cDovL3RyaWxsaWFuLmNocnVldGVydGVlLmNoL3BvcnRzL2Jyb3dzZXIvdHJ1bmsKCiAgIENvbnRh Y3Q6IEZyZWVCU0QgR3JhcGhpY3MgVGVhbSA8Z3JhcGhpY3MtdGVhbUBGcmVlQlNELm9yZz4KCiAg IE9uIHRoZSBrZXJuZWwgc2lkZSwgdGhlIFJhZGVvbiBLTVMgZHJpdmVyIHdhcyBtZXJnZWQgaW4g c3RhYmxlLzkgYW5kCiAgIHdpbGwgYmUgYXZhaWxhYmxlIGluIEZyZWVCU0QgOS4zLVJFTEVBU0Uu IE5vdyBib3RoIHRoZSA5LnggYW5kIDEwLngKICAgYnJhbmNoZXMgc2hhcmUgdGhlIHNhbWUgc3Vw cG9ydCBmb3IgSW50ZWwgYW5kIEFNRCBHUFVzLgoKICAgVGhlIG5leHQgYmlnIHRhc2tzIGFyZSB0 aGUgdXBkYXRlcyBvZiB0aGUgRFJNIGdlbmVyaWMgY29kZSBhbmQgdGhlIGk5MTUKICAgZHJpdmVy LiBCb3RoIGFyZSBtYWtpbmcgZ29vZCBwcm9ncmVzcyBhbmQgdGhlIERSTSB1cGRhdGUgc2hvdWxk CiAgIGhvcGVmdWxseSBiZSByZWFkeSBmb3Igd2lkZXIgdGVzdGluZyBkdXJpbmcgQXByaWwuIEFu IHVwZGF0ZSBvZiB0aGUKICAgUmFkZW9uIGRyaXZlciBpcyBvbiB0aGUgdG8tZG8gbGlzdCwgYnV0 IG5vdGhpbmcgaXMgc2NoZWR1bGVkIHlldC4KCiAgIE9uIHRoZSBwb3J0cyB0cmVlIGFuZCBwYWNr YWdlcyBzaWRlLCB0aGUgdXBkYXRlIHRvIENhaXJvIDEuMTIgbWVudGlvbmVkCiAgIGluIHRoZSBs YXN0IHF1YXJ0ZXJseSByZXBvcnQgaXMgcmVhZHkgdG8gYmUgY29tbWl0dGVkLCBhcyBwZW9wbGUg d2hvCiAgIHRlc3RlZCBpdCBlaXRoZXIgcmVwb3J0ZWQgaW1wcm92ZW1lbnRzIG9yIG5vIHJlZ3Jl c3Npb25zLiBBcyBhCiAgIHJlbWluZGVyLCB0aGUgc3dpdGNoIGZyb20gQ2Fpcm8gMS4xMCB0byAx LjEyIGNhdXNlcyBkaXNwbGF5IGFydGlmYWN0cwogICB3aXRoIHhmODYtdmlkZW8taW50ZWwgMi43 LjEsIGJ1dCBmaXhlcyBzaW1pbGFyIHByb2JsZW1zIHdpdGggb3RoZXIKICAgaGFyZHdhcmUvZHJp dmVyIGNvbWJpbmF0aW9ucy4gRnVydGhlcm1vcmUsIENhaXJvIDEuMTIgaXMgcmVxdWlyZWQgYnkK ICAgUGFuZ28gMS4zNi4wLCBHVEsrIDMuMTAgYW5kIEZpcmVmb3ggMjcuMC4gQSAiSGVhZHMgdXAi IG1haWwgd2lsbCBiZQogICBwb3N0ZWQgdG8gdGhlIGZyZWVic2QteDExIG1haWxpbmctbGlzdCB3 aGVuIHRoaXMgdXBkYXRlIGdvZXMgbGl2ZS4KCiAgIEluIHRoZSBncmFwaGljcyBzdGFjaydzIHBv cnRzIGRldmVsb3BtZW50IHRyZWUsIG5ldyBNZXNhIHBvcnRzIGFyZQogICBiZWluZyB3b3JrZWQg b24uIFRob3NlIHBvcnRzIGFyZSByZXF1aXJlZCB0byBzdXBwb3J0IEdMQU1PUiAodGhlCiAgIEdM LWJhc2VkIDJEIGFjY2VsZXJhdGlvbiBsaWJyYXJ5IHVzZWQgYnkgUmFkZW9uIEhEIDcwMDArIGNh cmRzIGZvcgogICBpbnN0YW5jZSkgYW5kIE9wZW5DTCAodXNpbmcgdGhlIEdQVSB0byBwZXJmb3Jt IG5vbi1ncmFwaGljYWwKICAgY2FsY3VsYXRpb25zKS4gV2Ugd2VyZSBhYmxlIHRvIGV4ZWN1dGUg c29tZSAiSGVsbG8gV29ybGQiIE9wZW5DTAogICBwcm9ncmFtcyBhbmQgcGxheSB3aXRoIE9wZW5D TCBpbiBkYXJrdGFibGUsIGJ1dCB0aGVyZSBhcmUgc29tZQogICBjb21wYXRpYmlsaXR5IGlzc3Vl cyBiZXR3ZWVuIENsb3ZlciAoTWVzYSdzIGxpYk9wZW5DTCBpbXBsZW1lbnRhdGlvbikKICAgYW5k IENsYW5nL2xpYmMrKy4KCiAgIFdlIGFyZSBwcmVwYXJpbmcgYW4gYWx0ZXJuYXRlIHBrZyg4KSBy ZXBvc2l0b3J5IHdpdGggcGFja2FnZXMgYnVpbHQKICAgd2l0aCBXSVRIX05FV19YT1JHLiBUaGUg Z29hbCBpcyB0byBlYXNlIHRoZSB1c2FnZSBvZiB0aGUgS01TIGRyaXZlcnMKICAgYW5kIG1vdmUg Zm9yd2FyZCB3aXRoIHRoZSBncmFwaGljcyBzdGFjayB1cGRhdGVzLiBUaGUgbWFpbiBwa2coOCkK ICAgcmVwb3NpdG9yeSB3aWxsIHN0aWxsIHVzZSB0aGUgZGVmYXVsdCBzZXR0aW5nIChXSVRIX05F V19YT1JHIHNldCBvbgogICBoZWFkLCBidXQgbm90IG9uIHRoZSBzdGFibGUgYnJhbmNoZXMpLgoK ICAgVGhpcyB3aWxsIHBhdmUgdGhlIHdheSB0byB0aGUgZGVwcmVjYXRpb24gb2ZXSVRIX05FV19Y T1JHIGFuZCB0aGUKICAgcmVtb3ZhbCBvZiB0aGUgb2xkZXIgc3RhY2suIFRoZSBjdXJyZW50IHBs YW4gaXMgdG8gZG8gdGhpcyBhZnRlcgogICAxMC4wLVJFTEVBU0UgRW5kLW9mLUxpZmUsIHNjaGVk dWxlZCBvbiBKYW51YXJ5IDMxc3QsIDIwMTUuIEJ5IHRoYXQKICAgdGltZSwgdGhlIG9ubHkgc3Vw cG9ydGVkIHJlbGVhc2VzIHdpbGwgYmUgOC40LVJFTEVBU0UsIDkuMy1SRUxFQVNFIGFuZAogICAx MC4xLVJFTEVBU0UuIEZyZWVCU0QgOS4zIGFuZCAxMC4xIHdpbGwgYmUgZnVsbHkgZXF1aXBwZWQg dG8gd29yayB3aXRoCiAgIHRoZSBuZXdlciBzdGFjay4gVW5mb3J0dW5hdGVseSwgRnJlZUJTRCA4 LnggbWlzc2VzIHRoZSByZXF1aXJlZCBrZXJuZWwKICAgRFJNIGluZnJhc3RydWN0dXJlOiBzdXBw b3J0aW5nIFguT3JnIGhlcmUgY3JpcHBsZXMgcHJvZ3Jlc3Mgb24gdGhlCiAgIGdyYXBoaWNzIHN0 YWNrIGFuZCwgb25jZSBXSVRIX05FV19YT1JHIGlzIGdvbmUsIHdlIHdpbGwgbm90IHN1cHBvcnQg OC54CiAgIGFzIGEgZGVza3RvcCBhbnkgbW9yZS4gVGhlcmVmb3JlLCBwbGVhc2UgdXBncmFkZSB0 byA5LjMgb3IgMTAuMSB3aGVuCiAgIHRoZXkgYXJlIGF2YWlsYWJsZS4KCk9wZW4gdGFza3M6Cgog ICAgMS4gU2VlIHRoZSAiR3JhcGhpY3MiIGFuZCAiV0lUSF9ORVdfWE9SRyIgd2lraSBwYWdlcyBm b3IgdXAtdG8tZGF0ZQogICAgICAgaW5mb3JtYXRpb24uCiAgICAgX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpVc2luZyBD ZW50T1MgNi41IGFzIExpbnV4IEJhc2UKCiAgIFVSTDogaHR0cDovL2dpdGh1Yi5jb20veG1qL2xp bnV4LXBvcnRzCiAgIFVSTDogaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvcXVlcnktcHIuY2dp P3ByPXBvcnRzLzE4Nzc4NgoKICAgQ29udGFjdDogSm9oYW5uZXMgTWVpeG5lciA8eG1qQGNoYW90 Lm5ldD4KCiAgIFRoZSBMaW51eCBlbXVsYXRpb24gbGF5ZXIgcmVsaWVzIG9uIGEgTGludXggYmFz ZSBkaXN0cmlidXRpb24gYWxvbmcKICAgd2l0aCBMaW51eCBwb3J0cyBvZiByZWxldmFudCBub24t YmFzZSBzb2Z0d2FyZS4gRmVkb3JhIDEwIHdhcyBpbXBvcnRlZAogICBpbiAyMDA2LCBhbmQgaXQg c2hvd3MgLS0gY3VycmVudCBMaW51eCBzb2Z0d2FyZSBsaWtlIFNreXBlIDQsIFN1YmxpbWUKICAg VGV4dCAyLCBvciBldmVuIG1vZGVybiBnYW1lcyBmYWlsIHRvIHJ1biB3aXRoIHRoZSBwcm92aWRl ZCBsaWJyYXJpZXMuCgogICBDZW50T1MgNi41IHdhcyByZWxlYXNlZCBpbiBEZWNlbWJlciAyMDEz IGFuZCB3aWxsIGJlIHN1cHBvcnRlZCB1bnRpbAogICAyMDE3LCBtYWtpbmcgaXQgYW4gaWRlYWwg YmFzaXMgZm9yIGFuIHVwZGF0ZSB0byB0aGUgcG9ydHMKICAgaW5mcmFzdHJ1Y3R1cmUuIEJ1aWx0 IHVwb24gdGhlIHdvcmsgb2YgQ2FybG9zIEphY29ibyBQdWdhIE1lZGluYSwgYWxsCiAgIHBvcnRz IHVzaW5nIExpbnV4IGhhdmUgYmVlbiB1cGRhdGVkIHRvIHdvcmsgd2l0aCBlaXRoZXIgRmVkb3Jh IDEwIG9yCiAgIENlbnRPUyA2LjUuCgogICBUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8g bWFrZSBDZW50T1MgNi41IHRoZSBkZWZhdWx0IExpbnV4CiAgIGRpc3RyaWJ1dGlvbiwgc28gdGhh dCBGcmVlQlNEIHVzZXJzIGNhbiBlbmpveSBydW5uaW5nIG1vZGVybiBMaW51eAogICBiaW5hcmll cyB3aXRob3V0IGhhdmluZyB0byByZXNvcnQgdG8gdmlydHVhbGl6YXRpb24gw6AgbGEgVmlydHVh bEJveCwgb3IKICAgZXZlbiBkdWFsLWJvb3RpbmcuCgogICBUaGlzIHByb2plY3QgaXMgc3BvbnNv cmVkIGJ5IEdvbGRlbmVyIEdydW5kIE/DnC4KCk9wZW4gdGFza3M6CgogICAgMS4gQ2xlYW4gdXAg TWsvYnNkLmxpbnV4LSoubWsgYW5kIGZpeCBlcnJvcnMgZGV0ZWN0ZWQgaW4gcG9ydHMvMTg3Nzg2 LgogICAgMi4gUmV2ZXJ0IG1ha2luZyBjNiB0aGUgZGVmYXVsdCAoaW4gdGhlIGdpdCByZXBvc2l0 b3J5KS4KICAgIDMuIFRlc3RpbmcuCiAgICA0LiBSZXZpZXcgcGF0Y2hlcyBhbmQgaW1wb3J0IGlu dG8gdGhlIHBvcnRzIHRyZWUgKGFueSBoZWxwCiAgICAgICBhcHByZWNpYXRlZCkuCiAgICA1LiBN YWtlIGM2IHRoZSBkZWZhdWx0IChhZnRlciBzdWZmaWNpZW50IHRlc3RpbmcpIHdpdGhpbiB0aGUg cG9ydHMKICAgICAgIHRyZWUuCiAgICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpXaW5lL0ZyZWVCU0QKCiAgIFVSTDog aHR0cDovL3dpa2kuRnJlZUJTRC5vcmcvV2luZQogICBVUkw6IGh0dHA6Ly93aWtpLkZyZWVCU0Qu b3JnL2kzODYtV2luZQogICBVUkw6IGh0dHA6Ly93d3cud2luZWhxLm9yZy8KCiAgIENvbnRhY3Q6 IEdlcmFsZCBQZmVpZmVyIDxnZXJhbGRARnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IERhdmlkIE5h eWxvciA8ZGJuQEZyZWVCU0Qub3JnPgoKICAgV2luZSBpcyBhIGZyZWUgYW5kIG9wZW4gc291cmNl IHNvZnR3YXJlIGFwcGxpY2F0aW9uIHRoYXQgYWltcyB0byBhbGxvdwogICBhcHBsaWNhdGlvbnMg ZGVzaWduZWQgZm9yIE1pY3Jvc29mdCBXaW5kb3dzIHRvIHJ1biBvbiBVbml4LWxpa2UKICAgb3Bl cmF0aW5nIHN5c3RlbXMsIHN1Y2ggYXMgRnJlZUJTRC4gVGhlIFdpbmUgcHJvamVjdCBoYXMgYmVl biBpbgogICBtYWludGVuYW5jZSBtb2RlIHRoaXMgcXVhcnRlciBhbmQgaGFzIHVwZGF0ZWQgdGhl IHBvcnRzIGZvciB0aGUKICAgZm9sbG93aW5nIHZlcnNpb25zOgoKICAgICAqIFN0YWJsZSByZWxl YXNlczogMS42LjIKICAgICAqIERldmVsb3BtZW50IHJlbGVhc2VzOiAxLjcuOSB0aHJvdWdoIDEu Ny4xNQoKICAgVGhlIHBvcnRzIGhhdmUgcGFja2FnZXMgYnVpbHQgZm9yIGFtZDY0LCBhdmFpbGFi bGUgdGhyb3VnaCB0aGUgcG9ydHMKICAgZW11bGF0b3JzL2kzODYtd2luZSBhbmQgZW11bGF0b3Jz L2kzODYtd2luZS1kZXZlbC4KCk9wZW4gdGFza3M6CgogICAgMS4gU2VlIHRoZSAiT3BlbiBUYXNr cyIgYW5kICJLbm93biBQcm9ibGVtcyIgc2VjdGlvbnMgb24gdGhlIFdpbmUgd2lraQogICAgICAg cGFnZS4KICAgIDIuIEZyZWVCU0QvYW1kNjQgaW50ZWdyYXRpb24sIGNvbnN1bHQgdGhlIGkzODYt V2luZSB3aWtpIHBhZ2UgZm9yIHRoZQogICAgICAgZGV0YWlscy4KICAgIDMuIFBvcnQgV29XNjQg KHN1cHBvcnRpbmcgV2luZG93cyAzMi1iaXQgYW5kIDY0LWJpdCBmcm9tIHRoZSBzYW1lCiAgICAg ICBwb3J0KSBhbmQgV2luZTY0LgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKWGZjZS9GcmVlQlNECgogICBVUkw6 IGh0dHBzOi8vd2lraS5mcmVlYnNkLm9yZy9YZmNlCiAgIFVSTDogaHR0cHM6Ly9zdm4ucmVkcG9y dHMub3JnL29saXZpZXJkL3hmY2U0LwogICBVUkw6IGh0dHBzOi8vcGVvcGxlLmZyZWVic2Qub3Jn L35vbGl2aWVyZC94ZmNlLWNvcmUtdW5zdGFibGUuaHRtbAogICBVUkw6IGh0dHA6Ly93d3cuZnJl ZWJzZC5vcmcvY2dpL3F1ZXJ5LXByLmNnaT9wcj0xODM2OTAKCiAgIENvbnRhY3Q6IEZyZWVCU0Qg WGZjZSBUZWFtIDx4ZmNlQEZyZWVCU0Qub3JnPgoKICAgWGZjZSBpcyBhIGZyZWUgc29mdHdhcmUg ZGVza3RvcCBlbnZpcm9ubWVudCBmb3IgVW5peCBhbmQgVW5peC1saWtlCiAgIHBsYXRmb3Jtcywg c3VjaCBhcyBGcmVlQlNELiBJdCBhaW1zIHRvIGJlIGZhc3QgYW5kIGxpZ2h0d2VpZ2h0LCB3aGls ZQogICBzdGlsbCBiZWluZyB2aXN1YWxseSBhcHBlYWxpbmcgYW5kIGVhc3kgdG8gdXNlLiBUaGUg WGZjZSB0ZWFtIGNvbnRpbnVlcwogICB0byBrZWVwIGVhY2ggcGllY2Ugb2YgdGhlIFhmY2UgRGVz a3RvcCB1cCB0byBkYXRlLgoKICAgVGhlIGxhdGVzdCBjb21taXRzIGNvbmNlcm5lZDoKCiAgICAg KiBBcHBsaWNhdGlvbnM6CgogICAgICAgLSBNaWRvcmkgKDAuNS43KQogICAgICAgLSB4ZmJ1cm4g KDAuNS4wKQogICAgICAgLSB4ZmNlNC1wYXJvbGUgKDAuNS40KQogICAgICAgLSB4ZmNlNC10YXNr bWFuYWdlciAoMS4wLjEpCiAgICAgICAtIHhmY2U0LXR1bWJsZXIgKDAuMS4zMCkKCiAgICAgKiBQ YW5lbCBwbHVnaW5zOgoKICAgICAgIC0geGZjZTQtY2xpcG1hbi1wbHVnaW4gKDEuMi41KQogICAg ICAgLSB4ZmNlNC1lcXVha2UtcGx1Z2luICgxLjMuNCkKICAgICAgIC0geGZjZTQtd2F2ZWxhbi1w bHVnaW4gKDAuNS4xMSkKICAgICAgIC0geGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luICgxLjMuMikK CiAgIFdlIGFsc28gZm9sbG93IGRldmVsb3BtZW50IG9mIGNvcmUgY29tcG9uZW50cyAoYXZhaWxh YmxlIGluIHlvdXIKICAgcmVwb3NpdG9yeSkuIFNlZSB0aGUgbGlua3MgZm9yIGRvY3VtZW50YXRp b24gb24gaG93IHRvIHVwZ3JhZGUgdGhvc2UKICAgbGlicmFyaWVzLgoKICAgICAqIGdhcmNvbiAo MC4zLjApCiAgICAgKiBsaWJ4ZmNlNG1lbnUgKDQuMTEuMSkKICAgICAqIGxpYnhmY2U0dXRpbCAo NC4xMS4wKQogICAgICogeGZjZTQtYXBwZmluZGVyICg0LjExLjApCiAgICAgKiB4ZmNlNC1kZXNr dG9wICg0LjExLjQpCiAgICAgKiB4ZmNlNC1kZXYtdG9vbHMgKDQuMTEuMCkKICAgICAqIHhmY2U0 LXBhbmVsICg0LjExLjApCiAgICAgKiB4ZmNlNC1wYXJvbGUgKDAuNi4wKQogICAgICogeGZjZTQt c2V0dGluZ3MgKDQuMTEuMikKICAgICAqIHhmY2U0LXNlc3Npb24gKDQuMTEuMCkKICAgICAqIHhm Y2U0LXdtICg0LjExLjEpCiAgICAgKiB4ZmNlNC14a2ItcGx1Z2luICgwLjcuMCkKCk9wZW4gdGFz a3M6CgogICAgMS4gQWRkIHN1cHBvcnQgb2YgRHJhZ29uRmx5IGZvciB4ZmNlNC10YXNrbWFuZ2Vy LgogICAgMi4gRmluaXNoIHJlcGxhY2luZyBUYW5nbyBpY29uIHRoZW1lIHdpdGggR05PTUUsIGlu IG9yZGVyIHRvIGNsb3NlCiAgICAgICBwb3J0cy8xODM2OTAgKHNlZSBsaW5rcywgTWlkb3JpIHJl bWFpbnMgdG8gYmUgZml4ZWQpLgogICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwoKWkZTIENoYXB0ZXIgb2YgdGhlIEhh bmRib29rCgogICBVUkw6IGh0dHA6Ly93d3cuYWxsYW5qdWRlLmNvbS96ZnNfaGFuZGJvb2svemZz Lmh0bWwKICAgVVJMOiBodHRwOi8vd3d3LmFsbGFuanVkZS5jb20vdGFsa3MvQXNpYUJTRENvbl8y MDE0Xy1fV0lQXy1fWkZTX0hhbmRib29rLnBkZgoKICAgQ29udGFjdDogQWxsYW4gSnVkZSA8ZnJl ZWJzZEBhbGxhbmp1ZGUuY29tPgogICBDb250YWN0OiBCZW5lZGljdCBSZXVzY2hsaW5nIDxiY3JA RnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IFdhcnJlbiBCbG9jayA8d2Jsb2NrQEZyZWVCU0Qub3Jn PgoKICAgWkZTIGlzIG9uZSBvZiB0aGUgcHJlbWllciBmZWF0dXJlcyBvZiBGcmVlQlNELiBUaGUg Y3VycmVudAogICBkb2N1bWVudGF0aW9uIGluIHRoZSBIYW5kYm9vayBhbmQgZWxzZXdoZXJlIG9u bGluZSBpcyBzZXZlcmVseSBsYWNraW5nLgogICBNdWNoIG9mIHRoZSBvcmlnaW5hbCBkb2N1bWVu dGF0aW9uIGZyb20gU3VuIGFuZCBPcmFjbGUgaGFzIGRpc2FwcGVhcmVkLAogICBtb3ZlZCwgb3Ig aXMgYWJvdXQgdGhlIHByb3ByaWV0YXJ5IHZlcnNpb24gb2YgWkZTLgoKICAgTmV3IHVzZXJzIGhh dmUgbWFueSBxdWVzdGlvbnMgYWJvdXQgWkZTIGFuZCB5ZXQgdGhlcmUgZXhpc3RzIGEgZ3JlYXQK ICAgZGVhbCBtb3JlIGJhZCBhZHZpY2UgYWJvdXQgWkZTIHRoYW4gcHJvcGVyIGRvY3VtZW50YXRp b24uIFRoZSBjdXJyZW50CiAgIFpGUyBjaGFwdGVyIG9mIHRoZSBGcmVlQlNEIEhhbmRib29rIHN0 YXJ0cyBvZmYgd2l0aCB0aGUgcmVxdWlyZWQgc3RlcHMKICAgdG8gY29uZmlndXJlIGFuIGkzODYg bWFjaGluZSB0byBydW4gWkZTLiBUaGlzIGlzIG1vcmUgbGlrZWx5IHRvIHNjYXJlCiAgIG9mZiBh IG5ldyB1c2VyIHRoYW4gdG8gZWR1Y2F0ZSB0aGVtIGFib3V0IGhvdyB0byBwcm9wZXJseSB1c2Ug WkZTLgoKICAgQXQgQlNEQ2FuIDIwMTMsIHRoZSBwcm9jZXNzIG9mIHdyaXRpbmcgYW4gZW50aXJl bHkgbmV3IGNoYXB0ZXIgb2YgdGhlCiAgIEhhbmRib29rIG9uIFpGUyB3YXMgc3RhcnRlZC4gQ3Vy cmVudGx5IHRoaXMgY2hhcHRlciBjb25zaXN0cyBvZgogICBhcHByb3hpbWF0ZWx5IDE2LDAwMCB3 b3JkcyBjb3ZlcmluZyBhbGwgc3ViY29tbWFuZHMgb2YgdGhlIHpwb29sKDgpIGFuZAogICB6ZnMo OCkgdXRpbGl0aWVzLCBkZWxlZ2F0aW9uLCB0dW5pbmcgYW5kIGEgc2VjdGlvbiBkZXZvdGVkIHRv CiAgIGRlZmluaXRpb25zIGFuZCBleHBsYW5hdGlvbnMgb2YgdGhlIHRlcm1zIGFuZCBmZWF0dXJl cyBvZiBaRlMuCgogICBUaGUgcmVtYWluaW5nIHNlY3Rpb24gaXMgdGhlIEZBUSwgdG8gaGVscCB1 c2VycyBhZGRyZXNzIHRoZSBtb3N0IGNvbW1vbgogICBwcm9ibGVtcyB0aGV5IG1pZ2h0IHJ1biBp bnRvIHdpdGggWkZTLiBJdCB3b3VsZCBiZSB1c2VmdWwgdG8gaGVhcgogICBleHBlcmllbmNlcywg cXVlc3Rpb25zLCBtaXNjb25jZXB0aW9ucywgZ290Y2hhcywgc3R1bWJsaW5nIGJsb2NrcywgYW5k CiAgIHN1Z2dlc3Rpb25zIGZvciB0aGUgRkFRIHNlY3Rpb24gZnJvbSBvdGhlciB1c2Vycy4gQWxz bywgaXQgd291bGQgYmUKICAgZ29vZCB0byBoYXZlIGEgdXNlIGNhc2VzIHNlY3Rpb24gdGhhdCBo aWdobGlnaHRzIHNvbWUgb2YgdGhlIGNhc2VzCiAgIHdoZXJlIFpGUyBwcm92aWRlcyBhZHZhbnRh Z2VzIG92ZXIgdHJhZGl0aW9uYWwgZmlsZSBzeXN0ZW1zLgoKICAgUGxlYXNlIHNlbmQgc3VnZ2Vz dGlvbnMgdG8gdGhlIGZyZWVic2QtZG9jIG1haWxpbmcgbGlzdC4KCiAgIFRoaXMgcHJvamVjdCBp cyBzcG9uc29yZWQgYnkgU2NhbGVFbmdpbmUsIEluYy4KCk9wZW4gdGFza3M6CgogICAgMS4gVGVj aG5pY2FsIHJldmlldyBieSBNYXR0IEFocmVucyAoY28tY3JlYXRvciBvZiBaRlMpLgogICAgMi4g SW1wcm92ZSBkZWxlZ2F0aW9uIHNlY3Rpb24uCiAgICAzLiBJbXByb3ZlIHR1bmluZyBzZWN0aW9u LCBhZGQgbmV3IHN5c2N0bHMgYWRkZWQgaW4gaGVhZC4KICAgIDQuIEFkZCBzZWN0aW9uIG9uIGph aWxzIGFuZCB0aGUgamFpbGVkIHByb3BlcnR5LgogICAgNS4gQWRkIEZBUSBzZWN0aW9uLgogICAg Ni4gQWRkICJVc2UgQ2FzZXMiIHNlY3Rpb24uCiAgICA3LiBHZW5lcmFsIGVkaXRpbmcgYW5kIHJl dmlldy4KICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KCkZyZWVCU0QgUGFydGljaXBhdGluZyBpbiBTdW1tZXIgb2Yg Q29kZSAyMDE0CgogICBVUkw6IGh0dHA6Ly9nc29jLkZyZWVCU0Qub3JnLwogICBVUkw6IGh0dHBz Oi8vd2lraS5mcmVlYnNkLm9yZy9TdW1tZXJPZkNvZGUyMDE0CgogICBDb250YWN0OiBHYXZpbiBB dGtpbnNvbiA8Z2F2aW5ARnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IEdsZW4gQmFyYmVyIDxnamJA RnJlZUJTRC5vcmc+CiAgIENvbnRhY3Q6IFdvamNpZWNoIEtvc3playA8d2tvc3pla0BGcmVlQlNE Lm9yZz4KCiAgIEZyZWVCU0QgaXMgcGxlYXNlZCB0byBoYXZlIGJlZW4gYWNjZXB0ZWQgYXMgYSBw YXJ0aWNpcGF0aW5nCiAgIG9yZ2FuaXphdGlvbiBpbiBHb29nbGUncyBTdW1tZXIgb2YgQ29kZSAy MDE0LiBUaGlzIHdpbGwgYmUgdGhlIHRlbnRoCiAgIHRpbWUgd2UgaGF2ZSBwYXJ0aWNpcGF0ZWQg aW4gdGhlIHByb2dyYW0sIGhhdmluZyBiZWVuIHNlbGVjdGVkIHRvCiAgIHBhcnRpY2lwYXRlIGV2 ZXJ5IHllYXIgc2luY2UgaXRzIGludHJvZHVjdGlvbi4KCiAgIFRoaXMgeWVhciwgdGhlIGFkbWlu aXN0cmF0b3JzIG1hZGUgYSBzcGVjaWFsIGF0dGVtcHQgdG8gc3ByZWFkIHRoZSB3b3JkCiAgIGFi b3V0IFN1bW1lciBvZiBDb2RlIGFyb3VuZCB1bml2ZXJzaXRpZXMsIGluY2x1ZGluZyBtYWtpbmcg Y29udGFjdCB3aXRoCiAgIGFyb3VuZCAzNTAgbWFpbmx5IFBvbGlzaCwgQnJpdGlzaCwgQWZyaWNh biBhbmQgQW1lcmljYW4gdW5pdmVyc2l0aWVzIHRvCiAgIGFkdmVydGlzZSB0aGUgU3VtbWVyIG9m IENvZGUgcHJvZ3JhbSwgd2l0aCBhIHBhcnRpY3VsYXIgZm9jdXMgb24KICAgRnJlZUJTRCdzIHBh cnRpY2lwYXRpb24uIFdlIG1hZGUgY29udGFjdCB3aXRoIGJvdGggdGVjaG5pY2FsCiAgIGRlcGFy dG1lbnRzIGFuZCBzdHVkZW50IHNvY2lldGllcy4gUG9zdGVycyB3ZXJlIHByb2R1Y2VkIGluIHNl dmVyYWwKICAgbGFuZ3VhZ2VzLCBhbmQgRnJlZUJTRCBjb21taXR0ZXJzIGFuZCB1c2VycyB3ZXJl IGVuY291cmFnZWQgdG8KICAgZGlzdHJpYnV0ZSB0aGVzZSBwb3N0ZXJzIGFyb3VuZCB0aGVpciBs b2NhbCB1bml2ZXJzaXRpZXMuCgogICBGcmVlQlNEIHJlY2VpdmVkIGEgdG90YWwgb2YgMzkgcHJv cG9zYWxzIGZyb20gc3R1ZGVudHMsIGFuZCB3ZXJlCiAgIHN1YnNlcXVlbnRseSBncmFudGVkIDE1 IHNsb3RzIGZyb20gR29vZ2xlLiBXZSBhcmUgbm93IGZhY2luZyB0aGUKICAgdW5wbGVhc2FudCBj aGFsbGVuZ2Ugb2YgdHJ5aW5nIHRvIGRlY2lkZSB3aGljaCBvZiB0aGUgMzkgcHJvcG9zYWxzIHRv CiAgIHNlbGVjdCwgdGFraW5nIGludG8gYWNjb3VudCB0aGUgcXVhbGl0eSwgZGVzaXJhYmlsaXR5 IGFuZCBmZWFzaWJpbGl0eQogICBvZiBlYWNoIHByb3Bvc2FsLCBhcyB3ZWxsIGFzIGVuc3VyaW5n IHdlIHdpbGwgYmUgYWJsZSB0byBwcm92aWRlIGFuCiAgIGV4Y2VsbGVudCBtZW50b3JpbmcgZXhw ZXJpZW5jZSB0byBlYWNoIHNlbGVjdGVkIHN0dWRlbnQuIEFsbCBtZW50b3JzCiAgIGhhdmUgdm9s dW50ZWVyZWQgdG8gbWVudG9yLCBhbmQgd2UgcGFpciBzdHVkZW50cyB3aXRoIG1lbnRvcnMgcHJp bWFyaWx5CiAgIGJhc2VkIG9uIHRoZSBwcm9zcGVjdGl2ZSBtZW50b3IncyBhcmVhcyBvZiBleHBl cnRpc2UsIGludGVyZXN0IGluIHRoZQogICBwcm9qZWN0LCBhbHNvIHRha2luZyBpbnRvIGFjY291 bnQgdGhlIGRlc2lyZSB0byBwYWlyIHN0dWRlbnRzIHVwIHdpdGgKICAgbWVudG9ycyBpbiBzaW1p bGFyIHRpbWUgem9uZXMgaW4gb3JkZXIgdG8gaW1wcm92ZSB0aGUgc3R1ZGVudAogICBleHBlcmll bmNlLiBUaGUgZmluYWwgbGlzdCBvZiBhY2NlcHRlZCBzdHVkZW50cyBpcyBleHBlY3RlZCB0byBi ZQogICBhbm5vdW5jZWQgb24gdGhlIDIxc3QgQXByaWwuCiAgICAgX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCgpUaGUgRnJl ZUJTRCBGb3VuZGF0aW9uCgogICBVUkw6IGh0dHA6Ly93d3cuRnJlZUJTREZvdW5kYXRpb24ub3Jn LwogICBVUkw6IGh0dHA6Ly9mcmVlYnNkam91cm5hbC5jb20vCgogICBDb250YWN0OiBEZWIgR29v ZGtpbiA8ZGViQEZyZWVCU0RGb3VuZGF0aW9uLm9yZz4KCiAgIFRoZSBGcmVlQlNEIEZvdW5kYXRp b24gaXMgYSA1MDEoYykoMykgbm9uLXByb2ZpdCBvcmdhbml6YXRpb24gZGVkaWNhdGVkCiAgIHRv IHN1cHBvcnRpbmcgYW5kIHByb21vdGluZyB0aGUgRnJlZUJTRCBQcm9qZWN0IGFuZCBjb21tdW5p dHkKICAgd29ybGR3aWRlLiBNb3N0IG9mIHRoZSBmdW5kaW5nIGlzIHVzZWQgdG8gc3VwcG9ydCBG cmVlQlNEIGRldmVsb3BtZW50CiAgIHByb2plY3RzLCBjb25mZXJlbmNlcyBhbmQgZGV2ZWxvcGVy IHN1bW1pdHMsIHB1cmNoYXNlIGVxdWlwbWVudCB0byBncm93CiAgIGFuZCBpbXByb3ZlIHRoZSBG cmVlQlNEIGluZnJhc3RydWN0dXJlLCBhbmQgcHJvdmlkZSBsZWdhbCBzdXBwb3J0IGZvcgogICB0 aGUgUHJvamVjdC4KCiAgIFdlIHB1Ymxpc2hlZCB0aGUgZmlyc3QgaXNzdWUgb2YgdGhlIEZyZWVC U0QgSm91cm5hbCwgb3VyIG5ldyBvbi1saW5lCiAgIEZyZWVCU0QgbWFnYXppbmUuIFRoZSBwb3Np dGl2ZSBmZWVkYmFjayBmcm9tIGJvdGggdGhlIEZyZWVCU0QgYW5kCiAgIG91dHNpZGUgY29tbXVu aXRpZXMgaGFzIGJlZW4gaW5jcmVkaWJsZS4gVGhpcyBxdWFydGVyIHdlIGJlZ2FuIHdvcmsgb24K ICAgYXJ0aWNsZXMgYW5kIHByb21vdGlvbiBmb3IgdGhlIHNlY29uZCBpc3N1ZS4gV2UgYWxzbyBz dGFydGVkIHdvcmtpbmcgb24KICAgYSBkeW5hbWljIHZlcnNpb24gb2YgdGhlIG1hZ2F6aW5lIHRo YXQgY2FuIGJlIHJlYWQgaW4gbWFueSB3ZWIgYnJvd3NlcnMKICAgaW5jbHVkaW5nIHRob3NlIHRo YXQgcnVuIG9uIEZyZWVCU0QuCgogICBUaGlzIHllYXIgd2UgYXJlIGVhcm1hcmtpbmcgbW9yZSBm dW5kaW5nIHRvd2FyZHMgRnJlZUJTRCBhZHZvY2FjeSBhbmQKICAgZWR1Y2F0aW9uLiBZb3Ugd2ls bCBzZWUgbW9yZSBsaXRlcmF0dXJlLCB3aGl0ZSBwYXBlcnMsIGFydGljbGVzLCBhbmQgc28KICAg b24gdG8gaGVscCBwcm9tb3RlIEZyZWVCU0QuCgogICBUaGUgRm91bmRhdGlvbiBoZWxkIGEgYm9h cmQgbWVldGluZyBpbiBCZXJrZWxleSwgQ2FsaWZvcm5pYSwgaW4KICAgSmFudWFyeS4gV2UgZGlz Y3Vzc2VkIGxvbmdlciB0ZXJtIHN0cmF0ZWd5IGFuZCBwbGFubmluZyBmb3IgdGhlIHllYXIuCiAg IFdlIHB1dCB0b2dldGhlciBvdXIgMjAxNCBidWRnZXQgd2l0aCBhIHBsYW4gb2YgcmFpc2luZyBh dCBsZWFzdAogICAkMSwwMDAsMDAwIGFuZCBzcGVuZGluZyAkOTAwLDAwMC4KCiAgIFR3byBGb3Vu ZGF0aW9uIGZ1bmRlZCBwcm9qZWN0cyB3ZXJlIGNvbXBsZXRlZC4gVGhlIGZpcnN0LCBjby1zcG9u c29yZWQKICAgYnkgR29vZ2xlLCBpbnRlZ3JhdGVkIHRoZSBDYXNwZXIgZGFlbW9uIGludG8gRnJl ZUJTRC4gVGhlIHNlY29uZCB3YXMKICAgYXVkaXRkaXN0ZCg4KSBpbXByb3ZlbWVudHMgZm9yIHRo ZSBGcmVlQlNEIGNsdXN0ZXIuCgogICBXb3JrIGNvbnRpbnVlZCBvbiB0aGVzZSBGb3VuZGF0aW9u LXNwb25zb3JlZCBwcm9qZWN0czogSW50ZWwgZ3JhcGhpY3MKICAgZHJpdmVyIHVwZGF0ZSBieSBL b25zdGFudGluIEJlbG91c292LCBVRUZJIGJvb3Qgc3VwcG9ydCBmb3IgYW1kNjQgYnkgRWQKICAg TWFzdGUsIGF1dG9mcyBhdXRvbW91bnRlciBhbmQgaW4ta2VybmVsIGlTQ1NJIHN0YWNrIGVuaGFu Y2VtZW50cyBhbmQKICAgYnVnIGZpeGVzIGJ5IEVkd2FyZCBUb21hc3ogTmFwaWVyYWxhLCBhbmQg dXBkYXRlZCB2dCg0KSBzeXN0ZW0gY29uc29sZQogICBieSBBbGVrc2FuZHIgUnliYWxrby4gQSBt b3JlIGRldGFpbGVkIHByb2plY3QgdXBkYXRlIGZvciBlYWNoIG9mIHRoZQogICBhYm92ZSBwcm9q ZWN0cyBjYW4gYmUgZm91bmQgd2l0aGluIHRoaXMgcXVhcnRlcmx5IHN0YXR1cyByZXBvcnQuCgog ICBXZSB3ZXJlIGEgR29sZCBTcG9uc29yIGZvciBOWUNCU0RDb24gMjAxNCBpbiBOZXcgWW9yaywg RmVicnVhcnkgOCwKICAgd2hpY2ggd2FzIGF0dGVuZGVkIGJ5IHNldmVyYWwgYm9hcmQgbWVtYmVy cy4gV2Ugd2VyZSByZXByZXNlbnRlZCBhdAogICBTQ0FMRSBpbiBMb3MgQW5nZWxlcywgRmVicnVh cnkgMjItMjMsIGFuZCBJQ0FOTiBpbiBTaW5nYXBvcmUsIE1hcmNoCiAgIDIyLTI1LgoKICAgV2Ug d2VyZSBhIHNwb25zb3IgZm9yIEFzaWFCU0RDb24gaW4gVG9reW8sIE1hcmNoIDE1LTE2LiBCb2Fy ZCBtZW1iZXIKICAgSGlyb2tpIFNhdG8gd2FzIHRoZSBjb25mZXJlbmNlIG9yZ2FuaXplci4gQm9h cmQgbWVtYmVycyBLaXJrIE1jS3VzaWNrCiAgIGFuZCBHZW9yZ2UgVi4gTmV2aWxsZS1OZWlsIHRh dWdodCB0dXRvcmlhbHMgYW5kIEtpcmsgZ2F2ZSBhIGtleW5vdGUuCiAgIEJvYXJkIG1lbWJlciBE cnUgTGF2aWduZSBtYW5uZWQgdGhlIGZvdW5kYXRpb24gdGFibGUgYW5kIHNwb2tlIGF0IG9uZQog ICBvZiB0aGUgc2Vzc2lvbnMuCgogICBXZSBiZWNhbWUgYSBHb2xkKyBzcG9uc29yIGZvciBCU0RD YW4gMjAxNCwgTWF5IDE2LTE3IGFuZCBoYXZlIHN0YXJ0ZWQKICAgcmVhY2hpbmcgb3V0IHRvIHZl bmRvcnMgdG8gYXR0ZW5kIHRoZSBkZXZlbG9wZXIgc3VtbWl0IHRoYXQgcnVucyBpbiB0aGUKICAg dHdvIGRheXMgYmVmb3JlIEJTRENhbi4KCiAgIEJvYXJkIG1lbWJlcnMgR2VvcmdlLCBLaXJrLCBh bmQgUm9iZXJ0IFdhdHNvbiBwdXNoZWQgdG8gZmluaXNoIHRoZQogICBmaW5hbCBkcmFmdCBvZiB0 aGUgbmV4dCBlZGl0aW9uIG9mIHRoZWlyIGJvb2sgIlRoZSBEZXNpZ24gYW5kCiAgIEltcGxlbWVu dGF0aW9uIG9mIHRoZSBGcmVlQlNEIE9wZXJhdGluZyBTeXN0ZW0iLgoKICAgSVRXaXJlIGVkaXRv ciBTYW0gVmFyZ2hlc2UgcHVibGlzaGVkIGFuIGludGVydmlldyB3aXRoIEtpcmsgYW5kCiAgIEZv dW5kYXRpb24gdGVjaG5pY2FsIG1hbmFnZXIgRWQgTWFzdGUgYWJvdXQgdGhlIHN0YXR1cyBvZiBz ZWN1cmUgYm9vdAogICBvbiBGcmVlQlNELgoKICAgVGhlIEZyZWVCU0QgTG9nbyBpcyBub3cgb2Zm aWNpYWxseSBhIHJlZ2lzdGVyZWQgdHJhZGVtYXJrIHRvIHJlcHJlc2VudAogICB0aGUgRnJlZUJT RCBvcGVyYXRpbmcgc3lzdGVtLiBXZSBhcmUgd29ya2luZyB0byBleHBhbmQgdGhlIHJlZ2lzdHJh dGlvbgogICBiZXlvbmQganVzdCB0aGUgRnJlZUJTRCBvcGVyYXRpbmcgc3lzdGVtLCBidXQgY3Vy cmVudGx5IHN0aWxsIGhhdmUgdG8KICAgdXNlIHRoZSAiVE0iIHN5bWJvbCB3aGVuIHVzaW5nIGl0 IG9uIGFwcGFyZWwgYW5kIG90aGVyCiAgIG5vbi1vcGVyYXRpbmctc3lzdGVtIGl0ZW1zLiBXZSBj b250aW51ZWQgcmV2aWV3aW5nIHJlcXVlc3RzIGFuZAogICBncmFudGluZyBwZXJtaXNzaW9uIHRv IHVzZSBGcmVlQlNEIHRyYWRlbWFya3MuCgogICBBZnRlciBmaW5pc2hpbmcgdGhlIDEwLjAtUkVM RUFTRSwgRm91bmRhdGlvbiBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhbmQKICAgcmVsZWFzZSBlbmdp bmVlciBHbGVuIEJhcmJlciBiZWdhbiB3b3JrIG9uIGFkZGluZyBzdXBwb3J0IGZvcgogICBGcmVl QlNEL2FybSBpbWFnZSBidWlsZHMgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBidWlsZCBwcm9jZXNz LiBBcyBhCiAgIHJlc3VsdCBvZiB0aGlzIHdvcmssIEZyZWVCU0QvYXJtIGltYWdlcyBhcmUgcHJv ZHVjZWQgYXMgcGFydCBvZiB0aGUKICAgd2Vla2x5IGRldmVsb3BtZW50IHNuYXBzaG90IGJ1aWxk cywgYW5kIGFyZSBhdmFpbGFibGUgZnJvbSBhbnkgb2YgdGhlCiAgIEZyZWVCU0QgRlRQIG1pcnJv cnMuIFN1cHBvcnRlZCBrZXJuZWwgY29uZmlndXJhdGlvbnMgY3VycmVudGx5IGluY2x1ZGUKICAg QkVBR0xFQk9ORSwgUlBJLUIsIFBBTkRBQk9BUkQsIFdBTkRCT0FSRC1RVUFELCBhbmQgWkVEQk9B UkQuCgogICBHZW9yZ2UgdmlzaXRlZCBzaXggbGFyZ2UgRnJlZUJTRCB1c2VycyBpbiB0aGUgQmF5 IEFyZWEgaW4gRmVicnVhcnkuCiAgIFRoZXNlIG1lZXRpbmdzIGFyZSBjb25kdWN0ZWQgdG8gaGVs cCBmYWNpbGl0YXRlIGNvbGxhYm9yYXRpb24gYmV0d2VlbgogICBGcmVlQlNEIGN1c3RvbWVycyBh bmQgdGhlIEZyZWVCU0QgUHJvamVjdC4gSXQgaXMgYW4gb3Bwb3J0dW5pdHkgdG8KICAgZXhjaGFu Z2UgaW5mb3JtYXRpb24gb24gd2hhdCB0aGUgY3VzdG9tZXJzIGFyZSBkb2luZyBhbmQgd2hhdCBp cyBiZWluZwogICB3b3JrZWQgb24gaW4gdGhlIFByb2plY3QuIEl0IGlzIGFsc28gYW4gb3Bwb3J0 dW5pdHkgdG8gdHJ5IHRvIGNvbm5lY3QKICAgY3VzdG9tZXJzIHdpdGggdGhlIGFwcHJvcHJpYXRl IEZyZWVCU0QgZGV2ZWxvcGVycyB3aG8gbWF5IGJlIHdvcmtpbmcgb24KICAgYXJlYXMgb2YgRnJl ZUJTRCB0aGF0IGludGVyZXN0IHRoZXNlIGN1c3RvbWVycy4KICAgICBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KCkxvdmUg RnJlZUJTRD8gIFN1cHBvcnQgdGhlIGRldmVsb3BtZW50IHdpdGggYSBkb25hdGlvbiB0byB0aGUg RnJlZUJTRApGb3VuZGF0aW9uISAgaHR0cHM6Ly93d3cuZnJlZWJzZGZvdW5kYXRpb24ub3JnL2Rv bmF0ZS8KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZnJl ZWJzZC1hbm5vdW5jZUBmcmVlYnNkLm9yZyBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmZyZWVi c2Qub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWJzZC1hbm5vdW5jZQpUbyB1bnN1YnNjcmliZSwg c2VuZCBhbnkgbWFpbCB0byAiZnJlZWJzZC1hbm5vdW5jZS11bnN1YnNjcmliZUBmcmVlYnNkLm9y ZyI=