From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Diego Herrera To: git-commits@fedoraproject.org Subject: [rpms/onnx] test-1.21.0: Release 1.21.0 Date: Mon, 08 Jun 2026 15:18:30 GMT Message-ID: <178093191047.1.4405250522914983149.rpms-onnx-33d4cf6b4f12@fedoraproject.org> List-ID: X-Git-Repo: rpms/onnx X-Git-Branch: test-1.21.0 X-Git-Rev: 33d4cf6b4f12eb5ede11eaa4c808ad5fe5f8dc83 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb25ueApCcmFuY2gg OiB0ZXN0LTEuMjEuMApDb21taXQgOiAzM2Q0Y2Y2YjRmMTJlYjVlZGUxMWVhYTRjODA4YWQ1ZmU1 ZjhkYzgzCkF1dGhvciA6IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJlZGhhdC5jb20+CkRhdGUg ICA6IDIwMjYtMDYtMDdUMjI6NDI6MDEtMDQ6MDAKU3RhdHMgIDogKzU5MjQvLTU5OTcgaW4gMTAg ZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29ubngv Yy8zM2Q0Y2Y2YjRmMTJlYjVlZGUxMWVhYTRjODA4YWQ1ZmU1ZjhkYzgzP2JyYW5jaD10ZXN0LTEu MjEuMAoKTG9nOgpSZWxlYXNlIDEuMjEuMAoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIv LmdpdGlnbm9yZQppbmRleCA3MTAyMjM1Li4zNmNkNTgzIDEwMDY0NAotLS0gYS8uZ2l0aWdub3Jl CisrKyBiLy5naXRpZ25vcmUKQEAgLTEsNSArMSw3IEBACiByZXN1bHRzXyoKLSoucnBtCityZXZp ZXctKgorKi5zcmMucnBtCisqLnRhci5negogL29ubngtMS4xMy4wLnRhci5negogL29ubngtMS4x NC4wLnRhci5negogL29ubngtMS4xNC4xLnRhci5negoKZGlmZiAtLWdpdCBhLzAwMDAtQnVpbGQt c2hhcmVkLWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2ggYi8wMDAwLUJ1 aWxkLXNoYXJlZC1saWJyYXJpZXMtYW5kLWZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCmluZGV4 IDM5NTExZDEuLjU0MjM3NTUgMTAwNjQ0Ci0tLSBhLzAwMDAtQnVpbGQtc2hhcmVkLWxpYnJhcmll cy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKKysrIGIvMDAwMC1CdWlsZC1zaGFyZWQt bGlicmFyaWVzLWFuZC1maXgtaW5zdGFsbC1sb2NhdGlvbi5wYXRjaApAQCAtMSw3MyArMSw3MiBA QAotRnJvbSA4YTJhMjMyN2U4OWZiNjJiYjc0Y2VkMTIxY2JkZjhjM2E1OWFkMDRmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhNDhmNDJiMWUzZGQ5NzJjZjJjNWFkOWI5MjI3ZGE5ZTJi MWM5ZmFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxlamFuZHJvIEFsdmFyZXog QXlsbG9uIDxhLmFsdmFyZXpheWxsb25AZ21haWwuY29tPgogRGF0ZTogU2F0LCAyNCBGZWIgMjAy NCAxNDo0ODo0NSArMDEwMAotU3ViamVjdDogW1BBVENIIDAvNl0gQnVpbGQgc2hhcmVkIGxpYnJh cmllcyBhbmQgZml4IGluc3RhbGwgbG9jYXRpb24KK1N1YmplY3Q6IFtQQVRDSCAwLzJdIEJ1aWxk IHNoYXJlZCBsaWJyYXJpZXMgYW5kIGZpeCBpbnN0YWxsIGxvY2F0aW9uCisKK1RoaXMgcGF0Y2gg d2FzIHVwZGF0ZWQgdG8gYmUgYWJsZSB0byBiZSB1c2VkIG9uIG1vZGVybiB2ZXJzaW9ucyBvZiB0 aGUgbGlicmFyeS4KKworQ28tYXV0aG9yZWQtYnk6IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJl ZGhhdC5jb20+CiAKIC0tLQotIENNYWtlTGlzdHMudHh0IHwgMjIgKysrKysrKysrKysrKysrKysr KystLQotIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQog CiBkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggZDE1 ZDk3ZWRjLi5kNmUwNGQyZTkgMTAwNjQ0CitpbmRleCAwNDQ5OTZlMWIuLjNhMDhkMzI4OSAxMDA2 NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTQ2Niw3 ICs0NjYsNyBAQCBsaXN0KFJFTU9WRV9JVEVNIF9fdG1wX3NyY3MgIiR7T05OWF9ST09UfS9vbm54 L2NwcDJweV9leHBvcnQuY2MiKQotIGxpc3QoUkVNT1ZFX0lURU0gX190bXBfc3JjcyAke29ubnhf Z3Rlc3RzX3NyY30pCi0gbGlzdChBUFBFTkQgT05OWF9TUkNTICR7X190bXBfc3Jjc30pCi0gCi0t YWRkX2xpYnJhcnkob25ueF9wcm90byAke09OTlhfUFJPVE9fU1JDU30gJHtPTk5YX1BST1RPX0hE UlN9KQotK2FkZF9saWJyYXJ5KG9ubnhfcHJvdG8gU0hBUkVEICR7T05OWF9QUk9UT19TUkNTfSAk e09OTlhfUFJPVE9fSERSU30pCi0gYWRkX2RlcGVuZGVuY2llcyhvbm54X3Byb3RvIGdlbl9vbm54 X29wZXJhdG9yc19wcm90byBnZW5fb25ueF9kYXRhX3Byb3RvKQotIHRhcmdldF9pbmNsdWRlX2Rp cmVjdG9yaWVzKG9ubnhfcHJvdG8gUFVCTElDCi0gICAkPEJVSUxEX0lOVEVSRkFDRToke0NNQUtF X0NVUlJFTlRfQklOQVJZX0RJUn0+Ci1AQCAtNDk5LDYgKzQ5OSw4IEBAIGVsc2UoKQotICAgc2V0 KE9OTlhfQVBJX0RFRklORSAiLURPTk5YX0FQST1fX2F0dHJpYnV0ZV9fXChcKF9fdmlzaWJpbGl0 eV9fXChcImRlZmF1bHRcIlwpXClcKSIpCi0gICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMob25ueF9w cm90byBQUk9QRVJUSUVTIENYWF9WSVNJQklMSVRZX1BSRVNFVCBoaWRkZW4pCi0gICBzZXRfdGFy Z2V0X3Byb3BlcnRpZXMob25ueF9wcm90byBQUk9QRVJUSUVTIFZJU0lCSUxJVFlfSU5MSU5FU19I SURERU4gMSkKLSsgIHNldF90YXJnZXRfcHJvcGVydGllcyhvbm54X3Byb3RvIFBST1BFUlRJRVMg VkVSU0lPTiAke09OTlhfVkVSU0lPTn0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNPVkVSU0lPTiAke09OTlhfVkVSU0lPTn0pCitAQCAtNDE0LDE5ICs0MTQs MjEgQEAgaWYoT05OWF9VU0VfTElURV9QUk9UTykKKyAgICAgc2V0KExJTktFRF9QUk9UT0JVRl9U QVJHRVQgcHJvdG9idWY6OmxpYnByb3RvYnVmLWxpdGUpCisgICBlbmRpZigpCiAgZW5kaWYoKQot IHRhcmdldF9jb21waWxlX2RlZmluaXRpb25zKG9ubnhfcHJvdG8gUFJJVkFURSAke09OTlhfQVBJ X0RFRklORX0pCi0gCi1AQCAtNTIyLDcgKzUyNCw5IEBAIGlmKENNQUtFX1NZU1RFTV9OQU1FIFNU UkVRVUFMICJBSVgiKQotICAgIyBTbywgY3JlYXRlIGEgb2JqZWN0IGxpYnJhcnkKLSAgIGFkZF9s aWJyYXJ5KG9ubnggT0JKRUNUICR7T05OWF9TUkNTfSkKLSBlbHNlKCkKLS0gIGFkZF9saWJyYXJ5 KG9ubnggJHtPTk5YX1NSQ1N9KQotKyAgYWRkX2xpYnJhcnkob25ueCBTSEFSRUQgJHtPTk5YX1NS Q1N9KQotKyAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKG9ubnggUFJPUEVSVElFUyBWRVJTSU9OICR7 T05OWF9WRVJTSU9OfQorLWFkZF9saWJyYXJ5KG9ubnhfcHJvdG8gJHtPTk5YX1BST1RPX1NSQ1N9 KQorK2FkZF9saWJyYXJ5KG9ubnhfcHJvdG8gU0hBUkVEICR7T05OWF9QUk9UT19TUkNTfSkKKyBh ZGRfb25ueF9nbG9iYWxfZGVmaW5lcyhvbm54X3Byb3RvKQorLQorLWFkZF9saWJyYXJ5KG9ubngg JHtPTk5YX1NSQ1N9ICR7T05OWF9QUk9UT19TUkNTfSkKKytzZXRfdGFyZ2V0X3Byb3BlcnRpZXMo b25ueF9wcm90byBQUk9QRVJUSUVTIFZFUlNJT04gJHtPTk5YX1ZFUlNJT059CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1ZFUlNJT04gJHtPTk5YX1ZFUlNJ T059KQorK2FkZF9saWJyYXJ5KG9ubnggU0hBUkVEICR7T05OWF9TUkNTfSAke09OTlhfUFJPVE9f U1JDU30pCisgYWRkX2RlcGVuZGVuY2llcyhvbm54IG9ubnhfcHJvdG8pCisgc2V0X3NvdXJjZV9m aWxlc19wcm9wZXJ0aWVzKCR7T05OWF9TUkNTfSBQUk9QRVJUSUVTIENYWF9WSVNJQklMSVRZX1BS RVNFVCBoaWRkZW4pCisgYWRkX29ubnhfZ2xvYmFsX2RlZmluZXMob25ueCkKKy0KKytzZXRfdGFy Z2V0X3Byb3BlcnRpZXMob25ueCBQUk9QRVJUSUVTIFZFUlNJT04gJHtPTk5YX1ZFUlNJT059CiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVkVSU0lPTiAke09OTlhf VkVSU0lPTn0pCisgaWYoT05OWF9CVUlMRF9QWVRIT04pCisgICAjIGZpbmQgc3lzdGVtIG5hbm9i aW5kCisgICBpZihOT1QgREVGSU5FRCBuYW5vYmluZF9ESVIgT1IgIiR7bmFub2JpbmRfRElSfSIg U1RSRVFVQUwgIiIpCisgICAgIGV4ZWN1dGVfcHJvY2VzcygKKy0gICAgICBDT01NQU5EICR7UHl0 aG9uX0VYRUNVVEFCTEV9IC1tIG5hbm9iaW5kIC0tY21ha2UtZGlyCisrICAgICAgQ09NTUFORCAk e1B5dGhvbl9FWEVDVVRBQkxFfSAtbSBuYW5vYmluZCAtLWNtYWtlX2RpcgorICAgICAgIFJFU1VM VF9WQVJJQUJMRSBOQU5PQklORF9DTUFLRV9SRVNVTFQKKyAgICAgICBPVVRQVVRfVkFSSUFCTEUg TkFOT0JJTkRfQ01BS0VfRElSCisgICAgICAgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BB Q0UKK0BAIC00OTEsNiArNDkzLDE2IEBAIGlmKE9OTlhfSU5TVEFMTCkKKyAgICAgICAgICAgREVT VElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9CisgICAgICAgICAgIEZJTEVTX01B VENISU5HCisgICAgICAgICAgIFBBVFRFUk4gIiouaCIpCisrICBpbnN0YWxsKERJUkVDVE9SWSAk e09OTlhfUk9PVH0vb25ueAorKyAgICAgICAgICBERVNUSU5BVElPTiAiJHtQWV9TSVRFQVJDSH0i CisrICAgICAgICAgIEZJTEVTX01BVENISU5HCisrICAgICAgICAgIFBBVFRFUk4gIioucHkiCisr ICAgICAgICAgIFBBVFRFUk4gInRlc3QvKiIgRVhDTFVERSApCisrICBpbnN0YWxsKERJUkVDVE9S WSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vb25ueAorKyAgICAgICAgICBERVNUSU5BVElP TiAgIiR7UFlfU0lURUFSQ0h9IgorKyAgICAgICAgICBGSUxFU19NQVRDSElORworKyAgICAgICAg ICBQQVRURVJOICIqLnB5IgorKyAgICAgICAgICBQQVRURVJOICJ0ZXN0LyoiIEVYQ0xVREUgKQog IGVuZGlmKCkKICAKLSB0YXJnZXRfaW5jbHVkZV9kaXJlY3Rvcmllcyhvbm54IFBVQkxJQwotQEAg LTY4OSw2ICs2OTMsMTcgQEAgaW5zdGFsbChESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJTkFS WV9ESVJ9L29ubngKLSAgICAgICAgIEZJTEVTX01BVENISU5HCi0gICAgICAgICBQQVRURVJOICIq LmgiKQotIAotK2luc3RhbGwoRElSRUNUT1JZICR7T05OWF9ST09UfS9vbm54Ci0rICAgICAgICBE RVNUSU5BVElPTiAiJHtQWV9TSVRFQVJDSH0iCi0rICAgICAgICBGSUxFU19NQVRDSElORwotKyAg ICAgICAgUEFUVEVSTiAiKi5weSIKLSsgICAgICAgIFBBVFRFUk4gInRlc3QvKiIgRVhDTFVERSAp Ci0raW5zdGFsbChESVJFQ1RPUlkgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L29ubngKLSsg ICAgICAgIERFU1RJTkFUSU9OICAiJHtQWV9TSVRFQVJDSH0iCi0rICAgICAgICBGSUxFU19NQVRD SElORwotKyAgICAgICAgUEFUVEVSTiAiKi5weSIKLSsgICAgICAgIFBBVFRFUk4gInRlc3QvKiIg RVhDTFVERSApCi0rCiAgY29uZmlndXJlX2ZpbGUoCi0gICAke1BST0pFQ1RfU09VUkNFX0RJUn0v Y21ha2UvT05OWENvbmZpZ1ZlcnNpb24uY21ha2UuaW4KLSAgICR7UFJPSkVDVF9CSU5BUllfRElS fS9PTk5YQ29uZmlnVmVyc2lvbi5jbWFrZQotQEAgLTc0Nyw2ICs3NjIsOSBAQCBlbmRpZigpCi0g aW5zdGFsbChUQVJHRVRTCi0gICBvbm54IG9ubnhfcHJvdG8KLSAgIEVYUE9SVCBPTk5YVGFyZ2V0 cyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSkKLStpbnN0YWxsKFRBUkdFVFMK LSsgIG9ubnhfY3BwMnB5X2V4cG9ydAotKyAgREVTVElOQVRJT04gIiR7UFlfU0lURUFSQ0h9L29u bngiKQorQEAgLTU0NCw2ICs1NTYsOSBAQCBpZihPTk5YX0lOU1RBTEwpCisgICBpbnN0YWxsKFRB UkdFVFMKKyAgICAgb25ueCBvbm54X3Byb3RvCisgICAgIEVYUE9SVCBPTk5YVGFyZ2V0cyBERVNU SU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSkKKysgIGluc3RhbGwoVEFSR0VUUworKyAg ICBvbm54X2NwcDJweV9leHBvcnQKKysgICAgREVTVElOQVRJT04gIiR7UFlfU0lURUFSQ0h9L29u bngiKQogIAotIGlmKE9OTlhfQlVJTERfVEVTVFMpCi0gICBpbmNsdWRlKCR7T05OWF9ST09UfS9j bWFrZS91bml0dGVzdC5jbWFrZSkKKyAgIGluc3RhbGwoRVhQT1JUIE9OTlhUYXJnZXRzCisgICAg IERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS9PTk5YIgogLS0gCi0y LjUyLjAKKzIuNTQuMAogCgpkaWZmIC0tZ2l0IGEvMDAwMS1Vc2Utc3lzdGVtLXByb3RvYnVmLWFu ZC1yZXF1aXJlLXBhcmFtZXRlcml6ZWQucGF0Y2ggYi8wMDAxLVVzZS1zeXN0ZW0tcHJvdG9idWYt YW5kLXJlcXVpcmUtcGFyYW1ldGVyaXplZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNzZkNTAwNy4uMDAwMDAwMAotLS0gYS8wMDAxLVVzZS1zeXN0ZW0tcHJvdG9idWYtYW5k LXJlcXVpcmUtcGFyYW1ldGVyaXplZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAg QEAKLUZyb20gMzA3NDVlZTYyM2ZiMWZlNzUzMWQ2Mzk5ZTU0YjVmZmU0MTE0NDZmNSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZh cmV6YXlsbG9uQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMjQgRmViIDIwMjQgMTQ6NTI6MjUgKzAx MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIFVzZSBzeXN0ZW0gcHJvdG9idWYgYW5kIHJlcXVpcmUg cGFyYW1ldGVyaXplZAotCi0tLS0KLSByZXF1aXJlbWVudHMudHh0IHwgMyArKy0KLSAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9y ZXF1aXJlbWVudHMudHh0IGIvcmVxdWlyZW1lbnRzLnR4dAotaW5kZXggN2YzYTlhZDAzLi40NmRk N2Y3ZmQgMTAwNjQ0Ci0tLS0gYS9yZXF1aXJlbWVudHMudHh0Ci0rKysgYi9yZXF1aXJlbWVudHMu dHh0Ci1AQCAtMSwyICsxLDMgQEAKLSBudW1weT49MS4yMAotLXByb3RvYnVmPj0zLjIwLjIKLStw cm90b2J1ZiA+PSAzLjE0LjAsIDwgNAotK3BhcmFtZXRlcml6ZWQgPj0gMC44LjEsIDwgMQotLS0g Ci0yLjUyLjAKLQoKZGlmZiAtLWdpdCBhLzAwMDItTGV0LXB5cHJvamVjdF93aGVlbC11c2UtYmlu YXJpZXMtZnJvbS1jbWFrZV9idWlsZC5wYXRjaCBiLzAwMDItTGV0LXB5cHJvamVjdF93aGVlbC11 c2UtYmluYXJpZXMtZnJvbS1jbWFrZV9idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggY2FlN2ZlZC4uMDAwMDAwMAotLS0gYS8wMDAyLUxldC1weXByb2plY3Rfd2hlZWwt dXNlLWJpbmFyaWVzLWZyb20tY21ha2VfYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwz MyArMCwwIEBACi1Gcm9tIDc1ZTEwODJmMmQxN2MyYzJjY2IzYzM4YjQyOWZhMjRhNGI0NWJiZWEg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGVqYW5kcm8gQWx2YXJleiBBeWxsb24g PGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI0IEZlYiAyMDI0IDE0OjUz OjEwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBMZXQgcHlwcm9qZWN0X3doZWVsIHVzZSBi aW5hcmllcyBmcm9tIGNtYWtlX2J1aWxkCi0KLS0tLQotIHNldHVwLnB5IHwgMyArKy0KLSAxIGZp bGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQg YS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA3ZDJjYjllNTAuLmFmOTA0OWExZSAxMDA2NDQK LS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTI3LDcgKzI3LDcgQEAgaW1wb3J0 IHNldHVwdG9vbHMuY29tbWFuZC5idWlsZF9weQotIGltcG9ydCBzZXR1cHRvb2xzLmNvbW1hbmQu ZGV2ZWxvcAotIAotIFRPUF9ESVIgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguZGlybmFtZShf X2ZpbGVfXykpCi0tQ01BS0VfQlVJTERfRElSID0gb3MucGF0aC5qb2luKFRPUF9ESVIsICIuc2V0 dXB0b29scy1jbWFrZS1idWlsZCIpCi0rQ01BS0VfQlVJTERfRElSID0gb3MucGF0aC5qb2luKFRP UF9ESVIsIG9zLmVudmlyb24uZ2V0KCJWUEFUSF9CVUlMRERJUiIsICJyZWRoYXQtbGludXgtYnVp bGQiKSkKLSAKLSBXSU5ET1dTID0gb3MubmFtZSA9PSAibnQiCi0gCi1AQCAtMTUxLDYgKzE1MSw3 IEBAIGNsYXNzIENtYWtlQnVpbGQoc2V0dXB0b29scy5Db21tYW5kKToKLSAgICAgICAgIHNlbGYu am9icyA9IG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKSBpZiBzZWxmLmpvYnMgaXMgTm9uZSBl bHNlIGludChzZWxmLmpvYnMpCi0gCi0gICAgIGRlZiBydW4oc2VsZik6Ci0rICAgICAgICByZXR1 cm4KLSAgICAgICAgIG9zLm1ha2VkaXJzKENNQUtFX0JVSUxEX0RJUiwgZXhpc3Rfb2s9VHJ1ZSkK LSAKLSAgICAgICAgIHdpdGggY2QoQ01BS0VfQlVJTERfRElSKToKLS0tIAotMi41Mi4wCi0KCmRp ZmYgLS1naXQgYS8wMDAyLVJlbW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBh dGNoIGIvMDAwMi1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTExY2FiCi0tLSAvZGV2L251bGwK KysrIGIvMDAwMi1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaApA QCAtMCwwICsxLDU3MzkgQEAKK0Zyb20gMjMxYjhlNTA5M2MyNGNkYzYyNDJkMmM4NTY1YzFhZGI1 MjZlZWJhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERpZWdvIEhlcnJlcmEgPGRo ZXJyZXJhQHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDI5IE1heSAyMDI2IDE4OjQ3OjI2IC0wNDAw CitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBSZW1vdmUgcHl0aG9uLXBhcmFtZXRlcml6ZWQgZGVwZW5k ZW5jeQorCisKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvYmFzaWNfdGVzdC5weSBiL29ubngvdGVz dC9iYXNpY190ZXN0LnB5CitpbmRleCA5NzEzZTRkMWYuLjZkNmM2YzkwZSAxMDA2NDQKKy0tLSBh L29ubngvdGVzdC9iYXNpY190ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvYmFzaWNfdGVzdC5weQor QEAgLTExLDcgKzExLDYgQEAgaW1wb3J0IHVuaXR0ZXN0CisgCisgaW1wb3J0IGdvb2dsZS5wcm90 b2J1Zi5tZXNzYWdlCisgaW1wb3J0IGdvb2dsZS5wcm90b2J1Zi50ZXh0X2Zvcm1hdAorLWltcG9y dCBwYXJhbWV0ZXJpemVkCisgCisgaW1wb3J0IG9ubngKKyBmcm9tIG9ubnggaW1wb3J0IHNlcmlh bGl6YXRpb24KK0BAIC0zNCw5NyArMzMsNiBAQCBkZWYgX3NpbXBsZV90ZW5zb3IoKSAtPiBvbm54 LlRlbnNvclByb3RvOgorICAgICApCisgCisgCistQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXpl ZF9jbGFzcygKKy0gICAgWworLSAgICAgICAgeyJmb3JtYXQiOiAicHJvdG9idWYifSwKKy0gICAg ICAgIHsiZm9ybWF0IjogInRleHRwcm90byJ9LAorLSAgICAgICAgeyJmb3JtYXQiOiAianNvbiJ9 LAorLSAgICAgICAgeyJmb3JtYXQiOiAib25ueHR4dCJ9LAorLSAgICBdCistKQorLWNsYXNzIFRl c3RJTyh1bml0dGVzdC5UZXN0Q2FzZSk6CistICAgIGZvcm1hdDogc3RyCistCistICAgIGRlZiB0 ZXN0X2xvYWRfbW9kZWxfd2hlbl9pbnB1dF9pc19ieXRlcyhzZWxmKSAtPiBOb25lOgorLSAgICAg ICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKKy0gICAgICAgIHByb3RvX3N0cmluZyA9IHNlcmlh bGl6YXRpb24ucmVnaXN0cnkuZ2V0KHNlbGYuZm9ybWF0KS5zZXJpYWxpemVfcHJvdG8ocHJvdG8p CistICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfbW9kZWxfZnJvbV9zdHJpbmcocHJv dG9fc3RyaW5nLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFs KHByb3RvLCBsb2FkZWRfcHJvdG8pCistCistICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfbW9k ZWxfd2hlbl9pbnB1dF9oYXNfcmVhZF9mdW5jdGlvbihzZWxmKSAtPiBOb25lOgorLSAgICAgICAg cHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKKy0gICAgICAgICMgV2hlbiB0aGUgcHJvdG8gaXMgYSBi eXRlcyByZXByZXNlbnRhdGlvbiBwcm92aWRlZCB0byBgc2F2ZV9tb2RlbGAsCistICAgICAgICAj IGl0IHNob3VsZCBhbHdheXMgYmUgYSBzZXJpYWxpemVkIGJpbmFyeSBwcm90b2J1ZiByZXByZXNl bnRhdGlvbi4gQWthLiBmb3JtYXQ9InByb3RvYnVmIgorLSAgICAgICAgIyBUaGUgc2F2ZWQgZmls ZSBmb3JtYXQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBgZm9ybWF0YCBhcmd1bWVudC4KKy0gICAgICAg IHByb3RvX3N0cmluZyA9IHNlcmlhbGl6YXRpb24ucmVnaXN0cnkuZ2V0KCJwcm90b2J1ZiIpLnNl cmlhbGl6ZV9wcm90byhwcm90bykKKy0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKy0gICAgICAg IG9ubnguc2F2ZV9tb2RlbChwcm90b19zdHJpbmcsIGYsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0g ICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2RlbChpby5CeXRlc0lPKGYuZ2V0dmFs dWUoKSksIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJv dG8sIGxvYWRlZF9wcm90bykKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF9tb2RlbF93 aGVuX2lucHV0X2lzX2ZpbGVfbmFtZShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgcHJvdG8gPSBf c2ltcGxlX21vZGVsKCkKKy0gICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5 KCkgYXMgdGVtcF9kaXI6CistICAgICAgICAgICAgbW9kZWxfcGF0aCA9IG9zLnBhdGguam9pbih0 ZW1wX2RpciwgIm1vZGVsLm9ubngiKQorLSAgICAgICAgICAgIG9ubnguc2F2ZV9tb2RlbChwcm90 bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIGxvYWRlZF9w cm90byA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCist ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQorLQorLSAg ICBkZWYgdGVzdF9zYXZlX2FuZF9sb2FkX21vZGVsX3doZW5faW5wdXRfaXNfcGF0aGxpa2Uoc2Vs ZikgLT4gTm9uZToKKy0gICAgICAgIHByb3RvID0gX3NpbXBsZV9tb2RlbCgpCistICAgICAgICB3 aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgorLSAgICAgICAg ICAgIG1vZGVsX3BhdGggPSBwYXRobGliLlBhdGgodGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0g ICAgICAgICAgICBvbm54LnNhdmVfbW9kZWwocHJvdG8sIG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxm LmZvcm1hdCkKKy0gICAgICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfbW9kZWwobW9k ZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwocHJvdG8sIGxvYWRlZF9wcm90bykKKy0KKy0KKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJp emVkX2NsYXNzKAorLSAgICBbCistICAgICAgICB7ImZvcm1hdCI6ICJwcm90b2J1ZiJ9LAorLSAg ICAgICAgeyJmb3JtYXQiOiAidGV4dHByb3RvIn0sCistICAgICAgICB7ImZvcm1hdCI6ICJqc29u In0sCistICAgICAgICAjIFRoZSBvbm54dHh0IGZvcm1hdCBkb2VzIG5vdCBzdXBwb3J0IHNhdmlu Zy9sb2FkaW5nIHRlbnNvcnMgeWV0CistICAgIF0KKy0pCistY2xhc3MgVGVzdElPVGVuc29yKHVu aXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgIiIiVGVzdCBsb2FkaW5nIGFuZCBzYXZpbmcgb2YgVGVu c29yUHJvdG8uIiIiCistCistICAgIGZvcm1hdDogc3RyCistCistICAgIGRlZiB0ZXN0X2xvYWRf dGVuc29yX3doZW5faW5wdXRfaXNfYnl0ZXMoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIHByb3Rv ID0gX3NpbXBsZV90ZW5zb3IoKQorLSAgICAgICAgcHJvdG9fc3RyaW5nID0gc2VyaWFsaXphdGlv bi5yZWdpc3RyeS5nZXQoc2VsZi5mb3JtYXQpLnNlcmlhbGl6ZV9wcm90byhwcm90bykKKy0gICAg ICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5zb3JfZnJvbV9zdHJpbmcocHJvdG9fc3Ry aW5nLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3Rv LCBsb2FkZWRfcHJvdG8pCistCistICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfdGVuc29yX3do ZW5faW5wdXRfaGFzX3JlYWRfZnVuY3Rpb24oc2VsZikgLT4gTm9uZToKKy0gICAgICAgICMgVGVz dCBpZiBpbnB1dCBoYXMgYSByZWFkIGZ1bmN0aW9uCistICAgICAgICBwcm90byA9IF9zaW1wbGVf dGVuc29yKCkKKy0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKy0gICAgICAgIG9ubnguc2F2ZV90 ZW5zb3IocHJvdG8sIGYsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgIGxvYWRlZF9wcm90 byA9IG9ubngubG9hZF90ZW5zb3IoaW8uQnl0ZXNJTyhmLmdldHZhbHVlKCkpLCBmb3JtYXQ9c2Vs Zi5mb3JtYXQpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8p CistCistICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfdGVuc29yX3doZW5faW5wdXRfaXNfZmls ZV9uYW1lKHNlbGYpIC0+IE5vbmU6CistICAgICAgICAjIFRlc3QgaWYgaW5wdXQgaXMgYSBmaWxl IG5hbWUKKy0gICAgICAgIHByb3RvID0gX3NpbXBsZV90ZW5zb3IoKQorLSAgICAgICAgd2l0aCB0 ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKKy0gICAgICAgICAgICBt b2RlbF9wYXRoID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCistICAgICAg ICAgICAgb25ueC5zYXZlX3RlbnNvcihwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9y bWF0KQorLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5zb3IobW9kZWxf cGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo cHJvdG8sIGxvYWRlZF9wcm90bykKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5z b3Jfd2hlbl9pbnB1dF9pc19wYXRobGlrZShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgIyBUZXN0 IGlmIGlucHV0IGlzIGEgZmlsZSBuYW1lCistICAgICAgICBwcm90byA9IF9zaW1wbGVfdGVuc29y KCkKKy0gICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9k aXI6CistICAgICAgICAgICAgbW9kZWxfcGF0aCA9IHBhdGhsaWIuUGF0aCh0ZW1wX2RpciwgIm1v ZGVsLm9ubngiKQorLSAgICAgICAgICAgIG9ubnguc2F2ZV90ZW5zb3IocHJvdG8sIG1vZGVsX3Bh dGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54 LmxvYWRfdGVuc29yKG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCistCistCisgY2xhc3MgVGVz dFNhdmVBbmRMb2FkRmlsZUV4dGVuc2lvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYg dGVzdF9zYXZlX21vZGVsX3BpY2tzX2NvcnJlY3RfZm9ybWF0X2Zyb21fZXh0ZW5zaW9uKHNlbGYp IC0+IE5vbmU6CisgICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQorZGlmZiAtLWdpdCBh L29ubngvdGVzdC9oZWxwZXJfdGVzdC5weSBiL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weQoraW5k ZXggMjc3OTNmNTYxLi45MWY3NzM5YWEgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvaGVscGVyX3Rl c3QucHkKKysrKyBiL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weQorQEAgLTEyLDcgKzEyLDYgQEAg ZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorIGltcG9ydCBtbF9kdHlwZXMKKyBpbXBvcnQgbnVtcHkg YXMgbnAKKyBpbXBvcnQgbnVtcHkudHlwaW5nIGFzIG5wdAorLWltcG9ydCBwYXJhbWV0ZXJpemVk CisgaW1wb3J0IHB5dGVzdAorIAorIGZyb20gb25ueCBpbXBvcnQgKAorQEAgLTYzNiw2MyArNjM1 LDYgQEAgY2xhc3MgVGVzdEhlbHBlclRlbnNvckZ1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6 CisgICAgICAgICAgICAgZXhwZWN0ZWQudmlldyhucC51aW50OCksCisgICAgICAgICApCisgCist ICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRv b2xzLnByb2R1Y3QoCistICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90 by5JTlQ0KSwKKy0gICAgICAgICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEs KSwgKDIqKjEwLCkpLAorLSAgICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0X21ha2VfNGJp dF90ZW5zb3Ioc2VsZiwgZHR5cGUsIGRpbXMpIC0+IE5vbmU6CistICAgICAgICB0eXBlX3Jhbmdl ID0geworLSAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQ0OiAoMCwgMTUpLAorLSAgICAgICAg ICAgIFRlbnNvclByb3RvLklOVDQ6ICgtOCwgNyksCistICAgICAgICB9CistICAgICAgICBkYXRh ID0gbnAucmFuZG9tLnJhbmRpbnQoCistICAgICAgICAgICAgdHlwZV9yYW5nZVtkdHlwZV1bMF0s IGhpZ2g9dHlwZV9yYW5nZVtkdHlwZV1bMV0gKyAxLCBzaXplPWRpbXMKKy0gICAgICAgICkKKy0g ICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoInkiLCBkdHlwZSwgZGF0YS5zaGFwZSwgZGF0 YSkKKy0KKy0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0YSBp biBieXRlcworLSAgICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplID0gbWF0aC5jZWlsKG5wLnByb2Qo ZGF0YS5zaGFwZSkgLyAyLjApCistICAgICAgICBhY3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5dGVz KHkuaW50MzJfZGF0YSkpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1YWxf ZGF0YV9zaXplLCBleHBlY3RlZF9kYXRhX3NpemUpCistCistICAgICAgICAjIENoZWNrIHRoZSBl eHBlY3RlZCBkYXRhIHZhbHVlcy4KKy0gICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19hcnJh eSh5KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoeW5wLCBkYXRhKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29s cy5wcm9kdWN0KAorLSAgICAgICAgICAgICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAo MSwpLCAoMioqMTAsKSksCistICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfNGJpdF90 ZW5zb3Jfc2l6ZShzZWxmLCBkaW1zKSAtPiBOb25lOgorLSAgICAgICAgIyBBIGJ1ZyBjYXVzZWQg bmVnYXRpdmUgaW50NCB2YWx1ZXMgdG8gaW5mbGF0ZSB0ZW5zb3Igc2l6ZS4KKy0gICAgICAgICMg U28sIHRlc3QgbmVnYXRpdmUgdmFsdWVzIGhlcmUuCistICAgICAgICBudW1fZWxlbXMgPSBucC5w cm9kKGRpbXMpCistICAgICAgICBkYXRhID0gbnAuYXJyYXkoWy00XSAqIG51bV9lbGVtcywgZHR5 cGU9bnAuaW50OCkucmVzaGFwZShkaW1zKQorLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNv cigieSIsIFRlbnNvclByb3RvLklOVDQsIGRhdGEuc2hhcGUsIGRhdGEpCistCistICAgICAgICAj IENoZWNrIHRoZSBleHBlY3RlZCBzaXplIG9mIGludDMyX2RhdGEgaW4gYnl0ZXMKKy0gICAgICAg IGV4cGVjdGVkX2RhdGFfc2l6ZSA9IG1hdGguY2VpbChudW1fZWxlbXMgLyAyLjApCistICAgICAg ICBhY3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5dGVzKHkuaW50MzJfZGF0YSkpCistICAgICAgICBu cC50ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1YWxfZGF0YV9zaXplLCBleHBlY3RlZF9kYXRhX3Np emUpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAg ICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBU ZW5zb3JQcm90by5JTlQ0KSwgKCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCkpCist ICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfbWFrZV80Yml0X3Jhd190ZW5zb3Ioc2Vs ZiwgZHR5cGUsIGRpbXMpIC0+IE5vbmU6CistICAgICAgICBkYXRhID0gbnAucmFuZG9tLnJhbmRp bnQoMCwgaGlnaD0xNiwgc2l6ZT1kaW1zLCBkdHlwZT1ucC51aW50OCkKKy0gICAgICAgIHBhY2tl ZF9kYXRhID0gX3BhY2tfNGJpdChkYXRhKQorLQorLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3Rl bnNvcigKKy0gICAgICAgICAgICAicGFja2VkX2ludDQiLCBkdHlwZSwgZGltcywgcGFja2VkX2Rh dGEudG9ieXRlcygpLCByYXc9VHJ1ZQorLSAgICAgICAgKQorLSAgICAgICAgeW5wID0gbnVtcHlf aGVscGVyLnRvX2FycmF5KHkpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5bnAu dmlldyhucC51aW50OCksIGRhdGEpCistCisgICAgIGRlZiB0ZXN0X21ha2VfZmxvYXQ0ZTJtMV9y YXdfdGVuc29yKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBkYXRhID0gbnAuYXJyYXkoWzAsIDAu NSwgMSwgMjQwLCAxMCwgLTJdLCBkdHlwZT1tbF9kdHlwZXMuZmxvYXQ0X2UybTFmbikKKyAgICAg ICAgIGV4cGVjdGVkID0gZGF0YS52aWV3KG5wLnVpbnQ4KQorQEAgLTcwNyw2MyArNjQ5LDYgQEAg Y2xhc3MgVGVzdEhlbHBlclRlbnNvckZ1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg ICAgICB5bnAgPSBudW1weV9oZWxwZXIudG9fYXJyYXkoeSkKKyAgICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2VxdWFsKHlucC52aWV3KG5wLnVpbnQ4KSwgZXhwZWN0ZWQpCisgCistICAgIEBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1 Y3QoCistICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQyLCBUZW5zb3JQcm90by5JTlQyKSwK Ky0gICAgICAgICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSwgKDIqKjEw LCkpLAorLSAgICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0X21ha2VfMmJpdF90ZW5zb3Io c2VsZiwgZHR5cGUsIGRpbXMpIC0+IE5vbmU6CistICAgICAgICB0eXBlX3JhbmdlID0geworLSAg ICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQyOiAoMCwgMyksCistICAgICAgICAgICAgVGVuc29y UHJvdG8uSU5UMjogKC0yLCAxKSwKKy0gICAgICAgIH0KKy0gICAgICAgIGRhdGEgPSBucC5yYW5k b20ucmFuZGludCgKKy0gICAgICAgICAgICB0eXBlX3JhbmdlW2R0eXBlXVswXSwgaGlnaD10eXBl X3JhbmdlW2R0eXBlXVsxXSArIDEsIHNpemU9ZGltcworLSAgICAgICAgKQorLSAgICAgICAgeSA9 IGhlbHBlci5tYWtlX3RlbnNvcigieSIsIGR0eXBlLCBkYXRhLnNoYXBlLCBkYXRhKQorLQorLSAg ICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVzCist ICAgICAgICBleHBlY3RlZF9kYXRhX3NpemUgPSBtYXRoLmNlaWwobnAucHJvZChkYXRhLnNoYXBl KSAvIDQuMCkKKy0gICAgICAgIGFjdHVhbF9kYXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQzMl9k YXRhKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3NpemUs IGV4cGVjdGVkX2RhdGFfc2l6ZSkKKy0KKy0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIGRh dGEgdmFsdWVzLgorLSAgICAgICAgeW5wID0gbnVtcHlfaGVscGVyLnRvX2FycmF5KHkpCistICAg ICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5bnAsIGRhdGEpCistCistICAgIEBwYXJhbWV0 ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3Qo CistICAgICAgICAgICAgKCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCksICgyKiox MCwpKSwKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF8yYml0X3RlbnNvcl9zaXpl KHNlbGYsIGRpbXMpIC0+IE5vbmU6CistICAgICAgICAjIEEgYnVnIGNhdXNlZCBuZWdhdGl2ZSBp bnQyIHZhbHVlcyB0byBpbmZsYXRlIHRlbnNvciBzaXplLgorLSAgICAgICAgIyBTbywgdGVzdCBu ZWdhdGl2ZSB2YWx1ZXMgaGVyZS4KKy0gICAgICAgIG51bV9lbGVtcyA9IG5wLnByb2QoZGltcykK Ky0gICAgICAgIGRhdGEgPSBucC5hcnJheShbLTJdICogbnVtX2VsZW1zLCBkdHlwZT1ucC5pbnQ4 KS5yZXNoYXBlKGRpbXMpCistICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKCJ5IiwgVGVu c29yUHJvdG8uSU5UMiwgZGF0YS5zaGFwZSwgZGF0YSkKKy0KKy0gICAgICAgICMgQ2hlY2sgdGhl IGV4cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0YSBpbiBieXRlcworLSAgICAgICAgZXhwZWN0ZWRf ZGF0YV9zaXplID0gbWF0aC5jZWlsKG51bV9lbGVtcyAvIDQuMCkKKy0gICAgICAgIGFjdHVhbF9k YXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQzMl9kYXRhKSkKKy0gICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3NpemUsIGV4cGVjdGVkX2RhdGFfc2l6ZSkKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9v bHMucHJvZHVjdCgKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDIsIFRlbnNvclByb3Rv LklOVDIpLCAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSkKKy0gICAgICAgICkK Ky0gICAgKQorLSAgICBkZWYgdGVzdF9tYWtlXzJiaXRfcmF3X3RlbnNvcihzZWxmLCBkdHlwZSwg ZGltcykgLT4gTm9uZToKKy0gICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGludCgwLCBoaWdo PTQsIHNpemU9ZGltcywgZHR5cGU9bnAudWludDgpCistICAgICAgICBwYWNrZWRfZGF0YSA9IF9w YWNrXzJiaXQoZGF0YSkKKy0KKy0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoCistICAg ICAgICAgICAgInBhY2tlZF9pbnQyIiwgZHR5cGUsIGRpbXMsIHBhY2tlZF9kYXRhLnRvYnl0ZXMo KSwgcmF3PVRydWUKKy0gICAgICAgICkKKy0gICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19h cnJheSh5KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoeW5wLnZpZXcobnAudWlu dDgpLCBkYXRhKQorLQorICAgICBkZWYgdGVzdF9tYWtlX2Zsb2F0NGUybTFfdGVuc29yKHNlbGYp IC0+IE5vbmU6CisgICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKAorICAgICAgICAgICAg ICJ6ZXJvX3BvaW50IiwKK0BAIC0xMTA1LDI4ICs5OTAsNiBAQCBjbGFzcyBUZXN0SGVscGVyTWFw cGluZ0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgCisgY2xhc3MgVGVzdEF0dHJU eXBlVG9TdHIodW5pdHRlc3QuVGVzdENhc2UpOgorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8u QXR0cmlidXRlVHlwZS5GTE9BVCwgIkZMT0FUIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVBy b3RvLkF0dHJpYnV0ZVR5cGUuSU5ULCAiSU5UIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVBy b3RvLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLCAiU1RSSU5HIiksCistICAgICAgICAgICAgKEF0dHJp YnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuVEVOU09SLCAiVEVOU09SIiksCistICAgICAgICAgICAg KEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuR1JBUEgsICJHUkFQSCIpLAorLSAgICAgICAg ICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlNQQVJTRV9URU5TT1IsICJTUEFSU0Vf VEVOU09SIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuVFlQ RV9QUk9UTywgIlRZUEVfUFJPVE8iKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0 cmlidXRlVHlwZS5GTE9BVFMsICJGTE9BVFMiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJv dG8uQXR0cmlidXRlVHlwZS5JTlRTLCAiSU5UUyIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQ cm90by5BdHRyaWJ1dGVUeXBlLlNUUklOR1MsICJTVFJJTkdTIiksCistICAgICAgICAgICAgKEF0 dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuVEVOU09SUywgIlRFTlNPUlMiKSwKKy0gICAgICAg ICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5HUkFQSFMsICJHUkFQSFMiKSwKKy0g ICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5TUEFSU0VfVEVOU09SUywg IlNQQVJTRV9URU5TT1JTIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0 ZVR5cGUuVFlQRV9QUk9UT1MsICJUWVBFX1BST1RPUyIpLAorLSAgICAgICAgXQorLSAgICApCist ICAgIGRlZiB0ZXN0X2F0dHJfdHlwZV90b19zdHIoc2VsZiwgYXR0cl90eXBlLCBleHBlY3RlZF9z dHIpOgorLSAgICAgICAgcmVzdWx0ID0gaGVscGVyLl9hdHRyX3R5cGVfdG9fc3RyKGF0dHJfdHlw ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZF9zdHIpCistCisg ICAgIGRlZiB0ZXN0X2F0dHJfdHlwZV90b19zdHJfdW5kZWZpbmVkKHNlbGYpOgorICAgICAgICAg cmVzdWx0ID0gaGVscGVyLl9hdHRyX3R5cGVfdG9fc3RyKDk5OTkpCisgICAgICAgICBzZWxmLmFz c2VydEVxdWFsKHJlc3VsdCwgIlVOREVGSU5FRCIpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L25v ZGVfc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkgYi9vbm54L3Rlc3Qvbm9kZV9zaGFwZV9pbmZlcmVu Y2VfdGVzdC5weQoraW5kZXggZWNlNzc2ZTQ4Li42MzI1MmI5MjIgMTAwNjQ0CistLS0gYS9vbm54 L3Rlc3Qvbm9kZV9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L25vZGVf c2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkKK0BAIC01LDM0ICs1LDkgQEAgZnJvbSBfX2Z1dHVyZV9f IGltcG9ydCBhbm5vdGF0aW9ucworIAorIGltcG9ydCB1bml0dGVzdAorIAorLWltcG9ydCBwYXJh bWV0ZXJpemVkCistCisgaW1wb3J0IG9ubnguaGVscGVyCisgaW1wb3J0IG9ubnguc2hhcGVfaW5m ZXJlbmNlCisgCisgCistY2xhc3MgTm9kZUluZmVyZW5jZVRlc3QodW5pdHRlc3QuVGVzdENhc2Up OgorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsK Ky0gICAgICAgICAgICAoIkdyZWF0ZXJPckVxdWFsIiwpLAorLSAgICAgICAgICAgICgiTGVzc09y RXF1YWwiLCksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfY29tcGFyaXNvbl9v cChzZWxmLCBvcF90eXBlKToKKy0gICAgICAgIG5vZGUgPSBvbm54LmhlbHBlci5tYWtlX25vZGUo b3BfdHlwZSwgWyJ4IiwgInkiXSwgWyJ6Il0pCistICAgICAgICBzY2hlbWEgPSBvbm54LmRlZnMu Z2V0X3NjaGVtYShub2RlLm9wX3R5cGUsIDIzLCAiIikKKy0gICAgICAgIHh0eXBlID0gb25ueC5o ZWxwZXIubWFrZV90ZW5zb3JfdHlwZV9wcm90byhvbm54LlRlbnNvclByb3RvLklOVDMyLCBbMSwg MTBdKQorLSAgICAgICAgeXR5cGUgPSBvbm54LmhlbHBlci5tYWtlX3RlbnNvcl90eXBlX3Byb3Rv KG9ubnguVGVuc29yUHJvdG8uSU5UMzIsIFsxMCwgMV0pCistICAgICAgICByZXN1bHQgPSBvbm54 LnNoYXBlX2luZmVyZW5jZS5pbmZlcl9ub2RlX291dHB1dHMoCistICAgICAgICAgICAgc2NoZW1h LCBub2RlLCB7IngiOiB4dHlwZSwgInkiOiB5dHlwZX0KKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwobGlzdChyZXN1bHQua2V5cygpKSwgWyJ6Il0pCistICAgICAgICBzZWxm LmFzc2VydEVxdWFsKHJlc3VsdFsieiJdLnRlbnNvcl90eXBlLmVsZW1fdHlwZSwgb25ueC5UZW5z b3JQcm90by5CT09MKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKy0gICAgICAgICAgICBb ZGltLmRpbV92YWx1ZSBmb3IgZGltIGluIHJlc3VsdFsieiJdLnRlbnNvcl90eXBlLnNoYXBlLmRp bV0sCistICAgICAgICAgICAgWzEwLCAxMF0sCistICAgICAgICApCistCistCisgaWYgX19uYW1l X18gPT0gIl9fbWFpbl9fIjoKKyAgICAgdW5pdHRlc3QubWFpbigpCitkaWZmIC0tZ2l0IGEvb25u eC90ZXN0L251bXB5X2hlbHBlcl90ZXN0LnB5IGIvb25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0 LnB5CitpbmRleCA1NjgwMDA1NTAuLjIyNjUwMDhkMiAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9u dW1weV9oZWxwZXJfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0LnB5 CitAQCAtNiw3ICs2LDYgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucworIGlt cG9ydCB1bml0dGVzdAorIAorIGltcG9ydCBudW1weSBhcyBucAorLWltcG9ydCBwYXJhbWV0ZXJp emVkCisgCisgaW1wb3J0IG9ubngKKyBpbXBvcnQgb25ueC5yZWZlcmVuY2UKK0BAIC0xNDgsMzgg KzE0Nyw2IEBAIGNsYXNzIFRlc3ROdW1weUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKHRwLlNlcmlhbGl6ZVRvU3RyaW5nKCksIGFnYWluLlNlcmlh bGl6ZVRvU3RyaW5nKCkpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRwLmRhdGFfdHlwZSwg aGVscGVyLm5wX2R0eXBlX3RvX3RlbnNvcl9kdHlwZShiYWNrLmR0eXBlKSkKKyAKKy0gICAgQHBh cmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAg ICAgKCJGTE9BVCIsIG9ubnguVGVuc29yUHJvdG8uRkxPQVQpLAorLSAgICAgICAgICAgICgiVUlO VDgiLCBvbm54LlRlbnNvclByb3RvLlVJTlQ4KSwKKy0gICAgICAgICAgICAoIklOVDgiLCBvbm54 LlRlbnNvclByb3RvLklOVDgpLAorLSAgICAgICAgICAgICgiVUlOVDE2Iiwgb25ueC5UZW5zb3JQ cm90by5VSU5UMTYpLAorLSAgICAgICAgICAgICgiSU5UMTYiLCBvbm54LlRlbnNvclByb3RvLklO VDE2KSwKKy0gICAgICAgICAgICAoIklOVDMyIiwgb25ueC5UZW5zb3JQcm90by5JTlQzMiksCist ICAgICAgICAgICAgKCJJTlQ2NCIsIG9ubnguVGVuc29yUHJvdG8uSU5UNjQpLAorLSAgICAgICAg ICAgICgiQk9PTCIsIG9ubnguVGVuc29yUHJvdG8uQk9PTCksCistICAgICAgICAgICAgKCJGTE9B VDE2Iiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDE2KSwKKy0gICAgICAgICAgICAoIkRPVUJMRSIs IG9ubnguVGVuc29yUHJvdG8uRE9VQkxFKSwKKy0gICAgICAgICAgICAoIlVJTlQzMiIsIG9ubngu VGVuc29yUHJvdG8uVUlOVDMyKSwKKy0gICAgICAgICAgICAoIlVJTlQ2NCIsIG9ubnguVGVuc29y UHJvdG8uVUlOVDY0KSwKKy0gICAgICAgICAgICAoIkNPTVBMRVg2NCIsIG9ubnguVGVuc29yUHJv dG8uQ09NUExFWDY0KSwKKy0gICAgICAgICAgICAoIkNPTVBMRVgxMjgiLCBvbm54LlRlbnNvclBy b3RvLkNPTVBMRVgxMjgpLAorLSAgICAgICAgICAgICgiQkZMT0FUMTYiLCBvbm54LlRlbnNvclBy b3RvLkJGTE9BVDE2KSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTiIsIG9ubnguVGVuc29y UHJvdG8uRkxPQVQ4RTRNM0ZOKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTlVaIiwgb25u eC5UZW5zb3JQcm90by5GTE9BVDhFNE0zRk5VWiksCistICAgICAgICAgICAgKCJGTE9BVDhFNU0y Iiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDhFNU0yKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU1 TTJGTlVaIiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDhFNU0yRk5VWiksCistICAgICAgICAgICAg KCJGTE9BVDhFOE0wIiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDhFOE0wKSwKKy0gICAgICAgICAg ICAoIlVJTlQ0Iiwgb25ueC5UZW5zb3JQcm90by5VSU5UNCksCistICAgICAgICAgICAgKCJJTlQ0 Iiwgb25ueC5UZW5zb3JQcm90by5JTlQ0KSwKKy0gICAgICAgICAgICAoIlVJTlQyIiwgb25ueC5U ZW5zb3JQcm90by5VSU5UMiksCistICAgICAgICAgICAgKCJJTlQyIiwgb25ueC5UZW5zb3JQcm90 by5JTlQyKSwKKy0gICAgICAgICAgICAoIkZMT0FUNEUyTTEiLCBvbm54LlRlbnNvclByb3RvLkZM T0FUNEUyTTEpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3RvX2FycmF5X2Zy b21fYXJyYXkoc2VsZiwgXzogc3RyLCBkYXRhX3R5cGU6IG9ubnguVGVuc29yUHJvdG8uRGF0YVR5 cGUpOgorLSAgICAgICAgc2VsZi5fdG9fYXJyYXlfZnJvbV9hcnJheShkYXRhX3R5cGUpCistCisg ICAgIGRlZiB0ZXN0X3RvX2FycmF5X2Zyb21fYXJyYXlfc3RyaW5nKHNlbGYpOgorICAgICAgICAg c2VsZi5fdG9fYXJyYXlfZnJvbV9hcnJheShvbm54LlRlbnNvclByb3RvLlNUUklORywgRmFsc2Up CisgCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5IGIvb25ueC90ZXN0L3Bh cnNlcl90ZXN0LnB5CitpbmRleCAxOWVlNDA3OTIuLjllMjJmMTlhZSAxMDA2NDQKKy0tLSBhL29u bngvdGVzdC9wYXJzZXJfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5CitA QCAtNSw4ICs1LDYgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucworIAorIGlt cG9ydCB1bml0dGVzdAorIAorLWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVyaXpl ZAorLQorIGltcG9ydCBvbm54CisgZnJvbSBvbm54IGltcG9ydCBHcmFwaFByb3RvLCBPcGVyYXRv clNldElkUHJvdG8sIFRlbnNvclByb3RvLCBjaGVja2VyCisgCitAQCAtMTIwLDk0ICsxMTgsNiBA QCBjbGFzcyBUZXN0QmFzaWNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAg bW9kZWwgPSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbChpbnB1dCkKKyAgICAgICAgIGNoZWNrZXIu Y2hlY2tfbW9kZWwobW9kZWwpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAg ICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICJhZ3JhcGggKGZsb2F0W05d IHgpID0+IChmbG9hdFtOXSBvdXQpIHsgb3V0ID0gY3VzdG9tX2RvbWFpbi5TZWx1KHgpIH0iLAor LSAgICAgICAgICAgICAgICB7fSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0g ICAgICAgICAgICAgICAgImFncmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05dIG91dCkgeyBv dXQgPSBjdXN0b21fZG9tYWluLlNlbHU8YWxwaGE9Mi4wPih4KSB9IiwKKy0gICAgICAgICAgICAg ICAgeyJhbHBoYSI6IDIuMH0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAg ICAgICAgICAgICAgICJhZ3JhcGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtOXSBvdXQpIHsgb3V0 ID0gY3VzdG9tX2RvbWFpbi5TZWx1PGdhbW1hPTMuMD4oeCkgfSIsCistICAgICAgICAgICAgICAg IHsiZ2FtbWEiOiAzLjB9LAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAg ICAgICAgICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxvYXRbTl0gb3V0KSB7IG91dCA9 IGN1c3RvbV9kb21haW4uU2VsdTxhbHBoYT0yLjAsIGdhbW1hPTMuMD4oeCkgfSIsCistICAgICAg ICAgICAgICAgIHsiYWxwaGEiOiAyLjAsICJnYW1tYSI6IDMuMH0sCistICAgICAgICAgICAgKSwK Ky0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9jb21wb3NpdGVfcGFyc2VfZnVuY3Rp b25fd2l0aF9hdHRyaWJ1dGVzKAorLSAgICAgICAgc2VsZiwgZ3JhcGhfdGV4dDogc3RyLCBleHBl Y3RlZF9hdHRyaWJ1dGU6IGRpY3QKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZGVmYXVsdF9h bHBoYSA9IDEuNjczMjYzMTkyMTc2ODE4ODQ3NjU2MjUKKy0gICAgICAgIGRlZmF1bHRfZ2FtbWEg PSAxLjA1MDcwMTAyMjE0ODEzMjMyNDIxODc1CistCistICAgICAgICBkZWYgZXhwZWN0X2N1c3Rv bV9ub2RlX2F0dHJpYnV0ZShub2RlLCBhdHRyaWJ1dGVzKToKKy0gICAgICAgICAgICBmb3Iga2V5 IGluIGF0dHJpYnV0ZXM6CistICAgICAgICAgICAgICAgIG1hdGNoX2F0dHIgPSBbYXR0ciBmb3Ig YXR0ciBpbiBub2RlLmF0dHJpYnV0ZSBpZiBhdHRyLm5hbWUgPT0ga2V5XQorLSAgICAgICAgICAg ICAgICBhc3NlcnQgbGVuKG1hdGNoX2F0dHIpID09IDEKKy0gICAgICAgICAgICAgICAgYXNzZXJ0 IG1hdGNoX2F0dHJbMF0uZiA9PSBhdHRyaWJ1dGVzW2tleV0KKy0KKy0gICAgICAgIGRlZiBleHBl Y3RfbW9kZWxfZnVuY3Rpb25fYXR0cmlidXRlKG1vZGVsKToKKy0gICAgICAgICAgICBhc3NlcnQg bGVuKG1vZGVsLmZ1bmN0aW9uc1swXS5hdHRyaWJ1dGVfcHJvdG8pID09IDIKKy0gICAgICAgICAg ICBhdHRyX3Byb3RvX2FscGhhID0gWworLSAgICAgICAgICAgICAgICBhdHRyX3Byb3RvCistICAg ICAgICAgICAgICAgIGZvciBhdHRyX3Byb3RvIGluIG1vZGVsLmZ1bmN0aW9uc1swXS5hdHRyaWJ1 dGVfcHJvdG8KKy0gICAgICAgICAgICAgICAgaWYgYXR0cl9wcm90by5uYW1lID09ICJhbHBoYSIK Ky0gICAgICAgICAgICBdCistICAgICAgICAgICAgYXNzZXJ0IGxlbihhdHRyX3Byb3RvX2FscGhh KSA9PSAxIGFuZCBhdHRyX3Byb3RvX2FscGhhWzBdLmYgPT0gZGVmYXVsdF9hbHBoYQorLSAgICAg ICAgICAgIGF0dHJfcHJvdG9fZ2FtbWEgPSBbCistICAgICAgICAgICAgICAgIGF0dHJfcHJvdG8K Ky0gICAgICAgICAgICAgICAgZm9yIGF0dHJfcHJvdG8gaW4gbW9kZWwuZnVuY3Rpb25zWzBdLmF0 dHJpYnV0ZV9wcm90bworLSAgICAgICAgICAgICAgICBpZiBhdHRyX3Byb3RvLm5hbWUgPT0gImdh bW1hIgorLSAgICAgICAgICAgIF0KKy0gICAgICAgICAgICBhc3NlcnQgbGVuKGF0dHJfcHJvdG9f Z2FtbWEpID09IDEgYW5kIGF0dHJfcHJvdG9fZ2FtbWFbMF0uZiA9PSBkZWZhdWx0X2dhbW1hCist CistICAgICAgICBmdW5jdGlvbl90ZXh0ID0gZiIiIgorLSAgICAgICAgIDwKKy0gICAgICAgICBk b21haW46ICJjdXN0b21fZG9tYWluIiwKKy0gICAgICAgICBvcHNldF9pbXBvcnQ6IFsgIiIgOiAx NV0sCistICAgICAgICAgZG9jX3N0cmluZzogIlRlc3QgZnVuY3Rpb24gcHJvdG8iCistICAgICAg ICAgPgorLSAgICAgICAgICAgU2VsdQorLSAgICAgICAgICAgPGFscGhhOiBmbG9hdD17ZGVmYXVs dF9hbHBoYX0sIGdhbW1hOiBmbG9hdD17ZGVmYXVsdF9nYW1tYX0+CistICAgICAgICAgICAoWCkg PT4gKEMpCistICAgICAgICAgICB7eworLSAgICAgICAgICAgICAgIGNvbnN0YW50X2FscGhhID0g Q29uc3RhbnQ8dmFsdWVfZmxvYXQ6IGZsb2F0PUBhbHBoYT4oKQorLSAgICAgICAgICAgICAgIGNv bnN0YW50X2dhbW1hID0gQ29uc3RhbnQ8dmFsdWVfZmxvYXQ6IGZsb2F0PUBnYW1tYT4oKQorLSAg ICAgICAgICAgICAgIGFscGhhX3ggPSBDYXN0TGlrZShjb25zdGFudF9hbHBoYSwgWCkKKy0gICAg ICAgICAgICAgICBnYW1tYV94ID0gQ2FzdExpa2UoY29uc3RhbnRfZ2FtbWEsIFgpCistICAgICAg ICAgICAgICAgZXhwX3ggPSBFeHAoWCkKKy0gICAgICAgICAgICAgICBhbHBoYV94X2V4cF94ID0g TXVsKGFscGhhX3gsIGV4cF94KQorLSAgICAgICAgICAgICAgIGFscGhhX3hfZXhwX3hfID0gU3Vi KGFscGhhX3hfZXhwX3gsIGFscGhhX3gpCistICAgICAgICAgICAgICAgbmVnID0gTXVsKGdhbW1h X3gsIGFscGhhX3hfZXhwX3hfKQorLSAgICAgICAgICAgICAgIHBvcyA9IE11bChnYW1tYV94LCBY KQorLSAgICAgICAgICAgICAgIF96ZXJvID0gQ29uc3RhbnQ8dmFsdWVfZmxvYXQ9MC4wPigpCist ICAgICAgICAgICAgICAgemVybyA9IENhc3RMaWtlKF96ZXJvLCBYKQorLSAgICAgICAgICAgICAg IGxlc3NfZXEgPSBMZXNzT3JFcXVhbChYLCB6ZXJvKQorLSAgICAgICAgICAgICAgIEMgPSBXaGVy ZShsZXNzX2VxLCBuZWcsIHBvcykKKy0gICAgICAgICAgIH19CistICAgICAgICAiIiIKKy0KKy0g ICAgICAgIGZ1bmN0aW9ucyA9IFtvbm54LnBhcnNlci5wYXJzZV9mdW5jdGlvbihmdW5jdGlvbl90 ZXh0KV0KKy0gICAgICAgIGdyYXBoID0gb25ueC5wYXJzZXIucGFyc2VfZ3JhcGgoZ3JhcGhfdGV4 dCkKKy0gICAgICAgIG9wc2V0X2ltcG9ydHMgPSBbCistICAgICAgICAgICAgT3BlcmF0b3JTZXRJ ZFByb3RvKGRvbWFpbj0iIiwgdmVyc2lvbj0xNSksCistICAgICAgICAgICAgT3BlcmF0b3JTZXRJ ZFByb3RvKGRvbWFpbj0iY3VzdG9tX2RvbWFpbiIsIHZlcnNpb249MSksCistICAgICAgICBdCist CistICAgICAgICBtb2RlbCA9IG9ubnguaGVscGVyLm1ha2VfbW9kZWwoCistICAgICAgICAgICAg Z3JhcGgsIGZ1bmN0aW9ucz1mdW5jdGlvbnMsIG9wc2V0X2ltcG9ydHM9b3BzZXRfaW1wb3J0cwor LSAgICAgICAgKQorLSAgICAgICAgY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCkKKy0KKy0gICAg ICAgIGV4cGVjdF9tb2RlbF9mdW5jdGlvbl9hdHRyaWJ1dGUobW9kZWwpCistICAgICAgICBleHBl Y3RfY3VzdG9tX25vZGVfYXR0cmlidXRlKG1vZGVsLmdyYXBoLm5vZGVbMF0sIGV4cGVjdGVkX2F0 dHJpYnV0ZSkKKy0KKyAgICAgZGVmIHRlc3RfcGFyc2Vfbm9kZShzZWxmKToKKyAgICAgICAgIG5v ZGUgPSBvbm54LnBhcnNlci5wYXJzZV9ub2RlKAorICAgICAgICAgICAgICJvdXQxLCBvdXQyID0g U29tZURvbWFpbi5Tb21lT3AgPGF0dHIxID0gMT4gKGluMSwgaW4yKSIKK0BAIC0yNDIsMTAxICsx NTIsNiBAQCBjbGFzcyBUZXN0QmFzaWNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG5vZGUuaW5wdXQpLCBbIiIsICJ5Il0pCisgICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qobm9kZS5vdXRwdXQpLCBbIiIsICJ4Il0pCisgCist ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoIm5v dF9hX2dvb2RfZmxvYXQiLCBUcnVlKSwKKy0gICAgICAgICAgICAoImluZjEiLCBUcnVlKSwKKy0g ICAgICAgICAgICAoIi1pbmYxIiwgVHJ1ZSksCistICAgICAgICAgICAgKCJuYW4wIiwgVHJ1ZSks CistICAgICAgICAgICAgKCItbmFuMCIsIFRydWUpLAorLSAgICAgICAgICAgICgibmFuaW5mIiwg VHJ1ZSksCistICAgICAgICAgICAgKCJpbmYiLCBGYWxzZSksCistICAgICAgICAgICAgKCItaW5m IiwgRmFsc2UpLAorLSAgICAgICAgICAgICgiaW5maW5pdHkiLCBGYWxzZSksCistICAgICAgICAg ICAgKCItaW5maW5pdHkiLCBGYWxzZSksCistICAgICAgICAgICAgKCJuYW4iLCBGYWxzZSksCist ICAgICAgICAgICAgKCItTmFOIiwgRmFsc2UpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRl ZiB0ZXN0X3BhcnNlX3ZhcmlvdXNfZmxvYXRfdmFsdWVzKHNlbGYsIHRlc3RfbGl0ZXJhbCwgZXhw ZWN0X2V4Y2VwdGlvbik6CistICAgICAgICBtb2RlbF90ZXh0ID0gZiIiIgorLSAgICAgICAgPAor LSAgICAgICAgaXJfdmVyc2lvbjogOCwKKy0gICAgICAgIG9wc2V0X2ltcG9ydDogWyIiIDogMTgs ICJ0aGlzIiA6IDFdLAorLSAgICAgICAgcHJvZHVjZXJfbmFtZTogIkZ1bmN0aW9uUHJvdG9UZXN0 IiwKKy0gICAgICAgIHByb2R1Y2VyX3ZlcnNpb246ICIxLjAiCistICAgICAgICA+CistICAgICAg ICBfZnVuYyAoKSA9PiAoKQorLSAgICAgICAge3sKKy0gICAgICAgIHRtcCA9IENvbnN0YW50IDx2 YWx1ZV9mbG9hdCA9IHt0ZXN0X2xpdGVyYWx9PigpCistICAgICAgICB9fQorLSAgICAgICAgIiIi CistICAgICAgICBpZiBleHBlY3RfZXhjZXB0aW9uOgorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0 UmFpc2VzKAorLSAgICAgICAgICAgICAgICBvbm54LnBhcnNlci5QYXJzZUVycm9yLCBsYW1iZGE6 IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKG1vZGVsX3RleHQpCistICAgICAgICAgICAgKQorLSAg ICAgICAgZWxzZToKKy0gICAgICAgICAgICBtb2RlbCA9IG9ubngucGFyc2VyLnBhcnNlX21vZGVs KG1vZGVsX3RleHQpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5pcl92ZXJz aW9uLCA4KQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWwucHJvZHVjZXJfbmFt ZSwgIkZ1bmN0aW9uUHJvdG9UZXN0IikKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1v ZGVsLnByb2R1Y2VyX3ZlcnNpb24sICIxLjAiKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwobGVuKG1vZGVsLmdyYXBoLm5vZGUpLCAxKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwobGVuKG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlKSwgMSkKKy0gICAgICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLm5hbWUsICJ2 YWx1ZV9mbG9hdCIpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKy0gICAgICAgICAg ICAgICAgbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udHlwZSwgb25ueC5BdHRyaWJ1 dGVQcm90by5GTE9BVAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFsKAorLSAgICAgICAgICAgICAgICBzdHIobW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVb MF0uZiksIHN0cihmbG9hdCh0ZXN0X2xpdGVyYWwpKQorLSAgICAgICAgICAgICkKKy0KKy0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiYmZsb2F0 MTYiLCBUZW5zb3JQcm90by5CRkxPQVQxNiksCistICAgICAgICAgICAgKCJib29sIiwgVGVuc29y UHJvdG8uQk9PTCksCistICAgICAgICAgICAgKCJjb21wbGV4NjQiLCBUZW5zb3JQcm90by5DT01Q TEVYNjQpLAorLSAgICAgICAgICAgICgiY29tcGxleDEyOCIsIFRlbnNvclByb3RvLkNPTVBMRVgx MjgpLAorLSAgICAgICAgICAgICgiZG91YmxlIiwgVGVuc29yUHJvdG8uRE9VQkxFKSwKKy0gICAg ICAgICAgICAoImZsb2F0MTYiLCBUZW5zb3JQcm90by5GTE9BVDE2KSwKKy0gICAgICAgICAgICAo ImZsb2F0IiwgVGVuc29yUHJvdG8uRkxPQVQpLAorLSAgICAgICAgICAgICgiZmxvYXQ4ZTRtM2Zu IiwgVGVuc29yUHJvdG8uRkxPQVQ4RTRNM0ZOKSwKKy0gICAgICAgICAgICAoImZsb2F0OGU0bTNm bnV6IiwgVGVuc29yUHJvdG8uRkxPQVQ4RTRNM0ZOVVopLAorLSAgICAgICAgICAgICgiZmxvYXQ4 ZTVtMiIsIFRlbnNvclByb3RvLkZMT0FUOEU1TTIpLAorLSAgICAgICAgICAgICgiZmxvYXQ4ZTVt MmZudXoiLCBUZW5zb3JQcm90by5GTE9BVDhFNU0yRk5VWiksCistICAgICAgICAgICAgKCJpbnQy IiwgVGVuc29yUHJvdG8uSU5UMiksCistICAgICAgICAgICAgKCJpbnQ0IiwgVGVuc29yUHJvdG8u SU5UNCksCistICAgICAgICAgICAgKCJpbnQ4IiwgVGVuc29yUHJvdG8uSU5UOCksCistICAgICAg ICAgICAgKCJpbnQxNiIsIFRlbnNvclByb3RvLklOVDE2KSwKKy0gICAgICAgICAgICAoImludDMy IiwgVGVuc29yUHJvdG8uSU5UMzIpLAorLSAgICAgICAgICAgICgiaW50NjQiLCBUZW5zb3JQcm90 by5JTlQ2NCksCistICAgICAgICAgICAgKCJzdHJpbmciLCBUZW5zb3JQcm90by5TVFJJTkcpLAor LSAgICAgICAgICAgICgidWludDIiLCBUZW5zb3JQcm90by5VSU5UMiksCistICAgICAgICAgICAg KCJ1aW50NCIsIFRlbnNvclByb3RvLlVJTlQ0KSwKKy0gICAgICAgICAgICAoInVpbnQ4IiwgVGVu c29yUHJvdG8uVUlOVDgpLAorLSAgICAgICAgICAgICgidWludDE2IiwgVGVuc29yUHJvdG8uVUlO VDE2KSwKKy0gICAgICAgICAgICAoInVpbnQzMiIsIFRlbnNvclByb3RvLlVJTlQzMiksCistICAg ICAgICAgICAgKCJ1aW50NjQiLCBUZW5zb3JQcm90by5VSU5UNjQpLAorLSAgICAgICAgICAgICgi ZmxvYXQ0ZTJtMSIsIFRlbnNvclByb3RvLkZMT0FUNEUyTTEpLAorLSAgICAgICAgXQorLSAgICAp CistICAgIGRlZiB0ZXN0X3BhcnNlX2dyYXBoX3R5cGVzKHNlbGYsIG5hbWUsIGl0eXBlKSAtPiBO b25lOgorLSAgICAgICAgdyA9ICd7IjAifScgaWYgaXR5cGUgPT0gVGVuc29yUHJvdG8uU1RSSU5H IGVsc2UgInswfSIKKy0gICAgICAgIHRleHRfZ3JhcGggPSBmIiIiCistICAgICAgICAgICA8Cist ICAgICAgICAgICAgIGlyX3ZlcnNpb246IDEwLAorLSAgICAgICAgICAgICBvcHNldF9pbXBvcnQ6 IFsgIiIgOiAxOV0KKy0gICAgICAgICAgID4KKy0gICAgICAgICAgIGFncmFwaCAoZmxvYXRbTl0g WCkgPT4gKHtuYW1lfVtOXSBDKQorLSAgICAgICAgICAgPAorLSAgICAgICAgICAgICB7bmFtZX1b MV0gd2VpZ2h0ID0ge3d9CistICAgICAgICAgICA+CistICAgICAgICAgICB7eworLSAgICAgICAg ICAgICAgQyA9IENhc3Q8dG89e2l0eXBlfT4oWCkKKy0gICAgICAgICAgIH19CistICAgICAgICAg ICAiIiIKKy0gICAgICAgIGdyYXBoID0gb25ueC5wYXJzZXIucGFyc2VfbW9kZWwodGV4dF9ncmFw aCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyYXBoLmdyYXBoLm5vZGUpLCAxKQor LQorIAorIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgIHVuaXR0ZXN0Lm1haW4odmVy Ym9zaXR5PTIpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxf dGVzdC5weSBiL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rlc3QucHkKK2luZGV4 IDdkYWQ5NjcwMy4uMWM0Mjc2NDgyIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3JlZmVyZW5jZV9l dmFsdWF0b3JfbWxfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3Jf bWxfdGVzdC5weQorQEAgLTExLDcgKzExLDYgQEAgaW1wb3J0IHVuaXR0ZXN0CisgCisgaW1wb3J0 IG51bXB5IGFzIG5wCisgZnJvbSBudW1weS50ZXN0aW5nIGltcG9ydCBhc3NlcnRfYWxsY2xvc2UK Ky1mcm9tIHBhcmFtZXRlcml6ZWQgaW1wb3J0IHBhcmFtZXRlcml6ZWQKKyAKKyBpbXBvcnQgb25u eAorIGZyb20gb25ueCBpbXBvcnQgT05OWF9NTCwgVGVuc29yUHJvdG8sIFR5cGVQcm90bywgVmFs dWVJbmZvUHJvdG8KK0BAIC04OTMsMTE4ICs4OTIsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZh bHVhdG9yQWlPbm54TWwodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgb25ueC5jaGVja2Vy LmNoZWNrX21vZGVsKG1vZGVsKQorICAgICAgICAgcmV0dXJuIG1vZGVsCisgCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIHR1cGxlKAorLSAgICAgICAgICAgIGl0ZXJ0b29s cy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAg ICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5T VU0gaWYgb3BzZXQ1IGVsc2UgIlNVTSIsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJy YXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC41NzY5MjNdLCBbMC41NzY5MjNd LCBbMC41NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAgICAgICAgICAgICAgICAgICAgICAg ICksCistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAgICAg ICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAgICBB Z2dyZWdhdGlvbkZ1bmN0aW9uLkFWRVJBR0UgaWYgb3BzZXQ1IGVsc2UgIkFWRVJBR0UiLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbWzAuMjg4NDYyXSwgWzAuMjg4NDYyXSwgWzAuMjg4NDYyXV0sIGR0eXBlPW5wLmZsb2F0 MzIKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAg IG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAo CistICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5NSU4gaWYgb3Bz ZXQ1IGVsc2UgIk1JTiIsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC4wNzY5MjNdLCBbMC4wNzY5MjNdLCBbMC4wNzY5 MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0g ICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlv bkZ1bmN0aW9uLk1BWCBpZiBvcHNldDUgZWxzZSAiTUFYIiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICBucC5hcnJheShbWzAuNV0sIFswLjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIpLAor LSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAgICks CistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICAgICAgZm9yIG9wc2V0NSBpbiBbVHJ1 ZSwgRmFsc2VdCistICAgICAgICAgICAgKQorLSAgICAgICAgKQorLSAgICApCistICAgIEB1bml0 dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBh aS5vbm54Lm1sIikKKy0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfYWdncmVn YXRpb25fZnVuY3Rpb25zKAorLSAgICAgICAgc2VsZiwgYWdncmVnYXRlX2Z1bmN0aW9uLCBleHBl Y3RlZF9yZXN1bHQsIG9wc2V0NQorLSAgICApOgorLSAgICAgICAgeCA9IG5wLmFyYW5nZSg5KS5y ZXNoYXBlKCgtMSwgMykpLmFzdHlwZShucC5mbG9hdDMyKSAvIDEwIC0gMC41CistICAgICAgICBt b2RlbF9mYWN0b3J5ID0gKAorLSAgICAgICAgICAgIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1i bGVfb3BzZXRfbGF0ZXN0CistICAgICAgICAgICAgaWYgb3BzZXQ1CistICAgICAgICAgICAgZWxz ZSBzZWxmLl9nZXRfdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3NvcgorLSAgICAgICAgKQorLSAg ICAgICAgbW9kZWxfcHJvdG8gPSBtb2RlbF9mYWN0b3J5KAorLSAgICAgICAgICAgIGFnZ3JlZ2F0 ZV9mdW5jdGlvbiwKKy0gICAgICAgICkKKy0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0 b3IobW9kZWxfcHJvdG8pCistICAgICAgICAoYWN0dWFsLCkgPSBzZXNzLnJ1bihOb25lLCB7Ilgi OiB4fSkKKy0gICAgICAgIGFzc2VydF9hbGxjbG9zZShhY3R1YWwsIGV4cGVjdGVkX3Jlc3VsdCwg YXRvbD0xZS02KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICB0dXBs ZSgKKy0gICAgICAgICAgICBpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZSgKKy0gICAgICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAg ICAgIE1vZGUuTEVRIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfTEVRIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjU3 NjkyM10sIFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAg ICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCist ICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICAgICAgICAgIE1vZGUuR1QgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9HVCIsCistICAg ICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1swLjVdLCBbMC41XSwgWzAuNV1dLCBkdHlw ZT1ucC5mbG9hdDMyKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAg ICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAg ICAgICAgICAgIE1vZGUuTFQgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9MVCIsCistICAgICAgICAg ICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb MC41NzY5MjNdLCBbMC41NzY5MjNdLCBbMC41NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAg ICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1 LAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAg ICAgICAgICAgICAgICAgICAgICBNb2RlLkdURSBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0dURSIs CistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1swLjVdLCBbMC41XSwgWzAuNV1d LCBkdHlwZT1ucC5mbG9hdDMyKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCist ICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICAgICAgICAgIE1vZGUuRVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9FUSIsCistICAg ICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxLjBdLCBbMS4wXSwgWzEuMF1dLCBkdHlw ZT1ucC5mbG9hdDMyKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAg ICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAg ICAgICAgICAgIE1vZGUuTkVRIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfTkVRIiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg W1swLjA3NjkyM10sIFswLjA3NjkyM10sIFswLjA3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCist ICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNl dDUsCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICApCistICAgICAg ICAgICAgICAgIGZvciBvcHNldDUgaW4gW1RydWUsIEZhbHNlXQorLSAgICAgICAgICAgICkKKy0g ICAgICAgICkKKy0gICAgKQorLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01MLCByZWFz b249Im9ubnggbm90IGNvbXBpbGVkIHdpdGggYWkub25ueC5tbCIpCistICAgIGRlZiB0ZXN0X3Ry ZWVfZW5zZW1ibGVfcmVncmVzc29yX3J1bGUoc2VsZiwgcnVsZSwgZXhwZWN0ZWQsIG9wc2V0NSk6 CistICAgICAgICB4ID0gbnAuYXJhbmdlKDkpLnJlc2hhcGUoKC0xLCAzKSkuYXN0eXBlKG5wLmZs b2F0MzIpIC8gMTAgLSAwLjUKKy0gICAgICAgIG1vZGVsX2ZhY3RvcnkgPSAoCistICAgICAgICAg ICAgc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QKKy0gICAgICAgICAg ICBpZiBvcHNldDUKKy0gICAgICAgICAgICBlbHNlIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1i bGVfcmVncmVzc29yCistICAgICAgICApCistICAgICAgICBhZ2dyZWdhdGVfZnVuY3Rpb24gPSBB Z2dyZWdhdGlvbkZ1bmN0aW9uLlNVTSBpZiBvcHNldDUgZWxzZSAiU1VNIgorLQorLSAgICAgICAg bW9kZWxfcHJvdG8gPSBtb2RlbF9mYWN0b3J5KGFnZ3JlZ2F0ZV9mdW5jdGlvbiwgcnVsZSkKKy0g ICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWxfcHJvdG8pCistICAgICAgICAo YWN0dWFsLCkgPSBzZXNzLnJ1bihOb25lLCB7IlgiOiB4fSkKKy0gICAgICAgIGFzc2VydF9hbGxj bG9zZShhY3R1YWwsIGV4cGVjdGVkLCBhdG9sPTFlLTYpCistCisgICAgIEB1bml0dGVzdC5za2lw SWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1s IikKKyAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfMl90YXJnZXRzX29wc2V0 MyhzZWxmKToKKyAgICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29y UHJvdG8uRkxPQVQsIFtOb25lLCBOb25lXSkKK0BAIC0xMTE4LDIzICsxMDA1LDYgQEAgY2xhc3Mg VGVzdFJlZmVyZW5jZUV2YWx1YXRvckFpT25ueE1sKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAg ICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkLCBhdG9sPTFlLTYpCisgICAgICAg ICBzZWxmLmFzc2VydEluKCJvcF90eXBlPVRyZWVFbnNlbWJsZVJlZ3Jlc3NvciIsIHN0cihzZXNz LnJ0X25vZGVzX1swXSkpCisgCistICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJl YXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKAorLSAgICAgICAgWyhpbnB1dF90eXBlLCkgZm9yIGlucHV0X3R5cGUgaW4g W1RlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5ET1VCTEVdXQorLSAgICApCistICAgIGRl ZiB0ZXN0X3RyZWVfZW5zZW1ibGVfbWlzc2luZ19vcHNldDUoc2VsZiwgaW5wdXRfdHlwZSk6Cist ICAgICAgICBtb2RlbCA9IHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0ZXN0 KAorLSAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uU1VNLCBNb2RlLkxFUSwgVHJ1ZSwg aW5wdXRfdHlwZQorLSAgICAgICAgKQorLSAgICAgICAgbnBfZHR5cGUgPSBvbm54LmhlbHBlci50 ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoaW5wdXRfdHlwZSkKKy0gICAgICAgIHggPSBucC5hcmFu Z2UoOSkucmVzaGFwZSgoLTEsIDMpKS5hc3R5cGUobnBfZHR5cGUpIC8gMTAgLSAwLjUKKy0gICAg ICAgIHhbMiwgMF0gPSA1CistICAgICAgICB4WzEsIDpdID0gbnAubmFuCistICAgICAgICBleHBl Y3RlZCA9IG5wLmFycmF5KFtbMTAwMDAxLjBdLCBbMTAwMTAwLjBdLCBbMTAwMTAwLjBdXSwgZHR5 cGU9bnBfZHR5cGUpCistICAgICAgICBzZXNzaW9uID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVs KQorLSAgICAgICAgKGFjdHVhbCwpID0gc2Vzc2lvbi5ydW4oTm9uZSwgeyJYIjogeH0pCistICAg ICAgICBhc3NlcnRfYWxsY2xvc2UoYWN0dWFsLCBleHBlY3RlZCwgYXRvbD0xZS02KQorLQorICAg ICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01MLCByZWFzb249Im9ubnggbm90IGNvbXBpbGVk IHdpdGggYWkub25ueC5tbCIpCisgICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29y X21pc3Npbmdfb3BzZXQ1X2Zsb2F0MTYoc2VsZik6CisgICAgICAgICBtb2RlbCA9IHNlbGYuX2dl dF90ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0ZXN0KAorZGlmZiAtLWdpdCBhL29ubngvdGVz dC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkgYi9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1 YXRvcl90ZXN0LnB5CitpbmRleCA4NWNjNGNjMGUuLmQwYTI1NWZjOCAxMDA2NDQKKy0tLSBhL29u bngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9yZWZl cmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKK0BAIC0yNSw3ICsyNSw2IEBAIGZyb20gdHlwaW5nIGlt cG9ydCBUWVBFX0NIRUNLSU5HCisgCisgaW1wb3J0IG1sX2R0eXBlcworIGltcG9ydCBudW1weSBh cyBucAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisgaW1wb3J0IHZlcnNpb25fdXRpbHMKKyBmcm9t IG51bXB5LnRlc3RpbmcgaW1wb3J0IGFzc2VydF9hbGxjbG9zZQorIAorQEAgLTI5OTgsMTYzICsy OTk3LDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6 CisgICAgICAgICAjIG1vZGVsCisgICAgICAgICByZXR1cm4gbWFrZV9tb2RlbChncmFwaCwgb3Bz ZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIiLCBvcHNldCldKQorIAorLSAgICBAcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAor LSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAg IlJlZHVjZU1pbiIsCistICAgICAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAg ICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbbnAubmFuLCBu cC5uYW5dLCBbMTQuNDIyNzA2LCAxOC44MDUyN11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAg ICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShb WzIsIDE1XSwgWzEwLCA0XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAg IF0sCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAg ICAgICAgICAgICJSZWR1Y2VMMSIsCistICAgICAgICAgICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb Mi4yMzY3MDUzLCAyLjM1MTY2MTJdLCBbNC4wNzYyOTIsIDQuMjk3MDYzNF1dLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxOCwgNl0sIFsx MywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAg ICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAi UmVkdWNlTDIiLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAg ICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuODAxNTUsIDEu ODE2OTk0OF0sIFsyLjk5MjgwNzYsIDMuMTIwNTg4M11dLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxMSwgMThdLCBbMTMsIDZdXSwgZHR5 cGU9bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUxvZ1N1 bSIsCistICAgICAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAu YXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC45NDk3ODQ4LCAxLjE4NzI2 NDNdLCBbMS42NzY0MTc1LCAxLjcwNzU5XV0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAg IGR0eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheShbWzYsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmlu dDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VMb2dTdW1FeHAiLAor LSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5 KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuNjAwNTk3MywgMS43NDQ1OTM1XSwg WzIuNTYxNjIyOSwgMi42NTM5Nzk1XV0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0 eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBucC5hcnJheShbWzEzLCA2XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0 KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAg ICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VNYXgiLAorLSAgICAgICAg ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbWzEuNDIxNzEwOCwgMS41MDY5NTM2XSwgWzIuNDUzODI2 LCAyLjUwNDE3ODNdXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxv YXQzMiwKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIG5wLmFycmF5KFtbMTMsIDExXSwgWzEzLCAxMV1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAg ICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAg ICAoCistICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTWVhbiIsCistICAgICAgICAgICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFtbMC4zOTI0NzkwMywgMC43ODQ5NzYzNl0sIFsyLjAzODE0NiwgMi4x NDg1MzE3XV0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIs CistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBu cC5hcnJheShbWzEzLCA2XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0g ICAgICAgICAgICAgICAgICAgICJSZWR1Y2VTdW1TcXVhcmUiLAorLSAgICAgICAgICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbWzMuMjQ1NTgyOCwgMy4zMDE0Njk2XSwgWzguOTU2ODk2LCA5LjczODA3 MDVdXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFy cmF5KFtbMTEsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAg ICAgICAgICAgICAgICAgICJSZWR1Y2VQcm9kIiwKKy0gICAgICAgICAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgW1tucC5uYW4sIG5wLm5hbl0sIFsxNC40MjI3MDYsIDE4LjgwNTI3XV0sIGR0eXBlPW5w LmZsb2F0MzIKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KFtbMiwgMTVdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAg ICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgICAgIFsxNywgMThdLAorLSAgICAgICAgKQorLSAgICApCistICAgIGRlZiB0 ZXN0X29wX3JlZHVjZShzZWxmLCByZWR1Y2Vfb3BfZXhwZWN0ZWQsIG9wc2V0OiBpbnQpOgorLSAg ICAgICAgcmVkdWNlX29wLCBleHBlY3RlZCA9IHJlZHVjZV9vcF9leHBlY3RlZAorLSAgICAgICAg WCA9IG5wLmFyYW5nZSg4KS5yZXNoYXBlKCgtMSwgNCkpLmFzdHlwZShucC5mbG9hdDMyKQorLQor LSAgICAgICAgcmVzdWx0cyA9IHt9CistCistICAgICAgICBtb2RlbCA9IHNlbGYuX2NkaXN0X21v ZGVsKG9wc2V0LCByZWR1Y2Vfb3ApCistICAgICAgICBzZXNzID0gUmVmZXJlbmNlRXZhbHVhdG9y KG1vZGVsKQorLSAgICAgICAgZ290ID0gc2Vzcy5ydW4oTm9uZSwgeyJpbnB1dCI6IFh9KQorLSAg ICAgICAgcmVzdWx0c1sicmVmIiwgb3BzZXRdID0gZ290CistCistICAgICAgICBjbCA9IFsKKy0g ICAgICAgICAgICBuCistICAgICAgICAgICAgZm9yIG4gaW4gc2Vzcy5ydF9ub2Rlc19bMF0uYm9k eS5ydF9ub2Rlc18KKy0gICAgICAgICAgICBpZiBuLl9fY2xhc3NfXy5fX25hbWVfXy5zdGFydHN3 aXRoKHJlZHVjZV9vcCkKKy0gICAgICAgIF0KKy0gICAgICAgIHNjaGVtYSA9IGNsWzBdLl9zY2hl bWEKKy0gICAgICAgIG5ld19jbCA9IHR5cGUocmVkdWNlX29wLCAoY2xbMF0uX19jbGFzc19fLCks IHsib3Bfc2NoZW1hIjogc2NoZW1hfSkKKy0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0 b3IobW9kZWwsIG5ld19vcHM9W25ld19jbF0pCistICAgICAgICBnb3QgPSBzZXNzLnJ1bihOb25l LCB7ImlucHV0IjogWH0pCistICAgICAgICByZXN1bHRzWyJyZWZfY2wiLCBvcHNldF0gPSBnb3QK Ky0KKy0gICAgICAgIGJhc2VsaW5lID0gImNvbnN0YW50IgorLSAgICAgICAgZm9yIGssIHYgaW4g cmVzdWx0cy5pdGVtcygpOgorLSAgICAgICAgICAgIGZvciBhLCBiIGluIHppcChyZXZlcnNlZChl eHBlY3RlZCksIHJldmVyc2VkKHYpLCBzdHJpY3Q9VHJ1ZSk6CistICAgICAgICAgICAgICAgIGlm IGEuc2hhcGUgIT0gYi5zaGFwZToKKy0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlv bkVycm9yKAorLSAgICAgICAgICAgICAgICAgICAgICAgIGYiU2hhcGUgbWlzbWF0Y2ggZm9yIHty ZWR1Y2Vfb3Ahcn0sIHtiYXNlbGluZX06e2Euc2hhcGV9ICE9IHtrfTp7Yi5zaGFwZX0uIgorLSAg ICAgICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgICAgICBkaWZmID0gbnAuYWJzKGEgLSBi KS5tYXgoKQorLSAgICAgICAgICAgICAgICBpZiBkaWZmID4gMWUtNjoKKy0gICAgICAgICAgICAg ICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorLSAgICAgICAgICAgICAgICAgICAgICAgIGYi RGlzY3JlcGFuY2llcyAobWF4PXtkaWZmfSkgZm9yIHtyZWR1Y2Vfb3Ahcn0sIHtiYXNlbGluZX0g IT0ge2t9XG57YX1cbiE9XG57Yn0iCistICAgICAgICAgICAgICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAg ICAgICgxMywpLAorLSAgICAgICAgICAgICgxNywpLAorLSAgICAgICAgICAgICgxOCwpLAorLSAg ICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X212bihzZWxmLCBvcHNldDogaW50LCByZWZf b3BzZXQ6IGludCA9IDEzKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJY IiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lLCBOb25lXSkKKy0gICAgICAg IFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25l LCBOb25lLCBOb25lLCBOb25lXSkKKy0gICAgICAgIG5vZGVzID0gWworLSAgICAgICAgICAgIG1h a2Vfbm9kZSgiTWVhblZhcmlhbmNlTm9ybWFsaXphdGlvbiIsIFsiWCJdLCBbIlkiXSksCistICAg ICAgICBdCistICAgICAgICBncmFwaCA9IG1ha2VfZ3JhcGgobm9kZXMsICJnIiwgW1hdLCBbWV0p CistICAgICAgICB4ID0gbnAucmFuZG9tLnJhbmQoMywgMywgMywgMSkuYXN0eXBlKG5wLmZsb2F0 MzIpCistCistICAgICAgICBvbm54X21vZGVsID0gbWFrZV9tb2RlbChncmFwaCwgb3BzZXRfaW1w b3J0cz1bbWFrZV9vcHNldGlkKCIiLCBvcHNldCldKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNl RXZhbHVhdG9yKG9ubnhfbW9kZWwpCistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6 IHh9KVswXQorLQorLSAgICAgICAgcmVmX29ubnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBoLCBv cHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIHJlZl9vcHNldCldKQorLSAgICAgICAgcmVm X2V4cGVjdGVkID0gUmVmZXJlbmNlRXZhbHVhdG9yKHJlZl9vbm54X21vZGVsKQorLSAgICAgICAg ZXhwZWN0ZWQgPSByZWZfZXhwZWN0ZWQucnVuKE5vbmUsIHsiWCI6IHh9KVswXQorLQorLSAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChnb3Quc2hhcGUsIGV4cGVjdGVkLnNoYXBlKQorLSAgICAgICAg YXNzZXJ0X2FsbGNsb3NlKGdvdCwgZXhwZWN0ZWQpCistCisgICAgIGRlZiB0ZXN0X2NvbmNhdF9p bl9hX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICAgZGVmIGNyZWF0ZV9tb2RlbCgpOgorICAgICAg ICAgICAgIG5vZGVzID0gW10KK0BAIC0zODI5LDIxMSArMzY3MSw2IEBAIGNsYXNzIFRlc3RSZWZl cmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZ290ID0gcmVmLnJ1 bihOb25lLCB7IlgiOiBkYXRhfSkKKyAgICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4 cGVjdGVkKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0g ICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIDQgKiBucC5hcmFuZ2Uo MTIpLnJlc2hhcGUoMywgNCksCistICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNo YXBlKDMsIDIpLAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgMikpLAorLSAgICAgICAg ICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBbWzAsIDQs IDQsIDZdLCBbNSwgNywgNiwgN10sIFs2LCA3LCA3LCA3XV0sCistICAgICAgICAgICAgKSwKKy0g ICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIDQgKiBucC5hcmFuZ2UoMTIpLnJlc2hhcGUo MywgNCksCistICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAor LSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCAyKSksCistICAgICAgICAgICAgICAgIDEsCist ICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIFtbMSwgNSwgNSwgN10sIFs2LCA4 LCA3LCA4XSwgWzcsIDgsIDgsIDhdXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgK Ky0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDI0KS5yZXNoYXBlKDMsIDgpLAorLSAgICAgICAg ICAgICAgICBbWzAuMjUsIDAuNSwgMV0sIFswLjI1LCAwLjUsIDFdLCBbMC4yNSwgMC41LCAxXV0s CistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAzKSksCistICAgICAgICAgICAgICAgIDEs CistICAgICAgICAgICAgICAgIDMsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgICAgIFswLCA0LCA4LCA2LCA4LCAxMCwgNiwgN10sCistICAgICAgICAgICAgICAgICAgICBb MzIsIDM2LCA0MCwgMjIsIDI0LCAyNiwgMTQsIDE1XSwKKy0gICAgICAgICAgICAgICAgICAgIFs2 NCwgNjgsIDcyLCAzOCwgNDAsIDQyLCAyMiwgMjNdLAorLSAgICAgICAgICAgICAgICBdLAorLSAg ICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5hcmFuZ2Uo NiksCistICAgICAgICAgICAgICAgIFswLjI1LCAwLjVdLAorLSAgICAgICAgICAgICAgICBbLTEs IC0yXSwKKy0gICAgICAgICAgICAgICAgMCwKKy0gICAgICAgICAgICAgICAgMywKKy0gICAgICAg ICAgICAgICAgWy0xLCAzLCA3LCA0LCA2LCA4XSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAg ICAgICgKKy0gICAgICAgICAgICAgICAgbnAub25lcygoOSwgMTIpKSwKKy0gICAgICAgICAgICAg ICAgbnAub25lcygoMywgNCkpLAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgNCkpLAor LSAgICAgICAgICAgICAgICAwLAorLSAgICAgICAgICAgICAgICAzLAorLSAgICAgICAgICAgICAg ICBOb25lLCAgIyBCbG9ja2VkIHF1YW50aXphdGlvbiBpcyBkZWZpbmVkIGZvciAxLUQgYmxvY2tz IG9ubHkKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAg bnAub25lcygoMywgNCwgNSwgNikpLAorLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0KSks CistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSksCistICAgICAgICAgICAgICAgIDIs CistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIE5vbmUsICAjIFNjYWxlIGFu ZCBaUCBtdXN0IGhhdmUgdGhlIHNhbWUgcmFuayBhcyB0aGUgaW5wdXQKKy0gICAgICAgICAgICAp LAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2Jsb2NrZWRfcXVhbnRpemVfbGlu ZWFyKAorLSAgICAgICAgc2VsZiwgeCwgc2NhbGUsIHplcm9fcG9pbnQsIGF4aXMsIGJsb2NrX3Np emUsIGV4cGVjdGVkCistICAgICk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLklOVDgsIFtOb25lXSkKKy0KKy0gICAgICAg IHNjYWxlX2RhdGEgPSBucC5hcnJheShzY2FsZSwgZHR5cGU9bnAuZmxvYXQzMikKKy0gICAgICAg IHpwX2RhdGEgPSBucC5hcnJheSh6ZXJvX3BvaW50LCBkdHlwZT1ucC5pbnQ4KQorLSAgICAgICAg bW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICAgICAiUXVhbnRpemVMaW5lYXIiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsi WCIsICJzY2FsZSIsICJ6ZXJvIl0sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJZIl0sCist ICAgICAgICAgICAgICAgICAgICAgICAgYXhpcz1heGlzLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6ZSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAgICAgICAg W1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJzY2Fs ZSIsIFRlbnNvclByb3RvLkZMT0FULCBzY2FsZV9kYXRhLnNoYXBlLCBzY2FsZV9kYXRhCistICAg ICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInpl cm8iLCBUZW5zb3JQcm90by5JTlQ4LCBzY2FsZV9kYXRhLnNoYXBlLCB6cF9kYXRhKSwKKy0gICAg ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICApCistICAgICAgICApCistICAgICAgICByZWYg PSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCistCistICAgICAgICBkYXRhID0gbnAuYXJyYXko eCwgZHR5cGU9bnAuZmxvYXQzMikKKy0KKy0gICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25l OgorLSAgICAgICAgICAgIGV4cGVjdGVkID0gbnAuYXJyYXkoZXhwZWN0ZWQsIGR0eXBlPW5wLmlu dDgpCistICAgICAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0gICAg ICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBleHBlY3RlZCkKKy0gICAgICAgIGVsc2U6 CistICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKy0gICAg ICAgICAgICAgICAgcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKAor LSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCistICAgICAgICAg ICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAorLSAgICAgICAgICAgICAgICBu cC56ZXJvcygoMywgMikpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAy LAorLSAgICAgICAgICAgICAgICBbWzAsIDEsIDQsIDZdLCBbMTIsIDE1LCAyNCwgMjhdLCBbNDAs IDQ1LCA2MCwgNjZdXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAg ICAgICAgICAgbnAuYXJhbmdlKDEyKS5yZXNoYXBlKDMsIDQpLAorLSAgICAgICAgICAgICAgICBu cC5hcmFuZ2UoMSwgNykucmVzaGFwZSgzLCAyKSwKKy0gICAgICAgICAgICAgICAgbnAub25lcygo MywgMikpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAg ICAgICAgICAgICBbWy0xLCAwLCAyLCA0XSwgWzksIDEyLCAyMCwgMjRdLCBbMzUsIDQwLCA1NCwg NjBdXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAg bnAuZHN0YWNrKFtucC5hcmFuZ2UoNCkucmVzaGFwZSgyLCAyKV0gKiA0KSwKKy0gICAgICAgICAg ICAgICAgbnAuZHN0YWNrKFtucC5hcnJheShbWzEsIDFdLCBbMiwgM11dKSwgbnAuYXJyYXkoW1s0 LCA1XSwgWzYsIDddXSldKSwKKy0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDIsIDIsIDIpKSwK Ky0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAg ICAgW1tbMCwgMCwgMCwgMF0sIFsxLCAxLCA1LCA1XV0sIFtbNCwgNCwgMTIsIDEyXSwgWzksIDks IDIxLCAyMV1dXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAg ICAgICAgbnAuYXJhbmdlKDI0KS5yZXNoYXBlKDMsIDgpLAorLSAgICAgICAgICAgICAgICBbWzIs IDEsIDNdLCBbMiwgMSwgM10sIFsyLCAxLCAzXV0sCistICAgICAgICAgICAgICAgIG5wLnplcm9z KCgzLCAzKSksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIDMsCistICAg ICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIFswLCAyLCA0LCAzLCA0LCA1LCAx OCwgMjFdLAorLSAgICAgICAgICAgICAgICAgICAgWzE2LCAxOCwgMjAsIDExLCAxMiwgMTMsIDQy LCA0NV0sCistICAgICAgICAgICAgICAgICAgICBbMzIsIDM0LCAzNiwgMTksIDIwLCAyMSwgNjYs IDY5XSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAg ICgKKy0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKAorLSAgICAgICAgICAgICAgICAgICAgNiwK Ky0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgWzIsIDNdLAorLSAgICAgICAg ICAgICAgICBbMSwgMl0sCistICAgICAgICAgICAgICAgIDAsCistICAgICAgICAgICAgICAgIDMs CistICAgICAgICAgICAgICAgIFstMiwgMCwgMiwgMywgNiwgOV0sCistICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5wLm9uZXMoKDksIDEyKSksCistICAg ICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQpKSwKKy0gICAgICAgICAgICAgICAgbnAuemVyb3Mo KDMsIDQpKSwKKy0gICAgICAgICAgICAgICAgMCwKKy0gICAgICAgICAgICAgICAgMywKKy0gICAg ICAgICAgICAgICAgTm9uZSwgICMgQmxvY2tlZCBxdWFudGl6YXRpb24gaXMgZGVmaW5lZCBmb3Ig MS1EIGJsb2NrcyBvbmx5CistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAg ICAgICAgICAgIG5wLm9uZXMoKDMsIDQsIDUsIDYpKSwKKy0gICAgICAgICAgICAgICAgbnAub25l cygoMywgNCkpLAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgNCkpLAorLSAgICAgICAg ICAgICAgICAyLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBOb25lLCAg IyBTY2FsZSBhbmQgWlAgbXVzdCBoYXZlIHRoZSBzYW1lIHJhbmsgYXMgdGhlIGlucHV0CistICAg ICAgICAgICAgKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9ibG9ja2VkX2Rl cXVhbnRpemVfbGluZWFyKAorLSAgICAgICAgc2VsZiwgeCwgc2NhbGUsIHplcm9fcG9pbnQsIGF4 aXMsIGJsb2NrX3NpemUsIGV4cGVjdGVkCistICAgICk6CistICAgICAgICBYID0gbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLklOVDgsIFtOb25lXSkKKy0gICAgICAgIFkg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkK Ky0KKy0gICAgICAgIHNjYWxlX2RhdGEgPSBucC5hcnJheShzY2FsZSwgZHR5cGU9bnAuZmxvYXQz MikKKy0gICAgICAgIHpwX2RhdGEgPSBucC5hcnJheSh6ZXJvX3BvaW50LCBkdHlwZT1ucC5pbnQ4 KQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgo CistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0g ICAgICAgICAgICAgICAgICAgICAgICAiRGVxdWFudGl6ZUxpbmVhciIsCistICAgICAgICAgICAg ICAgICAgICAgICAgWyJYIiwgInNjYWxlIiwgInplcm8iXSwKKy0gICAgICAgICAgICAgICAgICAg ICAgICBbIlkiXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCistICAgICAg ICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19zaXplLAorLSAgICAgICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAorLSAg ICAgICAgICAgICAgICBbWF0sCistICAgICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAg ICAgICAgICAgInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX2RhdGEuc2hhcGUsIHNj YWxlX2RhdGEKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcigiemVybyIsIFRlbnNvclByb3RvLklOVDgsIHNjYWxlX2RhdGEuc2hhcGUsIHpw X2RhdGEpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkK Ky0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIGRhdGEg PSBucC5hcnJheSh4LCBkdHlwZT1ucC5pbnQ4KQorLQorLSAgICAgICAgaWYgZXhwZWN0ZWQgaXMg bm90IE5vbmU6CistICAgICAgICAgICAgZXhwZWN0ZWQgPSBucC5hcnJheShleHBlY3RlZCwgZHR5 cGU9bnAuZmxvYXQzMikKKy0gICAgICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRh dGF9KQorLSAgICAgICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQorLSAg ICAgICAgZWxzZToKKy0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy b3IpOgorLSAgICAgICAgICAgICAgICByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLQorICAg ICBkZWYgdGVzdF9scm4oc2VsZik6CisgICAgICAgICBkZWYgX2V4cGVjdGVkKHgsIGFscGhhLCBi ZXRhLCBiaWFzLCBzaXplKToKKyAgICAgICAgICAgICBzcXVhcmVfc3VtID0gbnAuemVyb3MoKDUs IDUsIDUsIDUpKS5hc3R5cGUobnAuZmxvYXQzMikKK0BAIC00MjE3LDUyICszODU0LDYgQEAgY2xh c3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBn b3QgPSBfY29udl9pbXBsZW1lbnRhdGlvbl9pbTJjb2woKipmZWVkcywgKiprd2FyZ3MpCisgICAg ICAgICBhc3NlcnRfYWxsY2xvc2UoZ290LCBleHBlY3RlZCkKKyAKKy0gICAgQHBhcmFtZXRlcml6 ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJSZWR1 Y2VTdW0iLCksCistICAgICAgICAgICAgKCJSZWR1Y2VMMSIsKSwKKy0gICAgICAgICAgICAoIlJl ZHVjZUwyIiwpLAorLSAgICAgICAgICAgICgiUmVkdWNlTWluIiwpLAorLSAgICAgICAgICAgICgi UmVkdWNlTWF4IiwpLAorLSAgICAgICAgICAgICgiUmVkdWNlUHJvZCIsKSwKKy0gICAgICAgICAg ICAoIlJlZHVjZVN1bVNxdWFyZSIsKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVz dF9yZWR1Y2Vfb3Bfbm9fYXhpcyhzZWxmLCBvcCk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQorLSAgICAgICAgWSA9IG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKKy0gICAg ICAgIGRhdGEgPSBucC5hcmFuZ2UoNikucmVzaGFwZSgoMSwgMywgMikpLmFzdHlwZShucC5mbG9h dDMyKQorLSAgICAgICAgbm9kZXMgPSBbbWFrZV9ub2RlKG9wLCBbIlgiXSwgWyJZIl0sIGtlZXBk aW1zPTApXQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgobm9kZXMsICJn IiwgW1hdLCBbWV0pKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQor LSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0gICAgICAgIHIgPSBn b3RbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBucC5uZGFycmF5KQorLSAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnNoYXBlLCAoKSkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoWygxLCksICgyLCksICgzLCksICg0LCksICg1LCksICg2 LCldKQorLSAgICBkZWYgdGVzdF9wYWQoc2VsZiwgZGltKToKKy0gICAgICAgIFggPSBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCistICAgICAgICBQ ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiUCIsIFRlbnNvclByb3RvLklOVDY0LCBOb25lKQor LSAgICAgICAgViA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlYiLCBUZW5zb3JQcm90by5GTE9B VCwgTm9uZSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29y UHJvdG8uRkxPQVQsIE5vbmUpCistICAgICAgICB2YWx1ZSA9IG5wLmFycmF5KFstNV0sIGR0eXBl PW5wLmZsb2F0MzIpCistCistICAgICAgICBub2RlID0gbWFrZV9ub2RlKCJQYWQiLCBpbnB1dHM9 WyJYIiwgIlAiLCAiViJdLCBvdXRwdXRzPVsiWSJdLCBtb2RlPSJjb25zdGFudCIpCistICAgICAg ICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW1gsIFAsIFZdLCBb WV0pKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAg eCA9IG5wLmFycmF5KFsxXSwgZHR5cGU9bnAuZmxvYXQzMikucmVzaGFwZSgoMSwpICogZGltKQor LQorLSAgICAgICAgcCA9IG5wLmFycmF5KFsxLCAxXSAqIGRpbSwgZHR5cGU9bnAuaW50NjQpCist ICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IHgsICJQIjogcCwgIlYiOiB2YWx1ZX0p WzBdCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdC5zaGFwZSwgKDMsKSAqIGRpbSkKKy0g ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LmR0eXBlLCBucC5mbG9hdDMyKQorLQorLSAgICAg ICAgcCA9IG5wLnJlcGVhdChbNywgM10sIGRpbSkuYXN0eXBlKG5wLmludDY0KQorLSAgICAgICAg Z290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiB4LCAiUCI6IHAsICJWIjogdmFsdWV9KVswXQorLSAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3Quc2hhcGUsICgxMSwpICogZGltKQorLSAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChnb3QuZHR5cGUsIG5wLmZsb2F0MzIpCistCisgICAgIGRlZiB0ZXN0 X2NvbnN0YW50X29mX3NoYXBlKHNlbGYpOgorICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKKyAgICAgICAgIFkgPSBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCitAQCAtNTM3Mywx MjQgKzQ5NjQsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RD YXNlKToKKyAgICAgICAgIGZvciBpIGluIHJhbmdlKDIsIC0xLCAtMSk6CisgICAgICAgICAgICAg YXNzZXJ0X2FsbGNsb3NlKGdvdFtpXSwgZXhwZWN0ZWRbaV0pCisgCistICAgIEBwYXJhbWV0ZXJp emVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgIChbImFi YyIsICJkZWYiXSwgWyIuY29tIiwgIi5uZXQiXSwgWyJhYmMuY29tIiwgImRlZi5uZXQiXSwgKDIs KSksCistICAgICAgICAgICAgKFsiY2F0IiwgImRvZyIsICJzbmFrZSJdLCBbInMiXSwgWyJjYXRz IiwgImRvZ3MiLCAic25ha2VzIl0sICgzLCkpLAorLSAgICAgICAgICAgICgiY2F0IiwgInMiLCAi Y2F0cyIsICgpKSwKKy0gICAgICAgICAgICAoWyJhIiwgIsOfIiwgInkiXSwgWyJhIiwgIsOfIiwg InkiXSwgWyJhYSIsICLDn8OfIiwgInl5Il0sICgzLCkpLAorLSAgICAgICAgXQorLSAgICApCist ICAgIGRlZiB0ZXN0X3N0cmluZ19jb25jYXQoc2VsZiwgYSwgYiwgZXhwZWN0ZWQsIGV4cGVjdGVk X3NoYXBlKToKKy0gICAgICAgIEEgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJBIiwgVGVuc29y UHJvdG8uU1RSSU5HLCBOb25lKQorLSAgICAgICAgQiA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IkIiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5vbmUpCistICAgICAgICBZID0gbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlNUUklORywgTm9uZSkKKy0gICAgICAgIG5vZGUg PSBtYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIsIGlucHV0cz1bIkEiLCAiQiJdLCBvdXRwdXRzPVsi WSJdKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAiZyIs IFtBLCBCXSwgW1ldKSkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkK Ky0gICAgICAgIHJlc3VsdCwgKl8gPSByZWYucnVuKE5vbmUsIHsiQSI6IG5wLmFycmF5KGEpLCAi QiI6IG5wLmFycmF5KGIpfSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFs KHJlc3VsdCwgZXhwZWN0ZWQpCistICAgICAgICBzZWxmLmFzc2VydEluKHJlc3VsdC5kdHlwZS5r aW5kLCB7Ik8iLCAiVSJ9KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc2hhcGUs IGV4cGVjdGVkX3NoYXBlKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4 cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFsiMSwy LDMiLCAiNCw1LDYiXSwKKy0gICAgICAgICAgICAgICAgIiwiLAorLSAgICAgICAgICAgICAgICBO b25lLAorLSAgICAgICAgICAgICAgICBbWyIxIiwgIjIiLCAiMyJdLCBbIjQiLCAiNSIsICI2Il1d LAorLSAgICAgICAgICAgICAgICBbMywgM10sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAoCistICAgICAgICAgICAgICAgIFsiMSwiLCAiNCw2IiwgIiJdLAorLSAgICAgICAgICAgICAg ICAiLCIsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFtbIjEiLCAi Il0sIFsiNCIsICI2Il0sIFsiIiwgIiJdXSwKKy0gICAgICAgICAgICAgICAgWzIsIDIsIDFdLAor LSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbIjEiLCAi NCw2IiwgIjQsNSw2Il0sCistICAgICAgICAgICAgICAgICIsIiwKKy0gICAgICAgICAgICAgICAg MSwKKy0gICAgICAgICAgICAgICAgW1siMSIsICIiXSwgWyI0IiwgIjYiXSwgWyI0IiwgIjUsNiJd XSwKKy0gICAgICAgICAgICAgICAgWzEsIDIsIDJdLAorLSAgICAgICAgICAgICksCistICAgICAg ICAgICAgKAorLSAgICAgICAgICAgICAgICBbWyIxLCIsICI0LDYiLCAiNCw1LDYiXSwgWyIxLCIs ICI0LDYiLCAiNCw1LDYiXV0sCistICAgICAgICAgICAgICAgICIsIiwKKy0gICAgICAgICAgICAg ICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgW1siMSIs ICIiLCAiIl0sIFsiNCIsICI2IiwgIiJdLCBbIjQiLCAiNSIsICI2Il1dLAorLSAgICAgICAgICAg ICAgICAgICAgW1siMSIsICIiLCAiIl0sIFsiNCIsICI2IiwgIiJdLCBbIjQiLCAiNSIsICI2Il1d LAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbWzIsIDIsIDNdLCBbMiwg MiwgM11dLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAg ICBbImhlbGxvIHdvcmxkICEiLCAiICBoZWxsbyAgIHdvcmxkICEiLCAiIGhlbGxvIHdvcmxkICAg ISAiXSwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0g ICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIs ICIhIl0sCistICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKKy0g ICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAorLSAgICAgICAgICAg ICAgICBdLAorLSAgICAgICAgICAgICAgICBbMywgMywgM10sCistICAgICAgICAgICAgKSwKKy0g ICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFsiaGVsbG8gd29ybGQgISIsICIgIGhlbGxv ICAgd29ybGQgISIsICIgaGVsbG8gd29ybGQgICAhICJdLAorLSAgICAgICAgICAgICAgICAiIiwK Ky0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCistICAgICAgICAgICAgICAgICAgICBb ImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAi d29ybGQiLCAiISJdLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbMywg MywgM10sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAg IFsiby1uLW4tLXgtIiwgIm8tbi0tLS1ueCJdLAorLSAgICAgICAgICAgICAgICAiLSIsCistICAg ICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFtbIm8iLCAibiIsICJuIiwgIiIs ICJ4IiwgIiJdLCBbIm8iLCAibiIsICIiLCAiIiwgIiIsICJueCJdXSwKKy0gICAgICAgICAgICAg ICAgWzYsIDZdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAg ICAgICBbXSwKKy0gICAgICAgICAgICAgICAgIiAiLAorLSAgICAgICAgICAgICAgICAyLAorLSAg ICAgICAgICAgICAgICBucC5hcnJheShbXSkucmVzaGFwZSgoMCwgMCkpLAorLSAgICAgICAgICAg ICAgICBbXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0 ZXN0X3N0cmluZ19zcGxpdCgKKy0gICAgICAgIHNlbGYsCistICAgICAgICB4LAorLSAgICAgICAg ZGVsaW1pdGVyLAorLSAgICAgICAgbWF4c3BsaXQsCistICAgICAgICBleHBlY3RlZF9zcGxpdCwK Ky0gICAgICAgIGV4cGVjdGVkX251bV9zcGxpdHMsCistICAgICk6CistICAgICAgICBYID0gbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLlNUUklORywgKE5vbmUpKQorLSAg ICAgICAgU3BsaXRzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiU3BsaXRzIiwgVGVuc29yUHJv dG8uU1RSSU5HLCAoTm9uZSkpCistICAgICAgICBNYXhTcGxpdHMgPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJNYXhTcGxpdHMiLCBUZW5zb3JQcm90by5JTlQzMiwgKE5vbmUpKQorLSAgICAgICAg bm9kZSA9IG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAiU3RyaW5nU3BsaXQiLAorLSAgICAgICAg ICAgIGlucHV0cz1bIlgiXSwKKy0gICAgICAgICAgICBvdXRwdXRzPVsiU3BsaXRzIiwgIk1heFNw bGl0cyJdLAorLSAgICAgICAgICAgIGRlbGltaXRlcj1kZWxpbWl0ZXIsCistICAgICAgICAgICAg bWF4c3BsaXQ9bWF4c3BsaXQsCistICAgICAgICApCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9k ZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW1hdLCBbU3BsaXRzLCBNYXhTcGxpdHNdKSkKKy0g ICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIHggPSBucC5h cnJheSh4LCBkdHlwZT1vYmplY3QpCistICAgICAgICByZXN1bHQsIG51bV9zcGxpdHMsICpfID0g cmVmLnJ1bihOb25lLCB7IlgiOiB4fSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5 X2VxdWFsKHJlc3VsdCwgbnAuYXJyYXkoZXhwZWN0ZWRfc3BsaXQsIGR0eXBlPW9iamVjdCkpCist ICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hcnJheV9lcXVhbCgKKy0gICAgICAgICAgICBudW1f c3BsaXRzLCBucC5hcnJheShleHBlY3RlZF9udW1fc3BsaXRzLCBkdHlwZT1ucC5pbnQ2NCkKKy0g ICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3RfcWxpbmVhcmNvbnZfaW50OChzZWxmKToKKyAgICAg ICAgIG5vZGUgPSBtYWtlX25vZGUoCisgICAgICAgICAgICAgIlFMaW5lYXJNYXRNdWwiLAorQEAg LTU1NjEsNDQgKzUwMzQsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0 LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBucC5hcnJheShbWzQxLCAtMTIsIC05XSwgWzEsIC03 NSwgMjBdXSwgZHR5cGU9bnAuaW50OCksIGdvdFswXQorICAgICAgICAgKQorIAorLSAgICBAcGFy YW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAg ICAoCistICAgICAgICAgICAgICAgIFsid3d3Lmdvb2dsZS5jb20iLCAid3d3LmZhY2Vib29rLmNv bSIsICJ3d3cuYmJjLmNvLnVrIl0sCistICAgICAgICAgICAgICAgIHIid3d3XC5bXHcuLV0rXC5c YmNvbVxiIiwKKy0gICAgICAgICAgICAgICAgW1RydWUsIFRydWUsIEZhbHNlXSwKKy0gICAgICAg ICAgICAgICAgKDMsKSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAg ICAgICAgICAgW1siT25ueCIsICJ0ZW5zb3JmbG93IiwgIk51bXB5Il0sIFsiUHl0b3JjaCIsICJD eXRob24iLCAibnVtYmEiXV0sCistICAgICAgICAgICAgICAgIHIiXltBLVpdW2Etel0qJCIsCist ICAgICAgICAgICAgICAgIFtbVHJ1ZSwgRmFsc2UsIFRydWVdLCBbVHJ1ZSwgVHJ1ZSwgRmFsc2Vd XSwKKy0gICAgICAgICAgICAgICAgKDIsIDMpLAorLSAgICAgICAgICAgICksCistICAgICAgICAg ICAgKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAiYWNjb3VudEBn bWFpbC5jb20iLAorLSAgICAgICAgICAgICAgICAgICAgImFjY291bnRAaG90bWFpbC5jb20iLAor LSAgICAgICAgICAgICAgICAgICAgIm5vdCBlbWFpbCIsCistICAgICAgICAgICAgICAgICAgICAi YWNjb3VudDJAeWFob28uY29tIiwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAg ICAgciIoXFd8XilbXHcuXC1dezAsMjV9QCh5YWhvb3xnbWFpbClcLmNvbShcV3wkKSIsCistICAg ICAgICAgICAgICAgIFtUcnVlLCBGYWxzZSwgRmFsc2UsIFRydWVdLAorLSAgICAgICAgICAgICAg ICAoNCwpLAorLSAgICAgICAgICAgICksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRl c3RfcmVnZXhfZnVsbF9tYXRjaChzZWxmLCB4LCBwYXR0ZXJuLCBleHBlY3RlZCwgZXhwZWN0ZWRf c2hhcGUpOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQ cm90by5TVFJJTkcsIE5vbmUpCistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi WSIsIFRlbnNvclByb3RvLkJPT0wsIE5vbmUpCistICAgICAgICBub2RlID0gbWFrZV9ub2RlKCJS ZWdleEZ1bGxNYXRjaCIsIGlucHV0cz1bIlgiXSwgb3V0cHV0cz1bIlkiXSwgcGF0dGVybj1wYXR0 ZXJuKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAiZyIs IFtYXSwgW1ldKSkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0g ICAgICAgIHJlc3VsdCwgKl8gPSByZWYucnVuKE5vbmUsIHsiWCI6IG5wLmFycmF5KHgpfSkKKy0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCist ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5kdHlwZS5raW5kLCAiYiIpCistICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zaGFwZSwgZXhwZWN0ZWRfc2hhcGUpCistCisgICAg IGRlZiB0ZXN0X3JlZ2V4X2ludmFsaWRfcGF0dGVybihzZWxmKToKKyAgICAgICAgIFggPSBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25lKQorICAgICAg ICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5CT09MLCBOb25l KQorQEAgLTU2MDgsMjIwICs1MDQzLDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1 bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl RXJyb3IpOgorICAgICAgICAgICAgIHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXJyYXkoWyJ4Il0p fSkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAg ICBbCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UMiwK Ky0gICAgICAgICAgICAgICAgWy0xLCAwLCAxLjUsIDIsIDMuMywgMTAsIDIwLCA0MF0sCistICAg ICAgICAgICAgICAgIFswLCAwLCAyLCAyLCA0LCA2LCA2LCA2XSwKKy0gICAgICAgICAgICApLAor LSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwgWy0xLCAwLCAxLjUsIDIsIDMuMywgMTAs IDQwXSwgWzAsIDAsIDIsIDIsIDQsIDYsIDZdKSwKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8u VUlOVDIsIFswXSwgWzBdKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFRlbnNv clByb3RvLklOVDIsCistICAgICAgICAgICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIsIDMu MywgMTAsIDIwXSwKKy0gICAgICAgICAgICAgICAgWy00LCAtNCwgMCwgMiwgMiwgMiwgMiwgMl0s CistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFRlbnNv clByb3RvLklOVDIsCistICAgICAgICAgICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIsIDMu MywgMTBdLAorLSAgICAgICAgICAgICAgICBbLTQsIC00LCAwLCAyLCAyLCAyLCAyXSwKKy0gICAg ICAgICAgICApLAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5JTlQyLCBbMF0sIFswXSksCist ICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfcXVhbnRpemVfbGluZWFyX2ludDIoc2Vs ZiwgcXR5cGUsIGRhdGEsIGV4cGVjdGVkKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0gICAg ICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAg ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAg ICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbXSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICBbInNjYWxlIl0sCistICAgICAgICAgICAgICAgICAg ICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIFsxXSwg WzIuMF0pLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAg ICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiemVybyJdLAor LSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJ6ZXJvIiwgcXR5cGUs IFsxXSwgWzBdKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAg ICBtYWtlX25vZGUoIlF1YW50aXplTGluZWFyIiwgWyJYIiwgInNjYWxlIiwgInplcm8iXSwgWyJU Il0pLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJEZXF1YW50aXplTGluZWFyIiwg WyJUIiwgInNjYWxlIl0sIFsiWSJdLCBheGlzPTApLAorLSAgICAgICAgICAgICAgICBdLAorLSAg ICAgICAgICAgICAgICAiZyIsCistICAgICAgICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICAg ICAgW1ldLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVy ZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjog bnAuYXNhcnJheShkYXRhKX0pCistICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBleHBl Y3RlZCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAg ICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxPQVQs IFRlbnNvclByb3RvLkZMT0FUMTYpLAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwg VGVuc29yUHJvdG8uSU5UMiksCistICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfY2Fz dF9pbnQyX291dHB1dChzZWxmLCBjYXN0X2Zyb20sIGNhc3RfdG8pOgorLSAgICAgICAgWCA9IG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBjYXN0X2Zyb20sIFtOb25lXSkKKy0gICAgICAgIFkg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgY2FzdF90bywgW05vbmVdKQorLSAgICAgICAg bW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBb IlkiXSwgdG89Y2FzdF90byksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAg ICJnIiwKKy0gICAgICAgICAgICAgICAgW1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCistICAg ICAgICAgICAgKQorLSAgICAgICAgKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9y KG1vZGVsKQorLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KAorLSAgICAgICAgICAgIFswLCAxLCAy LjQsIDIuNiwgNCwgMTBdLAorLSAgICAgICAgICAgIGR0eXBlPW9ubnguaGVscGVyLnRlbnNvcl9k dHlwZV90b19ucF9kdHlwZShjYXN0X2Zyb20pLAorLSAgICAgICAgKQorLSAgICAgICAgZXhwZWN0 ZWQgPSBkYXRhLmFzdHlwZShvbm54LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoY2Fz dF90bykpCistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChnb3RbMF0udG9saXN0KCksIGV4cGVjdGVkLnRvbGlzdCgpKQor LQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0 ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwgVGVuc29y UHJvdG8uSU5UMiksCistICAgICAgICAgICAgKFRlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90 by5GTE9BVDE2KSwKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9jYXN0X2ludDJf aW5wdXQoCistICAgICAgICBzZWxmLCBjYXN0X2Zyb206IFRlbnNvclByb3RvLkRhdGFUeXBlLCBj YXN0X3RvOiBUZW5zb3JQcm90by5EYXRhVHlwZQorLSAgICApOgorLSAgICAgICAgWCA9IG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIlgiLCBjYXN0X2Zyb20sIFtOb25lXSkKKy0gICAgICAgIFkgPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgY2FzdF90bywgW05vbmVdKQorLSAgICAgICAgbW9k ZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlki XSwgdG89VGVuc29yUHJvdG8uRkxPQVQpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAg ICAgICAgICAiZyIsCistICAgICAgICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ld LAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2 YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIGRhdGEgPSBucC5hcnJheShyYW5nZSgyKSwgZHR5cGU9 bnAuZmxvYXQzMikKKy0gICAgICAgIGV4cGVjdGVkID0gZGF0YS5hc3R5cGUob25ueC5oZWxwZXIu dGVuc29yX2R0eXBlX3RvX25wX2R0eXBlKGNhc3RfZnJvbSkpCistICAgICAgICBnb3QgPSByZWYu cnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlf ZXF1YWwoZ290WzBdLCBleHBlY3RlZCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAg ICBUZW5zb3JQcm90by5VSU5UNCwKKy0gICAgICAgICAgICAgICAgWy0xLCAwLCAxLjUsIDIsIDMu MywgMTAsIDIwLCA0MF0sCistICAgICAgICAgICAgICAgIFswLCAwLCAyLCAyLCA0LCAxMCwgMjAs IDMwXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwg Wy0xLCAwLCAxLjUsIDIsIDMuMywgMTAsIDQwXSwgWzAsIDAsIDIsIDIsIDQsIDEwLCAzMF0pLAor LSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgWzBdLCBbMF0pLAorLSAgICAgICAgICAg ICgKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNCwKKy0gICAgICAgICAgICAgICAg Wy0yMCwgLTE0LjUsIDAsIDEuNSwgMiwgMy4zLCAxMCwgMjBdLAorLSAgICAgICAgICAgICAgICBb LTE2LCAtMTQsIDAsIDIsIDIsIDQsIDEwLCAxNF0sCistICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAoCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDQsCistICAgICAgICAgICAg ICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIsIDMuMywgMTBdLAorLSAgICAgICAgICAgICAgICBb LTE2LCAtMTQsIDAsIDIsIDIsIDQsIDEwXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAg IChUZW5zb3JQcm90by5JTlQ0LCBbMF0sIFswXSksCistICAgICAgICBdCistICAgICkKKy0gICAg ZGVmIHRlc3RfcXVhbnRpemVfbGluZWFyX2ludDQoc2VsZiwgcXR5cGUsIGRhdGEsIGV4cGVjdGVk KToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8u RkxPQVQsIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwg VGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgK Ky0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50 IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgICAg ICBbInNjYWxlIl0sCistICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3Io InNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIFsxXSwgWzIuMF0pLAorLSAgICAgICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIFsiemVybyJdLAorLSAgICAgICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKCJ6ZXJvIiwgcXR5cGUsIFsxXSwgWzBdKSwKKy0gICAgICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlF1YW50aXplTGlu ZWFyIiwgWyJYIiwgInNjYWxlIiwgInplcm8iXSwgWyJUIl0pLAorLSAgICAgICAgICAgICAgICAg ICAgbWFrZV9ub2RlKCJEZXF1YW50aXplTGluZWFyIiwgWyJUIiwgInNjYWxlIl0sIFsiWSJdLCBh eGlzPTApLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAiZyIsCistICAg ICAgICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICkK Ky0gICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0g ICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXNhcnJheShkYXRhKX0pCistICAg ICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBleHBlY3RlZCkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgK Ky0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FUMTYpLAor LSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCistICAg ICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfY2FzdF9pbnQ0X291dHB1dChzZWxmLCBjYXN0 X2Zyb20sIGNhc3RfdG8pOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgi LCBjYXN0X2Zyb20sIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJZIiwgY2FzdF90bywgW05vbmVdKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAg ICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlkiXSwgdG89Y2FzdF90byksCistICAg ICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAgICAgICAg W1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCistICAgICAgICAgICAgKQorLSAgICAgICAgKQor LSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgZGF0YSA9 IG5wLmFycmF5KAorLSAgICAgICAgICAgIFswLCAxLCAyLjQsIDIuNiwgNCwgMTBdLAorLSAgICAg ICAgICAgIGR0eXBlPW9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShjYXN0X2Zy b20pLAorLSAgICAgICAgKQorLSAgICAgICAgZXhwZWN0ZWQgPSBkYXRhLmFzdHlwZShvbm54Lmhl bHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoY2FzdF90bykpCistICAgICAgICBnb3QgPSBy ZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3Rb MF0udG9saXN0KCksIGV4cGVjdGVkLnRvbGlzdCgpKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5w YXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAg ICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCistICAgICAgICAg ICAgKFRlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5GTE9BVDE2KSwKKy0gICAgICAgICkK Ky0gICAgKQorLSAgICBkZWYgdGVzdF9jYXN0X2ludDRfaW5wdXQoCistICAgICAgICBzZWxmLCBj YXN0X2Zyb206IFRlbnNvclByb3RvLkRhdGFUeXBlLCBjYXN0X3RvOiBUZW5zb3JQcm90by5EYXRh VHlwZQorLSAgICApOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBj YXN0X2Zyb20sIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZ IiwgY2FzdF90bywgW05vbmVdKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAg ICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlkiXSwgdG89VGVuc29yUHJvdG8uRkxPQVQp LAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAiZyIsCistICAgICAgICAg ICAgICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICkKKy0gICAg ICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAg IGRhdGEgPSBucC5hcnJheShyYW5nZSg3KSwgZHR5cGU9bnAuZmxvYXQzMikKKy0gICAgICAgIGV4 cGVjdGVkID0gZGF0YS5hc3R5cGUob25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3RvX25wX2R0eXBl KGNhc3RfZnJvbSkpCistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQor LSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwoZ290WzBdLCBleHBlY3RlZCkK Ky0KKyAgICAgZGVmIHRlc3RfYV9mdW5jdGlvbl9jYWxsaW5nX2FfZnVuY3Rpb25fb25jZShzZWxm KToKKyAgICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8u RkxPQVQsIFsiTiJdKQorICAgICAgICAgb3V0cHV0ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi b3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIFsiTiJdKQorQEAgLTYwNTQsOTQgKzUyNzUsNiBA QCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAg ICAgIGZvciB2IGluIG9pbmYuZnVuY3Rpb25zXy52YWx1ZXMoKToKKyAgICAgICAgICAgICBzZWxm LmFzc2VydElzSW5zdGFuY2UodiwgTXlSZWZlcmVuY2VFdmFsdWF0b3IpCisgCistICAgIEBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAg ICgiRkxPQVQ4RTRNM0ZOIiwgMC4yMyksCistICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk5VWiIs IDAuMjMpLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTVNMiIsIDAuODUpLAorLSAgICAgICAgICAg ICgiRkxPQVQ4RTVNMkZOVVoiLCAwLjg1KSwKKy0gICAgICAgICAgICAoIkRPVUJMRSIsIDApLAor LSAgICAgICAgICAgICgiRkxPQVQiLCAwKSwKKy0gICAgICAgICAgICAoIkZMT0FUMTYiLCAyZS0z KSwKKy0gICAgICAgICAgICAoIkJGTE9BVDE2IiwgMmUtMiksCistICAgICAgICBdCistICAgICkK Ky0gICAgZGVmIHRlc3RfYWRkX2N1c3RvbV9kdHlwZShzZWxmLCBzdHlwZTogc3RyLCBhdG9sOiBm bG9hdCk6CistICAgICAgICBpdHlwZSA9IGdldGF0dHIoVGVuc29yUHJvdG8sIHN0eXBlKQorLSAg ICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAg ICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsi WCJdLCBbIlhjIl0sIHRvPWl0eXBlKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi Q2FzdCIsIFsiWSJdLCBbIlljIl0sIHRvPWl0eXBlKSwKKy0gICAgICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgiQWRkIiwgWyJYYyIsICJZYyJdLCBbIlpjIl0pLAorLSAgICAgICAgICAgICAgICAg ICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJaYyJdLCBbIloiXSwgdG89VGVuc29yUHJvdG8uRkxPQVQp LAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAibmQiLAorLSAgICAgICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJY IiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSksCistICAgICAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtO b25lLCBOb25lLCBOb25lXSksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJaIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBO b25lLCBOb25lXSldLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1bbWFrZV9vcHNldGlkKCIiLCAxOCldLAorLSAgICAgICAgICAgIGlyX3ZlcnNpb249OSwKKy0g ICAgICAgICkKKy0KKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCwgdmVy Ym9zZT0wKQorLQorLSAgICAgICAgeCA9IChucC5hcmFuZ2UoMTgpIC8gNikucmVzaGFwZSgoMiwg MywgMykpLmFzdHlwZShucC5mbG9hdDMyKQorLSAgICAgICAgeSA9IChucC5hcmFuZ2UoMTgpIC8g OSkucmVzaGFwZSgoMiwgMywgMykpLmFzdHlwZShucC5mbG9hdDMyKQorLSAgICAgICAgZmVlZHMg PSBkaWN0KFg9eCwgWT15KQorLSAgICAgICAgZXhwZWN0ZWQgPSB4ICsgeQorLSAgICAgICAgZ290 ID0gcmVmLnJ1bihOb25lLCBmZWVkcylbMF0KKy0gICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3Qs IGV4cGVjdGVkLCBhdG9sPWF0b2wpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6 ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiRE9VQkxFIiwpLAorLSAgICAg ICAgICAgICgiRkxPQVQiLCksCistICAgICAgICAgICAgKCJGTE9BVDE2IiwpLAorLSAgICAgICAg ICAgICgiQkZMT0FUMTYiLCksCistICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk4iLCksCistICAg ICAgICAgICAgKCJGTE9BVDhFNE0zRk5VWiIsKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU1TTIi LCksCistICAgICAgICAgICAgKCJGTE9BVDhFNU0yRk5VWiIsKSwKKy0gICAgICAgICAgICAoIklO VDQiLCksCistICAgICAgICAgICAgKCJVSU5UNCIsKSwKKy0gICAgICAgICAgICAoIklOVDIiLCks CistICAgICAgICAgICAgKCJVSU5UMiIsKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYg dGVzdF9jbXBfY3VzdG9tX2R0eXBlKHNlbGYsIHN0eXBlKToKKy0gICAgICAgIGl0eXBlID0gZ2V0 YXR0cihUZW5zb3JQcm90bywgc3R5cGUpCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCist ICAgICAgICAgICAgbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWGMiXSwgdG89aXR5cGUpLAorLSAg ICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJZIl0sIFsiWWMiXSwgdG89aXR5 cGUpLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJHcmVhdGVyT3JFcXVhbCIsIFsi WGMiLCAiWWMiXSwgWyJaYyJdKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2Fz dCIsIFsiWmMiXSwgWyJaIl0sIHRvPVRlbnNvclByb3RvLkJPT0wpLAorLSAgICAgICAgICAgICAg ICBdLAorLSAgICAgICAgICAgICAgICAibmQiLAorLSAgICAgICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxP QVQsIFtOb25lLCBOb25lLCBOb25lXSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSks CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJaIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSldLAorLSAg ICAgICAgICAgICksCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIi LCAxOCldLAorLSAgICAgICAgICAgIGlyX3ZlcnNpb249OSwKKy0gICAgICAgICkKKy0KKy0gICAg ICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0KKy0gICAgICAgIHggPSAobnAu YXJhbmdlKDE4KSAvIDE4KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCist ICAgICAgICB5ID0gKChucC5hcmFuZ2UoMTgpIC0gOSkgLyAxOCkucmVzaGFwZSgoMiwgMywgMykp LmFzdHlwZShucC5mbG9hdDMyKQorLSAgICAgICAgZmVlZHMgPSBkaWN0KFg9eCwgWT15KQorLSAg ICAgICAgZXhwZWN0ZWQgPSB4ID49IHkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgZmVl ZHMpWzBdCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChnb3QsIGV4cGVjdGVkKQor LQorICAgICBkZWYgdGVzdF9zY2F0dGVyX2VsZW1lbnRzXzRkKHNlbGYpOgorICAgICAgICAgbW9k ZWwgPSBtYWtlX21vZGVsKAorICAgICAgICAgICAgIG1ha2VfZ3JhcGgoCitkaWZmIC0tZ2l0IGEv b25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5IGIvb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5CitpbmRl eCBmOGIzZjhhNjUuLjcxMGI2MDJhMyAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9zY2hlbWFfdGVz dC5weQorKysrIGIvb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5CitAQCAtNyw4ICs3LDYgQEAgaW1w b3J0IGNvbnRleHRsaWIKKyBpbXBvcnQgdW5pdHRlc3QKKyBmcm9tIHR5cGluZyBpbXBvcnQgVFlQ RV9DSEVDS0lORworIAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCistCisgaW1wb3J0IG9ubngKKyBm cm9tIG9ubnggaW1wb3J0IGRlZnMKKyAKK0BAIC0yNDcsMzQgKzI0NSw2IEBAIGNsYXNzIFRlc3RG b3JtYWxQYXJhbWV0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgKQorIAorIAorLWNs YXNzIFRlc3RUeXBlQ29uc3RyYWludFBhcmFtKHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgQHBh cmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAg ICAgKCJzaW5nbGVfdHlwZSIsICJUIiwgWyJ0ZW5zb3IoZmxvYXQpIl0sICJUZXN0IGRlc2NyaXB0 aW9uIiksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAiZG91YmxlX3R5cGVzIiwK Ky0gICAgICAgICAgICAgICAgIlQiLAorLSAgICAgICAgICAgICAgICBbInRlbnNvcihmbG9hdCki LCAidGVuc29yKGludDY0KSJdLAorLSAgICAgICAgICAgICAgICAiVGVzdCBkZXNjcmlwdGlvbiIs CistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoInR1cGxlIiwgIlQiLCAoInRlbnNvcihm bG9hdCkiLCAidGVuc29yKGludDY0KSIpLCAiVGVzdCBkZXNjcmlwdGlvbiIpLAorLSAgICAgICAg XQorLSAgICApCistICAgIGRlZiB0ZXN0X2luaXQoCistICAgICAgICBzZWxmLAorLSAgICAgICAg Xzogc3RyLAorLSAgICAgICAgdHlwZV9wYXJhbV9zdHI6IHN0ciwKKy0gICAgICAgIGFsbG93ZWRf dHlwZXM6IFNlcXVlbmNlW3N0cl0sCistICAgICAgICBkZXNjcmlwdGlvbjogc3RyLAorLSAgICAp IC0+IE5vbmU6CistICAgICAgICB0eXBlX2NvbnN0cmFpbnQgPSBkZWZzLk9wU2NoZW1hLlR5cGVD b25zdHJhaW50UGFyYW0oCistICAgICAgICAgICAgdHlwZV9wYXJhbV9zdHIsIGFsbG93ZWRfdHlw ZXMsIGRlc2NyaXB0aW9uCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5 cGVfY29uc3RyYWludC5kZXNjcmlwdGlvbiwgZGVzY3JpcHRpb24pCistICAgICAgICBzZWxmLmFz c2VydEVxdWFsKHR5cGVfY29uc3RyYWludC5hbGxvd2VkX3R5cGVfc3RycywgbGlzdChhbGxvd2Vk X3R5cGVzKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LnR5cGVf cGFyYW1fc3RyLCB0eXBlX3BhcmFtX3N0cikKKy0KKy0KKyBjbGFzcyBUZXN0QXR0cmlidXRlKHVu aXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIG5h bWUgPSAidGVzdF9hdHRyIgorQEAgLTI5NywxNjkgKzI2Nyw1IEBAIGNsYXNzIFRlc3RBdHRyaWJ1 dGUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYXR0cjEg ZGVzY3JpcHRpb24iLCBhdHRyaWJ1dGUuZGVzY3JpcHRpb24pCisgCisgCistQHBhcmFtZXRlcml6 ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKKy0gICAgWworLSAgICAgICAgIyByZWdpc3RlciB0byBl eGlzdCBkb21haW4KKy0gICAgICAgIHsKKy0gICAgICAgICAgICAib3BfdHlwZSI6ICJDdXN0b21P cCIsCistICAgICAgICAgICAgIm9wX3ZlcnNpb24iOiA1LAorLSAgICAgICAgICAgICJvcF9kb21h aW4iOiAiIiwKKy0gICAgICAgICAgICAidHJhcF9vcF92ZXJzaW9uIjogWzEsIDIsIDYsIDddLAor LSAgICAgICAgfSwKKy0gICAgICAgICMgcmVnaXN0ZXIgdG8gbmV3IGRvbWFpbgorLSAgICAgICAg eworLSAgICAgICAgICAgICJvcF90eXBlIjogIkN1c3RvbU9wIiwKKy0gICAgICAgICAgICAib3Bf dmVyc2lvbiI6IDUsCistICAgICAgICAgICAgIm9wX2RvbWFpbiI6ICJ0ZXN0IiwKKy0gICAgICAg ICAgICAidHJhcF9vcF92ZXJzaW9uIjogWzEsIDIsIDYsIDddLAorLSAgICAgICAgfSwKKy0gICAg XQorLSkKKy1jbGFzcyBUZXN0T3BTY2hlbWFSZWdpc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6Cist ICAgIG9wX3R5cGU6IHN0cgorLSAgICBvcF92ZXJzaW9uOiBpbnQKKy0gICAgb3BfZG9tYWluOiBz dHIKKy0gICAgIyByZWdpc3RlciBzb21lIGZha2Ugc2NoZW1hIHRvIGNoZWNrIGJlaGF2aW9yCist ICAgIHRyYXBfb3BfdmVyc2lvbjogbGlzdFtpbnRdCistCistICAgIGRlZiBzZXRVcChzZWxmKSAt PiBOb25lOgorLSAgICAgICAgIyBFbnN1cmUgdGhlIHNjaGVtYSBpcyB1bnJlZ2lzdGVyZWQKKy0g ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob25ueC5kZWZzLmhhcyhzZWxmLm9wX3R5cGUsIHNlbGYu b3BfZG9tYWluKSkKKy0KKy0gICAgZGVmIHRlYXJEb3duKHNlbGYpIC0+IE5vbmU6CistICAgICAg ICAjIENsZWFuIHVwIHRoZSByZWdpc3RlcmVkIHNjaGVtYQorLSAgICAgICAgZm9yIHZlcnNpb24g aW4gWypzZWxmLnRyYXBfb3BfdmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uXToKKy0gICAgICAgICAg ICB3aXRoIGNvbnRleHRsaWIuc3VwcHJlc3Mob25ueC5kZWZzLlNjaGVtYUVycm9yKToKKy0gICAg ICAgICAgICAgICAgb25ueC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKHNlbGYub3BfdHlwZSwgdmVy c2lvbiwgc2VsZi5vcF9kb21haW4pCistCistICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX211bHRpX3Nj aGVtYShzZWxmKToKKy0gICAgICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFwX29wX3ZlcnNp b24sIHNlbGYub3BfdmVyc2lvbl06CistICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNj aGVtYSgKKy0gICAgICAgICAgICAgICAgc2VsZi5vcF90eXBlLAorLSAgICAgICAgICAgICAgICBz ZWxmLm9wX2RvbWFpbiwKKy0gICAgICAgICAgICAgICAgdmVyc2lvbiwKKy0gICAgICAgICAgICAp CistICAgICAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCistICAg ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9ubnguZGVmcy5oYXMoc2VsZi5vcF90eXBlLCB2ZXJz aW9uLCBzZWxmLm9wX2RvbWFpbikpCistICAgICAgICBmb3IgdmVyc2lvbiBpbiBbKnNlbGYudHJh cF9vcF92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb25dOgorLSAgICAgICAgICAgICMgQWxzbyBtYWtl IHN1cmUgdGhlIGBvcF9zY2hlbWFgIGlzIGFjY2Vzc2libGUgYWZ0ZXIgcmVnaXN0ZXIKKy0gICAg ICAgICAgICByZWdpc3RlcmVkX29wID0gb25ueC5kZWZzLmdldF9zY2hlbWEoCistICAgICAgICAg ICAgICAgIG9wX3NjaGVtYS5uYW1lLCB2ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluCistICAgICAg ICAgICAgKQorLSAgICAgICAgICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCistICAgICAg ICAgICAgICAgIHNlbGYub3BfdHlwZSwKKy0gICAgICAgICAgICAgICAgc2VsZi5vcF9kb21haW4s CistICAgICAgICAgICAgICAgIHZlcnNpb24sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHJlZ2lzdGVyZWRfb3ApLCBzdHIob3Bfc2NoZW1hKSkKKy0K Ky0gICAgZGVmIHRlc3RfdXNpbmdfdGhlX3NwZWNpZmllZF92ZXJzaW9uX2luX29ubnhfY2hlY2so c2VsZik6CistICAgICAgICBpbnB1dCA9IGYiIiIKKy0gICAgICAgICAgICA8CistICAgICAgICAg ICAgICAgIGlyX3ZlcnNpb246IDcsCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydDogWwor LSAgICAgICAgICAgICAgICAgICAgIntzZWxmLm9wX2RvbWFpbn0iIDoge3NlbGYub3BfdmVyc2lv bn0KKy0gICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgID4KKy0gICAgICAgICAgICBhZ3Jh cGggKGZsb2F0W04sIDEyOF0gWCwgaW50MzIgWSkgPT4gKGZsb2F0W05dIFopCistICAgICAgICAg ICAge3sKKy0gICAgICAgICAgICAgICAgWiA9IHtzZWxmLm9wX2RvbWFpbn0ue3NlbGYub3BfdHlw ZX08YXR0cjE9WzEsMl0+KFgsIFkpCistICAgICAgICAgICAgfX0KKy0gICAgICAgICAgICIiIgor LSAgICAgICAgbW9kZWwgPSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbChpbnB1dCkKKy0gICAgICAg IG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCistICAgICAgICAgICAgc2VsZi5vcF90eXBlLAor LSAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAorLSAgICAgICAgICAgIHNlbGYub3BfdmVyc2lv biwKKy0gICAgICAgICAgICBpbnB1dHM9WworLSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1h LkZvcm1hbFBhcmFtZXRlcigiaW5wdXQxIiwgIlQiKSwKKy0gICAgICAgICAgICAgICAgZGVmcy5P cFNjaGVtYS5Gb3JtYWxQYXJhbWV0ZXIoImlucHV0MiIsICJpbnQzMiIpLAorLSAgICAgICAgICAg IF0sCistICAgICAgICAgICAgb3V0cHV0cz1bCistICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hl bWEuRm9ybWFsUGFyYW1ldGVyKCJvdXRwdXQxIiwgIlQiKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIHR5cGVfY29uc3RyYWludHM9WygiVCIsIFsidGVuc29yKGZsb2F0KSJdLCAiIild LAorLSAgICAgICAgICAgIGF0dHJpYnV0ZXM9WworLSAgICAgICAgICAgICAgICBkZWZzLk9wU2No ZW1hLkF0dHJpYnV0ZSgKKy0gICAgICAgICAgICAgICAgICAgICJhdHRyMSIsIGRlZnMuT3BTY2hl bWEuQXR0clR5cGUuSU5UUywgImF0dHIxIGRlc2NyaXB0aW9uIgorLSAgICAgICAgICAgICAgICAp CistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRS YWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcik6CistICAgICAgICAgICAgb25ueC5j aGVja2VyLmNoZWNrX21vZGVsKG1vZGVsLCBjaGVja19jdXN0b21fZG9tYWluPVRydWUpCistICAg ICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKKy0gICAgICAgICMgVGhl IGZha2Ugc2NoZW1hIHdpbGwgcmFpc2UgY2hlY2sgZXhjZXB0aW9uIGlmIHNlbGVjdGVkIGluIGNo ZWNrZXIKKy0gICAgICAgIGZvciB2ZXJzaW9uIGluIHNlbGYudHJhcF9vcF92ZXJzaW9uOgorLSAg ICAgICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEoCistICAgICAgICAgICAgICAgIGRl ZnMuT3BTY2hlbWEoCistICAgICAgICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCistICAgICAg ICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKKy0gICAgICAgICAgICAgICAgICAgIHZlcnNp b24sCistICAgICAgICAgICAgICAgICAgICBvdXRwdXRzPVsKKy0gICAgICAgICAgICAgICAgICAg ICAgICBkZWZzLk9wU2NoZW1hLkZvcm1hbFBhcmFtZXRlcigib3V0cHV0MSIsICJpbnQzMiIpLAor LSAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAg ICkKKy0gICAgICAgIG9ubnguY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCwgY2hlY2tfY3VzdG9t X2RvbWFpbj1UcnVlKQorLQorLSAgICBkZWYgdGVzdF9yZWdpc3Rlcl9zY2hlbWFfcmFpc2VzX2Vy cm9yX3doZW5fcmVnaXN0ZXJpbmdfYV9zY2hlbWFfdHdpY2Uoc2VsZik6CistICAgICAgICBvcF9z Y2hlbWEgPSBkZWZzLk9wU2NoZW1hKAorLSAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKKy0gICAg ICAgICAgICBzZWxmLm9wX2RvbWFpbiwKKy0gICAgICAgICAgICBzZWxmLm9wX3ZlcnNpb24sCist ICAgICAgICApCistICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkK Ky0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5kZWZzLlNjaGVtYUVycm9yKToK Ky0gICAgICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKKy0KKy0g ICAgZGVmIHRlc3RfZGVyZWdpc3Rlcl90aGVfc3BlY2lmaWVkX3NjaGVtYShzZWxmKToKKy0gICAg ICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFwX29wX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lv bl06CistICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAg ICAgICAgc2VsZi5vcF90eXBlLAorLSAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKKy0g ICAgICAgICAgICAgICAgdmVyc2lvbiwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgb25u eC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCistICAgICAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKG9ubnguZGVmcy5oYXMob3Bfc2NoZW1hLm5hbWUsIHZlcnNpb24sIG9wX3NjaGVtYS5k b21haW4pKQorLSAgICAgICAgb25ueC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYS5u YW1lLCBzZWxmLm9wX3ZlcnNpb24sIG9wX3NjaGVtYS5kb21haW4pCistICAgICAgICBmb3IgdmVy c2lvbiBpbiBzZWxmLnRyYXBfb3BfdmVyc2lvbjoKKy0gICAgICAgICAgICBzZWxmLmFzc2VydFRy dWUob25ueC5kZWZzLmhhcyhvcF9zY2hlbWEubmFtZSwgdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFp bikpCistICAgICAgICAjIE1heWJlIGhhcyBsZXNzZXIgb3AgdmVyc2lvbiBpbiB0cmFwIGxpc3QK Ky0gICAgICAgIGlmIG9ubnguZGVmcy5oYXMob3Bfc2NoZW1hLm5hbWUsIHNlbGYub3BfdmVyc2lv biwgb3Bfc2NoZW1hLmRvbWFpbik6CistICAgICAgICAgICAgc2NoZW1hID0gb25ueC5kZWZzLmdl dF9zY2hlbWEoCistICAgICAgICAgICAgICAgIG9wX3NjaGVtYS5uYW1lLCBzZWxmLm9wX3ZlcnNp b24sIG9wX3NjaGVtYS5kb21haW4KKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5h c3NlcnRMZXNzKHNjaGVtYS5zaW5jZV92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb24pCistCistICAg IGRlZiB0ZXN0X2RlcmVnaXN0ZXJfc2NoZW1hX3JhaXNlc19lcnJvcl93aGVuX29wc2NoZW1hX2Rv ZXNfbm90X2V4aXN0KHNlbGYpOgorLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54 LmRlZnMuU2NoZW1hRXJyb3IpOgorLSAgICAgICAgICAgIG9ubnguZGVmcy5kZXJlZ2lzdGVyX3Nj aGVtYShzZWxmLm9wX3R5cGUsIHNlbGYub3BfdmVyc2lvbiwgc2VsZi5vcF9kb21haW4pCistCist ICAgIGRlZiB0ZXN0X2xlZ2FjeV9zY2hlbWFfYWNjZXNzaWJsZV9hZnRlcl9kZXJlZ2lzdGVyKHNl bGYpOgorLSAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAgICBz ZWxmLm9wX3R5cGUsCistICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCistICAgICAgICAgICAg c2VsZi5vcF92ZXJzaW9uLAorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVy X3NjaGVtYShvcF9zY2hlbWEpCistICAgICAgICBzY2hlbWFfYSA9IG9ubnguZGVmcy5nZXRfc2No ZW1hKAorLSAgICAgICAgICAgIG9wX3NjaGVtYS5uYW1lLCBvcF9zY2hlbWEuc2luY2VfdmVyc2lv biwgb3Bfc2NoZW1hLmRvbWFpbgorLSAgICAgICAgKQorLSAgICAgICAgc2NoZW1hX2IgPSBvbm54 LmRlZnMuZ2V0X3NjaGVtYShvcF9zY2hlbWEubmFtZSwgb3Bfc2NoZW1hLmRvbWFpbikKKy0KKy0g ICAgICAgIGRlZiBmaWx0ZXJfc2NoZW1hKHNjaGVtYXMpOgorLSAgICAgICAgICAgIHJldHVybiBb b3AgZm9yIG9wIGluIHNjaGVtYXMgaWYgb3AubmFtZSA9PSBvcF9zY2hlbWEubmFtZV0KKy0KKy0g ICAgICAgIHNjaGVtYV9jID0gZmlsdGVyX3NjaGVtYShvbm54LmRlZnMuZ2V0X2FsbF9zY2hlbWFz KCkpCistICAgICAgICBzY2hlbWFfZCA9IGZpbHRlcl9zY2hlbWEob25ueC5kZWZzLmdldF9hbGxf c2NoZW1hc193aXRoX2hpc3RvcnkoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNj aGVtYV9jKSwgMSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNjaGVtYV9kKSwgMSkK Ky0gICAgICAgICMgQXZvaWQgbWVtb3J5IHJlc2lkdWUgYW5kIGFjY2VzcyBzdG9yYWdlIGFzIG11 Y2ggYXMgcG9zc2libGUKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9hKSwg c3RyKG9wX3NjaGVtYSkpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzY2hlbWFfYiks IHN0cihvcF9zY2hlbWEpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1hX2Nb MF0pLCBzdHIob3Bfc2NoZW1hKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVt YV9kWzBdKSwgc3RyKG9wX3NjaGVtYSkpCistCistCisgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9f IjoKKyAgICAgdW5pdHRlc3QubWFpbigpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3NoYXBlX2lu ZmVyZW5jZV90ZXN0LnB5IGIvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5CitpbmRl eCBlZTIyYzhmZmIuLjg0OWFlMDQyYSAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9zaGFwZV9pbmZl cmVuY2VfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5CitA QCAtMTIsNyArMTIsNiBAQCBmcm9tIHR5cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORywgQW55Cisg aW1wb3J0IG51bXB5IGFzIG5wCisgaW1wb3J0IHB5dGVzdAorIGZyb20gZ29vZ2xlLnByb3RvYnVm IGltcG9ydCB0ZXh0X2Zvcm1hdAorLWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVy aXplZAorIAorIGltcG9ydCBvbm54LnNoYXBlX2luZmVyZW5jZQorIGZyb20gb25ueCBpbXBvcnQg KAorQEAgLTI0NCw4NiArMjQzLDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFw ZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzMCwgNCwgNSkpXQorICAgICAgICAgKQor IAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3Nl IikpCistICAgIGRlZiB0ZXN0X3RyYW5zcG9zZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgor LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgi VHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAorLSAgICAgICAgICAg IFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwg VGVuc29yUHJvdG8uRkxPQVQsICgzLCAyLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAg ICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5z cG9zZSIpKQorLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfcHJlZXhpc3Rpbmcoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAg ICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAorLSAgICAgICAg ICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0p XSwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3Rv LkZMT0FULCBOb25lKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIsIDQpKV0sCistICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiVHJhbnNwb3NlIikpCistICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9zY2FsYXIoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCistICAgICAgICAg ICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdKV0sCistICAgICAgICAgICAg W10sCistICAgICAgICApCistCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAg ICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlki LCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2Ui KSkKKy0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3BhcnRpYWwoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBb KCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIFttYWtl X25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKKy0gICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlVOREVGSU5F RCwgKDMsICJhIiwgImIiKSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAyLCA0KSldLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIlRyYW5zcG9zZSIpKQorLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfcHJlZXhpc3Rp bmdfaW5jb3JyZWN0X3NoYXBlKHNlbGYsICpfKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwg KDIsIDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0s IFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICg1LCA1LCA1KSldLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNl RXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQorLSAgICBkZWYgdGVzdF90cmFuc3Bv c2VfcHJlZXhpc3RpbmdfaW5jb3JyZWN0X3R5cGUoc2VsZiwgKl8pIC0+IE5vbmU6CistICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygiWCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFuc3Bv c2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCistICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgzLCAyLCA0KSldLAor LSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVu Y2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQorLSAgICBkZWYg dGVzdF90cmFuc3Bvc2VfaW5jb3JyZWN0X3JlcGVhdGVkX3Blcm0oc2VsZiwgKl8pIC0+IE5vbmU6 CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygiWCIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDFdKV0sCistICAgICAgICAg ICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBl X2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQorLQorICAg ICBkZWYgX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24oCisgICAgICAgICBzZWxmLCB2 ZXJzaW9uLCBzaGFwZTE6IFNlcXVlbmNlW2ludF0sIHNoYXBlMjogU2VxdWVuY2VbaW50XQorICAg ICApIC0+IE5vbmU6CitAQCAtMzQyLDIxICsyNjEsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVu Y2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCisgICAgICAgICAp CisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJNYXRNdWwi KSkKKy0gICAgZGVmIHRlc3RfbWF0bXVsX2FsbF9kaW1zX2tub3duKHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6CistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3du KHZlcnNpb24sICgyLCksICgyLCkpCistCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0 X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg0LCAyKSwgKDIsIDQpKQorLSAgICAgICAgc2VsZi5f bWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMiksICgyLCA0KSkK Ky0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwg KDUsIDIpLCAoMiwgMSkpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1z X2tub3duKHZlcnNpb24sICgxLCAyKSwgKDIsIDMpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRt dWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoMiwpLCAoMiwgMykpCistICAgICAgICBz ZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg0LCAyKSwgKDIs KSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lv biwgKDEsIDQsIDIpLCAoMywgMiwgMykpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0 X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgzLCA0LCAyKSwgKDMsIDIsIDMpKQorLSAgICAgICAg c2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMSwgNCwg MiksICgxLCAzLCAyLCAzKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2Rp bXNfa25vd24odmVyc2lvbiwgKDQsIDIpLCAoMywgMiwgMykpCistCisgICAgIGRlZiBfbWFrZV9t YXRtdWxfdGVzdF9hbGxvd191bmtub3duKAorICAgICAgICAgc2VsZiwgdmVyc2lvbiwgc2hhcGUx OiBBbnksIHNoYXBlMjogQW55LCBleHBlY3RlZF9vdXRfc2hhcGU6IEFueQorICAgICApIC0+IE5v bmU6CitAQCAtMzY3LDEzMTggKzI3MSwzOSBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVz dFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICkKKyAgICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCBleHBlY3RlZF9vdXRfc2hhcGUp XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJNYXRNdWwiKSkKKy0gICAgZGVmIHRlc3RfbWF0bXVsX2Fs bG93X3Vua25vd24oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuX21h a2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoTm9uZSwpLCAoTm9uZSwpLCAo KSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9u LCAoMywpLCAoTm9uZSwpLCAoKSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxs b3dfdW5rbm93bih2ZXJzaW9uLCAoMiwpLCAoMiwgImEiKSwgKCJhIiwpKQorLSAgICAgICAgc2Vs Zi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCAyKSwgKDIsICJh IiksICg0LCAiYSIpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtu b3duKHZlcnNpb24sICg0LCBOb25lKSwgKDIsICJhIiksICg0LCAiYSIpKQorLSAgICAgICAgc2Vs Zi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCBOb25lKSwgKE5v bmUsICJhIiksICg0LCAiYSIpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxv d191bmtub3duKAorLSAgICAgICAgICAgIHZlcnNpb24sICgxLCA0LCAyKSwgKCJhIiwgMiwgNSks ICgiYSIsIDQsIDUpCistICAgICAgICApCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0 X2FsbG93X3Vua25vd24oCistICAgICAgICAgICAgdmVyc2lvbiwgKDEsIDMsIDQsIDIpLCAoImEi LCAyLCA1KSwgKDEsIDMsIDQsIDUpCistICAgICAgICApCistICAgICAgICBzZWxmLl9tYWtlX21h dG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDMsKSwgTm9uZSwgTm9uZSkKKy0gICAg ICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCBOb25lLCBO b25lLCBOb25lKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiQ2FzdCIpKQorLSAgICBkZWYgdGVzdF9jYXN0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5VSU5UOCldLAorLSAgICAgICAg ICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAg ICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAg ICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNh c3QiKSkKKy0gICAgQHVuaXR0ZXN0LnNraXAoCistICAgICAgICAiSXNzdWUgIzU5NjAiCistICAg ICkgICMgRklYTUUoIzU5NjApIHByb3BhZ2F0ZUVsZW1UeXBlRnJvbUF0dHJpYnV0ZVRvT3V0cHV0 IGRvZXMgbm90IHZhbGlkYXRlIGFnYWluc3Qgb3V0cHV0IHR5cGUgY29uc3RyYWludHMKKy0gICAg ZGVmIHRlc3RfY2FzdF90b19jb21wbGV4KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6ICAjIG5v cWE6IEFSRzAwMgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAg W21ha2Vfbm9kZSgiQ2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8uQ09NUExFWDEy OCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLQorLSAgICAgICAgc2VsZi5hc3Nl cnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVy cmVkLCBncmFwaCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkNhc3RMaWtlIikpCistICAgIGRlZiB0ZXN0X2Nhc3RfbGlrZShzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKSwgKCJ0IiwgVGVuc29yUHJv dG8uRkxPQVQxNiwgKCJOIiwpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ2FzdExpa2Ui LCBbIngiLCAidCJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQxNiwg KDIsIDQsIDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQorLSAgICBkZWYgdGVz dF9iaXRjYXN0X3NhbWVfc2l6ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAg IyBUZXN0IGJpdGNhc3QgYmV0d2VlbiB0eXBlcyBvZiBzYW1lIHNpemUgKGZsb2F0MzIgLT4gaW50 MzIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJCaXRDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5JTlQzMildLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK Ky0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkJpdENhc3QiKSkKKy0gICAgZGVmIHRlc3RfYml0Y2FzdF9zY2FsYXIoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKKy0gICAgICAgICMgVGVzdCBiaXRjYXN0IHdpdGggc2NhbGFyIGlucHV0 IChzYW1lIHNpemUpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAg ICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAorLSAgICAgICAgICAgIFttYWtl X25vZGUoIkJpdENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLklOVDMyKV0sCist ICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKCkpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJC aXRDYXN0IikpCistICAgIGRlZiB0ZXN0X2JpdGNhc3RfMWQoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKKy0gICAgICAgICMgVGVzdCBiaXRjYXN0IHdpdGggMUQgdGVuc29yIChmbG9hdDMyIC0+ IHVpbnQzMiwgc2FtZSBzaXplKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor LSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSldLAorLSAgICAgICAg ICAgIFttYWtlX25vZGUoIkJpdENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLlVJ TlQzMildLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDMyLCAoOCwpKV0sCistICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiQml0Q2FzdCIpKQorLSAgICBkZWYgdGVzdF9iaXRjYXN0X2RvdWJsZV90b19p bnQ2NChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgIyBUZXN0IGJpdGNhc3Qg YmV0d2VlbiA2NC1iaXQgdHlwZXMgKGRvdWJsZSAtPiBpbnQ2NCkKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRE9VQkxF LCAoMywgNSkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJCaXRDYXN0IiwgWyJ4Il0sIFsi eSJdLCB0bz1UZW5zb3JQcm90by5JTlQ2NCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAg KQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U NjQsICgzLCA1KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkJpdENhc3QiKSkKKy0gICAgZGVmIHRl c3RfYml0Y2FzdF9pbnQ4X3RvX3VpbnQ4KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAg ICAgICAjIFRlc3QgYml0Y2FzdCBiZXR3ZWVuIDgtYml0IHR5cGVzIChpbnQ4IC0+IHVpbnQ4KQor LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBU ZW5zb3JQcm90by5JTlQ4LCAoNCwgNikpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJCaXRD YXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5VSU5UOCldLAorLSAgICAgICAgICAg IFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uVUlOVDgsICg0LCA2KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkJpdENhc3Qi KSkKKy0gICAgZGVmIHRlc3RfYml0Y2FzdF9mbG9hdDE2X3RvX2ludDE2KHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6CistICAgICAgICAjIFRlc3QgYml0Y2FzdCBiZXR3ZWVuIDE2LWJpdCB0eXBl cyAoZmxvYXQxNiAtPiBpbnQxNikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQxNiwgKDIsIDMpKV0sCistICAg ICAgICAgICAgW21ha2Vfbm9kZSgiQml0Q2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJv dG8uSU5UMTYpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDE2LCAoMiwgMykpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJDb2wySW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJvdG8uRkxP QVQsICgxLCA1LCA1KSksCistICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29y UHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJ bSIsIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLCBbIm91dHB1dCJd CistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAor LSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Io Im91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNSwgNSkpLAorLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgyLCksICgxLCA1KSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAx LCA1LCA1KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQorLSAgICBkZWYgdGVzdF9j b2wyaW1fc3RyaWRlcyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJp bnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgOSwgNCkpLAorLSAgICAgICAgICAgICAgICAo Im91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICAg ICAgKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAg ICAgICAgICAgICAgICAgICJDb2wySW0iLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIs ICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0sCistICAgICAgICAgICAgICAgICAgICBb Im91dHB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz1bMiwgMl0sCistICAgICAg ICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAg ICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1dF9z aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNSwgNSkpLAorLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgz LCAzKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxLCA1LCA1KSld LAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQorLSAgICBkZWYgdGVzdF9jb2wyaW1fcGFk cyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNv clByb3RvLkZMT0FULCAoMSwgNSwgMTUpKSwKKy0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgICAgICgia2VybmVs X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAg ICAgICAiQ29sMkltIiwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAib3V0cHV0X3No YXBlIiwgImtlcm5lbF9zaGFwZSJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwK Ky0gICAgICAgICAgICAgICAgICAgIHBhZHM9WzAsIDEsIDAsIDFdLAorLSAgICAgICAgICAgICAg ICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0 aWFsaXplcj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDUsIDUpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90 ZW5zb3IoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMSwgNSkpLAor LSAgICAgICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNSwgNSkpXSwKKy0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJDb2wySW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltX2RpbGF0aW9ucyhz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMSwgNCwgNSkpLAorLSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICAgICAgKCJrZXJuZWxfc2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAg ICJDb2wySW0iLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIsICJvdXRwdXRfc2hhcGUi LCAia2VybmVsX3NoYXBlIl0sCistICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAorLSAg ICAgICAgICAgICAgICAgICAgZGlsYXRpb25zPVsxLCA1XSwKKy0gICAgICAgICAgICAgICAgKQor LSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6 ZXI9WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3NoYXBlIiwgVGVuc29y UHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y KCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDIsIDIpKSwKKy0gICAg ICAgICAgICBdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAor LSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEsIDYsIDYpKV0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiQ29sMkltIikpCistICAgIGRlZiB0ZXN0X2NvbDJpbV81ZChzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAo MSwgMTAsIDEyKSksCistICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJv dG8uSU5UNjQsICgzLCkpLAorLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMywpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJbSIs IFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLCBbIm91dHB1dCJdCist ICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91 dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMywgNCwgNSkpLAorLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgzLCksICgxLCAxLCA1KSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgx LCAyLCAzLCA0LCA1KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIpKQorLSAgICBkZWYg dGVzdF9jb25jYXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgyLCA0LCAzKSksICgieSIsIFRlbnNvclByb3RvLkZMT0FULCAoNywgNCwgMykpXSwKKy0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngiLCAieSJdLCBbInoiXSwgYXhpcz0wKV0s CistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKDksIDQsIDMpKV0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiQ29uY2F0IikpCistICAgIGRlZiB0ZXN0X2NvbmNhdF9taXNzaW5nX3NoYXBlKHNl bGYsICpfKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgy LCA0LCAzKSksCistICAgICAgICAgICAgICAgICJ5IiwKKy0gICAgICAgICAgICAgICAgKCJ6Iiwg VGVuc29yUHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lKSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngiLCAieSIsICJ6Il0sIFsib3V0 Il0sIGF4aXM9MCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2Vs Zi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYu X2luZmVycmVkLCBncmFwaCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIkNvbmNhdCIpKQorLSAgICBkZWYgdGVzdF9jb25jYXRfM2RfYXhpc18yKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMiwgMikpLCAoInki LCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDIsIDIpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9k ZSgiQ29uY2F0IiwgWyJ4IiwgInkiXSwgWyJ6Il0sIGF4aXM9MildLAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVu c29yUHJvdG8uRkxPQVQsICgyLCAyLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIp KQorLSAgICBkZWYgdGVzdF9jb25jYXRfcGFyYW0oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgiYSIsIDIpKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgi YSIsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4IiwgInkiXSwg WyJ6Il0sIGF4aXM9MSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiYSIsIDUp KV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0IikpCistICAgIGRlZiB0ZXN0X2NvbmNhdF9w YXJhbV9zaW5nbGVfaW5wdXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u RkxPQVQsICgiYSIsIDIpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4 Il0sIFsieiJdLCBheGlzPTApXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoImEi LCAyKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVz aGFwZV9keW5hbWljX3NoYXBlX2tub3duX3Jhbmsoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNCwgIlJhbmsgaW5mZXJlbmNlIGlzIGFk ZGVkIGZyb20gVmVyc2lvbiAxNCIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo CistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNo YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5VSU5UOCwgKE5vbmUsIE5vbmUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQor LQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIp KQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX2R5bmFtaWNfc2hhcGVfc3ltYm9saWMoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKCJNIiwpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgi UmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uVUlOVDgsIE5vbmUpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRl ZiB0ZXN0X3Jlc2hhcGVfZHluYW1pY191bmtub3duX3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAg WygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29yUHJv dG8uSU5UNjQsIE5vbmUpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4 IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgTm9u ZSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05O WF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaGFw ZV9zdGF0aWNfc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlO VDgsICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAorLSAg ICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwK Ky0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3Io InNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgzLCA4KSldLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgs ICgzLCA4KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rf cmVzaGFwZV9zdGF0aWNfc2hhcGVfaW5mZXJyZWQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDMsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hh cGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXpl cj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgwLCAzLCAt MSkpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAg ICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNo YXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlX3plcm8oc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgxLCAxLCAxKSksICgic2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJl c2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAg ICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgzLCksICgwLCAxLCAxKSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgxLCAxLCAxKSldLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hh cGVfYWxsb3d6ZXJvKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNr aXBJZih2ZXJzaW9uIDwgMTQsICJhbGxvd3plcm8gaXMgYWRkZWQgZnJvbSBWZXJzaW9uIDE0IikK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMSwgMCwgMCkpLAorLSAgICAg ICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpLAorLSAgICAgICAg ICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJd LCBbInkiXSwgYWxsb3d6ZXJvPTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBp bml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCks ICgwLCAxLCAxKSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgwLCAxLCAxKSldLAorLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK Ky0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hhcGVfY29uc3Rh bnQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAz KSldLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAg ICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9 bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgzLCA4KSksCist ICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiUmVzaGFwZSIs IFsieCIsICJzaGFwZSJdLCBbInkiXSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb XSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAg ICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgz LCA4KSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCist ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJVcHNhbXBsZSIpKQor LSAgICBkZWYgdGVzdF91cHNhbXBsZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAg ICAgaWYgdmVyc2lvbiA9PSA3OgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywg NSkpXSwKKy0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiXSwgWyJ5 Il0sIHNjYWxlcz1bMS4wLCAxLjEsIDEuMywgMS45XSldLAorLSAgICAgICAgICAgICAgICBbXSwK Ky0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAg ICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICAgICApCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAg ICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAg ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBb IngiLCAic2NhbGVzIl0sIFsieSJdKV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAg ICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigi c2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCksICgxLjAsIDEuMSwgMS4zLCAxLjkpKQor LSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICkKKy0KKy0gICAgICAgICAgICBkZWYg Y2FsbF9pbmZlcmVuY2UoKToKKy0gICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkp XSwKKy0gICAgICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICAgICAgICAgKQorLQorLSAgICAg ICAgICAgIGlmIHZlcnNpb24gPT0gOToKKy0gICAgICAgICAgICAgICAgY2FsbF9pbmZlcmVuY2Uo KQorLSAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgICMgVXBzYW1wbGUgaXMgZGVw cmVjYXRlZCBzaW5jZSBWZXJzaW9uIDEwLgorLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNz ZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgorLSAgICAgICAg ICAgICAgICAgICAgY2FsbF9pbmZlcmVuY2UoKQorLSAgICAgICAgICAgICAgICBleGNlcHRpb24g PSBjbS5leGNlcHRpb24KKy0gICAgICAgICAgICAgICAgYXNzZXJ0ICJVcHNhbXBsZSBpcyBkZXBy ZWNhdGVkIiBpbiBzdHIoZXhjZXB0aW9uKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiVXBzYW1wbGUiKSkKKy0gICAgZGVmIHRlc3RfdXBzYW1wbGVfcmF3 X2RhdGEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGlmIHZlcnNpb24gPT0g NzoKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDMsIDQsIDUpKV0sCistICAgICAgICAg ICAgICAgIFttYWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4Il0sIFsieSJdLCBzY2FsZXM9WzIuMCwg MS4xLCAyLjMsIDEuOV0pXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgKQor LSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uSU5UMzIsICgyLCAzLCA5LCA5KSldLAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAg ICAgICAgKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJz Y2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4IiwgInNjYWxlcyJdLCBb InkiXSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgaW5pdGlhbGl6 ZXI9WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAg ICAgICAgICAgInNjYWxlcyIsCistICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8u RkxPQVQsCistICAgICAgICAgICAgICAgICAgICAgICAgKDQsKSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICB2YWxzPW5wLmFycmF5KFsxLjAsIDEuMSwgMS4zLCAxLjldLCBkdHlwZT0iPGY0Iiku dG9ieXRlcygpLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAg ICAgICAgICAgICAgKQorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICkgICMgRmVl ZCByYXcgYnl0ZXMgKGZvcmNlIGxpdHRsZSBlbmRpYW4gb3JkZXJpbmcgbGlrZSBvbm54IHN0YW5k YXJkKSBmb3IgdGVzdCBwdXJwb3NlCistCistICAgICAgICAgICAgZGVmIGNhbGxfaW5mZXJlbmNl KCk6CistICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAg ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICAgICAgICAgICkKKy0KKy0gICAgICAgICAgICBpZiB2ZXJz aW9uID09IDk6CistICAgICAgICAgICAgICAgIGNhbGxfaW5mZXJlbmNlKCkKKy0gICAgICAgICAg ICBlbHNlOgorLSAgICAgICAgICAgICAgICAjIFVwc2FtcGxlIGlzIGRlcHJlY2F0ZWQgc2luY2Ug VmVyc2lvbiAxMC4KKy0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54 LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBjbToKKy0gICAgICAgICAgICAgICAgICAgIGNh bGxfaW5mZXJlbmNlKCkKKy0gICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9u CistICAgICAgICAgICAgICAgIGFzc2VydCAiVXBzYW1wbGUgaXMgZGVwcmVjYXRlZCIgaW4gc3Ry KGV4Y2VwdGlvbikKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkV4cGFuZCIpKQorLSAgICBkZWYgdGVzdF9leHBhbmQoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBb KCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCAxKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDMsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJz aGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxp emVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDIsIDEs IDYpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAg ICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDMsIDYpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAg ICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiRXhw YW5kIikpCistICAgIGRlZiB0ZXN0X2V4cGFuZF9zY2FsYXJfaW5wdXQoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgpKSwgKCJzaGFwZSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMiwpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4Iiwg InNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlh bGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNCwg OCkpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDMyLCAoNCwgOCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAp CistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQi KSkKKy0gICAgZGVmIHRlc3RfZXhwYW5kX3Jhd19kYXRhKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgMSkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hh cGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXpl cj1bCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAg InNoYXBlIiwKKy0gICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDY0LAorLSAgICAg ICAgICAgICAgICAgICAgKDIsKSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJyYXko WzMsIDRdLCBkdHlwZT0iPGk4IikudG9ieXRlcygpLAorLSAgICAgICAgICAgICAgICAgICAgcmF3 PVRydWUsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKSAg IyBGZWVkIHJhdyBieXRlcyAoZm9yY2UgbGl0dGxlIGVuZGlhbiBvcmRlcmluZyBsaWtlIG9ubngg c3RhbmRhcmQpIGZvciB0ZXN0IHB1cnBvc2UKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNCkpXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJFeHBhbmQiKSkKKy0gICAgZGVmIHRlc3RfZXhwYW5kX2R5bmFtaWNfc2hhcGUoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAo MSwgMiwgTm9uZSkpLAorLSAgICAgICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgzLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhw YW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAg ICAgICAgaW5pdGlhbGl6ZXI9W10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKE5vbmUsIDIsIE5vbmUpKV0sCist ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCistICAgIGRlZiB0ZXN0X2V4cGFuZF9zeW1ib2xp Y19zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgxLCAyLCBOb25lKSksCistICAgICAgICAgICAgICAgICgic2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKCJ1bmtfXzAiLCkpLAorLSAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCist ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W10sCistICAgICAgICAp CistICAgICAgICAjIGlmIGdpdmluZyBhIHN5bWJvbGljIHNoYXBlLCBFeHBhbmQgc2hvdWxkIG5v dCBpbmZlciBhbnkgc2hhcGUgb3IgcmFuayBpbmZlcmVuY2UKKy0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCBOb25lKV0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplKHNlbGYsIF8sIHZl cnNpb24pIC0+IE5vbmU6CistICAgICAgICBpZiB2ZXJzaW9uID09IDEwOgorLSAgICAgICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAg ICAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0g ICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwg WyJ4IiwgInNjYWxlcyJdLCBbInkiXSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAg ICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Io InNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpLCAoMS4wLCAxLjEsIDEuMywgMS45KSkK Ky0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQs IDMsIDkpKV0sCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCistICAgICAgICBl bGlmIHZlcnNpb24gPT0gMTE6CistICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicm9pIiwg VGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJzY2FsZXMi LCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgICAgICAoInNpemVz IiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCkpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAg ICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyIsICJz aXplcyJdLCBbInkiXSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAg aW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNpemVzIiwg VGVuc29yUHJvdG8uSU5UNjQsICg0LCksICgzLCA1LCA2LCA3KSkKKy0gICAgICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAor LSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDUsIDYsIDcpKV0sCistICAgICAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAg ICAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAg ICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSksCistICAg ICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsi eCIsICJyb2kiLCAiIiwgInNpemVzIl0sIFsieSJdKV0sCistICAgICAgICAgICAgICAgIFtdLAor LSAgICAgICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSwgKDMsIDUsIDYsIDcpKQor LSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNSwg NiwgNykpXSwKKy0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgICAgICkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJNU05vcm1hbGl6YXRpb24iKSkK Ky0gICAgZGVmIHRlc3Rfcm1zX25vcm1hbGl6YXRpb24oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCist ICAgICAgICAgICAgICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoIk4iLCAiQyIsICJIIiwg IlciKSksCistICAgICAgICAgICAgICAgICgic2NhbGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJI IiwgIlciKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSTVNO b3JtYWxpemF0aW9uIiwgWyJYIiwgInNjYWxlIl0sIFsieSJdLCBheGlzPTIpXSwKKy0gICAgICAg ICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0g ICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLkZMT0FULCAoIk4iLCAiQyIsICJIIiwgIlciKSldLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVzXzJfMyhz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8 IDE4LCAiYXhlcyBpcyBmcm9tIFZlcnNpb24gMTgiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29y UHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVu c29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29y UHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vf bm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwgWyJ5Il0sIGF4ZXM9KDIs IDMpKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2Vf dGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNykpXSwKKy0gICAg ICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LklOVDMyLCAoMiwgNCwgNiwgNykpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCist ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0g ICAgZGVmIHRlc3RfcmVzaXplX3NpemVfYXhlc18zXzIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBWZXJz aW9uIDE4IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywg NSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwK Ky0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0g ICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJy b2kiLCAiIiwgInNpemVzIl0sIFsieSJdLCBheGVzPSgzLCAyKSldLAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDIsKSwgKDYsIDcpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDcsIDYpKV0s CistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXpl X25vdF9sYXJnZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tp cElmKAorLSAgICAgICAgICAgIHZlcnNpb24gPCAxOCwKKy0gICAgICAgICAgICAia2VlcF9hc3Bl Y3RfcmF0aW9fcG9saWN5IGlzIGZyb20gVmVyc2lvbiAxOCIsCistICAgICAgICApCistICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDUpKSwKKy0gICAgICAgICAgICAgICAg KCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgICgic2l6 ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAg ICJSZXNpemUiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMi XSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAga2Vl cF9hc3BlY3RfcmF0aW9fcG9saWN5PSJub3RfbGFyZ2VyIiwKKy0gICAgICAgICAgICAgICAgKQor LSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6 ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNikp XSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAg ICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLklOVDMyLCAoNCwgNikpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkK Ky0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfYXhlc18yXzNfbm90X2xhcmdlcihzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCistICAgICAgICAgICAgdmVy c2lvbiA8IDE4LAorLSAgICAgICAgICAgICJheGVzICYga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5 IGFyZSBmcm9tIFZlcnNpb24gMTgiLAorLSAgICAgICAgKQorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwg VGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiUmVzaXpl IiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sCistICAg ICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGF4ZXM9KDIsIDMp LAorLSAgICAgICAgICAgICAgICAgICAga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5PSJub3RfbGFy Z2VyIiwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg W10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNv clByb3RvLklOVDY0LCAoMiwpLCAoNiwgNikpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgNCwgNikp XSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3Np emVfbm90X3NtYWxsZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYu c2tpcElmKAorLSAgICAgICAgICAgIHZlcnNpb24gPCAxOCwKKy0gICAgICAgICAgICAia2VlcF9h c3BlY3RfcmF0aW9fcG9saWN5IGlzIGZyb20gVmVyc2lvbiAxOCIsCistICAgICAgICApCistICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDUpKSwKKy0gICAgICAgICAgICAg ICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgICgi c2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAg ICAgICJSZXNpemUiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAic2l6 ZXMiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAg a2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5PSJub3Rfc21hbGxlciIsCistICAgICAgICAgICAgICAg ICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRp YWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYs IDYpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAg ICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5JTlQzMiwgKDYsIDEwKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAg ICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6 ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVzXzJfM19ub3Rfc21hbGxlcihzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCistICAgICAgICAg ICAgdmVyc2lvbiA8IDE4LAorLSAgICAgICAgICAgICJheGVzICYga2VlcF9hc3BlY3RfcmF0aW9f cG9saWN5IGFyZSBmcm9tIFZlcnNpb24gMTgiLAorLSAgICAgICAgKQorLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4 IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICgi cm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVz IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAi UmVzaXplIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0s CistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGF4ZXM9 KDIsIDMpLAorLSAgICAgICAgICAgICAgICAgICAga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5PSJu b3Rfc21hbGxlciIsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAg ICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDYpKV0sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQs IDYsIDEwKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9y ZXNpemVfc2NhbGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tp cElmKHZlcnNpb24gPCAxMSwgInJvaSBpbnB1dCBpcyBmcm9tIFZlcnNpb24gMTEiKQorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAg ICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAgICAg ICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICBdLAor LSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIl0s IFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9Wwor LSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg0LCksICgxLjAsIDEuMSwgMS4zLCAxLjkpKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAp CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQz MiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1h a2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRl ZiB0ZXN0X3Jlc2l6ZV9zY2FsZV9heGVzXzJfMyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgor LSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE4LCAiYXhlcyBpcyBmcm9tIFZlcnNpb24g MTgiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSks CistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAorLSAg ICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpKSwKKy0gICAg ICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2ki LCAic2NhbGVzIl0sIFsieSJdLCBheGVzPSgyLCAzKSldLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCksICgxLjMsIDEuOSkpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwK Ky0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NjYWxl X2F4ZXNfM18yKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJ Zih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZyb20gVmVyc2lvbiAxOCIpCistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAo IngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAg KCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCistICAgICAgICAgICAgICAgICgic2Nh bGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5Il0s IGF4ZXM9KDMsIDIpKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6 ZXI9W21ha2VfdGVuc29yKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSwgKDEuOSwg MS4zKSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAg ICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0g ICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2NhbGVfcmF3X2RhdGEoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxMSwgInJv aSBpbnB1dCBpcyBmcm9tIFZlcnNpb24gMTEiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJv dG8uSU5UMzIsICgxLCAzLCA0LCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29y UHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclBy b3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25v ZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIl0sIFsieSJdKV0sCistICAgICAgICAg ICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICJzY2FsZXMiLAorLSAgICAgICAgICAgICAg ICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgICAgICAgICAoNCwpLAorLSAg ICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShbMi4wLCAxLjEsIDIuMywgMS45XSwgZHR5 cGU9IjxmNCIpLnRvYnl0ZXMoKSwKKy0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAg ICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgMywgOSwg OSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXpl X3NjYWxlX2FuZF9zaXplX2J1dF9vbmVfaXNfZW1wdHkoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxMSwgInJvaSBpbnB1dCBpcyBmcm9t IFZlcnNpb24gMTEiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgxLCAz LCA0LCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4 LCkpLAorLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwp KSwKKy0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMCwpKSwK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIs ICJyb2kiLCAic2NhbGVzIiwgInNpemVzIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCist ICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigK Ky0gICAgICAgICAgICAgICAgICAgICJzY2FsZXMiLAorLSAgICAgICAgICAgICAgICAgICAgVGVu c29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgICAgICAgICAoNCwpLAorLSAgICAgICAgICAg ICAgICAgICAgdmFscz1ucC5hcnJheShbMi4wLCAxLjEsIDIuMywgMS45XSwgZHR5cGU9IjxmNCIp LnRvYnl0ZXMoKSwKKy0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAg ICAgICJzaXplcyIsCistICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKKy0g ICAgICAgICAgICAgICAgICAgICgwLCksCistICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFy cmF5KFtdLCBkdHlwZT0iPGk4IikudG9ieXRlcygpLAorLSAgICAgICAgICAgICAgICAgICAgcmF3 PVRydWUsCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMy LCAoMiwgMywgOSwgOSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVm IHRlc3RfcmVzaXplX29wc2V0MTFfc2NhbGVzX2lzX2VtcHR5KHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uICE9IDExLCAiVGhpcyB0ZXN0IG9u bHkgd29ya3MgZm9yIFZlcnNpb24gMTEiKQorLSAgICAgICAgIyAic2NhbGVzIiBpbnB1dCBpbiBS ZXNpemUgaW4gb3BzZXQxMSBpcyBub3Qgb3B0aW9uYWwuIEl0IG11c3QgYmUgYW4gZW1wdHkgdGVu c29yCistICAgICAgICAjIGlmIHNpemVzIGlzIG5lZWRlZC4gU2hhcGUgaW5mZXJlbmNlIGZvciBS ZXNpemUgc2hhbGwgaGFuZGxlIHRoaXMgY2FzZS4KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclBy b3RvLklOVDMyLCAoMSwgMywgNCwgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNv clByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDAsKSksCistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKDQsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyIsICJzaXplcyJdLCBbInkiXSldLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAic2l6ZXMiLAorLSAgICAgICAg ICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCistICAgICAgICAgICAgICAgICAgICAoNCwp LAorLSAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheSgKKy0gICAgICAgICAgICAgICAg ICAgICAgICBbMiwgNiwgOCwgMTBdLCBkdHlwZT0iPGk4IgorLSAgICAgICAgICAgICAgICAgICAg KS50b2J5dGVzKCksICAjIGRvdWJsZSBpbiBhbGwgZGltZW5zaW9ucworLSAgICAgICAgICAgICAg ICAgICAgcmF3PVRydWUsCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgXSwKKy0g ICAgICAgICkKKy0KKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLklOVDMyLCAoMiwgNiwgOCwgMTApKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZCgiIiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKKy0gICAg ZGVmIHRlc3Rfc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxP QVQsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0s IFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIlNoYXBlIikpCistICAgIGRlZiB0ZXN0X3NoYXBlX3N0YXJ0XzEoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwg InN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCistICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAo MiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInki XSwgc3RhcnQ9MSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFwZV9lbmRfMShzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE1 LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0sIFsi eSJdLCBlbmQ9MSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCkpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFwZV9uZWdhdGl2ZV9z dGFydChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVy c2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJv dG8uRkxPQVQsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwg WyJ4Il0sIFsieSJdLCBzdGFydD0tMSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQs ICgxLCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFw ZV9jbGlwMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYo dmVyc2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKKy0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBl IiwgWyJ4Il0sIFsieSJdLCBzdGFydD0tNSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAg KQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U NjQsICgzLCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0 ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9z aGFwZV9jbGlwMihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lw SWYodmVyc2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKKy0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNo YXBlIiwgWyJ4Il0sIFsieSJdLCBlbmQ9MTApXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwK Ky0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklO VDY0LCAoMywpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2l6ZSIpKQorLSAgICBkZWYgdGVzdF9z aXplKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwg MykpXSwgW21ha2Vfbm9kZSgiU2l6ZSIsIFsieCJdLCBbInkiXSldLCBbXQorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQs ICgpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyIikpCistICAgIGRlZiB0ZXN0X2dhdGhl cihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDMpKSwg KCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJHYXRoZXIiLCBbIngiLCAiaSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBo LAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlciIpKQorLSAgICBkZWYg dGVzdF9nYXRoZXJfYXhpczEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u RkxPQVQsICg0LCAzLCA1KSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpXSwKKy0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJHYXRoZXIiLCBbIngiLCAiaSJdLCBbInkiXSwgYXhpcz0x KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDEsIDIsIDUpKV0sCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiR2F0aGVyIikpCistICAgIGRlZiB0ZXN0X2dhdGhlcl9pbnRvX3NjYWxh cihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsKSksICgi aSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdh dGhlciIsIFsieCIsICJpIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAp CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9B VCwgKCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJHYXRoZXJFbGVtZW50cyIpKQorLSAgICBkZWYg dGVzdF9nYXRoZXJfZWxlbWVudHMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJv dG8uRkxPQVQsICgyLCAyKSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMikpXSwKKy0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJHYXRoZXJFbGVtZW50cyIsIFsieCIsICJpIl0sIFsieSJd LCBheGlzPTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMikpXSwKKy0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJHYXRoZXJFbGVtZW50cyIpKQorLSAgICBkZWYgdGVzdF9nYXRoZXJf ZWxlbWVudHNfYXhpczAoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxP QVQsICgzLCAzKSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpXSwKKy0gICAgICAg ICAgICBbbWFrZV9ub2RlKCJHYXRoZXJFbGVtZW50cyIsIFsieCIsICJpIl0sIFsieSJdLCBheGlz PTApXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJTY2F0dGVyIikpCistICAgIGRlZiB0ZXN0X3NjYXR0ZXIoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKKy0gICAgICAgIGlmIHZlcnNpb24gPj0gMTE6CistICAgICAgICAgICAg IyBTY2F0dGVyIGlzIGRlcHJlY2F0ZWQgaW4gZG9tYWluX3ZlcnNpb24gb2YgMTEuCistICAgICAg ICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9y KSBhcyBjbToKKy0gICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9zY2F0dGVyKHZlcnNpb24pCist ICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCistICAgICAgICAgICAgYXNzZXJ0 ICJTY2F0dGVyIGlzIGRlcHJlY2F0ZWQiIGluIHN0cihleGNlcHRpb24pCistICAgICAgICBlbHNl OgorLSAgICAgICAgICAgIHNlbGYuX3Rlc3Rfc2NhdHRlcih2ZXJzaW9uKQorLQorLSAgICBkZWYg X3Rlc3Rfc2NhdHRlcihzZWxmLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgzLCAzKSksCistICAgICAgICAgICAgICAgICgiaSIsIFRlbnNv clByb3RvLklOVDY0LCAoMiwgMykpLAorLSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDIsIDMpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25v ZGUoIlNjYXR0ZXIiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJdKV0sCistICAgICAgICAgICAgW10s CistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5GTE9BVCwgKDMsIDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQor LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlciIpKQor LSAgICBkZWYgdGVzdF9zY2F0dGVyX2F4aXMxKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBpZiB2ZXJzaW9uID49IDExOgorLSAgICAgICAgICAgICMgU2NhdHRlciBpcyBkZXBy ZWNhdGVkIGluIGRvbWFpbl92ZXJzaW9uIG9mIDExLgorLSAgICAgICAgICAgIHdpdGggc2VsZi5h c3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206CistICAgICAg ICAgICAgICAgIHNlbGYuX3Rlc3Rfc2NhdHRlcl9heGlzMSh2ZXJzaW9uKQorLSAgICAgICAgICAg IGV4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgorLSAgICAgICAgICAgIGFzc2VydCAiU2NhdHRlciBp cyBkZXByZWNhdGVkIiBpbiBzdHIoZXhjZXB0aW9uKQorLSAgICAgICAgZWxzZToKKy0gICAgICAg ICAgICBzZWxmLl90ZXN0X3NjYXR0ZXJfYXhpczEodmVyc2lvbikKKy0KKy0gICAgZGVmIF90ZXN0 X3NjYXR0ZXJfYXhpczEoc2VsZiwgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIs IFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpLAorLSAgICAgICAgICAgICAgICAoImkiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDEsIDIpKSwKKy0gICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxLCAyKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJTY2F0dGVyIiwgWyJ4IiwgImkiLCAidSJdLCBbInkiXSwgYXhpcz0xKV0sCistICAgICAg ICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAg ICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2Nh dHRlckVsZW1lbnRzIikpCistICAgIGRlZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHMoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAo MywgMykpLAorLSAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMp KSwKKy0gICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSksCist ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyRWxlbWVudHMi LCBbIngiLCAiaSIsICJ1Il0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAp CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9B VCwgKDMsIDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlckVsZW1lbnRzIikpCistICAg IGRlZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHNfYXhpczEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCist ICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpLAorLSAgICAg ICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIpKSwKKy0gICAgICAgICAg ICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyKSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyRWxlbWVudHMiLCBbIngiLCAiaSIsICJ1 Il0sIFsieSJdLCBheGlzPTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwg NSkpXSwKKysgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclBy b3RvLkZMT0FULCBleHBlY3RlZF9vdXRfc2hhcGUpXSwKKyAgICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCisgICAgICAg ICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0 dGVyTkQiKSkKKy0gICAgZGVmIHRlc3Rfc2NhdHRlcm5kKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CisrICAgIGRlZiBfdGVzdF9zY2F0dGVyKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6CisgICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCisgICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKSwKKy0gICAgICAgICAg ICAgICAgKCJpbmRpY2VzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCAzLCAyKSksCistICAgICAg ICAgICAgICAgICgidXBkYXRlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMywgNikpLAorKyAg ICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKKysgICAgICAg ICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSksCisrICAgICAgICAgICAg ICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpLAorICAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlck5EIiwgWyJ4IiwgImluZGljZXMiLCAidXBk YXRlcyJdLCBbInkiXSldLAorKyAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXIiLCBbIngi LCAiaSIsICJ1Il0sIFsieSJdKV0sCisgICAgICAgICAgICAgW10sCisgICAgICAgICApCisgICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisgICAgICAgICAgICAgZ3JhcGgsCistICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQs IDUsIDYpKV0sCisrICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5GTE9BVCwgKDMsIDMpKV0sCisgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorICAgICAgICAgKQorIAor LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlck5EIikp CistICAgIGRlZiB0ZXN0X3NjYXR0ZXJuZF9ub3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICAjIFRoZSBzaGFwZSBvZiAneF9yZXNoYXBlZCcgY2Fubm90IGJlIGluZmVy cmVkLCBzaW5jZSBpdCBpcyB0aGUgb3V0cHV0IG9mIGEgZHluYW1pYyByZXNoYXBlLgorLSAgICAg ICAgIyBUaHVzIHRoZSBzaGFwZSBvZiAneScgaXMgYWxzbyBOb25lLgorKyAgICBkZWYgX3Rlc3Rf c2NhdHRlcl9heGlzMShzZWxmLCB2ZXJzaW9uKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uRkxPQVQsICg0LCA1LCA2KSksCistICAgICAgICAgICAgICAgICgiaW5kaWNl cyIsIFRlbnNvclByb3RvLklOVDY0LCAoMywgMywgMikpLAorLSAgICAgICAgICAgICAgICAoInVw ZGF0ZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMsIDYpKSwKKy0gICAgICAgICAgICAgICAg KCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCkpLAorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlJlc2hhcGUiLCBbIngi LCAic2hhcGUiXSwgWyJ4X3Jlc2hhcGVkIl0pLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUo IlNjYXR0ZXJORCIsIFsieF9yZXNoYXBlZCIsICJpbmRpY2VzIiwgInVwZGF0ZXMiXSwgWyJ5Il0p LAorKyAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKSwKKysg ICAgICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCAyKSksCisrICAgICAg ICAgICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMikpLAorICAgICAgICAgICAg IF0sCisrICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUiXSwg WyJ5Il0sIGF4aXM9MSldLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieF9yZXNoYXBlZCIs IFRlbnNvclByb3RvLkZMT0FULCBOb25lKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKSwKKy0gICAgICAgICAgICBd LAorKyAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u RkxPQVQsICgxLCA1KSldLAorICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKyAgICAgICAgICkKKyAKK0BAIC0xNzA5 LDk1ICszMzQsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNl SGVscGVyKToKKyAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCAyNCldLAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3F1ZWV6ZSIpKQorLSAgICBkZWYgdGVzdF9zcXVlZXpl KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBpZiB2ZXJzaW9uID09IDExOgor LSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAg WygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMywgMSwgMSwgMiwgMSkpXSwKKy0gICAgICAg ICAgICAgICAgW21ha2Vfbm9kZSgiU3F1ZWV6ZSIsICJ4IiwgInkiLCBheGVzPVswLCAyLCAzLCA1 XSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwg KDMsIDIpKV0sCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCistICAgICAgICBl bHNlOgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgx LCAzLCAxLCAxLCAyLCAxKSksCistICAgICAgICAgICAgICAgICAgICAoImF4ZXMiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDQsKSksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAg IFttYWtlX25vZGUoIlNxdWVlemUiLCBbIngiLCAiYXhlcyJdLCAieSIpXSwKKy0gICAgICAgICAg ICAgICAgW10sCistICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yKCJheGVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCksICgwLCAy LCAzLCA1KSkKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICApCistICAgICAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAg ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9B VCwgKDMsIDIpKV0sCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCistCistICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdDb25jYXQiKSkK Ky0gICAgZGVmIHRlc3Rfc3RyaW5nY29uY2F0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSksCistICAgICAg ICAgICAgICAgICgieSIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKSwKKy0gICAgICAg ICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIsIFsieCIsICJ5 Il0sICJ6IildLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpXSwK Ky0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdDb25jYXQiKSkKKy0gICAgZGVmIHRlc3Rfc3RyaW5n Y29uY2F0X2Jyb2FkY2FzdGluZyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAg Z3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpLAorLSAgICAgICAgICAgICAg ICAoInkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgxLCAzLCAxKSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdDb25jYXQiLCBbIngiLCAieSJdLCAieiIp XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKV0sCistICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiUmVnZXhGdWxsTWF0Y2giKSkKKy0gICAgZGVmIHRlc3RfcmVnZXhfZnVsbF9t YXRjaChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCA0 LCAzLCA5KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlZ2V4RnVsbE1hdGNoIiwgWyJ4 Il0sIFsieSJdLCBwYXR0ZXJuPXIiXltBLVpdW2Etel0qJCIpXSwKKy0gICAgICAgICAgICBbXSwK Ky0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAg ICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLkJPT0wsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlZ2V4RnVs bE1hdGNoIikpCistICAgIGRlZiB0ZXN0X3JlZ2V4X2Z1bGxfbWF0Y2hfZW1wdHlfc2hhcGUoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoKSldLAorLSAgICAg ICAgICAgIFttYWtlX25vZGUoIlJlZ2V4RnVsbE1hdGNoIiwgWyJ4Il0sIFsieSJdLCBwYXR0ZXJu PXIiXltBLVpdW2Etel0qJCIpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkJPT0wsICgpKV0s CistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9zcXVlZXplX25v X2F4ZXNfb3BzZXQxMShzZWxmKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorICAgICAgICAgICAgIFsKK0BAIC01NjMyLDIzICs0MTY4LDYgQEAgY2xhc3MgVGVz dFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAgICBzZWxm Ll9tYWtlX21hdG11bGludGVnZXJfdGVzdCgoNSwgMSwgNCwgMiksICgxLCAzLCAyLCAzKSkKKyAg ICAgICAgIHNlbGYuX21ha2VfbWF0bXVsaW50ZWdlcl90ZXN0KCg0LCAyKSwgKDMsIDIsIDMpKQor IAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbb25ueC5UZW5zb3JQcm90 by5GTE9BVCwgb25ueC5UZW5zb3JQcm90by5GTE9BVDE2LCBvbm54LlRlbnNvclByb3RvLkJGTE9B VDE2XQorLSAgICApCistICAgIGRlZiB0ZXN0X3F1YW50aXplbGluZWFyKHNlbGYsIGVsZW1fdHlw ZSkgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIGVsZW1fdHlwZSwgKDMwLCA0LCA1KSksCist ICAgICAgICAgICAgICAgICgieV9zY2FsZSIsIGVsZW1fdHlwZSwgKCkpLAorLSAgICAgICAgICAg ICAgICAoInlfemVyb19wb2ludCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoKSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJRdWFudGl6ZUxpbmVhciIsIFsieCIsICJ5 X3NjYWxlIiwgInlfemVyb19wb2ludCJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMzAs IDQsIDUpKV0KKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3RfcXVhbnRpemVsaW5lYXJfZGVm YXVsdF96cChzZWxmKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAorICAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMwLCA0LCA1KSksICgi eV9zY2FsZSIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAorQEAgLTU3NTQsMjMgKzQyNzMsNiBA QCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAg ICAgICAgICAgICBncmFwaCwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKAorLSAgICAgICAgW29ubnguVGVuc29yUHJvdG8uRkxPQVQsIG9ubnguVGVuc29yUHJvdG8u RkxPQVQxNiwgb25ueC5UZW5zb3JQcm90by5CRkxPQVQxNl0KKy0gICAgKQorLSAgICBkZWYgdGVz dF9kZXF1YW50aXplbGluZWFyKHNlbGYsIGVsZW1fdHlwZSkgLT4gTm9uZToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAg ICgieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMzAsIDQsIDUpKSwKKy0gICAgICAgICAgICAgICAg KCJ4X3NjYWxlIiwgZWxlbV90eXBlLCAoKSksCistICAgICAgICAgICAgICAgICgieF96ZXJvX3Bv aW50IiwgVGVuc29yUHJvdG8uVUlOVDgsICgpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIFttYWtlX25vZGUoIkRlcXVhbnRpemVMaW5lYXIiLCBbIngiLCAieF9zY2FsZSIsICJ4X3pl cm9fcG9pbnQiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBlbGVtX3R5cGUsICgzMCwgNCwgNSkpXQorLSAgICAgICAgKQor LQorICAgICBkZWYgdGVzdF9keW5hbWljcXVhbnRpemVsaW5lYXIoc2VsZikgLT4gTm9uZToKKyAg ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKyAgICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uRkxPQVQsICgzMCwgNCwgNSkpXSwKK0BAIC02MDA1LDMxOSArNDUwNyw2MSBAQCBj bGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAg ICAgICAgICBbbWFrZV9ub2RlKCJSb2lBbGlnbiIsIFsieCIsICJyb2lzIiwgImJhdGNoX2luZGlj ZXMiXSwgWyJ5Il0pXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDE1LCAiQyIsIDEsIDEpKV0KKy0gICAg ICAgICkKKy0KKy0gICAgZGVmIHRlc3Rfcm90YXJ5ZW1iZWRkaW5nXzRkKHNlbGYpIC0+IE5vbmU6 CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICAoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgIm51bV9oZWFkcyIs ICJzZXFfbGVuIiwgImhlYWRfc2l6ZSIpKSwKKy0gICAgICAgICAgICAgICAgKCJjb3NfY2FjaGUi LCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSks CistICAgICAgICAgICAgICAgICgic2luX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibWF4 X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAorLSAgICAgICAgICAgICAgICAoInBvc2l0 aW9uX2lkcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIkIiLCAic2VxX2xlbiIpKSwKKy0gICAgICAg ICAgICBdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAg ICAgICAgICAgICAgICAgICAgIlJvdGFyeUVtYmVkZGluZyIsCistICAgICAgICAgICAgICAgICAg ICBbIlgiLCAiY29zX2NhY2hlIiwgInNpbl9jYWNoZSIsICJwb3NpdGlvbl9pZHMiXSwKKy0gICAg ICAgICAgICAgICAgICAgIFsiWSJdLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgICAgICAgICAiWSIs IFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAibnVtX2hlYWRzIiwgInNlcV9sZW4iLCAiaGVhZF9z aXplIikKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICApCist CistICAgIGRlZiB0ZXN0X3JvdGFyeWVtYmVkZGluZ18zZChzZWxmKSAtPiBOb25lOgorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJzZXFfbGVuIiwgImhpZGRlbl9z aXplIikpLAorLSAgICAgICAgICAgICAgICAoImNvc19jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FU LCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwKKy0gICAgICAgICAgICAgICAg KCJzaW5fY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3Np emVfZGl2XzIiKSksCistICAgICAgICAgICAgICAgICgicG9zaXRpb25faWRzIiwgVGVuc29yUHJv dG8uSU5UNjQsICgiQiIsICJzZXFfbGVuIikpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAi Um90YXJ5RW1iZWRkaW5nIiwKKy0gICAgICAgICAgICAgICAgICAgIFsiWCIsICJjb3NfY2FjaGUi LCAic2luX2NhY2hlIiwgInBvc2l0aW9uX2lkcyJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJZ Il0sCistICAgICAgICAgICAgICAgICAgICBudW1faGVhZHM9NCwKKy0gICAgICAgICAgICAgICAg KQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAg ICAgICAgICAgICAgIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgInNlcV9sZW4iLCAiaGlk ZGVuX3NpemUiKQorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAg ICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgYWxsX3ZlcnNpb25z X2ZvcigiTGFiZWxFbmNvZGVyIikgaWYgT05OWF9NTCBlbHNlIFtdLCBza2lwX29uX2VtcHR5PVRy dWUKKy0gICAgKQorLSAgICBkZWYgdGVzdF9sYWJlbF9lbmNvZGVyX3N0cmluZ19pbnQ2NChzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCistICAgICAgICAg ICAgdmVyc2lvbiA8IDIsICJrZXlzXyogYXR0cmlidXRlcyB3ZXJlIGludHJvZHVjZWQgaW4gYWku b25ueC5tbCBvcHNldCAyIgorLSAgICAgICAgKQorLSAgICAgICAgc3RyaW5nX2xpc3QgPSBbIkEi LCAibSIsICJ5Il0KKy0gICAgICAgIGZsb2F0X2xpc3QgPSBbOTQuMTcsIDM2LjAwLCAtOTkuMF0K Ky0gICAgICAgIGludDY0X2xpc3QgPSBbMTIsIDI4LCA4Nl0KKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAo NiwgMSkpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0g ICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAg WyJ4Il0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAg IGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfc3RyaW5n cz1zdHJpbmdfbGlzdCwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19pbnQ2NHM9aW50NjRf bGlzdCwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg W10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDYsIDEpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b CistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiks CistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICApCistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpXSwKKy0g ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAg ICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5Y X01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfaW50NjRzPWludDY0X2xpc3Qs CistICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKKy0gICAg ICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAg ICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgs CistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5T VFJJTkcsICgyLCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAg ICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAgICAg ICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgICAgICBdLAor LSAgICAgICAgKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSldLAorLSAgICAgICAgICAgIFsK Ky0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVs RW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICAgICAg ICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAor LSAgICAgICAgICAgICAgICAgICAga2V5c19mbG9hdHM9ZmxvYXRfbGlzdCwKKy0gICAgICAgICAg ICAgICAgICAgIHZhbHVlc19pbnQ2NHM9aW50NjRfbGlzdCwKKy0gICAgICAgICAgICAgICAgKQor LSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDgsKSldLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCistICAgICAg ICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAg ICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgICAgICAg ICAga2V5c19pbnQ2NHM9aW50NjRfbGlzdCwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19m bG9hdHM9ZmxvYXRfbGlzdCwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSldLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4s IHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDEx KSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkp XSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAg ICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0s CistICAgICAgICAgICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFp bj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfZmxvYXRzPWZsb2F0 X2xpc3QsCistICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwK Ky0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5TVFJJTkcsICgpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAg ICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCistICAgICAg ICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgICAgIF0s CistICAgICAgICApCistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAg ICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywgKDEsIDIpKV0sCistICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAi TGFiZWxFbmNvZGVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAg ICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01B SU4sCistICAgICAgICAgICAgICAgICAgICBrZXlzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCistICAg ICAgICAgICAgICAgICAgICB2YWx1ZXNfZmxvYXRzPWZsb2F0X2xpc3QsCistICAgICAgICAgICAg ICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgx LCAyKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBt YWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBt YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBhbGxfdmVyc2lvbnNf Zm9yKCJMYWJlbEVuY29kZXIiKSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBfb25fZW1wdHk9VHJ1 ZQorLSAgICApCistICAgIGRlZiB0ZXN0X2xhYmVsX2VuY29kZXJfdGVuc29yX2F0dHJpYnV0ZXMo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAgICAg ICAgICAgIHZlcnNpb24gPCA0LCAidGVuc29yIGF0dHJpYnV0ZXMgd2VyZSBpbnRyb2R1Y2VkIGlu IGFpLm9ubngubWwgb3BzZXQgNCIKKy0gICAgICAgICkKKy0gICAgICAgIGtleV90ZW5zb3IgPSBt YWtlX3RlbnNvcigKKy0gICAgICAgICAgICAia2V5c190ZW5zb3IiLCBUZW5zb3JQcm90by5TVFJJ TkcsIFs0XSwgWyJhIiwgImIiLCAiY2MiLCAiZGRkIl0KKy0gICAgICAgICkKKy0gICAgICAgIHZh bHVlc190ZW5zb3IgPSBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAidmFsdWVzX3RlbnNvciIs IFRlbnNvclByb3RvLklOVDY0LCBbNF0sIFsxLCAyLCAzLCA0XQorKyAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAorKyAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTUsICJDIiwgMSwgMSkpXQorICAgICAgICAgKQor KworKyAgICBkZWYgdGVzdF9yb3RhcnllbWJlZGRpbmdfNGQoc2VsZikgLT4gTm9uZToKKyAgICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKKysgICAgICAgICAgICBbCisrICAg ICAgICAgICAgICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAibnVtX2hlYWRzIiwg InNlcV9sZW4iLCAiaGVhZF9zaXplIikpLAorKyAgICAgICAgICAgICAgICAoImNvc19jYWNoZSIs IFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwK KysgICAgICAgICAgICAgICAgKCJzaW5fY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhf c2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCisrICAgICAgICAgICAgICAgICgicG9zaXRp b25faWRzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiQiIsICJzZXFfbGVuIikpLAorKyAgICAgICAg ICAgIF0sCisgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAg ICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsi eCJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBk b21haW49T05OWF9NTF9ET01BSU4sCistICAgICAgICAgICAgICAgICAgICBrZXlzX3RlbnNvcj1r ZXlfdGVuc29yLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX3RlbnNvcj12YWx1ZXNfdGVu c29yLAorLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5zb3IoCist ICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHRfdGVuc29yIiwgVGVuc29yUHJvdG8uSU5U NjQsIFsxXSwgWzBdCistICAgICAgICAgICAgICAgICAgICApLAorKyAgICAgICAgICAgICAgICAg ICAgIlJvdGFyeUVtYmVkZGluZyIsCisrICAgICAgICAgICAgICAgICAgICBbIlgiLCAiY29zX2Nh Y2hlIiwgInNpbl9jYWNoZSIsICJwb3NpdGlvbl9pZHMiXSwKKysgICAgICAgICAgICAgICAgICAg IFsiWSJdLAorICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg ICBbXSwKKyAgICAgICAgICkKKyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKyAgICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCBOb25lLCAzLCAxMikpXSwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9N QUlOLCB2ZXJzaW9uKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCAxMSksCisrICAgICAgICAgICAgWworKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKAorKyAgICAgICAgICAgICAgICAgICAgIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJC IiwgIm51bV9oZWFkcyIsICJzZXFfbGVuIiwgImhlYWRfc2l6ZSIpCisrICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICBdLAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoCistICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJMYWJlbEVuY29kZXIiKSBpZiBPTk5Y X01MIGVsc2UgW10sIHNraXBfb25fZW1wdHk9VHJ1ZQorLSAgICApCistICAgIGRlZiB0ZXN0X2xh YmVsX2VuY29kZXJfdGVuc29yX2F0dHJpYnV0ZXNfaW52YWxpZF9jb25maWd1cmF0aW9ucygKKy0g ICAgICAgIHNlbGYsIF8sIHZlcnNpb24KKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5z a2lwSWYodmVyc2lvbiA8IDQsICJ0ZW5zb3IgYXR0cmlidXRlcyBpbnRyb2R1Y2VkIGluIGFpLm9u bngubWwgb3BzZXQgNCIpCistICAgICAgICBrZXlfdGVuc29yID0gbWFrZV90ZW5zb3IoCistICAg ICAgICAgICAgImtleXNfdGVuc29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbNF0sIFsiYSIsICJi IiwgImNjIiwgImRkZCJdCistICAgICAgICApCistICAgICAgICB2YWx1ZXNfdGVuc29yID0gbWFr ZV90ZW5zb3IoCistICAgICAgICAgICAgInZhbHVlc190ZW5zb3IiLCBUZW5zb3JQcm90by5JTlQ2 NCwgWzRdLCBbMSwgMiwgMywgNF0KKy0gICAgICAgICkKKy0KKy0gICAgICAgIG9wc2V0X2ltcG9y dHMgPSBbCistICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9u KSwKKy0gICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAg IF0KKy0KKy0gICAgICAgICMgZGVmYXVsdF90ZW5zb3Igc2hvdWxkIGJlIElOVDY0LCBzYW1lIHR5 cGUgYXMgdmFsdWVzX3RlbnNvcgorKyAgICBkZWYgdGVzdF9yb3RhcnllbWJlZGRpbmdfM2Qoc2Vs ZikgLT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKKysg ICAgICAgICAgICBbCisrICAgICAgICAgICAgICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FULCAo IkIiLCAic2VxX2xlbiIsICJoaWRkZW5fc2l6ZSIpKSwKKysgICAgICAgICAgICAgICAgKCJjb3Nf Y2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2 XzIiKSksCisrICAgICAgICAgICAgICAgICgic2luX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxPQVQs ICgibWF4X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAorKyAgICAgICAgICAgICAgICAo InBvc2l0aW9uX2lkcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIkIiLCAic2VxX2xlbiIpKSwKKysg ICAgICAgICAgICBdLAorICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgbWFrZV9ub2Rl KAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAg ICAgICBbIngiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAg ICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgICAgICAgICAga2V5c190 ZW5zb3I9a2V5X3RlbnNvciwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlc190ZW5zb3I9dmFs dWVzX3RlbnNvciwKKy0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdGVuc29yPW1ha2VfdGVu c29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0X3RlbnNvciIsIFRlbnNvclBy b3RvLklOVDMyLCBbMV0sIFswXQorLSAgICAgICAgICAgICAgICAgICAgKSwKKysgICAgICAgICAg ICAgICAgICAgICJSb3RhcnlFbWJlZGRpbmciLAorKyAgICAgICAgICAgICAgICAgICAgWyJYIiwg ImNvc19jYWNoZSIsICJzaW5fY2FjaGUiLCAicG9zaXRpb25faWRzIl0sCisrICAgICAgICAgICAg ICAgICAgICBbIlkiXSwKKysgICAgICAgICAgICAgICAgICAgIG51bV9oZWFkcz00LAorICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAg ICkKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIG9ubnguc2hh cGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVk LAorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9b3BzZXRfaW1wb3J0cywKKy0gICAgICAgICkKKy0K Ky0gICAgICAgICMgZGVmYXVsdF90ZW5zb3Igc2hvdWxkIGJlIGEgc2luZ2xldG9uIG9mIHNoYXBl ICgxLCkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBb KCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKKyAgICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAg ICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAg ICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RP TUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfdGVuc29yPWtleV90ZW5zb3IsCistICAg ICAgICAgICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1bImEiLCAiYiIsICJjYyIsICJkZGQiXSwK Ky0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdGVuc29yPW1ha2VfdGVuc29yKAorLSAgICAg ICAgICAgICAgICAgICAgICAgICJkZWZhdWx0X3RlbnNvciIsIFRlbnNvclByb3RvLlNUUklORywg WzEsIDJdLCBbImEiLCAiYiJdCistICAgICAgICAgICAgICAgICAgICApLAorKyAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorKyAgICAgICAgICAgICAgICAgICAgIlkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgInNlcV9sZW4iLCAiaGlkZGVuX3NpemUiKQorICAgICAg ICAgICAgICAgICApCisgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAg ICkKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIG9ubnguc2hh cGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVk LAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9b3BzZXRf aW1wb3J0cywKKyAgICAgICAgICkKKyAKKyAgICAgZGVmIG1ha2Vfc3BhcnNlKAorQEAgLTg3NDYs MTA1ICs2OTkwLDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5j ZUhlbHBlcik6CisgICAgICAgICApCisgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoZ3Jh cGgsIFtvdXRwdXRfdGVuc29yX3ZhbF9pbmZvXSkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCistICAgIGRlZiB0ZXN0X3N0cmlu Z19zcGxpdF9iYXNpYyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc3Vic3Ry aW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgInN1YnN0cmluZ3Mi LAorLSAgICAgICAgICAgIFRlbnNvclByb3RvLlNUUklORywKKy0gICAgICAgICAgICAoMiwgTm9u ZSksCistICAgICAgICApCistICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSkKKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLlNUUklORywgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb bWFrZV9ub2RlKCJTdHJpbmdTcGxpdCIsIFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0p XSwKKy0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCist CistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxp dCIpKQorLSAgICBkZWYgdGVzdF9zdHJpbmdfc3BsaXRfc3ltYm9saWMoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKKy0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KAorLSAgICAgICAgICAgICJzdWJzdHJpbmdzIiwKKy0gICAgICAgICAgICBUZW5zb3JQcm90by5T VFJJTkcsCistICAgICAgICAgICAgKCJBIiwgTm9uZSksCistICAgICAgICApCistICAgICAgICBs ZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKCJBIiwpKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIkEiLCkp LAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQi LCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdKV0sCistICAgICAgICAgICAgW3N1YnN0 cmluZ3MsIGxlbmd0aF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0 aF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKKy0gICAgZGVmIHRlc3Rfc3Ry aW5nX3NwbGl0X25lc3RlZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc3Vi c3RyaW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgInN1YnN0cmlu Z3MiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCA0LCAzLCBOb25lKQorLSAgICAgICAgKQorLSAg ICAgICAgbGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVuc29yUHJv dG8uSU5UNjQsICgyLCA0LCAzKSkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklO RywgKDIsIDQsIDMpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUo IlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSwgbWF4c3BsaXQ9 MildLAorLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1Nw bGl0IikpCistICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdF96ZXJvX2RpbWVuc2lvbmFsX2lucHV0 KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygic3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKE5vbmUs KSkKKy0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIsIFRl bnNvclByb3RvLklOVDY0LCAoKSkKKy0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNU UklORywgKCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3Ry aW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdLCBtYXhzcGxpdD0yKV0s CistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQor LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQi KSkKKy0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X2VtcHR5X2lucHV0KHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6CistICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygKKy0gICAgICAgICAgICAic3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKCJNIiwg MywgMCwgTm9uZSkKKy0gICAgICAgICkKKy0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCAzLCAwKSkKKy0KKy0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKCJNIiwgMywgMCkpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwg WyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdLCBtYXhzcGxpdD0yKV0sCistICAgICAgICAgICAgW3N1 YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxl bmd0aF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9vcHRp b25hbF90ZW5zb3JfZ2V0X2VsZW1lbnQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHRlbnNvcl90 eXBlX3Byb3RvID0gaGVscGVyLm1ha2VfdGVuc29yX3R5cGVfcHJvdG8oCisgICAgICAgICAgICAg ZWxlbV90eXBlPVRlbnNvclByb3RvLkRPVUJMRSwgc2hhcGU9WzIsIDEsIDRdCitAQCAtOTQ1Miw0 MjYgKzc1OTcsNzYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5j ZUhlbHBlcik6CisgICAgICAgICAgICAgW10sCisgICAgICAgICApCisgICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3Rv LklOVDY0LCAoKSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAp CistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgW10s CistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAg ICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAg ICAgICAgICAgICAgICBbInNoYXBlIl0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtl X3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKKy0gICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW5uV2luZG93IiwgWyJz aGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAo MTAsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgZGVmIHRlc3RfYmxh Y2ttYW53aW5kb3coc2VsZik6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAg ICAgW10sCistICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCistICAgICAgICAgICAgICAg ICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgx MCwpKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJC bGFja21hbldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0pLAorLSAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo CistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCist ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5G TE9BVCwgKDEwLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29u c3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBb InNoYXBlIl0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0g ICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJCbGFja21hbldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5 Il0sIHBlcmlvZGljPTApLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAg ICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCistICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAorLSAg ICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgK Ky0gICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5hbWUsCistICAg ICAgICAgICAgICAgIHZlcnNpb24sCistICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAorLSAg ICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgYXhpcywKKy0gICAg ICAgICAgICAgICAgb25lc2lkZWQsCistICAgICAgICAgICAgICAgIGludmVyc2UsCistICAgICAg ICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBm b3IgKG5hbWUsIHZlcnNpb24pLCAoCistICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAorLSAg ICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgYXhpcywKKy0gICAg ICAgICAgICAgICAgb25lc2lkZWQsCistICAgICAgICAgICAgICAgIGludmVyc2UsCistICAgICAg ICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAorLSAgICAgICAgICAgICkgaW4gaXRlcnRvb2xzLnBy b2R1Y3QoCistICAgICAgICAgICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkRGVCIpLAorLSAgICAg ICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2RlZmF1bHRfYXhpcyIs ICgyLCA1LCAxKSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDUsIDIpKSwKKy0gICAgICAgICAgICAg ICAgICAgICgicmVhbHNfYXhpc18wIiwgKDMsIDUsIDEwLCAxKSwgMCwgMCwgMCwgKDMsIDUsIDEw LCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMSIsICgzLCA1LCAxMCwg MSksIDEsIDAsIDAsICgzLCA1LCAxMCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFs c19heGlzXzIiLCAoMywgNSwgMTAsIDEpLCAyLCAwLCAwLCAoMywgNSwgMTAsIDIpKSwKKy0gICAg ICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWciLCAoMywgNSwgMTAsIDEpLCAtMiwgMCwg MCwgKDMsIDUsIDEwLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMF9v bmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDAsIDEsIDAsICgyLCA1LCAxMCwgMikpLAorLSAgICAg ICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzFfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAx LCAxLCAwLCAoMywgMywgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhp c18yX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMiwgMSwgMCwgKDMsIDUsIDYsIDIpKSwKKy0g ICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWdfb25lc2lkZWQiLCAoMywgNSwgMTAs IDEpLCAtMiwgMSwgMCwgKDMsIDUsIDYsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiY29t cGxleF9kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMiksIE5vbmUsIE5vbmUsIE5vbmUsICgyLCA1LCAy KSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxfaW52ZXJzZSIsICgyLCA1LCAxKSwgMSwg Tm9uZSwgMSwgKDIsIDUsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiY29tcGxleF9pbnZl cnNlIiwgKDIsIDUsIDIpLCAxLCBOb25lLCAxLCAoMiwgNSwgMikpLAorLSAgICAgICAgICAgICAg ICAgICAgKCJpcmZmdF9heGlzXzAiLCAoMiwgNSwgMTAsIDIpLCAwLCAxLCAxLCAoMiwgNSwgMTAs IDEpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc18xIiwgKDMsIDMsIDEwLCAy KSwgMSwgMSwgMSwgKDMsIDQsIDEwLCAxKSksCistICAgICAgICAgICAgICAgICAgICAoImlyZmZ0 X2F4aXNfMiIsICgzLCA1LCA2LCAyKSwgMiwgMSwgMSwgKDMsIDUsIDEwLCAxKSksCistICAgICAg ICAgICAgICAgICAgICAoImlyZmZ0X2F4aXNfbmVnIiwgKDMsIDUsIDYsIDIpLCAtMiwgMSwgMSwg KDMsIDUsIDEwLCAxKSksCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgKQorLSAg ICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2RmdCgKKy0gICAgICAgIHNlbGYsCistICAg ICAgICBfOiBzdHIsCistICAgICAgICB2ZXJzaW9uOiBpbnQsCistICAgICAgICBfdGVzdF9hc3Bl Y3Q6IHN0ciwKKy0gICAgICAgIGlucHV0X3NoYXBlOiB0dXBsZVtpbnRdLAorLSAgICAgICAgYXhp czogaW50IHwgTm9uZSwKKy0gICAgICAgIG9uZXNpZGVkOiBpbnQgfCBOb25lLAorLSAgICAgICAg aW52ZXJzZTogaW50IHwgTm9uZSwKKy0gICAgICAgIGV4cGVjdGVkX3NoYXBlOiB0dXBsZVtpbnRd LAorLSAgICApIC0+IE5vbmU6CistICAgICAgICAjIEJ1aWxkIHRoZSBhdHRyaWJ1dGVzIGZvciBk aWZmZXJlbnQgb3BzZXQgdmVyc2lvbnMKKy0gICAgICAgIGF0dHJpYnV0ZXMgPSB7fQorLSAgICAg ICAgaWYgb25lc2lkZWQgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgYXR0cmlidXRlc1sib25l c2lkZWQiXSA9IG9uZXNpZGVkCistICAgICAgICBpZiBpbnZlcnNlIGlzIG5vdCBOb25lOgorLSAg ICAgICAgICAgIGF0dHJpYnV0ZXNbImludmVyc2UiXSA9IGludmVyc2UKKy0KKy0gICAgICAgIGlm IHZlcnNpb24gPCAyMDoKKy0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgorLSAgICAg ICAgICAgICAgICBhdHRyaWJ1dGVzWyJheGlzIl0gPSBheGlzCistICAgICAgICAgICAgbm9kZXMg PSBbbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiJdLCBbIm91dHB1dCJdLCAqKmF0dHJpYnV0 ZXMpXQorLSAgICAgICAgICAgIHZhbHVlX2luZm9zID0gW10KKy0gICAgICAgIGVsc2U6CistICAg ICAgICAgICAgYXNzZXJ0IHZlcnNpb24gPj0gMjAKKy0gICAgICAgICAgICBpZiBheGlzIGlzIG5v dCBOb25lOgorLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAg ICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiYXhpcyJd LAorLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwgVGVu c29yUHJvdG8uSU5UNjQsICgpLCAoYXhpcywpKSwKKy0gICAgICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMi XSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwKKy0gICAgICAgICAgICAgICAgXQorLSAgICAg ICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpKV0KKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAg ICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJp bnB1dCIsICIiLCAiIl0sIFsib3V0cHV0Il0sICoqYXR0cmlidXRlcyksCistICAgICAgICAgICAg ICAgIF0KKy0gICAgICAgICAgICAgICAgdmFsdWVfaW5mb3MgPSBbXQorLQorLSAgICAgICAgIyBD b25zdHJ1Y3QgdGhlIGdyYXBoCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAg ICAgW10sCistICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCistICAgICAgICAgICAgICAg ICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQi LAorLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAg ICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5w Lm9uZXMoaW5wdXRfc2hhcGUsIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKKy0gICAgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICpu b2RlcywKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQi LCBUZW5zb3JQcm90by5GTE9BVCwgaW5wdXRfc2hhcGUpLAorLSAgICAgICAgICAgICAgICAqdmFs dWVfaW5mb3MsCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1 dCIsIFRlbnNvclByb3RvLkZMT0FULCBleHBlY3RlZF9zaGFwZSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5hbWUsCist ICAgICAgICAgICAgICAgIHZlcnNpb24sCistICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAor LSAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgYXhpcywKKy0g ICAgICAgICAgICAgICAgb25lc2lkZWQsCistICAgICAgICAgICAgICAgIGludmVyc2UsCistICAg ICAgICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAg ICBmb3IgKG5hbWUsIHZlcnNpb24pLCAoCistICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAor LSAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgYXhpcywKKy0g ICAgICAgICAgICAgICAgb25lc2lkZWQsCistICAgICAgICAgICAgICAgIGludmVyc2UsCistICAg ICAgICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAorLSAgICAgICAgICAgICkgaW4gaXRlcnRvb2xz LnByb2R1Y3QoCistICAgICAgICAgICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkRGVCIpLAorLSAg ICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2RlZmF1bHRfYXhp cyIsICgyLCA1LCAxKSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDQyLCAyKSksCistICAgICAgICAg ICAgICAgICAgICAoInJlYWxzX2F4aXNfMCIsICgzLCA1LCAxMCwgMSksIDAsIDAsIDAsICg0Miwg NSwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18xIiwgKDMsIDUs IDEwLCAxKSwgMSwgMCwgMCwgKDMsIDQyLCAxMCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAg KCJyZWFsc19heGlzXzIiLCAoMywgNSwgMTAsIDEpLCAyLCAwLCAwLCAoMywgNSwgNDIsIDIpKSwK Ky0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWciLCAoMywgNSwgMTAsIDEpLCAt MiwgMCwgMCwgKDMsIDUsIDQyLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4 aXNfMF9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDAsIDEsIDAsICgyMiwgNSwgMTAsIDIpKSwK Ky0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18xX29uZXNpZGVkIiwgKDMsIDUsIDEw LCAxKSwgMSwgMSwgMCwgKDMsIDIyLCAxMCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJy ZWFsc19heGlzXzJfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAyLCAxLCAwLCAoMywgNSwgMjIs IDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWdfb25lc2lkZWQiLCAo MywgNSwgMTAsIDEpLCAtMiwgMSwgMCwgKDMsIDUsIDIyLCAyKSksCistICAgICAgICAgICAgICAg ICAgICAoImNvbXBsZXhfZGVmYXVsdF9heGlzIiwgKDIsIDUsIDIpLCBOb25lLCBOb25lLCBOb25l LCAoMiwgNDIsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbF9pbnZlcnNlIiwgKDIs IDUsIDEpLCAxLCBOb25lLCAxLCAoMiwgNDIsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgi Y29tcGxleF9pbnZlcnNlIiwgKDIsIDUsIDIpLCAxLCBOb25lLCAxLCAoMiwgNDIsIDIpKSwKKy0g ICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc18wIiwgKDIsIDUsIDEwLCAyKSwgMCwgMSwg MSwgKDQyLCA1LCAxMCwgMSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJpcmZmdF9heGlzXzEi LCAoMywgMywgMTAsIDIpLCAxLCAxLCAxLCAoMywgNDIsIDEwLCAxKSksCistICAgICAgICAgICAg ICAgICAgICAoImlyZmZ0X2F4aXNfMiIsICgzLCA1LCA2LCAyKSwgMiwgMSwgMSwgKDMsIDUsIDQy LCAxKSksCistICAgICAgICAgICAgICAgICAgICAoImlyZmZ0X2F4aXNfbmVnIiwgKDMsIDUsIDYs IDIpLCAtMiwgMSwgMSwgKDMsIDUsIDQyLCAxKSksCistICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgKQorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2RmdF9kZnRfbGVu Z3RoKAorLSAgICAgICAgc2VsZiwKKy0gICAgICAgIF86IHN0ciwKKy0gICAgICAgIHZlcnNpb246 IGludCwKKy0gICAgICAgIF90ZXN0X2FzcGVjdDogc3RyLAorLSAgICAgICAgaW5wdXRfc2hhcGU6 IHR1cGxlW2ludF0sCistICAgICAgICBheGlzOiBpbnQgfCBOb25lLAorLSAgICAgICAgb25lc2lk ZWQ6IGludCB8IE5vbmUsCistICAgICAgICBpbnZlcnNlOiBpbnQgfCBOb25lLAorLSAgICAgICAg ZXhwZWN0ZWRfc2hhcGU6IHR1cGxlW2ludF0sCistICAgICkgLT4gTm9uZToKKy0gICAgICAgICMg QnVpbGQgdGhlIGF0dHJpYnV0ZXMgZm9yIGRpZmZlcmVudCBvcHNldCB2ZXJzaW9ucworLSAgICAg ICAgYXR0cmlidXRlcyA9IHt9CistICAgICAgICBpZiBvbmVzaWRlZCBpcyBub3QgTm9uZToKKy0g ICAgICAgICAgICBhdHRyaWJ1dGVzWyJvbmVzaWRlZCJdID0gb25lc2lkZWQKKy0gICAgICAgIGlm IGludmVyc2UgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgYXR0cmlidXRlc1siaW52ZXJzZSJd ID0gaW52ZXJzZQorLQorLSAgICAgICAgZGZ0X2xlbmd0aCA9IDQyCistCistICAgICAgICBpZiB2 ZXJzaW9uIDwgMjA6CistICAgICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToKKy0gICAgICAg ICAgICAgICAgYXR0cmlidXRlc1siYXhpcyJdID0gYXhpcworLSAgICAgICAgICAgIG5vZGVzID0g WworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29u c3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBb ImRmdF9sZW5ndGgiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAor LSAgICAgICAgICAgICAgICAgICAgICAgICJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgpLCAoZGZ0X2xlbmd0aCwpCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiZGZ0 X2xlbmd0aCJdLCBbIm91dHB1dCJdLCAqKmF0dHJpYnV0ZXMpLAorLSAgICAgICAgICAgIF0KKy0g ICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVu Z3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0KKy0gICAgICAgIGVsc2U6CistICAgICAgICAg ICAgYXNzZXJ0IHZlcnNpb24gPj0gMjAKKy0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25l OgorLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAg ICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwgVGVuc29yUHJv dG8uSU5UNjQsICgpLCAoYXhpcywpKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAg ICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0 YW50IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAg ICAgICBbImRmdF9sZW5ndGgiXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtl X3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRmdF9sZW5ndGgiLCBUZW5z b3JQcm90by5JTlQ2NCwgKCksIChkZnRfbGVuZ3RoLCkKKy0gICAgICAgICAgICAgICAgICAgICAg ICApLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiREZUIiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBbImlucHV0IiwgImRmdF9sZW5ndGgiLCAiYXhpcyJdLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIFsib3V0cHV0Il0sCistICAgICAgICAgICAgICAgICAgICAgICAgKiphdHRyaWJ1 dGVzLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgXQorLSAgICAg ICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorLSAg ICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiYXhpcyIsIFRlbnNvclBy b3RvLklOVDY0LCAoKSksCistICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICBlbHNlOgor LSAgICAgICAgICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9k ZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiZGZ0X2xlbmd0aCJdLAor LSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKGRm dF9sZW5ndGgsKQorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJERlQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAiZGZ0 X2xlbmd0aCIsICIiXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAorLSAg ICAgICAgICAgICAgICAgICAgICAgICoqYXR0cmlidXRlcywKKy0gICAgICAgICAgICAgICAgICAg ICksCistICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICAgICAgdmFsdWVfaW5mb3MgPSBb CistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVuZ3Ro IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKQorLSAgICAgICAgICAgICAgICBdCisrICAgICAgICAg ICAgZ3JhcGgsCisrICAgICAgICAgICAgWworKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCisrICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkp LAorKyAgICAgICAgICAgIF0sCisrICAgICAgICApCisgCistICAgICAgICAjIENvbnN0cnVjdCB0 aGUgZ3JhcGgKKyAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKyAgICAgICAgICAg ICBbXSwKKyAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKyAgICAg ICAgICAgICAgICAgICAgICJDb25zdGFudCIsCisgICAgICAgICAgICAgICAgICAgICBbXSwKKy0g ICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVl PW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCistICAgICAg ICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgICAgICAg ICAgICAgaW5wdXRfc2hhcGUsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhpbnB1 dF9zaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAgICAgICAgICAgICAg ICAgKSwKKysgICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKKysgICAgICAgICAgICAgICAg ICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEw LCkpLAorICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAqbm9kZXMsCisrICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFubldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0sIHBl cmlvZGljPTApLAorICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgW10sCisgICAgICAgICAp CisgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCisgICAgICAgICAgICAgZ3JhcGgsCisg ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJp bnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBpbnB1dF9zaGFwZSksCistICAgICAgICAgICAgICAg ICp2YWx1ZV9pbmZvcywKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi b3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVkX3NoYXBlKSwKKysgICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCkpLAorKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uRkxPQVQsICgxMCwpKSwKKyAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKyAg ICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAg ICAgICAgICAgICgibGFzdCIsIDMpLAorLSAgICAgICAgICAgICgibGFzdF9uZWdhdGl2ZSIsIC0x KSwKKy0gICAgICAgICAgICAoIm91dF9vZl9yYW5nZSIsIDQpLAorLSAgICAgICAgICAgICgib3V0 X29mX3JhbmdlX25lZ2F0aXZlIiwgLTUpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0 ZXN0X2RmdF9pbnZhbGlkX2F4aXNfb3BzZXQxNyhzZWxmLCBfOiBzdHIsIGF4aXM6IGludCkgLT4g Tm9uZToKKysgICAgZGVmIHRlc3RfYmxhY2ttYW53aW5kb3coc2VsZik6CisgICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgWwor ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAiQ29uc3Rh bnQiLAorICAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBbImlu cHV0Il0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAg ICAgICAgICAgICAgICAgICAiaW5wdXQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNv clByb3RvLkZMT0FULAorLSAgICAgICAgICAgICAgICAgICAgICAgICgyLCA1LCA1LCAyKSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKCgyLCA1LCA1LCAyKSwgZHR5cGU9bnAuZmxv YXQzMikuZmxhdHRlbigpLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKysgICAgICAgICAgICAg ICAgICAgIFsic2hhcGUiXSwKKysgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29y KCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAorICAgICAgICAgICAgICAg ICApLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIl0sIFsi b3V0cHV0Il0sIG9uZXNpZGVkPTEsIGF4aXM9YXhpcyksCisrICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgiSGFtbWluZ1dpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0pLAorICAgICAgICAgICAgIF0s CisgICAgICAgICAgICAgW10sCisgICAgICAgICApCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0 UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yKToKKy0gICAgICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNSwgNSwgMikpLAorLSAgICAgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxP QVQsICgyLCAzLCA1LCAyKSksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDE3KV0sCist ICAgICAgICAgICAgKQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorKyAgICAgICAg ICAgIGdyYXBoLAorKyAgICAgICAgICAgIFsKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorKyAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwp KSwKKysgICAgICAgICAgICBdLAorKyAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJsYXN0IiwgMyksCistICAgICAgICAg ICAgKCJsYXN0X25lZ2F0aXZlIiwgLTEpLAorLSAgICAgICAgICAgICgib3V0X29mX3JhbmdlIiwg NCksCistICAgICAgICAgICAgKCJvdXRfb2ZfcmFuZ2VfbmVnYXRpdmUiLCAtNSksCistICAgICAg ICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfZGZ0X2ludmFsaWRfYXhpc19vcHNldDIwKHNlbGYs IF86IHN0ciwgYXhpczogaW50KSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg ICAgbWFrZV9ub2RlKAorICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKyAgICAgICAg ICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAg ICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAg ICAgImlucHV0IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAoMiwgNSwgNSwgMiksCistICAgICAgICAgICAgICAg ICAgICAgICAgbnAub25lcygoMiwgNSwgNSwgMiksIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4o KSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICksCistICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCist ICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAor LSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoImF4aXMiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKCksIChheGlzLCkpLAorKyAgICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAor KyAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJv dG8uSU5UNjQsICgpLCAoMTAsKSksCisgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICIiLCAiYXhpcyJdLCBbIm91dHB1dCJdKSwK KysgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW1taW5nV2luZG93IiwgWyJzaGFwZSJdLCBb InkiXSwgcGVyaW9kaWM9MCksCisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAg ICAgICAgICkKKy0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZl cmVuY2UuSW5mZXJlbmNlRXJyb3IpOgorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCA1LCA1LCAyKSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMiwgMywgNSwgMikpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAorLSAg ICAgICAgICAgICkKKysgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKysgICAgICAgICAg ICBncmFwaCwKKysgICAgICAgICAgICBbCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKysgICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSks CisrICAgICAgICAgICAgXSwKKysgICAgICAgICkKKyAKKyAgICAgZGVmIHRlc3RfZGZ0X3JmZnRf aW52YWxpZF9jb21wbGV4X2lucHV0X29wc2V0MTcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgICIi IlRlc3QgdGhhdCBSRkZUIChvbmVzaWRlZD0xLCBpbnZlcnNlPTApIHJlamVjdHMgY29tcGxleCBp bnB1dCIiIgorQEAgLTEwMDExLDEyOCArNzgwNiw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5j ZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAorICAgICAgICAgICAg ICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAg ICAgICgicmVhbCIsICgyLCA1LCA1LCAxKSksCistICAgICAgICAgICAgKCJjb21wbGV4IiwgKDIs IDUsIDUsIDIpKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnRfZHluYW1p Y19heGlzX29wc2V0MjAoc2VsZiwgXzogc3RyLCBzaGFwZTogdHVwbGVbaW50LCAuLi5dKSAtPiBO b25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFso ImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKKy0gICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCist ICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwK Ky0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAg ICAgICAgICAgICJpbnB1dCIsCistICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8u RkxPQVQsCistICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUsCistICAgICAgICAgICAgICAg ICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAg ICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0pLAor LSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNv clByb3RvLkZMT0FULCBzaGFwZSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNSwgNSwgMikpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgMjApXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgicmVhbCIsICgyLCA1LCA1LCAxKSks CistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfZGZ0X2R5bmFtaWNfYXhpc19vbmVz aWRlZF9kZnRfbGVuZ3RoX29wc2V0MjAoCistICAgICAgICBzZWxmLCBfOiBzdHIsIHNoYXBlOiB0 dXBsZVtpbnQsIC4uLl0KKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkp XSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAg ICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAg ICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1h a2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCistICAgICAgICAg ICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgICAgICAgICAg ICAgc2hhcGUsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5cGU9 bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAg ICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAg ICAgICAgICAgWyJkZnRfbGVuZ3RoIl0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtl X3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiZGZ0X2xlbmd0aCIsCistICAgICAg ICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCistICAgICAgICAgICAgICAgICAg ICAgICAgKCksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoWzQyXSwgZHR5cGU9 bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkRGVCIs IFsiaW5wdXQiLCAiZGZ0X2xlbmd0aCIsICJheGlzIl0sIFsib3V0cHV0Il0sIG9uZXNpZGVkPTEK Ky0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAor LSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAg IGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgc2hhcGUpLAorLSAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5U NjQsICgpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0gICAg ICAgICAgICAgICAgICAgICJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUs IE5vbmUsIDIpCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCld LAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBb CistICAgICAgICAgICAgKCJyZWFsIiwgKDIsIDUsIDUsIDEpKSwKKy0gICAgICAgIF0KKy0gICAg KQorLSAgICBkZWYgdGVzdF9kZnRfZHluYW1pY19heGlzX29uZXNpZGVkX29wc2V0MjAoCistICAg ICAgICBzZWxmLCBfOiBzdHIsIHNoYXBlOiB0dXBsZVtpbnQsIC4uLl0KKy0gICAgKSAtPiBOb25l OgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoImF4 aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAg ICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0g ICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAg ICAgICAgICJpbnB1dCIsCistICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxP QVQsCistICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUsCistICAgICAgICAgICAgICAgICAg ICAgICAgbnAub25lcyhzaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAg ICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0sIG9uZXNp ZGVkPTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1 dCIsIFRlbnNvclByb3RvLkZMT0FULCBzaGFwZSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgICAgICAgICAib3V0cHV0IiwgVGVuc29yUHJv dG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lLCAyKQorLSAgICAgICAgICAgICAgICApLAorLSAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgMjApXSwKKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3RfZGZ0 X29uZXNpZGVkX2RlZmF1bHRfYXhpc19vcHNldDE3KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICAj IE9wc2V0IDE3IHNldHMgZGVmYXVsdCBheGlzIHRvIGJlIDEuCisgICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCitAQCAtMTA1OTEsNDEgKzgyNjQsNiBAQCBjbGFzcyBUZXN0U2hhcGVJ bmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAgICBdLAorICAg ICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAg ICAgICAgICAgKFsxLCAyLCAzXSwgWyIxIiwgIjIiXSksCistICAgICAgICAgICAgKFsxLCAyLCAz XSwgTm9uZSksCistICAgICAgICAgICAgKE5vbmUsIFsiMSIsICIyIiwgIjMiXSksCistICAgICAg ICAgICAgKE5vbmUsIE5vbmUpLAorLSAgICAgICAgXQorLSAgICApCistICAgIEB1bml0dGVzdC5z a2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBv cGVyYXRvcnMiKQorLSAgICBkZWYgdGVzdF9jYXRlZ29yeV9tYXBwZXJfZmFpbHNfaWZfaW52YWxp ZF9hdHRyaWJ1dGVzKAorLSAgICAgICAgc2VsZiwgY2F0c19pbnQ2NHMsIGNhdHNfc3RyaW5ncwor LSAgICApIC0+IE5vbmU6CistICAgICAgICBjYXQgPSBtYWtlX25vZGUoCistICAgICAgICAgICAg IkNhdGVnb3J5TWFwcGVyIiwKKy0gICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICBbInki XSwKKy0gICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCistICAgICAgICAgICAgY2F0 c19pbnQ2NHM9Y2F0c19pbnQ2NHMsCistICAgICAgICAgICAgY2F0c19zdHJpbmdzPWNhdHNfc3Ry aW5ncywKKy0gICAgICAgICkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzMCwgNCwgNSkpXSwKKy0gICAg ICAgICAgICBbY2F0XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVy ZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtl X29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDEpLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorICAg ICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0 IGFpLm9ubngubWwgb3BlcmF0b3JzIikKKyAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdy ZXNzb3Ioc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHRyZWUgPSBtYWtlX25vZGUoCitAQCAtMTA2 NDksMTMxICs4Mjg3LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVy ZW5jZUhlbHBlcik6CisgICAgICAgICAgICAgXSwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKFtUZW5zb3JQcm90by5GTE9BVCwgVGVuc29yUHJvdG8uRE9VQkxFLCBU ZW5zb3JQcm90by5GTE9BVDE2XSkKKy0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwg Ik9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCistICAgIGRl ZiB0ZXN0X3RyZWVfZW5zZW1ibGUoc2VsZiwgZHR5cGUpIC0+IE5vbmU6CistICAgICAgICBpbnRl cmlvcl9ub2RlcyA9IDUKKy0gICAgICAgIGxlYXZlcyA9IDkKKy0gICAgICAgIHRyZWUgPSBtYWtl X25vZGUoCistICAgICAgICAgICAgIlRyZWVFbnNlbWJsZSIsCistICAgICAgICAgICAgWyJ4Il0s CistICAgICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlO LAorLSAgICAgICAgICAgIG5fdGFyZ2V0cz01LAorLSAgICAgICAgICAgIG5vZGVzX2ZlYXR1cmVp ZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbm9kZXNfc3BsaXRzPW1ha2Vf dGVuc29yKAorLSAgICAgICAgICAgICAgICAibm9kZXNfc3BsaXRzIiwKKy0gICAgICAgICAgICAg ICAgZHR5cGUsCistICAgICAgICAgICAgICAgIChpbnRlcmlvcl9ub2RlcywpLAorLSAgICAgICAg ICAgICAgICBsaXN0KHJhbmdlKGludGVyaW9yX25vZGVzKSksCistICAgICAgICAgICAgKSwKKy0g ICAgICAgICAgICBub2Rlc19tb2Rlcz1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgIm5v ZGVzX21vZGVzIiwKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDgsCistICAgICAg ICAgICAgICAgIChpbnRlcmlvcl9ub2RlcywpLAorLSAgICAgICAgICAgICAgICBbMF0gKiBpbnRl cmlvcl9ub2RlcywKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgIG5vZGVzX3RydWVub2Rl aWRzPVswXSAqIGludGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX2ZhbHNlbm9kZWlk cz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKKy0gICAgICAgICAgICBub2Rlc190cnVlbGVhZnM9WzBd ICogaW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbm9kZXNfZmFsc2VsZWFmcz1bMF0gKiBp bnRlcmlvcl9ub2RlcywKKy0gICAgICAgICAgICBtZW1iZXJzaGlwX3ZhbHVlcz1tYWtlX3RlbnNv cigKKy0gICAgICAgICAgICAgICAgIm1lbWJlcnNoaXBfdmFsdWVzIiwKKy0gICAgICAgICAgICAg ICAgZHR5cGUsCistICAgICAgICAgICAgICAgICg3LCksCistICAgICAgICAgICAgICAgIFswLjAs IDAuMSwgMC4yLCBucC5uYW4sIDAuNCwgMC41LCAxLjBdLAorLSAgICAgICAgICAgICksCistICAg ICAgICAgICAgbGVhZl90YXJnZXRpZHM9WzBdICogbGVhdmVzLAorLSAgICAgICAgICAgIGxlYWZf d2VpZ2h0cz1tYWtlX3RlbnNvcigibGVhZl93ZWlnaHRzIiwgZHR5cGUsIChsZWF2ZXMsKSwgWzFd ICogbGVhdmVzKSwKKy0gICAgICAgICAgICB0cmVlX3Jvb3RzPVswXSwKKy0gICAgICAgICkKKy0K Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4Iiwg ZHR5cGUsICgiQmF0Y2ggU2l6ZSIsICJGZWF0dXJlcyIpKV0sCistICAgICAgICAgICAgW3RyZWVd LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgZHR5cGUsICgiQmF0Y2ggU2l6ZSIsIDUpKV0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01M X0RPTUFJTiwgNSksCistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg MTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFsw XSAqIDYsCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBUZW5z b3JQcm90by5ET1VCTEUsICg5LCksIFsxXSAqIDkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcigibm9kZXNfc3BsaXRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoNSwpLCBbMV0gKiA1KSwK Ky0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWzBdICog NSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIFRlbnNvclBy b3RvLkZMT0FULCAoOSwpLCBbMV0gKiA5KSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Io Im5vZGVzX3NwbGl0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDUsKSwgWzFdICogNSksCistICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFswXSAqIDUsCist ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBUZW5zb3JQcm90by5E T1VCTEUsICgxOCwpLCBbMV0gKiAxOCksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJu b2Rlc19zcGxpdHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCksIFsxXSAqIDUpLAorLSAgICAg ICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbMF0gKiA1LAorLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcigibGVhZl93ZWlnaHRzIiwgVGVuc29yUHJvdG8uRE9V QkxFLCAoOSwpLCBbMV0gKiA5KSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm5vZGVz X3NwbGl0cyIsIFRlbnNvclByb3RvLkZMT0FULCAoNSwpLCBbMV0gKiA1KSwKKy0gICAgICAgICAg ICApLAorLSAgICAgICAgXQorLSAgICApCistICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhf TUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQorLSAg ICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX2ZhaWxzX2lmX2ludmFsaWRfYXR0cmlidXRlcygKKy0g ICAgICAgIHNlbGYsCistICAgICAgICBub2Rlc190cnVlbm9kZWlkcywKKy0gICAgICAgIGxlYWZf d2VpZ2h0cywKKy0gICAgICAgIG5vZGVzX3NwbGl0cywKKy0gICAgKSAtPiBOb25lOgorLSAgICAg ICAgaW50ZXJpb3Jfbm9kZXMgPSA1CistICAgICAgICBsZWF2ZXMgPSA5CistICAgICAgICB0cmVl ID0gbWFrZV9ub2RlKAorLSAgICAgICAgICAgICJUcmVlRW5zZW1ibGUiLAorLSAgICAgICAgICAg IFsieCJdLAorLSAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgIGRvbWFpbj1PTk5YX01M X0RPTUFJTiwKKy0gICAgICAgICAgICBuX3RhcmdldHM9NSwKKy0gICAgICAgICAgICBub2Rlc19m ZWF0dXJlaWRzPVswXSAqIGludGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX3NwbGl0 cz1ub2Rlc19zcGxpdHMsCistICAgICAgICAgICAgbm9kZXNfbW9kZXM9bWFrZV90ZW5zb3IoCist ICAgICAgICAgICAgICAgICJub2Rlc19tb2RlcyIsCistICAgICAgICAgICAgICAgIFRlbnNvclBy b3RvLlVJTlQ4LAorLSAgICAgICAgICAgICAgICAoaW50ZXJpb3Jfbm9kZXMsKSwKKy0gICAgICAg ICAgICAgICAgWzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICBub2Rlc190cnVlbm9kZWlkcz1ub2Rlc190cnVlbm9kZWlkcywKKy0gICAgICAgICAgICBu b2Rlc19mYWxzZW5vZGVpZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbm9k ZXNfdHJ1ZWxlYWZzPVswXSAqIGludGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX2Zh bHNlbGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbGVhZl90YXJnZXRp ZHM9WzBdICogbGVhdmVzLAorLSAgICAgICAgICAgIGxlYWZfd2VpZ2h0cz1sZWFmX3dlaWdodHMs CistICAgICAgICAgICAgdHJlZV9yb290cz1bMF0sCistICAgICAgICApCistCistICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3Rv LkRPVUJMRSwgKCJCYXRjaCBTaXplIiwgIkZlYXR1cmVzIikpXSwKKy0gICAgICAgICAgICBbdHJl ZV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFJh aXNlcygKKy0gICAgICAgICAgICBvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwK Ky0gICAgICAgICAgICBzZWxmLl9pbmZlcnJlZCwKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9O TlhfTUxfRE9NQUlOLCA1KSwKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCAxMSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKyAgICAgQHVuaXR0ZXN0 LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1s IG9wZXJhdG9ycyIpCisgICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfY2xhc3NpZmllcihzZWxm KSAtPiBOb25lOgorICAgICAgICAgdHJlZSA9IG1ha2Vfbm9kZSgKK0BAIC0xMDg3OCw0MCArODM5 MSw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIp OgorICAgICAgICAgICAgIF0sCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoWzEsIDIsIDNdLCBbIjEiLCAiMiIsICIz Il0pLAorLSAgICAgICAgICAgIChOb25lLCBOb25lKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAg ICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0 IGFpLm9ubngubWwgb3BlcmF0b3JzIikKKy0gICAgZGVmIHRlc3Rfb25lX2hvdF9lbmNvZGVyX2Zh aWxzX2lmX2ludmFsaWRfYXR0cmlidXRlcygKKy0gICAgICAgIHNlbGYsIGNhdHNfaW50NjRzLCBj YXRzX3N0cmluZ3MKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsoImlucHV0IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAi TiIsIDMpKV0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCist ICAgICAgICAgICAgICAgICAgICAiT25lSG90RW5jb2RlciIsCistICAgICAgICAgICAgICAgICAg ICBbImlucHV0Il0sCistICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAorLSAgICAgICAg ICAgICAgICAgICAgY2F0c19pbnQ2NHM9Y2F0c19pbnQ2NHMsCistICAgICAgICAgICAgICAgICAg ICBjYXRzX3N0cmluZ3M9Y2F0c19zdHJpbmdzLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWlu PSJhaS5vbm54Lm1sIiwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKy0g ICAgICAgICAgICBvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwKKy0gICAgICAg ICAgICBzZWxmLl9pbmZlcnJlZCwKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9N QUlOLCAxKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSks CistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKyAgICAgQHVuaXR0ZXN0LnNraXBVbmxl c3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9y cyIpCisgICAgIGRlZiB0ZXN0X3ppcF9tYXAoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHBhcmFt cyA9ICgKK0BAIC0xMTA2NiwyOCArODU0NSw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShU ZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgICAgIG9ubnguY2hlY2tlci5jaGVj a19tb2RlbChtb2RlbCwgZnVsbF9jaGVjaz1UcnVlKQorICAgICAgICAgICAgIG9ubnguc2hhcGVf aW5mZXJlbmNlLmluZmVyX3NoYXBlcyhtb2RlbCkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbnN0YW50T2ZTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9p c3N1ZV9jb25zdGFudG9mc2hhcGVfNjEzNShzZWxmLCBfLCB2ZXJzaW9uKToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJzdGQuY29uc3RhbnQiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDEsKSksICJvdXRwdXQiXSwKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudE9m U2hhcGUiLAorLSAgICAgICAgICAgICAgICAgICAgaW5wdXRzPVsic3RkLmNvbnN0YW50Il0sCist ICAgICAgICAgICAgICAgICAgICBvdXRwdXRzPVsib3V0cHV0Il0sCistICAgICAgICAgICAgICAg ICAgICBuYW1lPSJpbnZhbGlkX25vZGUiLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90 ZW5zb3IoInN0ZC5jb25zdGFudCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwpLCAoLTEwLCkpXSwK Ky0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIG9u bnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNlbGYuX2lu ZmVycmVkLAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKyAgICAgZGVmIHRlc3RfcHJvdG9idWZfZGVmYXVsdChzZWxmKSAtPiBOb25lOgorICAgICAg ICAgbW9kZWxfdGV4dCA9ICIiIgorICAgICAgICAgICAgIGlyX3ZlcnNpb246IDgKK2RpZmYgLS1n aXQgYS9vbm54L3Rlc3QvdGVzdF9leHRlcm5hbF9kYXRhLnB5IGIvb25ueC90ZXN0L3Rlc3RfZXh0 ZXJuYWxfZGF0YS5weQoraW5kZXggYzA4NDVmOTZhLi5lYjA3ZjA5ZTggMTAwNjQ0CistLS0gYS9v bm54L3Rlc3QvdGVzdF9leHRlcm5hbF9kYXRhLnB5CisrKysgYi9vbm54L3Rlc3QvdGVzdF9leHRl cm5hbF9kYXRhLnB5CitAQCAtMTQsNyArMTQsNiBAQCBpbXBvcnQgd2FybmluZ3MKKyBmcm9tIHR5 cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORywgQW55CisgCisgaW1wb3J0IG51bXB5IGFzIG5wCist aW1wb3J0IHBhcmFtZXRlcml6ZWQKKyAKKyBpbXBvcnQgb25ueAorIGZyb20gb25ueCBpbXBvcnQg KAorQEAgLTEyMyw2MTYgKzEyMiw2IEBAIGNsYXNzIFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFzZSh1 bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9k ZWxfZmlsZW5hbWUpCisgCisgCistQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygK Ky0gICAgWworLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJwcm90b2J1ZiJ9LAor LSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwKKy0gICAgXQor LSkKKy1jbGFzcyBUZXN0TG9hZEV4dGVybmFsRGF0YShUZXN0TG9hZEV4dGVybmFsRGF0YUJhc2Up OgorLSAgICBkZWYgdGVzdF9sb2FkX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAg ICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5n cmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2Uo dG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0K Ky0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0 ZVswXS50CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRy aWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0ZXN0X2xv YWRfZXh0ZXJuYWxfZGF0YV9mb3JfbW9kZWwoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVs ID0gb25ueC5sb2FkX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZW5hbWUsIHNl bGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAgICAg ICAgKQorLSAgICAgICAgbG9hZF9leHRlcm5hbF9kYXRhX2Zvcl9tb2RlbChtb2RlbCwgc2VsZi50 ZW1wX2RpcikKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRp YWxpemVyWzBdCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShp bml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAg YXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5z b3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9leHRlcm5h bF9kYXRhKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChz ZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAg ICAgdGVtcF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgInNhdmVfY29weSIpCist ICAgICAgICBvcy5ta2Rpcih0ZW1wX2RpcikKKy0gICAgICAgIG5ld19tb2RlbF9maWxlbmFtZSA9 IG9zLnBhdGguam9pbih0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQorLSAgICAgICAgb25ueC5zYXZl X21vZGVsKG1vZGVsLCBuZXdfbW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQpCistCistICAgICAgICBuZXdfbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobmV3X21vZGVsX2Zp bGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJf dGVuc29yID0gbmV3X21vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBucC50ZXN0 aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmlu aXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG5ld19tb2Rl bC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBucC50ZXN0aW5nLmFzc2Vy dF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFs dWUpCistCistCistQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKKy0gICAgWwor LSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJwcm90b2J1ZiJ9LAorLSAgICAgICAg eyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwKKy0gICAgXQorLSkKKy1jbGFz cyBUZXN0TG9hZEV4dGVybmFsRGF0YVNpbmdsZUZpbGUoVGVzdExvYWRFeHRlcm5hbERhdGFCYXNl KToKKy0gICAgZGVmIGNyZWF0ZV9leHRlcm5hbF9kYXRhX3RlbnNvcnMoCistICAgICAgICBzZWxm LCB0ZW5zb3JzX2RhdGE6IGxpc3RbdHVwbGVbbGlzdFtBbnldLCBBbnldXQorLSAgICApIC0+IGxp c3RbVGVuc29yUHJvdG9dOgorLSAgICAgICAgdGVuc29yX2ZpbGVuYW1lID0gInRlbnNvcnMuYmlu IgorLSAgICAgICAgdGVuc29ycyA9IFtdCistCistICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5q b2luKHNlbGYudGVtcF9kaXIsIHRlbnNvcl9maWxlbmFtZSksICJhYiIpIGFzIGRhdGFfZmlsZToK Ky0gICAgICAgICAgICBmb3IgdmFsdWUsIHRlbnNvcl9uYW1lIGluIHRlbnNvcnNfZGF0YToKKy0g ICAgICAgICAgICAgICAgdGVuc29yID0gZnJvbV9hcnJheShucC5hcnJheSh2YWx1ZSkpCistICAg ICAgICAgICAgICAgIG9mZnNldCA9IGRhdGFfZmlsZS50ZWxsKCkKKy0gICAgICAgICAgICAgICAg aWYgb2Zmc2V0ICUgNDA5NiAhPSAwOgorLSAgICAgICAgICAgICAgICAgICAgZGF0YV9maWxlLndy aXRlKGIiXDAiICogKDQwOTYgLSBvZmZzZXQgJSA0MDk2KSkKKy0gICAgICAgICAgICAgICAgICAg IG9mZnNldCA9IG9mZnNldCArIDQwOTYgLSBvZmZzZXQgJSA0MDk2CistCistICAgICAgICAgICAg ICAgIGRhdGFfZmlsZS53cml0ZSh0ZW5zb3IucmF3X2RhdGEpCistICAgICAgICAgICAgICAgIHNl dF9leHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAgICAgICAgICAgdGVuc29yLAorLSAgICAgICAg ICAgICAgICAgICAgbG9jYXRpb249dGVuc29yX2ZpbGVuYW1lLAorLSAgICAgICAgICAgICAgICAg ICAgb2Zmc2V0PW9mZnNldCwKKy0gICAgICAgICAgICAgICAgICAgIGxlbmd0aD1kYXRhX2ZpbGUu dGVsbCgpIC0gb2Zmc2V0LAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgICAgIHRl bnNvci5uYW1lID0gdGVuc29yX25hbWUKKy0gICAgICAgICAgICAgICAgdGVuc29yLkNsZWFyRmll bGQoInJhd19kYXRhIikKKy0gICAgICAgICAgICAgICAgdGVuc29yLmRhdGFfbG9jYXRpb24gPSBv bm54LlRlbnNvclByb3RvLkVYVEVSTkFMCistICAgICAgICAgICAgICAgIHRlbnNvcnMuYXBwZW5k KHRlbnNvcikKKy0KKy0gICAgICAgIHJldHVybiB0ZW5zb3JzCistCistICAgIGRlZiB0ZXN0X2xv YWRfZXh0ZXJuYWxfc2luZ2xlX2ZpbGVfZGF0YShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9k ZWwgPSBvbm54LmxvYWRfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0 aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBo LmluaXRpYWxpemVyWzBdCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19h cnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAg ICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBd LnQKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0 ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9l eHRlcm5hbF9zaW5nbGVfZmlsZV9kYXRhKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbCA9 IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0KQorLQorLSAgICAgICAgdGVtcF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rp ciwgInNhdmVfY29weSIpCistICAgICAgICBvcy5ta2Rpcih0ZW1wX2RpcikKKy0gICAgICAgIG5l d19tb2RlbF9maWxlbmFtZSA9IG9zLnBhdGguam9pbih0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQor LSAgICAgICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBuZXdfbW9kZWxfZmlsZW5hbWUsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBuZXdfbW9kZWwgPSBvbm54LmxvYWRf bW9kZWwobmV3X21vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAg ICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbmV3X21vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBd CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXpl cl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAgYXR0cmlidXRl X3RlbnNvciA9IG5ld19tb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAg ICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwg c2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6 ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAgICAgKFRy dWUsIEZhbHNlKSwKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9zYXZlX2V4dGVy bmFsX2ludmFsaWRfc2luZ2xlX2ZpbGVfZGF0YV9hbmRfY2hlY2soCistICAgICAgICBzZWxmLCB1 c2VfYWJzb2x1dGVfcGF0aDogYm9vbAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBtb2RlbCA9 IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0KQorLQorLSAgICAgICAgbW9kZWxfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9k aXIsICJzYXZlX2NvcHkiKQorLSAgICAgICAgb3MubWtkaXIobW9kZWxfZGlyKQorLQorLSAgICAg ICAgdHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfZGlyID0gb3MucGF0aC5qb2luKAorLSAgICAgICAg ICAgIHNlbGYudGVtcF9kaXIsICJpbnZhbGlkX2V4dGVybmFsX2RhdGEiCistICAgICAgICApCist ICAgICAgICBvcy5ta2Rpcih0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9kaXIpCistCistICAgICAg ICBpZiB1c2VfYWJzb2x1dGVfcGF0aDoKKy0gICAgICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxf ZGF0YV9sb2NhdGlvbiA9IG9zLnBhdGguam9pbigKKy0gICAgICAgICAgICAgICAgdHJhdmVyc2Fs X2V4dGVybmFsX2RhdGFfZGlyLCAidGVuc29ycy5iaW4iCistICAgICAgICAgICAgKQorLSAgICAg ICAgZWxzZToKKy0gICAgICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9sb2NhdGlvbiA9 ICIuLi9pbnZhbGlkX2V4dGVybmFsX2RhdGEvdGVuc29ycy5iaW4iCistCistICAgICAgICBleHRl cm5hbF9kYXRhX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiZXh0ZXJuYWxfZGF0 YSIpCistICAgICAgICBvcy5ta2RpcihleHRlcm5hbF9kYXRhX2RpcikKKy0gICAgICAgIG5ld19t b2RlbF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihtb2RlbF9kaXIsICJtb2RlbC5vbm54IikKKy0K Ky0gICAgICAgIGRlZiBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfbm9fY2hlY2sobW9k ZWw6IE1vZGVsUHJvdG8sIGxvY2F0aW9uOiBzdHIpOgorLSAgICAgICAgICAgIGZvciB0ZW5zb3Ig aW4gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXI6CistICAgICAgICAgICAgICAgIGlmIHRlbnNvci5I YXNGaWVsZCgicmF3X2RhdGEiKToKKy0gICAgICAgICAgICAgICAgICAgIHNldF9leHRlcm5hbF9k YXRhKHRlbnNvciwgbG9jYXRpb24pCistCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVy bmFsX2RhdGFfbm9fY2hlY2soCistICAgICAgICAgICAgbW9kZWwsCistICAgICAgICAgICAgbG9j YXRpb249dHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfbG9jYXRpb24sCistICAgICAgICApCistCist ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJy b3IpOgorLSAgICAgICAgICAgIG9ubnguc2F2ZV9tb2RlbChtb2RlbCwgbmV3X21vZGVsX2ZpbGVw YXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLQorLUBwYXJhbWV0ZXJpemVkLnBh cmFtZXRlcml6ZWRfY2xhc3MoCistICAgIFsKKy0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3Jt YXQiOiAicHJvdG9idWYifSwKKy0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAidGV4 dHByb3RvIn0sCistICAgIF0KKy0pCistY2xhc3MgVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRlcm5h bERhdGEodW5pdHRlc3QuVGVzdENhc2UpOgorLSAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdDogc3Ry ID0gInByb3RvYnVmIgorLQorLSAgICBkZWYgc2V0VXAoc2VsZikgLT4gTm9uZToKKy0gICAgICAg IHNlbGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCistICAg ICAgICBzZWxmLnRlbXBfZGlyOiBzdHIgPSBzZWxmLl90ZW1wX2Rpcl9vYmoubmFtZQorLSAgICAg ICAgc2VsZi5pbml0aWFsaXplcl92YWx1ZSA9IG5wLmFyYW5nZSg2KS5yZXNoYXBlKDMsIDIpLmFz dHlwZShucC5mbG9hdDMyKSArIDUxMgorLSAgICAgICAgc2VsZi5hdHRyaWJ1dGVfdmFsdWUgPSBu cC5hcmFuZ2UoNikucmVzaGFwZSgyLCAzKS5hc3R5cGUobnAuZmxvYXQzMikgKyAyNTYKKy0gICAg ICAgIHNlbGYubW9kZWwgPSBzZWxmLmNyZWF0ZV90ZXN0X21vZGVsX3Byb3RvKCkKKy0KKy0gICAg ZGVmIGdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKHNlbGYpOgorLSAgICAgICAgcmV0dXJuIG9zLnBh dGguam9pbihzZWxmLnRlbXBfZGlyLCBzdHIodXVpZC51dWlkNCgpKSArICIub25ueCIpCistCist ICAgIGRlZiBjcmVhdGVfZGF0YV90ZW5zb3JzKAorLSAgICAgICAgc2VsZiwgdGVuc29yc19kYXRh OiBsaXN0W3R1cGxlW2xpc3RbQW55XSwgQW55XV0KKy0gICAgKSAtPiBsaXN0W1RlbnNvclByb3Rv XToKKy0gICAgICAgIHRlbnNvcnMgPSBbXQorLSAgICAgICAgZm9yIHZhbHVlLCB0ZW5zb3JfbmFt ZSBpbiB0ZW5zb3JzX2RhdGE6CistICAgICAgICAgICAgdGVuc29yID0gZnJvbV9hcnJheShucC5h cnJheSh2YWx1ZSkpCistICAgICAgICAgICAgdGVuc29yLm5hbWUgPSB0ZW5zb3JfbmFtZQorLSAg ICAgICAgICAgIHRlbnNvcnMuYXBwZW5kKHRlbnNvcikKKy0KKy0gICAgICAgIHJldHVybiB0ZW5z b3JzCistCistICAgIGRlZiBjcmVhdGVfdGVzdF9tb2RlbF9wcm90byhzZWxmKSAtPiBNb2RlbFBy b3RvOgorLSAgICAgICAgdGVuc29ycyA9IHNlbGYuY3JlYXRlX2RhdGFfdGVuc29ycygKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgIChzZWxmLmF0dHJpYnV0ZV92YWx1ZSwgImF0dHJp YnV0ZV92YWx1ZSIpLAorLSAgICAgICAgICAgICAgICAoc2VsZi5pbml0aWFsaXplcl92YWx1ZSwg ImlucHV0X3ZhbHVlIiksCistICAgICAgICAgICAgXQorLSAgICAgICAgKQorLQorLSAgICAgICAg Y29uc3RhbnRfbm9kZSA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAiQ29u c3RhbnQiLCBpbnB1dHM9W10sIG91dHB1dHM9WyJ2YWx1ZXMiXSwgdmFsdWU9dGVuc29yc1swXQor LSAgICAgICAgKQorLQorLSAgICAgICAgaW5wdXRzID0gWworLSAgICAgICAgICAgIGhlbHBlci5t YWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAgICAgICAgICAiaW5wdXRfdmFsdWUiLCBv bm54LlRlbnNvclByb3RvLkZMT0FULCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlLnNoYXBlCistICAg ICAgICAgICAgKQorLSAgICAgICAgXQorLQorLSAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbY29uc3RhbnRfbm9kZV0sCistICAgICAgICAgICAgInRlc3Rf Z3JhcGgiLAorLSAgICAgICAgICAgIGlucHV0cz1pbnB1dHMsCistICAgICAgICAgICAgb3V0cHV0 cz1bXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bdGVuc29yc1sxXV0sCistICAgICAgICAp CistICAgICAgICByZXR1cm4gaGVscGVyLm1ha2VfbW9kZWwoZ3JhcGgpCistCistICAgIEB1bml0 dGVzdC5za2lwSWYoCistICAgICAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdCAhPSAicHJvdG9idWYi LAorLSAgICAgICAgImNoZWNrX21vZGVsIHN1cHBvcnRzIHByb3RvYnVmIG9ubHkgd2hlbiBwcm92 aWRlZCBhcyBhIHBhdGgiLAorLSAgICApCistICAgIGRlZiB0ZXN0X2NoZWNrX21vZGVsKHNlbGYp IC0+IE5vbmU6CistICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWwpCistCist ICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV93aXRoX3NpemVfdGhy ZXNob2xkKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdl dF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0KKy0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0 ZXJuYWxfZGF0YShzZWxmLm1vZGVsLCBzaXplX3RocmVzaG9sZD0xMDI0KQorLSAgICAgICAgb25u eC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0 aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2Zp bGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxpemVy X3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFzc2Vy dEZhbHNlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLQor LSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfd2l0aG91dF9zaXpl X3RocmVzaG9sZChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2Vs Zi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4 dGVybmFsX2RhdGEoc2VsZi5tb2RlbCwgc2l6ZV90aHJlc2hvbGQ9MCkKKy0gICAgICAgIG9ubngu c2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlv bl9mb3JtYXQpCistCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxl X3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90 ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRU cnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29y KSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3RfY29udmVydF9tb2Rl bF90b19leHRlcm5hbF9kYXRhX2Zyb21fb25lX2ZpbGVfd2l0aF9sb2NhdGlvbihzZWxmKSAtPiBO b25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxl bmFtZSgpCistICAgICAgICBleHRlcm5hbF9kYXRhX2ZpbGUgPSBzdHIodXVpZC51dWlkNCgpKQor LQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAg IHNlbGYubW9kZWwsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAg ICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1UcnVlLAorLSAgICAgICAgICAgIGxvY2F0aW9uPWV4 dGVybmFsX2RhdGFfZmlsZSwKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChz ZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCist CistICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNl bGYudGVtcF9kaXIsIGV4dGVybmFsX2RhdGFfZmlsZSkpKQorLQorLSAgICAgICAgbW9kZWwgPSBv bm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 KQorLQorLSAgICAgICAgIyB0ZXN0IGNvbnZlcnQgbW9kZWwgZnJvbSBleHRlcm5hbCBkYXRhCist ICAgICAgICBjb252ZXJ0X21vZGVsX2Zyb21fZXh0ZXJuYWxfZGF0YShtb2RlbCkKKy0gICAgICAg IG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLSAgICAg ICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXph dGlvbl9mb3JtYXQpCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxl X3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90 ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRG YWxzZShsZW4oaW5pdGlhbGl6ZXJfdGVuc29yLmV4dGVybmFsX2RhdGEpKQorLSAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChpbml0aWFsaXplcl90ZW5zb3IuZGF0YV9sb2NhdGlvbiwgVGVuc29yUHJv dG8uREVGQVVMVCkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5 KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAg ICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAor LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oYXR0cmlidXRlX3RlbnNvci5leHRlcm5hbF9k YXRhKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cmlidXRlX3RlbnNvci5kYXRhX2xv Y2F0aW9uLCBUZW5zb3JQcm90by5ERUZBVUxUKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRf YWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVl KQorLQorLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfZnJvbV9v bmVfZmlsZV93aXRob3V0X2xvY2F0aW9uX3VzZXNfbW9kZWxfbmFtZSgKKy0gICAgICAgIHNlbGYs CistICAgICkgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3Rl bXBfbW9kZWxfZmlsZW5hbWUoKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5h bF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTAsIGFsbF90 ZW5zb3JzX3RvX29uZV9maWxlPVRydWUKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9t b2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQpCistCistICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmls ZV9wYXRoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRo LmpvaW4oc2VsZi50ZW1wX2RpciwgbW9kZWxfZmlsZV9wYXRoKSkpCistCistICAgIGRlZiB0ZXN0 X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9vbmVfZmlsZV9wZXJfdGVuc29yX3dpdGhv dXRfYXR0cmlidXRlKAorLSAgICAgICAgc2VsZiwKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAg bW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistCistICAg ICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCistICAgICAgICAgICAgc2VsZi5t b2RlbCwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGFsbF90 ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRl PUZhbHNlLAorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWws IG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQorLSAgICAg ICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBf ZGlyLCAiaW5wdXRfdmFsdWUiKSkpCistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGgu aXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiYXR0cmlidXRlX3ZhbHVlIikpKQor LQorLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfb25lX2ZpbGVf cGVyX3RlbnNvcl93aXRoX2F0dHJpYnV0ZSgKKy0gICAgICAgIHNlbGYsCistICAgICkgLT4gTm9u ZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5h bWUoKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAg ICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAg ICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAgICAgICAgICBjb252 ZXJ0X2F0dHJpYnV0ZT1UcnVlLAorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVs KHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkK Ky0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3Bh dGgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9p bihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCistICAgICAgICBzZWxmLmFzc2VydFRy dWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJhdHRyaWJ1dGVf dmFsdWUiKSkpCistCistICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0 YV9kb2VzX25vdF9jb252ZXJ0X2F0dHJpYnV0ZV92YWx1ZXMoCistICAgICAgICBzZWxmLAorLSAg ICApIC0+IE5vbmU6CistICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21v ZGVsX2ZpbGVuYW1lKCkKKy0KKy0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0 YSgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xk PTAsCistICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9RmFsc2UsCistICAgICAgICAgICAg YWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCistICAgICAgICApCistICAgICAgICBvbm54 LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRp b25fZm9ybWF0KQorLQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9z LnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCistICAgICAgICBzZWxm LmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAi YXR0cmlidXRlX3ZhbHVlIikpKQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwo bW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5p dGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24i KSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0 dHJpYnV0ZVswXS50CistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3Iu SGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAgZGVmIHRlc3RfY29udmVydF9tb2Rl bF90b19leHRlcm5hbF9kYXRhX2NvbnZlcnRzX2F0dHJpYnV0ZV92YWx1ZXMoc2VsZikgLT4gTm9u ZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5h bWUoKQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAg ICAgICAgIHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTAsIGNvbnZlcnRfYXR0cmlidXRlPVRy dWUKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2Rl bF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBtb2Rl bCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9m b3JtYXQpCistCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0 aWFsaXplclswXQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXko aW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0gICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24i KSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0 dHJpYnV0ZVswXS50CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJh eShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistICAgICAgICBzZWxm LmFzc2VydFRydWUoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQor LQorLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX2RvZXNfbm90X2NvbnZlcnRfdG9fZXh0ZXJuYWxf ZGF0YV9hbmRfc2F2ZXNfdGhlX21vZGVsKAorLSAgICAgICAgc2VsZiwKKy0gICAgKSAtPiBOb25l OgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFt ZSgpCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAgICAgc2VsZi5tb2RlbCwK Ky0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJpYWxp emF0aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9RmFsc2Us CistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9k ZWxfZmlsZV9wYXRoKSkKKy0KKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVs X2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxp emVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFz c2VydEZhbHNlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQor LQorLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmli dXRlWzBdLnQKKy0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5IYXNG aWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX2RvZXNf Y29udmVydF9hbmRfc2F2ZXNfdGhlX21vZGVsKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2Rl bF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0gICAgICAgIG9u bnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAgICAgIG1v ZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAor LSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAgIGFs bF90ZW5zb3JzX3RvX29uZV9maWxlPVRydWUsCistICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwK Ky0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0 cmlidXRlPUZhbHNlLAorLSAgICAgICAgKQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRf bW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAg ICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0g ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFf bG9jYXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5 KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAg ICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAor LSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRh X2xvY2F0aW9uIikpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJh eShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0 ZXN0X3NhdmVfbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9u ZToKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5h bWUoKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWws CistICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFs aXphdGlvbl9mb3JtYXQsCistICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUs CistICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9s ZD0wLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAorLSAgICAgICAgKQor LSAgICAgICAgIyBTYXZlIHdpdGhvdXQgbG9hZF9leHRlcm5hbF9kYXRhCistICAgICAgICBtb2Rl bCA9IG9ubngubG9hZF9tb2RlbCgKKy0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAgICAgICAg KQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIG1vZGVsLAorLSAgICAg ICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAg ICAgICAgIGxvY2F0aW9uPU5vbmUsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0g ICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKKy0gICAgICAgICkKKy0gICAgICAg ICMgTG9hZCB0aGUgc2F2ZWQgbW9kZWwgYWdhaW47IE9ubHkgd29ya3MgaWYgdGhlIHNhdmVkIHBh dGggaXMgdW5kZXIgdGhlIHNhbWUgZGlyZWN0b3J5CistICAgICAgICBtb2RlbCA9IG9ubngubG9h ZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCist ICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQor LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0 YV9sb2NhdGlvbiIpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJy YXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAg ICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50 CistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRh dGFfbG9jYXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2Fy cmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0KKy0gICAgZGVm IHRlc3Rfc2F2ZV9tb2RlbF93aXRoX2V4aXN0aW5nX3Jhd19kYXRhX3Nob3VsZF9vdmVycmlkZShz ZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9t b2RlbF9maWxlbmFtZSgpCistICAgICAgICBvcmlnaW5hbF9yYXdfZGF0YSA9IHNlbGYubW9kZWwu Z3JhcGguaW5pdGlhbGl6ZXJbMF0ucmF3X2RhdGEKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgK Ky0gICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwK Ky0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAorLSAgICAgICAgICAgIHNh dmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAs CistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9k ZWxfZmlsZV9wYXRoKSkKKy0KKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKAorLSAg ICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9h ZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAgICAgICApCistICAgICAgICBpbml0aWFsaXplcl90 ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgaW5pdGlhbGl6ZXJf dGVuc29yLnJhd19kYXRhID0gYiJkdW1tcHlfcmF3X2RhdGEiCistICAgICAgICAjIElmIHJhd19k YXRhIGFuZCBleHRlcm5hbCB0ZW5zb3IgZXhpc3QgYXQgdGhlIHNhbWUgdGltZSwgb3ZlcnJpZGUg ZXhpc3RpbmcgcmF3X2RhdGEKKy0gICAgICAgIGxvYWRfZXh0ZXJuYWxfZGF0YV9mb3JfdGVuc29y KGluaXRpYWxpemVyX3RlbnNvciwgc2VsZi50ZW1wX2RpcikKKy0gICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwoaW5pdGlhbGl6ZXJfdGVuc29yLnJhd19kYXRhLCBvcmlnaW5hbF9yYXdfZGF0YSkKKy0K Ky0KKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAorLSAgICBbCistICAgICAg ICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVmIn0sCistICAgICAgICB7InNlcmlh bGl6YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAorLSAgICBdCistKQorLWNsYXNzIFRlc3RF eHRlcm5hbERhdGFUb0FycmF5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgc2VyaWFsaXphdGlv bl9mb3JtYXQ6IHN0ciA9ICJwcm90b2J1ZiIKKy0KKy0gICAgZGVmIHNldFVwKHNlbGYpIC0+IE5v bmU6CistICAgICAgICBzZWxmLl90ZW1wX2Rpcl9vYmogPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJl Y3RvcnkoKQorLSAgICAgICAgc2VsZi50ZW1wX2Rpcjogc3RyID0gc2VsZi5fdGVtcF9kaXJfb2Jq Lm5hbWUKKy0gICAgICAgIHNlbGYuX21vZGVsX2ZpbGVfcGF0aDogc3RyID0gb3MucGF0aC5qb2lu KHNlbGYudGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0gICAgICAgIHNlbGYubGFyZ2VfZGF0YSA9 IG5wLnJhbmRvbS5yYW5kKDEwLCA2MCwgMTAwKS5hc3R5cGUobnAuZmxvYXQzMikKKy0gICAgICAg IHNlbGYuc21hbGxfZGF0YSA9ICgyMDAsIDMwMCkKKy0gICAgICAgIHNlbGYubW9kZWwgPSBzZWxm LmNyZWF0ZV90ZXN0X21vZGVsKCkKKy0KKy0gICAgQHByb3BlcnR5CistICAgIGRlZiBtb2RlbF9m aWxlX3BhdGgoc2VsZik6CistICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWxfZmlsZV9wYXRoCist CistICAgIGRlZiB0ZWFyRG93bihzZWxmKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5fdGVtcF9k aXJfb2JqLmNsZWFudXAoKQorLQorLSAgICBkZWYgY3JlYXRlX3Rlc3RfbW9kZWwoc2VsZikgLT4g TW9kZWxQcm90bzoKKy0gICAgICAgIFggPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi WCIsIFRlbnNvclByb3RvLkZMT0FULCBzZWxmLmxhcmdlX2RhdGEuc2hhcGUpCistICAgICAgICBp bnB1dF9pbml0ID0gaGVscGVyLm1ha2VfdGVuc29yKAorLSAgICAgICAgICAgIG5hbWU9IlgiLAor LSAgICAgICAgICAgIGRhdGFfdHlwZT1UZW5zb3JQcm90by5GTE9BVCwKKy0gICAgICAgICAgICBk aW1zPXNlbGYubGFyZ2VfZGF0YS5zaGFwZSwKKy0gICAgICAgICAgICB2YWxzPW9ubngubnVtcHlf aGVscGVyLnRvYnl0ZXNfbGl0dGxlX2VuZGlhbihzZWxmLmxhcmdlX2RhdGEpLAorLSAgICAgICAg ICAgIHJhdz1UcnVlLAorLSAgICAgICAgKQorLQorLSAgICAgICAgc2hhcGVfZGF0YSA9IG5wLmFy cmF5KHNlbGYuc21hbGxfZGF0YSwgbnAuaW50NjQpCistICAgICAgICBzaGFwZV9pbml0ID0gaGVs cGVyLm1ha2VfdGVuc29yKAorLSAgICAgICAgICAgIG5hbWU9IlNoYXBlIiwKKy0gICAgICAgICAg ICBkYXRhX3R5cGU9VGVuc29yUHJvdG8uSU5UNjQsCistICAgICAgICAgICAgZGltcz1zaGFwZV9k YXRhLnNoYXBlLAorLSAgICAgICAgICAgIHZhbHM9b25ueC5udW1weV9oZWxwZXIudG9ieXRlc19s aXR0bGVfZW5kaWFuKHNoYXBlX2RhdGEpLAorLSAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAg ICAgKQorLSAgICAgICAgQyA9IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJDIiwgVGVu c29yUHJvdG8uSU5UNjQsIHNlbGYuc21hbGxfZGF0YSkKKy0KKy0gICAgICAgIHJlc2hhcGUgPSBv bm54LmhlbHBlci5tYWtlX25vZGUoCistICAgICAgICAgICAgIlJlc2hhcGUiLAorLSAgICAgICAg ICAgIGlucHV0cz1bIlgiLCAiU2hhcGUiXSwKKy0gICAgICAgICAgICBvdXRwdXRzPVsiWSJdLAor LSAgICAgICAgKQorLSAgICAgICAgY2FzdCA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKKy0gICAg ICAgICAgICAiQ2FzdCIsIGlucHV0cz1bIlkiXSwgb3V0cHV0cz1bIkMiXSwgdG89VGVuc29yUHJv dG8uSU5UNjQKKy0gICAgICAgICkKKy0KKy0gICAgICAgIGdyYXBoX2RlZiA9IGhlbHBlci5tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFtyZXNoYXBlLCBjYXN0XSwKKy0gICAgICAgICAgICAidGVz dC1tb2RlbCIsCistICAgICAgICAgICAgW1hdLAorLSAgICAgICAgICAgIFtDXSwKKy0gICAgICAg ICAgICBpbml0aWFsaXplcj1baW5wdXRfaW5pdCwgc2hhcGVfaW5pdF0sCistICAgICAgICApCist ICAgICAgICByZXR1cm4gaGVscGVyLm1ha2VfbW9kZWwoZ3JhcGhfZGVmLCBwcm9kdWNlcl9uYW1l PSJvbm54LWV4YW1wbGUiKQorLQorLSAgICBAdW5pdHRlc3Quc2tpcElmKAorLSAgICAgICAgc2Vy aWFsaXphdGlvbl9mb3JtYXQgIT0gInByb3RvYnVmIiwKKy0gICAgICAgICJjaGVja19tb2RlbCBz dXBwb3J0cyBwcm90b2J1ZiBvbmx5IHdoZW4gcHJvdmlkZWQgYXMgYSBwYXRoIiwKKy0gICAgKQor LSAgICBkZWYgdGVzdF9jaGVja19tb2RlbChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgY2hlY2tl ci5jaGVja19tb2RlbChzZWxmLm1vZGVsKQorLQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX2luZmVy ZW5jZV93aXRoX2V4dGVybmFsX2RhdGFfZmFpbChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgb25u eC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgc2Vs Zi5tb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1h dCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKKy0gICAgICAgICAg ICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAgICAgICAgICBzaXplX3RocmVz aG9sZD0wLAorLSAgICAgICAgKQorLSAgICAgICAgbW9kZWxfd2l0aG91dF9leHRlcm5hbF9kYXRh ID0gb25ueC5sb2FkKAorLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNl cmlhbGl6YXRpb25fZm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKKy0gICAgICAgICkK Ky0gICAgICAgICMgU2hhcGUgaW5mZXJlbmNlIG9mIFJlc2hhcGUgdXNlcyBQYXJzZURhdGEKKy0g ICAgICAgICMgUGFyc2VEYXRhIGNhbm5vdCBoYW5kbGUgZXh0ZXJuYWwgZGF0YSBhbmQgc2hvdWxk IHRocm93IHRoZSBlcnJvciBhcyBmb2xsb3dzOgorLSAgICAgICAgIyBDYW5ub3QgcGFyc2UgZGF0 YSBmcm9tIGV4dGVybmFsIHRlbnNvcnMuIFBsZWFzZSBsb2FkIGV4dGVybmFsIGRhdGEgaW50byBy YXcgZGF0YSBmb3IgdGVuc29yOiBTaGFwZQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCist ICAgICAgICAgICAgc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAorLSAgICAgICAgICAg IHNoYXBlX2luZmVyZW5jZS5pbmZlcl9zaGFwZXMsCistICAgICAgICAgICAgbW9kZWxfd2l0aG91 dF9leHRlcm5hbF9kYXRhLAorLSAgICAgICAgICAgIHN0cmljdF9tb2RlPVRydWUsCistICAgICAg ICApCistCistICAgIGRlZiB0ZXN0X3RvX2FycmF5X3dpdGhfZXh0ZXJuYWxfZGF0YShzZWxmKSAt PiBOb25lOgorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9k ZWwsCistICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2Vs Zi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2Rh dGE9VHJ1ZSwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKKy0g ICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgKQorLSAgICAgICAgIyByYXdf ZGF0YSBvZiBleHRlcm5hbCB0ZW5zb3IgaXMgbm90IGxvYWRlZAorLSAgICAgICAgbW9kZWwgPSBv bm54LmxvYWQoCistICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFs aXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAgICAgICAgKQorLSAg ICAgICAgIyBTcGVjaWZ5IHNlbGYudGVtcF9kaXIgdG8gbG9hZCBleHRlcm5hbCB0ZW5zb3IKKy0g ICAgICAgIGxvYWRlZF9sYXJnZV9kYXRhID0gdG9fYXJyYXkobW9kZWwuZ3JhcGguaW5pdGlhbGl6 ZXJbMF0sIHNlbGYudGVtcF9kaXIpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9z ZShsb2FkZWRfbGFyZ2VfZGF0YSwgc2VsZi5sYXJnZV9kYXRhKQorLQorLSAgICBkZWYgdGVzdF9z YXZlX21vZGVsX3dpdGhfZXh0ZXJuYWxfZGF0YV9tdWx0aXBsZV90aW1lcyhzZWxmKSAtPiBOb25l OgorLSAgICAgICAgIyBUZXN0IG9ubnguc2F2ZSBzaG91bGQgcmVzcGVjdGl2ZWx5IGhhbmRsZSB0 eXBpY2FsIHRlbnNvciBhbmQgZXh0ZXJuYWwgdGVuc29yIHByb3Blcmx5CistICAgICAgICAjIDFz dCBzYXZlOiBzYXZlIHR3byB0ZW5zb3JzIHdoaWNoIGhhdmUgcmF3X2RhdGEKKy0gICAgICAgICMg T25seSB3X2xhcmdlIHdpbGwgYmUgc3RvcmVkIGFzIGV4dGVybmFsIHRlbnNvcnMgc2luY2UgaXQn cyBsYXJnZXIgdGhhbiAxMDI0CistICAgICAgICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAg ICAgc2VsZi5tb2RlbCwKKy0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKKy0gICAg ICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNf ZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxl PUZhbHNlLAorLSAgICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCistICAgICAgICAgICAgc2l6ZV90 aHJlc2hvbGQ9MTAyNCwKKy0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVlLAorLSAg ICAgICAgKQorLSAgICAgICAgbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsID0gb25ueC5s b2FkKAorLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRp b25fZm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKKy0gICAgICAgICkKKy0gICAgICAg IGxhcmdlX2lucHV0X3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbC5ncmFw aC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxhcmdlX2lucHV0X3Rl bnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3Nl cnRfYWxsY2xvc2UoCistICAgICAgICAgICAgdG9fYXJyYXkobGFyZ2VfaW5wdXRfdGVuc29yLCBz ZWxmLnRlbXBfZGlyKSwgc2VsZi5sYXJnZV9kYXRhCistICAgICAgICApCistCistICAgICAgICBz bWFsbF9zaGFwZV90ZW5zb3IgPSBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGgu aW5pdGlhbGl6ZXJbMV0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc21hbGxfc2hhcGVf dGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistICAgICAgICBucC50ZXN0aW5nLmFz c2VydF9hbGxjbG9zZSh0b19hcnJheShzbWFsbF9zaGFwZV90ZW5zb3IpLCBzZWxmLnNtYWxsX2Rh dGEpCistCistICAgICAgICAjIDJuZCBzYXZlOiBvbmUgdGVuc29yIGhhcyByYXdfZGF0YSAoc21h bGwpOyBvbmUgZXh0ZXJuYWwgdGVuc29yIChsYXJnZSkKKy0gICAgICAgICMgU2F2ZSB0aGVtIGJv dGggYXMgZXh0ZXJuYWwgdGVuc29ycyB0aGlzIHRpbWUKKy0gICAgICAgIG9ubnguc2F2ZV9tb2Rl bCgKKy0gICAgICAgICAgICBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwsCistICAgICAg ICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0 aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKKy0g ICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAgICAgICAgICBs b2NhdGlvbj1Ob25lLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAg ICAgY29udmVydF9hdHRyaWJ1dGU9VHJ1ZSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIG1vZGVs X3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbCA9IG9ubngubG9hZCgKKy0gICAgICAgICAgICBzZWxm Lm1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5h bF9kYXRhPUZhbHNlCistICAgICAgICApCistICAgICAgICBsYXJnZV9pbnB1dF90ZW5zb3IgPSBt b2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAg ICAgIHNlbGYuYXNzZXJ0VHJ1ZShsYXJnZV9pbnB1dF90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9j YXRpb24iKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAorLSAgICAgICAg ICAgIHRvX2FycmF5KGxhcmdlX2lucHV0X3RlbnNvciwgc2VsZi50ZW1wX2RpciksIHNlbGYubGFy Z2VfZGF0YQorLSAgICAgICAgKQorLQorLSAgICAgICAgc21hbGxfc2hhcGVfdGVuc29yID0gbW9k ZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzFdCistICAgICAg ICBzZWxmLmFzc2VydFRydWUoc21hbGxfc2hhcGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0 aW9uIikpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSgKKy0gICAgICAgICAg ICB0b19hcnJheShzbWFsbF9zaGFwZV90ZW5zb3IsIHNlbGYudGVtcF9kaXIpLCBzZWxmLnNtYWxs X2RhdGEKKy0gICAgICAgICkKKy0KKy0KKyBjbGFzcyBUZXN0Tm90QWxsb3dUb0xvYWRFeHRlcm5h bERhdGFPdXRzaWRlTW9kZWxEaXJlY3RvcnkoVGVzdExvYWRFeHRlcm5hbERhdGFCYXNlKToKKyAg ICAgIiIiRXNzZW50aWFsIHRlc3QgdG8gY2hlY2sgdGhhdCBvbm54ICh2YWxpZGF0ZSkgQysrIGNv ZGUgd2lsbCBub3QgYWxsb3cgdG8gbG9hZCBleHRlcm5hbF9kYXRhIG91dHNpZGUgdGhlIG1vZGVs CisgICAgIGRpcmVjdG9yeS4KK0BAIC03OTcsMTcgKzE4Niw2IEBAIGNsYXNzIFRlc3ROb3RBbGxv d1RvTG9hZEV4dGVybmFsRGF0YU91dHNpZGVNb2RlbERpcmVjdG9yeU9uV2luZG93cygKKyAgICAg ICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUpCisgCisgCist Y2xhc3MgVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRlcm5hbERhdGFXaXRoUGF0aChUZXN0U2F2ZUFs bFRlbnNvcnNBc0V4dGVybmFsRGF0YSk6CistICAgIGRlZiBnZXRfdGVtcF9tb2RlbF9maWxlbmFt ZShzZWxmKSAtPiBwYXRobGliLlBhdGg6CistICAgICAgICByZXR1cm4gcGF0aGxpYi5QYXRoKHN1 cGVyKCkuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKSkKKy0KKy0KKy1jbGFzcyBUZXN0RXh0ZXJu YWxEYXRhVG9BcnJheVdpdGhQYXRoKFRlc3RFeHRlcm5hbERhdGFUb0FycmF5KToKKy0gICAgQHBy b3BlcnR5CistICAgIGRlZiBtb2RlbF9maWxlX3BhdGgoc2VsZikgLT4gcGF0aGxpYi5QYXRoOgor LSAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzZWxmLl9tb2RlbF9maWxlX3BhdGgpCistCist CisgY2xhc3MgVGVzdEZ1bmN0aW9uc0FuZFN1YkdyYXBocyh1bml0dGVzdC5UZXN0Q2FzZSk6Cisg ICAgIGRlZiBzZXRVcChzZWxmKSAtPiBOb25lOgorICAgICAgICAgc2VsZi5fdGVtcF9kaXJfb2Jq ID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3Qv dmVyc2lvbl9jb252ZXJ0ZXIvYXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5IGIvb25ueC90ZXN0 L3ZlcnNpb25fY29udmVydGVyL2F1dG9tYXRpY19kb3duZ3JhZGVfdGVzdC5weQoraW5kZXggYTk0 YWVhMWE5Li5mNjM5ZDQ0ZjggMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0 ZXIvYXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvdmVyc2lvbl9j b252ZXJ0ZXIvYXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5CitAQCAtNyw3ICs3LDYgQEAgaW1w b3J0IHVuaXR0ZXN0CisgCisgaW1wb3J0IGF1dG9tYXRpY19jb252ZXJzaW9uX3Rlc3RfYmFzZQor IGltcG9ydCBudW1weSBhcyBucAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisgCisgaW1wb3J0IG9u bngKKyBmcm9tIG9ubnggaW1wb3J0IGhlbHBlcgorQEAgLTIyLDM1ICsyMSw2IEBAIGNsYXNzIFRl c3RBdXRvbWF0aWNEb3duZ3JhZGUoYXV0b21hdGljX2NvbnZlcnNpb25fdGVzdF9iYXNlLlRlc3RB dXRvbWF0aWNDb252ZXJzCisgICAgIGRlZiBfdGVzdF9vcF9kb3duZ3JhZGUoc2VsZiwgb3A6IHN0 ciwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIHNlbGYuX3Rlc3Rfb3BfY29udmVyc2lvbihv cCwgKmFyZ3MsICoqa3dhcmdzLCBpc191cGdyYWRlPUZhbHNlKQorIAorLSAgICBAcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAiUmVk dWNlTDEiLAorLSAgICAgICAgICAgICJSZWR1Y2VMMiIsCistICAgICAgICAgICAgIlJlZHVjZUxv Z1N1bSIsCistICAgICAgICAgICAgIlJlZHVjZUxvZ1N1bUV4cCIsCistICAgICAgICAgICAgIlJl ZHVjZU1lYW4iLAorLSAgICAgICAgICAgICJSZWR1Y2VNYXgiLAorLSAgICAgICAgICAgICJSZWR1 Y2VNaW4iLAorLSAgICAgICAgICAgICJSZWR1Y2VQcm9kIiwKKy0gICAgICAgICAgICAiUmVkdWNl U3VtIiwKKy0gICAgICAgICAgICAiUmVkdWNlU3VtU3F1YXJlIiwKKy0gICAgICAgIF0KKy0gICAg KQorLSAgICBkZWYgdGVzdF9yZWR1Y2Vfb3BzKHNlbGYsIG9wKSAtPiBOb25lOgorLSAgICAgICAg IyBUT0RPOiBuZWVkIHRvIGFkZCB0ZXN0IGNhc2VzIGZvciBtaXNzaW5nIGF4ZXMgaW5wdXQgd2hp Y2ggZGVwZW5kcyBvbiB0aGlzIHByOgorLSAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vb25u eC9vbm54L3B1bGwvNTYxMworLSAgICAgICAgYXhlcyA9IGhlbHBlci5tYWtlX3RlbnNvcigKKy0g ICAgICAgICAgICAiYiIsIG9ubnguVGVuc29yUHJvdG8uSU5UNjQsIGRpbXM9WzNdLCB2YWxzPW5w LmFycmF5KFswLCAxLCAyXSkKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX3Rlc3Rfb3BfZG93 bmdyYWRlKAorLSAgICAgICAgICAgIG9wLAorLSAgICAgICAgICAgIGZyb21fb3BzZXQ9MTMsCist ICAgICAgICAgICAgaW5wdXRfc2hhcGVzPVtbMywgNCwgNV0sIFszXV0sCistICAgICAgICAgICAg b3V0cHV0X3NoYXBlcz1bWzEsIDEsIDFdXSwKKy0gICAgICAgICAgICBpbnB1dF90eXBlcz1bb25u eC5UZW5zb3JQcm90by5GTE9BVCwgb25ueC5UZW5zb3JQcm90by5JTlQ2NF0sCistICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9W2F4ZXNdLAorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9kZnQy MF9ub19heGlzKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICBzZWxmLl90ZXN0X21vZGVsX2NvbnZl cnNpb24oCisgICAgICAgICAgICAgdG9fb3BzZXQ9MTksCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0 L3ZlcnNpb25fY29udmVydGVyX3Rlc3QucHkgYi9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXJf dGVzdC5weQoraW5kZXggYTc1ZWRjZGU3Li5mZDA1NzUxOGYgMTAwNjQ0CistLS0gYS9vbm54L3Rl c3QvdmVyc2lvbl9jb252ZXJ0ZXJfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3ZlcnNpb25fY29u dmVydGVyX3Rlc3QucHkKK0BAIC0xMCw3ICsxMCw2IEBAIGltcG9ydCB0ZW1wZmlsZQorIGltcG9y dCB1bml0dGVzdAorIAorIGltcG9ydCBudW1weSBhcyBucAorLWltcG9ydCBwYXJhbWV0ZXJpemVk CisgCisgaW1wb3J0IG9ubngudmVyc2lvbl9jb252ZXJ0ZXIKKyBmcm9tIG9ubnggaW1wb3J0ICgK K0BAIC0yMTE1LDE2OSArMjExNCw2IEBAIGNsYXNzIFRlc3RWZXJzaW9uQ29udmVydGVyKHVuaXR0 ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfbW9kZWwuZ3JhcGgubm9k ZVswXS5hdHRyaWJ1dGVbMF0uaSA9PSAyCisgICAgICAgICBhc3NlcnQgY29udmVydGVkX21vZGVs Lm9wc2V0X2ltcG9ydFswXS52ZXJzaW9uID09IDEyCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBh cmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgicGVyX3RlbnNv ciIsICgxNiwgMyksICgxLCksIE5vbmUsIE5vbmUsIE5vbmUsIFRlbnNvclByb3RvLklOVDgsIFRy dWUpLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgInBlcl9heGlzX25vbmVfYmxv Y2tfc2hhcGUiLAorLSAgICAgICAgICAgICAgICAoMTYsIDMpLAorLSAgICAgICAgICAgICAgICAo MTYsKSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAg ICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwKKy0g ICAgICAgICAgICAgICAgVHJ1ZSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0g ICAgICAgICAgICAgICAgInBlcl9heGlzX3plcm9fYmxvY2tfc2hhcGUiLAorLSAgICAgICAgICAg ICAgICAoMTYsIDMpLAorLSAgICAgICAgICAgICAgICAoMTYsKSwKKy0gICAgICAgICAgICAgICAg MSwKKy0gICAgICAgICAgICAgICAgMCwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAg ICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwKKy0gICAgICAgICAgICAgICAgVHJ1ZSwKKy0gICAg ICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgInBlcl90ZW5zb3Jf cG9zaXRpdmVfYmxvY2tfc2hhcGUiLAorLSAgICAgICAgICAgICAgICAoMTYsIDMpLAorLSAgICAg ICAgICAgICAgICAoMSwpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAy LAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5J TlQ4LAorLSAgICAgICAgICAgICAgICBGYWxzZSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAg ICAgICgKKy0gICAgICAgICAgICAgICAgInBlcl9heGlzX3Bvc2l0aXZlX2Jsb2NrX3NoYXBlIiwK Ky0gICAgICAgICAgICAgICAgKDE2LCAzKSwKKy0gICAgICAgICAgICAgICAgKDE2LCksCistICAg ICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIE5v bmUsCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDgsCistICAgICAgICAgICAgICAg IEZhbHNlLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKCJibG9ja2VkXzJkIiwgKDE2 LCAzKSwgKDQsIDMpLCAwLCA0LCBOb25lLCBUZW5zb3JQcm90by5JTlQ4LCBGYWxzZSksCistICAg ICAgICAgICAgKCJibG9ja2VkXzNkIiwgKDQsIDMsIDMyKSwgKDQsIDMsIDgpLCAyLCA0LCBOb25l LCBUZW5zb3JQcm90by5JTlQ4LCBGYWxzZSksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAg ICAgICAicGVyX2F4aXNfb3V0cHV0X2R0eXBlIiwKKy0gICAgICAgICAgICAgICAgKDE2LCAzKSwK Ky0gICAgICAgICAgICAgICAgKDE2LCksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAg ICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FUOEU0TTNGTiwK Ky0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgRmFsc2UsCistICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICJwZXJfYXhpc191bnN1 cHBvcnRlZF90eXBlIiwKKy0gICAgICAgICAgICAgICAgKDE2LCAzKSwKKy0gICAgICAgICAgICAg ICAgKDE2LCksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIE5vbmUsCist ICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQx NiwKKy0gICAgICAgICAgICAgICAgRmFsc2UsCistICAgICAgICAgICAgKSwKKy0gICAgICAgIF0K Ky0gICAgKQorLSAgICBkZWYgdGVzdF9xdWFudGl6ZV8yMV8yMCgKKy0gICAgICAgIHNlbGYsCist ICAgICAgICBfOiBzdHIsCistICAgICAgICB4X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCistICAg ICAgICBzY2FsZV9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAorLSAgICAgICAgYXhpczogaW50LAor LSAgICAgICAgYmxvY2tfc2l6ZTogaW50LAorLSAgICAgICAgb3V0cHV0X2R0eXBlOiBpbnQgfCBO b25lLAorLSAgICAgICAgemVyb19wb2ludF9kdHlwZTogaW50IHwgTm9uZSwKKy0gICAgICAgIGNv bXBhdGlibGU6IGJvb2wsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGRlZiB0ZXN0KAorLSAg ICAgICAgICAgIGlucHV0X3NoYXBlLCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tfc2l6ZSwgb3V0 cHV0X2R0eXBlLCB6ZXJvX3BvaW50X2R0eXBlCistICAgICAgICApIC0+IE5vbmU6CistICAgICAg ICAgICAgbm9kZXMgPSBbCistICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX25vZGUoCistICAg ICAgICAgICAgICAgICAgICAiUXVhbnRpemVMaW5lYXIiLAorLSAgICAgICAgICAgICAgICAgICAg WyJYIiwgIlMiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiWSJdLAorLSAgICAgICAgICAgICAg ICAgICAgYXhpcz1heGlzLAorLSAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19z aXplLAorLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2R0eXBlPW91dHB1dF9kdHlwZSwKKy0g ICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0KKy0gICAgICAgICAgICBpbnB1dHMgPSBb CistICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVu c29yUHJvdG8uRkxPQVQsIGlucHV0X3NoYXBlKSwKKy0gICAgICAgICAgICAgICAgaGVscGVyLm1h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlMiLCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfc2hhcGUp LAorLSAgICAgICAgICAgIF0KKy0gICAgICAgICAgICBpZiB6ZXJvX3BvaW50X2R0eXBlOgorLSAg ICAgICAgICAgICAgICBpbnB1dHMuYXBwZW5kKAorLSAgICAgICAgICAgICAgICAgICAgaGVscGVy Lm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlpQIiwgemVyb19wb2ludF9kdHlwZSwgc2NhbGVfc2hh cGUpCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICAgICAgbm9kZXNbMF0uaW5wdXQu YXBwZW5kKCJaUCIpCistICAgICAgICAgICAgb3V0cHV0X3R5cGVfID0gb3V0cHV0X2R0eXBlIG9y IHplcm9fcG9pbnRfZHR5cGUKKy0gICAgICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtlX2dyYXBo KAorLSAgICAgICAgICAgICAgICBub2RlcywKKy0gICAgICAgICAgICAgICAgInRlc3QiLAorLSAg ICAgICAgICAgICAgICBpbnB1dHMsCistICAgICAgICAgICAgICAgIFtoZWxwZXIubWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWSIsIG91dHB1dF90eXBlXywgaW5wdXRfc2hhcGUpXSwKKy0gICAgICAg ICAgICApCistICAgICAgICAgICAgXyA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1h a2Vfb3BlcmF0b3JzZXRpZCgiIiwgMjEpLCAyMCkKKy0KKy0gICAgICAgIGNvbnRleHRfbWFuYWdl ciA9ICgKKy0gICAgICAgICAgICBjb250ZXh0bGliLm51bGxjb250ZXh0KCkgaWYgY29tcGF0aWJs ZSBlbHNlIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikKKy0gICAgICAgICkKKy0gICAg ICAgIHdpdGggY29udGV4dF9tYW5hZ2VyOgorLSAgICAgICAgICAgIHRlc3QoeF9zaGFwZSwgc2Nh bGVfc2hhcGUsIGF4aXMsIGJsb2NrX3NpemUsIG91dHB1dF9kdHlwZSwgemVyb19wb2ludF9kdHlw ZSkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAg ICBbCistICAgICAgICAgICAgKCJwZXJfdGVuc29yIiwgKDE2LCAzKSwgKDEsKSwgTm9uZSwgTm9u ZSwgVHJ1ZSksCistICAgICAgICAgICAgKCJwZXJfYXhpc19ub25lX2Jsb2NrX3NoYXBlIiwgKDE2 LCAzKSwgKDE2LCksIDEsIE5vbmUsIFRydWUpLAorLSAgICAgICAgICAgICgicGVyX2F4aXNfemVy b19ibG9ja19zaGFwZSIsICgxNiwgMyksICgxNiwpLCAxLCAwLCBUcnVlKSwKKy0gICAgICAgICAg ICAoInBlcl90ZW5zb3JfcG9zaXRpdmVfYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMSwpLCAxLCAy LCBGYWxzZSksCistICAgICAgICAgICAgKCJwZXJfYXhpc19wb3NpdGl2ZV9ibG9ja19zaGFwZSIs ICgxNiwgMyksICgxNiwpLCAxLCAyLCBGYWxzZSksCistICAgICAgICAgICAgKCJibG9ja2VkXzJk IiwgKDE2LCAzKSwgKDQsIDMpLCAwLCA0LCBGYWxzZSksCistICAgICAgICAgICAgKCJibG9ja2Vk XzNkIiwgKDQsIDMsIDMyKSwgKDQsIDMsIDgpLCAyLCA0LCBGYWxzZSksCistICAgICAgICBdCist ICAgICkKKy0gICAgZGVmIHRlc3RfZGVxdWFudGl6ZV8yMV8yMCgKKy0gICAgICAgIHNlbGYsCist ICAgICAgICBfOiBzdHIsCistICAgICAgICB5X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCistICAg ICAgICBzY2FsZV9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAorLSAgICAgICAgYXhpczogaW50LAor LSAgICAgICAgYmxvY2tfc2l6ZTogaW50LAorLSAgICAgICAgY29tcGF0aWJsZTogYm9vbCwKKy0g ICAgKSAtPiBOb25lOgorLSAgICAgICAgZGVmIHRlc3QoaW5wdXRfc2hhcGUsIHNjYWxlX3NoYXBl LCBheGlzLCBibG9ja19zaXplKSAtPiBOb25lOgorLSAgICAgICAgICAgIG5vZGVzID0gWworLSAg ICAgICAgICAgICAgICBoZWxwZXIubWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkRl cXVhbnRpemVMaW5lYXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJYIiwgIlMiLCAiWlAiXSwK Ky0gICAgICAgICAgICAgICAgICAgIFsiWSJdLAorLSAgICAgICAgICAgICAgICAgICAgYXhpcz1h eGlzLAorLSAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19zaXplLAorLSAgICAg ICAgICAgICAgICApCistICAgICAgICAgICAgXQorLSAgICAgICAgICAgIGdyYXBoID0gaGVscGVy Lm1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIG5vZGVzLAorLSAgICAgICAgICAgICAgICAi dGVzdCIsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIGhlbHBlci5t YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uSU5UOCwgaW5wdXRfc2hhcGUp LAorLSAgICAgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlMi LCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfc2hhcGUpLAorLSAgICAgICAgICAgICAgICAgICAg aGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlpQIiwgVGVuc29yUHJvdG8uSU5UOCwgc2Nh bGVfc2hhcGUpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbaGVscGVy Lm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgaW5wdXRfc2hh cGUpXSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgXyA9IHNlbGYuX2NvbnZlcnRlZChn cmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRpZCgiIiwgMjEpLCAyMCkKKy0KKy0gICAgICAg IGNvbnRleHRfbWFuYWdlciA9ICgKKy0gICAgICAgICAgICBjb250ZXh0bGliLm51bGxjb250ZXh0 KCkgaWYgY29tcGF0aWJsZSBlbHNlIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikKKy0g ICAgICAgICkKKy0gICAgICAgIHdpdGggY29udGV4dF9tYW5hZ2VyOgorLSAgICAgICAgICAgIHRl c3QoeV9zaGFwZSwgc2NhbGVfc2hhcGUsIGF4aXMsIGJsb2NrX3NpemUpCistCisgICAgIGRlZiB0 ZXN0X2V4dGVybmFsX2RhdGFfdmVyc2lvbl9jb252ZXJzaW9uKHNlbGYpIC0+IE5vbmU6CisgICAg ICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgorICAg ICAgICAgICAgICMgQ3JlYXRlIGEgbW9kZWwgd2l0aCBleHRlcm5hbCBkYXRhCitAQCAtMjQxMyw3 NiArMjI0OSw2IEBAIGNsYXNzIFRlc3RWZXJzaW9uQ29udmVydGVyKHVuaXR0ZXN0LlRlc3RDYXNl KToKKyAgICAgICAgICAgICBbaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dCIsIGR0 eXBlLCBkYXRhX3MpXSwKKyAgICAgICAgICkKKyAKKy0gICAgIyBTY2F0dGVyIDE2IC0+IDE1OiBU eXBlUmVzdHJpY3Rpb24gKGJmbG9hdDE2KSArIFJlbW92ZUF0dHJpYnV0ZSAocmVkdWN0aW9uKQor LSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZChbKCJTY2F0dGVyRWxlbWVu dHMiLCksICgiU2NhdHRlck5EIiwpXSkKKy0gICAgZGVmIHRlc3Rfc2NhdHRlcl8xNl8xNV9zdWNj ZXNzKHNlbGYsIG9wX25hbWU6IHN0cikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9zY2F0dGVyX2dyYXBoKG9wX25hbWUsIFRlbnNvclByb3RvLkZMT0FULCAibm9uZSIpCist ICAgICAgICBjb252ZXJ0ZWQgPSBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29w ZXJhdG9yc2V0aWQoIiIsIDE2KSwgMTUpCistICAgICAgICBhc3NlcnQgY29udmVydGVkLm9wc2V0 X2ltcG9ydFswXS52ZXJzaW9uID09IDE1CistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRl cml6ZWQuZXhwYW5kKFsoIlNjYXR0ZXJFbGVtZW50cyIsKSwgKCJTY2F0dGVyTkQiLCldKQorLSAg ICBkZWYgdGVzdF9zY2F0dGVyXzE2XzE1X2JmbG9hdDE2X2ZhaWxzKHNlbGYsIG9wX25hbWU6IHN0 cikgLT4gTm9uZToKKy0gICAgICAgIGRlZiB0ZXN0KCkgLT4gTm9uZToKKy0gICAgICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2Vfc2NhdHRlcl9ncmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5CRkxP QVQxNikKKy0gICAgICAgICAgICBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29w ZXJhdG9yc2V0aWQoIiIsIDE2KSwgMTUpCistCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhS dW50aW1lRXJyb3IsIHRlc3QpCistCistICAgICMgT3BzZXQgMTYgYWRkZWQgcmVkdWN0aW9uICdh ZGQnIGFuZCAnbXVsJzsgMTYgLT4gMTUgb25seSBhbGxvd3MgJ25vbmUnCistICAgIEBwYXJhbWV0 ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgi U2NhdHRlckVsZW1lbnRzIiwgImFkZCIpLAorLSAgICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRz IiwgIm11bCIpLAorLSAgICAgICAgICAgICgiU2NhdHRlck5EIiwgImFkZCIpLAorLSAgICAgICAg ICAgICgiU2NhdHRlck5EIiwgIm11bCIpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0 ZXN0X3NjYXR0ZXJfMTZfMTVfcmVkdWN0aW9uX2FkZF9tdWxfZmFpbHMoCistICAgICAgICBzZWxm LCBvcF9uYW1lOiBzdHIsIHJlZHVjdGlvbjogc3RyCistICAgICkgLT4gTm9uZToKKy0gICAgICAg IGRlZiB0ZXN0KCkgLT4gTm9uZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vfc2Nh dHRlcl9ncmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5GTE9BVCwgcmVkdWN0aW9uKQorLSAgICAg ICAgICAgIHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRpZCgi IiwgMTYpLCAxNSkKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwg dGVzdCkKKy0KKy0gICAgIyBTY2F0dGVyIDE4IC0+IDE3OiByZWplY3QgcmVkdWN0aW9uICJtYXgi IC8gIm1pbiIKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAg ICAgICBbCistICAgICAgICAgICAgKCJTY2F0dGVyRWxlbWVudHMiLCAibWF4IiksCistICAgICAg ICAgICAgKCJTY2F0dGVyRWxlbWVudHMiLCAibWluIiksCistICAgICAgICAgICAgKCJTY2F0dGVy TkQiLCAibWF4IiksCistICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAibWluIiksCistICAgICAg ICBdCistICAgICkKKy0gICAgZGVmIHRlc3Rfc2NhdHRlcl8xOF8xN19yZWR1Y3Rpb25fbWF4X21p bl9mYWlscygKKy0gICAgICAgIHNlbGYsIG9wX25hbWU6IHN0ciwgcmVkdWN0aW9uOiBzdHIKKy0g ICAgKSAtPiBOb25lOgorLSAgICAgICAgZGVmIHRlc3QoKSAtPiBOb25lOgorLSAgICAgICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9zY2F0dGVyX2dyYXBoKG9wX25hbWUsIFRlbnNvclByb3RvLkZM T0FULCByZWR1Y3Rpb24pCistICAgICAgICAgICAgc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxw ZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAxOCksIDE3KQorLQorLSAgICAgICAgc2VsZi5hc3Nl cnRSYWlzZXMoUnVudGltZUVycm9yLCB0ZXN0KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVt ZW50cyIsIE5vbmUpLAorLSAgICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwgIm5vbmUiKSwK Ky0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIsICJhZGQiKSwKKy0gICAgICAgICAgICAo IlNjYXR0ZXJFbGVtZW50cyIsICJtdWwiKSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsIE5v bmUpLAorLSAgICAgICAgICAgICgiU2NhdHRlck5EIiwgIm5vbmUiKSwKKy0gICAgICAgICAgICAo IlNjYXR0ZXJORCIsICJhZGQiKSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsICJtdWwiKSwK Ky0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9zY2F0dGVyXzE4XzE3X2FsbG93ZWRf cmVkdWN0aW9uc19zdWNjZXNzKAorLSAgICAgICAgc2VsZiwgb3BfbmFtZTogc3RyLCByZWR1Y3Rp b246IHN0ciB8IE5vbmUKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX3NjYXR0ZXJfZ3JhcGgob3BfbmFtZSwgVGVuc29yUHJvdG8uRkxPQVQsIHJlZHVjdGlvbikK Ky0gICAgICAgIGNvbnZlcnRlZCA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vf b3BlcmF0b3JzZXRpZCgiIiwgMTgpLCAxNykKKy0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwo Y29udmVydGVkKQorLQorIAorIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgIHVuaXR0 ZXN0Lm1haW4oKQorZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50cy1kZXYudHh0IGIvcmVxdWlyZW1l bnRzLWRldi50eHQKK2luZGV4IGUzNmVjZDZkOS4uN2U0YTBjY2Q0IDEwMDY0NAorLS0tIGEvcmVx dWlyZW1lbnRzLWRldi50eHQKKysrKyBiL3JlcXVpcmVtZW50cy1kZXYudHh0CitAQCAtMSw2ICsx LDUgQEAKKyBidWlsZAorIG51bXB5CistcGFyYW1ldGVyaXplZAorIHByb3RvYnVmCisgcHl0ZXN0 CisgcHl0ZXN0LWNvdgorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDMtQWRkLWZpeGVz LWZvci11c2Utd2l0aC1vbm54cnVudGltZS5wYXRjaCBiLzAwMDMtQWRkLWZpeGVzLWZvci11c2Ut d2l0aC1vbm54cnVudGltZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFi YzY4ZS4uMDAwMDAwMAotLS0gYS8wMDAzLUFkZC1maXhlcy1mb3ItdXNlLXdpdGgtb25ueHJ1bnRp bWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIDk4MDlmNzc3OTI1 MTdkMGFjZTI4NzRhODRhMTgxZThmZTM3NjZkOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBBbGVqYW5kcm8gQWx2YXJleiBBeWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+ Ci1EYXRlOiBTYXQsIDI0IEZlYiAyMDI0IDE0OjUzOjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0gg NC80XSBBZGQgZml4ZXMgZm9yIHVzZSB3aXRoIG9ubnhydW50aW1lCi0KLS0tLQotIG9ubngvZGVm cy9zY2hlbWEuY2MgICAgfCAxNCArKysrKysrKysrKysrKwotIG9ubngvb25ueHJ1bnRpbWVfZml4 LmggfCAxNCArKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygr KQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBvbm54L29ubnhydW50aW1lX2ZpeC5oCi0KLWRpZmYgLS1n aXQgYS9vbm54L2RlZnMvc2NoZW1hLmNjIGIvb25ueC9kZWZzL3NjaGVtYS5jYwotaW5kZXggNzRi ZDBhNjMwLi41NzNkMDkwMTggMTAwNjQ0Ci0tLS0gYS9vbm54L2RlZnMvc2NoZW1hLmNjCi0rKysg Yi9vbm54L2RlZnMvc2NoZW1hLmNjCi1AQCAtMjEsOCArMjEsMTkgQEAKLSAKLSAjaW5jbHVkZSAi b25ueC9jb21tb24vYXNzZXJ0aW9ucy5oIgotICNpbmNsdWRlICJvbm54L2RlZnMvcGFyc2VyLmgi Ci0rI2luY2x1ZGUgIm9ubngvb25ueHJ1bnRpbWVfZml4LmgiCi0gCi0gbmFtZXNwYWNlIE9OTlhf TkFNRVNQQUNFIHsKLSsKLStib29sIE9OTlhSdW50aW1lRml4Ojpfc3RhdGljX3JlZ2lzdHJhdGlv bl9kaXNhYmxlZCA9IGZhbHNlOwotK2Jvb2wgT05OWFJ1bnRpbWVGaXg6OmlzU3RhdGljUmVnaXN0 cmF0aW9uRGlzYWJsZWQoKSB7Ci0rICByZXR1cm4gX3N0YXRpY19yZWdpc3RyYXRpb25fZGlzYWJs ZWQ7Ci0rfQotKwotK3ZvaWQgT05OWFJ1bnRpbWVGaXg6OmRpc2FibGVTdGF0aWNSZWdpc3RyYXRp b24oKSB7Ci0rICBfc3RhdGljX3JlZ2lzdHJhdGlvbl9kaXNhYmxlZCA9IHRydWU7Ci0rfQotKwot IC8vIC0xIG1lYW5zIE9OTlggc2NoZW1hIGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQKLSAvLyAwIG1l YW5zIGFsbCB2ZXJzaW9ucyBvZiBPTk5YIHNjaGVtYSBoYXZlIGJlZW4gbG9hZGVkCi0gLy8gT3Ro ZXIgcG9zaXRpdmUgaW50ZWdlciBtZWFucyB0aGUgT05OWCBzY2hlbWFzIGZvciB0aGUgc3BlY2lm aWVkIHZlcnNpb24gaGF2ZSBiZWVuIGxvYWRlZAotQEAgLTEwOTEsNiArMTEwMiw5IEBAIE9wTmFt ZV9Eb21haW5fVmVyc2lvbl9TY2hlbWFfTWFwJiBPcFNjaGVtYVJlZ2lzdHJ5OjptYXAoKSB7Ci0g ICBjbGFzcyBTY2hlbWFzUmVnaXN0ZXJlciB7Ci0gICAgcHVibGljOgotICAgICBTY2hlbWFzUmVn aXN0ZXJlcigpIHsKLSsgICAgICAvLyBDaGVjayBpZiBzdGF0aWMgcmVnaXN0cmF0aW9uIGlzIGFj dHVhbGx5IGRpc2FibGVkCi0rICAgICAgaWYoT05OWFJ1bnRpbWVGaXg6OmlzU3RhdGljUmVnaXN0 cmF0aW9uRGlzYWJsZWQoKSkgcmV0dXJuOwotKwotICAgICAgIC8vIEluIGRlYnVnIGJ1aWxkcywg dGhlIG51bWJlciBvZiBzY2hlbWEgcmVnaXN0ZXJlZCBpbiB0aGlzIGNvbnN0cnVjdG9yCi0gICAg ICAgLy8gaXMgY29tcGFyZWQgYWdhaW5zdCB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIHNjaGVtYSBy ZWdpc3RyYXRpb24gbWFjcm9zLgotICNpZm5kZWYgTkRFQlVHCi1kaWZmIC0tZ2l0IGEvb25ueC9v bm54cnVudGltZV9maXguaCBiL29ubngvb25ueHJ1bnRpbWVfZml4LmgKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAuLjI0OTViOTMxMAotLS0tIC9kZXYvbnVsbAotKysrIGIv b25ueC9vbm54cnVudGltZV9maXguaAotQEAgLTAsMCArMSwxNCBAQAotKyNwcmFnbWEgb25jZQot KwotK25hbWVzcGFjZSBPTk5YX05BTUVTUEFDRSB7Ci0rCi0rY2xhc3MgT05OWFJ1bnRpbWVGaXgg ewotK3B1YmxpYzoKLSsgIHN0YXRpYyBib29sIGlzU3RhdGljUmVnaXN0cmF0aW9uRGlzYWJsZWQo KTsKLSsgIHN0YXRpYyB2b2lkIGRpc2FibGVTdGF0aWNSZWdpc3RyYXRpb24oKTsKLSsKLStwcml2 YXRlOgotKyAgc3RhdGljIGJvb2wgX3N0YXRpY19yZWdpc3RyYXRpb25fZGlzYWJsZWQ7Ci0rfTsK LSsKLSt9IC8vIG5hbWVzcGFjZSBPTk5YX05BTUVTUEFDRQotLS0gCi0yLjUyLjAKLQoKZGlmZiAt LWdpdCBhLzAwMDQtUmVtb3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0Y2gg Yi8wMDA0LVJlbW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGUyYzg1Li4wMDAwMDAwCi0tLSBhLzAwMDQtUmVt b3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSw1NjgxICswLDAgQEAKLUZyb20gMzE1NjBlYTlmNTBkNmNjYjgxNmU1ZmVmNTM3YmEzZTQ3 NzIwMWFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERpZWdvIEhlcnJlcmEgPGRo ZXJyZXJhQGZlZG9yYXByb2plY3Qub3JnPgotRGF0ZTogVGh1LCAxNSBKYW4gMjAyNiAxNzozMjo1 OCAtMDMwMAotU3ViamVjdDogW1BBVENIIDQvNF0gUmVtb3ZlIHB5dGhvbi1wYXJhbWV0ZXJpemVk IGRlcGVuZGVuY3kKLQotLS0tCi0gb25ueC90ZXN0L2Jhc2ljX3Rlc3QucHkgICAgICAgICAgICAg ICAgICAgICAgIHwgICA5MiAtCi0gb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5ICAgICAgICAgICAg ICAgICAgICAgIHwgIDEwMCAtCi0gb25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0LnB5ICAgICAg ICAgICAgICAgIHwgICA2MyAtCi0gb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5ICAgICAgICAgICAg ICAgICAgICAgIHwgIDE4MiAtLQotIG9ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rl c3QucHkgICAgICB8ICAxMzAgLQotIG9ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3Qu cHkgICAgICAgICB8ICA3NzEgLS0tLS0KLSBvbm54L3Rlc3Qvc2NoZW1hX3Rlc3QucHkgICAgICAg ICAgICAgICAgICAgICAgfCAgMTk0IC0tCi0gb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0 LnB5ICAgICAgICAgICAgIHwgMjU4OSArLS0tLS0tLS0tLS0tLS0tLQotIG9ubngvdGVzdC90ZXN0 X2JhY2tlbmRfcmVmZXJlbmNlLnB5ICAgICAgICAgICB8ICAgIDkgKwotIG9ubngvdGVzdC90ZXN0 X2V4dGVybmFsX2RhdGEucHkgICAgICAgICAgICAgICB8ICA2MjcgLS0tLQotIG9ubngvdGVzdC90 b29sc190ZXN0LnB5ICAgICAgICAgICAgICAgICAgICAgICB8ICAxMTcgLQotIC4uLi9hdXRvbWF0 aWNfZG93bmdyYWRlX3Rlc3QucHkgICAgICAgICAgICAgICB8ICAgMzAgLQotIG9ubngvdGVzdC92 ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5ICAgICAgICAgICB8ICAxNjQgLS0KLSByZXF1aXJlbWVu dHMtZGV2LnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIC0KLSByZXF1aXJlbWVu dHMtcmVsZWFzZS50eHQgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIC0KLSByZXF1aXJlbWVu dHMudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxIC0KLSAxNiBmaWxlcyBj aGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgNDk0MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBhL29ubngvdGVzdC9iYXNpY190ZXN0LnB5IGIvb25ueC90ZXN0L2Jhc2ljX3Rlc3QucHkKLWlu ZGV4IDNkZThhOTFkNi4uY2E1NzE5YmE2IDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L2Jhc2ljX3Rl c3QucHkKLSsrKyBiL29ubngvdGVzdC9iYXNpY190ZXN0LnB5Ci1AQCAtMTEsNyArMTEsNiBAQCBp bXBvcnQgdW5pdHRlc3QKLSAKLSBpbXBvcnQgZ29vZ2xlLnByb3RvYnVmLm1lc3NhZ2UKLSBpbXBv cnQgZ29vZ2xlLnByb3RvYnVmLnRleHRfZm9ybWF0Ci0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLSAK LSBpbXBvcnQgb25ueAotIGZyb20gb25ueCBpbXBvcnQgc2VyaWFsaXphdGlvbgotQEAgLTM1LDk3 ICszNCw2IEBAIGRlZiBfc2ltcGxlX3RlbnNvcigpIC0+IG9ubnguVGVuc29yUHJvdG86Ci0gICAg IHJldHVybiB0ZW5zb3IKLSAKLSAKLS1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNz KAotLSAgICBbCi0tICAgICAgICB7ImZvcm1hdCI6ICJwcm90b2J1ZiJ9LAotLSAgICAgICAgeyJm b3JtYXQiOiAidGV4dHByb3RvIn0sCi0tICAgICAgICB7ImZvcm1hdCI6ICJqc29uIn0sCi0tICAg ICAgICB7ImZvcm1hdCI6ICJvbm54dHh0In0sCi0tICAgIF0KLS0pCi0tY2xhc3MgVGVzdElPKHVu aXR0ZXN0LlRlc3RDYXNlKToKLS0gICAgZm9ybWF0OiBzdHIKLS0KLS0gICAgZGVmIHRlc3RfbG9h ZF9tb2RlbF93aGVuX2lucHV0X2lzX2J5dGVzKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBwcm90 byA9IF9zaW1wbGVfbW9kZWwoKQotLSAgICAgICAgcHJvdG9fc3RyaW5nID0gc2VyaWFsaXphdGlv bi5yZWdpc3RyeS5nZXQoc2VsZi5mb3JtYXQpLnNlcmlhbGl6ZV9wcm90byhwcm90bykKLS0gICAg ICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2RlbF9mcm9tX3N0cmluZyhwcm90b19zdHJp bmcsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8s IGxvYWRlZF9wcm90bykKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF9tb2RlbF93aGVu X2lucHV0X2hhc19yZWFkX2Z1bmN0aW9uKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBwcm90byA9 IF9zaW1wbGVfbW9kZWwoKQotLSAgICAgICAgIyBXaGVuIHRoZSBwcm90byBpcyBhIGJ5dGVzIHJl cHJlc2VudGF0aW9uIHByb3ZpZGVkIHRvIGBzYXZlX21vZGVsYCwKLS0gICAgICAgICMgaXQgc2hv dWxkIGFsd2F5cyBiZSBhIHNlcmlhbGl6ZWQgYmluYXJ5IHByb3RvYnVmIHJlcHJlc2VudGF0aW9u LiBBa2EuIGZvcm1hdD0icHJvdG9idWYiCi0tICAgICAgICAjIFRoZSBzYXZlZCBmaWxlIGZvcm1h dCBpcyBzcGVjaWZpZWQgYnkgdGhlIGBmb3JtYXRgIGFyZ3VtZW50LgotLSAgICAgICAgcHJvdG9f c3RyaW5nID0gc2VyaWFsaXphdGlvbi5yZWdpc3RyeS5nZXQoInByb3RvYnVmIikuc2VyaWFsaXpl X3Byb3RvKHByb3RvKQotLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotLSAgICAgICAgb25ueC5z YXZlX21vZGVsKHByb3RvX3N0cmluZywgZiwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAg bG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX21vZGVsKGlvLkJ5dGVzSU8oZi5nZXR2YWx1ZSgpKSwg Zm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9h ZGVkX3Byb3RvKQotLQotLSAgICBkZWYgdGVzdF9zYXZlX2FuZF9sb2FkX21vZGVsX3doZW5faW5w dXRfaXNfZmlsZV9uYW1lKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBwcm90byA9IF9zaW1wbGVf bW9kZWwoKQotLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0 ZW1wX2RpcjoKLS0gICAgICAgICAgICBtb2RlbF9wYXRoID0gb3MucGF0aC5qb2luKHRlbXBfZGly LCAibW9kZWwub25ueCIpCi0tICAgICAgICAgICAgb25ueC5zYXZlX21vZGVsKHByb3RvLCBtb2Rl bF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICAgICAgbG9hZGVkX3Byb3RvID0g b25ueC5sb2FkX21vZGVsKG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCi0tCi0tICAgIGRlZiB0 ZXN0X3NhdmVfYW5kX2xvYWRfbW9kZWxfd2hlbl9pbnB1dF9pc19wYXRobGlrZShzZWxmKSAtPiBO b25lOgotLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKLS0gICAgICAgIHdpdGggdGVt cGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6Ci0tICAgICAgICAgICAgbW9k ZWxfcGF0aCA9IHBhdGhsaWIuUGF0aCh0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQotLSAgICAgICAg ICAgIG9ubnguc2F2ZV9tb2RlbChwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0 KQotLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9wYXRo LCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90 bywgbG9hZGVkX3Byb3RvKQotLQotLQotLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xh c3MoCi0tICAgIFsKLS0gICAgICAgIHsiZm9ybWF0IjogInByb3RvYnVmIn0sCi0tICAgICAgICB7 ImZvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwKLS0gICAgICAgIHsiZm9ybWF0IjogImpzb24ifSwKLS0g ICAgICAgICMgVGhlIG9ubnh0eHQgZm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgc2F2aW5nL2xvYWRp bmcgdGVuc29ycyB5ZXQKLS0gICAgXQotLSkKLS1jbGFzcyBUZXN0SU9UZW5zb3IodW5pdHRlc3Qu VGVzdENhc2UpOgotLSAgICAiIiJUZXN0IGxvYWRpbmcgYW5kIHNhdmluZyBvZiBUZW5zb3JQcm90 by4iIiIKLS0KLS0gICAgZm9ybWF0OiBzdHIKLS0KLS0gICAgZGVmIHRlc3RfbG9hZF90ZW5zb3Jf d2hlbl9pbnB1dF9pc19ieXRlcyhzZWxmKSAtPiBOb25lOgotLSAgICAgICAgcHJvdG8gPSBfc2lt cGxlX3RlbnNvcigpCi0tICAgICAgICBwcm90b19zdHJpbmcgPSBzZXJpYWxpemF0aW9uLnJlZ2lz dHJ5LmdldChzZWxmLmZvcm1hdCkuc2VyaWFsaXplX3Byb3RvKHByb3RvKQotLSAgICAgICAgbG9h ZGVkX3Byb3RvID0gb25ueC5sb2FkX3RlbnNvcl9mcm9tX3N0cmluZyhwcm90b19zdHJpbmcsIGZv cm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRl ZF9wcm90bykKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1 dF9oYXNfcmVhZF9mdW5jdGlvbihzZWxmKSAtPiBOb25lOgotLSAgICAgICAgIyBUZXN0IGlmIGlu cHV0IGhhcyBhIHJlYWQgZnVuY3Rpb24KLS0gICAgICAgIHByb3RvID0gX3NpbXBsZV90ZW5zb3Io KQotLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotLSAgICAgICAgb25ueC5zYXZlX3RlbnNvcihw cm90bywgZiwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgbG9hZGVkX3Byb3RvID0gb25u eC5sb2FkX3RlbnNvcihpby5CeXRlc0lPKGYuZ2V0dmFsdWUoKSksIGZvcm1hdD1zZWxmLmZvcm1h dCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKLS0KLS0g ICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1dF9pc19maWxlX25hbWUo c2VsZikgLT4gTm9uZToKLS0gICAgICAgICMgVGVzdCBpZiBpbnB1dCBpcyBhIGZpbGUgbmFtZQot LSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX3RlbnNvcigpCi0tICAgICAgICB3aXRoIHRlbXBmaWxl LlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgotLSAgICAgICAgICAgIG1vZGVsX3Bh dGggPSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2RlbC5vbm54IikKLS0gICAgICAgICAgICBv bm54LnNhdmVfdGVuc29yKHByb3RvLCBtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0t ICAgICAgICAgICAgbG9hZGVkX3Byb3RvID0gb25ueC5sb2FkX3RlbnNvcihtb2RlbF9wYXRoLCBm b3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywg bG9hZGVkX3Byb3RvKQotLQotLSAgICBkZWYgdGVzdF9zYXZlX2FuZF9sb2FkX3RlbnNvcl93aGVu X2lucHV0X2lzX3BhdGhsaWtlKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICAjIFRlc3QgaWYgaW5w dXQgaXMgYSBmaWxlIG5hbWUKLS0gICAgICAgIHByb3RvID0gX3NpbXBsZV90ZW5zb3IoKQotLSAg ICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKLS0g ICAgICAgICAgICBtb2RlbF9wYXRoID0gcGF0aGxpYi5QYXRoKHRlbXBfZGlyLCAibW9kZWwub25u eCIpCi0tICAgICAgICAgICAgb25ueC5zYXZlX3RlbnNvcihwcm90bywgbW9kZWxfcGF0aCwgZm9y bWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90 ZW5zb3IobW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKLS0KLS0KLSBjbGFzcyBUZXN0U2F2ZUFu ZExvYWRGaWxlRXh0ZW5zaW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIGRlZiB0ZXN0X3Nh dmVfbW9kZWxfcGlja3NfY29ycmVjdF9mb3JtYXRfZnJvbV9leHRlbnNpb24oc2VsZikgLT4gTm9u ZToKLSAgICAgICAgIHByb3RvID0gX3NpbXBsZV9tb2RlbCgpCi1kaWZmIC0tZ2l0IGEvb25ueC90 ZXN0L2hlbHBlcl90ZXN0LnB5IGIvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5Ci1pbmRleCAyYjM4 ZTUyYzcuLmVjYjNkMzRlNyAxMDA2NDQKLS0tLSBhL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weQot KysrIGIvb25ueC90ZXN0L2hlbHBlcl90ZXN0LnB5Ci1AQCAtMTEsNyArMTEsNiBAQCBpbXBvcnQg dW5pdHRlc3QKLSBmcm9tIHR5cGluZyBpbXBvcnQgQW55Ci0gCi0gaW1wb3J0IG51bXB5IGFzIG5w Ci0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLSBpbXBvcnQgcHl0ZXN0Ci0gaW1wb3J0IHZlcnNpb25f dXRpbHMKLSAKLUBAIC02NTYsODMgKzY1NSw2IEBAIGNsYXNzIFRlc3RIZWxwZXJUZW5zb3JGdW5j dGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgeW5wID0gbnVtcHlfaGVscGVyLnRv X2FycmF5KHkpCi0gICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChDYXN0LmV2YWwoZXhw ZWN0ZWQsIHRvPVRlbnNvclByb3RvLkZMT0FUOEU1TTJGTlVaKSwgeW5wKSAgIyB0eXBlOiBpZ25v cmVbYXJnLXR5cGVdCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5k KAotLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgKFRlbnNvclByb3Rv LlVJTlQ0LCBUZW5zb3JQcm90by5JTlQ0KSwKLS0gICAgICAgICAgICAoKDUsIDQsIDYpLCAoNCwg NiwgNSksICgzLCAzKSwgKDEsKSwgKDIqKjEwLCkpLAotLSAgICAgICAgKQotLSAgICApCi0tICAg IEB1bml0dGVzdC5za2lwSWYoCi0tICAgICAgICB2ZXJzaW9uX3V0aWxzLm51bXB5X29sZGVyX3Ro YW4oIjEuMjIuMCIpLAotLSAgICAgICAgIlRoZSB0ZXN0IHJlcXVpcmVzIG51bXB5IDEuMjIuMCBv ciBsYXRlciIsCi0tICAgICkKLS0gICAgZGVmIHRlc3RfbWFrZV80Yml0X3RlbnNvcihzZWxmLCBk dHlwZSwgZGltcykgLT4gTm9uZToKLS0gICAgICAgIHR5cGVfcmFuZ2UgPSB7Ci0tICAgICAgICAg ICAgVGVuc29yUHJvdG8uVUlOVDQ6ICgwLCAxNSksCi0tICAgICAgICAgICAgVGVuc29yUHJvdG8u SU5UNDogKC04LCA3KSwKLS0gICAgICAgIH0KLS0gICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFu ZGludCgKLS0gICAgICAgICAgICB0eXBlX3JhbmdlW2R0eXBlXVswXSwgaGlnaD10eXBlX3Jhbmdl W2R0eXBlXVsxXSArIDEsIHNpemU9ZGltcwotLSAgICAgICAgKQotLSAgICAgICAgeSA9IGhlbHBl ci5tYWtlX3RlbnNvcigieSIsIGR0eXBlLCBkYXRhLnNoYXBlLCBkYXRhKQotLQotLSAgICAgICAg IyBDaGVjayB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVzCi0tICAgICAg ICBleHBlY3RlZF9kYXRhX3NpemUgPSBtYXRoLmNlaWwobnAucHJvZChkYXRhLnNoYXBlKSAvIDIu MCkKLS0gICAgICAgIGFjdHVhbF9kYXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQzMl9kYXRhKSkK LS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3NpemUsIGV4cGVj dGVkX2RhdGFfc2l6ZSkKLS0KLS0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIGRhdGEgdmFs dWVzLgotLSAgICAgICAgeW5wID0gdG9fYXJyYXlfZXh0ZW5kZWQoeSkKLS0gICAgICAgIG5wLnRl c3RpbmcuYXNzZXJ0X2VxdWFsKGRhdGEsIHlucCkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFy YW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAg ICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSwgKDIqKjEwLCkpLAotLSAg ICAgICAgKQotLSAgICApCi0tICAgIEB1bml0dGVzdC5za2lwSWYoCi0tICAgICAgICB2ZXJzaW9u X3V0aWxzLm51bXB5X29sZGVyX3RoYW4oIjEuMjIuMCIpLAotLSAgICAgICAgIlRoZSB0ZXN0IHJl cXVpcmVzIG51bXB5IDEuMjIuMCBvciBsYXRlciIsCi0tICAgICkKLS0gICAgZGVmIHRlc3RfNGJp dF90ZW5zb3Jfc2l6ZShzZWxmLCBkaW1zKSAtPiBOb25lOgotLSAgICAgICAgIyBBIGJ1ZyBjYXVz ZWQgbmVnYXRpdmUgaW50NCB2YWx1ZXMgdG8gaW5mbGF0ZSB0ZW5zb3Igc2l6ZS4KLS0gICAgICAg ICMgU28sIHRlc3QgbmVnYXRpdmUgdmFsdWVzIGhlcmUuCi0tICAgICAgICBudW1fZWxlbXMgPSBu cC5wcm9kKGRpbXMpCi0tICAgICAgICBkYXRhID0gbnAuYXJyYXkoWy00XSAqIG51bV9lbGVtcywg ZHR5cGU9bnAuaW50OCkucmVzaGFwZShkaW1zKQotLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3Rl bnNvcigieSIsIFRlbnNvclByb3RvLklOVDQsIGRhdGEuc2hhcGUsIGRhdGEpCi0tCi0tICAgICAg ICAjIENoZWNrIHRoZSBleHBlY3RlZCBzaXplIG9mIGludDMyX2RhdGEgaW4gYnl0ZXMKLS0gICAg ICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA9IG1hdGguY2VpbChudW1fZWxlbXMgLyAyLjApCi0tICAg ICAgICBhY3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5dGVzKHkuaW50MzJfZGF0YSkpCi0tICAgICAg ICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1YWxfZGF0YV9zaXplLCBleHBlY3RlZF9kYXRh X3NpemUpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAg ICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0 LCBUZW5zb3JQcm90by5JTlQ0KSwgKCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCkp Ci0tICAgICAgICApCi0tICAgICkKLS0gICAgQHVuaXR0ZXN0LnNraXBJZigKLS0gICAgICAgIHZl cnNpb25fdXRpbHMubnVtcHlfb2xkZXJfdGhhbigiMS4yNi4wIiksCi0tICAgICAgICAiVGhlIHRl c3QgcmVxdWlyZXMgbnVtcHkgMS4yNi4wIG9yIGxhdGVyIiwKLS0gICAgKQotLSAgICBkZWYgdGVz dF9tYWtlXzRiaXRfcmF3X3RlbnNvcihzZWxmLCBkdHlwZSwgZGltcykgLT4gTm9uZToKLS0gICAg ICAgIHR5cGVfcmFuZ2UgPSB7Ci0tICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDQ6ICgwLCAx NSksCi0tICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNDogKC04LCA3KSwKLS0gICAgICAgIH0K LS0gICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGludCgKLS0gICAgICAgICAgICB0eXBlX3Jh bmdlW2R0eXBlXVswXSwgaGlnaD10eXBlX3JhbmdlW2R0eXBlXVsxXSArIDEsIHNpemU9ZGltcwot LSAgICAgICAgKS5hc3R5cGUobnAuZmxvYXQzMikKLS0gICAgICAgIHBhY2tlZF9kYXRhID0gaGVs cGVyLnBhY2tfZmxvYXQzMl90b180Yml0KAotLSAgICAgICAgICAgIGRhdGEsIHNpZ25lZD0oZHR5 cGUgPT0gVGVuc29yUHJvdG8uSU5UNCkKLS0gICAgICAgICkKLS0KLS0gICAgICAgIHkgPSBoZWxw ZXIubWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgInBhY2tlZF9pbnQ0IiwgZHR5cGUsIGRpbXMs IHBhY2tlZF9kYXRhLnRvYnl0ZXMoKSwgcmF3PVRydWUKLS0gICAgICAgICkKLS0gICAgICAgIHlu cCA9IG51bXB5X2hlbHBlci50b19hcnJheSh5KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRf ZXF1YWwoZGF0YSwgeW5wKQotLQotICAgICBkZWYgdGVzdF9tYWtlX3NwYXJzZV90ZW5zb3Ioc2Vs ZikgLT4gTm9uZToKLSAgICAgICAgIHZhbHVlcyA9IFsxLjEsIDIuMiwgMy4zLCA0LjQsIDUuNV0K LSAgICAgICAgIHZhbHVlc190ZW5zb3IgPSBoZWxwZXIubWFrZV90ZW5zb3IoCi1AQCAtMTAxOCwy OCArOTQwLDYgQEAgY2xhc3MgVGVzdEhlbHBlck1hcHBpbmdGdW5jdGlvbnModW5pdHRlc3QuVGVz dENhc2UpOgotIAotIAotIGNsYXNzIFRlc3RBdHRyVHlwZVRvU3RyKHVuaXR0ZXN0LlRlc3RDYXNl KToKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBb Ci0tICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuRkxPQVQsICJGTE9B VCIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAgICAgICAgICAgIChBdHRyaWJ1 dGVQcm90by5BdHRyaWJ1dGVUeXBlLklOVCwgIklOVCIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1k ZWZpbmVkXQotLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlNUUklO RywgIlNUUklORyIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAgICAgICAgICAg IChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlRFTlNPUiwgIlRFTlNPUiIpLCAgIyB0eXBl OiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRy aWJ1dGVUeXBlLkdSQVBILCAiR1JBUEgiKSwgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0K LS0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5TUEFSU0VfVEVOU09S LCAiU1BBUlNFX1RFTlNPUiIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAgICAg ICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlRZUEVfUFJPVE8sICJUWVBFX1BS T1RPIiksICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCi0tICAgICAgICAgICAgKEF0dHJp YnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuRkxPQVRTLCAiRkxPQVRTIiksICAjIHR5cGU6IGlnbm9y ZVthdHRyLWRlZmluZWRdCi0tICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5 cGUuSU5UUywgIklOVFMiKSwgICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KLS0gICAgICAg ICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5TVFJJTkdTLCAiU1RSSU5HUyIpLCAg IyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90 by5BdHRyaWJ1dGVUeXBlLlRFTlNPUlMsICJURU5TT1JTIiksICAjIHR5cGU6IGlnbm9yZVthdHRy LWRlZmluZWRdCi0tICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuR1JB UEhTLCAiR1JBUEhTIiksICAjIHR5cGU6IGlnbm9yZVthdHRyLWRlZmluZWRdCi0tICAgICAgICAg ICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuU1BBUlNFX1RFTlNPUlMsICJTUEFSU0Vf VEVOU09SUyIpLCAgIyB0eXBlOiBpZ25vcmVbYXR0ci1kZWZpbmVkXQotLSAgICAgICAgICAgIChB dHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlRZUEVfUFJPVE9TLCAiVFlQRV9QUk9UT1MiKSwg ICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBk ZWYgdGVzdF9hdHRyX3R5cGVfdG9fc3RyKHNlbGYsIGF0dHJfdHlwZSwgZXhwZWN0ZWRfc3RyKToK LS0gICAgICAgIHJlc3VsdCA9IGhlbHBlci5fYXR0cl90eXBlX3RvX3N0cihhdHRyX3R5cGUpCi0t ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWRfc3RyKQotLQotICAgICBk ZWYgdGVzdF9hdHRyX3R5cGVfdG9fc3RyX3VuZGVmaW5lZChzZWxmKToKLSAgICAgICAgIHJlc3Vs dCA9IGhlbHBlci5fYXR0cl90eXBlX3RvX3N0cig5OTk5KQotICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChyZXN1bHQsICJVTkRFRklORUQiKQotZGlmZiAtLWdpdCBhL29ubngvdGVzdC9udW1weV9o ZWxwZXJfdGVzdC5weSBiL29ubngvdGVzdC9udW1weV9oZWxwZXJfdGVzdC5weQotaW5kZXggZjY0 MmNjODdmLi42MjFhOGI4YTIgMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3QvbnVtcHlfaGVscGVyX3Rl c3QucHkKLSsrKyBiL29ubngvdGVzdC9udW1weV9oZWxwZXJfdGVzdC5weQotQEAgLTcsNyArNyw2 IEBAIGltcG9ydCB1bml0dGVzdAotIGZyb20gdHlwaW5nIGltcG9ydCBBbnkKLSAKLSBpbXBvcnQg bnVtcHkgYXMgbnAKLS1pbXBvcnQgcGFyYW1ldGVyaXplZAotIAotIGltcG9ydCBvbm54Ci0gaW1w b3J0IG9ubngucmVmZXJlbmNlCi1AQCAtMTQ3LDI5ICsxNDYsNiBAQCBjbGFzcyBUZXN0TnVtcHlI ZWxwZXIodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICBkZWYgdGVzdF9jb21wbGV4MTI4KHNlbGYp IC0+IE5vbmU6Ci0gICAgICAgICBzZWxmLl90ZXN0X251bXB5X2hlbHBlcl9mbG9hdF90eXBlKG5w LmNvbXBsZXgxMjgpCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5k KAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgxLCksCi0tICAgICAgICAgICAgKDAuMTAwMDk3 NjU2LCksCi0tICAgICAgICAgICAgKDEzMDA0OCwpLAotLSAgICAgICAgICAgICgxLjI5OTM4MTNl LTUsKSwKLS0gICAgICAgICAgICAobnAubmFuLCksCi0tICAgICAgICAgICAgKG5wLmluZiwpLAot LSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2JmbG9hdDE2X3RvX2Zsb2F0MzIoc2Vs ZiwgZik6Ci0tICAgICAgICBmMzIgPSBucC5mbG9hdDMyKGYpCi0tICAgICAgICBiZjE2ID0gaGVs cGVyLmZsb2F0MzJfdG9fYmZsb2F0MTYoZjMyKQotLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo YmYxNiwgaW50KQotLSAgICAgICAgZjMyXzEgPSBudW1weV9oZWxwZXIuYmZsb2F0MTZfdG9fZmxv YXQzMihucC5hcnJheShbYmYxNl0pKVswXQotLSAgICAgICAgZjMyXzIgPSBiZmxvYXQxNl90b19m bG9hdDMyKGJmMTYpCi0tICAgICAgICBpZiBucC5pc25hbihmMzIpOgotLSAgICAgICAgICAgIGFz c2VydCBucC5pc25hbihmMzJfMSkKLS0gICAgICAgICAgICBhc3NlcnQgbnAuaXNuYW4oZjMyXzIp Ci0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjMyLCBmMzJf MSkKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYzMiwgZjMyXzIpCi0tCi0gICAgIGRl ZiB0ZXN0X2Zsb2F0OGU0bTNfdG9fZmxvYXQzMihzZWxmKToKLSAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwobnVtcHlfaGVscGVyLmZsb2F0OGU0bTNfdG9fZmxvYXQzMihpbnQoIjExMTExMTAiLCAy KSksIDQ0OCkKLSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtcHlfaGVscGVyLmZsb2F0OGU0 bTNfdG9fZmxvYXQzMihpbnQoIjEwMDAiLCAyKSksIDIgKiogKC02KSkKLUBAIC0yMDgsMjYgKzE4 NCw2IEBAIGNsYXNzIFRlc3ROdW1weUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAg ICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYzMiwgZjMyXzEpCi0gICAgICAgICAgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYzMiwgZjMyXzIpCi0gCi0tICAgIEBwYXJhbWV0ZXJp emVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgwLjAw NDM5NDUzMTI1LCAwLjAwMzkwNjI1KSwKLS0gICAgICAgICAgICAoMC4wMDU4NTkzNzUsIDAuMDA1 ODU5Mzc1KSwKLS0gICAgICAgICAgICAoMC4wMDU3NTkzNzUsIDAuMDA1ODU5Mzc1KSwKLS0gICAg ICAgICAgICAoMC4wMDQ2ODc1LCAwLjAwMzkwNjI1KSwKLS0gICAgICAgICAgICAoMC4wMDE5NTMx MjUsIDAuMDAxOTUzMTI1KSwKLS0gICAgICAgICAgICAoMC4wMDI5Mjk2ODc1LCAwLjAwMzkwNjI1 KSwKLS0gICAgICAgICAgICAoMC4wMDIwNTMxMjUsIDAuMDAxOTUzMTI1KSwKLS0gICAgICAgICAg ICAoMC4wMDIzNDM3NSwgMC4wMDE5NTMxMjUpLAotLSAgICAgICAgICAgICgwLjAwODc4OTA2MjUs IDAuMDA3ODEyNSksCi0tICAgICAgICAgICAgKDAuMDAxMTcxODc1LCAwLjAwMTk1MzEyNSksCi0t ICAgICAgICAgICAgKDEuODEzMTYwNSwgMS44NzUpLAotLSAgICAgICAgXQotLSAgICApCi0tICAg IGRlZiB0ZXN0X2Zsb2F0OGU0bTNfdG9fZmxvYXQzMl9yb3VuZChzZWxmLCB2YWwsIGV4cGVjdGVk KToKLS0gICAgICAgIGY4ID0gaGVscGVyLmZsb2F0MzJfdG9fZmxvYXQ4ZTRtMyh2YWwpCi0tICAg ICAgICBmMzIgPSBudW1weV9oZWxwZXIuZmxvYXQ4ZTRtM190b19mbG9hdDMyKGY4KQotLSAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChmMzIsIGV4cGVjdGVkKQotLQotICAgICBkZWYgdGVzdF9mbG9h dDhlNW0yX3RvX2Zsb2F0MzIoc2VsZik6Ci0gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bXB5 X2hlbHBlci5mbG9hdDhlNW0yX3RvX2Zsb2F0MzIoaW50KCIxMTExMDExIiwgMikpLCA1NzM0NCkK LSAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtcHlfaGVscGVyLmZsb2F0OGU1bTJfdG9fZmxv YXQzMihpbnQoIjEwMCIsIDIpKSwgMiAqKiAoLTE0KSkKLUBAIC02MjUsMjUgKzU4MSw2IEBAIGNs YXNzIFRlc3ROdW1weUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBzZWxmLmFz c2VydEVxdWFsKHRwLlNlcmlhbGl6ZVRvU3RyaW5nKCksIGFnYWluLlNlcmlhbGl6ZVRvU3RyaW5n KCkpCi0gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRwLmRhdGFfdHlwZSwgaGVscGVyLm5wX2R0 eXBlX3RvX3RlbnNvcl9kdHlwZShiYWNrLmR0eXBlKSkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQu cGFyYW1ldGVyaXplZC5leHBhbmQoWyhhdHQsKSBmb3IgYXR0IGluIGRpcihvbm54LlRlbnNvclBy b3RvKV0pCi0tICAgIGRlZiB0ZXN0X3RvX2FycmF5X2Zyb21fYXJyYXkoc2VsZiwgYXR0KToKLS0g ICAgICAgIGlmIGF0dCBpbiB7Ci0tICAgICAgICAgICAgIklOVDQiLAotLSAgICAgICAgICAgICJV SU5UNCIsCi0tICAgICAgICAgICAgIlNUUklORyIsCi0tICAgICAgICAgICAgIlVOREVGSU5FRCIs Ci0tICAgICAgICAgICAgIkRFRkFVTFQiLAotLSAgICAgICAgICAgICJOQU1FX0ZJRUxEX05VTUJF UiIsCi0tICAgICAgICB9OgotLSAgICAgICAgICAgIHJldHVybgotLSAgICAgICAgaWYgYXR0WzBd IDwgIkEiIG9yIGF0dFswXSA+ICJaIjoKLS0gICAgICAgICAgICByZXR1cm4KLS0gICAgICAgIHZh bHVlID0gZ2V0YXR0cihvbm54LlRlbnNvclByb3RvLCBhdHQpCi0tICAgICAgICBpZiBub3QgaXNp bnN0YW5jZSh2YWx1ZSwgaW50KToKLS0gICAgICAgICAgICByZXR1cm4KLS0KLS0gICAgICAgIHNl bGYuX3RvX2FycmF5X2Zyb21fYXJyYXkodmFsdWUpCi0tCi0gICAgIGRlZiB0ZXN0X3RvX2FycmF5 X2Zyb21fYXJyYXlfc3VidHlwZShzZWxmKToKLSAgICAgICAgIHNlbGYuX3RvX2FycmF5X2Zyb21f YXJyYXkob25ueC5UZW5zb3JQcm90by5JTlQ0KQotICAgICAgICAgc2VsZi5fdG9fYXJyYXlfZnJv bV9hcnJheShvbm54LlRlbnNvclByb3RvLlVJTlQ0KQotZGlmZiAtLWdpdCBhL29ubngvdGVzdC9w YXJzZXJfdGVzdC5weSBiL29ubngvdGVzdC9wYXJzZXJfdGVzdC5weQotaW5kZXggYzExN2QzNzli Li45NjdkMjkzOTAgMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3QvcGFyc2VyX3Rlc3QucHkKLSsrKyBi L29ubngvdGVzdC9wYXJzZXJfdGVzdC5weQotQEAgLTUsOCArNSw2IEBAIGZyb20gX19mdXR1cmVf XyBpbXBvcnQgYW5ub3RhdGlvbnMKLSAKLSBpbXBvcnQgdW5pdHRlc3QKLSAKLS1mcm9tIHBhcmFt ZXRlcml6ZWQgaW1wb3J0IHBhcmFtZXRlcml6ZWQKLS0KLSBpbXBvcnQgb25ueAotIGZyb20gb25u eCBpbXBvcnQgR3JhcGhQcm90bywgT3BlcmF0b3JTZXRJZFByb3RvLCBUZW5zb3JQcm90bywgY2hl Y2tlcgotIAotQEAgLTEyMCw5NCArMTE4LDYgQEAgY2xhc3MgVGVzdEJhc2ljRnVuY3Rpb25zKHVu aXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIG1vZGVsID0gb25ueC5wYXJzZXIucGFyc2VfbW9k ZWwoaW5wdXQpCi0gICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKG1vZGVsKQotIAotLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKAotLSAgICAg ICAgICAgICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxvYXRbTl0gb3V0KSB7IG91dCA9 IGN1c3RvbV9kb21haW4uU2VsdSh4KSB9IiwKLS0gICAgICAgICAgICAgICAge30sCi0tICAgICAg ICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICJhZ3JhcGggKGZsb2F0 W05dIHgpID0+IChmbG9hdFtOXSBvdXQpIHsgb3V0ID0gY3VzdG9tX2RvbWFpbi5TZWx1PGFscGhh PTIuMD4oeCkgfSIsCi0tICAgICAgICAgICAgICAgIHsiYWxwaGEiOiAyLjB9LAotLSAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAiYWdyYXBoIChmbG9hdFtO XSB4KSA9PiAoZmxvYXRbTl0gb3V0KSB7IG91dCA9IGN1c3RvbV9kb21haW4uU2VsdTxnYW1tYT0z LjA+KHgpIH0iLAotLSAgICAgICAgICAgICAgICB7ImdhbW1hIjogMy4wfSwKLS0gICAgICAgICAg ICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgImFncmFwaCAoZmxvYXRbTl0g eCkgPT4gKGZsb2F0W05dIG91dCkgeyBvdXQgPSBjdXN0b21fZG9tYWluLlNlbHU8YWxwaGE9Mi4w LCBnYW1tYT0zLjA+KHgpIH0iLAotLSAgICAgICAgICAgICAgICB7ImFscGhhIjogMi4wLCAiZ2Ft bWEiOiAzLjB9LAotLSAgICAgICAgICAgICksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVm IHRlc3RfY29tcG9zaXRlX3BhcnNlX2Z1bmN0aW9uX3dpdGhfYXR0cmlidXRlcygKLS0gICAgICAg IHNlbGYsIGdyYXBoX3RleHQ6IHN0ciwgZXhwZWN0ZWRfYXR0cmlidXRlOiBkaWN0Ci0tICAgICkg LT4gTm9uZToKLS0gICAgICAgIGRlZmF1bHRfYWxwaGEgPSAxLjY3MzI2MzE5MjE3NjgxODg0NzY1 NjI1Ci0tICAgICAgICBkZWZhdWx0X2dhbW1hID0gMS4wNTA3MDEwMjIxNDgxMzIzMjQyMTg3NQot LQotLSAgICAgICAgZGVmIGV4cGVjdF9jdXN0b21fbm9kZV9hdHRyaWJ1dGUobm9kZSwgYXR0cmli dXRlcyk6Ci0tICAgICAgICAgICAgZm9yIGtleSBpbiBhdHRyaWJ1dGVzOgotLSAgICAgICAgICAg ICAgICBtYXRjaF9hdHRyID0gW2F0dHIgZm9yIGF0dHIgaW4gbm9kZS5hdHRyaWJ1dGUgaWYgYXR0 ci5uYW1lID09IGtleV0KLS0gICAgICAgICAgICAgICAgYXNzZXJ0IGxlbihtYXRjaF9hdHRyKSA9 PSAxCi0tICAgICAgICAgICAgICAgIGFzc2VydCBtYXRjaF9hdHRyWzBdLmYgPT0gYXR0cmlidXRl c1trZXldCi0tCi0tICAgICAgICBkZWYgZXhwZWN0X21vZGVsX2Z1bmN0aW9uX2F0dHJpYnV0ZSht b2RlbCk6Ci0tICAgICAgICAgICAgYXNzZXJ0IGxlbihtb2RlbC5mdW5jdGlvbnNbMF0uYXR0cmli dXRlX3Byb3RvKSA9PSAyCi0tICAgICAgICAgICAgYXR0cl9wcm90b19hbHBoYSA9IFsKLS0gICAg ICAgICAgICAgICAgYXR0cl9wcm90bwotLSAgICAgICAgICAgICAgICBmb3IgYXR0cl9wcm90byBp biBtb2RlbC5mdW5jdGlvbnNbMF0uYXR0cmlidXRlX3Byb3RvCi0tICAgICAgICAgICAgICAgIGlm IGF0dHJfcHJvdG8ubmFtZSA9PSAiYWxwaGEiCi0tICAgICAgICAgICAgXQotLSAgICAgICAgICAg IGFzc2VydCBsZW4oYXR0cl9wcm90b19hbHBoYSkgPT0gMSBhbmQgYXR0cl9wcm90b19hbHBoYVsw XS5mID09IGRlZmF1bHRfYWxwaGEKLS0gICAgICAgICAgICBhdHRyX3Byb3RvX2dhbW1hID0gWwot LSAgICAgICAgICAgICAgICBhdHRyX3Byb3RvCi0tICAgICAgICAgICAgICAgIGZvciBhdHRyX3By b3RvIGluIG1vZGVsLmZ1bmN0aW9uc1swXS5hdHRyaWJ1dGVfcHJvdG8KLS0gICAgICAgICAgICAg ICAgaWYgYXR0cl9wcm90by5uYW1lID09ICJnYW1tYSIKLS0gICAgICAgICAgICBdCi0tICAgICAg ICAgICAgYXNzZXJ0IGxlbihhdHRyX3Byb3RvX2dhbW1hKSA9PSAxIGFuZCBhdHRyX3Byb3RvX2dh bW1hWzBdLmYgPT0gZGVmYXVsdF9nYW1tYQotLQotLSAgICAgICAgZnVuY3Rpb25fdGV4dCA9IGYi IiIKLS0gICAgICAgICA8Ci0tICAgICAgICAgZG9tYWluOiAiY3VzdG9tX2RvbWFpbiIsCi0tICAg ICAgICAgb3BzZXRfaW1wb3J0OiBbICIiIDogMTVdLAotLSAgICAgICAgIGRvY19zdHJpbmc6ICJU ZXN0IGZ1bmN0aW9uIHByb3RvIgotLSAgICAgICAgID4KLS0gICAgICAgICAgIFNlbHUKLS0gICAg ICAgICAgIDxhbHBoYTogZmxvYXQ9e2RlZmF1bHRfYWxwaGF9LCBnYW1tYTogZmxvYXQ9e2RlZmF1 bHRfZ2FtbWF9PgotLSAgICAgICAgICAgKFgpID0+IChDKQotLSAgICAgICAgICAge3sKLS0gICAg ICAgICAgICAgICBjb25zdGFudF9hbHBoYSA9IENvbnN0YW50PHZhbHVlX2Zsb2F0OiBmbG9hdD1A YWxwaGE+KCkKLS0gICAgICAgICAgICAgICBjb25zdGFudF9nYW1tYSA9IENvbnN0YW50PHZhbHVl X2Zsb2F0OiBmbG9hdD1AZ2FtbWE+KCkKLS0gICAgICAgICAgICAgICBhbHBoYV94ID0gQ2FzdExp a2UoY29uc3RhbnRfYWxwaGEsIFgpCi0tICAgICAgICAgICAgICAgZ2FtbWFfeCA9IENhc3RMaWtl KGNvbnN0YW50X2dhbW1hLCBYKQotLSAgICAgICAgICAgICAgIGV4cF94ID0gRXhwKFgpCi0tICAg ICAgICAgICAgICAgYWxwaGFfeF9leHBfeCA9IE11bChhbHBoYV94LCBleHBfeCkKLS0gICAgICAg ICAgICAgICBhbHBoYV94X2V4cF94XyA9IFN1YihhbHBoYV94X2V4cF94LCBhbHBoYV94KQotLSAg ICAgICAgICAgICAgIG5lZyA9IE11bChnYW1tYV94LCBhbHBoYV94X2V4cF94XykKLS0gICAgICAg ICAgICAgICBwb3MgPSBNdWwoZ2FtbWFfeCwgWCkKLS0gICAgICAgICAgICAgICBfemVybyA9IENv bnN0YW50PHZhbHVlX2Zsb2F0PTAuMD4oKQotLSAgICAgICAgICAgICAgIHplcm8gPSBDYXN0TGlr ZShfemVybywgWCkKLS0gICAgICAgICAgICAgICBsZXNzX2VxID0gTGVzc09yRXF1YWwoWCwgemVy bykKLS0gICAgICAgICAgICAgICBDID0gV2hlcmUobGVzc19lcSwgbmVnLCBwb3MpCi0tICAgICAg ICAgICB9fQotLSAgICAgICAgIiIiCi0tCi0tICAgICAgICBmdW5jdGlvbnMgPSBbb25ueC5wYXJz ZXIucGFyc2VfZnVuY3Rpb24oZnVuY3Rpb25fdGV4dCldCi0tICAgICAgICBncmFwaCA9IG9ubngu cGFyc2VyLnBhcnNlX2dyYXBoKGdyYXBoX3RleHQpCi0tICAgICAgICBvcHNldF9pbXBvcnRzID0g WwotLSAgICAgICAgICAgIE9wZXJhdG9yU2V0SWRQcm90byhkb21haW49IiIsIHZlcnNpb249MTUp LAotLSAgICAgICAgICAgIE9wZXJhdG9yU2V0SWRQcm90byhkb21haW49ImN1c3RvbV9kb21haW4i LCB2ZXJzaW9uPTEpLAotLSAgICAgICAgXQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54LmhlbHBl ci5tYWtlX21vZGVsKAotLSAgICAgICAgICAgIGdyYXBoLCBmdW5jdGlvbnM9ZnVuY3Rpb25zLCBv cHNldF9pbXBvcnRzPW9wc2V0X2ltcG9ydHMKLS0gICAgICAgICkKLS0gICAgICAgIGNoZWNrZXIu Y2hlY2tfbW9kZWwobW9kZWwpCi0tCi0tICAgICAgICBleHBlY3RfbW9kZWxfZnVuY3Rpb25fYXR0 cmlidXRlKG1vZGVsKQotLSAgICAgICAgZXhwZWN0X2N1c3RvbV9ub2RlX2F0dHJpYnV0ZShtb2Rl bC5ncmFwaC5ub2RlWzBdLCBleHBlY3RlZF9hdHRyaWJ1dGUpCi0tCi0gICAgIGRlZiB0ZXN0X3Bh cnNlX25vZGUoc2VsZik6Ci0gICAgICAgICBub2RlID0gb25ueC5wYXJzZXIucGFyc2Vfbm9kZSgK LSAgICAgICAgICAgICAib3V0MSwgb3V0MiA9IFNvbWVEb21haW4uU29tZU9wIDxhdHRyMSA9IDE+ IChpbjEsIGluMikiCi1AQCAtMjIwLDk4ICsxMzAsNiBAQCBjbGFzcyBUZXN0QmFzaWNGdW5jdGlv bnModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub2RlLmRv bWFpbiwgIlNvbWVEb21haW4iKQotICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub2RlLm9wX3R5 cGUsICJTb21lT3AiKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBb Ci0tICAgICAgICAgICAgKCJub3RfYV9nb29kX2Zsb2F0IiwgVHJ1ZSksCi0tICAgICAgICAgICAg KCJpbmYxIiwgVHJ1ZSksCi0tICAgICAgICAgICAgKCItaW5mMSIsIFRydWUpLAotLSAgICAgICAg ICAgICgibmFuMCIsIFRydWUpLAotLSAgICAgICAgICAgICgiLW5hbjAiLCBUcnVlKSwKLS0gICAg ICAgICAgICAoIm5hbmluZiIsIFRydWUpLAotLSAgICAgICAgICAgICgiaW5mIiwgRmFsc2UpLAot LSAgICAgICAgICAgICgiLWluZiIsIEZhbHNlKSwKLS0gICAgICAgICAgICAoImluZmluaXR5Iiwg RmFsc2UpLAotLSAgICAgICAgICAgICgiLWluZmluaXR5IiwgRmFsc2UpLAotLSAgICAgICAgICAg ICgibmFuIiwgRmFsc2UpLAotLSAgICAgICAgICAgICgiLU5hTiIsIEZhbHNlKSwKLS0gICAgICAg IF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9wYXJzZV92YXJpb3VzX2Zsb2F0X3ZhbHVlcyhzZWxm LCB0ZXN0X2xpdGVyYWwsIGV4cGVjdF9leGNlcHRpb24pOgotLSAgICAgICAgbW9kZWxfdGV4dCA9 IGYiIiIKLS0gICAgICAgIDwKLS0gICAgICAgIGlyX3ZlcnNpb246IDgsCi0tICAgICAgICBvcHNl dF9pbXBvcnQ6IFsiIiA6IDE4LCAidGhpcyIgOiAxXSwKLS0gICAgICAgIHByb2R1Y2VyX25hbWU6 ICJGdW5jdGlvblByb3RvVGVzdCIsCi0tICAgICAgICBwcm9kdWNlcl92ZXJzaW9uOiAiMS4wIgot LSAgICAgICAgPgotLSAgICAgICAgX2Z1bmMgKCkgPT4gKCkKLS0gICAgICAgIHt7Ci0tICAgICAg ICB0bXAgPSBDb25zdGFudCA8dmFsdWVfZmxvYXQgPSB7dGVzdF9saXRlcmFsfT4oKQotLSAgICAg ICAgfX0KLS0gICAgICAgICIiIgotLSAgICAgICAgaWYgZXhwZWN0X2V4Y2VwdGlvbjoKLS0gICAg ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLS0gICAgICAgICAgICAgICAgb25ueC5wYXJzZXIu UGFyc2VFcnJvciwgbGFtYmRhOiBvbm54LnBhcnNlci5wYXJzZV9tb2RlbChtb2RlbF90ZXh0KQot LSAgICAgICAgICAgICkKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgbW9kZWwgPSBvbm54 LnBhcnNlci5wYXJzZV9tb2RlbChtb2RlbF90ZXh0KQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwobW9kZWwuaXJfdmVyc2lvbiwgOCkKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs KG1vZGVsLnByb2R1Y2VyX25hbWUsICJGdW5jdGlvblByb3RvVGVzdCIpCi0tICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChtb2RlbC5wcm9kdWNlcl92ZXJzaW9uLCAiMS4wIikKLS0gICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbC5ncmFwaC5ub2RlKSwgMSkKLS0gICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZSks IDEpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5ncmFwaC5ub2RlWzBdLmF0 dHJpYnV0ZVswXS5uYW1lLCAidmFsdWVfZmxvYXQiKQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwoCi0tICAgICAgICAgICAgICAgIG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBd LnR5cGUsIG9ubnguQXR0cmlidXRlUHJvdG8uRkxPQVQKLS0gICAgICAgICAgICApCi0tICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLS0gICAgICAgICAgICAgICAgc3RyKG1vZGVsLmdyYXBo Lm5vZGVbMF0uYXR0cmlidXRlWzBdLmYpLCBzdHIoZmxvYXQodGVzdF9saXRlcmFsKSkKLS0gICAg ICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0g ICAgICAgICAgICAoImJmbG9hdDE2IiwgVGVuc29yUHJvdG8uQkZMT0FUMTYpLAotLSAgICAgICAg ICAgICgiYm9vbCIsIFRlbnNvclByb3RvLkJPT0wpLAotLSAgICAgICAgICAgICgiY29tcGxleDY0 IiwgVGVuc29yUHJvdG8uQ09NUExFWDY0KSwKLS0gICAgICAgICAgICAoImNvbXBsZXgxMjgiLCBU ZW5zb3JQcm90by5DT01QTEVYMTI4KSwKLS0gICAgICAgICAgICAoImRvdWJsZSIsIFRlbnNvclBy b3RvLkRPVUJMRSksCi0tICAgICAgICAgICAgKCJmbG9hdDE2IiwgVGVuc29yUHJvdG8uRkxPQVQx NiksCi0tICAgICAgICAgICAgKCJmbG9hdCIsIFRlbnNvclByb3RvLkZMT0FUKSwKLS0gICAgICAg ICAgICAoImZsb2F0OGU0bTNmbiIsIFRlbnNvclByb3RvLkZMT0FUOEU0TTNGTiksCi0tICAgICAg ICAgICAgKCJmbG9hdDhlNG0zZm51eiIsIFRlbnNvclByb3RvLkZMT0FUOEU0TTNGTlVaKSwKLS0g ICAgICAgICAgICAoImZsb2F0OGU1bTIiLCBUZW5zb3JQcm90by5GTE9BVDhFNU0yKSwKLS0gICAg ICAgICAgICAoImZsb2F0OGU1bTJmbnV6IiwgVGVuc29yUHJvdG8uRkxPQVQ4RTVNMkZOVVopLAot LSAgICAgICAgICAgICgiaW50NCIsIFRlbnNvclByb3RvLklOVDQpLAotLSAgICAgICAgICAgICgi aW50OCIsIFRlbnNvclByb3RvLklOVDgpLAotLSAgICAgICAgICAgICgiaW50MTYiLCBUZW5zb3JQ cm90by5JTlQxNiksCi0tICAgICAgICAgICAgKCJpbnQzMiIsIFRlbnNvclByb3RvLklOVDMyKSwK LS0gICAgICAgICAgICAoImludDY0IiwgVGVuc29yUHJvdG8uSU5UNjQpLAotLSAgICAgICAgICAg ICgic3RyaW5nIiwgVGVuc29yUHJvdG8uU1RSSU5HKSwKLS0gICAgICAgICAgICAoInVpbnQ0Iiwg VGVuc29yUHJvdG8uVUlOVDQpLAotLSAgICAgICAgICAgICgidWludDgiLCBUZW5zb3JQcm90by5V SU5UOCksCi0tICAgICAgICAgICAgKCJ1aW50MTYiLCBUZW5zb3JQcm90by5VSU5UMTYpLAotLSAg ICAgICAgICAgICgidWludDMyIiwgVGVuc29yUHJvdG8uVUlOVDMyKSwKLS0gICAgICAgICAgICAo InVpbnQ2NCIsIFRlbnNvclByb3RvLlVJTlQ2NCksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAg ZGVmIHRlc3RfcGFyc2VfZ3JhcGhfdHlwZXMoc2VsZiwgbmFtZSwgaXR5cGUpIC0+IE5vbmU6Ci0t ICAgICAgICB3ID0gJ3siMCJ9JyBpZiBpdHlwZSA9PSBUZW5zb3JQcm90by5TVFJJTkcgZWxzZSAi ezB9IgotLSAgICAgICAgdGV4dF9ncmFwaCA9IGYiIiIKLS0gICAgICAgICAgIDwKLS0gICAgICAg ICAgICAgaXJfdmVyc2lvbjogMTAsCi0tICAgICAgICAgICAgIG9wc2V0X2ltcG9ydDogWyAiIiA6 IDE5XQotLSAgICAgICAgICAgPgotLSAgICAgICAgICAgYWdyYXBoIChmbG9hdFtOXSBYKSA9PiAo e25hbWV9W05dIEMpCi0tICAgICAgICAgICA8Ci0tICAgICAgICAgICAgIHtuYW1lfVsxXSB3ZWln aHQgPSB7d30KLS0gICAgICAgICAgID4KLS0gICAgICAgICAgIHt7Ci0tICAgICAgICAgICAgICBD ID0gQ2FzdDx0bz17aXR5cGV9PihYKQotLSAgICAgICAgICAgfX0KLS0gICAgICAgICAgICIiIgot LSAgICAgICAgZ3JhcGggPSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbCh0ZXh0X2dyYXBoKQotLSAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ3JhcGguZ3JhcGgubm9kZSksIDEpCi0tCi0gCi0g aWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9 MikKLWRpZmYgLS1naXQgYS9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0LnB5 IGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVzdC5weQotaW5kZXggM2IwNWRh MzAzLi4xMDA1OGY5ZTcgMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRv cl9tbF90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl9tbF90ZXN0 LnB5Ci1AQCAtMTEsNyArMTEsNiBAQCBmcm9tIG9zIGltcG9ydCBnZXRlbnYKLSAKLSBpbXBvcnQg bnVtcHkgYXMgbnAgICMgdHlwZTogaWdub3JlCi0gZnJvbSBudW1weS50ZXN0aW5nIGltcG9ydCBh c3NlcnRfYWxsY2xvc2UgICMgdHlwZTogaWdub3JlCi0tZnJvbSBwYXJhbWV0ZXJpemVkIGltcG9y dCBwYXJhbWV0ZXJpemVkCi0gCi0gaW1wb3J0IG9ubngKLSBmcm9tIG9ubnggaW1wb3J0IE9OTlhf TUwsIFRlbnNvclByb3RvLCBUeXBlUHJvdG8sIFZhbHVlSW5mb1Byb3RvCi1AQCAtOTA3LDExOCAr OTA2LDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvckFpT25ueE1sKHVuaXR0ZXN0LlRl c3RDYXNlKToKLSAgICAgICAgIGNoZWNrX21vZGVsKG9ueCkKLSAgICAgICAgIHJldHVybiBvbngK LSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgdHVwbGUoCi0tICAgICAg ICAgICAgaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUoCi0tICAgICAgICAgICAgICAgICgK LS0gICAgICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdh dGlvbkZ1bmN0aW9uLlNVTSBpZiBvcHNldDUgZWxzZSAiU1VNIiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjU3Njky M10sIFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAgICAgICAg ICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0tICAg ICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uQVZFUkFHRSBpZiBvcHNldDUgZWxzZSAi QVZFUkFHRSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFtbMC4yODg0NjJdLCBbMC4yODg0NjJdLCBbMC4yODg0NjJdXSwg ZHR5cGU9bnAuZmxvYXQzMgotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgICAgICAgICAgICAgb3BzZXQ1LAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlvbkZ1bmN0 aW9uLk1JTiBpZiBvcHNldDUgZWxzZSAiTUlOIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBu cC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjA3NjkyM10sIFswLjA3 NjkyM10sIFswLjA3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAgICAgICAgICAgICAgICAg ICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0tICAgICAgICAgICAg ICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAg ICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uTUFYIGlmIG9wc2V0NSBlbHNlICJNQVgiLAotLSAgICAg ICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMC41XSwgWzAuNV0sIFswLjVdXSwgZHR5cGU9 bnAuZmxvYXQzMiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAotLSAgICAgICAg ICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgICAgICBmb3Ig b3BzZXQ1IGluIFtUcnVlLCBGYWxzZV0KLS0gICAgICAgICAgICApCi0tICAgICAgICApCi0tICAg ICkKLS0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBj b21waWxlZCB3aXRoIGFpLm9ubngubWwiKQotLSAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3Jl Z3Jlc3Nvcl9hZ2dyZWdhdGlvbl9mdW5jdGlvbnMoCi0tICAgICAgICBzZWxmLCBhZ2dyZWdhdGVf ZnVuY3Rpb24sIGV4cGVjdGVkX3Jlc3VsdCwgb3BzZXQ1Ci0tICAgICk6Ci0tICAgICAgICB4ID0g bnAuYXJhbmdlKDkpLnJlc2hhcGUoKC0xLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpIC8gMTAgLSAw LjUKLS0gICAgICAgIG1vZGVsX2ZhY3RvcnkgPSAoCi0tICAgICAgICAgICAgc2VsZi5fZ2V0X3Rl c3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QKLS0gICAgICAgICAgICBpZiBvcHNldDUKLS0g ICAgICAgICAgICBlbHNlIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yCi0t ICAgICAgICApCi0tICAgICAgICBtb2RlbF9wcm90byA9IG1vZGVsX2ZhY3RvcnkoCi0tICAgICAg ICAgICAgYWdncmVnYXRlX2Z1bmN0aW9uLAotLSAgICAgICAgKQotLSAgICAgICAgc2VzcyA9IFJl ZmVyZW5jZUV2YWx1YXRvcihtb2RlbF9wcm90bykKLS0gICAgICAgIChhY3R1YWwsKSA9IHNlc3Mu cnVuKE5vbmUsIHsiWCI6IHh9KQotLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkX3Jl c3VsdCwgYWN0dWFsLCBhdG9sPTFlLTYpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgK LS0gICAgICAgIHR1cGxlKAotLSAgICAgICAgICAgIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJh YmxlKAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAoCi0tICAgICAg ICAgICAgICAgICAgICAgICAgTW9kZS5MRVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9MRVEiLAot LSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBbWzAuNTc2OTIzXSwgWzAuNTc2OTIzXSwgWzAuNTc2OTIzXV0sIGR0eXBlPW5wLmZs b2F0MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAg ICAoCi0tICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5HVCBpZiBvcHNldDUgZWxzZSAiQlJB TkNIX0dUIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzAuNV0sIFswLjVd LCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG9w c2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAoCi0t ICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5MVCBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0xU IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgW1swLjU3NjkyM10sIFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlwZT1u cC5mbG9hdDMyCi0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICBvcHNldDUsCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUuR1RFIGlmIG9wc2V0NSBlbHNl ICJCUkFOQ0hfR1RFIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzAuNV0s IFswLjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIpLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAg ICAoCi0tICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5FUSBpZiBvcHNldDUgZWxzZSAiQlJB TkNIX0VRIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzEuMF0sIFsxLjBd LCBbMS4wXV0sIGR0eXBlPW5wLmZsb2F0MzIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG9w c2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAoCi0t ICAgICAgICAgICAgICAgICAgICAgICAgTW9kZS5ORVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9O RVEiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbWzAuMDc2OTIzXSwgWzAuMDc2OTIzXSwgWzAuMDc2OTIzXV0sIGR0eXBl PW5wLmZsb2F0MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICAgICAgICAgIG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAg ICAgICkKLS0gICAgICAgICAgICAgICAgZm9yIG9wc2V0NSBpbiBbVHJ1ZSwgRmFsc2VdCi0tICAg ICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICApCi0tICAgIEB1bml0dGVzdC5za2lwSWYobm90 IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKLS0g ICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfcnVsZShzZWxmLCBydWxlLCBleHBl Y3RlZCwgb3BzZXQ1KToKLS0gICAgICAgIHggPSBucC5hcmFuZ2UoOSkucmVzaGFwZSgoLTEsIDMp KS5hc3R5cGUobnAuZmxvYXQzMikgLyAxMCAtIDAuNQotLSAgICAgICAgbW9kZWxfZmFjdG9yeSA9 ICgKLS0gICAgICAgICAgICBzZWxmLl9nZXRfdGVzdF90cmVlX2Vuc2VtYmxlX29wc2V0X2xhdGVz dAotLSAgICAgICAgICAgIGlmIG9wc2V0NQotLSAgICAgICAgICAgIGVsc2Ugc2VsZi5fZ2V0X3Rl c3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3IKLS0gICAgICAgICkKLS0gICAgICAgIGFnZ3JlZ2F0 ZV9mdW5jdGlvbiA9IEFnZ3JlZ2F0aW9uRnVuY3Rpb24uU1VNIGlmIG9wc2V0NSBlbHNlICJTVU0i Ci0tCi0tICAgICAgICBtb2RlbF9wcm90byA9IG1vZGVsX2ZhY3RvcnkoYWdncmVnYXRlX2Z1bmN0 aW9uLCBydWxlKQotLSAgICAgICAgc2VzcyA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbF9wcm90 bykKLS0gICAgICAgIChhY3R1YWwsKSA9IHNlc3MucnVuKE5vbmUsIHsiWCI6IHh9KQotLSAgICAg ICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBhY3R1YWwsIGF0b2w9MWUtNikKLS0KLSAgICAg QHVuaXR0ZXN0LnNraXBJZihub3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21waWxlZCB3 aXRoIGFpLm9ubngubWwiKQotICAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3Nvcl8y X3RhcmdldHNfb3BzZXQzKHNlbGYpOgotICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmVdKQotQEAgLTExMzIsMjMgKzEw MTksNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yQWlPbm54TWwodW5pdHRlc3QuVGVz dENhc2UpOgotICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBnb3RbMF0sIGF0b2w9 MWUtNikKLSAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm9wX3R5cGU9VHJlZUVuc2VtYmxlUmVncmVz c29yIiwgc3RyKHNlc3MucnRfbm9kZXNfWzBdKSkKLSAKLS0gICAgQHVuaXR0ZXN0LnNraXBJZihu b3QgT05OWF9NTCwgcmVhc29uPSJvbm54IG5vdCBjb21waWxlZCB3aXRoIGFpLm9ubngubWwiKQot LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbKGlucHV0X3R5cGUsKSBmb3Ig aW5wdXRfdHlwZSBpbiBbVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkRPVUJMRV1dCi0t ICAgICkKLS0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9taXNzaW5nX29wc2V0NShzZWxmLCBp bnB1dF90eXBlKToKLS0gICAgICAgIG1vZGVsID0gc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJs ZV9vcHNldF9sYXRlc3QoCi0tICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5TVU0sIE1v ZGUuTEVRLCBUcnVlLCBpbnB1dF90eXBlCi0tICAgICAgICApCi0tICAgICAgICBucF9kdHlwZSA9 IG9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShpbnB1dF90eXBlKQotLSAgICAg ICAgeCA9IG5wLmFyYW5nZSg5KS5yZXNoYXBlKCgtMSwgMykpLmFzdHlwZShucF9kdHlwZSkgLyAx MCAtIDAuNQotLSAgICAgICAgeFsyLCAwXSA9IDUKLS0gICAgICAgIHhbMSwgOl0gPSBucC5uYW4K LS0gICAgICAgIGV4cGVjdGVkID0gbnAuYXJyYXkoW1sxMDAwMDEuMF0sIFsxMDAxMDAuMF0sIFsx MDAxMDAuMF1dLCBkdHlwZT1ucF9kdHlwZSkKLS0gICAgICAgIHNlc3Npb24gPSBSZWZlcmVuY2VF dmFsdWF0b3IobW9kZWwpCi0tICAgICAgICAoYWN0dWFsLCkgPSBzZXNzaW9uLnJ1bihOb25lLCB7 IlgiOiB4fSkKLS0gICAgICAgIGFzc2VydF9hbGxjbG9zZShleHBlY3RlZCwgYWN0dWFsLCBhdG9s PTFlLTYpCi0tCi0gICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25u eCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKLSAgICAgZGVmIHRlc3RfdHJlZV9lbnNl bWJsZV9yZWdyZXNzb3JfbWlzc2luZ19vcHNldDVfZmxvYXQxNihzZWxmKToKLSAgICAgICAgIG1v ZGVsID0gc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QoCi1kaWZmIC0t Z2l0IGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfdGVzdC5weSBiL29ubngvdGVzdC9y ZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKLWluZGV4IGM4MDVlMWQ3Yi4uNDJhMmZiZWFlIDEw MDY0NAotLS0tIGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfdGVzdC5weQotKysrIGIv b25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfdGVzdC5weQotQEAgLTI0LDcgKzI0LDYgQEAg ZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50Ci0gZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNl Ci0gCi0gaW1wb3J0IG51bXB5IGFzIG5wCi0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLSBpbXBvcnQg dmVyc2lvbl91dGlscwotIGZyb20gbnVtcHkudGVzdGluZyBpbXBvcnQgYXNzZXJ0X2FsbGNsb3Nl LCBhc3NlcnRfYWxtb3N0X2VxdWFsCi0gCi1AQCAtMjk2MiwxNjMgKzI5NjEsNiBAQCBjbGFzcyBU ZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIG9ubnhf bW9kZWwgPSBtYWtlX21vZGVsKGdyYXBoLCBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIs IG9wc2V0KV0pCi0gICAgICAgICByZXR1cm4gb25ueF9tb2RlbAotIAotLSAgICBAcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAot LSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAg IlJlZHVjZU1pbiIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAg ICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbbnAubmFuLCBu cC5uYW5dLCBbMTQuNDIyNzA2LCAxOC44MDUyN11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAgICAg ICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShb WzIsIDE1XSwgWzEwLCA0XV0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAgICAgICAgICAgICAg IF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAg ICAgICAgICAgICJSZWR1Y2VMMSIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAg ICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb Mi4yMzY3MDUzLCAyLjM1MTY2MTJdLCBbNC4wNzYyOTIsIDQuMjk3MDYzNF1dLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxOCwgNl0sIFsx MywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAg ICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAi UmVkdWNlTDIiLAotLSAgICAgICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAg ICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuODAxNTUsIDEu ODE2OTk0OF0sIFsyLjk5MjgwNzYsIDMuMTIwNTg4M11dLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxMSwgMThdLCBbMTMsIDZdXSwgZHR5 cGU9bnAuaW50NjQpLAotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUxvZ1N1 bSIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAu YXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC45NDk3ODQ4LCAxLjE4NzI2 NDNdLCBbMS42NzY0MTc1LCAxLjcwNzU5XV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg IGR0eXBlPW5wLmZsb2F0MzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheShbWzYsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmlu dDY0KSwKLS0gICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VMb2dTdW1FeHAiLAot LSAgICAgICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5 KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuNjAwNTk3MywgMS43NDQ1OTM1XSwg WzIuNTYxNjIyOSwgMi42NTM5Nzk1XV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0 eXBlPW5wLmZsb2F0MzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICBucC5hcnJheShbWzEzLCA2XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0 KSwKLS0gICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAg ICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VNYXgiLAotLSAgICAgICAg ICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbWzEuNDIxNzEwOCwgMS41MDY5NTM2XSwgWzIuNDUzODI2 LCAyLjUwNDE3ODNdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxv YXQzMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIG5wLmFycmF5KFtbMTMsIDExXSwgWzEzLCAxMV1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAg ICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICAoCi0tICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTWVhbiIsCi0tICAgICAgICAgICAgICAg ICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFtbMC4zOTI0NzkwMywgMC43ODQ5NzYzNl0sIFsyLjAzODE0NiwgMi4x NDg1MzE3XV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBu cC5hcnJheShbWzEzLCA2XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAgICAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICgKLS0g ICAgICAgICAgICAgICAgICAgICJSZWR1Y2VTdW1TcXVhcmUiLAotLSAgICAgICAgICAgICAgICAg ICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbWzMuMjQ1NTgyOCwgMy4zMDE0Njk2XSwgWzguOTU2ODk2LCA5LjczODA3 MDVdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFy cmF5KFtbMTEsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAgICAgICAg ICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICgKLS0gICAg ICAgICAgICAgICAgICAgICJSZWR1Y2VQcm9kIiwKLS0gICAgICAgICAgICAgICAgICAgIFsKLS0g ICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgW1tucC5uYW4sIG5wLm5hbl0sIFsxNC40MjI3MDYsIDE4LjgwNTI3XV0sIGR0eXBlPW5w LmZsb2F0MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KFtbMiwgMTVdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAotLSAg ICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIFsxNywgMThdLAotLSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0 ZXN0X29wX3JlZHVjZShzZWxmLCByZWR1Y2Vfb3BfZXhwZWN0ZWQsIG9wc2V0OiBpbnQpOgotLSAg ICAgICAgcmVkdWNlX29wLCBleHBlY3RlZCA9IHJlZHVjZV9vcF9leHBlY3RlZAotLSAgICAgICAg WCA9IG5wLmFyYW5nZSg4KS5yZXNoYXBlKCgtMSwgNCkpLmFzdHlwZShucC5mbG9hdDMyKQotLQot LSAgICAgICAgcmVzdWx0cyA9IHt9Ci0tCi0tICAgICAgICBtb2RlbCA9IHNlbGYuX2NkaXN0X21v ZGVsKG9wc2V0LCByZWR1Y2Vfb3ApCi0tICAgICAgICBzZXNzID0gUmVmZXJlbmNlRXZhbHVhdG9y KG1vZGVsKQotLSAgICAgICAgZ290ID0gc2Vzcy5ydW4oTm9uZSwgeyJpbnB1dCI6IFh9KQotLSAg ICAgICAgcmVzdWx0c1sicmVmIiwgb3BzZXRdID0gZ290Ci0tCi0tICAgICAgICBjbCA9IFsKLS0g ICAgICAgICAgICBuCi0tICAgICAgICAgICAgZm9yIG4gaW4gc2Vzcy5ydF9ub2Rlc19bMF0uYm9k eS5ydF9ub2Rlc18KLS0gICAgICAgICAgICBpZiBuLl9fY2xhc3NfXy5fX25hbWVfXy5zdGFydHN3 aXRoKHJlZHVjZV9vcCkKLS0gICAgICAgIF0KLS0gICAgICAgIHNjaGVtYSA9IGNsWzBdLl9zY2hl bWEKLS0gICAgICAgIG5ld19jbCA9IHR5cGUocmVkdWNlX29wLCAoY2xbMF0uX19jbGFzc19fLCks IHsib3Bfc2NoZW1hIjogc2NoZW1hfSkKLS0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0 b3IobW9kZWwsIG5ld19vcHM9W25ld19jbF0pCi0tICAgICAgICBnb3QgPSBzZXNzLnJ1bihOb25l LCB7ImlucHV0IjogWH0pCi0tICAgICAgICByZXN1bHRzWyJyZWZfY2wiLCBvcHNldF0gPSBnb3QK LS0KLS0gICAgICAgIGJhc2VsaW5lID0gImNvbnN0YW50IgotLSAgICAgICAgZm9yIGssIHYgaW4g cmVzdWx0cy5pdGVtcygpOgotLSAgICAgICAgICAgIGZvciBhLCBiIGluIHppcChyZXZlcnNlZChl eHBlY3RlZCksIHJldmVyc2VkKHYpKToKLS0gICAgICAgICAgICAgICAgaWYgYS5zaGFwZSAhPSBi LnNoYXBlOgotLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgZiJTaGFwZSBtaXNtYXRjaCBmb3Ige3JlZHVjZV9vcCFyfSwg e2Jhc2VsaW5lfTp7YS5zaGFwZX0gIT0ge2t9OntiLnNoYXBlfS4iCi0tICAgICAgICAgICAgICAg ICAgICApCi0tICAgICAgICAgICAgICAgIGRpZmYgPSBucC5hYnMoYSAtIGIpLm1heCgpCi0tICAg ICAgICAgICAgICAgIGlmIGRpZmYgPiAxZS02OgotLSAgICAgICAgICAgICAgICAgICAgcmFpc2Ug QXNzZXJ0aW9uRXJyb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgZiJEaXNjcmVwYW5jaWVz IChtYXg9e2RpZmZ9KSBmb3Ige3JlZHVjZV9vcCFyfSwge2Jhc2VsaW5lfSAhPSB7a31cbnthfVxu IT1cbntifSIKLS0gICAgICAgICAgICAgICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu cGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKDEzLCksCi0t ICAgICAgICAgICAgKDE3LCksCi0tICAgICAgICAgICAgKDE4LCksCi0tICAgICAgICBdCi0tICAg ICkKLS0gICAgZGVmIHRlc3RfbXZuKHNlbGYsIG9wc2V0OiBpbnQsIHJlZl9vcHNldDogaW50ID0g MTMpOgotLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90 by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmUsIE5vbmVdKQotLSAgICAgICAgWSA9IG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmUs IE5vbmVdKQotLSAgICAgICAgbm9kZXMgPSBbCi0tICAgICAgICAgICAgbWFrZV9ub2RlKCJNZWFu VmFyaWFuY2VOb3JtYWxpemF0aW9uIiwgWyJYIl0sIFsiWSJdKSwKLS0gICAgICAgIF0KLS0gICAg ICAgIGdyYXBoID0gbWFrZV9ncmFwaChub2RlcywgImciLCBbWF0sIFtZXSkKLS0gICAgICAgIHgg PSBucC5yYW5kb20ucmFuZCgzLCAzLCAzLCAxKS5hc3R5cGUobnAuZmxvYXQzMikKLS0KLS0gICAg ICAgIG9ubnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBoLCBvcHNldF9pbXBvcnRzPVttYWtlX29w c2V0aWQoIiIsIG9wc2V0KV0pCi0tICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3Iob25u eF9tb2RlbCkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogeH0pWzBdCi0tCi0t ICAgICAgICByZWZfb25ueF9tb2RlbCA9IG1ha2VfbW9kZWwoZ3JhcGgsIG9wc2V0X2ltcG9ydHM9 W21ha2Vfb3BzZXRpZCgiIiwgcmVmX29wc2V0KV0pCi0tICAgICAgICByZWZfZXhwZWN0ZWQgPSBS ZWZlcmVuY2VFdmFsdWF0b3IocmVmX29ubnhfbW9kZWwpCi0tICAgICAgICBleHBlY3RlZCA9IHJl Zl9leHBlY3RlZC5ydW4oTm9uZSwgeyJYIjogeH0pWzBdCi0tCi0tICAgICAgICBzZWxmLmFzc2Vy dEVxdWFsKGV4cGVjdGVkLnNoYXBlLCBnb3Quc2hhcGUpCi0tICAgICAgICBhc3NlcnRfYWxsY2xv c2UoZXhwZWN0ZWQsIGdvdCkKLS0KLSAgICAgZGVmIHRlc3RfY29uY2F0X2luX2FfZnVuY3Rpb24o c2VsZik6Ci0gICAgICAgICBkZWYgY3JlYXRlX21vZGVsKCk6Ci0gICAgICAgICAgICAgbm9kZXMg PSBbXQotQEAgLTM4MDAsMjExICszNjQyLDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRv cih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6 IGRhdGF9KQotICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBnb3RbMF0pCi0gCi0t ICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAg ICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgNCAqIG5wLmFyYW5nZSgxMikucmVzaGFwZSgz LCA0KSwKLS0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcpLnJlc2hhcGUoMywgMiksCi0t ICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAyKSksCi0tICAgICAgICAgICAgICAgIDEsCi0t ICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIFtbMCwgNCwgNCwgNl0sIFs1LCA3 LCA2LCA3XSwgWzYsIDcsIDcsIDddXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgK LS0gICAgICAgICAgICAgICAgNCAqIG5wLmFyYW5nZSgxMikucmVzaGFwZSgzLCA0KSwKLS0gICAg ICAgICAgICAgICAgbnAuYXJhbmdlKDEsIDcpLnJlc2hhcGUoMywgMiksCi0tICAgICAgICAgICAg ICAgIG5wLm9uZXMoKDMsIDIpKSwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICAg ICAgMiwKLS0gICAgICAgICAgICAgICAgW1sxLCA1LCA1LCA3XSwgWzYsIDgsIDcsIDhdLCBbNywg OCwgOCwgOF1dLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICBucC5hcmFuZ2UoMjQpLnJlc2hhcGUoMywgOCksCi0tICAgICAgICAgICAgICAgIFtbMC4y NSwgMC41LCAxXSwgWzAuMjUsIDAuNSwgMV0sIFswLjI1LCAwLjUsIDFdXSwKLS0gICAgICAgICAg ICAgICAgbnAuemVyb3MoKDMsIDMpKSwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAg ICAgICAgMywKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgWzAsIDQs IDgsIDYsIDgsIDEwLCA2LCA3XSwKLS0gICAgICAgICAgICAgICAgICAgIFszMiwgMzYsIDQwLCAy MiwgMjQsIDI2LCAxNCwgMTVdLAotLSAgICAgICAgICAgICAgICAgICAgWzY0LCA2OCwgNzIsIDM4 LCA0MCwgNDIsIDIyLCAyM10sCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIG5wLmFyYW5nZSg2KSwKLS0gICAgICAg ICAgICAgICAgWzAuMjUsIDAuNV0sCi0tICAgICAgICAgICAgICAgIFstMSwgLTJdLAotLSAgICAg ICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAgICAzLAotLSAgICAgICAgICAgICAgICBbLTEs IDMsIDcsIDQsIDYsIDhdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAg ICAgICAgICAgICBucC5vbmVzKCg5LCAxMikpLAotLSAgICAgICAgICAgICAgICBucC5vbmVzKCgz LCA0KSksCi0tICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSksCi0tICAgICAgICAgICAg ICAgIDAsCi0tICAgICAgICAgICAgICAgIDMsCi0tICAgICAgICAgICAgICAgIE5vbmUsICAjIEJs b2NrZWQgcXVhbnRpemF0aW9uIGlzIGRlZmluZWQgZm9yIDEtRCBibG9ja3Mgb25seQotLSAgICAg ICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0 LCA1LCA2KSksCi0tICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQpKSwKLS0gICAgICAgICAg ICAgICAgbnAuemVyb3MoKDMsIDQpKSwKLS0gICAgICAgICAgICAgICAgMiwKLS0gICAgICAgICAg ICAgICAgMiwKLS0gICAgICAgICAgICAgICAgTm9uZSwgICMgU2NhbGUgYW5kIFpQIG11c3QgaGF2 ZSB0aGUgc2FtZSByYW5rIGFzIHRoZSBpbnB1dAotLSAgICAgICAgICAgICksCi0tICAgICAgICBd Ci0tICAgICkKLS0gICAgZGVmIHRlc3RfYmxvY2tlZF9xdWFudGl6ZV9saW5lYXIoCi0tICAgICAg ICBzZWxmLCB4LCBzY2FsZSwgemVyb19wb2ludCwgYXhpcywgYmxvY2tfc2l6ZSwgZXhwZWN0ZWQK LS0gICAgKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29y UHJvdG8uRkxPQVQsIFtOb25lXSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJZIiwgVGVuc29yUHJvdG8uSU5UOCwgW05vbmVdKQotLQotLSAgICAgICAgc2NhbGVfZGF0YSA9 IG5wLmFycmF5KHNjYWxlLCBkdHlwZT1ucC5mbG9hdDMyKQotLSAgICAgICAgenBfZGF0YSA9IG5w LmFycmF5KHplcm9fcG9pbnQsIGR0eXBlPW5wLmludDgpCi0tICAgICAgICBtb2RlbCA9IG1ha2Vf bW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJR dWFudGl6ZUxpbmVhciIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgWyJYIiwgInNjYWxlIiwg Inplcm8iXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbIlkiXSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICBheGlzPWF4aXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6 ZT1ibG9ja19zaXplLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICAgICAgImciLAotLSAgICAgICAgICAgICAgICBbWF0sCi0tICAgICAg ICAgICAgICAgIFtZXSwKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAg bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgInNjYWxlIiwgVGVuc29yUHJv dG8uRkxPQVQsIHNjYWxlX2RhdGEuc2hhcGUsIHNjYWxlX2RhdGEKLS0gICAgICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigiemVybyIsIFRlbnNvclBy b3RvLklOVDgsIHNjYWxlX2RhdGEuc2hhcGUsIHpwX2RhdGEpLAotLSAgICAgICAgICAgICAgICBd LAotLSAgICAgICAgICAgICkKLS0gICAgICAgICkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2 YWx1YXRvcihtb2RlbCkKLS0KLS0gICAgICAgIGRhdGEgPSBucC5hcnJheSh4LCBkdHlwZT1ucC5m bG9hdDMyKQotLQotLSAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6Ci0tICAgICAgICAg ICAgZXhwZWN0ZWQgPSBucC5hcnJheShleHBlY3RlZCwgZHR5cGU9bnAuaW50OCkKLS0gICAgICAg ICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLSAgICAgICAgICAgIGFzc2Vy dF9hbGxjbG9zZShleHBlY3RlZCwgZ290WzBdKQotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAg ICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotLSAgICAgICAgICAgICAgICBy ZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAg ICAgIG5wLmFyYW5nZSgxMikucmVzaGFwZSgzLCA0KSwKLS0gICAgICAgICAgICAgICAgbnAuYXJh bmdlKDEsIDcpLnJlc2hhcGUoMywgMiksCi0tICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAy KSksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAg ICAgICAgIFtbMCwgMSwgNCwgNl0sIFsxMiwgMTUsIDI0LCAyOF0sIFs0MCwgNDUsIDYwLCA2Nl1d LAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5h cmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCi0tICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxLCA3 KS5yZXNoYXBlKDMsIDIpLAotLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCAyKSksCi0tICAg ICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIFtb LTEsIDAsIDIsIDRdLCBbOSwgMTIsIDIwLCAyNF0sIFszNSwgNDAsIDU0LCA2MF1dLAotLSAgICAg ICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5kc3RhY2soW25w LmFyYW5nZSg0KS5yZXNoYXBlKDIsIDIpXSAqIDQpLAotLSAgICAgICAgICAgICAgICBucC5kc3Rh Y2soW25wLmFycmF5KFtbMSwgMV0sIFsyLCAzXV0pLCBucC5hcnJheShbWzQsIDVdLCBbNiwgN11d KV0pLAotLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMiwgMiwgMikpLAotLSAgICAgICAgICAg ICAgICAyLAotLSAgICAgICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAgICBbW1swLCAwLCAw LCAwXSwgWzEsIDEsIDUsIDVdXSwgW1s0LCA0LCAxMiwgMTJdLCBbOSwgOSwgMjEsIDIxXV1dLAot LSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5hcmFu Z2UoMjQpLnJlc2hhcGUoMywgOCksCi0tICAgICAgICAgICAgICAgIFtbMiwgMSwgM10sIFsyLCAx LCAzXSwgWzIsIDEsIDNdXSwKLS0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDMpKSwKLS0g ICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICAgICAgMywKLS0gICAgICAgICAgICAgICAg WwotLSAgICAgICAgICAgICAgICAgICAgWzAsIDIsIDQsIDMsIDQsIDUsIDE4LCAyMV0sCi0tICAg ICAgICAgICAgICAgICAgICBbMTYsIDE4LCAyMCwgMTEsIDEyLCAxMywgNDIsIDQ1XSwKLS0gICAg ICAgICAgICAgICAgICAgIFszMiwgMzQsIDM2LCAxOSwgMjAsIDIxLCA2NiwgNjldLAotLSAgICAg ICAgICAgICAgICBdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAg ICAgICAgICBucC5hcmFuZ2UoCi0tICAgICAgICAgICAgICAgICAgICA2LAotLSAgICAgICAgICAg ICAgICApLAotLSAgICAgICAgICAgICAgICBbMiwgM10sCi0tICAgICAgICAgICAgICAgIFsxLCAy XSwKLS0gICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgMywKLS0gICAgICAgICAg ICAgICAgWy0yLCAwLCAyLCAzLCA2LCA5XSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAg ICgKLS0gICAgICAgICAgICAgICAgbnAub25lcygoOSwgMTIpKSwKLS0gICAgICAgICAgICAgICAg bnAub25lcygoMywgNCkpLAotLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgNCkpLAotLSAg ICAgICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAgICAzLAotLSAgICAgICAgICAgICAgICBO b25lLCAgIyBCbG9ja2VkIHF1YW50aXphdGlvbiBpcyBkZWZpbmVkIGZvciAxLUQgYmxvY2tzIG9u bHkKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAu b25lcygoMywgNCwgNSwgNikpLAotLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0KSksCi0t ICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSksCi0tICAgICAgICAgICAgICAgIDIsCi0t ICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIE5vbmUsICAjIFNjYWxlIGFuZCBa UCBtdXN0IGhhdmUgdGhlIHNhbWUgcmFuayBhcyB0aGUgaW5wdXQKLS0gICAgICAgICAgICApLAot LSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2Jsb2NrZWRfZGVxdWFudGl6ZV9saW5l YXIoCi0tICAgICAgICBzZWxmLCB4LCBzY2FsZSwgemVyb19wb2ludCwgYXhpcywgYmxvY2tfc2l6 ZSwgZXhwZWN0ZWQKLS0gICAgKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJYIiwgVGVuc29yUHJvdG8uSU5UOCwgW05vbmVdKQotLSAgICAgICAgWSA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQotLQotLSAgICAgICAg c2NhbGVfZGF0YSA9IG5wLmFycmF5KHNjYWxlLCBkdHlwZT1ucC5mbG9hdDMyKQotLSAgICAgICAg enBfZGF0YSA9IG5wLmFycmF5KHplcm9fcG9pbnQsIGR0eXBlPW5wLmludDgpCi0tICAgICAgICBt b2RlbCA9IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAg ICAgICAgICAgICJEZXF1YW50aXplTGluZWFyIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBb IlgiLCAic2NhbGUiLCAiemVybyJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsiWSJdLAot LSAgICAgICAgICAgICAgICAgICAgICAgIGF4aXM9YXhpcywKLS0gICAgICAgICAgICAgICAgICAg ICAgICBibG9ja19zaXplPWJsb2NrX3NpemUsCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAg ICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAiZyIsCi0tICAgICAgICAgICAgICAg IFtYXSwKLS0gICAgICAgICAgICAgICAgW1ldLAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICAgICAic2Nh bGUiLCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfZGF0YS5zaGFwZSwgc2NhbGVfZGF0YQotLSAg ICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJ6 ZXJvIiwgVGVuc29yUHJvdG8uSU5UOCwgc2NhbGVfZGF0YS5zaGFwZSwgenBfZGF0YSksCi0tICAg ICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICAgICAgcmVm ID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KHgs IGR0eXBlPW5wLmludDgpCi0tCi0tICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKLS0g ICAgICAgICAgICBleHBlY3RlZCA9IG5wLmFycmF5KGV4cGVjdGVkLCBkdHlwZT1ucC5mbG9hdDMy KQotLSAgICAgICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCi0tICAgICAg ICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBnb3RbMF0pCi0tICAgICAgICBlbHNlOgot LSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0tICAgICAg ICAgICAgICAgIHJlZi5ydW4oTm9uZSwgeyJYIjogZGF0YX0pCi0tCi0gICAgIGRlZiB0ZXN0X2xy bihzZWxmKToKLSAgICAgICAgIGRlZiBfZXhwZWN0ZWQoeCwgYWxwaGEsIGJldGEsIGJpYXMsIHNp emUpOgotICAgICAgICAgICAgIHNxdWFyZV9zdW0gPSBucC56ZXJvcygoNSwgNSwgNSwgNSkpLmFz dHlwZShucC5mbG9hdDMyKQotQEAgLTQxODksNTIgKzM4MjYsNiBAQCBjbGFzcyBUZXN0UmVmZXJl bmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIGdvdCA9IF9jb252X2lt cGxlbWVudGF0aW9uX2ltMmNvbCgqKmZlZWRzLCAqKmt3YXJncykKLSAgICAgICAgIGFzc2VydF9h bGxjbG9zZShleHBlY3RlZCwgZ290KQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJp emVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoIlJlZHVjZVN1bSIsKSwKLS0g ICAgICAgICAgICAoIlJlZHVjZUwxIiwpLAotLSAgICAgICAgICAgICgiUmVkdWNlTDIiLCksCi0t ICAgICAgICAgICAgKCJSZWR1Y2VNaW4iLCksCi0tICAgICAgICAgICAgKCJSZWR1Y2VNYXgiLCks Ci0tICAgICAgICAgICAgKCJSZWR1Y2VQcm9kIiwpLAotLSAgICAgICAgICAgICgiUmVkdWNlU3Vt U3F1YXJlIiwpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3JlZHVjZV9vcF9u b19heGlzKHNlbGYsIG9wKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJY IiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCi0tICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQotLSAgICAgICAgZGF0YSA9IG5w LmFyYW5nZSg2KS5yZXNoYXBlKCgxLCAzLCAyKSkuYXN0eXBlKG5wLmZsb2F0MzIpCi0tICAgICAg ICBub2RlcyA9IFttYWtlX25vZGUob3AsIFsiWCJdLCBbIlkiXSwga2VlcGRpbXM9MCldCi0tICAg ICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChub2RlcywgImciLCBbWF0sIFtZXSkp Ci0tICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCi0tICAgICAgICBnb3Qg PSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLSAgICAgICAgciA9IGdvdFswXQotLSAgICAg ICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHIsIG5wLm5kYXJyYXkpCi0tICAgICAgICBzZWxmLmFz c2VydEVxdWFsKHIuc2hhcGUsICgpKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJp emVkLmV4cGFuZChbKDEsKSwgKDIsKSwgKDMsKSwgKDQsKSwgKDUsKSwgKDYsKV0pCi0tICAgIGRl ZiB0ZXN0X3BhZChzZWxmLCBkaW0pOgotLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKLS0gICAgICAgIFAgPSBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJQIiwgVGVuc29yUHJvdG8uSU5UNjQsIE5vbmUpCi0tICAgICAgICBWID0g bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiViIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQotLSAg ICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwg Tm9uZSkKLS0gICAgICAgIHZhbHVlID0gbnAuYXJyYXkoWy01XSwgZHR5cGU9bnAuZmxvYXQzMikK LS0KLS0gICAgICAgIG5vZGUgPSBtYWtlX25vZGUoIlBhZCIsIGlucHV0cz1bIlgiLCAiUCIsICJW Il0sIG91dHB1dHM9WyJZIl0sIG1vZGU9ImNvbnN0YW50IikKLS0gICAgICAgIG1vZGVsID0gbWFr ZV9tb2RlbChtYWtlX2dyYXBoKFtub2RlXSwgImciLCBbWCwgUCwgVl0sIFtZXSkpCi0tICAgICAg ICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCi0tICAgICAgICB4ID0gbnAuYXJyYXko WzFdLCBkdHlwZT1ucC5mbG9hdDMyKS5yZXNoYXBlKCgxLCkgKiBkaW0pCi0tCi0tICAgICAgICBw ID0gbnAuYXJyYXkoWzEsIDFdICogZGltLCBkdHlwZT1ucC5pbnQ2NCkKLS0gICAgICAgIGdvdCA9 IHJlZi5ydW4oTm9uZSwgeyJYIjogeCwgIlAiOiBwLCAiViI6IHZhbHVlfSlbMF0KLS0gICAgICAg IHNlbGYuYXNzZXJ0RXF1YWwoZ290LnNoYXBlLCAoMywpICogZGltKQotLSAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChnb3QuZHR5cGUsIG5wLmZsb2F0MzIpCi0tCi0tICAgICAgICBwID0gbnAucmVw ZWF0KFs3LCAzXSwgZGltKS5hc3R5cGUobnAuaW50NjQpCi0tICAgICAgICBnb3QgPSByZWYucnVu KE5vbmUsIHsiWCI6IHgsICJQIjogcCwgIlYiOiB2YWx1ZX0pWzBdCi0tICAgICAgICBzZWxmLmFz c2VydEVxdWFsKGdvdC5zaGFwZSwgKDExLCkgKiBkaW0pCi0tICAgICAgICBzZWxmLmFzc2VydEVx dWFsKGdvdC5kdHlwZSwgbnAuZmxvYXQzMikKLS0KLSAgICAgZGVmIHRlc3RfY29uc3RhbnRfb2Zf c2hhcGUoc2VsZik6Ci0gICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRl bnNvclByb3RvLkZMT0FULCBOb25lKQotICAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKLUBAIC01MzQ1LDEyNCArNDkzNiw2IEBA IGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAg ICAgZm9yIGkgaW4gcmFuZ2UoMiwgLTEsIC0xKToKLSAgICAgICAgICAgICBhc3NlcnRfYWxsY2xv c2UoZXhwZWN0ZWRbaV0sIGdvdFtpXSkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVy aXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKFsiYWJjIiwgImRlZiJdLCBb Ii5jb20iLCAiLm5ldCJdLCBbImFiYy5jb20iLCAiZGVmLm5ldCJdLCAoMiwpKSwKLS0gICAgICAg ICAgICAoWyJjYXQiLCAiZG9nIiwgInNuYWtlIl0sIFsicyJdLCBbImNhdHMiLCAiZG9ncyIsICJz bmFrZXMiXSwgKDMsKSksCi0tICAgICAgICAgICAgKCJjYXQiLCAicyIsICJjYXRzIiwgKCkpLAot LSAgICAgICAgICAgIChbImEiLCAiw58iLCAieSJdLCBbImEiLCAiw58iLCAieSJdLCBbImFhIiwg IsOfw58iLCAieXkiXSwgKDMsKSksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3Rf c3RyaW5nX2NvbmNhdChzZWxmLCBhLCBiLCBleHBlY3RlZCwgZXhwZWN0ZWRfc2hhcGUpOgotLSAg ICAgICAgQSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIkEiLCBUZW5zb3JQcm90by5TVFJJTkcs IE5vbmUpCi0tICAgICAgICBCID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiQiIsIFRlbnNvclBy b3RvLlNUUklORywgTm9uZSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZ IiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25lKQotLSAgICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgi U3RyaW5nQ29uY2F0IiwgaW5wdXRzPVsiQSIsICJCIl0sIG91dHB1dHM9WyJZIl0pCi0tICAgICAg ICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW0EsIEJdLCBbWV0p KQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgcmVz dWx0LCAqXyA9IHJlZi5ydW4oTm9uZSwgeyJBIjogbnAuYXJyYXkoYSksICJCIjogbnAuYXJyYXko Yil9KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0LCBleHBl Y3RlZCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVzdWx0LmR0eXBlLmtpbmQsIHsiTyIsICJV In0pCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zaGFwZSwgZXhwZWN0ZWRfc2hh cGUpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAg ICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgWyIxLDIsMyIsICI0LDUsNiJd LAotLSAgICAgICAgICAgICAgICAiLCIsCi0tICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAg ICAgICAgICAgIFtbIjEiLCAiMiIsICIzIl0sIFsiNCIsICI1IiwgIjYiXV0sCi0tICAgICAgICAg ICAgICAgIFszLCAzXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAg ICAgICAgICAgWyIxLCIsICI0LDYiLCAiIl0sCi0tICAgICAgICAgICAgICAgICIsIiwKLS0gICAg ICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgW1siMSIsICIiXSwgWyI0IiwgIjYi XSwgWyIiLCAiIl1dLAotLSAgICAgICAgICAgICAgICBbMiwgMiwgMV0sCi0tICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsiMSIsICI0LDYiLCAiNCw1LDYi XSwKLS0gICAgICAgICAgICAgICAgIiwiLAotLSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAg ICAgICAgICBbWyIxIiwgIiJdLCBbIjQiLCAiNiJdLCBbIjQiLCAiNSw2Il1dLAotLSAgICAgICAg ICAgICAgICBbMSwgMiwgMl0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAg ICAgICAgICAgICAgIFtbIjEsIiwgIjQsNiIsICI0LDUsNiJdLCBbIjEsIiwgIjQsNiIsICI0LDUs NiJdXSwKLS0gICAgICAgICAgICAgICAgIiwiLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAg ICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBbWyIxIiwgIiIsICIiXSwgWyI0 IiwgIjYiLCAiIl0sIFsiNCIsICI1IiwgIjYiXV0sCi0tICAgICAgICAgICAgICAgICAgICBbWyIx IiwgIiIsICIiXSwgWyI0IiwgIjYiLCAiIl0sIFsiNCIsICI1IiwgIjYiXV0sCi0tICAgICAgICAg ICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFtbMiwgMiwgM10sIFsyLCAyLCAzXV0sCi0tICAg ICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsiaGVsbG8gd29y bGQgISIsICIgIGhlbGxvICAgd29ybGQgISIsICIgaGVsbG8gd29ybGQgICAhICJdLAotLSAgICAg ICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAg ICBbCi0tICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKLS0gICAg ICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAotLSAgICAgICAgICAgICAg ICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCi0tICAgICAgICAgICAgICAgIF0sCi0tICAg ICAgICAgICAgICAgIFszLCAzLCAzXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgK LS0gICAgICAgICAgICAgICAgWyJoZWxsbyB3b3JsZCAhIiwgIiAgaGVsbG8gICB3b3JsZCAhIiwg IiBoZWxsbyB3b3JsZCAgICEgIl0sCi0tICAgICAgICAgICAgICAgICIiLAotLSAgICAgICAgICAg ICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBbImhl bGxvIiwgIndvcmxkIiwgIiEiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29y bGQiLCAiISJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0s Ci0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFszLCAzLCAzXSwKLS0gICAg ICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgWyJvLW4tbi0teC0i LCAiby1uLS0tLW54Il0sCi0tICAgICAgICAgICAgICAgICItIiwKLS0gICAgICAgICAgICAgICAg Tm9uZSwKLS0gICAgICAgICAgICAgICAgW1sibyIsICJuIiwgIm4iLCAiIiwgIngiLCAiIl0sIFsi byIsICJuIiwgIiIsICIiLCAiIiwgIm54Il1dLAotLSAgICAgICAgICAgICAgICBbNiwgNl0sCi0t ICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFtdLAotLSAg ICAgICAgICAgICAgICAiICIsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAg IG5wLmFycmF5KFtdKS5yZXNoYXBlKCgwLCAwKSksCi0tICAgICAgICAgICAgICAgIFtdLAotLSAg ICAgICAgICAgICksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3Rfc3RyaW5nX3Nw bGl0KAotLSAgICAgICAgc2VsZiwKLS0gICAgICAgIHgsCi0tICAgICAgICBkZWxpbWl0ZXIsCi0t ICAgICAgICBtYXhzcGxpdCwKLS0gICAgICAgIGV4cGVjdGVkX3NwbGl0LAotLSAgICAgICAgZXhw ZWN0ZWRfbnVtX3NwbGl0cywKLS0gICAgKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoTm9uZSkpCi0tICAgICAgICBTcGxpdHMg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJTcGxpdHMiLCBUZW5zb3JQcm90by5TVFJJTkcsIChO b25lKSkKLS0gICAgICAgIE1heFNwbGl0cyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIk1heFNw bGl0cyIsIFRlbnNvclByb3RvLklOVDMyLCAoTm9uZSkpCi0tICAgICAgICBub2RlID0gbWFrZV9u b2RlKAotLSAgICAgICAgICAgICJTdHJpbmdTcGxpdCIsCi0tICAgICAgICAgICAgaW5wdXRzPVsi WCJdLAotLSAgICAgICAgICAgIG91dHB1dHM9WyJTcGxpdHMiLCAiTWF4U3BsaXRzIl0sCi0tICAg ICAgICAgICAgZGVsaW1pdGVyPWRlbGltaXRlciwKLS0gICAgICAgICAgICBtYXhzcGxpdD1tYXhz cGxpdCwKLS0gICAgICAgICkKLS0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbChtYWtlX2dyYXBo KFtub2RlXSwgImciLCBbWF0sIFtTcGxpdHMsIE1heFNwbGl0c10pKQotLSAgICAgICAgcmVmID0g UmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgeCA9IG5wLmFycmF5KHgsIGR0eXBl PW9iamVjdCkKLS0gICAgICAgIHJlc3VsdCwgbnVtX3NwbGl0cywgKl8gPSByZWYucnVuKE5vbmUs IHsiWCI6IHh9KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0 LCBucC5hcnJheShleHBlY3RlZF9zcGxpdCwgZHR5cGU9b2JqZWN0KSkKLS0gICAgICAgIG5wLnRl c3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKAotLSAgICAgICAgICAgIG51bV9zcGxpdHMsIG5wLmFy cmF5KGV4cGVjdGVkX251bV9zcGxpdHMsIGR0eXBlPW5wLmludDY0KQotLSAgICAgICAgKQotLQot ICAgICBkZWYgdGVzdF9xbGluZWFyY29udl9pbnQ4KHNlbGYpOgotICAgICAgICAgbm9kZSA9IG1h a2Vfbm9kZSgKLSAgICAgICAgICAgICAiUUxpbmVhck1hdE11bCIsCi1AQCAtNTUzMyw0NyArNTAw Niw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgot ICAgICAgICAgICAgIG5wLmFycmF5KFtbNDEsIC0xMiwgLTldLCBbMSwgLTc1LCAyMF1dLCBkdHlw ZT1ucC5pbnQ4KSwgZ290WzBdCi0gICAgICAgICApCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBh cmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAgICAg ICAgICAgICAgWyJ3d3cuZ29vZ2xlLmNvbSIsICJ3d3cuZmFjZWJvb2suY29tIiwgInd3dy5iYmMu Y28udWsiXSwKLS0gICAgICAgICAgICAgICAgciJ3d3dcLltcdy4tXStcLlxiY29tXGIiLAotLSAg ICAgICAgICAgICAgICBbVHJ1ZSwgVHJ1ZSwgRmFsc2VdLAotLSAgICAgICAgICAgICAgICAoMywp LAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBbWyJP bm54IiwgInRlbnNvcmZsb3ciLCAiTnVtcHkiXSwgWyJQeXRvcmNoIiwgIkN5dGhvbiIsICJudW1i YSJdXSwKLS0gICAgICAgICAgICAgICAgciJeW0EtWl1bYS16XSokIiwKLS0gICAgICAgICAgICAg ICAgW1tUcnVlLCBGYWxzZSwgVHJ1ZV0sIFtUcnVlLCBUcnVlLCBGYWxzZV1dLAotLSAgICAgICAg ICAgICAgICAoMiwgMyksCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICJhY2NvdW50QGdtYWlsLmNvbSIsCi0t ICAgICAgICAgICAgICAgICAgICAiYWNjb3VudEBob3RtYWlsLmNvbSIsCi0tICAgICAgICAgICAg ICAgICAgICAibm90IGVtYWlsIiwKLS0gICAgICAgICAgICAgICAgICAgICJhY2NvdW50MkB5YWhv by5jb20iLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICByIihcV3xeKVtc dy5cLV17MCwyNX1AKHlhaG9vfGdtYWlsKVwuY29tKFxXfCQpIiwKLS0gICAgICAgICAgICAgICAg W1RydWUsIEZhbHNlLCBGYWxzZSwgVHJ1ZV0sCi0tICAgICAgICAgICAgICAgICg0LCksCi0tICAg ICAgICAgICAgKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBAdW5pdHRlc3Quc2tpcElmKAot LSAgICAgICAgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJnb29nbGUtcmUyIHBhY2thZ2UgaXMg bm90IGJ1aWx0IGZvciB3aW4zMiIKLS0gICAgKQotLSAgICBkZWYgdGVzdF9yZWdleF9mdWxsX21h dGNoKHNlbGYsIHgsIHBhdHRlcm4sIGV4cGVjdGVkLCBleHBlY3RlZF9zaGFwZSk6Ci0tICAgICAg ICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLlNUUklORywgTm9u ZSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8u Qk9PTCwgTm9uZSkKLS0gICAgICAgIG5vZGUgPSBtYWtlX25vZGUoIlJlZ2V4RnVsbE1hdGNoIiwg aW5wdXRzPVsiWCJdLCBvdXRwdXRzPVsiWSJdLCBwYXR0ZXJuPXBhdHRlcm4pCi0tICAgICAgICBt b2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW1hdLCBbWV0pKQotLSAg ICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgcmVzdWx0LCAq XyA9IHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXJyYXkoeCl9KQotLSAgICAgICAgbnAudGVzdGlu Zy5hc3NlcnRfYXJyYXlfZXF1YWwocmVzdWx0LCBleHBlY3RlZCkKLS0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwocmVzdWx0LmR0eXBlLmtpbmQsICJiIikKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwocmVzdWx0LnNoYXBlLCBleHBlY3RlZF9zaGFwZSkKLS0KLSAgICAgQHVuaXR0ZXN0LnNraXBJ ZigKLSAgICAgICAgIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiZ29vZ2xlLXJlMiBwYWNrYWdl IGlzIG5vdCBidWlsdCBmb3Igd2luMzIiCi0gICAgICkKLUBAIC01NTg2LDExOCArNTAxOCw2IEBA IGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAg ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICByZWYu cnVuKE5vbmUsIHsiWCI6IG5wLmFycmF5KFsieCJdKX0pCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVk LnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgKLS0gICAg ICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDQsCi0tICAgICAgICAgICAgICAgIFstMSwgMCwg MS41LCAyLCAzLjMsIDEwLCAyMCwgNDBdLAotLSAgICAgICAgICAgICAgICBbMCwgMCwgMiwgMiwg NCwgMTAsIDIwLCAzMF0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoVGVuc29yUHJv dG8uVUlOVDQsIFstMSwgMCwgMS41LCAyLCAzLjMsIDEwLCA0MF0sIFswLCAwLCAyLCAyLCA0LCAx MCwgMzBdKSwKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDQsIFswXSwgWzBdKSwKLS0g ICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDQsCi0tICAgICAg ICAgICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIsIDMuMywgMTAsIDIwXSwKLS0gICAgICAg ICAgICAgICAgWy0xNiwgLTE0LCAwLCAyLCAyLCA0LCAxMCwgMTRdLAotLSAgICAgICAgICAgICks Ci0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ0LAotLSAg ICAgICAgICAgICAgICBbLTIwLCAtMTQuNSwgMCwgMS41LCAyLCAzLjMsIDEwXSwKLS0gICAgICAg ICAgICAgICAgWy0xNiwgLTE0LCAwLCAyLCAyLCA0LCAxMF0sCi0tICAgICAgICAgICAgKSwKLS0g ICAgICAgICAgICAoVGVuc29yUHJvdG8uSU5UNCwgWzBdLCBbMF0pLAotLSAgICAgICAgXQotLSAg ICApCi0tICAgIEB1bml0dGVzdC5za2lwSWYoCi0tICAgICAgICB2ZXJzaW9uX3V0aWxzLm51bXB5 X29sZGVyX3RoYW4oIjEuMjIuMCIpLAotLSAgICAgICAgIlRoZSB0ZXN0IHJlcXVpcmVzIG51bXB5 IDEuMjIuMCBvciBsYXRlciIsCi0tICAgICkKLS0gICAgZGVmIHRlc3RfcXVhbnRpemVfbGluZWFy X2ludDQoc2VsZiwgcXR5cGUsIGRhdGEsIGV4cGVjdGVkKToKLS0gICAgICAgIFggPSBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKLS0gICAgICAg IFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25l XSkKLS0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKLS0gICAgICAgICAgICBtYWtlX2dyYXBo KAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0t ICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbInNjYWxlIl0sCi0tICAgICAgICAg ICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNjYWxlIiwgVGVuc29yUHJvdG8uRkxP QVQsIFsxXSwgWzIuMF0pLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAot LSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsi emVybyJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJ6ZXJv IiwgcXR5cGUsIFsxXSwgWzBdKSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgICAgICAgICBtYWtlX25vZGUoIlF1YW50aXplTGluZWFyIiwgWyJYIiwgInNjYWxlIiwgInpl cm8iXSwgWyJUIl0pLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJEZXF1YW50aXpl TGluZWFyIiwgWyJUIiwgInNjYWxlIl0sIFsiWSJdLCBheGlzPTApLAotLSAgICAgICAgICAgICAg ICBdLAotLSAgICAgICAgICAgICAgICAiZyIsCi0tICAgICAgICAgICAgICAgIFtYXSwKLS0gICAg ICAgICAgICAgICAgW1ldLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICkKLS0gICAgICAgIHJl ZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9u ZSwgeyJYIjogbnAuYXNhcnJheShkYXRhKX0pCi0tICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZXhw ZWN0ZWQsIGdvdFswXSkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBh bmQoCi0tICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAoVGVuc29yUHJv dG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FUMTYpLAotLSAgICAgICAgICAgIChUZW5zb3JQcm90 by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCi0tICAgICAgICApCi0tICAgICkKLS0gICAgZGVm IHRlc3RfY2FzdF9pbnQ0X291dHB1dChzZWxmLCBjYXN0X2Zyb20sIGNhc3RfdG8pOgotLSAgICAg ICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBjYXN0X2Zyb20sIFtOb25lXSkKLS0g ICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgY2FzdF90bywgW05vbmVdKQot LSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0t ICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIs IFsiWCJdLCBbIlkiXSwgdG89Y2FzdF90byksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgICAgICJnIiwKLS0gICAgICAgICAgICAgICAgW1hdLAotLSAgICAgICAgICAgICAgICBb WV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNl RXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KFswLCAxLCAyLjQsIDIu NiwgNCwgMTBdLCBkdHlwZT1ucC5mbG9hdDMyKQotLSAgICAgICAgc2lnbmVkID0gY2FzdF90byA9 PSBUZW5zb3JQcm90by5JTlQ0Ci0tICAgICAgICBleHBlY3RlZDEgPSBucC5hcnJheSgKLS0gICAg ICAgICAgICBbc3ViYnl0ZS5mbG9hdDMyX3RvXzRiaXRfdW5wYWNrZWQoeCwgc2lnbmVkPXNpZ25l ZCkgZm9yIHggaW4gZGF0YV0KLS0gICAgICAgICkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9u ZSwgeyJYIjogZGF0YX0pCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkMS50b2xp c3QoKSwgZ290WzBdLnRvbGlzdCgpKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJp emVkLmV4cGFuZCgKLS0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAotLSAgICAgICAgICAgIChU ZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCi0tICAgICAgICAgICAgKFRlbnNv clByb3RvLkZMT0FULCBUZW5zb3JQcm90by5GTE9BVDE2KSwKLS0gICAgICAgICkKLS0gICAgKQot LSAgICBkZWYgdGVzdF9jYXN0X2ludDRfaW5wdXQoc2VsZiwgY2FzdF9mcm9tLCBjYXN0X3RvKToK LS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgY2FzdF9mcm9tLCBbTm9u ZV0pCi0tICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIGNhc3RfdG8sIFtO b25lXSkKLS0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKLS0gICAgICAgICAgICBtYWtlX2dy YXBoKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUo IkNhc3QiLCBbIlgiXSwgWyJZIl0sIHRvPVRlbnNvclByb3RvLkZMT0FUKSwKLS0gICAgICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICAgICAgImciLAotLSAgICAgICAgICAgICAgICBbWF0sCi0t ICAgICAgICAgICAgICAgIFtZXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICApCi0tICAgICAg ICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCi0tICAgICAgICBkYXRhID0gbnAuYXJy YXkocmFuZ2UoNyksIGR0eXBlPW5wLmZsb2F0MzIpCi0tICAgICAgICBjYXN0X2Zyb21fbnAgPSBj dXN0b20udWludDQgaWYgY2FzdF9mcm9tID09IFRlbnNvclByb3RvLlVJTlQ0IGVsc2UgY3VzdG9t LmludDQKLS0gICAgICAgIGV4cGVjdGVkMSA9IG5wLmFycmF5KAotLSAgICAgICAgICAgIFtzdWJi eXRlLmZsb2F0MzJfdG9fNGJpdF91bnBhY2tlZCh4LCBjYXN0X2Zyb21fbnApIGZvciB4IGluIGRh dGFdCi0tICAgICAgICApCi0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9 KQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZDEudG9saXN0KCksIGdvdFswXS50 b2xpc3QoKSkKLS0KLSAgICAgZGVmIHRlc3RfYV9mdW5jdGlvbl9jYWxsaW5nX2FfZnVuY3Rpb25f b25jZShzZWxmKToKLSAgICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVu c29yUHJvdG8uRkxPQVQsIFsiTiJdKQotICAgICAgICAgb3V0cHV0ID0gbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIFsiTiJdKQotQEAgLTU5MzAsOTcg KzUyNTAsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNl KToKLSAgICAgICAgIGZvciB2IGluIG9pbmYuZnVuY3Rpb25zXy52YWx1ZXMoKToKLSAgICAgICAg ICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodiwgTXlSZWZlcmVuY2VFdmFsdWF0b3IpCi0gCi0t ICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAg ICAgICAgICAgICgiVUlOVDQiLCAwLjg0KSwKLS0gICAgICAgICAgICAoIklOVDQiLCAwLjg0KSwK LS0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTiIsIDAuMjMpLAotLSAgICAgICAgICAgICgiRkxP QVQ4RTRNM0ZOVVoiLCAwLjIzKSwKLS0gICAgICAgICAgICAoIkZMT0FUOEU1TTIiLCAwLjg1KSwK LS0gICAgICAgICAgICAoIkZMT0FUOEU1TTJGTlVaIiwgMC44NSksCi0tICAgICAgICAgICAgKCJE T1VCTEUiLCAwKSwKLS0gICAgICAgICAgICAoIkZMT0FUIiwgMCksCi0tICAgICAgICAgICAgKCJG TE9BVDE2IiwgMmUtMyksCi0tICAgICAgICAgICAgKCJCRkxPQVQxNiIsIDJlLTIpLAotLSAgICAg ICAgXQotLSAgICApCi0tICAgIEBza2lwX2lmX25vX21sX2R0eXBlcwotLSAgICBkZWYgdGVzdF9h ZGRfY3VzdG9tX2R0eXBlKHNlbGYsIHN0eXBlLCBhdG9sKToKLS0gICAgICAgIGl0eXBlID0gZ2V0 YXR0cihUZW5zb3JQcm90bywgc3R5cGUpCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCi0t ICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAg ICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWGMiXSwgdG89aXR5cGUpLAotLSAg ICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJZIl0sIFsiWWMiXSwgdG89aXR5 cGUpLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJBZGQiLCBbIlhjIiwgIlljIl0s IFsiWmMiXSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkNhc3QiLCBbIlpjIl0s IFsiWiJdLCB0bz1UZW5zb3JQcm90by5GTE9BVCksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAg ICAgICAgICAgICAgICJuZCIsCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUs IE5vbmUsIE5vbmVdKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKLS0gICAgICAg ICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIloi LCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKV0sCi0tICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIDE4KV0sCi0t ICAgICAgICAgICAgaXJfdmVyc2lvbj05LAotLSAgICAgICAgKQotLQotLSAgICAgICAgcmVmID0g UmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsLCB2ZXJib3NlPTApCi0tCi0tICAgICAgICB4ID0gKG5w LmFyYW5nZSgxOCkgLyA2KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCi0t ICAgICAgICB5ID0gKG5wLmFyYW5nZSgxOCkgLyA5KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBl KG5wLmZsb2F0MzIpCi0tICAgICAgICBmZWVkcyA9IGRpY3QoWD14LCBZPXkpCi0tICAgICAgICBl eHBlY3RlZCA9IHggKyB5Ci0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIGZlZWRzKVswXQot LSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGV4cGVjdGVkLCBnb3QsIGF0b2w9YXRvbCkKLS0KLS0g ICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAg ICAgICAgICAgKCJET1VCTEUiLCksCi0tICAgICAgICAgICAgKCJGTE9BVCIsKSwKLS0gICAgICAg ICAgICAoIkZMT0FUMTYiLCksCi0tICAgICAgICAgICAgKCJCRkxPQVQxNiIsKSwKLS0gICAgICAg ICAgICAjIENvbXBhcmlzb24gZmFpbHMgd2l0aCBtbF9kdHlwZXMKLS0gICAgICAgICAgICAjICgi RkxPQVQ4RTRNM0ZOIiwgKSwKLS0gICAgICAgICAgICAjICgiRkxPQVQ4RTRNM0ZOVVoiLCApLAot LSAgICAgICAgICAgICMgKCJGTE9BVDhFNU0yIiwgKSwKLS0gICAgICAgICAgICAjICgiRkxPQVQ4 RTVNMkZOVVoiLCApLAotLSAgICAgICAgICAgICMgKCJJTlQ0IiwgKSwKLS0gICAgICAgICAgICAj ICgiVUlOVDQiLCApLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIEBza2lwX2lmX25vX21sX2R0 eXBlcwotLSAgICBkZWYgdGVzdF9jbXBfY3VzdG9tX2R0eXBlKHNlbGYsIHN0eXBlKToKLS0gICAg ICAgIGl0eXBlID0gZ2V0YXR0cihUZW5zb3JQcm90bywgc3R5cGUpCi0tICAgICAgICBtb2RlbCA9 IG1ha2VfbW9kZWwoCi0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAg WwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWGMiXSwg dG89aXR5cGUpLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJZIl0s IFsiWWMiXSwgdG89aXR5cGUpLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJHcmVh dGVyIiwgWyJYYyIsICJZYyJdLCBbIlpjIl0pLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9u b2RlKCJDYXN0IiwgWyJaYyJdLCBbIloiXSwgdG89VGVuc29yUHJvdG8uQk9PTCksCi0tICAgICAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICJuZCIsCi0tICAgICAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQ cm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVdKSwKLS0gICAgICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUs IE5vbmVdKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oIloiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmUsIE5vbmUsIE5vbmVd KV0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVttYWtlX29w c2V0aWQoIiIsIDE4KV0sCi0tICAgICAgICAgICAgaXJfdmVyc2lvbj05LAotLSAgICAgICAgKQot LQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLQotLSAgICAgICAg eCA9IChucC5hcmFuZ2UoMTgpIC8gMTgpLnJlc2hhcGUoKDIsIDMsIDMpKS5hc3R5cGUobnAuZmxv YXQzMikKLS0gICAgICAgIHkgPSAoKG5wLmFyYW5nZSgxOCkgLSA5KSAvIDE4KS5yZXNoYXBlKCgy LCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCi0tICAgICAgICBmZWVkcyA9IGRpY3QoWD14LCBZ PXkpCi0tICAgICAgICBleHBlY3RlZCA9IHggPj0geQotLSAgICAgICAgZ290ID0gcmVmLnJ1bihO b25lLCBmZWVkcylbMF0KLS0gICAgICAgIGFzc2VydF9hbG1vc3RfZXF1YWwoZXhwZWN0ZWQsIGdv dCkKLS0KLSAgICAgZGVmIHRlc3Rfc2NhdHRlcl9lbGVtZW50c180ZChzZWxmKToKLSAgICAgICAg IG1vZGVsID0gbWFrZV9tb2RlbCgKLSAgICAgICAgICAgICBtYWtlX2dyYXBoKAotZGlmZiAtLWdp dCBhL29ubngvdGVzdC9zY2hlbWFfdGVzdC5weSBiL29ubngvdGVzdC9zY2hlbWFfdGVzdC5weQot aW5kZXggYjQwZjkzM2Y3Li4xZDc0ZmNkYTQgMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3Qvc2NoZW1h X3Rlc3QucHkKLSsrKyBiL29ubngvdGVzdC9zY2hlbWFfdGVzdC5weQotQEAgLTcsOCArNyw2IEBA IGltcG9ydCBjb250ZXh0bGliCi0gaW1wb3J0IHVuaXR0ZXN0Ci0gZnJvbSB0eXBpbmcgaW1wb3J0 IFNlcXVlbmNlCi0gCi0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLS0KLSBpbXBvcnQgb25ueAotIGZy b20gb25ueCBpbXBvcnQgZGVmcwotIAotQEAgLTIxMSwzNCArMjA5LDYgQEAgY2xhc3MgVGVzdEZv cm1hbFBhcmFtZXRlcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICApCi0gCi0gCi0tY2xh c3MgVGVzdFR5cGVDb25zdHJhaW50UGFyYW0odW5pdHRlc3QuVGVzdENhc2UpOgotLSAgICBAcGFy YW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAg ICAoInNpbmdsZV90eXBlIiwgIlQiLCBbInRlbnNvcihmbG9hdCkiXSwgIlRlc3QgZGVzY3JpcHRp b24iKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICJkb3VibGVfdHlwZXMiLAot LSAgICAgICAgICAgICAgICAiVCIsCi0tICAgICAgICAgICAgICAgIFsidGVuc29yKGZsb2F0KSIs ICJ0ZW5zb3IoaW50NjQpIl0sCi0tICAgICAgICAgICAgICAgICJUZXN0IGRlc2NyaXB0aW9uIiwK LS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgidHVwbGUiLCAiVCIsICgidGVuc29yKGZs b2F0KSIsICJ0ZW5zb3IoaW50NjQpIiksICJUZXN0IGRlc2NyaXB0aW9uIiksCi0tICAgICAgICBd Ci0tICAgICkKLS0gICAgZGVmIHRlc3RfaW5pdCgKLS0gICAgICAgIHNlbGYsCi0tICAgICAgICBf OiBzdHIsCi0tICAgICAgICB0eXBlX3BhcmFtX3N0cjogc3RyLAotLSAgICAgICAgYWxsb3dlZF90 eXBlczogU2VxdWVuY2Vbc3RyXSwKLS0gICAgICAgIGRlc2NyaXB0aW9uOiBzdHIsCi0tICAgICkg LT4gTm9uZToKLS0gICAgICAgIHR5cGVfY29uc3RyYWludCA9IGRlZnMuT3BTY2hlbWEuVHlwZUNv bnN0cmFpbnRQYXJhbSgKLS0gICAgICAgICAgICB0eXBlX3BhcmFtX3N0ciwgYWxsb3dlZF90eXBl cywgZGVzY3JpcHRpb24KLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlw ZV9jb25zdHJhaW50LmRlc2NyaXB0aW9uLCBkZXNjcmlwdGlvbikKLS0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LmFsbG93ZWRfdHlwZV9zdHJzLCBsaXN0KGFsbG93ZWRf dHlwZXMpKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlX2NvbnN0cmFpbnQudHlwZV9w YXJhbV9zdHIsIHR5cGVfcGFyYW1fc3RyKQotLQotLQotIGNsYXNzIFRlc3RBdHRyaWJ1dGUodW5p dHRlc3QuVGVzdENhc2UpOgotICAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgotICAgICAgICAgbmFt ZSA9ICJ0ZXN0X2F0dHIiCi1AQCAtMjYxLDE2OSArMjMxLDUgQEAgY2xhc3MgVGVzdEF0dHJpYnV0 ZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhdHRyMSBk ZXNjcmlwdGlvbiIsIGF0dHJpYnV0ZS5kZXNjcmlwdGlvbikKLSAKLSAKLS1AcGFyYW1ldGVyaXpl ZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAotLSAgICBbCi0tICAgICAgICAjIHJlZ2lzdGVyIHRvIGV4 aXN0IGRvbWFpbgotLSAgICAgICAgewotLSAgICAgICAgICAgICJvcF90eXBlIjogIkN1c3RvbU9w IiwKLS0gICAgICAgICAgICAib3BfdmVyc2lvbiI6IDUsCi0tICAgICAgICAgICAgIm9wX2RvbWFp biI6ICIiLAotLSAgICAgICAgICAgICJ0cmFwX29wX3ZlcnNpb24iOiBbMSwgMiwgNiwgN10sCi0t ICAgICAgICB9LAotLSAgICAgICAgIyByZWdpc3RlciB0byBuZXcgZG9tYWluCi0tICAgICAgICB7 Ci0tICAgICAgICAgICAgIm9wX3R5cGUiOiAiQ3VzdG9tT3AiLAotLSAgICAgICAgICAgICJvcF92 ZXJzaW9uIjogNSwKLS0gICAgICAgICAgICAib3BfZG9tYWluIjogInRlc3QiLAotLSAgICAgICAg ICAgICJ0cmFwX29wX3ZlcnNpb24iOiBbMSwgMiwgNiwgN10sCi0tICAgICAgICB9LAotLSAgICBd Ci0tKQotLWNsYXNzIFRlc3RPcFNjaGVtYVJlZ2lzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKLS0g ICAgb3BfdHlwZTogc3RyCi0tICAgIG9wX3ZlcnNpb246IGludAotLSAgICBvcF9kb21haW46IHN0 cgotLSAgICAjIHJlZ2lzdGVyIHNvbWUgZmFrZSBzY2hlbWEgdG8gY2hlY2sgYmVoYXZpb3IKLS0g ICAgdHJhcF9vcF92ZXJzaW9uOiBsaXN0W2ludF0KLS0KLS0gICAgZGVmIHNldFVwKHNlbGYpIC0+ IE5vbmU6Ci0tICAgICAgICAjIEVuc3VyZSB0aGUgc2NoZW1hIGlzIHVucmVnaXN0ZXJlZAotLSAg ICAgICAgc2VsZi5hc3NlcnRGYWxzZShvbm54LmRlZnMuaGFzKHNlbGYub3BfdHlwZSwgc2VsZi5v cF9kb21haW4pKQotLQotLSAgICBkZWYgdGVhckRvd24oc2VsZikgLT4gTm9uZToKLS0gICAgICAg ICMgQ2xlYW4gdXAgdGhlIHJlZ2lzdGVyZWQgc2NoZW1hCi0tICAgICAgICBmb3IgdmVyc2lvbiBp biBbKnNlbGYudHJhcF9vcF92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb25dOgotLSAgICAgICAgICAg IHdpdGggY29udGV4dGxpYi5zdXBwcmVzcyhvbm54LmRlZnMuU2NoZW1hRXJyb3IpOgotLSAgICAg ICAgICAgICAgICBvbm54LmRlZnMuZGVyZWdpc3Rlcl9zY2hlbWEoc2VsZi5vcF90eXBlLCB2ZXJz aW9uLCBzZWxmLm9wX2RvbWFpbikKLS0KLS0gICAgZGVmIHRlc3RfcmVnaXN0ZXJfbXVsdGlfc2No ZW1hKHNlbGYpOgotLSAgICAgICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRyYXBfb3BfdmVyc2lv biwgc2VsZi5vcF92ZXJzaW9uXToKLS0gICAgICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2No ZW1hKAotLSAgICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCi0tICAgICAgICAgICAgICAgIHNl bGYub3BfZG9tYWluLAotLSAgICAgICAgICAgICAgICB2ZXJzaW9uLAotLSAgICAgICAgICAgICkK LS0gICAgICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0gICAg ICAgICAgICBzZWxmLmFzc2VydFRydWUob25ueC5kZWZzLmhhcyhzZWxmLm9wX3R5cGUsIHZlcnNp b24sIHNlbGYub3BfZG9tYWluKSkKLS0gICAgICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFw X29wX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lvbl06Ci0tICAgICAgICAgICAgIyBBbHNvIG1ha2Ug c3VyZSB0aGUgYG9wX3NjaGVtYWAgaXMgYWNjZXNzaWJsZSBhZnRlciByZWdpc3RlcgotLSAgICAg ICAgICAgIHJlZ2lzdGVyZWRfb3AgPSBvbm54LmRlZnMuZ2V0X3NjaGVtYSgKLS0gICAgICAgICAg ICAgICAgb3Bfc2NoZW1hLm5hbWUsIHZlcnNpb24sIG9wX3NjaGVtYS5kb21haW4KLS0gICAgICAg ICAgICApCi0tICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKLS0gICAgICAg ICAgICAgICAgc2VsZi5vcF90eXBlLAotLSAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwK LS0gICAgICAgICAgICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChzdHIocmVnaXN0ZXJlZF9vcCksIHN0cihvcF9zY2hlbWEpKQotLQot LSAgICBkZWYgdGVzdF91c2luZ190aGVfc3BlY2lmaWVkX3ZlcnNpb25faW5fb25ueF9jaGVjayhz ZWxmKToKLS0gICAgICAgIGlucHV0ID0gZiIiIgotLSAgICAgICAgICAgIDwKLS0gICAgICAgICAg ICAgICAgaXJfdmVyc2lvbjogNywKLS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0OiBbCi0t ICAgICAgICAgICAgICAgICAgICAie3NlbGYub3BfZG9tYWlufSIgOiB7c2VsZi5vcF92ZXJzaW9u fQotLSAgICAgICAgICAgICAgICBdCi0tICAgICAgICAgICAgPgotLSAgICAgICAgICAgIGFncmFw aCAoZmxvYXRbTiwgMTI4XSBYLCBpbnQzMiBZKSA9PiAoZmxvYXRbTl0gWikKLS0gICAgICAgICAg ICB7ewotLSAgICAgICAgICAgICAgICBaID0ge3NlbGYub3BfZG9tYWlufS57c2VsZi5vcF90eXBl fTxhdHRyMT1bMSwyXT4oWCwgWSkKLS0gICAgICAgICAgICB9fQotLSAgICAgICAgICAgIiIiCi0t ICAgICAgICBtb2RlbCA9IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKGlucHV0KQotLSAgICAgICAg b3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKLS0gICAgICAgICAgICBzZWxmLm9wX3R5cGUsCi0t ICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCi0tICAgICAgICAgICAgc2VsZi5vcF92ZXJzaW9u LAotLSAgICAgICAgICAgIGlucHV0cz1bCi0tICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEu Rm9ybWFsUGFyYW1ldGVyKCJpbnB1dDEiLCAiVCIpLAotLSAgICAgICAgICAgICAgICBkZWZzLk9w U2NoZW1hLkZvcm1hbFBhcmFtZXRlcigiaW5wdXQyIiwgImludDMyIiksCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICBvdXRwdXRzPVsKLS0gICAgICAgICAgICAgICAgZGVmcy5PcFNjaGVt YS5Gb3JtYWxQYXJhbWV0ZXIoIm91dHB1dDEiLCAiVCIpLAotLSAgICAgICAgICAgIF0sCi0tICAg ICAgICAgICAgdHlwZV9jb25zdHJhaW50cz1bKCJUIiwgWyJ0ZW5zb3IoZmxvYXQpIl0sICIiKV0s Ci0tICAgICAgICAgICAgYXR0cmlidXRlcz1bCi0tICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hl bWEuQXR0cmlidXRlKAotLSAgICAgICAgICAgICAgICAgICAgImF0dHIxIiwgZGVmcy5PcFNjaGVt YS5BdHRyVHlwZS5JTlRTLCAiYXR0cjEgZGVzY3JpcHRpb24iCi0tICAgICAgICAgICAgICAgICkK LS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh aXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKToKLS0gICAgICAgICAgICBvbm54LmNo ZWNrZXIuY2hlY2tfbW9kZWwobW9kZWwsIGNoZWNrX2N1c3RvbV9kb21haW49VHJ1ZSkKLS0gICAg ICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQotLSAgICAgICAgIyBUaGUg ZmFrZSBzY2hlbWEgd2lsbCByYWlzZSBjaGVjayBleGNlcHRpb24gaWYgc2VsZWN0ZWQgaW4gY2hl Y2tlcgotLSAgICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi50cmFwX29wX3ZlcnNpb246Ci0tICAg ICAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYSgKLS0gICAgICAgICAgICAgICAgZGVm cy5PcFNjaGVtYSgKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKLS0gICAgICAg ICAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAotLSAgICAgICAgICAgICAgICAgICAgdmVyc2lv biwKLS0gICAgICAgICAgICAgICAgICAgIG91dHB1dHM9WwotLSAgICAgICAgICAgICAgICAgICAg ICAgIGRlZnMuT3BTY2hlbWEuRm9ybWFsUGFyYW1ldGVyKCJvdXRwdXQxIiwgImludDMyIiksCi0t ICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAg KQotLSAgICAgICAgb25ueC5jaGVja2VyLmNoZWNrX21vZGVsKG1vZGVsLCBjaGVja19jdXN0b21f ZG9tYWluPVRydWUpCi0tCi0tICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3NjaGVtYV9yYWlzZXNfZXJy b3Jfd2hlbl9yZWdpc3RlcmluZ19hX3NjaGVtYV90d2ljZShzZWxmKToKLS0gICAgICAgIG9wX3Nj aGVtYSA9IGRlZnMuT3BTY2hlbWEoCi0tICAgICAgICAgICAgc2VsZi5vcF90eXBlLAotLSAgICAg ICAgICAgIHNlbGYub3BfZG9tYWluLAotLSAgICAgICAgICAgIHNlbGYub3BfdmVyc2lvbiwKLS0g ICAgICAgICkKLS0gICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQot LSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmRlZnMuU2NoZW1hRXJyb3IpOgot LSAgICAgICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hKQotLQotLSAg ICBkZWYgdGVzdF9kZXJlZ2lzdGVyX3RoZV9zcGVjaWZpZWRfc2NoZW1hKHNlbGYpOgotLSAgICAg ICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRyYXBfb3BfdmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9u XToKLS0gICAgICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAotLSAgICAgICAgICAg ICAgICBzZWxmLm9wX3R5cGUsCi0tICAgICAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAotLSAg ICAgICAgICAgICAgICB2ZXJzaW9uLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBvbm54 LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0gICAgICAgICAgICBzZWxmLmFzc2Vy dFRydWUob25ueC5kZWZzLmhhcyhvcF9zY2hlbWEubmFtZSwgdmVyc2lvbiwgb3Bfc2NoZW1hLmRv bWFpbikpCi0tICAgICAgICBvbm54LmRlZnMuZGVyZWdpc3Rlcl9zY2hlbWEob3Bfc2NoZW1hLm5h bWUsIHNlbGYub3BfdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbikKLS0gICAgICAgIGZvciB2ZXJz aW9uIGluIHNlbGYudHJhcF9vcF92ZXJzaW9uOgotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShvbm54LmRlZnMuaGFzKG9wX3NjaGVtYS5uYW1lLCB2ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWlu KSkKLS0gICAgICAgICMgTWF5YmUgaGFzIGxlc3NlciBvcCB2ZXJzaW9uIGluIHRyYXAgbGlzdAot LSAgICAgICAgaWYgb25ueC5kZWZzLmhhcyhvcF9zY2hlbWEubmFtZSwgc2VsZi5vcF92ZXJzaW9u LCBvcF9zY2hlbWEuZG9tYWluKToKLS0gICAgICAgICAgICBzY2hlbWEgPSBvbm54LmRlZnMuZ2V0 X3NjaGVtYSgKLS0gICAgICAgICAgICAgICAgb3Bfc2NoZW1hLm5hbWUsIHNlbGYub3BfdmVyc2lv biwgb3Bfc2NoZW1hLmRvbWFpbgotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLmFz c2VydExlc3Moc2NoZW1hLnNpbmNlX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lvbikKLS0KLS0gICAg ZGVmIHRlc3RfZGVyZWdpc3Rlcl9zY2hlbWFfcmFpc2VzX2Vycm9yX3doZW5fb3BzY2hlbWFfZG9l c19ub3RfZXhpc3Qoc2VsZik6Ci0tICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubngu ZGVmcy5TY2hlbWFFcnJvcik6Ci0tICAgICAgICAgICAgb25ueC5kZWZzLmRlcmVnaXN0ZXJfc2No ZW1hKHNlbGYub3BfdHlwZSwgc2VsZi5vcF92ZXJzaW9uLCBzZWxmLm9wX2RvbWFpbikKLS0KLS0g ICAgZGVmIHRlc3RfbGVnYWN5X3NjaGVtYV9hY2Nlc3NpYmxlX2FmdGVyX2RlcmVnaXN0ZXIoc2Vs Zik6Ci0tICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAotLSAgICAgICAgICAgIHNl bGYub3BfdHlwZSwKLS0gICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKLS0gICAgICAgICAgICBz ZWxmLm9wX3ZlcnNpb24sCi0tICAgICAgICApCi0tICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJf c2NoZW1hKG9wX3NjaGVtYSkKLS0gICAgICAgIHNjaGVtYV9hID0gb25ueC5kZWZzLmdldF9zY2hl bWEoCi0tICAgICAgICAgICAgb3Bfc2NoZW1hLm5hbWUsIG9wX3NjaGVtYS5zaW5jZV92ZXJzaW9u LCBvcF9zY2hlbWEuZG9tYWluCi0tICAgICAgICApCi0tICAgICAgICBzY2hlbWFfYiA9IG9ubngu ZGVmcy5nZXRfc2NoZW1hKG9wX3NjaGVtYS5uYW1lLCBvcF9zY2hlbWEuZG9tYWluKQotLQotLSAg ICAgICAgZGVmIGZpbHRlcl9zY2hlbWEoc2NoZW1hcyk6Ci0tICAgICAgICAgICAgcmV0dXJuIFtv cCBmb3Igb3AgaW4gc2NoZW1hcyBpZiBvcC5uYW1lID09IG9wX3NjaGVtYS5uYW1lXQotLQotLSAg ICAgICAgc2NoZW1hX2MgPSBmaWx0ZXJfc2NoZW1hKG9ubnguZGVmcy5nZXRfYWxsX3NjaGVtYXMo KSkKLS0gICAgICAgIHNjaGVtYV9kID0gZmlsdGVyX3NjaGVtYShvbm54LmRlZnMuZ2V0X2FsbF9z Y2hlbWFzX3dpdGhfaGlzdG9yeSgpKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2No ZW1hX2MpLCAxKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2NoZW1hX2QpLCAxKQot LSAgICAgICAgIyBBdm9pZCBtZW1vcnkgcmVzaWR1ZSBhbmQgYWNjZXNzIHN0b3JhZ2UgYXMgbXVj aCBhcyBwb3NzaWJsZQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1hX2EpLCBz dHIob3Bfc2NoZW1hKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9iKSwg c3RyKG9wX3NjaGVtYSkpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzY2hlbWFfY1sw XSksIHN0cihvcF9zY2hlbWEpKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1h X2RbMF0pLCBzdHIob3Bfc2NoZW1hKSkKLS0KLS0KLSBpZiBfX25hbWVfXyA9PSAiX19tYWluX18i OgotICAgICB1bml0dGVzdC5tYWluKCkKLWRpZmYgLS1naXQgYS9vbm54L3Rlc3Qvc2hhcGVfaW5m ZXJlbmNlX3Rlc3QucHkgYi9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkKLWluZGV4 IDllNmI5NmI1Yi4uMjQyNWJjMzM5IDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L3NoYXBlX2luZmVy ZW5jZV90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3Qvc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkKLUBA IC0xMCw3ICsxMCw2IEBAIGZyb20gdHlwaW5nIGltcG9ydCBBbnksIFNlcXVlbmNlCi0gCi0gaW1w b3J0IG51bXB5IGFzIG5wCi0gaW1wb3J0IHB5dGVzdAotLWZyb20gcGFyYW1ldGVyaXplZCBpbXBv cnQgcGFyYW1ldGVyaXplZAotIAotIGltcG9ydCBvbm54LnNoYXBlX2luZmVyZW5jZQotIGZyb20g b25ueCBpbXBvcnQgKAotQEAgLTIzOCw4NiArMjM3LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJl bmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgZ3JhcGgsIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzMCwgNCwgNSkpXQot ICAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiVHJhbnNwb3NlIikpCi0tICAgIGRlZiB0ZXN0X3RyYW5zcG9zZShzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAg ICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCi0tICAgICAgICAgICAg W21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAot LSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAyLCA0KSldLAotLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlRyYW5zcG9zZSIpKQotLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfcHJlZXhpc3Rpbmco c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSld LAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVy bT1bMSwgMCwgMl0pXSwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIs IFRlbnNvclByb3RvLkZMT0FULCBOb25lKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIsIDQpKV0sCi0t ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCi0tICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9z Y2FsYXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0s Ci0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdKV0sCi0t ICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKLS0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0t ICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJUcmFuc3Bvc2UiKSkKLS0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3BhcnRpYWwoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0g ICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAg ICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwg Ml0pXSwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclBy b3RvLlVOREVGSU5FRCwgKDMsICJhIiwgImIiKSldLAotLSAgICAgICAgKSAgIyB0eXBlOiBpZ25v cmUKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZM T0FULCAoMywgMiwgNCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKLS0gICAg ZGVmIHRlc3RfdHJhbnNwb3NlX3ByZWV4aXN0aW5nX2luY29ycmVjdF9zaGFwZShzZWxmLCAqXykg LT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAg ICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAgICAgICAgIFtt YWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKLS0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FU LCAoNSwgNSwgNSkpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9u bnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgp Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bv c2UiKSkKLS0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3ByZWV4aXN0aW5nX2luY29ycmVjdF90eXBl KHNlbGYsICpfKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCi0tICAg ICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAw LCAyXSldLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29y UHJvdG8uU1RSSU5HLCAoMywgMiwgNCkpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNz ZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLCBzZWxmLl9pbmZl cnJlZCwgZ3JhcGgpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJUcmFuc3Bvc2UiKSkKLS0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX2luY29ycmVjdF9yZXBl YXRlZF9wZXJtKHNlbGYsICpfKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQp KV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBw ZXJtPVsxLCAwLCAxXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNl bGYuX2luZmVycmVkLCBncmFwaCkKLS0KLSAgICAgZGVmIF9tYWtlX21hdG11bF90ZXN0X2FsbF9k aW1zX2tub3duKAotICAgICAgICAgc2VsZiwgdmVyc2lvbiwgc2hhcGUxOiBTZXF1ZW5jZVtpbnRd LCBzaGFwZTI6IFNlcXVlbmNlW2ludF0KLSAgICAgKSAtPiBOb25lOgotQEAgLTMyNywxMzQzICsy NDYsNTkgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBl cik6Ci0gICAgICAgICApLnNoYXBlCi0gICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0gICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCBzaGFwZTEpLCAoInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgc2hhcGUyKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiTWF0 TXVsIiwgWyJ4IiwgInkiXSwgWyJ6Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkK LS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FU LCBleHBlY3RlZF9vdXRfc2hhcGUpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJNYXRNdWwiKSkKLS0g ICAgZGVmIHRlc3RfbWF0bXVsX2FsbF9kaW1zX2tub3duKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6Ci0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNp b24sICgyLCksICgyLCkpCi0tCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9k aW1zX2tub3duKHZlcnNpb24sICg0LCAyKSwgKDIsIDQpKQotLSAgICAgICAgc2VsZi5fbWFrZV9t YXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMiksICgyLCA0KSkKLS0gICAg ICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDUsIDIp LCAoMiwgMSkpCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3du KHZlcnNpb24sICgxLCAyKSwgKDIsIDMpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVz dF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoMiwpLCAoMiwgMykpCi0tICAgICAgICBzZWxmLl9t YWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg0LCAyKSwgKDIsKSkKLS0g ICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDEs IDQsIDIpLCAoMywgMiwgMykpCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9k aW1zX2tub3duKHZlcnNpb24sICgzLCA0LCAyKSwgKDMsIDIsIDMpKQotLSAgICAgICAgc2VsZi5f bWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMSwgNCwgMiksICgx LCAzLCAyLCAzKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25v d24odmVyc2lvbiwgKDQsIDIpLCAoMywgMiwgMykpCi0tCi0tICAgIGRlZiBfbWFrZV9tYXRtdWxf dGVzdF9hbGxvd191bmtub3duKAotLSAgICAgICAgc2VsZiwgdmVyc2lvbiwgc2hhcGUxOiBBbnks IHNoYXBlMjogQW55LCBleHBlY3RlZF9vdXRfc2hhcGU6IEFueQotLSAgICApIC0+IE5vbmU6Ci0t ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLkZMT0FULCBzaGFwZTEpLCAoInkiLCBUZW5zb3JQcm90by5GTE9BVCwgc2hhcGUy KV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiTWF0TXVsIiwgWyJ4IiwgInkiXSwgWyJ6Il0p XSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCBleHBlY3RlZF9vdXRfc2hhcGUpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJNYXRNdWwiKSkKLS0gICAgZGVmIHRlc3RfbWF0bXVsX2FsbG93 X3Vua25vd24oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuX21ha2Vf bWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoTm9uZSwpLCAoTm9uZSwpLCAoKSkK LS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAo MywpLCAoTm9uZSwpLCAoKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3df dW5rbm93bih2ZXJzaW9uLCAoMiwpLCAoMiwgImEiKSwgKCJhIiwpKQotLSAgICAgICAgc2VsZi5f bWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCAyKSwgKDIsICJhIiks ICg0LCAiYSIpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3du KHZlcnNpb24sICg0LCBOb25lKSwgKDIsICJhIiksICg0LCAiYSIpKQotLSAgICAgICAgc2VsZi5f bWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCBOb25lKSwgKE5vbmUs ICJhIiksICg0LCAiYSIpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191 bmtub3duKAotLSAgICAgICAgICAgIHZlcnNpb24sICgxLCA0LCAyKSwgKCJhIiwgMiwgNSksICgi YSIsIDQsIDUpCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2Fs bG93X3Vua25vd24oCi0tICAgICAgICAgICAgdmVyc2lvbiwgKDEsIDMsIDQsIDIpLCAoImEiLCAy LCA1KSwgKDEsIDMsIDQsIDUpCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11 bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDMsKSwgTm9uZSwgTm9uZSkKLS0gICAgICAg IHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCBOb25lLCBOb25l LCBOb25lKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi Q2FzdCIpKQotLSAgICBkZWYgdGVzdF9jYXN0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0t ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJD YXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5VSU5UOCldLAotLSAgICAgICAgICAg IFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAg ICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNhc3Qi KSkKLS0gICAgQHVuaXR0ZXN0LnNraXAoCi0tICAgICAgICAiSXNzdWUgIzU5NjAiCi0tICAgICkg ICMgRklYTUUoIzU5NjApIHByb3BhZ2F0ZUVsZW1UeXBlRnJvbUF0dHJpYnV0ZVRvT3V0cHV0IGRv ZXMgbm90IHZhbGlkYXRlIGFnYWluc3Qgb3V0cHV0IHR5cGUgY29uc3RyYWludHMKLS0gICAgZGVm IHRlc3RfY2FzdF90b19jb21wbGV4KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6ICAjIG5vcWE6 IEFSRzAwMgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgW21h a2Vfbm9kZSgiQ2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8uQ09NUExFWDEyOCld LAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2VsZi5hc3NlcnRS YWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVycmVk LCBncmFwaCkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IkNhc3RMaWtlIikpCi0tICAgIGRlZiB0ZXN0X2Nhc3RfbGlrZShzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKSwgKCJ0IiwgVGVuc29yUHJvdG8u RkxPQVQxNiwgKCJOIiwpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ2FzdExpa2UiLCBb IngiLCAidCJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAg ICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQxNiwgKDIs IDQsIDMpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMkltIikpCi0tICAgIGRlZiB0ZXN0X2Nv bDJpbShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRl bnNvclByb3RvLkZMT0FULCAoMSwgNSwgNSkpLAotLSAgICAgICAgICAgICAgICAoIm91dHB1dF9z aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAgICAgICAgKCJrZXJu ZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0g ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAg ICAgICAgICJDb2wySW0iLCBbImlucHV0IiwgIm91dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUi XSwgWyJvdXRwdXQiXQotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDUs IDUpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImtlcm5lbF9zaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMiwpLCAoMSwgNSkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAp Ci0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0t ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3Rv LkZMT0FULCAoMSwgMSwgNSwgNSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb2wySW0iKSkKLS0g ICAgZGVmIHRlc3RfY29sMmltX3N0cmlkZXMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDksIDQpKSwKLS0gICAg ICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0t ICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkp LAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29sMkltIiwKLS0gICAgICAgICAgICAgICAg ICAgIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLAotLSAgICAgICAg ICAgICAgICAgICAgWyJvdXRwdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIHN0cmlkZXM9WzIs IDJdLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDUsIDUpKSwKLS0g ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklO VDY0LCAoMiwpLCAoMywgMykpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAo MSwgMSwgNSwgNSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb2wySW0iKSkKLS0gICAgZGVmIHRl c3RfY29sMmltX3BhZHMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgi aW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUsIDE1KSksCi0tICAgICAgICAgICAgICAg ICgib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAg ICAgICAoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAg ICAgICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAg ICAgICAgICAgICAgICAgICAgIkNvbDJJbSIsCi0tICAgICAgICAgICAgICAgICAgICBbImlucHV0 IiwgIm91dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUiXSwKLS0gICAgICAgICAgICAgICAgICAg IFsib3V0cHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICBwYWRzPVswLCAxLCAwLCAxXSwKLS0g ICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0 cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg1LCA1KSksCi0tICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIs KSwgKDEsIDUpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEsIDUs IDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMkltIikpCi0tICAgIGRlZiB0ZXN0X2NvbDJp bV9kaWxhdGlvbnMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgiaW5w dXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDQsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJv dXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgICAg ICgia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAg IF0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAg ICAgICAgICAgICAgICAiQ29sMkltIiwKLS0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAi b3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJv dXRwdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRpbGF0aW9ucz1bMSwgNV0sCi0tICAgICAg ICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAg ICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1dF9z aGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNikpLAotLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgy LCAyKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxLCA2LCA2KSld LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQotLSAgICBkZWYgdGVzdF9jb2wyaW1fNWQo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgiaW5wdXQiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDEsIDEwLCAxMikpLAotLSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKSwKLS0gICAgICAgICAgICAgICAgKCJrZXJuZWxf c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAg ICAgICJDb2wySW0iLCBbImlucHV0IiwgIm91dHB1dF9zaGFwZSIsICJrZXJuZWxfc2hhcGUiXSwg WyJvdXRwdXQiXQotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDMsIDQs IDUpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImtlcm5lbF9zaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMywpLCAoMSwgMSwgNSkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgs Ci0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMSwgMiwgMywgNCwgNSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAp Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQi KSkKLS0gICAgZGVmIHRlc3RfY29uY2F0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNv clByb3RvLkZMT0FULCAoMiwgNCwgMykpLCAoInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDcsIDQs IDMpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4IiwgInkiXSwgWyJ6 Il0sIGF4aXM9MCldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICg5LCA0LCAzKSld LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIpKQotLSAgICBkZWYgdGVzdF9jb25jYXRfbWlz c2luZ19zaGFwZShzZWxmLCAqXykgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgNCwgMykpLAotLSAgICAgICAgICAgICAgICAieSIsCi0tICAgICAgICAg ICAgICAgICgieiIsIFRlbnNvclByb3RvLkZMT0FULCAoTm9uZSwgTm9uZSwgTm9uZSkpLAotLSAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4IiwgInki LCAieiJdLCBbIm91dCJdLCBheGlzPTApXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkK LS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5j ZUVycm9yLCBzZWxmLl9pbmZlcnJlZCwgZ3JhcGgpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb25jYXQiKSkKLS0gICAgZGVmIHRlc3RfY29uY2F0XzNk X2F4aXNfMihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIs IDIsIDIpKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAyLCAyKSldLAotLSAgICAgICAg ICAgIFttYWtlX25vZGUoIkNvbmNhdCIsIFsieCIsICJ5Il0sIFsieiJdLCBheGlzPTIpXSwKLS0g ICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMiwgNCkpXSwKLS0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s Ci0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJDb25jYXQiKSkKLS0gICAgZGVmIHRlc3RfY29uY2F0X3BhcmFtKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoImEiLCAyKSksICgieSIsIFRlbnNvclBy b3RvLkZMT0FULCAoImEiLCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkNvbmNhdCIs IFsieCIsICJ5Il0sIFsieiJdLCBheGlzPTEpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAg ICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZM T0FULCAoImEiLCA1KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIpKQotLSAgICBkZWYg dGVzdF9jb25jYXRfcGFyYW1fc2luZ2xlX2lucHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIs IFRlbnNvclByb3RvLkZMT0FULCAoImEiLCAyKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUo IkNvbmNhdCIsIFsieCJdLCBbInoiXSwgYXhpcz0wKV0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90 by5GTE9BVCwgKCJhIiwgMikpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCi0tICAg IGRlZiB0ZXN0X3Jlc2hhcGVfZHluYW1pY19zaGFwZV9rbm93bl9yYW5rKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTQsICJSYW5rIGlu ZmVyZW5jZSBpcyBhZGRlZCBmcm9tIFZlcnNpb24gMTQiKQotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIs IDQsIDMpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCi0tICAgICAgICAg ICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsIChOb25lLCBOb25lKSldLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK LS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlJlc2hhcGUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaGFwZV9keW5hbWljX3NoYXBlX3N5bWJv bGljKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwg MykpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiTSIsKSldLAotLSAgICAgICAgICAg IFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAg ICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0g ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLlVJTlQ4LCBOb25lKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAg KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFw ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNoYXBlX2R5bmFtaWNfdW5rbm93bl9zaGFwZShzZWxmLCBf LCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDQsIDMpKSwgKCJzaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCBOb25lKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgi UmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAg ICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdy YXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uVUlOVDgsIE5vbmUpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCi0tICAgIGRl ZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0t ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgyLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBl Il0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9 W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMywgOCkpXSwK LS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAg ICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNv clByb3RvLlVJTlQ4LCAoMywgOCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCi0t ICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlX2luZmVycmVkKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVu c29yUHJvdG8uSU5UNjQsICgzLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBl IiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAo MywpLCAoMCwgMywgLTEpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKDIsIDMsIDQpKV0sCi0tICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiUmVzaGFwZSIpKQotLSAgICBkZWYgdGVzdF9yZXNoYXBlX3N0YXRpY19zaGFwZV96 ZXJvKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMSwgMSwg MSkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKLS0gICAgICAgICAgICBb bWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMywpLCAoMCwgMSwgMSkpXSwKLS0gICAgICAgICkKLS0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMSwgMSwg MSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2hh cGVfc3RhdGljX3NoYXBlX2FsbG93emVybyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAg ICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE0LCAiYWxsb3d6ZXJvIGlzIGFkZGVkIGZyb20g VmVyc2lvbiAxNCIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5VSU5UOCwgKDEsIDAs IDApKSwKLS0gICAgICAgICAgICAgICAgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywp KSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBb IngiLCAic2hhcGUiXSwgWyJ5Il0sIGFsbG93emVybz0xKV0sCi0tICAgICAgICAgICAgW10sCi0t ICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMywpLCAoMCwgMSwgMSkpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMCwgMSwgMSkpXSwKLS0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGlj X3NoYXBlX2NvbnN0YW50KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJ TlQ4LCAoMiwgNCwgMykpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAg ICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLS0gICAgICAgICAgICAg ICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwp LCAoMywgOCkpLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25v ZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pLAotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwp KSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLlVJTlQ4LCAoMywgOCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAg ICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi VXBzYW1wbGUiKSkKLS0gICAgZGVmIHRlc3RfdXBzYW1wbGUoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIGlmIHZlcnNpb24gPT0gNzoKLS0gICAgICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQz MiwgKDIsIDQsIDMsIDUpKV0sCi0tICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlVwc2FtcGxl IiwgWyJ4Il0sIFsieSJdLCBzY2FsZXM9WzEuMCwgMS4xLCAxLjMsIDEuOV0pXSwKLS0gICAgICAg ICAgICAgICAgW10sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSld LAotLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgZWxzZToKLS0g ICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywg NSkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwg KDQsKSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFttYWtlX25vZGUo IlVwc2FtcGxlIiwgWyJ4IiwgInNjYWxlcyJdLCBbInkiXSldLAotLSAgICAgICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICAgICAg bWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpLCAoMS4wLCAxLjEs IDEuMywgMS45KSkKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICApCi0tCi0tICAg ICAgICAgICAgZGVmIGNhbGxfaW5mZXJlbmNlKCk6Ci0tICAgICAgICAgICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwg KDIsIDQsIDMsIDkpKV0sCi0tICAgICAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAgICAg ICkKLS0KLS0gICAgICAgICAgICBpZiB2ZXJzaW9uID09IDk6Ci0tICAgICAgICAgICAgICAgIGNh bGxfaW5mZXJlbmNlKCkKLS0gICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICAjIFVw c2FtcGxlIGlzIGRlcHJlY2F0ZWQgc2luY2UgVmVyc2lvbiAxMC4KLS0gICAgICAgICAgICAgICAg d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBj bToKLS0gICAgICAgICAgICAgICAgICAgIGNhbGxfaW5mZXJlbmNlKCkKLS0gICAgICAgICAgICAg ICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCi0tICAgICAgICAgICAgICAgIGFzc2VydCAiVXBz YW1wbGUgaXMgZGVwcmVjYXRlZCIgaW4gc3RyKGV4Y2VwdGlvbikKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlVwc2FtcGxlIikpCi0tICAgIGRlZiB0ZXN0 X3Vwc2FtcGxlX3Jhd19kYXRhKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBp ZiB2ZXJzaW9uID09IDc6Ci0tICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgxLCAzLCA0LCA1KSld LAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJVcHNhbXBsZSIsIFsieCJdLCBbInkiXSwg c2NhbGVzPVsyLjAsIDEuMSwgMi4zLCAxLjldKV0sCi0tICAgICAgICAgICAgICAgIFtdLAotLSAg ICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAg ICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgMywgOSwgOSkpXSwKLS0gICAgICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAotLSAgICAgICAgICAgICkKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAg ICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAgICAg ICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAg ICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJVcHNhbXBsZSIsIFsieCIs ICJzY2FsZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAg ICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAotLSAg ICAgICAgICAgICAgICAgICAgICAgICJzY2FsZXMiLAotLSAgICAgICAgICAgICAgICAgICAgICAg IFRlbnNvclByb3RvLkZMT0FULAotLSAgICAgICAgICAgICAgICAgICAgICAgICg0LCksCi0tICAg ICAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShbMS4wLCAxLjEsIDEuMywgMS45XSwg ZHR5cGU9IjxmNCIpLnRvYnl0ZXMoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICByYXc9VHJ1 ZSwKLS0gICAgICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICApICAjIEZlZWQgcmF3IGJ5dGVzIChmb3JjZSBsaXR0bGUgZW5kaWFuIG9yZGVyaW5nIGxp a2Ugb25ueCBzdGFuZGFyZCkgZm9yIHRlc3QgcHVycG9zZQotLQotLSAgICAgICAgICAgIGRlZiBj YWxsX2luZmVyZW5jZSgpOgotLSAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSld LAotLSAgICAgICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICAgICApCi0tCi0tICAgICAg ICAgICAgaWYgdmVyc2lvbiA9PSA5OgotLSAgICAgICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgp Ci0tICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgIyBVcHNhbXBsZSBpcyBkZXBy ZWNhdGVkIHNpbmNlIFZlcnNpb24gMTAuCi0tICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3Nl cnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206Ci0tICAgICAgICAg ICAgICAgICAgICBjYWxsX2luZmVyZW5jZSgpCi0tICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9 IGNtLmV4Y2VwdGlvbgotLSAgICAgICAgICAgICAgICBhc3NlcnQgIlVwc2FtcGxlIGlzIGRlcHJl Y2F0ZWQiIGluIHN0cihleGNlcHRpb24pCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQiKSkKLS0gICAgZGVmIHRlc3RfZXhwYW5kKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0t ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgMSkpLCAoInNoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBh bmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAg ICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgzLCksICgyLCAxLCA2KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCAzLCA2KSldLAotLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIkV4cGFuZCIpKQotLSAgICBkZWYgdGVzdF9leHBhbmRfc2NhbGFyX2lucHV0KHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklOVDMyLCAoKSksICgic2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4 cGFuZCIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDIsKSwgKDQsIDgpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDQsIDgpKV0sCi0tICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiRXhwYW5kIikpCi0tICAgIGRlZiB0ZXN0X2V4cGFuZF9yYXdfZGF0YShzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDEpKSwgKCJzaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5k IiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKLS0gICAgICAg ICAgICAgICAgICAgICJzaGFwZSIsCi0tICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5J TlQ2NCwKLS0gICAgICAgICAgICAgICAgICAgICgyLCksCi0tICAgICAgICAgICAgICAgICAgICB2 YWxzPW5wLmFycmF5KFszLCA0XSwgZHR5cGU9IjxpOCIpLnRvYnl0ZXMoKSwKLS0gICAgICAgICAg ICAgICAgICAgIHJhdz1UcnVlLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICkgICMgRmVlZCByYXcgYnl0ZXMgKGZvcmNlIGxpdHRsZSBlbmRpYW4gb3JkZXJp bmcgbGlrZSBvbm54IHN0YW5kYXJkKSBmb3IgdGVzdCBwdXJwb3NlCi0tICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDQpKV0sCi0tICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCi0tICAgIGRlZiB0ZXN0X2V4cGFuZF9keW5hbWljX3No YXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDEsIDIsIE5vbmUpKSwKLS0gICAgICAgICAgICAgICAgKCJzaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMywpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtt YWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAg IFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVtdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsIChOb25lLCAy LCBOb25lKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkV4cGFuZCIpKQotLSAgICBkZWYgdGVzdF9l eHBhbmRfc3ltYm9saWNfc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAg ICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwgMiwgTm9uZSkpLAotLSAgICAgICAgICAg ICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgidW5rX18wIiwpKSwKLS0gICAgICAg ICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFwZSJd LCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVtd LAotLSAgICAgICAgKQotLSAgICAgICAgIyBpZiBnaXZpbmcgYSBzeW1ib2xpYyBzaGFwZSwgRXhw YW5kIHNob3VsZCBub3QgaW5mZXIgYW55IHNoYXBlIG9yIHJhbmsgaW5mZXJlbmNlCi0tICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgTm9uZSld LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6 ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgaWYgdmVyc2lvbiA9PSAxMDoK LS0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwg MywgNSkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9B VCwgKDQsKSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFttYWtlX25v ZGUoIlJlc2l6ZSIsIFsieCIsICJzY2FsZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICAgICAg W10sCi0tICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSwgKDEuMCwgMS4x LCAxLjMsIDEuOSkpCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQotLSAgICAg ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0t ICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u SU5UMzIsICgyLCA0LCAzLCA5KSldLAotLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAg KQotLSAgICAgICAgZWxpZiB2ZXJzaW9uID09IDExOgotLSAgICAgICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAg KCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAgICAg ICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKLS0gICAgICAgICAgICAgICAg ICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAg ICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpKSwKLS0gICAgICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIs ICJzY2FsZXMiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpLCAoMywgNSwgNiwgNykpCi0tICAg ICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCA1LCA2LCA3 KSldLAotLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgZWxzZToK LS0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwg MywgNSkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwg KDgsKSksCi0tICAgICAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQs ICg0LCkpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbbWFrZV9ub2Rl KCJSZXNpemUiLCBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLCBbInkiXSldLAotLSAgICAgICAg ICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCksICgz LCA1LCA2LCA3KSkKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICApCi0tICAgICAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgICAgICBncmFwaCwKLS0g ICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5J TlQzMiwgKDMsIDUsIDYsIDcpKV0sCi0tICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICAgICAp Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUi KSkKLS0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfYXhlc18yXzMoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJv bSBWZXJzaW9uIDE4IikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwg NCwgMywgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAo NCwpKSwKLS0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwp KSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsi eCIsICJyb2kiLCAiIiwgInNpemVzIl0sIFsieSJdLCBheGVzPSgyLCAzKSldLAotLSAgICAgICAg ICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDcpKV0sCi0tICAgICAgICApCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDYs IDcpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6 ZV9zaXplX2F4ZXNfM18yKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxm LnNraXBJZih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZyb20gVmVyc2lvbiAxOCIpCi0tICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAg ICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAgICAg ICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAgICAg ICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgIiIsICJzaXplcyJd LCBbInkiXSwgYXhlcz0oMywgMikpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBp bml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCks ICg2LCA3KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCA3LCA2KSldLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK LS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9ub3RfbGFyZ2VyKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZigKLS0gICAgICAgICAg ICB2ZXJzaW9uIDwgMTgsCi0tICAgICAgICAgICAgImtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeSBp cyBmcm9tIFZlcnNpb24gMTgiLAotLSAgICAgICAgKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29y UHJvdG8uSU5UMzIsICgzLCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJv dG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8u SU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiUmVzaXplIiwKLS0gICAg ICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sCi0tICAgICAgICAgICAg ICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGtlZXBfYXNwZWN0X3JhdGlvX3Bv bGljeT0ibm90X2xhcmdlciIsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAot LSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigi c2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDYpKV0sCi0tICAgICAgICApCi0t ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwg KDQsIDYpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jl c2l6ZV9zaXplX2F4ZXNfMl8zX25vdF9sYXJnZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK LS0gICAgICAgIHNlbGYuc2tpcElmKAotLSAgICAgICAgICAgIHZlcnNpb24gPCAxOCwKLS0gICAg ICAgICAgICAiYXhlcyAmIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeSBhcmUgZnJvbSBWZXJzaW9u IDE4IiwKLS0gICAgICAgICkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0g ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAo MiwgNCwgMywgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FU LCAoNCwpKSwKLS0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAo MiwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIlJlc2l6ZSIsCi0tICAgICAgICAgICAg ICAgICAgICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLAotLSAgICAgICAgICAgICAgICAgICAg WyJ5Il0sCi0tICAgICAgICAgICAgICAgICAgICBheGVzPSgyLCAzKSwKLS0gICAgICAgICAgICAg ICAgICAgIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeT0ibm90X2xhcmdlciIsCi0tICAgICAgICAg ICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAg IGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIs KSwgKDYsIDYpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDQsIDYpKV0sCi0tICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplX25vdF9zbWFsbGVyKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZigKLS0gICAgICAg ICAgICB2ZXJzaW9uIDwgMTgsCi0tICAgICAgICAgICAgImtlZXBfYXNwZWN0X3JhdGlvX3BvbGlj eSBpcyBmcm9tIFZlcnNpb24gMTgiLAotLSAgICAgICAgKQotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgzLCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29y UHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJv dG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiUmVzaXplIiwKLS0g ICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sCi0tICAgICAgICAg ICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGtlZXBfYXNwZWN0X3JhdGlv X3BvbGljeT0ibm90X3NtYWxsZXIiLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5z b3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSldLAotLSAgICAgICAg KQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAot LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U MzIsICg2LCAxMCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRl c3RfcmVzaXplX3NpemVfYXhlc18yXzNfbm90X3NtYWxsZXIoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKAotLSAgICAgICAgICAgIHZlcnNpb24gPCAxOCwK LS0gICAgICAgICAgICAiYXhlcyAmIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeSBhcmUgZnJvbSBW ZXJzaW9uIDE4IiwKLS0gICAgICAgICkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklO VDMyLCAoMiwgNCwgMywgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3Rv LkZMT0FULCAoNCwpKSwKLS0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklO VDY0LCAoMiwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIlJlc2l6ZSIsCi0tICAgICAg ICAgICAgICAgICAgICBbIngiLCAicm9pIiwgIiIsICJzaXplcyJdLAotLSAgICAgICAgICAgICAg ICAgICAgWyJ5Il0sCi0tICAgICAgICAgICAgICAgICAgICBheGVzPSgyLCAzKSwKLS0gICAgICAg ICAgICAgICAgICAgIGtlZXBfYXNwZWN0X3JhdGlvX3BvbGljeT0ibm90X3NtYWxsZXIiLAotLSAg ICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAg ICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCksICg2LCA2KSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCA2LCAxMCkpXSwKLS0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaXplX3NjYWxlKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTEs ICJyb2kgaW5wdXQgaXMgZnJvbSBWZXJzaW9uIDExIikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNv clByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRl bnNvclByb3RvLkZMT0FULCAoOCwpKSwKLS0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5z b3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyJdLCBbInkiXSldLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAg bWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpLCAoMS4wLCAxLjEs IDEuMywgMS45KSkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSld LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2Nh bGVfYXhlc18yXzMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tp cElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBWZXJzaW9uIDE4IikKLS0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAg ICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAotLSAgICAgICAgICAgICAg ICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKLS0gICAgICAgICAgICAgICAgKCJz Y2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyJdLCBbInki XSwgYXhlcz0oMiwgMykpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFs aXplcj1bbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpLCAoMS4z LCAxLjkpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0t ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZV9heGVzXzNfMihzZWxmLCBf LCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE4LCAi YXhlcyBpcyBmcm9tIFZlcnNpb24gMTgiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8u SU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJv dG8uRkxPQVQsICg4LCkpLAotLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3Rv LkZMT0FULCAoMiwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUo IlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIl0sIFsieSJdLCBheGVzPSgzLCAyKSldLAot LSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigi c2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCksICgxLjksIDEuMykpXSwKLS0gICAgICAg ICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklO VDMyLCAoMiwgNCwgMywgOSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAg ZGVmIHRlc3RfcmVzaXplX3NjYWxlX3Jhd19kYXRhKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTEsICJyb2kgaW5wdXQgaXMgZnJvbSBW ZXJzaW9uIDExIikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwgMywg NCwgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwp KSwKLS0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSks Ci0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngi LCAicm9pIiwgInNjYWxlcyJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAg ICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAg ICAgICAgICAgICAgICAic2NhbGVzIiwKLS0gICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3Rv LkZMT0FULAotLSAgICAgICAgICAgICAgICAgICAgKDQsKSwKLS0gICAgICAgICAgICAgICAgICAg IHZhbHM9bnAuYXJyYXkoWzIuMCwgMS4xLCAyLjMsIDEuOV0sIGR0eXBlPSI8ZjQiKS50b2J5dGVz KCksCi0tICAgICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICAgICAgICAgKQot LSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDMsIDksIDkpKV0sCi0tICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZV9hbmRfc2l6ZV9i dXRfb25lX2lzX2VtcHR5KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxm LnNraXBJZih2ZXJzaW9uIDwgMTEsICJyb2kgaW5wdXQgaXMgZnJvbSBWZXJzaW9uIDExIikKLS0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwgMywgNCwgNSkpLAotLSAgICAg ICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKLS0gICAgICAgICAg ICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAg ICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDAsKSksCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyIs ICJzaXplcyJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRp YWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAg ICAgICAic2NhbGVzIiwKLS0gICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAot LSAgICAgICAgICAgICAgICAgICAgKDQsKSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHM9bnAu YXJyYXkoWzIuMCwgMS4xLCAyLjMsIDEuOV0sIGR0eXBlPSI8ZjQiKS50b2J5dGVzKCksCi0tICAg ICAgICAgICAgICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAic2l6ZXMiLAotLSAg ICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCi0tICAgICAgICAgICAgICAgICAg ICAoMCwpLAotLSAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShbXSwgZHR5cGU9Ijxp OCIpLnRvYnl0ZXMoKSwKLS0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAotLSAgICAgICAg ICAgICAgICApLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDMsIDksIDkpKV0s Ci0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9vcHNl dDExX3NjYWxlc19pc19lbXB0eShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAg c2VsZi5za2lwSWYodmVyc2lvbiAhPSAxMSwgIlRoaXMgdGVzdCBvbmx5IHdvcmtzIGZvciBWZXJz aW9uIDExIikKLS0gICAgICAgICMgInNjYWxlcyIgaW5wdXQgaW4gUmVzaXplIGluIG9wc2V0MTEg aXMgbm90IG9wdGlvbmFsLiBJdCBtdXN0IGJlIGFuIGVtcHR5IHRlbnNvcgotLSAgICAgICAgIyBp ZiBzaXplcyBpcyBuZWVkZWQuIFNoYXBlIGluZmVyZW5jZSBmb3IgUmVzaXplIHNoYWxsIGhhbmRs ZSB0aGlzIGNhc2UuCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDMs IDQsIDUpKSwKLS0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgs KSksCi0tICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgwLCkp LAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCkpLAot LSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4Iiwg InJvaSIsICJzY2FsZXMiLCAic2l6ZXMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAot LSAgICAgICAgICAgICAgICAgICAgInNpemVzIiwKLS0gICAgICAgICAgICAgICAgICAgIFRlbnNv clByb3RvLklOVDY0LAotLSAgICAgICAgICAgICAgICAgICAgKDQsKSwKLS0gICAgICAgICAgICAg ICAgICAgIHZhbHM9bnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgWzIsIDYsIDgs IDEwXSwgZHR5cGU9IjxpOCIKLS0gICAgICAgICAgICAgICAgICAgICkudG9ieXRlcygpLCAgIyBk b3VibGUgaW4gYWxsIGRpbWVuc2lvbnMKLS0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAot LSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tCi0tICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIs IDYsIDgsIDEwKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoIiIsIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3NoYXBlKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwK LS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSldLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAg ICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFw ZSIpKQotLSAgICBkZWYgdGVzdF9zaGFwZV9zdGFydF8xKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTUsICJzdGFydCBhbmQgZW5kIGFy ZSBmcm9tIFZlcnNpb24gMTUiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAg ICAgICAgICAgW21ha2Vfbm9kZSgiU2hhcGUiLCBbIngiXSwgWyJ5Il0sIHN0YXJ0PTEpXSwKLS0g ICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCi0tICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAg ICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi U2hhcGUiKSkKLS0gICAgZGVmIHRlc3Rfc2hhcGVfZW5kXzEoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwgInN0YXJ0IGFuZCBlbmQg YXJlIGZyb20gVmVyc2lvbiAxNSIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKLS0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSwgZW5kPTEpXSwKLS0g ICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwpKV0sCi0tICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAg ICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi U2hhcGUiKSkKLS0gICAgZGVmIHRlc3Rfc2hhcGVfbmVnYXRpdmVfc3RhcnQoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwgInN0YXJ0 IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwg MykpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSwgc3Rh cnQ9LTEpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwpKV0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiU2hhcGUiKSkKLS0gICAgZGVmIHRlc3Rfc2hhcGVfY2xpcDEoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwgInN0 YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCi0tICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwg NCwgMykpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSwg c3RhcnQ9LTUpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKV0sCi0tICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKLS0gICAgZGVmIHRlc3Rfc2hhcGVfY2xpcDIoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwg InN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCi0tICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAo MiwgNCwgMykpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInki XSwgZW5kPTEwKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIlNpemUiKSkKLS0gICAgZGVmIHRlc3Rfc2l6ZShzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAg ICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sIFttYWtlX25vZGUo IlNpemUiLCBbIngiXSwgWyJ5Il0pXSwgW10KLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldLAotLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIkdhdGhlciIpKQotLSAgICBkZWYgdGVzdF9nYXRoZXIoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCAzKSksICgiaSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMiwpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiR2F0aGVyIiwgWyJ4Iiwg ImkiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpXSwg ICMgdHlwZTogaWdub3JlCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyIikpCi0tICAgIGRlZiB0 ZXN0X2dhdGhlcl9heGlzMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5G TE9BVCwgKDQsIDMsIDUpKSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCAyKSldLAotLSAg ICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlciIsIFsieCIsICJpIl0sIFsieSJdLCBheGlzPTEp XSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgMSwgMiwgNSkpXSwgICMgdHlw ZTogaWdub3JlCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyIikpCi0tICAgIGRlZiB0ZXN0X2dh dGhlcl9pbnRvX3NjYWxhcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5G TE9BVCwgKDMsKSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldLAotLSAgICAgICAgICAg IFttYWtlX25vZGUoIkdhdGhlciIsIFsieCIsICJpIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAg W10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAg ICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJHYXRoZXJFbGVtZW50 cyIpKQotLSAgICBkZWYgdGVzdF9nYXRoZXJfZWxlbWVudHMoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb KCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAyKSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0 LCAoMiwgMikpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJHYXRoZXJFbGVtZW50cyIsIFsi eCIsICJpIl0sIFsieSJdLCBheGlzPTEpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkK LS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FU LCAoMiwgMikpXSwgICMgdHlwZTogaWdub3JlCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyRWxl bWVudHMiKSkKLS0gICAgZGVmIHRlc3RfZ2F0aGVyX2VsZW1lbnRzX2F4aXMwKHNlbGYsIF8sIHZl cnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAg ICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykpLCAoImkiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDIsIDMpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiR2F0aGVyRWxl bWVudHMiLCBbIngiLCAiaSJdLCBbInkiXSwgYXhpcz0wKV0sCi0tICAgICAgICAgICAgW10sCi0t ICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAg Z3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDIsIDMpKV0sICAjIHR5cGU6IGlnbm9yZQotLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0g ICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IlNjYXR0ZXIiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgotLSAgICAgICAgaWYgdmVyc2lvbiA+PSAxMToKLS0gICAgICAgICAgICAjIFNjYXR0ZXIg aXMgZGVwcmVjYXRlZCBpbiBkb21haW5fdmVyc2lvbiBvZiAxMS4KLS0gICAgICAgICAgICB3aXRo IHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgot LSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0X3NjYXR0ZXIodmVyc2lvbikKLS0gICAgICAgICAg ICBleGNlcHRpb24gPSBjbS5leGNlcHRpb24KLS0gICAgICAgICAgICBhc3NlcnQgIlNjYXR0ZXIg aXMgZGVwcmVjYXRlZCIgaW4gc3RyKGV4Y2VwdGlvbikKLS0gICAgICAgIGVsc2U6Ci0tICAgICAg ICAgICAgc2VsZi5fdGVzdF9zY2F0dGVyKHZlcnNpb24pCi0tCi0tICAgIGRlZiBfdGVzdF9zY2F0 dGVyKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDMsIDMpKSwKLS0gICAgICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCAzKSksCi0tICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAo MiwgMykpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRl ciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAg ICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZM T0FULCAoMywgMykpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApICAjIHR5cGU6IGlnbm9y ZQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRl ciIpKQotLSAgICBkZWYgdGVzdF9zY2F0dGVyX2F4aXMxKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6Ci0tICAgICAgICBpZiB2ZXJzaW9uID49IDExOgotLSAgICAgICAgICAgICMgU2NhdHRlciBp cyBkZXByZWNhdGVkIGluIGRvbWFpbl92ZXJzaW9uIG9mIDExLgotLSAgICAgICAgICAgIHdpdGgg c2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206Ci0t ICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3Rfc2NhdHRlcl9heGlzMSh2ZXJzaW9uKQotLSAgICAg ICAgICAgIGV4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgotLSAgICAgICAgICAgIGFzc2VydCAiU2Nh dHRlciBpcyBkZXByZWNhdGVkIiBpbiBzdHIoZXhjZXB0aW9uKQotLSAgICAgICAgZWxzZToKLS0g ICAgICAgICAgICBzZWxmLl90ZXN0X3NjYXR0ZXJfYXhpczEodmVyc2lvbikKLS0KLS0gICAgZGVm IF90ZXN0X3NjYXR0ZXJfYXhpczEoc2VsZiwgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAg ICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpLAotLSAgICAgICAgICAgICAgICAoImki LCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIpKSwKLS0gICAgICAgICAgICAgICAgKCJ1IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxLCAyKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBb bWFrZV9ub2RlKCJTY2F0dGVyIiwgWyJ4IiwgImkiLCAidSJdLCBbInkiXSwgYXhpcz0xKV0sCi0t ICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKV0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIlNjYXR0ZXJFbGVtZW50cyIpKQotLSAgICBkZWYgdGVzdF9zY2F0 dGVyX2VsZW1lbnRzKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKLS0gICAgICAgICAgICAgICAgKCJpIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCAzKSksCi0tICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgMykpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vf bm9kZSgiU2NhdHRlckVsZW1lbnRzIiwgWyJ4IiwgImkiLCAidSJdLCBbInkiXSldLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzKSldLCAgIyB0eXBlOiBpZ25vcmUKLS0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJTY2F0dGVyRWxlbWVudHMiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcl9l bGVtZW50c19heGlzMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4 IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSksCi0tICAgICAgICAgICAgICAgICgiaSIsIFRl bnNvclByb3RvLklOVDY0LCAoMSwgMikpLAotLSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDEsIDIpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtl X25vZGUoIlNjYXR0ZXJFbGVtZW50cyIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0sIGF4aXM9MSld LAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSldLCAgIyB0eXBlOiBpZ25v cmUKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyTkQiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRl cm5kKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDQsIDUsIDYpKSwKLS0gICAgICAgICAgICAgICAgKCJpbmRpY2VzIiwgVGVu c29yUHJvdG8uSU5UNjQsICgzLCAzLCAyKSksCi0tICAgICAgICAgICAgICAgICgidXBkYXRlcyIs IFRlbnNvclByb3RvLkZMT0FULCAoMywgMywgNikpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlck5EIiwgWyJ4IiwgImluZGljZXMiLCAidXBkYXRlcyJd LCBbInkiXSldLAotKyAgICAgICAgICAgIFttYWtlX25vZGUoIk1hdE11bCIsIFsieCIsICJ5Il0s IFsieiJdKV0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICApCi0gICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCi0gICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKV0sICAj IHR5cGU6IGlnbm9yZQotKyAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6Iiwg VGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVkX291dF9zaGFwZSldLAotICAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK LSAgICAgICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlNjYXR0ZXJORCIpKQotLSAgICBkZWYgdGVzdF9zY2F0dGVybmRfbm9zaGFwZShzZWxmLCBf LCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgIyBUaGUgc2hhcGUgb2YgJ3hfcmVzaGFwZWQn IGNhbm5vdCBiZSBpbmZlcnJlZCwgc2luY2UgaXQgaXMgdGhlIG91dHB1dCBvZiBhIGR5bmFtaWMg cmVzaGFwZS4KLS0gICAgICAgICMgVGh1cyB0aGUgc2hhcGUgb2YgJ3knIGlzIGFsc28gTm9uZS4K LSsgICAgZGVmIF9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24oCi0rICAgICAgICBzZWxm LCB2ZXJzaW9uLCBzaGFwZTE6IEFueSwgc2hhcGUyOiBBbnksIGV4cGVjdGVkX291dF9zaGFwZTog QW55Ci0rICAgICkgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoNCwgNSwgNikpLAotLSAgICAgICAgICAgICAgICAoImluZGljZXMiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDMsIDMsIDIpKSwKLS0gICAgICAgICAgICAgICAgKCJ1cGRhdGVzIiwgVGVuc29yUHJv dG8uRkxPQVQsICgzLCAzLCA2KSksCi0tICAgICAgICAgICAgICAgICgic2hhcGUiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKCJNIiwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFsKLS0g ICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieF9y ZXNoYXBlZCJdKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJTY2F0dGVyTkQiLCBbInhf cmVzaGFwZWQiLCAiaW5kaWNlcyIsICJ1cGRhdGVzIl0sIFsieSJdKSwKLS0gICAgICAgICAgICBd LAotKyAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgc2hhcGUxKSwgKCJ5Iiwg VGVuc29yUHJvdG8uRkxPQVQsIHNoYXBlMildLAotKyAgICAgICAgICAgIFttYWtlX25vZGUoIk1h dE11bCIsIFsieCIsICJ5Il0sIFsieiJdKV0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICAp Ci0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0gICAgICAgICAgICAgZ3JhcGgsCi0t ICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ4 X3Jlc2hhcGVkIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpLAotLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpLAotLSAg ICAgICAgICAgIF0sCi0rICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBU ZW5zb3JQcm90by5GTE9BVCwgZXhwZWN0ZWRfb3V0X3NoYXBlKV0sCi0gICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIlNxdWVlemUiKSkKLS0gICAgZGVmIHRlc3Rfc3F1ZWV6ZShzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgaWYgdmVyc2lvbiA9PSAxMToKLS0gICAg ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDMsIDEsIDEsIDIsIDEpKV0sCi0tICAgICAgICAgICAg ICAgIFttYWtlX25vZGUoIlNxdWVlemUiLCAieCIsICJ5IiwgYXhlcz1bMCwgMiwgMywgNV0pXSwK LS0gICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg ICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAy KSldLAotLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgZWxzZToK LS0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMywg MSwgMSwgMiwgMSkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJheGVzIiwgVGVuc29yUHJvdG8u SU5UNjQsICg0LCkpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbbWFr ZV9ub2RlKCJTcXVlZXplIiwgWyJ4IiwgImF4ZXMiXSwgInkiKV0sCi0tICAgICAgICAgICAgICAg IFtdLAotLSAgICAgICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcigiYXhlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoNCwpLCAoMCwgMiwgMywg NSkpCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgz LCAyKSldLAotLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAgKQotKyAgICAgICAgKQot IAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nQ29u Y2F0IikpCi0tICAgIGRlZiB0ZXN0X3N0cmluZ2NvbmNhdChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgotKyAgICBkZWYgX3Rlc3Rfc2NhdHRlcihzZWxmLCB2ZXJzaW9uKSAtPiBOb25lOgotICAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAgIFsKLS0gICAgICAg ICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpLAotLSAgICAgICAg ICAgICAgICAoInkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSksCi0rICAgICAgICAg ICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykpLAotKyAgICAgICAgICAgICAg ICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMpKSwKLSsgICAgICAgICAgICAgICAgKCJ1 IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSksCi0gICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICBbbWFrZV9ub2RlKCJTdHJpbmdDb25jYXQiLCBbIngiLCAieSJdLCAieiIpXSwKLSsgICAg ICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyIiwgWyJ4IiwgImkiLCAidSJdLCBbInkiXSldLAot ICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQotICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpXSwKLSsgICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykp XSwKLSAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdDb25jYXQiKSkKLS0gICAgZGVmIHRlc3Rfc3Ry aW5nY29uY2F0X2Jyb2FkY2FzdGluZyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotKyAgICAg ICAgKSAgIyB0eXBlOiBpZ25vcmUKLSsgICAgZGVmIF90ZXN0X3NjYXR0ZXJfYXhpczEoc2VsZiwg dmVyc2lvbikgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLSAg ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywg KDIsIDMsIDQpKSwKLS0gICAgICAgICAgICAgICAgKCJ5IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAo MSwgMywgMSkpLAotKyAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEs IDUpKSwKLSsgICAgICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCAyKSks Ci0rICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMikpLAotICAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nQ29uY2F0IiwgWyJ4 IiwgInkiXSwgInoiKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0 KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05O WF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlZ2V4RnVsbE1hdGNoIikpCi0tICAgIGRlZiB0ZXN0 X3JlZ2V4X2Z1bGxfbWF0Y2goc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u U1RSSU5HLCAoMiwgNCwgMywgOSkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZWdleEZ1 bGxNYXRjaCIsIFsieCJdLCBbInkiXSwgcGF0dGVybj1yIl5bQS1aXVthLXpdKiQiKV0sCi0tICAg ICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5CT09MLCAoMiwgNCwgMywgOSkpXSwKLS0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s Ci0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJSZWdleEZ1bGxNYXRjaCIpKQotLSAgICBkZWYgdGVzdF9yZWdleF9mdWxsX21hdGNoX2Vt cHR5X3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywg KCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZWdleEZ1bGxNYXRjaCIsIFsieCJdLCBb InkiXSwgcGF0dGVybj1yIl5bQS1aXVthLXpdKiQiKV0sCi0rICAgICAgICAgICAgW21ha2Vfbm9k ZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0sIGF4aXM9MSldLAotICAgICAgICAg ICAgIFtdLAotICAgICAgICAgKQotICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotICAg ICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uQk9PTCwgKCkpXSwKLSsgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpXSwKLSAgICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s Ci0tICAgICAgICApCi0rICAgICAgICApICAjIHR5cGU6IGlnbm9yZQotIAotICAgICBkZWYgdGVz dF9zcXVlZXplX25vX2F4ZXNfb3BzZXQxMShzZWxmKSAtPiBOb25lOgotICAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotQEAgLTUzMDQsMjMgKzM5MzksNiBAQCBjbGFzcyBUZXN0U2hh cGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgIHNlbGYuX21h a2VfbWF0bXVsaW50ZWdlcl90ZXN0KCg1LCAxLCA0LCAyKSwgKDEsIDMsIDIsIDMpKQotICAgICAg ICAgc2VsZi5fbWFrZV9tYXRtdWxpbnRlZ2VyX3Rlc3QoKDQsIDIpLCAoMywgMiwgMykpCi0gCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFtvbm54LlRlbnNvclByb3RvLkZM T0FULCBvbm54LlRlbnNvclByb3RvLkZMT0FUMTYsIG9ubnguVGVuc29yUHJvdG8uQkZMT0FUMTZd Ci0tICAgICkKLS0gICAgZGVmIHRlc3RfcXVhbnRpemVsaW5lYXIoc2VsZiwgZWxlbV90eXBlKSAt PiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgZWxlbV90eXBlLCAoMzAsIDQsIDUpKSwKLS0gICAg ICAgICAgICAgICAgKCJ5X3NjYWxlIiwgZWxlbV90eXBlLCAoKSksCi0tICAgICAgICAgICAgICAg ICgieV96ZXJvX3BvaW50IiwgVGVuc29yUHJvdG8uVUlOVDgsICgpKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlF1YW50aXplTGluZWFyIiwgWyJ4IiwgInlfc2Nh bGUiLCAieV96ZXJvX3BvaW50Il0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAg ICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgs IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgzMCwgNCwg NSkpXQotLSAgICAgICAgKQotLQotICAgICBkZWYgdGVzdF9xdWFudGl6ZWxpbmVhcl9kZWZhdWx0 X3pwKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0g ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMzAsIDQsIDUpKSwgKCJ5X3Nj YWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCi1AQCAtNTQyNiwyMyArNDA0NCw2IEBAIGNs YXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAg ICAgICAgIGdyYXBoLAotICAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo Ci0tICAgICAgICBbb25ueC5UZW5zb3JQcm90by5GTE9BVCwgb25ueC5UZW5zb3JQcm90by5GTE9B VDE2LCBvbm54LlRlbnNvclByb3RvLkJGTE9BVDE2XQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2Rl cXVhbnRpemVsaW5lYXIoc2VsZiwgZWxlbV90eXBlKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4 IiwgVGVuc29yUHJvdG8uVUlOVDgsICgzMCwgNCwgNSkpLAotLSAgICAgICAgICAgICAgICAoInhf c2NhbGUiLCBlbGVtX3R5cGUsICgpKSwKLS0gICAgICAgICAgICAgICAgKCJ4X3plcm9fcG9pbnQi LCBUZW5zb3JQcm90by5VSU5UOCwgKCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg W21ha2Vfbm9kZSgiRGVxdWFudGl6ZUxpbmVhciIsIFsieCIsICJ4X3NjYWxlIiwgInhfemVyb19w b2ludCJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIGVsZW1fdHlwZSwgKDMwLCA0LCA1KSldCi0tICAgICAgICApCi0tCi0g ICAgIGRlZiB0ZXN0X2R5bmFtaWNxdWFudGl6ZWxpbmVhcihzZWxmKSAtPiBOb25lOgotICAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDMwLCA0LCA1KSldLAotQEAgLTU1NTEsMzgzICs0MTUyLDEyNSBAQCBjbGFz cyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3IoCi0gICAgICAgICAgICAgICAgICAgICAicmVwZWF0cyIsCi0g ICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKLS0gICAgICAgICAgICAgICAg ICAgICgzLCksCi0tICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KFsxLCAyLCAzXSwg ZHR5cGU9IjxpOCIpLnRvYnl0ZXMoKSwKLS0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAot LSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkgICMgRmVlZCBy YXcgYnl0ZXMgKGZvcmNlIGxpdHRsZSBlbmRpYW4gb3JkZXJpbmcgbGlrZSBvbm54IHN0YW5kYXJk KSBmb3IgdGVzdCBwdXJwb3NlCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAg ICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u RkxPQVQsICg0LCAxMCwgMTgpKV0KLS0gICAgICAgICkKLS0KLS0gICAgZGVmIHRlc3RfdGlsZV9y YW5rX2luZmVyZW5jZShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYp KSwgKCJyZXBlYXRzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKLS0gICAgICAgICAgICBb bWFrZV9ub2RlKCJUaWxlIiwgWyJ4IiwgInJlcGVhdHMiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAg ICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZChncmFwaCwg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5v bmUsIE5vbmUpKV0pICAjIHR5cGU6IGlnbm9yZQotLQotLSAgICBAdW5pdHRlc3Quc2tpcFVubGVz cyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3Jz IikKLS0gICAgZGVmIHRlc3RfbGluZWFyY2xhc3NpZmllcl8xRF9pbnB1dChzZWxmKSAtPiBOb25l OgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDUsKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkxpbmVhckNsYXNzaWZpZXIi LAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0tICAgICAgICAgICAgICAgICAgICBbInki LCAieiJdLAotLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAg ICAgICAgICAgICAgICAgICAgY29lZmZpY2llbnRzPVswLjAwMDgsIC0wLjAwMDhdLAotLSAgICAg ICAgICAgICAgICAgICAgaW50ZXJjZXB0cz1bMi4wLCAyLjBdLAotLSAgICAgICAgICAgICAgICAg ICAgY2xhc3NsYWJlbHNfaW50cz1bMSwgMl0sCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAg ICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFsKLS0gICAg ICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0 LCAoMSwpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRl bnNvclByb3RvLkZMT0FULCAoMSwgMikpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1bCi0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RP TUFJTiwgMSksCi0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEp LAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tCi0tICAgIEB1bml0dGVzdC5za2lwVW5s ZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRv cnMiKQotLSAgICBkZWYgdGVzdF9saW5lYXJjbGFzc2lmaWVyXzJEX2lucHV0KHNlbGYpIC0+IE5v bmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgNSkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJMaW5lYXJDbGFzc2lm aWVyIiwKLS0gICAgICAgICAgICAgICAgICAgIFsieCJdLAotLSAgICAgICAgICAgICAgICAgICAg WyJ5IiwgInoiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwK LS0gICAgICAgICAgICAgICAgICAgIGNvZWZmaWNpZW50cz1bMC4xLCAwLjIsIDAuMywgMC40LCAw LjUsIDAuNl0sCi0tICAgICAgICAgICAgICAgICAgICBpbnRlcmNlcHRzPVsyLjAsIDIuMCwgMy4w XSwKLS0gICAgICAgICAgICAgICAgICAgIGNsYXNzbGFiZWxzX2ludHM9WzEsIDIsIDNdLAotLSAg ICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAg ICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFw aCwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSksCi0tICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDMpKSwKLS0gICAg ICAgICAgICBdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAg ICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDEpLAotLSAgICAgICAgICAgICAgICBtYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQot LQotLSAgICBkZWYgdGVzdF9yb2lhbGlnbl9zeW1ib2xpYyhzZWxmKSAtPiBOb25lOgotLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgiLCAiVyIpKSwKLS0g ICAgICAgICAgICAgICAgKCJyb2lzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibnVtX3JvaXMiLCA0 KSksCi0tICAgICAgICAgICAgICAgICgiYmF0Y2hfaW5kaWNlcyIsIFRlbnNvclByb3RvLklOVDY0 LCAoIm51bV9yb2lzIiwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFsKLS0gICAg ICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIlJvaUFsaWduIiwK LS0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2lzIiwgImJhdGNoX2luZGljZXMiXSwKLS0g ICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2hl aWdodD0xMCwKLS0gICAgICAgICAgICAgICAgICAgIG91dHB1dF93aWR0aD01LAotLSAgICAgICAg ICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkK LS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJudW1fcm9pcyIsICJDIiwgMTAsIDUpKV0p ICAjIHR5cGU6IGlnbm9yZQotLQotLSAgICBkZWYgdGVzdF9yb2lhbGlnbl9zeW1ib2xpY19kZWZh dWx0cyhzZWxmKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgiTiIsICJDIiwgIkgiLCAiVyIpKSwKLS0gICAgICAgICAgICAgICAgKCJyb2lzIiwgVGVuc29y UHJvdG8uRkxPQVQsICgibnVtX3JvaXMiLCA0KSksCi0tICAgICAgICAgICAgICAgICgiYmF0Y2hf aW5kaWNlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIm51bV9yb2lzIiwpKSwKLS0gICAgICAgICAg ICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJvaUFsaWduIiwgWyJ4IiwgInJvaXMiLCAi YmF0Y2hfaW5kaWNlcyJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm51bV9yb2lzIiwgIkMiLCAxLCAxKSldKSAg IyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgZGVmIHRlc3Rfcm9pYWxpZ25fbnVtX3JvaXMoc2VsZikg LT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAg ICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoIk4iLCAiQyIs ICJIIiwgIlciKSksCi0tICAgICAgICAgICAgICAgICgicm9pcyIsIFRlbnNvclByb3RvLkZMT0FU LCAoIm51bV9yb2lzIiwgNCkpLAotLSAgICAgICAgICAgICAgICAoImJhdGNoX2luZGljZXMiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDE1LCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg W21ha2Vfbm9kZSgiUm9pQWxpZ24iLCBbIngiLCAicm9pcyIsICJiYXRjaF9pbmRpY2VzIl0sIFsi eSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxNSwgIkMiLCAxLCAxKSldKSAgIyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgYWxsX3ZlcnNpb25zX2ZvcigiTGFiZWxFbmNv ZGVyIikgaWYgT05OWF9NTCBlbHNlIFtdLCBza2lwX29uX2VtcHR5PVRydWUKLS0gICAgKQotLSAg ICBkZWYgdGVzdF9sYWJlbF9lbmNvZGVyX3N0cmluZ19pbnQ2NChzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYoCi0tICAgICAgICAgICAgdmVyc2lvbiA8IDIs ICJrZXlzXyogYXR0cmlidXRlcyB3ZXJlIGludHJvZHVjZWQgaW4gYWkub25ueC5tbCBvcHNldCAy IgotLSAgICAgICAgKQotLSAgICAgICAgc3RyaW5nX2xpc3QgPSBbIkEiLCAibSIsICJ5Il0KLS0g ICAgICAgIGZsb2F0X2xpc3QgPSBbOTQuMTcsIDM2LjAwLCAtOTkuMF0KLS0gICAgICAgIGludDY0 X2xpc3QgPSBbMTIsIDI4LCA4Nl0KLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoNiwgMSkpXSwKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAg ICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0tICAgICAg ICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01M X0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwK LS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19pbnQ2NHM9aW50NjRfbGlzdCwKLS0gICAgICAg ICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAp Ci0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0t ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDYsIDEpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAgICAgICAgICAg ICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCi0tICAgICAgICAgICAg ICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotLSAgICAgICAgICAgIF0sCi0tICAg ICAgICApCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpXSwKLS0gICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVu Y29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0tICAgICAgICAgICAgICAgICAg ICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKLS0g ICAgICAgICAgICAgICAgICAgIGtleXNfaW50NjRzPWludDY0X2xpc3QsCi0tICAgICAgICAgICAg ICAgICAgICB2YWx1ZXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKLS0gICAgICAgICAgICAgICAgKQot LSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAg W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzKSld LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtlX29w c2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAotLSAgICAgICAgICAgICAgICBtYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDIsKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAg ICAgICAgICAgICAgICAgICBbIngiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAg ICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAg ICAgICAga2V5c19mbG9hdHM9ZmxvYXRfbGlzdCwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVl c19pbnQ2NHM9aW50NjRfbGlzdCwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0s Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01B SU4sIHZlcnNpb24pLAotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IDExKSwKLSsgICAgICAgICAgICAgICAgICAgICgzLCksCi0rICAgICAgICAgICAgICAgICAgICB2 YWxzPW5wLmFycmF5KFsxLCAyLCAzXSwgZHR5cGU9IjxpOCIpLnRvYnl0ZXMoKSwKLSsgICAgICAg ICAgICAgICAgICAgIHJhdz1UcnVlLAotKyAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAg XSwKLSsgICAgICAgICkgICMgRmVlZCByYXcgYnl0ZXMgKGZvcmNlIGxpdHRsZSBlbmRpYW4gb3Jk ZXJpbmcgbGlrZSBvbm54IHN0YW5kYXJkKSBmb3IgdGVzdCBwdXJwb3NlCi0rICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0rICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCAxMCwgMTgpKV0KLSAgICAgICAgICkK LSAKLSsgICAgZGVmIHRlc3RfdGlsZV9yYW5rX2luZmVyZW5jZShzZWxmKSAtPiBOb25lOgotICAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDgsKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAgICAg ICAgICAgICAgICAgICBbIngiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAg ICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAgICAg ICAga2V5c19pbnQ2NHM9aW50NjRfbGlzdCwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19m bG9hdHM9ZmxvYXRfbGlzdCwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0r ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwgNSwgNikpLCAoInJlcGVh dHMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAotKyAgICAgICAgICAgIFttYWtlX25vZGUo IlRpbGUiLCBbIngiLCAicmVwZWF0cyJdLCBbInkiXSldLAotICAgICAgICAgICAgIFtdLAotICAg ICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdy YXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uRkxPQVQsICg4LCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAg ICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKLS0gICAgICAg ICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICkKLSsgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5v bmUpKV0pICAjIHR5cGU6IGlnbm9yZQotIAotKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5Y X01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKLSsg ICAgZGVmIHRlc3RfbGluZWFyY2xhc3NpZmllcl8xRF9pbnB1dChzZWxmKSAtPiBOb25lOgotICAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5GTE9BVCwgKCkpXSwKLSsgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxP QVQsICg1LCkpXSwKLSAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK LS0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotKyAgICAgICAgICAgICAgICAg ICAgIkxpbmVhckNsYXNzaWZpZXIiLAotICAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0tICAg ICAgICAgICAgICAgICAgICBbInkiXSwKLSsgICAgICAgICAgICAgICAgICAgIFsieSIsICJ6Il0s Ci0gICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAgICAg ICAgICAgICAgICBrZXlzX2Zsb2F0cz1mbG9hdF9saXN0LAotLSAgICAgICAgICAgICAgICAgICAg dmFsdWVzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCi0rICAgICAgICAgICAgICAgICAgICBjb2VmZmlj aWVudHM9WzAuMDAwOCwgLTAuMDAwOF0sCi0rICAgICAgICAgICAgICAgICAgICBpbnRlcmNlcHRz PVsyLjAsIDIuMF0sCi0rICAgICAgICAgICAgICAgICAgICBjbGFzc2xhYmVsc19pbnRzPVsxLCAy XSwKLSAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgW10s Ci0gICAgICAgICApCi0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0gICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5TVFJJTkcsICgpKV0sCi0rICAgICAgICAgICAgWwotKyAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCkpLAotKyAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxP QVQsICgxLCAyKSksCi0rICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBvcHNldF9pbXBvcnRz PVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9u KSwKLSsgICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCAxKSwKLSAg ICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCi0gICAgICAgICAg ICAgXSwKLSAgICAgICAgICkKLSAKLSsgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwg Ik9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCi0rICAgIGRl ZiB0ZXN0X2xpbmVhcmNsYXNzaWZpZXJfMkRfaW5wdXQoc2VsZikgLT4gTm9uZToKLSAgICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJv dG8uU1RSSU5HLCAoMSwgMikpXSwKLSsgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxP QVQsICg0LCA1KSldLAotICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgbWFrZV9ub2Rl KAotLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0rICAgICAgICAgICAgICAg ICAgICAiTGluZWFyQ2xhc3NpZmllciIsCi0gICAgICAgICAgICAgICAgICAgICBbIngiXSwKLS0g ICAgICAgICAgICAgICAgICAgIFsieSJdLAotKyAgICAgICAgICAgICAgICAgICAgWyJ5IiwgInoi XSwKLSAgICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAgICAg ICAgICAgICAgICAgIGtleXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKLS0gICAgICAgICAgICAgICAg ICAgIHZhbHVlc19mbG9hdHM9ZmxvYXRfbGlzdCwKLSsgICAgICAgICAgICAgICAgICAgIGNvZWZm aWNpZW50cz1bMC4xLCAwLjIsIDAuMywgMC40LCAwLjUsIDAuNl0sCi0rICAgICAgICAgICAgICAg ICAgICBpbnRlcmNlcHRzPVsyLjAsIDIuMCwgMy4wXSwKLSsgICAgICAgICAgICAgICAgICAgIGNs YXNzbGFiZWxzX2ludHM9WzEsIDIsIDNdLAotICAgICAgICAgICAgICAgICApCi0gICAgICAgICAg ICAgXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLSAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMikpXSwKLSsgICAgICAg ICAgICBbCi0rICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDQsKSksCi0rICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVl X2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDMpKSwKLSsgICAgICAgICAgICBdLAot ICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAotKyAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9NTF9ET01BSU4sIDEpLAotICAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05O WF9ET01BSU4sIDExKSwKLSAgICAgICAgICAgICBdLAotICAgICAgICAgKQotIAotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJMYWJlbEVuY29k ZXIiKSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBfb25fZW1wdHk9VHJ1ZQotLSAgICApCi0tICAg IGRlZiB0ZXN0X2xhYmVsX2VuY29kZXJfdGVuc29yX2F0dHJpYnV0ZXMoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKAotLSAgICAgICAgICAgIHZlcnNpb24g PCA0LCAidGVuc29yIGF0dHJpYnV0ZXMgd2VyZSBpbnRyb2R1Y2VkIGluIGFpLm9ubngubWwgb3Bz ZXQgNCIKLS0gICAgICAgICkKLS0gICAgICAgIGtleV90ZW5zb3IgPSBtYWtlX3RlbnNvcigKLS0g ICAgICAgICAgICAia2V5c190ZW5zb3IiLCBUZW5zb3JQcm90by5TVFJJTkcsIFs0XSwgWyJhIiwg ImIiLCAiY2MiLCAiZGRkIl0KLS0gICAgICAgICkKLS0gICAgICAgIHZhbHVlc190ZW5zb3IgPSBt YWtlX3RlbnNvcigKLS0gICAgICAgICAgICAidmFsdWVzX3RlbnNvciIsIFRlbnNvclByb3RvLklO VDY0LCBbNF0sIFsxLCAyLCAzLCA0XQotLSAgICAgICAgKQotKyAgICBkZWYgdGVzdF9yb2lhbGln bl9zeW1ib2xpYyhzZWxmKSAtPiBOb25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIE5vbmUs IDMsIDEyKSldLAotKyAgICAgICAgICAgIFsKLSsgICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29y UHJvdG8uRkxPQVQsICgiTiIsICJDIiwgIkgiLCAiVyIpKSwKLSsgICAgICAgICAgICAgICAgKCJy b2lzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibnVtX3JvaXMiLCA0KSksCi0rICAgICAgICAgICAg ICAgICgiYmF0Y2hfaW5kaWNlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIm51bV9yb2lzIiwpKSwK LSsgICAgICAgICAgICBdLAotICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgbWFrZV9u b2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAgICAgICAgICAg ICAgICAgICBbIngiXSwKLSsgICAgICAgICAgICAgICAgICAgICJSb2lBbGlnbiIsCi0rICAgICAg ICAgICAgICAgICAgICBbIngiLCAicm9pcyIsICJiYXRjaF9pbmRpY2VzIl0sCi0gICAgICAgICAg ICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RP TUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfdGVuc29yPWtleV90ZW5zb3IsCi0tICAg ICAgICAgICAgICAgICAgICB2YWx1ZXNfdGVuc29yPXZhbHVlc190ZW5zb3IsCi0tICAgICAgICAg ICAgICAgICAgICBkZWZhdWx0X3RlbnNvcj1tYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAg ICAgICAgICAiZGVmYXVsdF90ZW5zb3IiLCBUZW5zb3JQcm90by5JTlQ2NCwgWzFdLCBbMF0KLS0g ICAgICAgICAgICAgICAgICAgICksCi0rICAgICAgICAgICAgICAgICAgICBvdXRwdXRfaGVpZ2h0 PTEwLAotKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0X3dpZHRoPTUsCi0gICAgICAgICAgICAg ICAgICkKLSAgICAgICAgICAgICBdLAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQotLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgi TSIsIE5vbmUsIDMsIDEyKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAg ICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAotLSAgICAg ICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBh bGxfdmVyc2lvbnNfZm9yKCJMYWJlbEVuY29kZXIiKSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBf b25fZW1wdHk9VHJ1ZQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2xhYmVsX2VuY29kZXJfdGVuc29y X2F0dHJpYnV0ZXNfaW52YWxpZF9jb25maWd1cmF0aW9ucygKLS0gICAgICAgIHNlbGYsIF8sIHZl cnNpb24KLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDQs ICJ0ZW5zb3IgYXR0cmlidXRlcyBpbnRyb2R1Y2VkIGluIGFpLm9ubngubWwgb3BzZXQgNCIpCi0t ICAgICAgICBrZXlfdGVuc29yID0gbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgImtleXNfdGVu c29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbNF0sIFsiYSIsICJiIiwgImNjIiwgImRkZCJdCi0t ICAgICAgICApCi0tICAgICAgICB2YWx1ZXNfdGVuc29yID0gbWFrZV90ZW5zb3IoCi0tICAgICAg ICAgICAgInZhbHVlc190ZW5zb3IiLCBUZW5zb3JQcm90by5JTlQ2NCwgWzRdLCBbMSwgMiwgMywg NF0KLS0gICAgICAgICkKLS0KLS0gICAgICAgIG9wc2V0X2ltcG9ydHMgPSBbCi0tICAgICAgICAg ICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKLS0gICAgICAgICAgICBt YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgIF0KLSsgICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZChncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5GTE9BVCwgKCJudW1fcm9pcyIsICJDIiwgMTAsIDUpKV0pICAjIHR5cGU6IGlnbm9y ZQotIAotLSAgICAgICAgIyBkZWZhdWx0X3RlbnNvciBzaG91bGQgYmUgSU5UNjQsIHNhbWUgdHlw ZSBhcyB2YWx1ZXNfdGVuc29yCi0rICAgIGRlZiB0ZXN0X3JvaWFsaWduX3N5bWJvbGljX2RlZmF1 bHRzKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0t ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywgKCJNIiwgTm9uZSwgMywgMTIp KV0sCi0gICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAg ICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKLS0gICAgICAgICAgICAgICAgICAgIFsieCJd LAotLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCi0tICAgICAgICAgICAgICAgICAgICBkb21h aW49T05OWF9NTF9ET01BSU4sCi0tICAgICAgICAgICAgICAgICAgICBrZXlzX3RlbnNvcj1rZXlf dGVuc29yLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX3RlbnNvcj12YWx1ZXNfdGVuc29y LAotLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5zb3IoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHRfdGVuc29yIiwgVGVuc29yUHJvdG8uU1RSSU5H LCBbMV0sIFswXQotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgKQot KyAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJOIiwgIkMiLCAiSCIs ICJXIikpLAotKyAgICAgICAgICAgICAgICAoInJvaXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJu dW1fcm9pcyIsIDQpKSwKLSsgICAgICAgICAgICAgICAgKCJiYXRjaF9pbmRpY2VzIiwgVGVuc29y UHJvdG8uSU5UNjQsICgibnVtX3JvaXMiLCkpLAotICAgICAgICAgICAgIF0sCi0rICAgICAgICAg ICAgW21ha2Vfbm9kZSgiUm9pQWxpZ24iLCBbIngiLCAicm9pcyIsICJiYXRjaF9pbmRpY2VzIl0s IFsieSJdKV0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICApCi0rICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uRkxPQVQsICgibnVtX3JvaXMiLCAiQyIsIDEsIDEpKV0pICAjIHR5cGU6IGlnbm9yZQot IAotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0tICAgICAgICAgICAgb25ueC5zaGFwZV9p bmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsCi0tICAgICAgICAgICAgc2VsZi5faW5mZXJyZWQsCi0t ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1vcHNldF9pbXBv cnRzLAotLSAgICAgICAgKQotLQotLSAgICAgICAgIyBkZWZhdWx0X3RlbnNvciBzaG91bGQgYmUg YSBzaW5nbGV0b24gb2Ygc2hhcGUgKDEsKQotKyAgICBkZWYgdGVzdF9yb2lhbGlnbl9udW1fcm9p cyhzZWxmKSAtPiBOb25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgiTSIsIE5vbmUsIDMsIDEyKSld LAotICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAg ICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAgICAgICAgICAgICAgICAgICBbIngiXSwK LS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAgICAgZG9tYWlu PU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAgICAgICAga2V5c190ZW5zb3I9a2V5X3Rl bnNvciwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19zdHJpbmdzPVsiYSIsICJiIiwgImNj IiwgImRkZCJdLAotLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5z b3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHRfdGVuc29yIiwgVGVuc29yUHJv dG8uU1RSSU5HLCBbMSwgMl0sIFswLCAwXQotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAg ICAgICAgICAgICAgKQotKyAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwg KCJOIiwgIkMiLCAiSCIsICJXIikpLAotKyAgICAgICAgICAgICAgICAoInJvaXMiLCBUZW5zb3JQ cm90by5GTE9BVCwgKCJudW1fcm9pcyIsIDQpKSwKLSsgICAgICAgICAgICAgICAgKCJiYXRjaF9p bmRpY2VzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgxNSwpKSwKLSAgICAgICAgICAgICBdLAotKyAg ICAgICAgICAgIFttYWtlX25vZGUoIlJvaUFsaWduIiwgWyJ4IiwgInJvaXMiLCAiYmF0Y2hfaW5k aWNlcyJdLCBbInkiXSldLAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQotLQotLSAgICAg ICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0tICAgICAgICAgICAgb25ueC5zaGFwZV9pbmZlcmVuY2Uu SW5mZXJlbmNlRXJyb3IsCi0tICAgICAgICAgICAgc2VsZi5faW5mZXJyZWQsCi0tICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1vcHNldF9pbXBvcnRzLAotLSAg ICAgICAgKQotKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKGdyYXBoLCBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTUsICJDIiwgMSwgMSkpXSkg ICMgdHlwZTogaWdub3JlCi0gCi0gICAgIGRlZiBtYWtlX3NwYXJzZSgKLSAgICAgICAgIHNlbGYs Ci1AQCAtODEzNiwxMDUgKzY0NzksNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNo YXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZChncmFwaCwgW291dHB1dF90ZW5zb3JfdmFsX2luZm9dKSAgIyB0eXBlOiBpZ25vcmUK LSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1Nw bGl0IikpCi0tICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdF9iYXNpYyhzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgotLSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o Ci0tICAgICAgICAgICAgInN1YnN0cmluZ3MiLAotLSAgICAgICAgICAgIFRlbnNvclByb3RvLlNU UklORywKLS0gICAgICAgICAgICAoMiwgTm9uZSksCi0tICAgICAgICApCi0tICAgICAgICBsZW5n dGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsKSkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKDIsKSksCi0tICAg ICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdTcGxpdCIsIFsieCJd LCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0pXSwKLS0gICAgICAgICAgICBbc3Vic3RyaW5ncywg bGVuZ3RoXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0g ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxpdCIpKQotLSAgICBkZWYgdGVzdF9zdHJpbmdfc3Bs aXRfc3ltYm9saWMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHN1YnN0cmlu Z3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAotLSAgICAgICAgICAgICJzdWJzdHJpbmdzIiwK LS0gICAgICAgICAgICBUZW5zb3JQcm90by5TVFJJTkcsCi0tICAgICAgICAgICAgKCJBIiwgTm9u ZSksCi0tICAgICAgICApCi0tICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJBIiwpKQotLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uU1RSSU5HLCAoIkEiLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0 aCJdKV0sCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICApCi0t ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAg ICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAg KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5n U3BsaXQiKSkKLS0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X25lc3RlZChzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgotLSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oCi0tICAgICAgICAgICAgInN1YnN0cmluZ3MiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCA0 LCAzLCBOb25lKQotLSAgICAgICAgKQotLSAgICAgICAgbGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygibGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCA0LCAzKSkKLS0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAg ICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDQsIDMpKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vic3Ry aW5ncyIsICJsZW5ndGgiXSwgbWF4c3BsaXQ9MildLAotLSAgICAgICAgICAgIFtzdWJzdHJpbmdz LCBsZW5ndGhdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAot LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCi0tICAgIGRlZiB0ZXN0X3N0cmluZ19z cGxpdF96ZXJvX2RpbWVuc2lvbmFsX2lucHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0t ICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic3Vic3RyaW5ncyIs IFRlbnNvclByb3RvLlNUUklORywgKE5vbmUsKSkKLS0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSkKLS0KLS0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAg ICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKCkpLAotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdz IiwgImxlbmd0aCJdLCBtYXhzcGxpdD0yKV0sCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxl bmd0aF0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAg ICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKLS0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0 X2VtcHR5X2lucHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzdWJzdHJp bmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKLS0gICAgICAgICAgICAic3Vic3RyaW5ncyIs IFRlbnNvclByb3RvLlNUUklORywgKCJNIiwgMywgMCwgTm9uZSkKLS0gICAgICAgICkKLS0gICAg ICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclByb3Rv LklOVDY0LCAoIk0iLCAzLCAwKSkKLS0KLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNU UklORywgKCJNIiwgMywgMCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vf bm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdLCBtYXhz cGxpdD0yKV0sCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICAp Ci0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0t ICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAg ICAgKQotLQotICAgICBkZWYgdGVzdF9vcHRpb25hbF90ZW5zb3JfZ2V0X2VsZW1lbnQoc2VsZikg LT4gTm9uZToKLSAgICAgICAgIHRlbnNvcl90eXBlX3Byb3RvID0gaGVscGVyLm1ha2VfdGVuc29y X3R5cGVfcHJvdG8oCi0gICAgICAgICAgICAgZWxlbV90eXBlPVRlbnNvclByb3RvLkRPVUJMRSwg c2hhcGU9WzIsIDEsIDRdCi1AQCAtODc1OSwxMTQgKzcwMDMsMjggQEAgY2xhc3MgVGVzdFNoYXBl SW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAoImlucHV0 MSIsIFRlbnNvclByb3RvLkZMT0FULCAoMjIwLCAzMTAsIDMpKSwKLS0gICAgICAgICAgICAgICAg KCJpbnB1dDIiLCBUZW5zb3JQcm90by5GTE9BVCwgKDExMCwgMjEwLCAzKSksCi0tICAgICAgICAg ICAgICAgICgiaW5wdXQzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg5MCwgMTEwLCAzKSksCi0tICAg ICAgICAgICAgXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK LS0gICAgICAgICAgICAgICAgICAgICJTZXF1ZW5jZUNvbnN0cnVjdCIsIFsiaW5wdXQxIiwgImlu cHV0MiIsICJpbnB1dDMiXSwgWyJpbl9zZXF1ZW5jZSJdCi0tICAgICAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiU2VxdWVuY2VNYXAiLCBbImluX3NlcXVlbmNlIl0s IFsic2hhcGVzIl0sIGJvZHk9Ym9keV9ncmFwaCksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0g ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3NlcXVlbmNlX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgICAgICAgICAiaW5fc2Vx dWVuY2UiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIDMpCi0tICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3NlcXVlbmNlX3ZhbHVlX2luZm8o InNoYXBlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKSwKLS0gICAgICAgICAgICBdLAotLSAg ICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgZGVmIHRlc3RfaGFtbWluZ3dpbmRvdyhz ZWxmKToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAg ICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAg ICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1h a2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAotLSAgICAg ICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkhhbW1pbmdXaW5kb3ci LCBbInNoYXBlIl0sIFsieSJdKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAot LSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAg IGdyYXBoLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwK LS0gICAgICAgICAgICBdLAotLSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAg ICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJD b25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAg IFsic2hhcGUiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAotLSAgICAgICAgICAgICAgICApLAot LSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkhhbW1pbmdXaW5kb3ciLCBbInNoYXBlIl0sIFsi eSJdLCBwZXJpb2RpYz0wKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAg ICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdy YXBoLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKLS0g ICAgICAgICAgICBdLAotLSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLS0KLS0gICAgZGVmIHRl c3RfaGFubndpbmRvdyhzZWxmKToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAg ICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLS0gICAgICAgICAgICAg ICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwg KDEwLCkpLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUo Ikhhbm5XaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdKSwKLS0gICAgICAgICAgICBdLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxP QVQsICgxMCwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUK LS0KLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbXSwK LSsgICAgICAgICAgICAgICAgKCJpbnB1dDIiLCBUZW5zb3JQcm90by5GTE9BVCwgKDExMCwgMjEw LCAzKSksCi0rICAgICAgICAgICAgICAgICgiaW5wdXQzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg5 MCwgMTEwLCAzKSksCi0rICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbCi0gICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAg ICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLS0g ICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3Rv LklOVDY0LCAoKSwgKDEwLCkpLAotKyAgICAgICAgICAgICAgICAgICAgIlNlcXVlbmNlQ29uc3Ry dWN0IiwgWyJpbnB1dDEiLCAiaW5wdXQyIiwgImlucHV0MyJdLCBbImluX3NlcXVlbmNlIl0KLSAg ICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW5uV2luZG93 IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCksCi0rICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgiU2VxdWVuY2VNYXAiLCBbImluX3NlcXVlbmNlIl0sIFsic2hhcGVzIl0sIGJvZHk9Ym9k eV9ncmFwaCksCi0gICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkK LSAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSAgICAgICAgICAgICBncmFwaCwKLSAg ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNo YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCi0rICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yX3NlcXVlbmNlX3ZhbHVlX2luZm8oCi0rICAgICAgICAgICAgICAg ICAgICAiaW5fc2VxdWVuY2UiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIDMpCi0r ICAgICAgICAgICAgICAgICksCi0rICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3NlcXVlbmNl X3ZhbHVlX2luZm8oInNoYXBlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKSwKLSAgICAgICAg ICAgICBdLAotICAgICAgICAgKSAgIyB0eXBlOiBpZ25vcmUKLSAKLS0gICAgZGVmIHRlc3RfYmxh Y2ttYW53aW5kb3coc2VsZik6Ci0rICAgIGRlZiB0ZXN0X2hhbW1pbmd3aW5kb3coc2VsZik6Ci0g ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgW10sCi0gICAg ICAgICAgICAgWwotQEAgLTg4NzYsNyArNzAzNCw3IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5j ZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgICAgICAgICAgICAgWyJzaGFw ZSJdLAotICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVu c29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCi0gICAgICAgICAgICAgICAgICksCi0tICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgiQmxhY2ttYW5XaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdKSwK LSsgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW1taW5nV2luZG93IiwgWyJzaGFwZSJdLCBb InkiXSksCi0gICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLUBA IC04ODk3LDcgKzcwNTUsNyBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5m ZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLSAgICAgICAg ICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0 LCAoKSwgKDEwLCkpLAotICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoIkJsYWNrbWFuV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCksCi0r ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFtbWluZ1dpbmRvdyIsIFsic2hhcGUiXSwgWyJ5 Il0sIHBlcmlvZGljPTApLAotICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgW10sCi0gICAg ICAgICApCi1AQCAtODkwOSw0NjMgKzcwNjcsOTEgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNl KFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgXSwKLSAgICAgICAgICkg ICMgdHlwZTogaWdub3JlCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAg IFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIG5hbWUsCi0tICAgICAgICAgICAg ICAgIHZlcnNpb24sCi0tICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAotLSAgICAgICAgICAg ICAgICBpbnB1dF9zaGFwZSwKLS0gICAgICAgICAgICAgICAgYXhpcywKLS0gICAgICAgICAgICAg ICAgb25lc2lkZWQsCi0tICAgICAgICAgICAgICAgIGludmVyc2UsCi0tICAgICAgICAgICAgICAg IGV4cGVjdGVkX3NoYXBlLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBmb3IgKG5hbWUs IHZlcnNpb24pLCAoCi0tICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAotLSAgICAgICAgICAg ICAgICBpbnB1dF9zaGFwZSwKLS0gICAgICAgICAgICAgICAgYXhpcywKLS0gICAgICAgICAgICAg ICAgb25lc2lkZWQsCi0tICAgICAgICAgICAgICAgIGludmVyc2UsCi0tICAgICAgICAgICAgICAg IGV4cGVjdGVkX3NoYXBlLAotLSAgICAgICAgICAgICkgaW4gaXRlcnRvb2xzLnByb2R1Y3QoCi0t ICAgICAgICAgICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkRGVCIpLAotLSAgICAgICAgICAgICAg ICAoCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2RlZmF1bHRfYXhpcyIsICgyLCA1LCAx KSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgi cmVhbHNfYXhpc18wIiwgKDMsIDUsIDEwLCAxKSwgMCwgMCwgMCwgKDMsIDUsIDEwLCAyKSksCi0t ICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMSIsICgzLCA1LCAxMCwgMSksIDEsIDAs IDAsICgzLCA1LCAxMCwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzIi LCAoMywgNSwgMTAsIDEpLCAyLCAwLCAwLCAoMywgNSwgMTAsIDIpKSwKLS0gICAgICAgICAgICAg ICAgICAgICgicmVhbHNfYXhpc19uZWciLCAoMywgNSwgMTAsIDEpLCAtMiwgMCwgMCwgKDMsIDUs IDEwLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMF9vbmVzaWRlZCIs ICgzLCA1LCAxMCwgMSksIDAsIDEsIDAsICgyLCA1LCAxMCwgMikpLAotLSAgICAgICAgICAgICAg ICAgICAgKCJyZWFsc19heGlzXzFfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAxLCAxLCAwLCAo MywgMywgMTAsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18yX29uZXNp ZGVkIiwgKDMsIDUsIDEwLCAxKSwgMiwgMSwgMCwgKDMsIDUsIDYsIDIpKSwKLS0gICAgICAgICAg ICAgICAgICAgICgicmVhbHNfYXhpc19uZWdfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAtMiwg MSwgMCwgKDMsIDUsIDYsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgiY29tcGxleF9kZWZh dWx0X2F4aXMiLCAoMiwgNSwgMiksIE5vbmUsIE5vbmUsIE5vbmUsICgyLCA1LCAyKSksCi0tICAg ICAgICAgICAgICAgICAgICAoImNvbXBsZXhfb25lc2lkZWQiLCAoMiwgNSwgMiksIDEsIDEsIE5v bmUsICgyLCAzLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxfaW52ZXJzZSIsICgy LCA1LCAxKSwgMSwgTm9uZSwgMSwgKDIsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgi Y29tcGxleF9pbnZlcnNlIiwgKDIsIDUsIDIpLCAxLCBOb25lLCAxLCAoMiwgNSwgMikpLAotLSAg ICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICkKLS0gICAgICAgIF0KLS0gICAgKQotLSAg ICBkZWYgdGVzdF9kZnQoCi0tICAgICAgICBzZWxmLAotLSAgICAgICAgXzogc3RyLAotLSAgICAg ICAgdmVyc2lvbjogaW50LAotLSAgICAgICAgX3Rlc3RfYXNwZWN0OiBzdHIsCi0tICAgICAgICBp bnB1dF9zaGFwZTogdHVwbGVbaW50XSwKLS0gICAgICAgIGF4aXM6IGludCB8IE5vbmUsCi0tICAg ICAgICBvbmVzaWRlZDogaW50IHwgTm9uZSwKLS0gICAgICAgIGludmVyc2U6IGludCB8IE5vbmUs Ci0tICAgICAgICBleHBlY3RlZF9zaGFwZTogdHVwbGVbaW50XSwKLS0gICAgKSAtPiBOb25lOgot LSAgICAgICAgIyBCdWlsZCB0aGUgYXR0cmlidXRlcyBmb3IgZGlmZmVyZW50IG9wc2V0IHZlcnNp b25zCi0tICAgICAgICBhdHRyaWJ1dGVzID0ge30KLS0gICAgICAgIGlmIG9uZXNpZGVkIGlzIG5v dCBOb25lOgotLSAgICAgICAgICAgIGF0dHJpYnV0ZXNbIm9uZXNpZGVkIl0gPSBvbmVzaWRlZAot LSAgICAgICAgaWYgaW52ZXJzZSBpcyBub3QgTm9uZToKLS0gICAgICAgICAgICBhdHRyaWJ1dGVz WyJpbnZlcnNlIl0gPSBpbnZlcnNlCi0tCi0tICAgICAgICBpZiB2ZXJzaW9uIDwgMjA6Ci0tICAg ICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToKLS0gICAgICAgICAgICAgICAgYXR0cmlidXRl c1siYXhpcyJdID0gYXhpcwotLSAgICAgICAgICAgIG5vZGVzID0gW21ha2Vfbm9kZSgiREZUIiwg WyJpbnB1dCIsICIiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKV0gICMgdHlwZTogaWdub3Jl W2FyZy10eXBlXQotLSAgICAgICAgICAgIHZhbHVlX2luZm9zID0gW10KLS0gICAgICAgIGVsc2U6 Ci0tICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24gPj0gMjAKLS0gICAgICAgICAgICBpZiBheGlz IGlzIG5vdCBOb25lOgotLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKLS0gICAgICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAot LSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsi YXhpcyJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlz IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoYXhpcywpKSwKLS0gICAgICAgICAgICAgICAgICAg ICksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwg ImF4aXMiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwgICMgdHlwZTogaWdub3JlW2FyZy10 eXBlXQotLSAgICAgICAgICAgICAgICBdCi0tICAgICAgICAgICAgICAgIHZhbHVlX2luZm9zID0g W21ha2VfdGVuc29yX3ZhbHVlX2luZm8oImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXQot LSAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgIG5vZGVzID0gWwotLSAgICAgICAg ICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICIiXSwgWyJvdXRwdXQi XSwgKiphdHRyaWJ1dGVzKSwgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQotLSAgICAgICAgICAg ICAgICBdCi0tICAgICAgICAgICAgICAgIHZhbHVlX2luZm9zID0gW10KLS0KLS0gICAgICAgICMg Q29uc3RydWN0IHRoZSBncmFwaAotKyAgICBkZWYgdGVzdF9oYW5ud2luZG93KHNlbGYpOgotICAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAgIFtdLAotICAgICAg ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotICAgICAgICAgICAgICAgICAg ICAgIkNvbnN0YW50IiwKLSAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAg ICAgICAgWyJpbnB1dCJdLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3Io Ci0tICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9z aGFwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKGlucHV0X3NoYXBlLCBkdHlw ZT1ucC5mbG9hdDMyKS5mbGF0dGVuKCksCi0tICAgICAgICAgICAgICAgICAgICApLAotKyAgICAg ICAgICAgICAgICAgICAgWyJzaGFwZSJdLAotKyAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFr ZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCi0gICAgICAg ICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICpub2RlcywKLSsgICAgICAgICAgICAgICAg bWFrZV9ub2RlKCJIYW5uV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSksCi0gICAgICAgICAgICAg XSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKLSAgICAgICAgICAgICBncmFwaCwKLSAgICAgICAgICAgICBbCi0tICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQs IGlucHV0X3NoYXBlKSwKLS0gICAgICAgICAgICAgICAgKnZhbHVlX2luZm9zLAotLSAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9B VCwgZXhwZWN0ZWRfc2hhcGUpLAotKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCi0rICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAotICAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICBuYW1lLAotLSAgICAgICAgICAgICAgICB2ZXJzaW9uLAotLSAgICAgICAgICAgICAgICB0 ZXN0X2FzcGVjdCwKLS0gICAgICAgICAgICAgICAgaW5wdXRfc2hhcGUsCi0tICAgICAgICAgICAg ICAgIGF4aXMsCi0tICAgICAgICAgICAgICAgIG9uZXNpZGVkLAotLSAgICAgICAgICAgICAgICBp bnZlcnNlLAotLSAgICAgICAgICAgICAgICBleHBlY3RlZF9zaGFwZSwKLS0gICAgICAgICAgICAp Ci0tICAgICAgICAgICAgZm9yIChuYW1lLCB2ZXJzaW9uKSwgKAotLSAgICAgICAgICAgICAgICB0 ZXN0X2FzcGVjdCwKLS0gICAgICAgICAgICAgICAgaW5wdXRfc2hhcGUsCi0tICAgICAgICAgICAg ICAgIGF4aXMsCi0tICAgICAgICAgICAgICAgIG9uZXNpZGVkLAotLSAgICAgICAgICAgICAgICBp bnZlcnNlLAotLSAgICAgICAgICAgICAgICBleHBlY3RlZF9zaGFwZSwKLS0gICAgICAgICAgICAp IGluIGl0ZXJ0b29scy5wcm9kdWN0KAotLSAgICAgICAgICAgICAgICBhbGxfdmVyc2lvbnNfZm9y KCJERlQiKSwKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFs c19kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMSksIE5vbmUsIE5vbmUsIE5vbmUsICgyLCA0MiwgMikp LAotLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzAiLCAoMywgNSwgMTAsIDEpLCAw LCAwLCAwLCAoNDIsIDUsIDEwLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4 aXNfMSIsICgzLCA1LCAxMCwgMSksIDEsIDAsIDAsICgzLCA0MiwgMTAsIDIpKSwKLS0gICAgICAg ICAgICAgICAgICAgICgicmVhbHNfYXhpc18yIiwgKDMsIDUsIDEwLCAxKSwgMiwgMCwgMCwgKDMs IDUsIDQyLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfbmVnIiwgKDMs IDUsIDEwLCAxKSwgLTIsIDAsIDAsICgzLCA1LCA0MiwgMikpLAotLSAgICAgICAgICAgICAgICAg ICAgKCJyZWFsc19heGlzXzBfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAwLCAxLCAwLCAoMjIs IDUsIDEwLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMV9vbmVzaWRl ZCIsICgzLCA1LCAxMCwgMSksIDEsIDEsIDAsICgzLCAyMiwgMTAsIDIpKSwKLS0gICAgICAgICAg ICAgICAgICAgICgicmVhbHNfYXhpc18yX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMiwgMSwg MCwgKDMsIDUsIDIyLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfbmVn X29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgLTIsIDEsIDAsICgzLCA1LCAyMiwgMikpLAotLSAg ICAgICAgICAgICAgICAgICAgKCJjb21wbGV4X2RlZmF1bHRfYXhpcyIsICgyLCA1LCAyKSwgTm9u ZSwgTm9uZSwgTm9uZSwgKDIsIDQyLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoImNvbXBs ZXhfb25lc2lkZWQiLCAoMiwgNSwgMiksIDEsIDEsIE5vbmUsICgyLCAyMiwgMikpLAotLSAgICAg ICAgICAgICAgICAgICAgKCJyZWFsX2ludmVyc2UiLCAoMiwgNSwgMSksIDEsIE5vbmUsIDEsICgy LCA0MiwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJjb21wbGV4X2ludmVyc2UiLCAoMiwg NSwgMiksIDEsIE5vbmUsIDEsICgyLCA0MiwgMikpLAotLSAgICAgICAgICAgICAgICApLAotLSAg ICAgICAgICAgICkKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZnRfZGZ0X2xl bmd0aCgKLS0gICAgICAgIHNlbGYsCi0tICAgICAgICBfOiBzdHIsCi0tICAgICAgICB2ZXJzaW9u OiBpbnQsCi0tICAgICAgICBfdGVzdF9hc3BlY3Q6IHN0ciwKLS0gICAgICAgIGlucHV0X3NoYXBl OiB0dXBsZVtpbnRdLAotLSAgICAgICAgYXhpczogaW50IHwgTm9uZSwKLS0gICAgICAgIG9uZXNp ZGVkOiBpbnQgfCBOb25lLAotLSAgICAgICAgaW52ZXJzZTogaW50IHwgTm9uZSwKLS0gICAgICAg IGV4cGVjdGVkX3NoYXBlOiB0dXBsZVtpbnRdLAotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICAj IEJ1aWxkIHRoZSBhdHRyaWJ1dGVzIGZvciBkaWZmZXJlbnQgb3BzZXQgdmVyc2lvbnMKLS0gICAg ICAgIGF0dHJpYnV0ZXMgPSB7fQotLSAgICAgICAgaWYgb25lc2lkZWQgaXMgbm90IE5vbmU6Ci0t ICAgICAgICAgICAgYXR0cmlidXRlc1sib25lc2lkZWQiXSA9IG9uZXNpZGVkCi0tICAgICAgICBp ZiBpbnZlcnNlIGlzIG5vdCBOb25lOgotLSAgICAgICAgICAgIGF0dHJpYnV0ZXNbImludmVyc2Ui XSA9IGludmVyc2UKLS0KLS0gICAgICAgIGRmdF9sZW5ndGggPSA0MgotLQotLSAgICAgICAgaWYg dmVyc2lvbiA8IDIwOgotLSAgICAgICAgICAgIGlmIGF4aXMgaXMgbm90IE5vbmU6Ci0tICAgICAg ICAgICAgICAgIGF0dHJpYnV0ZXNbImF4aXMiXSA9IGF4aXMKLS0gICAgICAgICAgICBub2RlcyA9 IFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkNv bnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAg WyJkZnRfbGVuZ3RoIl0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigK LS0gICAgICAgICAgICAgICAgICAgICAgICAiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0 LCAoKSwgKGRmdF9sZW5ndGgsKQotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgImRm dF9sZW5ndGgiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwgICMgdHlwZTogaWdub3JlW2Fy Zy10eXBlXQotLSAgICAgICAgICAgIF0KLS0gICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0K LS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24gPj0gMjAKLS0gICAg ICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgotLSAgICAgICAgICAgICAgICBub2RlcyA9IFsK LS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAg ICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAg ICAgICAgICAgICAgIFsiYXhpcyJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1h a2VfdGVuc29yKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoYXhpcywpKSwKLS0gICAg ICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAg ICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgICAg ICBbXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbImRmdF9sZW5ndGgiXSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksIChkZnRfbGVuZ3Ro LCkKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICJkZnRfbGVu Z3RoIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwgICMgdHlwZTogaWdub3Jl W2FyZy10eXBlXQotLSAgICAgICAgICAgICAgICBdCi0tICAgICAgICAgICAgICAgIHZhbHVlX2lu Zm9zID0gWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiZGZ0 X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCi0tICAgICAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0g ICAgICAgICAgICAgICAgXQotLSAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgIG5v ZGVzID0gWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAg ICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgICAgICAgICAgICAgWyJkZnRfbGVuZ3RoIl0sCi0tICAgICAgICAgICAgICAgICAg ICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICJk ZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoZGZ0X2xlbmd0aCwpCi0tICAgICAg ICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiZGZ0X2xlbmd0aCIsICIiXSwg WyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwgICMgdHlwZTogaWdub3JlW2FyZy10eXBlXQotLSAg ICAgICAgICAgICAgICBdCi0tICAgICAgICAgICAgICAgIHZhbHVlX2luZm9zID0gWwotLSAgICAg ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiZGZ0X2xlbmd0aCIsIFRlbnNv clByb3RvLklOVDY0LCAoKSkKLS0gICAgICAgICAgICAgICAgXQotKyAgICAgICAgKSAgIyB0eXBl OiBpZ25vcmUKLSAKLS0gICAgICAgICMgQ29uc3RydWN0IHRoZSBncmFwaAotICAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgIFsK LSAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotICAgICAgICAgICAgICAgICAgICAgIkNvbnN0 YW50IiwKLSAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgWyJp bnB1dCJdLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAg ICAgICAgICAgICAgICAgICAgImlucHV0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5z b3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKGlucHV0X3NoYXBlLCBkdHlwZT1ucC5mbG9h dDMyKS5mbGF0dGVuKCksCi0tICAgICAgICAgICAgICAgICAgICApLAotKyAgICAgICAgICAgICAg ICAgICAgWyJzaGFwZSJdLAotKyAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3Io InNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCi0gICAgICAgICAgICAgICAg ICksCi0tICAgICAgICAgICAgICAgICpub2RlcywKLSsgICAgICAgICAgICAgICAgbWFrZV9ub2Rl KCJIYW5uV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCksCi0gICAgICAgICAg ICAgXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLSAgICAgICAgICAgICBncmFwaCwKLSAgICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxP QVQsIGlucHV0X3NoYXBlKSwKLS0gICAgICAgICAgICAgICAgKnZhbHVlX2luZm9zLAotLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5G TE9BVCwgZXhwZWN0ZWRfc2hhcGUpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAot LSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0t ICAgICAgICAgICAgKCJsYXN0IiwgMyksCi0tICAgICAgICAgICAgKCJsYXN0X25lZ2F0aXZlIiwg LTEpLAotLSAgICAgICAgICAgICgib3V0X29mX3JhbmdlIiwgNCksCi0tICAgICAgICAgICAgKCJv dXRfb2ZfcmFuZ2VfbmVnYXRpdmUiLCAtNSksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVm IHRlc3RfZGZ0X2ludmFsaWRfYXhpc19vcHNldDE3KHNlbGYsIF86IHN0ciwgYXhpczogaW50KSAt PiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFtdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAg ICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgIFtdLAotLSAg ICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9 bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAoMiwgNSwgNSwgMiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcygoMiwg NSwgNSwgMiksIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKLS0gICAgICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi REZUIiwgWyJpbnB1dCIsICIiXSwgWyJvdXRwdXQiXSwgb25lc2lkZWQ9MSwgYXhpcz1heGlzKSwK LSsgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKCkpLAotKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKLSAgICAgICAgICAgICBdLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhv bm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvcik6Ci0tICAgICAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICAg ICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQi LCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDUsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwg MywgNSwgMikpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxNyldLAotLSAgICAgICAg ICAgICkKLSsgICAgICAgICkgICMgdHlwZTogaWdub3JlCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoImxhc3QiLCAzKSwKLS0gICAgICAg ICAgICAoImxhc3RfbmVnYXRpdmUiLCAtMSksCi0tICAgICAgICAgICAgKCJvdXRfb2ZfcmFuZ2Ui LCA0KSwKLS0gICAgICAgICAgICAoIm91dF9vZl9yYW5nZV9uZWdhdGl2ZSIsIC01KSwKLS0gICAg ICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZnRfaW52YWxpZF9heGlzX29wc2V0MjAoc2Vs ZiwgXzogc3RyLCBheGlzOiBpbnQpIC0+IE5vbmU6Ci0rICAgIGRlZiB0ZXN0X2JsYWNrbWFud2lu ZG93KHNlbGYpOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAg ICAgIFtdLAotICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotICAg ICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLSAgICAgICAgICAgICAgICAgICAgIFtdLAot LSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAotLSAgICAgICAgICAgICAgICAgICAgdmFs dWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKLS0gICAg ICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAoMiwgNSwgNSwgMiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcygo MiwgNSwgNSwgMiksIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKLS0gICAgICAgICAgICAg ICAgICAgICksCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9k ZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAg ICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAotLSAgICAgICAgICAgICAgICAg ICAgdmFsdWU9bWFrZV90ZW5zb3IoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksIChheGlz LCkpLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRG VCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSksCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRS YWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IpOgotLSAgICAgICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o ImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA1LCA1LCAyKSksCi0tICAgICAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgpKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1 dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNSwgMikpLAotLSAgICAgICAgICAgICAgICBd LAotLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCAyMCldLAotLSAgICAgICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgicmVhbCIsICgyLCA1LCA1LCAxKSks Ci0tICAgICAgICAgICAgKCJjb21wbGV4IiwgKDIsIDUsIDUsIDIpKSwKLS0gICAgICAgIF0KLS0g ICAgKQotLSAgICBkZWYgdGVzdF9kZnRfZHluYW1pY19heGlzX29wc2V0MjAoc2VsZiwgXzogc3Ry LCBzaGFwZTogdHVwbGVbaW50LCAuLi5dKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAg ICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0g ICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVl PW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgc2hhcGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5 cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLSsgICAg ICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLSsgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1h a2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAotICAgICAg ICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQi LCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSksCi0rICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi QmxhY2ttYW5XaW5kb3ciLCBbInNoYXBlIl0sIFsieSJdKSwKLSAgICAgICAgICAgICBdLAotICAg ICAgICAgICAgIFtdLAotICAgICAgICAgKQotICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotICAgICAgICAgICAgIGdyYXBoLAotICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgc2hhcGUp LAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsIDUsIDUsIDIpKSwKLSsgICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotKyAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgx MCwpKSwKLSAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDIwKV0sCi0tICAgICAgICApCi0rICAgICAgICAp ICAjIHR5cGU6IGlnbm9yZQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAg ICBbCi0tICAgICAgICAgICAgKCJyZWFsIiwgKDIsIDUsIDUsIDEpKSwKLS0gICAgICAgICAgICAo ImNvbXBsZXgiLCAoMiwgNSwgNSwgMikpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0 ZXN0X2RmdF9keW5hbWljX2F4aXNfb25lc2lkZWRfZGZ0X2xlbmd0aF9vcHNldDIwKAotLSAgICAg ICAgc2VsZiwgXzogc3RyLCBzaGFwZTogdHVwbGVbaW50LCAuLi5dCi0tICAgICkgLT4gTm9uZToK LSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJheGlz IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAg ICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCi0tICAg ICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAg ICAgICAiaW5wdXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FU LAotLSAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIG5wLm9uZXMoc2hhcGUsIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKLS0gICAgICAg ICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAg ICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiZGZ0X2xlbmd0aCJdLAotLSAgICAg ICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAg ICAgImRmdF9sZW5ndGgiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklO VDY0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICgpLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIG5wLmFycmF5KFs0Ml0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAgICAgICAgICAgICAg ICksCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0g ICAgICAgICAgICAgICAgICAgICJERlQiLCBbImlucHV0IiwgImRmdF9sZW5ndGgiLCAiYXhpcyJd LCBbIm91dHB1dCJdLCBvbmVzaWRlZD0xCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgXSwKLSAgICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxP QVQsIHNoYXBlKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiZGZ0 X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCi0tICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgICAgICAgICAib3V0cHV0IiwgVGVuc29y UHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lLCAyKQotLSAgICAgICAgICAgICAgICApLAot LSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgMjApXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgicmVhbCIsICgyLCA1LCA1 LCAxKSksCi0tICAgICAgICAgICAgKCJjb21wbGV4IiwgKDIsIDUsIDUsIDIpKSwKLS0gICAgICAg IF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZnRfZHluYW1pY19heGlzX29uZXNpZGVkX29wc2V0 MjAoCi0tICAgICAgICBzZWxmLCBfOiBzdHIsIHNoYXBlOiB0dXBsZVtpbnQsIC4uLl0KLS0gICAg KSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAg ICAgIFsoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKLSAgICAgICAgICAgICBbCi0g ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICJDb25zdGFu dCIsCi0gICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaW5w dXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAg ICAgICAgICAgICAgICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29y UHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigp LAotLSAgICAgICAgICAgICAgICAgICAgKSwKLSsgICAgICAgICAgICAgICAgICAgIFsic2hhcGUi XSwKLSsgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAotICAgICAgICAgICAgICAgICApLAotLSAgICAgICAg ICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRwdXQi XSwgb25lc2lkZWQ9MSksCi0rICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQmxhY2ttYW5XaW5k b3ciLCBbInNoYXBlIl0sIFsieSJdLCBwZXJpb2RpYz0wKSwKLSAgICAgICAgICAgICBdLAotICAg ICAgICAgICAgIFtdLAotICAgICAgICAgKQotICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotICAgICAgICAgICAgIGdyYXBoLAotICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgc2hhcGUp LAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAotLSAgICAgICAgICAg ICAgICAgICAgIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoTm9uZSwgTm9uZSwgTm9uZSwg MikKLS0gICAgICAgICAgICAgICAgKSwKLSsgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotKyAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwK LSAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIDIwKV0sCi0tICAgICAgICApCi0rICAgICAgICApICAjIHR5 cGU6IGlnbm9yZQotIAotICAgICBkZWYgdGVzdF9kZnRfb25lc2lkZWRfZGVmYXVsdF9heGlzX29w c2V0MTcoc2VsZikgLT4gTm9uZToKLSAgICAgICAgICMgT3BzZXQgMTcgc2V0cyBkZWZhdWx0IGF4 aXMgdG8gYmUgMS4KLUBAIC05ODQ2LDEzOSArNzYzMiw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVy ZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgICAgIF0sCi0gICAgICAg ICApCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChbVGVuc29yUHJvdG8uRkxPQVQsIFRl bnNvclByb3RvLkRPVUJMRSwgVGVuc29yUHJvdG8uRkxPQVQxNl0pCi0tICAgIEB1bml0dGVzdC5z a2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBv cGVyYXRvcnMiKQotLSAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlKHNlbGYsIGR0eXBlKSAtPiBO b25lOgotLSAgICAgICAgaW50ZXJpb3Jfbm9kZXMgPSA1Ci0tICAgICAgICBsZWF2ZXMgPSA5Ci0t ICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAotLSAgICAgICAgICAgICJUcmVlRW5zZW1ibGUiLAot LSAgICAgICAgICAgIFsieCJdLAotLSAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgIGRv bWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICBuX3RhcmdldHM9NSwKLS0gICAgICAg ICAgICBub2Rlc19mZWF0dXJlaWRzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAg IG5vZGVzX3NwbGl0cz1tYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgIm5vZGVzX3NwbGl0 cyIsCi0tICAgICAgICAgICAgICAgIGR0eXBlLAotLSAgICAgICAgICAgICAgICAoaW50ZXJpb3Jf bm9kZXMsKSwKLS0gICAgICAgICAgICAgICAgbGlzdChyYW5nZShpbnRlcmlvcl9ub2RlcykpLAot LSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgbm9kZXNfbW9kZXM9bWFrZV90ZW5zb3IoCi0t ICAgICAgICAgICAgICAgICJub2Rlc19tb2RlcyIsCi0tICAgICAgICAgICAgICAgIFRlbnNvclBy b3RvLlVJTlQ4LAotLSAgICAgICAgICAgICAgICAoaW50ZXJpb3Jfbm9kZXMsKSwKLS0gICAgICAg ICAgICAgICAgWzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICBub2Rlc190cnVlbm9kZWlkcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAg ICBub2Rlc19mYWxzZW5vZGVpZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAg bm9kZXNfdHJ1ZWxlYWZzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVz X2ZhbHNlbGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgbWVtYmVyc2hp cF92YWx1ZXM9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICJtZW1iZXJzaGlwX3ZhbHVl cyIsCi0tICAgICAgICAgICAgICAgIGR0eXBlLAotLSAgICAgICAgICAgICAgICAoNywpLAotLSAg ICAgICAgICAgICAgICBbMC4wLCAwLjEsIDAuMiwgbnAubmFuLCAwLjQsIDAuNSwgMS4wXSwKLS0g ICAgICAgICAgICApLAotLSAgICAgICAgICAgIGxlYWZfdGFyZ2V0aWRzPVswXSAqIGxlYXZlcywK LS0gICAgICAgICAgICBsZWFmX3dlaWdodHM9bWFrZV90ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIGR0 eXBlLCAobGVhdmVzLCksIFsxXSAqIGxlYXZlcyksCi0tICAgICAgICAgICAgdHJlZV9yb290cz1b MF0sCi0tICAgICAgICApCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0t ICAgICAgICAgICAgWygieCIsIGR0eXBlLCAoIkJhdGNoIFNpemUiLCAiRmVhdHVyZXMiKSldLAot LSAgICAgICAgICAgIFt0cmVlXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0KLS0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIGR0eXBlLCAoIkJhdGNoIFNpemUi LCA1KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBt YWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDUpLAotLSAgICAgICAgICAgICAgICBtYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQot LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgewot LSAgICAgICAgICAgICAgICAibm9kZXNfdHJ1ZW5vZGVpZHMiOiBbMF0gKiA2LAotLSAgICAgICAg ICAgICAgICAibGVhZl93ZWlnaHRzIjogbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAg ICAibGVhZl93ZWlnaHRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoOSwpLCBbMV0gKiA5Ci0tICAg ICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiOiBtYWtlX3Rl bnNvcigKLS0gICAgICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiLCBUZW5zb3JQcm90by5E T1VCTEUsICg1LCksIFsxXSAqIDUKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICB9 LAotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgIm5vZGVzX3RydWVub2RlaWRzIjog WzBdICogNSwKLS0gICAgICAgICAgICAgICAgImxlYWZfd2VpZ2h0cyI6IG1ha2VfdGVuc29yKAot LSAgICAgICAgICAgICAgICAgICAgImxlYWZfd2VpZ2h0cyIsIFRlbnNvclByb3RvLkZMT0FULCAo OSwpLCBbMV0gKiA5Ci0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICJub2Rl c19zcGxpdHMiOiBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICJub2Rlc19zcGxp dHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCksIFsxXSAqIDUKLS0gICAgICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICB9LAotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgIm5v ZGVzX3RydWVub2RlaWRzIjogWzBdICogNSwKLS0gICAgICAgICAgICAgICAgImxlYWZfd2VpZ2h0 cyI6IG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgImxlYWZfd2VpZ2h0cyIsIFRl bnNvclByb3RvLkRPVUJMRSwgKDE4LCksIFsxXSAqIDE4Ci0tICAgICAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgICAgICJub2Rlc19zcGxpdHMiOiBtYWtlX3RlbnNvcigKLS0gICAgICAgICAg ICAgICAgICAgICJub2Rlc19zcGxpdHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCksIFsxXSAq IDUKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICB9LAotLSAgICAgICAgICAgIHsK LS0gICAgICAgICAgICAgICAgIm5vZGVzX3RydWVub2RlaWRzIjogWzBdICogNSwKLS0gICAgICAg ICAgICAgICAgImxlYWZfd2VpZ2h0cyI6IG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAg ICAgImxlYWZfd2VpZ2h0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDksKSwgWzFdICogOQotLSAg ICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAibm9kZXNfc3BsaXRzIjogbWFrZV90 ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAibm9kZXNfc3BsaXRzIiwgVGVuc29yUHJvdG8u RkxPQVQsICg1LCksIFsxXSAqIDUKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICB9 LAotLSAgICAgICAgXQotLSAgICApCi0tICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUws ICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQotLSAgICBk ZWYgdGVzdF90cmVlX2Vuc2VtYmxlX2ZhaWxzX2lmX2ludmFsaWRfYXR0cmlidXRlcygKLS0gICAg ICAgIHNlbGYsCi0tICAgICAgICBub2Rlc190cnVlbm9kZWlkcywKLS0gICAgICAgIGxlYWZfd2Vp Z2h0cywKLS0gICAgICAgIG5vZGVzX3NwbGl0cywKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAg aW50ZXJpb3Jfbm9kZXMgPSA1Ci0tICAgICAgICBsZWF2ZXMgPSA5Ci0tICAgICAgICB0cmVlID0g bWFrZV9ub2RlKAotLSAgICAgICAgICAgICJUcmVlRW5zZW1ibGUiLAotLSAgICAgICAgICAgIFsi eCJdLAotLSAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RP TUFJTiwKLS0gICAgICAgICAgICBuX3RhcmdldHM9NSwKLS0gICAgICAgICAgICBub2Rlc19mZWF0 dXJlaWRzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVzX3NwbGl0cz1u b2Rlc19zcGxpdHMsCi0tICAgICAgICAgICAgbm9kZXNfbW9kZXM9bWFrZV90ZW5zb3IoCi0tICAg ICAgICAgICAgICAgICJub2Rlc19tb2RlcyIsCi0tICAgICAgICAgICAgICAgIFRlbnNvclByb3Rv LlVJTlQ4LAotLSAgICAgICAgICAgICAgICAoaW50ZXJpb3Jfbm9kZXMsKSwKLS0gICAgICAgICAg ICAgICAgWzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICBub2Rlc190cnVlbm9kZWlkcz1ub2Rlc190cnVlbm9kZWlkcywKLS0gICAgICAgICAgICBub2Rl c19mYWxzZW5vZGVpZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgbm9kZXNf dHJ1ZWxlYWZzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVzX2ZhbHNl bGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgbGVhZl90YXJnZXRpZHM9 WzBdICogbGVhdmVzLAotLSAgICAgICAgICAgIGxlYWZfd2VpZ2h0cz1sZWFmX3dlaWdodHMsCi0t ICAgICAgICAgICAgdHJlZV9yb290cz1bMF0sCi0tICAgICAgICApCi0tCi0tICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkRP VUJMRSwgKCJCYXRjaCBTaXplIiwgIkZlYXR1cmVzIikpXSwKLS0gICAgICAgICAgICBbdHJlZV0s Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNl cyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdy YXBoKQotLQotICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1 aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKLSAgICAgZGVmIHRlc3RfdHJlZV9l bnNlbWJsZV9jbGFzc2lmaWVyKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICB0cmVlID0gbWFrZV9u b2RlKAotZGlmZiAtLWdpdCBhL29ubngvdGVzdC90ZXN0X2JhY2tlbmRfcmVmZXJlbmNlLnB5IGIv b25ueC90ZXN0L3Rlc3RfYmFja2VuZF9yZWZlcmVuY2UucHkKLWluZGV4IDcxY2U3NjUxZS4uYjQ4 MmYyNzc4IDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L3Rlc3RfYmFja2VuZF9yZWZlcmVuY2UucHkK LSsrKyBiL29ubngvdGVzdC90ZXN0X2JhY2tlbmRfcmVmZXJlbmNlLnB5Ci1AQCAtMTkzLDYgKzE5 MywxNSBAQCBiYWNrZW5kX3Rlc3QuZXhjbHVkZSgiKHRlc3RfZXllbGlrZV93aXRob3V0X2R0eXBl KSIpCi0gIyBUaGUgZm9sbG93aW5nIHRlc3RzIGZhaWwgZHVlIHRvIGRpc2NyZXBhbmNpZXMgKHNt YWxsIGJ1dCBzdGlsbCBoaWdoZXIgdGhhbiAxZS03KS4KLSBiYWNrZW5kX3Rlc3QuZXhjbHVkZSgi dGVzdF9hZGFtX211bHRpcGxlIikgICMgMWUtMgotIAotK2JhY2tlbmRfdGVzdC5leGNsdWRlKAot KyAgICAiKCIKLSsgICAgInRlc3RfYWZmaW5lX2dyaWRfMmRfYWxpZ25fY29ybmVyc19leHBhbmRl ZF9jcHUiCi0rICAgICJ8dGVzdF9hZmZpbmVfZ3JpZF8yZF9leHBhbmRlZF9jcHUiCi0rICAgICJ8 dGVzdF9hZmZpbmVfZ3JpZF8zZF9hbGlnbl9jb3JuZXJzX2V4cGFuZGVkX2NwdSIKLSsgICAgInx0 ZXN0X2FmZmluZV9ncmlkXzNkX2V4cGFuZGVkX2NwdSIKLSsgICAgIikiCi0rKQotKwotICMgQ3Vy cmVudGx5IGdvb2dsZS1yZTIvUGlsbG93IGlzIG5vdCBzdXBwb3J0ZWQgb24gV2luMzIgYW5kIGlz IHJlcXVpcmVkIGZvciB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIFJlZ2V4RnVsbE1h dGNoLgotIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICBiYWNrZW5kX3Rlc3QuZXhj bHVkZSgidGVzdF9yZWdleF9mdWxsX21hdGNoX2Jhc2ljX2NwdSIpCi1kaWZmIC0tZ2l0IGEvb25u eC90ZXN0L3Rlc3RfZXh0ZXJuYWxfZGF0YS5weSBiL29ubngvdGVzdC90ZXN0X2V4dGVybmFsX2Rh dGEucHkKLWluZGV4IGZjNGIyZjgwMi4uZDc1NWMwNGNjIDEwMDY0NAotLS0tIGEvb25ueC90ZXN0 L3Rlc3RfZXh0ZXJuYWxfZGF0YS5weQotKysrIGIvb25ueC90ZXN0L3Rlc3RfZXh0ZXJuYWxfZGF0 YS5weQotQEAgLTEyLDcgKzEyLDYgQEAgaW1wb3J0IHV1aWQKLSBmcm9tIHR5cGluZyBpbXBvcnQg QW55LCBTZXF1ZW5jZQotIAotIGltcG9ydCBudW1weSBhcyBucAotLWltcG9ydCBwYXJhbWV0ZXJp emVkCi0gCi0gaW1wb3J0IG9ubngKLSBmcm9tIG9ubnggaW1wb3J0ICgKLUBAIC0xMTIsNjIxICsx MTEsNiBAQCBjbGFzcyBUZXN0TG9hZEV4dGVybmFsRGF0YUJhc2UodW5pdHRlc3QuVGVzdENhc2Up OgotICAgICAgICAgY2hlY2tlci5jaGVja19tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lKQotIAot IAotLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCi0tICAgIFsKLS0gICAgICAg IHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwKLS0gICAgICAgIHsic2VyaWFs aXphdGlvbl9mb3JtYXQiOiAidGV4dHByb3RvIn0sCi0tICAgIF0KLS0pCi0tY2xhc3MgVGVzdExv YWRFeHRlcm5hbERhdGEoVGVzdExvYWRFeHRlcm5hbERhdGFCYXNlKToKLS0gICAgZGVmIHRlc3Rf bG9hZF9leHRlcm5hbF9kYXRhKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbCA9IG9ubngu bG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 KQotLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJb MF0KLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxp emVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAgICAgICBhdHRyaWJ1 dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAgICAgICAg bnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNl bGYuYXR0cmlidXRlX3ZhbHVlKQotLQotLSAgICBkZWYgdGVzdF9sb2FkX2V4dGVybmFsX2RhdGFf Zm9yX21vZGVsKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2Rl bCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKLS0gICAgICAgICkKLS0gICAgICAgIGxv YWRfZXh0ZXJuYWxfZGF0YV9mb3JfbW9kZWwobW9kZWwsIHNlbGYudGVtcF9kaXIpCi0tICAgICAg ICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29y KSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKLS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3Ig PSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50Ci0tICAgICAgICBucC50ZXN0aW5n LmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1 dGVfdmFsdWUpCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfZXh0ZXJuYWxfZGF0YShzZWxmKSAtPiBO b25lOgotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFt ZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIHRlbXBfZGlyID0gb3Mu cGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJzYXZlX2NvcHkiKQotLSAgICAgICAgb3MubWtkaXIo dGVtcF9kaXIpCi0tICAgICAgICBuZXdfbW9kZWxfZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4odGVt cF9kaXIsICJtb2RlbC5vbm54IikKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChtb2RlbCwgbmV3 X21vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAg bmV3X21vZGVsID0gb25ueC5sb2FkX21vZGVsKG5ld19tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG5ld19tb2Rl bC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xv c2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkK LS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBuZXdfbW9kZWwuZ3JhcGgubm9kZVswXS5h dHRyaWJ1dGVbMF0udAotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJy YXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQotLQotLQotLUBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3MoCi0tICAgIFsKLS0gICAgICAgIHsic2VyaWFs aXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwKLS0gICAgICAgIHsic2VyaWFsaXphdGlvbl9m b3JtYXQiOiAidGV4dHByb3RvIn0sCi0tICAgIF0KLS0pCi0tY2xhc3MgVGVzdExvYWRFeHRlcm5h bERhdGFTaW5nbGVGaWxlKFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFzZSk6Ci0tICAgIGRlZiBjcmVh dGVfZXh0ZXJuYWxfZGF0YV90ZW5zb3JzKAotLSAgICAgICAgc2VsZiwgdGVuc29yc19kYXRhOiBs aXN0W3R1cGxlW2xpc3RbQW55XSwgQW55XV0KLS0gICAgKSAtPiBsaXN0W1RlbnNvclByb3RvXToK LS0gICAgICAgIHRlbnNvcl9maWxlbmFtZSA9ICJ0ZW5zb3JzLmJpbiIKLS0gICAgICAgIHRlbnNv cnMgPSBbXQotLQotLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGly LCB0ZW5zb3JfZmlsZW5hbWUpLCAiYWIiKSBhcyBkYXRhX2ZpbGU6Ci0tICAgICAgICAgICAgZm9y IHZhbHVlLCB0ZW5zb3JfbmFtZSBpbiB0ZW5zb3JzX2RhdGE6Ci0tICAgICAgICAgICAgICAgIHRl bnNvciA9IGZyb21fYXJyYXkobnAuYXJyYXkodmFsdWUpKQotLSAgICAgICAgICAgICAgICBvZmZz ZXQgPSBkYXRhX2ZpbGUudGVsbCgpCi0tICAgICAgICAgICAgICAgIGlmIG9mZnNldCAlIDQwOTYg IT0gMDoKLS0gICAgICAgICAgICAgICAgICAgIGRhdGFfZmlsZS53cml0ZShiIlwwIiAqICg0MDk2 IC0gb2Zmc2V0ICUgNDA5NikpCi0tICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXQg KyA0MDk2IC0gb2Zmc2V0ICUgNDA5NgotLQotLSAgICAgICAgICAgICAgICBkYXRhX2ZpbGUud3Jp dGUodGVuc29yLnJhd19kYXRhKQotLSAgICAgICAgICAgICAgICBzZXRfZXh0ZXJuYWxfZGF0YSgK LS0gICAgICAgICAgICAgICAgICAgIHRlbnNvciwKLS0gICAgICAgICAgICAgICAgICAgIGxvY2F0 aW9uPXRlbnNvcl9maWxlbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgIG9mZnNldD1vZmZzZXQs Ci0tICAgICAgICAgICAgICAgICAgICBsZW5ndGg9ZGF0YV9maWxlLnRlbGwoKSAtIG9mZnNldCwK LS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgICAgICB0ZW5zb3IubmFtZSA9IHRlbnNv cl9uYW1lCi0tICAgICAgICAgICAgICAgIHRlbnNvci5DbGVhckZpZWxkKCJyYXdfZGF0YSIpCi0t ICAgICAgICAgICAgICAgIHRlbnNvci5kYXRhX2xvY2F0aW9uID0gb25ueC5UZW5zb3JQcm90by5F WFRFUk5BTAotLSAgICAgICAgICAgICAgICB0ZW5zb3JzLmFwcGVuZCh0ZW5zb3IpCi0tCi0tICAg ICAgICByZXR1cm4gdGVuc29ycwotLQotLSAgICBkZWYgdGVzdF9sb2FkX2V4dGVybmFsX3Npbmds ZV9maWxlX2RhdGEoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21v ZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0t ICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQot LSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJf dGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKLS0KLS0gICAgICAgIGF0dHJpYnV0ZV90 ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50Ci0tICAgICAgICBucC50 ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5h dHRyaWJ1dGVfdmFsdWUpCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfZXh0ZXJuYWxfc2luZ2xlX2Zp bGVfZGF0YShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwo c2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAg ICAgIHRlbXBfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJzYXZlX2NvcHkiKQot LSAgICAgICAgb3MubWtkaXIodGVtcF9kaXIpCi0tICAgICAgICBuZXdfbW9kZWxfZmlsZW5hbWUg PSBvcy5wYXRoLmpvaW4odGVtcF9kaXIsICJtb2RlbC5vbm54IikKLS0gICAgICAgIG9ubnguc2F2 ZV9tb2RlbChtb2RlbCwgbmV3X21vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0KQotLQotLSAgICAgICAgbmV3X21vZGVsID0gb25ueC5sb2FkX21vZGVsKG5ld19tb2RlbF9m aWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGluaXRpYWxpemVy X3RlbnNvciA9IG5ld19tb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgbnAudGVz dGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5p bml0aWFsaXplcl92YWx1ZSkKLS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBuZXdfbW9k ZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAgICAgICAgbnAudGVzdGluZy5hc3Nl cnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3Zh bHVlKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZChpdGVydG9v bHMucHJvZHVjdCgoVHJ1ZSwgRmFsc2UpLCAoVHJ1ZSwgRmFsc2UpKSkKLS0gICAgZGVmIHRlc3Rf c2F2ZV9leHRlcm5hbF9pbnZhbGlkX3NpbmdsZV9maWxlX2RhdGFfYW5kX2NoZWNrKAotLSAgICAg ICAgc2VsZiwgdXNlX2Fic29sdXRlX3BhdGg6IGJvb2wsIHVzZV9tb2RlbF9wYXRoOiBib29sCi0t ICAgICkgLT4gTm9uZToKLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9k ZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBtb2Rl bF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgInNhdmVfY29weSIpCi0tICAgICAg ICBvcy5ta2Rpcihtb2RlbF9kaXIpCi0tCi0tICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0 YV9kaXIgPSBvcy5wYXRoLmpvaW4oCi0tICAgICAgICAgICAgc2VsZi50ZW1wX2RpciwgImludmxp ZF9leHRlcm5hbF9kYXRhIgotLSAgICAgICAgKQotLSAgICAgICAgb3MubWtkaXIodHJhdmVyc2Fs X2V4dGVybmFsX2RhdGFfZGlyKQotLQotLSAgICAgICAgaWYgdXNlX2Fic29sdXRlX3BhdGg6Ci0t ICAgICAgICAgICAgdHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfbG9jYXRpb24gPSBvcy5wYXRoLmpv aW4oCi0tICAgICAgICAgICAgICAgIHRyYXZlcnNhbF9leHRlcm5hbF9kYXRhX2RpciwgInRlbnNv cnMuYmluIgotLSAgICAgICAgICAgICkKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgdHJh dmVyc2FsX2V4dGVybmFsX2RhdGFfbG9jYXRpb24gPSAiLi4vaW52bGlkX2V4dGVybmFsX2RhdGEv dGVuc29ycy5iaW4iCi0tCi0tICAgICAgICBleHRlcm5hbF9kYXRhX2RpciA9IG9zLnBhdGguam9p bihzZWxmLnRlbXBfZGlyLCAiZXh0ZXJuYWxfZGF0YSIpCi0tICAgICAgICBvcy5ta2RpcihleHRl cm5hbF9kYXRhX2RpcikKLS0gICAgICAgIG5ld19tb2RlbF9maWxlcGF0aCA9IG9zLnBhdGguam9p bihtb2RlbF9kaXIsICJtb2RlbC5vbm54IikKLS0KLS0gICAgICAgIGRlZiBjb252ZXJ0X21vZGVs X3RvX2V4dGVybmFsX2RhdGFfbm9fY2hlY2sobW9kZWw6IE1vZGVsUHJvdG8sIGxvY2F0aW9uOiBz dHIpOgotLSAgICAgICAgICAgIGZvciB0ZW5zb3IgaW4gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXI6 Ci0tICAgICAgICAgICAgICAgIGlmIHRlbnNvci5IYXNGaWVsZCgicmF3X2RhdGEiKToKLS0gICAg ICAgICAgICAgICAgICAgIHNldF9leHRlcm5hbF9kYXRhKHRlbnNvciwgbG9jYXRpb24pCi0tCi0t ICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfbm9fY2hlY2soCi0tICAgICAg ICAgICAgbW9kZWwsCi0tICAgICAgICAgICAgbG9jYXRpb249dHJhdmVyc2FsX2V4dGVybmFsX2Rh dGFfbG9jYXRpb24sCi0tICAgICAgICApCi0tCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwobW9k ZWwsIG5ld19tb2RlbF9maWxlcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAg ICAgIGlmIHVzZV9tb2RlbF9wYXRoOgotLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlz ZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcik6Ci0tICAgICAgICAgICAgICAgIF8gPSBv bm54LmxvYWRfbW9kZWwobmV3X21vZGVsX2ZpbGVwYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0KQotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICBvbm54X21vZGVsID0gb25ueC5sb2Fk X21vZGVsKAotLSAgICAgICAgICAgICAgICBuZXdfbW9kZWxfZmlsZXBhdGgsIHNlbGYuc2VyaWFs aXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAgICAgICAgICAgICkK LS0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0 aW9uRXJyb3IpOgotLSAgICAgICAgICAgICAgICBsb2FkX2V4dGVybmFsX2RhdGFfZm9yX21vZGVs KG9ubnhfbW9kZWwsIGV4dGVybmFsX2RhdGFfZGlyKQotLQotLQotLUBwYXJhbWV0ZXJpemVkLnBh cmFtZXRlcml6ZWRfY2xhc3MoCi0tICAgIFsKLS0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3Jt YXQiOiAicHJvdG9idWYifSwKLS0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAidGV4 dHByb3RvIn0sCi0tICAgIF0KLS0pCi0tY2xhc3MgVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRlcm5h bERhdGEodW5pdHRlc3QuVGVzdENhc2UpOgotLSAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdDogc3Ry ID0gInByb3RvYnVmIgotLQotLSAgICBkZWYgc2V0VXAoc2VsZikgLT4gTm9uZToKLS0gICAgICAg IHNlbGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCi0tICAg ICAgICBzZWxmLnRlbXBfZGlyOiBzdHIgPSBzZWxmLl90ZW1wX2Rpcl9vYmoubmFtZQotLSAgICAg ICAgc2VsZi5pbml0aWFsaXplcl92YWx1ZSA9IG5wLmFyYW5nZSg2KS5yZXNoYXBlKDMsIDIpLmFz dHlwZShucC5mbG9hdDMyKSArIDUxMgotLSAgICAgICAgc2VsZi5hdHRyaWJ1dGVfdmFsdWUgPSBu cC5hcmFuZ2UoNikucmVzaGFwZSgyLCAzKS5hc3R5cGUobnAuZmxvYXQzMikgKyAyNTYKLS0gICAg ICAgIHNlbGYubW9kZWwgPSBzZWxmLmNyZWF0ZV90ZXN0X21vZGVsX3Byb3RvKCkKLS0KLS0gICAg ZGVmIGdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKHNlbGYpOgotLSAgICAgICAgcmV0dXJuIG9zLnBh dGguam9pbihzZWxmLnRlbXBfZGlyLCBzdHIodXVpZC51dWlkNCgpKSArICIub25ueCIpCi0tCi0t ICAgIGRlZiBjcmVhdGVfZGF0YV90ZW5zb3JzKAotLSAgICAgICAgc2VsZiwgdGVuc29yc19kYXRh OiBsaXN0W3R1cGxlW2xpc3RbQW55XSwgQW55XV0KLS0gICAgKSAtPiBsaXN0W1RlbnNvclByb3Rv XToKLS0gICAgICAgIHRlbnNvcnMgPSBbXQotLSAgICAgICAgZm9yIHZhbHVlLCB0ZW5zb3JfbmFt ZSBpbiB0ZW5zb3JzX2RhdGE6Ci0tICAgICAgICAgICAgdGVuc29yID0gZnJvbV9hcnJheShucC5h cnJheSh2YWx1ZSkpCi0tICAgICAgICAgICAgdGVuc29yLm5hbWUgPSB0ZW5zb3JfbmFtZQotLSAg ICAgICAgICAgIHRlbnNvcnMuYXBwZW5kKHRlbnNvcikKLS0KLS0gICAgICAgIHJldHVybiB0ZW5z b3JzCi0tCi0tICAgIGRlZiBjcmVhdGVfdGVzdF9tb2RlbF9wcm90byhzZWxmKSAtPiBNb2RlbFBy b3RvOgotLSAgICAgICAgdGVuc29ycyA9IHNlbGYuY3JlYXRlX2RhdGFfdGVuc29ycygKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIChzZWxmLmF0dHJpYnV0ZV92YWx1ZSwgImF0dHJp YnV0ZV92YWx1ZSIpLCAgIyB0eXBlOiBpZ25vcmVbbGlzdC1pdGVtXQotLSAgICAgICAgICAgICAg ICAoc2VsZi5pbml0aWFsaXplcl92YWx1ZSwgImlucHV0X3ZhbHVlIiksICAjIHR5cGU6IGlnbm9y ZVtsaXN0LWl0ZW1dCi0tICAgICAgICAgICAgXQotLSAgICAgICAgKQotLQotLSAgICAgICAgY29u c3RhbnRfbm9kZSA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAiQ29uc3Rh bnQiLCBpbnB1dHM9W10sIG91dHB1dHM9WyJ2YWx1ZXMiXSwgdmFsdWU9dGVuc29yc1swXQotLSAg ICAgICAgKQotLQotLSAgICAgICAgaW5wdXRzID0gWwotLSAgICAgICAgICAgIGhlbHBlci5tYWtl X3RlbnNvcl92YWx1ZV9pbmZvKAotLSAgICAgICAgICAgICAgICAiaW5wdXRfdmFsdWUiLCBvbm54 LlRlbnNvclByb3RvLkZMT0FULCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlLnNoYXBlCi0tICAgICAg ICAgICAgKQotLSAgICAgICAgXQotLQotLSAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9ncmFw aCgKLS0gICAgICAgICAgICBbY29uc3RhbnRfbm9kZV0sCi0tICAgICAgICAgICAgInRlc3RfZ3Jh cGgiLAotLSAgICAgICAgICAgIGlucHV0cz1pbnB1dHMsCi0tICAgICAgICAgICAgb3V0cHV0cz1b XSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bdGVuc29yc1sxXV0sCi0tICAgICAgICApCi0t ICAgICAgICByZXR1cm4gaGVscGVyLm1ha2VfbW9kZWwoZ3JhcGgpCi0tCi0tICAgIEB1bml0dGVz dC5za2lwSWYoCi0tICAgICAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdCAhPSAicHJvdG9idWYiLAot LSAgICAgICAgImNoZWNrX21vZGVsIHN1cHBvcnRzIHByb3RvYnVmIG9ubHkgd2hlbiBwcm92aWRl ZCBhcyBhIHBhdGgiLAotLSAgICApCi0tICAgIGRlZiB0ZXN0X2NoZWNrX21vZGVsKHNlbGYpIC0+ IE5vbmU6Ci0tICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWwpCi0tCi0tICAg IGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV93aXRoX3NpemVfdGhyZXNo b2xkKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90 ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0KLS0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJu YWxfZGF0YShzZWxmLm1vZGVsLCBzaXplX3RocmVzaG9sZD0xMDI0KQotLSAgICAgICAgb25ueC5z YXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9u X2Zvcm1hdCkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVf cGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGluaXRpYWxpemVyX3Rl bnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFzc2VydEZh bHNlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLQotLSAg ICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfd2l0aG91dF9zaXplX3Ro cmVzaG9sZChzZWxmKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5n ZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCi0tICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVy bmFsX2RhdGEoc2VsZi5tb2RlbCwgc2l6ZV90aHJlc2hvbGQ9MCkKLS0gICAgICAgIG9ubnguc2F2 ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9m b3JtYXQpCi0tCi0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3Bh dGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5z b3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl KGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAgICAgICAg bnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwg c2VsZi5pbml0aWFsaXplcl92YWx1ZSkKLS0KLS0gICAgZGVmIHRlc3RfY29udmVydF9tb2RlbF90 b19leHRlcm5hbF9kYXRhX2Zyb21fb25lX2ZpbGVfd2l0aF9sb2NhdGlvbihzZWxmKSAtPiBOb25l OgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFt ZSgpCi0tICAgICAgICBleHRlcm5hbF9kYXRhX2ZpbGUgPSBzdHIodXVpZC51dWlkNCgpKQotLQot LSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAotLSAgICAgICAgICAgIHNl bGYubW9kZWwsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAgICAgICBh bGxfdGVuc29yc190b19vbmVfZmlsZT1UcnVlLAotLSAgICAgICAgICAgIGxvY2F0aW9uPWV4dGVy bmFsX2RhdGFfZmlsZSwKLS0gICAgICAgICkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxm Lm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0t ICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYu dGVtcF9kaXIsIGV4dGVybmFsX2RhdGFfZmlsZSkpKQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54 LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQot LQotLSAgICAgICAgIyB0ZXN0IGNvbnZlcnQgbW9kZWwgZnJvbSBleHRlcm5hbCBkYXRhCi0tICAg ICAgICBjb252ZXJ0X21vZGVsX2Zyb21fZXh0ZXJuYWxfZGF0YShtb2RlbCkKLS0gICAgICAgIG1v ZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQotLSAgICAgICAg b25ueC5zYXZlX21vZGVsKG1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlv bl9mb3JtYXQpCi0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3Bh dGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5z b3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz ZShsZW4oaW5pdGlhbGl6ZXJfdGVuc29yLmV4dGVybmFsX2RhdGEpKQotLSAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChpbml0aWFsaXplcl90ZW5zb3IuZGF0YV9sb2NhdGlvbiwgVGVuc29yUHJvdG8u REVGQVVMVCkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGlu aXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAgICAgICBh dHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAg ICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oYXR0cmlidXRlX3RlbnNvci5leHRlcm5hbF9kYXRh KSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cmlidXRlX3RlbnNvci5kYXRhX2xvY2F0 aW9uLCBUZW5zb3JQcm90by5ERUZBVUxUKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxs Y2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQot LQotLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfZnJvbV9vbmVf ZmlsZV93aXRob3V0X2xvY2F0aW9uX3VzZXNfbW9kZWxfbmFtZSgKLS0gICAgICAgIHNlbGYsCi0t ICAgICkgLT4gTm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBf bW9kZWxfZmlsZW5hbWUoKQotLQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9k YXRhKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTAsIGFsbF90ZW5z b3JzX3RvX29uZV9maWxlPVRydWUKLS0gICAgICAgICkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2Rl bChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQp Ci0tCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9w YXRoKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpv aW4oc2VsZi50ZW1wX2RpciwgbW9kZWxfZmlsZV9wYXRoKSkpCi0tCi0tICAgIGRlZiB0ZXN0X2Nv bnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9vbmVfZmlsZV9wZXJfdGVuc29yX3dpdGhvdXRf YXR0cmlidXRlKAotLSAgICAgICAgc2VsZiwKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgbW9k ZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCi0tCi0tICAgICAg ICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCi0tICAgICAgICAgICAgc2VsZi5tb2Rl bCwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAotLSAgICAgICAgICAgIGFsbF90ZW5z b3JzX3RvX29uZV9maWxlPUZhbHNlLAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPUZh bHNlLAotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1v ZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQotLSAgICAgICAg c2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGly LCAiaW5wdXRfdmFsdWUiKSkpCi0tICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNm aWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiYXR0cmlidXRlX3ZhbHVlIikpKQotLQot LSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfb25lX2ZpbGVfcGVy X3RlbnNvcl93aXRoX2F0dHJpYnV0ZSgKLS0gICAgICAgIHNlbGYsCi0tICAgICkgLT4gTm9uZToK LS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUo KQotLQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAotLSAgICAgICAg ICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAg ICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKLS0gICAgICAgICAgICBjb252ZXJ0 X2F0dHJpYnV0ZT1UcnVlLAotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNl bGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0K LS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3BhdGgp KQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihz ZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUo b3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJhdHRyaWJ1dGVfdmFs dWUiKSkpCi0tCi0tICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9k b2VzX25vdF9jb252ZXJ0X2F0dHJpYnV0ZV92YWx1ZXMoCi0tICAgICAgICBzZWxmLAotLSAgICAp IC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVs X2ZpbGVuYW1lKCkKLS0KLS0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgK LS0gICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAs Ci0tICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9RmFsc2UsCi0tICAgICAgICAgICAgYWxs X3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCi0tICAgICAgICApCi0tICAgICAgICBvbm54LnNh dmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25f Zm9ybWF0KQotLQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBh dGguam9pbihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCi0tICAgICAgICBzZWxmLmFz c2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiYXR0 cmlidXRlX3ZhbHVlIikpKQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9k ZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLSAgICAgICAgaW5pdGlh bGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkK LS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJp YnV0ZVswXS50Ci0tICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFz RmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0KLS0gICAgZGVmIHRlc3RfY29udmVydF9tb2RlbF90 b19leHRlcm5hbF9kYXRhX2NvbnZlcnRzX2F0dHJpYnV0ZV92YWx1ZXMoc2VsZikgLT4gTm9uZToK LS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUo KQotLQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAotLSAgICAgICAg ICAgIHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTAsIGNvbnZlcnRfYXR0cmlidXRlPVRydWUK LS0gICAgICAgICkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9m aWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBtb2RlbCA9 IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQpCi0tCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFs aXplclswXQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5p dGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKLS0gICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkK LS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJp YnV0ZVswXS50Ci0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShh dHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCi0tICAgICAgICBzZWxmLmFz c2VydFRydWUoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLQot LSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX2RvZXNfbm90X2NvbnZlcnRfdG9fZXh0ZXJuYWxfZGF0 YV9hbmRfc2F2ZXNfdGhlX21vZGVsKAotLSAgICAgICAgc2VsZiwKLS0gICAgKSAtPiBOb25lOgot LSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgp Ci0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbCwKLS0g ICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsCi0tICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0 aW9uX2Zvcm1hdCwKLS0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9RmFsc2UsCi0t ICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxf ZmlsZV9wYXRoKSkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2Zp bGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGluaXRpYWxpemVy X3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFzc2Vy dEZhbHNlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLQot LSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRl WzBdLnQKLS0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVs ZCgiZGF0YV9sb2NhdGlvbiIpKQotLQotLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX2RvZXNfY29u dmVydF9hbmRfc2F2ZXNfdGhlX21vZGVsKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9m aWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0gICAgICAgIG9ubngu c2F2ZV9tb2RlbCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIG1vZGVs X2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAotLSAg ICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAgICAgIGFsbF90 ZW5zb3JzX3RvX29uZV9maWxlPVRydWUsCi0tICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKLS0g ICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmli dXRlPUZhbHNlLAotLSAgICAgICAgKQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9k ZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAgICAg ICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAg ICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9j YXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGlu aXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAgICAgICBh dHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAotLSAg ICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xv Y2F0aW9uIikpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShh dHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCi0tCi0tICAgIGRlZiB0ZXN0 X3NhdmVfbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToK LS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUo KQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsCi0t ICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLAotLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXph dGlvbl9mb3JtYXQsCi0tICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCi0t ICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0w LAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAotLSAgICAgICAgKQotLSAg ICAgICAgIyBTYXZlIHdpdGhvdXQgbG9hZF9leHRlcm5hbF9kYXRhCi0tICAgICAgICBtb2RlbCA9 IG9ubngubG9hZF9tb2RlbCgKLS0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAgICAgICAgKQot LSAgICAgICAgb25ueC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIG1vZGVsLAotLSAgICAgICAg ICAgIG1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAg ICAgIGxvY2F0aW9uPU5vbmUsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAg ICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKLS0gICAgICAgICkKLS0gICAgICAgICMg TG9hZCB0aGUgc2F2ZWQgbW9kZWwgYWdhaW47IE9ubHkgd29ya3MgaWYgdGhlIHNhdmVkIHBhdGgg aXMgdW5kZXIgdGhlIHNhbWUgZGlyZWN0b3J5Ci0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9t b2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAg ICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9s b2NhdGlvbiIpKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXko aW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKLS0KLS0gICAgICAg IGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50Ci0t ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFf bG9jYXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5 KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0gICAgZGVmIHRl c3Rfc2F2ZV9tb2RlbF93aXRoX2V4aXN0aW5nX3Jhd19kYXRhX3Nob3VsZF9vdmVycmlkZShzZWxm KSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2Rl bF9maWxlbmFtZSgpCi0tICAgICAgICBvcmlnaW5hbF9yYXdfZGF0YSA9IHNlbGYubW9kZWwuZ3Jh cGguaW5pdGlhbGl6ZXJbMF0ucmF3X2RhdGEKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKLS0g ICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwKLS0g ICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVf YXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0t ICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxf ZmlsZV9wYXRoKSkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKAotLSAgICAg ICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9l eHRlcm5hbF9kYXRhPUZhbHNlCi0tICAgICAgICApCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5z b3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVu c29yLnJhd19kYXRhID0gYiJkdW1tcHlfcmF3X2RhdGEiCi0tICAgICAgICAjIElmIHJhd19kYXRh IGFuZCBleHRlcm5hbCB0ZW5zb3IgZXhpc3QgYXQgdGhlIHNhbWUgdGltZSwgb3ZlcnJpZGUgZXhp c3RpbmcgcmF3X2RhdGEKLS0gICAgICAgIGxvYWRfZXh0ZXJuYWxfZGF0YV9mb3JfdGVuc29yKGlu aXRpYWxpemVyX3RlbnNvciwgc2VsZi50ZW1wX2RpcikKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwoaW5pdGlhbGl6ZXJfdGVuc29yLnJhd19kYXRhLCBvcmlnaW5hbF9yYXdfZGF0YSkKLS0KLS0K LS1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAotLSAgICBbCi0tICAgICAgICB7 InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVmIn0sCi0tICAgICAgICB7InNlcmlhbGl6 YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAotLSAgICBdCi0tKQotLWNsYXNzIFRlc3RFeHRl cm5hbERhdGFUb0FycmF5KHVuaXR0ZXN0LlRlc3RDYXNlKToKLS0gICAgc2VyaWFsaXphdGlvbl9m b3JtYXQ6IHN0ciA9ICJwcm90b2J1ZiIKLS0KLS0gICAgZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6 Ci0tICAgICAgICBzZWxmLl90ZW1wX2Rpcl9vYmogPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3Rv cnkoKQotLSAgICAgICAgc2VsZi50ZW1wX2Rpcjogc3RyID0gc2VsZi5fdGVtcF9kaXJfb2JqLm5h bWUKLS0gICAgICAgIHNlbGYuX21vZGVsX2ZpbGVfcGF0aDogc3RyID0gb3MucGF0aC5qb2luKHNl bGYudGVtcF9kaXIsICJtb2RlbC5vbm54IikKLS0gICAgICAgIHNlbGYubGFyZ2VfZGF0YSA9IG5w LnJhbmRvbS5yYW5kKDEwLCA2MCwgMTAwKS5hc3R5cGUobnAuZmxvYXQzMikKLS0gICAgICAgIHNl bGYuc21hbGxfZGF0YSA9ICgyMDAsIDMwMCkKLS0gICAgICAgIHNlbGYubW9kZWwgPSBzZWxmLmNy ZWF0ZV90ZXN0X21vZGVsKCkKLS0KLS0gICAgQHByb3BlcnR5Ci0tICAgIGRlZiBtb2RlbF9maWxl X3BhdGgoc2VsZik6Ci0tICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWxfZmlsZV9wYXRoCi0tCi0t ICAgIGRlZiB0ZWFyRG93bihzZWxmKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5fdGVtcF9kaXJf b2JqLmNsZWFudXAoKQotLQotLSAgICBkZWYgY3JlYXRlX3Rlc3RfbW9kZWwoc2VsZikgLT4gTW9k ZWxQcm90bzoKLS0gICAgICAgIFggPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIs IFRlbnNvclByb3RvLkZMT0FULCBzZWxmLmxhcmdlX2RhdGEuc2hhcGUpCi0tICAgICAgICBpbnB1 dF9pbml0ID0gaGVscGVyLm1ha2VfdGVuc29yKAotLSAgICAgICAgICAgIG5hbWU9IlgiLAotLSAg ICAgICAgICAgIGRhdGFfdHlwZT1UZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAgICBkaW1z PXNlbGYubGFyZ2VfZGF0YS5zaGFwZSwKLS0gICAgICAgICAgICB2YWxzPXNlbGYubGFyZ2VfZGF0 YS50b2J5dGVzKCksCi0tICAgICAgICAgICAgcmF3PVRydWUsCi0tICAgICAgICApCi0tCi0tICAg ICAgICBzaGFwZV9kYXRhID0gbnAuYXJyYXkoc2VsZi5zbWFsbF9kYXRhLCBucC5pbnQ2NCkKLS0g ICAgICAgIHNoYXBlX2luaXQgPSBoZWxwZXIubWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgbmFt ZT0iU2hhcGUiLAotLSAgICAgICAgICAgIGRhdGFfdHlwZT1UZW5zb3JQcm90by5JTlQ2NCwKLS0g ICAgICAgICAgICBkaW1zPXNoYXBlX2RhdGEuc2hhcGUsCi0tICAgICAgICAgICAgdmFscz1zaGFw ZV9kYXRhLnRvYnl0ZXMoKSwKLS0gICAgICAgICAgICByYXc9VHJ1ZSwKLS0gICAgICAgICkKLS0g ICAgICAgIEMgPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiQyIsIFRlbnNvclByb3Rv LklOVDY0LCBzZWxmLnNtYWxsX2RhdGEpCi0tCi0tICAgICAgICByZXNoYXBlID0gb25ueC5oZWxw ZXIubWFrZV9ub2RlKAotLSAgICAgICAgICAgICJSZXNoYXBlIiwKLS0gICAgICAgICAgICBpbnB1 dHM9WyJYIiwgIlNoYXBlIl0sCi0tICAgICAgICAgICAgb3V0cHV0cz1bIlkiXSwKLS0gICAgICAg ICkKLS0gICAgICAgIGNhc3QgPSBvbm54LmhlbHBlci5tYWtlX25vZGUoCi0tICAgICAgICAgICAg IkNhc3QiLCBpbnB1dHM9WyJZIl0sIG91dHB1dHM9WyJDIl0sIHRvPVRlbnNvclByb3RvLklOVDY0 Ci0tICAgICAgICApCi0tCi0tICAgICAgICBncmFwaF9kZWYgPSBoZWxwZXIubWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbcmVzaGFwZSwgY2FzdF0sCi0tICAgICAgICAgICAgInRlc3QtbW9kZWwi LAotLSAgICAgICAgICAgIFtYXSwKLS0gICAgICAgICAgICBbQ10sCi0tICAgICAgICAgICAgaW5p dGlhbGl6ZXI9W2lucHV0X2luaXQsIHNoYXBlX2luaXRdLAotLSAgICAgICAgKQotLSAgICAgICAg bW9kZWwgPSBoZWxwZXIubWFrZV9tb2RlbChncmFwaF9kZWYsIHByb2R1Y2VyX25hbWU9Im9ubngt ZXhhbXBsZSIpCi0tICAgICAgICByZXR1cm4gbW9kZWwKLS0KLS0gICAgQHVuaXR0ZXN0LnNraXBJ ZigKLS0gICAgICAgIHNlcmlhbGl6YXRpb25fZm9ybWF0ICE9ICJwcm90b2J1ZiIsCi0tICAgICAg ICAiY2hlY2tfbW9kZWwgc3VwcG9ydHMgcHJvdG9idWYgb25seSB3aGVuIHByb3ZpZGVkIGFzIGEg cGF0aCIsCi0tICAgICkKLS0gICAgZGVmIHRlc3RfY2hlY2tfbW9kZWwoc2VsZikgLT4gTm9uZToK LS0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwoc2VsZi5tb2RlbCkKLS0KLS0gICAgZGVmIHRl c3RfcmVzaGFwZV9pbmZlcmVuY2Vfd2l0aF9leHRlcm5hbF9kYXRhX2ZhaWwoc2VsZikgLT4gTm9u ZToKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsLAot LSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLAotLSAgICAgICAgICAgIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQsCi0tICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRy dWUsCi0tICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCi0tICAgICAg ICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAgICkKLS0gICAgICAgIG1vZGVsX3dpdGhv dXRfZXh0ZXJuYWxfZGF0YSA9IG9ubngubG9hZCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2Zp bGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZh bHNlCi0tICAgICAgICApCi0tICAgICAgICAjIFNoYXBlIGluZmVyZW5jZSBvZiBSZXNoYXBlIHVz ZXMgUGFyc2VEYXRhCi0tICAgICAgICAjIFBhcnNlRGF0YSBjYW5ub3QgaGFuZGxlIGV4dGVybmFs IGRhdGEgYW5kIHNob3VsZCB0aHJvdyB0aGUgZXJyb3IgYXMgZm9sbG93czoKLS0gICAgICAgICMg Q2Fubm90IHBhcnNlIGRhdGEgZnJvbSBleHRlcm5hbCB0ZW5zb3JzLiBQbGVhc2UgbG9hZCBleHRl cm5hbCBkYXRhIGludG8gcmF3IGRhdGEgZm9yIHRlbnNvcjogU2hhcGUKLS0gICAgICAgIHNlbGYu YXNzZXJ0UmFpc2VzKAotLSAgICAgICAgICAgIHNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJv ciwKLS0gICAgICAgICAgICBzaGFwZV9pbmZlcmVuY2UuaW5mZXJfc2hhcGVzLAotLSAgICAgICAg ICAgIG1vZGVsX3dpdGhvdXRfZXh0ZXJuYWxfZGF0YSwKLS0gICAgICAgICAgICBzdHJpY3RfbW9k ZT1UcnVlLAotLSAgICAgICAgKQotLQotLSAgICBkZWYgdGVzdF90b19hcnJheV93aXRoX2V4dGVy bmFsX2RhdGEoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKLS0gICAg ICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLAot LSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCi0tICAgICAgICAgICAgc2F2 ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCi0tICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25l X2ZpbGU9RmFsc2UsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAgICkK LS0gICAgICAgICMgcmF3X2RhdGEgb2YgZXh0ZXJuYWwgdGVuc29yIGlzIG5vdCBsb2FkZWQKLS0g ICAgICAgIG1vZGVsID0gb25ueC5sb2FkKAotLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9w YXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UK LS0gICAgICAgICkKLS0gICAgICAgICMgU3BlY2lmeSBzZWxmLnRlbXBfZGlyIHRvIGxvYWQgZXh0 ZXJuYWwgdGVuc29yCi0tICAgICAgICBsb2FkZWRfbGFyZ2VfZGF0YSA9IHRvX2FycmF5KG1vZGVs LmdyYXBoLmluaXRpYWxpemVyWzBdLCBzZWxmLnRlbXBfZGlyKQotLSAgICAgICAgbnAudGVzdGlu Zy5hc3NlcnRfYWxsY2xvc2UobG9hZGVkX2xhcmdlX2RhdGEsIHNlbGYubGFyZ2VfZGF0YSkKLS0K LS0gICAgZGVmIHRlc3Rfc2F2ZV9tb2RlbF93aXRoX2V4dGVybmFsX2RhdGFfbXVsdGlwbGVfdGlt ZXMoc2VsZikgLT4gTm9uZToKLS0gICAgICAgICMgVGVzdCBvbm54LnNhdmUgc2hvdWxkIHJlc3Bl Y3RpdmVseSBoYW5kbGUgdHlwaWNhbCB0ZW5zb3IgYW5kIGV4dGVybmFsIHRlbnNvciBwcm9wZXJs eQotLSAgICAgICAgIyAxc3Qgc2F2ZTogc2F2ZSB0d28gdGVuc29ycyB3aGljaCBoYXZlIHJhd19k YXRhCi0tICAgICAgICAjIE9ubHkgd19sYXJnZSB3aWxsIGJlIHN0b3JlZCBhcyBleHRlcm5hbCB0 ZW5zb3JzIHNpbmNlIGl0J3MgbGFyZ2VyIHRoYW4gMTAyNAotLSAgICAgICAgb25ueC5zYXZlX21v ZGVsKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAgICAgc2VsZi5tb2RlbF9m aWxlX3BhdGgsCi0tICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKLS0gICAg ICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKLS0gICAgICAgICAgICBhbGxfdGVu c29yc190b19vbmVfZmlsZT1GYWxzZSwKLS0gICAgICAgICAgICBsb2NhdGlvbj1Ob25lLAotLSAg ICAgICAgICAgIHNpemVfdGhyZXNob2xkPTEwMjQsCi0tICAgICAgICAgICAgY29udmVydF9hdHRy aWJ1dGU9VHJ1ZSwKLS0gICAgICAgICkKLS0gICAgICAgIG1vZGVsX3dpdGhvdXRfbG9hZGluZ19l eHRlcm5hbCA9IG9ubngubG9hZCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwg c2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCi0tICAg ICAgICApCi0tICAgICAgICBsYXJnZV9pbnB1dF90ZW5zb3IgPSBtb2RlbF93aXRob3V0X2xvYWRp bmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShsYXJnZV9pbnB1dF90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0gICAgICAg IG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAotLSAgICAgICAgICAgIHRvX2FycmF5KGxhcmdl X2lucHV0X3RlbnNvciwgc2VsZi50ZW1wX2RpciksIHNlbGYubGFyZ2VfZGF0YQotLSAgICAgICAg KQotLQotLSAgICAgICAgc21hbGxfc2hhcGVfdGVuc29yID0gbW9kZWxfd2l0aG91dF9sb2FkaW5n X2V4dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzFdCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUo bm90IHNtYWxsX3NoYXBlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoc21hbGxfc2hhcGVfdGVuc29y KSwgc2VsZi5zbWFsbF9kYXRhKQotLQotLSAgICAgICAgIyAybmQgc2F2ZTogb25lIHRlbnNvciBo YXMgcmF3X2RhdGEgKHNtYWxsKTsgb25lIGV4dGVybmFsIHRlbnNvciAobGFyZ2UpCi0tICAgICAg ICAjIFNhdmUgdGhlbSBib3RoIGFzIGV4dGVybmFsIHRlbnNvcnMgdGhpcyB0aW1lCi0tICAgICAg ICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAgbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4 dGVybmFsLAotLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLAotLSAgICAgICAgICAg IHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCi0tICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5h bF9kYXRhPVRydWUsCi0tICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2Us Ci0tICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9s ZD0wLAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPVRydWUsCi0tICAgICAgICApCi0t Ci0tICAgICAgICBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwgPSBvbm54LmxvYWQoCi0t ICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAgICAgICAgKQotLSAgICAgICAgbGFyZ2Vf aW5wdXRfdGVuc29yID0gbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLmdyYXBoLmluaXRp YWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUobGFyZ2VfaW5wdXRfdGVuc29yLkhh c0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxj bG9zZSgKLS0gICAgICAgICAgICB0b19hcnJheShsYXJnZV9pbnB1dF90ZW5zb3IsIHNlbGYudGVt cF9kaXIpLCBzZWxmLmxhcmdlX2RhdGEKLS0gICAgICAgICkKLS0KLS0gICAgICAgIHNtYWxsX3No YXBlX3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbC5ncmFwaC5pbml0aWFs aXplclsxXQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNtYWxsX3NoYXBlX3RlbnNvci5IYXNG aWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xv c2UoCi0tICAgICAgICAgICAgdG9fYXJyYXkoc21hbGxfc2hhcGVfdGVuc29yLCBzZWxmLnRlbXBf ZGlyKSwgc2VsZi5zbWFsbF9kYXRhCi0tICAgICAgICApCi0tCi0tCi0gY2xhc3MgVGVzdE5vdEFs bG93VG9Mb2FkRXh0ZXJuYWxEYXRhT3V0c2lkZU1vZGVsRGlyZWN0b3J5KFRlc3RMb2FkRXh0ZXJu YWxEYXRhQmFzZSk6Ci0gICAgICIiIkVzc2VudGlhbCB0ZXN0IHRvIGNoZWNrIHRoYXQgb25ueCAo dmFsaWRhdGUpIEMrKyBjb2RlIHdpbGwgbm90IGFsbG93IHRvIGxvYWQgZXh0ZXJuYWxfZGF0YSBv dXRzaWRlIHRoZSBtb2RlbAotICAgICBkaXJlY3RvcnkuCi1AQCAtNzkxLDE3ICsxNzUsNiBAQCBj bGFzcyBUZXN0Tm90QWxsb3dUb0xvYWRFeHRlcm5hbERhdGFPdXRzaWRlTW9kZWxEaXJlY3RvcnlP bldpbmRvd3MoCi0gICAgICAgICAgICAgY2hlY2tlci5jaGVja19tb2RlbChzZWxmLm1vZGVsX2Zp bGVuYW1lKQotIAotIAotLWNsYXNzIFRlc3RTYXZlQWxsVGVuc29yc0FzRXh0ZXJuYWxEYXRhV2l0 aFBhdGgoVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRlcm5hbERhdGEpOgotLSAgICBkZWYgZ2V0X3Rl bXBfbW9kZWxfZmlsZW5hbWUoc2VsZikgLT4gcGF0aGxpYi5QYXRoOgotLSAgICAgICAgcmV0dXJu IHBhdGhsaWIuUGF0aChzdXBlcigpLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkpCi0tCi0tCi0t Y2xhc3MgVGVzdEV4dGVybmFsRGF0YVRvQXJyYXlXaXRoUGF0aChUZXN0RXh0ZXJuYWxEYXRhVG9B cnJheSk6Ci0tICAgIEBwcm9wZXJ0eQotLSAgICBkZWYgbW9kZWxfZmlsZV9wYXRoKHNlbGYpIC0+ IHBhdGhsaWIuUGF0aDoKLS0gICAgICAgIHJldHVybiBwYXRobGliLlBhdGgoc2VsZi5fbW9kZWxf ZmlsZV9wYXRoKQotLQotLQotIGNsYXNzIFRlc3RGdW5jdGlvbnNBbmRTdWJHcmFwaHModW5pdHRl c3QuVGVzdENhc2UpOgotICAgICBkZWYgc2V0VXAoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIHNl bGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCi1kaWZmIC0t Z2l0IGEvb25ueC90ZXN0L3Rvb2xzX3Rlc3QucHkgYi9vbm54L3Rlc3QvdG9vbHNfdGVzdC5weQot aW5kZXggZmQ0NDEzNzg2Li5mODQzYzFmYmMgMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3QvdG9vbHNf dGVzdC5weQotKysrIGIvb25ueC90ZXN0L3Rvb2xzX3Rlc3QucHkKLUBAIC0xMTIsMzIgKzExMiw2 IEBAIGNsYXNzIFRlc3RUb29sc0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAg ICB5MiA9IG9pbmYyLnJ1bihOb25lLCB7IlgiOiB4fSlbMF0gICMgdHlwZTogaWdub3JlW2luZGV4 XQotICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKHkxLCB5MikKLSAKLS0gICAgZGVmIHRlc3RfcmVw bGFjZV9yYW5nZShzZWxmKToKLS0gICAgICAgIGR0eXBlID0gbnAuZmxvYXQzMgotLSAgICAgICAg dmFsdWUgPSBucC5yYW5kb20ucmFuZG4oMiwgMTAwKS5hc3R5cGUoZHR5cGUpCi0tICAgICAgICBB ID0gbnVtcHlfaGVscGVyLmZyb21fYXJyYXkodmFsdWUsIG5hbWU9IkEiKQotLSAgICAgICAgdmFs dWUgPSBucC5hcnJheShbMV0sIGR0eXBlPWR0eXBlKQotLSAgICAgICAgQyA9IG51bXB5X2hlbHBl ci5mcm9tX2FycmF5KHZhbHVlLCBuYW1lPSJDIikKLS0KLS0gICAgICAgIFggPSBoZWxwZXIubWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZSwgTm9uZV0p Ci0tICAgICAgICBZID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQ cm90by5GTE9BVCwgW05vbmVdKQotLSAgICAgICAgbm9kZTAgPSBoZWxwZXIubWFrZV9ub2RlKCJD b25zdGFudCIsIFtdLCBbIkEiXSwgdmFsdWU9QSkKLS0gICAgICAgIG5vZGUxID0gaGVscGVyLm1h a2Vfbm9kZSgiTWF0TXVsIiwgWyJYIiwgIkEiXSwgWyJBWCJdKQotLSAgICAgICAgbm9kZTIgPSBo ZWxwZXIubWFrZV9ub2RlKCJTdWIiLCBbIkFYIiwgIkMiXSwgWyJZIl0pCi0tICAgICAgICBncmFw aCA9IGhlbHBlci5tYWtlX2dyYXBoKFtub2RlMCwgbm9kZTEsIG5vZGUyXSwgImxyIiwgW1hdLCBb WV0sIFtDXSkKLS0gICAgICAgIG1vZGVsX2RlZiA9IGhlbHBlci5tYWtlX21vZGVsKGdyYXBoKQot LQotLSAgICAgICAgeCA9IG5wLmFycmF5KFsxLCAyLCA0LCA1LCA1LCA0XSkuYXN0eXBlKG5wLmZs b2F0MzIpLnJlc2hhcGUoKDMsIDIpKQotLSAgICAgICAgb2luZjEgPSBSZWZlcmVuY2VFdmFsdWF0 b3IobW9kZWxfZGVmKQotLSAgICAgICAgeTEgPSBvaW5mMS5ydW4oTm9uZSwgeyJYIjogeH0pWzBd ICAjIHR5cGU6IGlnbm9yZVtpbmRleF0KLS0gICAgICAgIHJlcGwgPSByZXBsYWNlX2luaXRpYWxp emVyX2J5X2NvbnN0YW50X29mX3NoYXBlKG1vZGVsX2RlZiwgdXNlX3JhbmdlPVRydWUpCi0tICAg ICAgICBub2RlX3R5cGVzID0ge24ub3BfdHlwZSBmb3IgbiBpbiByZXBsLmdyYXBoLm5vZGV9Ci0t ICAgICAgICBzZWxmLmFzc2VydEluKCJSYW5nZSIsIG5vZGVfdHlwZXMpCi0tICAgICAgICBzZWxm LmFzc2VydE5vdEluKCJDb25zdGFudE9mU2hhcGUiLCBub2RlX3R5cGVzKQotLSAgICAgICAgb2lu ZjIgPSBSZWZlcmVuY2VFdmFsdWF0b3IocmVwbCkKLS0gICAgICAgIHkyID0gb2luZjIucnVuKE5v bmUsIHsiWCI6IHh9KVswXSAgIyB0eXBlOiBpZ25vcmVbaW5kZXhdCi0tICAgICAgICBhc3NlcnRf YWxsY2xvc2UoeTEuc2hhcGUsIHkyLnNoYXBlKQotLQotICAgICBkZWYgdGVzdF9yZXBsYWNlX2Nv bnN0YW50X2Z1bmN0aW9uKHNlbGYpOgotICAgICAgICAgZHR5cGUgPSBucC5mbG9hdDMyCi0gICAg ICAgICB2YWx1ZSA9IG5wLnJhbmRvbS5yYW5kbigyLCAxMDApLmFzdHlwZShkdHlwZSkKLUBAIC0x ODIsNDkgKzE1Niw2IEBAIGNsYXNzIFRlc3RUb29sc0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2Fz ZSk6Ci0gICAgICAgICB5MiA9IG9pbmYyLnJ1bihOb25lLCB7IlgiOiB4fSlbMF0gICMgdHlwZTog aWdub3JlW2luZGV4XQotICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKHkxLCB5MikKLSAKLS0gICAg ZGVmIHRlc3RfcmVwbGFjZV9yYW5nZV9mdW5jdGlvbihzZWxmKToKLS0gICAgICAgIGR0eXBlID0g bnAuZmxvYXQzMgotLSAgICAgICAgdmFsdWUgPSBucC5yYW5kb20ucmFuZG4oMiwgMTAwKS5hc3R5 cGUoZHR5cGUpCi0tICAgICAgICBBID0gbnVtcHlfaGVscGVyLmZyb21fYXJyYXkodmFsdWUsIG5h bWU9IkEiKQotLSAgICAgICAgdmFsdWUgPSBucC5hcnJheShbMV0sIGR0eXBlPWR0eXBlKQotLSAg ICAgICAgQyA9IG51bXB5X2hlbHBlci5mcm9tX2FycmF5KHZhbHVlLCBuYW1lPSJDIikKLS0KLS0g ICAgICAgIFggPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3Rv LkZMT0FULCBbTm9uZSwgTm9uZV0pCi0tICAgICAgICBZID0gaGVscGVyLm1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgW05vbmVdKQotLSAgICAgICAgbm9kZUMg PSBoZWxwZXIubWFrZV9ub2RlKCJDb25zdGFudCIsIFtdLCBbIkMiXSwgdmFsdWU9QykKLS0gICAg ICAgIG5vZGUwID0gaGVscGVyLm1ha2Vfbm9kZSgiQ29uc3RhbnQiLCBbXSwgWyJBIl0sIHZhbHVl PUEpCi0tICAgICAgICBub2RlMSA9IGhlbHBlci5tYWtlX25vZGUoIk1hdE11bCIsIFsiWCIsICJB Il0sIFsiQVgiXSkKLS0gICAgICAgIG5vZGUyID0gaGVscGVyLm1ha2Vfbm9kZSgiU3ViIiwgWyJB WCIsICJDIl0sIFsiWSJdKQotLSAgICAgICAgb3BzZXRfaW1wb3J0cyA9IFsKLS0gICAgICAgICAg ICBoZWxwZXIubWFrZV9vcHNldGlkKCIiLCBvbm54X29wc2V0X3ZlcnNpb24oKSksCi0tICAgICAg ICAgICAgaGVscGVyLm1ha2Vfb3BzZXRpZCgiY3VzdG9tIiwgMSksCi0tICAgICAgICBdCi0tICAg ICAgICBmY3QgPSBoZWxwZXIubWFrZV9mdW5jdGlvbigKLS0gICAgICAgICAgICAiY3VzdG9tIiwK LS0gICAgICAgICAgICAidW5pdHRlc3QiLAotLSAgICAgICAgICAgIFsiWCJdLAotLSAgICAgICAg ICAgIFsiWSJdLAotLSAgICAgICAgICAgIFtub2RlQywgbm9kZTAsIG5vZGUxLCBub2RlMl0sCi0t ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cywKLS0gICAgICAgICkKLS0KLS0gICAgICAgIG5vZGUg PSBoZWxwZXIubWFrZV9ub2RlKCJ1bml0dGVzdCIsIFsiWCJdLCBbIlkiXSwgZG9tYWluPSJjdXN0 b20iKQotLSAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9ncmFwaChbbm9kZV0sICJsciIsIFtY XSwgW1ldLCBbQ10pCi0tICAgICAgICBtb2RlbF9kZWYgPSBoZWxwZXIubWFrZV9tb2RlbCgKLS0g ICAgICAgICAgICBncmFwaCwgZnVuY3Rpb25zPVtmY3RdLCBvcHNldF9pbXBvcnRzPW9wc2V0X2lt cG9ydHMKLS0gICAgICAgICkKLS0KLS0gICAgICAgIHggPSBucC5hcnJheShbMSwgMiwgNCwgNSwg NSwgNF0pLmFzdHlwZShucC5mbG9hdDMyKS5yZXNoYXBlKCgzLCAyKSkKLS0gICAgICAgIG9pbmYx ID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsX2RlZikKLS0gICAgICAgIHkxID0gb2luZjEucnVu KE5vbmUsIHsiWCI6IHh9KVswXSAgIyB0eXBlOiBpZ25vcmVbaW5kZXhdCi0tICAgICAgICByZXBs ID0gcmVwbGFjZV9pbml0aWFsaXplcl9ieV9jb25zdGFudF9vZl9zaGFwZShtb2RlbF9kZWYsIHVz ZV9yYW5nZT1UcnVlKQotLSAgICAgICAgbm9kZV90eXBlcyA9IHtuLm9wX3R5cGUgZm9yIG4gaW4g cmVwbC5mdW5jdGlvbnNbMF0ubm9kZX0KLS0gICAgICAgIHNlbGYuYXNzZXJ0SW4oIlJhbmdlIiwg bm9kZV90eXBlcykKLS0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIkNvbnN0YW50T2ZTaGFwZSIs IG5vZGVfdHlwZXMpCi0tICAgICAgICBvaW5mMiA9IFJlZmVyZW5jZUV2YWx1YXRvcihyZXBsKQot LSAgICAgICAgeTIgPSBvaW5mMi5ydW4oTm9uZSwgeyJYIjogeH0pWzBdICAjIHR5cGU6IGlnbm9y ZVtpbmRleF0KLS0gICAgICAgIGFzc2VydF9hbGxjbG9zZSh5MS5zaGFwZSwgeTIuc2hhcGUpCi0t Ci0gICAgIGRlZiB0ZXN0X3JlcGxhY2VfY29uc3RhbnRfZ3JhcGgoc2VsZik6Ci0gICAgICAgICB2 YWx1ZSA9IG5wLmFycmF5KFswXSwgZHR5cGU9bnAuZmxvYXQzMikKLSAgICAgICAgIHplcm8gPSBu dW1weV9oZWxwZXIuZnJvbV9hcnJheSh2YWx1ZSwgbmFtZT0iemVybyIpCi1AQCAtMjc0LDU0ICsy MDUsNiBAQCBjbGFzcyBUZXN0VG9vbHNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgotICAg ICAgICAgeTFbOl0gPSAwLjUKLSAgICAgICAgIGFzc2VydF9hbGxjbG9zZSh5MSwgeTIpCi0gCi0t ICAgIGRlZiB0ZXN0X3JlcGxhY2VfcmFuZ2VfZ3JhcGgoc2VsZik6Ci0tICAgICAgICB2YWx1ZSA9 IG5wLmFycmF5KFswXSwgZHR5cGU9bnAuZmxvYXQzMikKLS0gICAgICAgIHplcm8gPSBudW1weV9o ZWxwZXIuZnJvbV9hcnJheSh2YWx1ZSwgbmFtZT0iemVybyIpCi0tCi0tICAgICAgICBYID0gaGVs cGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBvbm54LlRlbnNvclByb3RvLkZMT0FULCBb Tm9uZSwgTm9uZV0pCi0tICAgICAgICBZID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlkiLCBvbm54LlRlbnNvclByb3RvLkZMT0FULCBbTm9uZV0pCi0tCi0tICAgICAgICByc3VtID0g aGVscGVyLm1ha2Vfbm9kZSgiUmVkdWNlU3VtIiwgWyJYIl0sIFsicnN1bSJdKQotLSAgICAgICAg Y29uZCA9IGhlbHBlci5tYWtlX25vZGUoIkdyZWF0ZXIiLCBbInJzdW0iLCAiemVybyJdLCBbImNv bmQiXSkKLS0KLS0gICAgICAgIHRoZW5fb3V0ID0gaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oCi0tICAgICAgICAgICAgInRoZW5fb3V0Iiwgb25ueC5UZW5zb3JQcm90by5GTE9BVCwgTm9u ZQotLSAgICAgICAgKQotLSAgICAgICAgdGhlbl9jc3QgPSBudW1weV9oZWxwZXIuZnJvbV9hcnJh eShucC5hcnJheShbMV0gKiAxMjkpLmFzdHlwZShucC5mbG9hdDMyKSkKLS0KLS0gICAgICAgIHRo ZW5fY29uc3Rfbm9kZSA9IGhlbHBlci5tYWtlX25vZGUoCi0tICAgICAgICAgICAgIkNvbnN0YW50 IiwgaW5wdXRzPVtdLCBvdXRwdXRzPVsidGhlbl9vdXQiXSwgdmFsdWU9dGhlbl9jc3QsIG5hbWU9 ImNzdDEiCi0tICAgICAgICApCi0tICAgICAgICB0aGVuX2JvZHkgPSBoZWxwZXIubWFrZV9ncmFw aChbdGhlbl9jb25zdF9ub2RlXSwgInRoZW5fYm9keSIsIFtdLCBbdGhlbl9vdXRdKQotLQotLSAg ICAgICAgZWxzZV9vdXQgPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKLS0gICAgICAg ICAgICAiZWxzZV9vdXQiLCBvbm54LlRlbnNvclByb3RvLkZMT0FULCBOb25lCi0tICAgICAgICAp Ci0tICAgICAgICBlbHNlX2NzdCA9IG51bXB5X2hlbHBlci5mcm9tX2FycmF5KG5wLmFycmF5KFst MV0gKiAxMjkpLmFzdHlwZShucC5mbG9hdDMyKSkKLS0gICAgICAgIGVsc2VfY29uc3Rfbm9kZSA9 IGhlbHBlci5tYWtlX25vZGUoCi0tICAgICAgICAgICAgIkNvbnN0YW50IiwgaW5wdXRzPVtdLCBv dXRwdXRzPVsiZWxzZV9vdXQiXSwgdmFsdWU9ZWxzZV9jc3QsIG5hbWU9ImNzdDIiCi0tICAgICAg ICApCi0tICAgICAgICBlbHNlX2JvZHkgPSBoZWxwZXIubWFrZV9ncmFwaChbZWxzZV9jb25zdF9u b2RlXSwgImVsc2VfYm9keSIsIFtdLCBbZWxzZV9vdXRdKQotLQotLSAgICAgICAgaWZfbm9kZSA9 IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAiSWYiLCBbImNvbmQiXSwgWyJZ Il0sIHRoZW5fYnJhbmNoPXRoZW5fYm9keSwgZWxzZV9icmFuY2g9ZWxzZV9ib2R5Ci0tICAgICAg ICApCi0tICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtlX2dyYXBoKFtyc3VtLCBjb25kLCBpZl9u b2RlXSwgImlmIiwgW1hdLCBbWV0sIFt6ZXJvXSkKLS0gICAgICAgIG9ubnhfbW9kZWwgPSBoZWxw ZXIubWFrZV9tb2RlbCgKLS0gICAgICAgICAgICBncmFwaCwgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZCgiIiwgb25ueF9vcHNldF92ZXJzaW9uKCkpXQotLSAgICAgICAgKQotLSAg ICAgICAgc2VsZi5hc3NlcnROb3RJbigiQ29uc3RhbnRPZlNoYXBlIiwgc3RyKG9ubnhfbW9kZWwp KQotLQotLSAgICAgICAgeCA9IG5wLm9uZXMoKDMsIDIpLCBkdHlwZT1ucC5mbG9hdDMyKQotLSAg ICAgICAgb2luZjEgPSBSZWZlcmVuY2VFdmFsdWF0b3Iob25ueF9tb2RlbCkKLS0gICAgICAgIHkx ID0gb2luZjEucnVuKE5vbmUsIHsiWCI6IHh9KVswXSAgIyB0eXBlOiBpZ25vcmVbaW5kZXhdCi0t ICAgICAgICByZXBsID0gcmVwbGFjZV9pbml0aWFsaXplcl9ieV9jb25zdGFudF9vZl9zaGFwZShv bm54X21vZGVsLCB1c2VfcmFuZ2U9VHJ1ZSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIkNv bnN0YW50T2ZTaGFwZSIsIHN0cihyZXBsKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0SW4oIlJhbmdl Iiwgc3RyKHJlcGwpKQotLSAgICAgICAgb2luZjIgPSBSZWZlcmVuY2VFdmFsdWF0b3IocmVwbCkK LS0gICAgICAgIHkyID0gb2luZjIucnVuKE5vbmUsIHsiWCI6IHh9KVswXSAgIyB0eXBlOiBpZ25v cmVbaW5kZXhdCi0tICAgICAgICBhc3NlcnRfYWxsY2xvc2UoeTEuc2hhcGUsIHkyLnNoYXBlKQot LQotIAotIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIHVuaXR0ZXN0Lm1haW4odmVy Ym9zaXR5PTIpCi1kaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyL2F1dG9t YXRpY19kb3duZ3JhZGVfdGVzdC5weSBiL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlci9hdXRv bWF0aWNfZG93bmdyYWRlX3Rlc3QucHkKLWluZGV4IGE5NGFlYTFhOS4uZjYzOWQ0NGY4IDEwMDY0 NAotLS0tIGEvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyL2F1dG9tYXRpY19kb3duZ3JhZGVf dGVzdC5weQotKysrIGIvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyL2F1dG9tYXRpY19kb3du Z3JhZGVfdGVzdC5weQotQEAgLTcsNyArNyw2IEBAIGltcG9ydCB1bml0dGVzdAotIAotIGltcG9y dCBhdXRvbWF0aWNfY29udmVyc2lvbl90ZXN0X2Jhc2UKLSBpbXBvcnQgbnVtcHkgYXMgbnAKLS1p bXBvcnQgcGFyYW1ldGVyaXplZAotIAotIGltcG9ydCBvbm54Ci0gZnJvbSBvbm54IGltcG9ydCBo ZWxwZXIKLUBAIC0yMiwzNSArMjEsNiBAQCBjbGFzcyBUZXN0QXV0b21hdGljRG93bmdyYWRlKGF1 dG9tYXRpY19jb252ZXJzaW9uX3Rlc3RfYmFzZS5UZXN0QXV0b21hdGljQ29udmVycwotICAgICBk ZWYgX3Rlc3Rfb3BfZG93bmdyYWRlKHNlbGYsIG9wOiBzdHIsICphcmdzLCAqKmt3YXJncyk6Ci0g ICAgICAgICBzZWxmLl90ZXN0X29wX2NvbnZlcnNpb24ob3AsICphcmdzLCAqKmt3YXJncywgaXNf dXBncmFkZT1GYWxzZSkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBh bmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgIlJlZHVjZUwxIiwKLS0gICAgICAgICAgICAi UmVkdWNlTDIiLAotLSAgICAgICAgICAgICJSZWR1Y2VMb2dTdW0iLAotLSAgICAgICAgICAgICJS ZWR1Y2VMb2dTdW1FeHAiLAotLSAgICAgICAgICAgICJSZWR1Y2VNZWFuIiwKLS0gICAgICAgICAg ICAiUmVkdWNlTWF4IiwKLS0gICAgICAgICAgICAiUmVkdWNlTWluIiwKLS0gICAgICAgICAgICAi UmVkdWNlUHJvZCIsCi0tICAgICAgICAgICAgIlJlZHVjZVN1bSIsCi0tICAgICAgICAgICAgIlJl ZHVjZVN1bVNxdWFyZSIsCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfcmVkdWNl X29wcyhzZWxmLCBvcCkgLT4gTm9uZToKLS0gICAgICAgICMgVE9ETzogbmVlZCB0byBhZGQgdGVz dCBjYXNlcyBmb3IgbWlzc2luZyBheGVzIGlucHV0IHdoaWNoIGRlcGVuZHMgb24gdGhpcyBwcjoK LS0gICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL29ubngvb25ueC9wdWxsLzU2MTMKLS0gICAg ICAgIGF4ZXMgPSBoZWxwZXIubWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgImIiLCBvbm54LlRl bnNvclByb3RvLklOVDY0LCBkaW1zPVszXSwgdmFscz1ucC5hcnJheShbMCwgMSwgMl0pCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl90ZXN0X29wX2Rvd25ncmFkZSgKLS0gICAgICAgICAgICBv cCwKLS0gICAgICAgICAgICBmcm9tX29wc2V0PTEzLAotLSAgICAgICAgICAgIGlucHV0X3NoYXBl cz1bWzMsIDQsIDVdLCBbM11dLAotLSAgICAgICAgICAgIG91dHB1dF9zaGFwZXM9W1sxLCAxLCAx XV0sCi0tICAgICAgICAgICAgaW5wdXRfdHlwZXM9W29ubnguVGVuc29yUHJvdG8uRkxPQVQsIG9u bnguVGVuc29yUHJvdG8uSU5UNjRdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVtheGVzXSwK LS0gICAgICAgICkKLS0KLSAgICAgZGVmIHRlc3RfZGZ0MjBfbm9fYXhpcyhzZWxmKSAtPiBOb25l OgotICAgICAgICAgc2VsZi5fdGVzdF9tb2RlbF9jb252ZXJzaW9uKAotICAgICAgICAgICAgIHRv X29wc2V0PTE5LAotZGlmZiAtLWdpdCBhL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0 LnB5IGIvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyX3Rlc3QucHkKLWluZGV4IDE3OTBlNTk5 Ny4uNGE0YzI3NzY2IDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyX3Rl c3QucHkKLSsrKyBiL29ubngvdGVzdC92ZXJzaW9uX2NvbnZlcnRlcl90ZXN0LnB5Ci1AQCAtOCw3 ICs4LDYgQEAgaW1wb3J0IHN0cnVjdAotIGltcG9ydCB1bml0dGVzdAotIAotIGltcG9ydCBudW1w eSBhcyBucAotLWltcG9ydCBwYXJhbWV0ZXJpemVkCi0gCi0gaW1wb3J0IG9ubngudmVyc2lvbl9j b252ZXJ0ZXIKLSBmcm9tIG9ubnggaW1wb3J0ICgKLUBAIC0yMDA2LDE2OSArMjAwNSw2IEBAIGNs YXNzIFRlc3RWZXJzaW9uQ29udmVydGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIGFz c2VydCBjb252ZXJ0ZWRfbW9kZWwuZ3JhcGgubm9kZVszXS5vcF90eXBlID09ICJSZXNoYXBlIgot ICAgICAgICAgYXNzZXJ0IGNvbnZlcnRlZF9tb2RlbC5vcHNldF9pbXBvcnRbMF0udmVyc2lvbiA9 PSAxMwotIAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAg ICAgIFsKLS0gICAgICAgICAgICAoInBlcl90ZW5zb3IiLCAoMTYsIDMpLCAoMSwpLCBOb25lLCBO b25lLCBOb25lLCBUZW5zb3JQcm90by5JTlQ4LCBUcnVlKSwKLS0gICAgICAgICAgICAoCi0tICAg ICAgICAgICAgICAgICJwZXJfYXhpc19ub25lX2Jsb2NrX3NoYXBlIiwKLS0gICAgICAgICAgICAg ICAgKDE2LCAzKSwKLS0gICAgICAgICAgICAgICAgKDE2LCksCi0tICAgICAgICAgICAgICAgIDEs Ci0tICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAg ICAgICAgICAgIFRlbnNvclByb3RvLklOVDgsCi0tICAgICAgICAgICAgICAgIFRydWUsCi0tICAg ICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICJwZXJfYXhpc196 ZXJvX2Jsb2NrX3NoYXBlIiwKLS0gICAgICAgICAgICAgICAgKDE2LCAzKSwKLS0gICAgICAgICAg ICAgICAgKDE2LCksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIDAsCi0t ICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDgs Ci0tICAgICAgICAgICAgICAgIFRydWUsCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAo Ci0tICAgICAgICAgICAgICAgICJwZXJfdGVuc29yX3Bvc2l0aXZlX2Jsb2NrX3NoYXBlIiwKLS0g ICAgICAgICAgICAgICAgKDE2LCAzKSwKLS0gICAgICAgICAgICAgICAgKDEsKSwKLS0gICAgICAg ICAgICAgICAgMSwKLS0gICAgICAgICAgICAgICAgMiwKLS0gICAgICAgICAgICAgICAgTm9uZSwK LS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwKLS0gICAgICAgICAgICAgICAgRmFs c2UsCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICJw ZXJfYXhpc19wb3NpdGl2ZV9ibG9ja19zaGFwZSIsCi0tICAgICAgICAgICAgICAgICgxNiwgMyks Ci0tICAgICAgICAgICAgICAgICgxNiwpLAotLSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAg ICAgICAgICAyLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBUZW5z b3JQcm90by5JTlQ4LAotLSAgICAgICAgICAgICAgICBGYWxzZSwKLS0gICAgICAgICAgICApLAot LSAgICAgICAgICAgICgiYmxvY2tlZF8yZCIsICgxNiwgMyksICg0LCAzKSwgMCwgNCwgTm9uZSwg VGVuc29yUHJvdG8uSU5UOCwgRmFsc2UpLAotLSAgICAgICAgICAgICgiYmxvY2tlZF8zZCIsICg0 LCAzLCAzMiksICg0LCAzLCA4KSwgMiwgNCwgTm9uZSwgVGVuc29yUHJvdG8uSU5UOCwgRmFsc2Up LAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgInBlcl9heGlzX291dHB1dF9kdHlw ZSIsCi0tICAgICAgICAgICAgICAgICgxNiwgMyksCi0tICAgICAgICAgICAgICAgICgxNiwpLAot LSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAg ICAgICBUZW5zb3JQcm90by5GTE9BVDhFNE0zRk4sCi0tICAgICAgICAgICAgICAgIE5vbmUsCi0t ICAgICAgICAgICAgICAgIEZhbHNlLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAot LSAgICAgICAgICAgICAgICAicGVyX2F4aXNfdW5zdXBwb3J0ZWRfdHlwZSIsCi0tICAgICAgICAg ICAgICAgICgxNiwgMyksCi0tICAgICAgICAgICAgICAgICgxNiwpLAotLSAgICAgICAgICAgICAg ICAxLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAg ICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UMTYsCi0tICAgICAgICAgICAgICAgIEZhbHNl LAotLSAgICAgICAgICAgICksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfcXVh bnRpemVfMjFfMjAoCi0tICAgICAgICBzZWxmLAotLSAgICAgICAgXzogc3RyLAotLSAgICAgICAg eF9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAotLSAgICAgICAgc2NhbGVfc2hhcGU6IHR1cGxlW2lu dCwgLi4uXSwKLS0gICAgICAgIGF4aXM6IGludCwKLS0gICAgICAgIGJsb2NrX3NpemU6IGludCwK LS0gICAgICAgIG91dHB1dF9kdHlwZTogaW50IHwgTm9uZSwKLS0gICAgICAgIHplcm9fcG9pbnRf ZHR5cGU6IGludCB8IE5vbmUsCi0tICAgICAgICBjb21wYXRpYmxlOiBib29sLAotLSAgICApIC0+ IE5vbmU6Ci0tICAgICAgICBkZWYgdGVzdCgKLS0gICAgICAgICAgICBpbnB1dF9zaGFwZSwgc2Nh bGVfc2hhcGUsIGF4aXMsIGJsb2NrX3NpemUsIG91dHB1dF9kdHlwZSwgemVyb19wb2ludF9kdHlw ZQotLSAgICAgICAgKSAtPiBOb25lOgotLSAgICAgICAgICAgIG5vZGVzID0gWwotLSAgICAgICAg ICAgICAgICBoZWxwZXIubWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIlF1YW50aXpl TGluZWFyIiwKLS0gICAgICAgICAgICAgICAgICAgIFsiWCIsICJTIl0sCi0tICAgICAgICAgICAg ICAgICAgICBbIlkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGF4aXM9YXhpcywKLS0gICAgICAg ICAgICAgICAgICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6ZSwKLS0gICAgICAgICAgICAgICAgICAg IG91dHB1dF9kdHlwZT1vdXRwdXRfZHR5cGUsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAg ICAgICBdCi0tICAgICAgICAgICAgaW5wdXRzID0gWwotLSAgICAgICAgICAgICAgICBoZWxwZXIu bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBpbnB1dF9zaGFw ZSksCi0tICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJTIiwg VGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX3NoYXBlKSwKLS0gICAgICAgICAgICBdCi0tICAgICAg ICAgICAgaWYgemVyb19wb2ludF9kdHlwZToKLS0gICAgICAgICAgICAgICAgaW5wdXRzLmFwcGVu ZCgKLS0gICAgICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJa UCIsIHplcm9fcG9pbnRfZHR5cGUsIHNjYWxlX3NoYXBlKQotLSAgICAgICAgICAgICAgICApCi0t ICAgICAgICAgICAgICAgIG5vZGVzWzBdLmlucHV0LmFwcGVuZCgiWlAiKQotLSAgICAgICAgICAg IG91dHB1dF90eXBlXyA9IG91dHB1dF9kdHlwZSBvciB6ZXJvX3BvaW50X2R0eXBlCi0tICAgICAg ICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgbm9kZXMs Ci0tICAgICAgICAgICAgICAgICJ0ZXN0IiwKLS0gICAgICAgICAgICAgICAgaW5wdXRzLAotLSAg ICAgICAgICAgICAgICBbaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBvdXRwdXRf dHlwZV8sIGlucHV0X3NoYXBlKV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF8gPSBz ZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0aWQoIiIsIDIxKSwg MjApCi0tCi0tICAgICAgICBjb250ZXh0X21hbmFnZXIgPSAoCi0tICAgICAgICAgICAgY29udGV4 dGxpYi5udWxsY29udGV4dCgpIGlmIGNvbXBhdGlibGUgZWxzZSBzZWxmLmFzc2VydFJhaXNlcyhS dW50aW1lRXJyb3IpCi0tICAgICAgICApCi0tICAgICAgICB3aXRoIGNvbnRleHRfbWFuYWdlcjog ICMgdHlwZTogaWdub3JlW2F0dHItZGVmaW5lZF0KLS0gICAgICAgICAgICB0ZXN0KHhfc2hhcGUs IHNjYWxlX3NoYXBlLCBheGlzLCBibG9ja19zaXplLCBvdXRwdXRfZHR5cGUsIHplcm9fcG9pbnRf ZHR5cGUpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAg ICAgICAgWwotLSAgICAgICAgICAgICgicGVyX3RlbnNvciIsICgxNiwgMyksICgxLCksIE5vbmUs IE5vbmUsIFRydWUpLAotLSAgICAgICAgICAgICgicGVyX2F4aXNfbm9uZV9ibG9ja19zaGFwZSIs ICgxNiwgMyksICgxNiwpLCAxLCBOb25lLCBUcnVlKSwKLS0gICAgICAgICAgICAoInBlcl9heGlz X3plcm9fYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMTYsKSwgMSwgMCwgVHJ1ZSksCi0tICAgICAg ICAgICAgKCJwZXJfdGVuc29yX3Bvc2l0aXZlX2Jsb2NrX3NoYXBlIiwgKDE2LCAzKSwgKDEsKSwg MSwgMiwgRmFsc2UpLAotLSAgICAgICAgICAgICgicGVyX2F4aXNfcG9zaXRpdmVfYmxvY2tfc2hh cGUiLCAoMTYsIDMpLCAoMTYsKSwgMSwgMiwgRmFsc2UpLAotLSAgICAgICAgICAgICgiYmxvY2tl ZF8yZCIsICgxNiwgMyksICg0LCAzKSwgMCwgNCwgRmFsc2UpLAotLSAgICAgICAgICAgICgiYmxv Y2tlZF8zZCIsICg0LCAzLCAzMiksICg0LCAzLCA4KSwgMiwgNCwgRmFsc2UpLAotLSAgICAgICAg XQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2RlcXVhbnRpemVfMjFfMjAoCi0tICAgICAgICBzZWxm LAotLSAgICAgICAgXzogc3RyLAotLSAgICAgICAgeV9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAot LSAgICAgICAgc2NhbGVfc2hhcGU6IHR1cGxlW2ludCwgLi4uXSwKLS0gICAgICAgIGF4aXM6IGlu dCwKLS0gICAgICAgIGJsb2NrX3NpemU6IGludCwKLS0gICAgICAgIGNvbXBhdGlibGU6IGJvb2ws Ci0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIGRlZiB0ZXN0KGlucHV0X3NoYXBlLCBzY2FsZV9z aGFwZSwgYXhpcywgYmxvY2tfc2l6ZSkgLT4gTm9uZToKLS0gICAgICAgICAgICBub2RlcyA9IFsK LS0gICAgICAgICAgICAgICAgaGVscGVyLm1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAg ICJEZXF1YW50aXplTGluZWFyIiwKLS0gICAgICAgICAgICAgICAgICAgIFsiWCIsICJTIiwgIlpQ Il0sCi0tICAgICAgICAgICAgICAgICAgICBbIlkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGF4 aXM9YXhpcywKLS0gICAgICAgICAgICAgICAgICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6ZSwKLS0g ICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0KLS0gICAgICAgICAgICBncmFwaCA9IGhl bHBlci5tYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBub2RlcywKLS0gICAgICAgICAgICAg ICAgInRlc3QiLAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBoZWxw ZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLklOVDgsIGlucHV0X3No YXBlKSwKLS0gICAgICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJTIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX3NoYXBlKSwKLS0gICAgICAgICAgICAgICAg ICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJaUCIsIFRlbnNvclByb3RvLklOVDgs IHNjYWxlX3NoYXBlKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW2hl bHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIGlucHV0 X3NoYXBlKV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF8gPSBzZWxmLl9jb252ZXJ0 ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0aWQoIiIsIDIxKSwgMjApCi0tCi0tICAg ICAgICBjb250ZXh0X21hbmFnZXIgPSAoCi0tICAgICAgICAgICAgY29udGV4dGxpYi5udWxsY29u dGV4dCgpIGlmIGNvbXBhdGlibGUgZWxzZSBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3Ip Ci0tICAgICAgICApCi0tICAgICAgICB3aXRoIGNvbnRleHRfbWFuYWdlcjogICMgdHlwZTogaWdu b3JlW2F0dHItZGVmaW5lZF0KLS0gICAgICAgICAgICB0ZXN0KHlfc2hhcGUsIHNjYWxlX3NoYXBl LCBheGlzLCBibG9ja19zaXplKQotLQotIAotIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0g ICAgIHVuaXR0ZXN0Lm1haW4oKQotZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50cy1kZXYudHh0IGIv cmVxdWlyZW1lbnRzLWRldi50eHQKLWluZGV4IGVhMzg3MTJkOC4uMTY1YjNmN2Y0IDEwMDY0NAot LS0tIGEvcmVxdWlyZW1lbnRzLWRldi50eHQKLSsrKyBiL3JlcXVpcmVtZW50cy1kZXYudHh0Ci1A QCAtMiw3ICsyLDYgQEAgYnVpbGQKLSBqdXB5dGVyCi0gbmJ2YWwKLSBudW1weQotLXBhcmFtZXRl cml6ZWQKLSBwcm90b2J1ZgotIHB5dGVzdAotIHB5dGVzdC1jb3YKLWRpZmYgLS1naXQgYS9yZXF1 aXJlbWVudHMtcmVsZWFzZS50eHQgYi9yZXF1aXJlbWVudHMtcmVsZWFzZS50eHQKLWluZGV4IDlh OWQ4NTM1MS4uMGMxOWViZGI1IDEwMDY0NAotLS0tIGEvcmVxdWlyZW1lbnRzLXJlbGVhc2UudHh0 Ci0rKysgYi9yZXF1aXJlbWVudHMtcmVsZWFzZS50eHQKLUBAIC0zLDcgKzMsNiBAQCBpcHl0aG9u Ci0gbmJ2YWwKLSBudW1weT09MS4yNC4zOyBweXRob25fdmVyc2lvbjwiMy45IgotIG51bXB5PT0y LjAuMDsgcHl0aG9uX3ZlcnNpb24+PSIzLjkiCi0tcGFyYW1ldGVyaXplZAotIHByb3RvYnVmPT00 LjIxLjEyOyBweXRob25fdmVyc2lvbjwiMy4xMiIKLSBwcm90b2J1Zj09NC4yNS4xOyBweXRob25f dmVyc2lvbj49IjMuMTIiCi0gcHl0ZXN0Ci1kaWZmIC0tZ2l0IGEvcmVxdWlyZW1lbnRzLnR4dCBi L3JlcXVpcmVtZW50cy50eHQKLWluZGV4IDQ2ZGQ3ZjdmZC4uNjJkYWM4YTNiIDEwMDY0NAotLS0t IGEvcmVxdWlyZW1lbnRzLnR4dAotKysrIGIvcmVxdWlyZW1lbnRzLnR4dAotQEAgLTEsMyArMSwy IEBACi0gbnVtcHk+PTEuMjAKLSBwcm90b2J1ZiA+PSAzLjE0LjAsIDwgNAotLXBhcmFtZXRlcml6 ZWQgPj0gMC44LjEsIDwgMQotLS0gCi0yLjUyLjAKLQoKZGlmZiAtLWdpdCBhL2NoYW5nZWxvZyBi L2NoYW5nZWxvZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTM1ZDk2Ci0t LSAvZGV2L251bGwKKysrIGIvY2hhbmdlbG9nCkBAIC0wLDAgKzEsMTA4IEBACisqIFRodSBKdW4g MDQgMjAyNiBQeXRob24gTWFpbnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEuMTcuMC0x NQorLSBSZWJ1aWx0IGZvciBQeXRob24gMy4xNQorCisqIFdlZCBGZWIgMjEgMjAyNCBEaWVnbyBI ZXJyZXJhIEMgPGRoZXJyZXJhQHJlZGhhdC5jb20+LSAxLjIxLjAtMQorLSBVcGRhdGUgdG8gMS4y MS4wCisKKyogU3VuIE1heSAwNCAyMDI2IEF1dHVtbiBOYXNoIDxhdXR1bW5uYXNoQG1pY3Jvc29m dC5jb20+IC0gMS4xNy4wLTEzCistIFJlcGxhY2UgaGFyZGNvZGVkIHJlZGhhdC1saW51eC1idWls ZCB3aXRoICUle192cGF0aF9idWlsZGRpcn0gdmlhIGVudiB2YXIKKworKiBNb24gRmViIDE2IDIw MjYgRGllZ28gSGVycmVyYSA8ZGhlcnJlcmFAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xNy4wLTEy CistIFJlLWVuYWJsZSBzMzkweAorCisqIFR1ZSBGZWIgMTAgMjAyNiBNYXJjaW4gSnVzemtpZXdp Y3ogLSAxLjE3LjAtMTEKKy0gc2tpcCAzIHRlc3RzIG9uIHJpc2N2NjQ6IHRlc3RfZmxvYXQ4X2U0 bTNmbl9uZWdhdGl2ZV9uYW4sCisgIHRlc3RfZmxvYXQ4X2U1bTJfbmVnYXRpdmVfbmFuLCB0ZXN0 X21heHBvb2xfMmRfdWludDhfY3B1CisKKyogRnJpIEphbiAxNiAyMDI2IEZlZG9yYSBSZWxlYXNl IEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xNy4wLTEwCistIFJl YnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDRfTWFzc19S ZWJ1aWxkCisKKyogVGh1IEphbiAxNSAyMDI2IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQGZlZG9y YXByb2plY3Qub3JnPiAtIDEuMTcuMC05CistIERpc2FibGUgdGVzdHMgdGhhdCBkZXBlbmQgb24g cHl0aG9uLXBhcmFtZXRlcml6ZWQKKy0gQ2xlYW4gdXAgcGF0Y2hlcworCisqIEZyaSBTZXAgMTkg MjAyNSBQeXRob24gTWFpbnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEuMTcuMC04Cist IFJlYnVpbHQgZm9yIFB5dGhvbiAzLjE0LjByYzMgYnl0ZWNvZGUKKworKiBGcmkgQXVnIDE1IDIw MjUgUHl0aG9uIE1haW50IDxweXRob24tbWFpbnRAcmVkaGF0LmNvbT4gLSAxLjE3LjAtNworLSBS ZWJ1aWx0IGZvciBQeXRob24gMy4xNC4wcmMyIGJ5dGVjb2RlCisKKyogVGh1IEp1bCAyNCAyMDI1 IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0g MS4xNy4wLTYKKy0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0Zl ZG9yYV80M19NYXNzX1JlYnVpbGQKKworKiBUdWUgSnVuIDE3IDIwMjUgUHl0aG9uIE1haW50IDxw eXRob24tbWFpbnRAcmVkaGF0LmNvbT4gLSAxLjE3LjAtNQorLSBSZWJ1aWx0IGZvciBQeXRob24g My4xNAorCisqIEZyaSBNYXIgMjggMjAyNSBNaXJvIEhyb27EjW9rIDxtaHJvbmNva0ByZWRoYXQu Y29tPiAtIDEuMTcuMC00CistIERvbid0IG5lZWRsZXNzbHkgdHJ5IHRvIGdlbmVyYXRlIHRlc3Qg cmVxdWlyZW1lbnRzIGJ5IHRveAorLSBGaXhlczogcmhieiMyMzU0MDg3CisKKyogU2F0IEphbiAx OCAyMDI1IEJlbmphbWluIEEuIEJlYXNsZXkgPGNvZGVAbXVzaWNpbm15YnJhaW4ubmV0PiAtIDEu MTcuMC0zCistIERyb3AgaTY4NiBzdXBwb3J0IChsZWFmIHBhY2thZ2Ugb24gdGhhdCBhcmNoaXRl Y3R1cmUpCisKKyogRnJpIEphbiAxNyAyMDI1IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxy ZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xNy4wLTIKKy0gUmVidWlsdCBmb3IgaHR0cHM6 Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV80Ml9NYXNzX1JlYnVpbGQKKworKiBGcmkg T2N0IDI1IDIwMjQgU2FuZHJvIDxkZXZlbEBwZW5ndWlucGVlLm5sPiAtIDEuMTcuMC0xCistIFVw ZGF0ZSB0byAxLjE3LjAgKFJIQlojMjIzNTAxMSkKKy0gQWRkIHN1cHBvcnQgZm9yIE51bVB5IDIu eAorCisqIFRodSBKdWwgMTggMjAyNCBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5n QGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTUuMC00CistIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVk b3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDFfTWFzc19SZWJ1aWxkCisKKyogVHVlIEp1bCAw MiAyMDI0IEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNv bT4gLSAxLjE1LjAtMworLSBCYWNrcG9ydCBvZiBmaXggZm9yIENWRS0yMDI0LTUxODcKKworKiBT YXQgSnVuIDA4IDIwMjQgUHl0aG9uIE1haW50IDxweXRob24tbWFpbnRAcmVkaGF0LmNvbT4gLSAx LjE1LjAtMgorLSBSZWJ1aWx0IGZvciBQeXRob24gMy4xMworCisqIFRodSBBcHIgMTEgMjAyNCBE aWVnbyBIZXJyZXJhIEMgPGRoZXJyZXJhQHJlZGhhdC5jb20+IC0gMS4xNS4wLTEKKy0gUmVsZWFz ZSAxLjE1LjAKKworKiBTYXQgRmViIDI0IDIwMjQgQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxh LmFsdmFyZXpheWxsb25AZ21haWwuY29tPiAtIDEuMTQuMS0yCistIEJhY2twb3J0IG9mIGZpeGVz IGZvciBDVkUtMjAyNC0yNzMxOCBhbmQgQ1ZFLTIwMjQtMjczMTkKKworKiBXZWQgRmViIDIxIDIw MjQgRGllZ28gSGVycmVyYSBDIDxkaGVycmVyYUByZWRoYXQuY29tPi0gMS4xNC4xLTEKKy0gUmVs ZWFzZSAxLjE0LjEKKworKiBUdWUgSmFuIDIzIDIwMjQgQWxlamFuZHJvIEFsdmFyZXogQXlsbG9u IDxhLmFsdmFyZXpheWxsb25AZ21haWwuY29tPiAtIDEuMTQuMC0xMAorLSBCdWlsZCB1c2luZyBw cm90b2J1Zi1kZXZlbAorCisqIFN1biBKYW4gMjEgMjAyNCBGZWRvcmEgUmVsZWFzZSBFbmdpbmVl cmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTQuMC05CistIFJlYnVpbHQgZm9y IGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDBfTWFzc19SZWJ1aWxkCisK KyogV2VkIFNlcCAyMCAyMDIzIERpZWdvIEhlcnJlcmEgQyA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4g LSAxLjE0LjAtOAorLSBGaXggb25ueHJ1bnRpbWUgcGF0Y2gKKworKiBXZWQgQXVnIDMwIDIwMjMg RGllZ28gSGVycmVyYSBDIDxkaGVycmVyYUByZWRoYXQuY29tPiAtIDEuMTQuMC03CistIEFkZCBm aXggdG8gdXNlIHdpdGggb25ueHJ1bnRpbWUKKworKiBTYXQgQXVnIDUgMjAyMyBEaWVnbyBIZXJy ZXJhIEMgPGRoZXJyZXJhQHJlZGhhdC5jb20+IC0gMS4xNC4wLTYKKy0gTG93ZXIgdmVyc2lvbiBy ZXF1aXJlbWVudCBmb3IgcGFyYW1ldGVyaXplZC4KKy0gTG93ZXIgdmVyc2lvbiByZXF1aXJlbWVu dCBmb3IgcHJvdG9idWYuCisKKyogU2F0IEF1ZyA1IDIwMjMgRGllZ28gSGVycmVyYSBDIDxkaGVy cmVyYUByZWRoYXQuY29tPiAtIDEuMTQuMC01CistIEJ1aWxkIHB5dGhvbiBsaWJzIHVzaW5nIHRo ZSBwcm9wZXIgbWFjcm9zLgorCisqIFRodSBKdWwgMjAgMjAyMyBGZWRvcmEgUmVsZWFzZSBFbmdp bmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTQuMC00CistIFJlYnVpbHQg Zm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfMzlfTWFzc19SZWJ1aWxk CisKKyogTW9uIEp1biAxOSAyMDIzIFB5dGhvbiBNYWludCA8cHl0aG9uLW1haW50QHJlZGhhdC5j b20+IC0gMS4xNC4wLTMKKy0gUmVidWlsdCBmb3IgUHl0aG9uIDMuMTIKKworKiBXZWQgSnVuIDA3 IDIwMjMgQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhLmFsdmFyZXpheWxsb25AZ21haWwuY29t PiAtIDEuMTQuMC0yCistIFBhdGNoIHByb3RvYnVmIGhlYWRlcnMgd2l0aCBPTk5YX0FQSQorLSBT aGlwIC5wcm90byBmaWxlcworCisqIFNhdCBKdW4gMDMgMjAyMyBBbGVqYW5kcm8gQWx2YXJleiBB eWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+IC0gMS4xNC4wLTEKKy0gUmVsZWFzZSAx LjE0LjAKKworKiBUaHUgTWF5IDE4IDIwMjMgRGllZ28gSGVycmVyYSA8ZGhlcnJlcmFAcmVkaGF0 LmNvbT4gLSAxLjEzLjAtMworLSBGaXggTGljZW5zZSBlbnRyeSB0byBjb21wbHkgd2l0aCBTUERY CistIEFkZCBvbm54LWxpYnMgYXMgYW4gZXhwbGljaXQgZGVwZW5kZW5jeSB0byB0aGUgcHl0aG9u IHBhY2thZ2UKKworKiBTYXQgRGVjIDE3IDIwMjIgQWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxh YWx2YXJlekBmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjEzLjAtMgorLSBSZWxlYXNlIDEuMTMuMAor CisqIFdlZCBOb3YgMjMgMjAyMiBBbGVqYW5kcm8gQWx2YXJleiBBeWxsb24gPGFhbHZhcmV6QGZl ZG9yYXByb2plY3Qub3JnPiAtIDEuMTIuMC0xCistIFJlbGVhc2UgMS4xMi4wCgpkaWZmIC0tZ2l0 IGEvb25ueC5zcGVjIGIvb25ueC5zcGVjCmluZGV4IGYwOGIwNTEuLmVmMGU4YTUgMTAwNjQ0Ci0t LSBhL29ubnguc3BlYworKysgYi9vbm54LnNwZWMKQEAgLTEsNiArMSw4IEBACislZ2xvYmFsIHNv X3ZlcnNpb24gMQorCiBOYW1lOiAgICAgICBvbm54Ci1WZXJzaW9uOiAgICAxLjE3LjAKLVJlbGVh c2U6ICAgIDE1JXs/ZGlzdH0KK1ZlcnNpb246ICAgIDEuMjEuMAorUmVsZWFzZTogICAgJWF1dG9y ZWxlYXNlCiBTdW1tYXJ5OiAgICBPcGVuIHN0YW5kYXJkIGZvciBtYWNoaW5lIGxlYXJuaW5nIGlu dGVyb3BlcmFiaWxpdHkKIExpY2Vuc2U6ICAgIEFwYWNoZS0yLjAKIApAQCAtOCwxNCArMTAsOCBA QCBVUkw6ICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vb25ueC9vbm54CiBTb3VyY2UwOiAgICBo dHRwczovL2dpdGh1Yi5jb20vb25ueC9vbm54L2FyY2hpdmUvdiV7dmVyc2lvbn0vJXtuYW1lfS0l e3ZlcnNpb259LnRhci5negogIyBCdWlsZCBzaGFyZWQgbGlicmFyaWVzIGFuZCBmaXggaW5zdGFs bCBsb2NhdGlvbiAKIFBhdGNoOiAgICAgMDAwMC1CdWlsZC1zaGFyZWQtbGlicmFyaWVzLWFuZC1m aXgtaW5zdGFsbC1sb2NhdGlvbi5wYXRjaAotIyBVc2Ugc3lzdGVtIHByb3RvYnVmIGFuZCByZXF1 aXJlIHBhcmFtZXRlcml6ZWQKLVBhdGNoOiAgICAgMDAwMS1Vc2Utc3lzdGVtLXByb3RvYnVmLWFu ZC1yZXF1aXJlLXBhcmFtZXRlcml6ZWQucGF0Y2gKLSMgTGV0IHB5cHJvamVjdF93aGVlbCB1c2Ug YmluYXJpZXMgZnJvbSBjbWFrZV9idWlsZAotUGF0Y2g6ICAgICAwMDAyLUxldC1weXByb2plY3Rf d2hlZWwtdXNlLWJpbmFyaWVzLWZyb20tY21ha2VfYnVpbGQucGF0Y2gKLSMgQWRkIGZpeGVzIGZv ciB1c2Ugd2l0aCBvbm54cnVudGltZQotUGF0Y2g6ICAgICAwMDAzLUFkZC1maXhlcy1mb3ItdXNl LXdpdGgtb25ueHJ1bnRpbWUucGF0Y2gKLSMgQWRkIGZpeGVzIGZvciB1c2Ugd2l0aCBvbm54cnVu dGltZQotUGF0Y2g6ICAgICAwMDA0LVJlbW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRl bmN5LnBhdGNoCisjIFJlbW92ZSBvYnNvbGV0ZWQgdGVzdGluZyBkZXBlbmRlbmN5CitQYXRjaDog ICAgIDAwMDItUmVtb3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0Y2gKIAog JWlmICV7dW5kZWZpbmVkIGZjNDB9ICYmICV7dW5kZWZpbmVkIGZjNDF9CiAjIGh0dHBzOi8vZmVk b3JhcHJvamVjdC5vcmcvd2lraS9DaGFuZ2VzL0VuY291cmFnZUk2ODZMZWFmUmVtb3ZhbApAQCAt MzIsNyArMjgsOSBAQCBCdWlsZFJlcXVpcmVzOiAgcHl0aG9uMy1kZXZlbAogQnVpbGRSZXF1aXJl czogIHB5dGhvbjMtcGlwCiBCdWlsZFJlcXVpcmVzOiAgcHl0aG9uMy1weWJpbmQxMQogQnVpbGRS ZXF1aXJlczogIHB5dGhvbjMtcHl0ZXN0Ci1CdWlsZFJlcXVpcmVzOiAgcHJvdG9idWYzLWRldmVs CitCdWlsZFJlcXVpcmVzOiAgcHl0aG9uMy1uYW5vYmluZAorQnVpbGRSZXF1aXJlczogIHB5dGhv bjMtbWwtZHR5cGVzIAorQnVpbGRSZXF1aXJlczogIHByb3RvYnVmLWRldmVsCiAKICVnbG9iYWwg X2Rlc2NyaXB0aW9uICV7ZXhwYW5kOgogJXtuYW1lfSBwcm92aWRlcyBhbiBvcGVuIHNvdXJjZSBm b3JtYXQgZm9yIEFJIG1vZGVscywgYm90aCBkZWVwIGxlYXJuaW5nIGFuZApAQCAtNjEsMTUgKzU5 LDYgQEAgUmVxdWlyZXM6ICAgJXtuYW1lfS1saWJzID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9CiAl cHJlcAogJWF1dG9zZXR1cCAtcDEgLW4gb25ueC0le3ZlcnNpb259CiAKLSMgVXNlIHN5c3RlbSBw cm90b2J1Zgotc2VkIC1yIC1pICdzL3Byb3RvYnVmPj0zLjIwLjIvcHJvdG9idWY+PTMuMTQuMC8n IHB5cHJvamVjdC50b21sCi0KLSMgRHJvcCBuYnZhbCBvcHRpb25zIGZyb20gcHl0ZXN0LiBQbHVn aW4gaXMgbm90IGF2YWlsYWJsZSBpbiBGZWRvcmEuCi1zZWQgLXIgXAotICAgIC1lICdzLy0tbmJ2 YWwgLy8nIFwKLSAgICAtZSAncy8tLW5idmFsLWN1cnJlbnQtZW52IC8vJyBcCi0gICAgLWkgcHlw cm9qZWN0LnRvbWwKLQogJWdlbmVyYXRlX2J1aWxkcmVxdWlyZXMKICVweXByb2plY3RfYnVpbGRy ZXF1aXJlcyByZXF1aXJlbWVudHMtcmVmZXJlbmNlLnR4dAogCkBAIC03OCwxMyArNjcsMTMgQEAg ZXhwb3J0IFZQQVRIX0JVSUxERElSPSV7X3ZwYXRoX2J1aWxkZGlyfQogJWNtYWtlIFwKICAgICAt RE9OTlhfVVNFX0xJVEVfUFJPVE89T0ZGIFwKICAgICAtRE9OTlhfVVNFX1BST1RPQlVGX1NIQVJF RF9MSUJTPU9OIFwKLSAgICAtREJVSUxEX09OTlhfUFlUSE9OPU9OIFwKLSAgICAtRFBZVEhPTl9F WEVDVVRBQkxFPSV7cHl0aG9uM30gXAorICAgIC1ET05OWF9CVUlMRF9QWVRIT049T04gXAorICAg IC1EUHl0aG9uX0VYRUNVVEFCTEU9cHl0aG9uMy4xNCBcCiAgICAgLURQWV9FWFRfU1VGRklYPSV7 cHl0aG9uM19leHRfc3VmZml4fSBcCiAgICAgLURQWV9TSVRFQVJDSD0le3B5dGhvbjNfc2l0ZWFy Y2h9IFwKLSAgICAtRENNQUtFX1NLSVBfUlBBVEg6Qk9PTD1PTgotIyBHZW5lcmF0ZSBwcm90b2J1 ZiBoZWFkZXIgYW5kIHNvdXJjZSBmaWxlcwotJWNtYWtlX2J1aWxkIC0tIGdlbl9vbm54X3Byb3Rv CisgICAgLURDTUFLRV9TS0lQX1JQQVRIOkJPT0w9T04gXAorICAgIC1ET05OWF9ESVNBQkxFX1NU QVRJQ19SRUdJU1RSQVRJT049T04KKwogIyBCdWlsZCAKICVjbWFrZV9idWlsZAogIyBCdWlsZCBw eXRob24gbGlicwpAQCAtMTE2LDggKzEwNSw4IEBAIGV4cG9ydCBQWVRFU1RfQURET1BUUz0iLWsg J25vdCB0ZXN0X21ha2VfdGVuc29yX3JhdyciCiAlZmlsZXMgbGlicwogJWxpY2Vuc2UgTElDRU5T RQogJWRvYyBSRUFETUUubWQKLSV7X2xpYmRpcn0vbGlib25ueC5zby4le3ZlcnNpb259Ci0le19s aWJkaXJ9L2xpYm9ubnhfcHJvdG8uc28uJXt2ZXJzaW9ufQorJXtfbGliZGlyfS9saWJvbm54LnNv LiV7c29fdmVyc2lvbn17LC4qfQorJXtfbGliZGlyfS9saWJvbm54X3Byb3RvLnNvLiV7c29fdmVy c2lvbn17LC4qfQogCiAlZmlsZXMgZGV2ZWwKICV7X2xpYmRpcn0vbGlib25ueC5zbwpAQCAtMTMx LDExMSArMTIwLDQgQEAgZXhwb3J0IFBZVEVTVF9BRERPUFRTPSItayAnbm90IHRlc3RfbWFrZV90 ZW5zb3JfcmF3JyIKICV7X2JpbmRpcn0vY2hlY2stbm9kZQogCiAlY2hhbmdlbG9nCi0qIFRodSBK dW4gMDQgMjAyNiBQeXRob24gTWFpbnQgPHB5dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEuMTcu MC0xNQotLSBSZWJ1aWx0IGZvciBQeXRob24gMy4xNQotCi0qIFdlZCBNYXkgMTMgMjAyNiBNaXJv c2xhdiBTdWNoeSA8bXN1Y2h5QHJlZGhhdC5jb20+IC0gMS4xNy4wLTE0Ci0tIFVzZSBwcm90b2J1 ZjMgaW5zdGVhZCBvZiBwcm90b2J1ZgotCi0qIFN1biBNYXkgMDQgMjAyNiBBdXR1bW4gTmFzaCA8 YXV0dW1ubmFzaEBtaWNyb3NvZnQuY29tPiAtIDEuMTcuMC0xMwotLSBSZXBsYWNlIGhhcmRjb2Rl ZCByZWRoYXQtbGludXgtYnVpbGQgd2l0aCAlJXtfdnBhdGhfYnVpbGRkaXJ9IHZpYSBlbnYgdmFy Ci0KLSogTW9uIEZlYiAxNiAyMDI2IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQGZlZG9yYXByb2pl Y3Qub3JnPiAtIDEuMTcuMC0xMgotLSBSZS1lbmFibGUgczM5MHgKLQotKiBUdWUgRmViIDEwIDIw MjYgTWFyY2luIEp1c3praWV3aWN6IC0gMS4xNy4wLTExCi0tIHNraXAgMyB0ZXN0cyBvbiByaXNj djY0OiB0ZXN0X2Zsb2F0OF9lNG0zZm5fbmVnYXRpdmVfbmFuLAotICB0ZXN0X2Zsb2F0OF9lNW0y X25lZ2F0aXZlX25hbiwgdGVzdF9tYXhwb29sXzJkX3VpbnQ4X2NwdQotCi0qIEZyaSBKYW4gMTYg MjAyNiBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3Jn PiAtIDEuMTcuMC0xMAotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dp a2kvRmVkb3JhXzQ0X01hc3NfUmVidWlsZAotCi0qIFRodSBKYW4gMTUgMjAyNiBEaWVnbyBIZXJy ZXJhIDxkaGVycmVyYUBmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjE3LjAtOQotLSBEaXNhYmxlIHRl c3RzIHRoYXQgZGVwZW5kIG9uIHB5dGhvbi1wYXJhbWV0ZXJpemVkCi0tIENsZWFuIHVwIHBhdGNo ZXMKLQotKiBGcmkgU2VwIDE5IDIwMjUgUHl0aG9uIE1haW50IDxweXRob24tbWFpbnRAcmVkaGF0 LmNvbT4gLSAxLjE3LjAtOAotLSBSZWJ1aWx0IGZvciBQeXRob24gMy4xNC4wcmMzIGJ5dGVjb2Rl Ci0KLSogRnJpIEF1ZyAxNSAyMDI1IFB5dGhvbiBNYWludCA8cHl0aG9uLW1haW50QHJlZGhhdC5j b20+IC0gMS4xNy4wLTcKLS0gUmVidWlsdCBmb3IgUHl0aG9uIDMuMTQuMHJjMiBieXRlY29kZQot Ci0qIFRodSBKdWwgMjQgMjAyNSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZl ZG9yYXByb2plY3Qub3JnPiAtIDEuMTcuMC02Ci0tIFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3Jh cHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDNfTWFzc19SZWJ1aWxkCi0KLSogVHVlIEp1biAxNyAy MDI1IFB5dGhvbiBNYWludCA8cHl0aG9uLW1haW50QHJlZGhhdC5jb20+IC0gMS4xNy4wLTUKLS0g UmVidWlsdCBmb3IgUHl0aG9uIDMuMTQKLQotKiBGcmkgTWFyIDI4IDIwMjUgTWlybyBIcm9uxI1v ayA8bWhyb25jb2tAcmVkaGF0LmNvbT4gLSAxLjE3LjAtNAotLSBEb24ndCBuZWVkbGVzc2x5IHRy eSB0byBnZW5lcmF0ZSB0ZXN0IHJlcXVpcmVtZW50cyBieSB0b3gKLS0gRml4ZXM6IHJoYnojMjM1 NDA4NwotCi0qIFNhdCBKYW4gMTggMjAyNSBCZW5qYW1pbiBBLiBCZWFzbGV5IDxjb2RlQG11c2lj aW5teWJyYWluLm5ldD4gLSAxLjE3LjAtMwotLSBEcm9wIGk2ODYgc3VwcG9ydCAobGVhZiBwYWNr YWdlIG9uIHRoYXQgYXJjaGl0ZWN0dXJlKQotCi0qIEZyaSBKYW4gMTcgMjAyNSBGZWRvcmEgUmVs ZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2plY3Qub3JnPiAtIDEuMTcuMC0yCi0t IFJlYnVpbHQgZm9yIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWRvcmFfNDJfTWFz c19SZWJ1aWxkCi0KLSogRnJpIE9jdCAyNSAyMDI0IFNhbmRybyA8ZGV2ZWxAcGVuZ3VpbnBlZS5u bD4gLSAxLjE3LjAtMQotLSBVcGRhdGUgdG8gMS4xNy4wIChSSEJaIzIyMzUwMTEpCi0tIEFkZCBz dXBwb3J0IGZvciBOdW1QeSAyLngKLQotKiBUaHUgSnVsIDE4IDIwMjQgRmVkb3JhIFJlbGVhc2Ug RW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjE1LjAtNAotLSBSZWJ1 aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3JhXzQxX01hc3NfUmVi dWlsZAotCi0qIFR1ZSBKdWwgMDIgMjAyNCBBbGVqYW5kcm8gQWx2YXJleiBBeWxsb24gPGEuYWx2 YXJlemF5bGxvbkBnbWFpbC5jb20+IC0gMS4xNS4wLTMKLS0gQmFja3BvcnQgb2YgZml4IGZvciBD VkUtMjAyNC01MTg3Ci0KLSogU2F0IEp1biAwOCAyMDI0IFB5dGhvbiBNYWludCA8cHl0aG9uLW1h aW50QHJlZGhhdC5jb20+IC0gMS4xNS4wLTIKLS0gUmVidWlsdCBmb3IgUHl0aG9uIDMuMTMKLQot KiBUaHUgQXByIDExIDIwMjQgRGllZ28gSGVycmVyYSBDIDxkaGVycmVyYUByZWRoYXQuY29tPiAt IDEuMTUuMC0xCi0tIFJlbGVhc2UgMS4xNS4wCi0KLSogU2F0IEZlYiAyNCAyMDI0IEFsZWphbmRy byBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4gLSAxLjE0LjEtMgot LSBCYWNrcG9ydCBvZiBmaXhlcyBmb3IgQ1ZFLTIwMjQtMjczMTggYW5kIENWRS0yMDI0LTI3MzE5 Ci0KLSogV2VkIEZlYiAyMSAyMDI0IERpZWdvIEhlcnJlcmEgQyA8ZGhlcnJlcmFAcmVkaGF0LmNv bT4tIDEuMTQuMS0xCi0tIFJlbGVhc2UgMS4xNC4xCi0KLSogVHVlIEphbiAyMyAyMDI0IEFsZWph bmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdtYWlsLmNvbT4gLSAxLjE0LjAt MTAKLS0gQnVpbGQgdXNpbmcgcHJvdG9idWYtZGV2ZWwKLQotKiBTdW4gSmFuIDIxIDIwMjQgRmVk b3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjE0 LjAtOQotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVkb3Jh XzQwX01hc3NfUmVidWlsZAotCi0qIFdlZCBTZXAgMjAgMjAyMyBEaWVnbyBIZXJyZXJhIEMgPGRo ZXJyZXJhQHJlZGhhdC5jb20+IC0gMS4xNC4wLTgKLS0gRml4IG9ubnhydW50aW1lIHBhdGNoCi0K LSogV2VkIEF1ZyAzMCAyMDIzIERpZWdvIEhlcnJlcmEgQyA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4g LSAxLjE0LjAtNwotLSBBZGQgZml4IHRvIHVzZSB3aXRoIG9ubnhydW50aW1lCi0KLSogU2F0IEF1 ZyA1IDIwMjMgRGllZ28gSGVycmVyYSBDIDxkaGVycmVyYUByZWRoYXQuY29tPiAtIDEuMTQuMC02 Ci0tIExvd2VyIHZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIHBhcmFtZXRlcml6ZWQuCi0tIExvd2Vy IHZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIHByb3RvYnVmLgotCi0qIFNhdCBBdWcgNSAyMDIzIERp ZWdvIEhlcnJlcmEgQyA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4gLSAxLjE0LjAtNQotLSBCdWlsZCBw eXRob24gbGlicyB1c2luZyB0aGUgcHJvcGVyIG1hY3Jvcy4KLQotKiBUaHUgSnVsIDIwIDIwMjMg RmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRvcmFwcm9qZWN0Lm9yZz4gLSAx LjE0LjAtNAotLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dpa2kvRmVk b3JhXzM5X01hc3NfUmVidWlsZAotCi0qIE1vbiBKdW4gMTkgMjAyMyBQeXRob24gTWFpbnQgPHB5 dGhvbi1tYWludEByZWRoYXQuY29tPiAtIDEuMTQuMC0zCi0tIFJlYnVpbHQgZm9yIFB5dGhvbiAz LjEyCi0KLSogV2VkIEp1biAwNyAyMDIzIEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZh cmV6YXlsbG9uQGdtYWlsLmNvbT4gLSAxLjE0LjAtMgotLSBQYXRjaCBwcm90b2J1ZiBoZWFkZXJz IHdpdGggT05OWF9BUEkKLS0gU2hpcCAucHJvdG8gZmlsZXMKLQotKiBTYXQgSnVuIDAzIDIwMjMg QWxlamFuZHJvIEFsdmFyZXogQXlsbG9uIDxhLmFsdmFyZXpheWxsb25AZ21haWwuY29tPiAtIDEu MTQuMC0xCi0tIFJlbGVhc2UgMS4xNC4wCi0KLSogVGh1IE1heSAxOCAyMDIzIERpZWdvIEhlcnJl cmEgPGRoZXJyZXJhQHJlZGhhdC5jb20+IC0gMS4xMy4wLTMKLS0gRml4IExpY2Vuc2UgZW50cnkg dG8gY29tcGx5IHdpdGggU1BEWAotLSBBZGQgb25ueC1saWJzIGFzIGFuIGV4cGxpY2l0IGRlcGVu ZGVuY3kgdG8gdGhlIHB5dGhvbiBwYWNrYWdlCi0KLSogU2F0IERlYyAxNyAyMDIyIEFsZWphbmRy byBBbHZhcmV6IEF5bGxvbiA8YWFsdmFyZXpAZmVkb3JhcHJvamVjdC5vcmc+IC0gMS4xMy4wLTIK LS0gUmVsZWFzZSAxLjEzLjAKLQotKiBXZWQgTm92IDIzIDIwMjIgQWxlamFuZHJvIEFsdmFyZXog QXlsbG9uIDxhYWx2YXJlekBmZWRvcmFwcm9qZWN0Lm9yZz4gLSAxLjEyLjAtMQotLSBSZWxlYXNl IDEuMTIuMAorJWF1dG9jaGFuZ2Vsb2cKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIvc291cmNlcwpp bmRleCBlMzc1YjM4Li4wNmVkZTExIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBiL3NvdXJjZXMK QEAgLTEgKzEgQEAKLVNIQTUxMiAob25ueC0xLjE3LjAudGFyLmd6KSA9IDVhMThlMmIxOWVjOWMx OGM4YjExNWZiN2UxMmVkOThlZGRhYTU4MWM5NWYxNWM0ZGQ0MjBjZDZjODZlN2NhYTA0ZjlhMzkz ZGE1ODllNzZiODljZjliMzU0NGFiZDM3NDlhOGM3N2MyNDQ2NzgyZjM3NTAyZWI3NGU5YjFmNjYx CitTSEE1MTIgKG9ubngtMS4yMS4wLnRhci5neikgPSAzY2VlNGMwZmJjOWUyNjBlMzYwYTYyYTU5 ZTMyNGUwYjEyN2E1NzQ5Zjk1OGUwNzA0OTg5YjQwN2E0YzExNzljNjM3ZWY4NmU0MWE0MDZlNzg2 ODUzN2E2MmExMWE4MjFlMzQzMzAwNWViMDcyNWY5NzkxNDVmOGQ1MTQ5MjZiZAo=