SSBoYXZlIG5vdyBmaW5pc2hlZCBhbiBpbml0aWFsIHBvcnQgb2Ygc2V2ZXJhbCBsaWJyYXJpZXMg KHRoYXQgSQpkZXZlbG9wKSBmcm9tIE1MdG9uJ3MgbGlicmFyeSBwcm9qZWN0IHJlcG9zaXRvcnkK KGh0dHA6Ly9tbHRvbi5vcmcvcGlwZXJtYWlsL21sdG9uLzIwMDYtRGVjZW1iZXIvMDI5NDY0Lmh0 bWwpIHRvClBvbHkvTUwuICBUbyBiZSBwcmVjaXNlLCB0aGUgdHdvIGJ1Z3MgdGhhdCBJIHJlcG9y dGVkIHJlY2VudGx5ICh0aGUKcGFyc2luZyBvZiBzdHJleHBzIGJ1ZyBhbmQgdGhlIHR5cGUgY2hl Y2tpbmcgYnVnKSBuZWVkIHRvIGJlIGZpeGVkCmZpcnN0LCBidXQgeW91IGNhbiB0ZW1wb3Jhcmls eSB3b3JrIGFyb3VuZCB0aG9zZSBidWdzIGFzIEkgaGF2ZQpkZXNjcmliZWQuICBUaGlzIGUtbWFp bCBhbHNvIGNvbnRhaW5zIGEgcGF0Y2ggdGhhdCB5b3UgY2FuIGFwcGx5IGFzIGEKd29ya2Fyb3Vu ZCB1bnRpbCB0aGUgYnVncyBpbiBQb2x5L01MIGFyZSBmaXhlZCAobm90ZSB0aGF0IHRoZSBwYXRj aCBpcwpyZWxhdGl2ZSB0byB0aGUgPG1sdG9ubGliPi9jb20vc3NoIGRpcmVjdG9yeSkuCgpIZXJl IGFyZSBsaW5rcyB0byB0aGUgUkVBRE1FIGZpbGVzIG9mIHRoZSBwb3J0ZWQgbGlicmFyaWVzOgoK KiBFeHRlbmRlZCBCYXNpcyBMaWJyYXJ5OgpodHRwOi8vbWx0b24ub3JnL2NnaS1iaW4vdmlld3N2 bi5jZ2kvbWx0b25saWIvdHJ1bmsvY29tL3NzaC9leHRlbmRlZC1iYXNpcy91bnN0YWJsZS9SRUFE TUU/dmlldz1tYXJrdXAKKiBHZW5lcmljIFByb2dyYW1taW5nIExpYnJhcnk6Cmh0dHA6Ly9tbHRv bi5vcmcvY2dpLWJpbi92aWV3c3ZuLmNnaS9tbHRvbmxpYi90cnVuay9jb20vc3NoL2dlbmVyaWMv dW5zdGFibGUvUkVBRE1FP3ZpZXc9bWFya3VwCiogUHJldHR5IFByaW50aW5nIExpYnJhcnk6Cmh0 dHA6Ly9tbHRvbi5vcmcvY2dpLWJpbi92aWV3c3ZuLmNnaS9tbHRvbmxpYi90cnVuay9jb20vc3No L3ByZXR0aWVyL3Vuc3RhYmxlL1JFQURNRT92aWV3PW1hcmt1cAoqIFJhbmRvbSBHZW5lcmF0b3Ig TGlicmFyeToKaHR0cDovL21sdG9uLm9yZy9jZ2ktYmluL3ZpZXdzdm4uY2dpL21sdG9ubGliL3Ry dW5rL2NvbS9zc2gvcmFuZG9tL3Vuc3RhYmxlL1JFQURNRT92aWV3PW1hcmt1cAoqIFVuaXQgVGVz dGluZyBMaWJyYXJ5OgpodHRwOi8vbWx0b24ub3JnL2NnaS1iaW4vdmlld3N2bi5jZ2kvbWx0b25s aWIvdHJ1bmsvY29tL3NzaC91bml0LXRlc3QvdW5zdGFibGUvUkVBRE1FP3ZpZXc9bWFya3VwCiog VXNlIExpYnJhcnk6IGh0dHA6Ly9tbHRvbi5vcmcvY2dpLWJpbi92aWV3c3ZuLmNnaS9tbHRvbmxp Yi90cnVuay9vcmcvbWx0b24vdmVzYWsvdXNlLWxpYi91bnN0YWJsZS9SRUFETUU/dmlldz1tYXJr dXAKCkkgZW5jb3VyYWdlIFBvbHkvTUwgdXNlcnMgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGxpYnJh cmllcyBhcyBJIGJlbGlldmUKc29tZSBtaWdodCBmaW5kIHRoZW0gdXNlZnVsLiAgTm93LCBob3cg ZG8gSSBnZXQgeW91IHRvIGxvb2suLi4gIElmCnRoZXJlIGV4aXN0cyBhIDExLWxpbmUgcHJvZ3Jh bSB0aGF0IGp1c3QgbWFrZXMgeW91IHdhbnQgdG8gbG9vaywgdGhlbgptYXliZSBpdCBpcyB0aGUg YmVsb3cgZXhhbXBsZSBmcm9tIG15IHNsaWRlcyBhdCB0aGUgTUwgd29ya3Nob3AKKGh0dHA6Ly9y ZXNlYXJjaC5taWNyb3NvZnQuY29tL35jcnVzc28vbWwyMDA3L3NsaWRlcy9tbDA4cnAta2Fydm9u ZW4tc2xpZGVzLnBkZik6Cgp1c2UgIm9yZy9tbHRvbi92ZXNhay91c2UtbGliL3Vuc3RhYmxlL3Bv bHltbC51c2UiIDsKdXNlICJjb20vc3NoL3VuaXQtdGVzdC91bnN0YWJsZS9saWItd2l0aC1kZWZh dWx0LnVzZSIgOwpsZXQgb3BlbiBHZW5lcmljIFVuaXRUZXN0IGluCiAgIHVuaXRUZXN0cwogICAg ICAodGl0bGUgIlJldmVyc2UgKGluY29ycmVjdCkiKQogICAgICAodGVzdEFsbCAoc3EgKGxpc3Qg aW50KSkKICAgICAgICAgICAgICAgKGZuICh4cywgeXMpID0+CiAgICAgICAgICAgICAgICAgICB0 aGF0RXEgKGxpc3QgaW50KQogICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBlY3QgPSByZXYg KHhzIEAgeXMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgPSByZXYgeHMgQCBy ZXYgeXN9KSkgJAplbmQgOwoKVGhlIGFib3ZlIGlzIGFuIGV4YW1wbGUgdXNpbmcgdGhlIFVuaXQg VGVzdGluZyBsaWJyYXJ5LiAgWW91IGNhbiByZWFkCnRoZSBhYm92ZSB0ZXN0IGFzIGZvbGxvd3M6 CgogICAgVGVzdCBmb3IgYWxsIHBhaXJzIG9mIGxpc3RzIG9mIGludGVnZXJzIHhzIGFuZCB5cywg dGhhdCB0aGUKICAgIGxpc3RzIG9mIGludGVnZXJzIGV4cGVjdCBhbmQgYWN0dWFsIGFyZSBlcXVh bCwgd2hlcmUgdGhlCiAgICBleHBlY3QgbGlzdCBpcyB0aGUgcmV2ZXJzZSBvZiB0aGUgY29uY2F0 ZW5hdGlvbiBvZiB4cyBhbmQgeXMKICAgIGFuZCB0aGUgYWN0dWFsIGxpc3QgaXMgdGhlIGNvbmNh dGVuYXRpb24gb2YgdGhlIHJldmVyc2Ugb2YgeHMKICAgIGFuZCB0aGUgcmV2ZXJzZSBvZiB5cy4K Ck9mIGNvdXJzZSwgdGhpcyBwcm9wZXJ0eSBkb2VzIG5vdCBob2xkLiAgUnVubmluZyB0aGUgYWJv dmUganVzdCBub3cKd2l0aCBQb2x5L01MIGdhdmUgbWU6CgpbLi4uXQoxLiBSZXZlcnNlIChpbmNv cnJlY3QpIHRlc3QKICBGQUlMRUQ6CiAgICB3aXRoIChbMV0sIFt+MV0pCiAgICBlcXVhbGl0eSB0 ZXN0IGZhaWxlZDogZXhwZWN0ZWQgW34xLCAxXSwgYnV0IGdvdCBbMSwgfjFdLgoKV2hhdCB0aGUg b3V0cHV0IG1lYW5zIGlzIHRoYXQgdGhlIHRlc3QgZmFpbGVkIHdpdGggdGhlIGNvdW50ZXJleGFt cGxlCihbMV0sIFt+MV0pIGFuZCB0aGUgcmVhc29uIHdoeSBpdCBmYWlsZWQgaXMgdGhhdCB0aGUg ZXhwZWN0IGxpc3QgW34xLAoxXSB3YXNuJ3QgZXF1YWwgdG8gdGhlIGFjdHVhbCBsaXN0IFsxLCB+ MV0uCgpJdCBpcyBlYXN5IHRvIHNlZSB0aGF0IGluIG9yZGVyIHRvIGltcGxlbWVudCB0aGlzIGJl aGF2aW9yLCB5b3UgbmVlZAphdCBsZWFzdCB0byBiZSBhYmxlIHRvIGdlbmVyYXRlIGxpc3RzIG9m IGludGVnZXJzLCBjb21wYXJlIHRoZW0gZm9yCmVxdWFsaXR5LCBhbmQgcHJldHR5IHByaW50IHRo ZW0uICBUaGF0J3Mgbm90IGFsbCwgaG93ZXZlci4gIEl0IGlzIG5vdApqdXN0IGEgbHVja3kgY29p bmNpZGVuY2UgdGhhdCB0aGUgbGlzdHMgaW4gdGhlIGNvdW50ZXJleGFtcGxlIHdlcmUKc2luZ2xl dG9uIGxpc3RzIGFuZCB0aGF0IHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdHMgd2VyZSBudW1lcmlj YWxseQpzbWFsbC4gIEluIGZhY3QsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG1ha2VzIHVz ZSBvZiBhIHRvdGFsIG9mIDkKZ2VuZXJpYyB1dGlsaXR5IG9wZXJhdGlvbnM6Ci0gVGhlIEFyYml0 cmFyeSBnZW5lcmljIGlzIHVzZWQgdG8gZ2VuZXJhdGUgcmFuZG9tIHZhbHVlcyB3aGlsZQpzZWFy Y2hpbmcgZm9yIGEgY291bnRlcmV4YW1wbGUuCi0gVGhlIFNocmluayBnZW5lcmljIGlzIHVzZWQg dG8gcmVkdWNlIHRoZSBzaXplIG9mIGNvdW50ZXJleGFtcGxlcyB0bwptYWtlIHRoZW0gbW9yZSBy ZWFkYWJsZS4KLSBUaGUgU2l6ZSBnZW5lcmljIGlzIHVzZWQgdG8gb3JkZXIgY291bnRlcmV4YW1w bGVzIGJ5IHNpemUgYW5kIHRoZQpPcmQgZ2VuZXJpYyBpcyB1c2VkIHRvIG9yZGVyIGNvdW50ZXJl eGFtcGxlcyBieSBhIGxpbmVhciBvcmRlcmluZwp3aGlsZQpzaHJpbmtpbmcgY291bnRlcmV4YW1w bGVzLgotIFRoZSBFcSBnZW5lcmljIGlzIHVzZWQgdG8gY29tcGFyZSB2YWx1ZXMgZm9yIGVxdWFs aXR5LgotIFRoZSBQcmV0dHkgZ2VuZXJpYyBpcyB1c2VkIHRvIHByZXR0eSBwcmludCB2YWx1ZXMu Ci0gVGhlIEhhc2ggZ2VuZXJpYyBpcyB1c2VkIHRvIGhhc2ggdmFsdWVzIGFuZCBpcyB1c2VkIGlu dGVybmFsbHkgYnkKc2V2ZXJhbCBvdGhlciBnZW5lcmljcy4KLSBUaGUgVHlwZUhhc2ggYW5kIFR5 cGVJbmZvIGdlbmVyaWNzIGFyZSBhbHNvIHVzZWQgaW50ZXJuYWxseSBieSBvdGhlciBnZW5lcmlj cy4KVGhlc2UsIGFuZCBzZXZlcmFsIG90aGVyLCBnZW5lcmljIGZ1bmN0aW9ucyBhcmUgcHJvdmlk ZWQgYnkgdGhlCkdlbmVyaWMgUHJvZ3JhbW1pbmcgbGlicmFyeSBhbmQgdGhlIFVuaXQgVGVzdGlu ZyBsaWJyYXJ5IHVzZXMgdGhlbS4KCkkgbXVzdCBzYXkgdGhhdCBQb2x5L01MIGNvbXBpbGVzIGFt YXppbmdseSBxdWlja2x5IGNvbXBhcmVkIHRvIGV2ZXJ5Cm90aGVyIFNNTCBpbXBsZW1lbnRhdGlv biB0aGF0IEkgaGF2ZSB1c2VkLiAgRm9yIGV4YW1wbGUsIFBvbHkvTUwKZXhlY3V0ZXMgdGhlIGZp cnN0IHR3byB1c2UgbGluZXMgaW4gdGhlIGFib3ZlIGV4YW1wbGUgaW4gYWJvdXQgMwpzZWNvbmRz IG9uIG15IGxpZ2h0bHkgbG9hZGVkIGxhcHRvcC4gIFRoZSBzYW1lICh3aXRoIHBvbHltbC51c2UK cmVwbGFjZWQgd2l0aCBzbWxuai51c2UpIHRha2VzIGFib3V0IDEgbWludXRlIGFuZCAyMCBzZWNv bmRzIHdpdGgKU01ML05KLiAgU28sIGluIHRoaXMgY2FzZSwgUG9seS9NTCB3YXMgYWJvdXQgMjV4 IGZhc3RlciBhdCBjb21waWxpbmcKdGhhbiBTTUwvTkouICBJbXByZXNzaXZlIQoKVG8gdHJ5IHRo ZSBhYm92ZSBleGFtcGxlIHlvdXJzZWxmLCBzYXZlIHRoZSBwYXRjaCBmcm9tIHRoaXMgbWVzc2Fn ZSwKY2hlY2sgb3V0IHRoZSBtbHRvbmxpYiByZXBvc2l0b3J5LCB1c2UgdGhlIHBhdGNoIHRvIHdv cmsgYXJvdW5kIHRoZQpidWdzIGluIFBvbHkvTUwsIGJ1aWxkIHRoZSB1c2UtbGliIGxpYnJhcnks IGdvIHRvIHRoZSBtbHRvbmxpYiByb290CmRpcmVjdG9yeSwgc3RhcnQgUG9seS9NTCBhbmQgZW50 ZXIgdGhlIGV4YW1wbGUgYXQgdGhlIFJFUEwuICBIZXJlIGlzIGEKc2hlbGwgc2NyaXB0IHRvIGRv IGV2ZXJ5dGhpbmcgYnV0IHRoZSBmaXJzdCBhbmQgbGFzdCBzdGVwczoKCnN2biBjbyBzdm46Ly9t bHRvbi5vcmcvbWx0b25saWIvdHJ1bmsgbWx0b25saWIKY2QgbWx0b25saWIvY29tL3NzaC8KcGF0 Y2ggLXAwIDwgLi4vLi4vLi4vbWx0b25saWItcG9seW1sLXdvcmthcm91bmRzLnBhdGNoCmNkIC4u Ly4uL29yZy9tbHRvbi92ZXNhay91c2UtbGliL3Vuc3RhYmxlLwouL01ha2Uuc2gKY2QgLi4vLi4v Li4vLi4vLi4KcG9seQoKSGF2ZSBmdW4hCgotVmVzYSBLYXJ2b25lbgotLS0tLS0tLS0tLS0tLSBu ZXh0IHBhcnQgLS0tLS0tLS0tLS0tLS0KQSBub24tdGV4dCBhdHRhY2htZW50IHdhcyBzY3J1YmJl ZC4uLgpOYW1lOiBtbHRvbmxpYi1wb2x5bWwtd29ya2Fyb3VuZHMucGF0Y2gKVHlwZTogdGV4dC94 LWRpZmYKU2l6ZTogNTE5OSBieXRlcwpEZXNjOiBub3QgYXZhaWxhYmxlClVybCA6IGh0dHA6Ly9s aXN0cy5pbmYuZWQuYWMudWsvbWFpbG1hbi9wcml2YXRlL3BvbHltbC9hdHRhY2htZW50cy8yMDA3 MTEwOS9jNTgwOTc1OC9tbHRvbmxpYi1wb2x5bWwtd29ya2Fyb3VuZHMuYmluCg==