From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0328910E95C for ; Fri, 10 Nov 2023 10:45:32 +0000 (UTC) From: "Hogander, Jouni" To: "Joshi, Kunal1" , "igt-dev@lists.freedesktop.org" Date: Fri, 10 Nov 2023 10:44:42 +0000 Message-ID: References: <20231110095232.1401758-1-kunal1.joshi@intel.com> <20231110095232.1401758-7-kunal1.joshi@intel.com> In-Reply-To: <20231110095232.1401758-7-kunal1.joshi@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <2709BA99E839FF498A8A65171A6DDD63@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 6/7] tests/intel/kms_psr: made test compaitable with pr List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Murthy, Arun R" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: T24gRnJpLCAyMDIzLTExLTEwIGF0IDE1OjIyICswNTMwLCBLdW5hbCBKb3NoaSB3cm90ZToKPiBN b2RpZmllZCBrbXNfcHNyIHRvIGhhdmUgc3VwcG9ydCBmb3IgUFIuCj4gCj4gdjI6IHJlbW92ZSBz ZXRfb3V0cHV0IGFuZCBoYXZlIG91dHB1dHMgKEpvdW5pKQo+IHYzOiBsb29wIG92ZXIgY29ubmVj dGVkIG91dHB1dHMgKEpvdW5pKQo+IHY0OiBzaG9ydGVuIG91dHB1dF9zdXBwb3J0c19wc3IgKEpv dW5pKQo+IMKgwqDCoCByZW1vdmUgdW51c2VkIGRhdGEgbWVtYmVycyAoSm91bmkpCj4gdjU6IHJl bW92ZWQgb3B0IG5vLXBzciAoSm91bmkpCj4gCj4gQ2M6IEpvdW5pIEjDtmdhbmRlciA8am91bmku aG9nYW5kZXJAaW50ZWwuY29tPgo+IENjOiBBbmltZXNoIE1hbm5hIDxhbmltZXNoLm1hbm5hQGlu dGVsLmNvbT4KPiBDYzogQXJ1biBSIE11cnRoeSA8YXJ1bi5yLm11cnRoeUBpbnRlbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogS3VuYWwgSm9zaGkgPGt1bmFsMS5qb3NoaUBpbnRlbC5jb20+CgpSZXZp ZXdlZC1ieTogSm91bmkgSMO2Z2FuZGVyIDxqb3VuaS5ob2dhbmRlckBpbnRlbC5jb20+Cj4gLS0t Cj4gwqB0ZXN0cy9pbnRlbC9rbXNfcHNyLmMgfCA0MTAgKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLQo+IC0tCj4gwqAxIGZpbGUgY2hhbmdlZCwgMjcwIGluc2VydGlvbnMo KyksIDE0MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaW50ZWwva21zX3Bz ci5jIGIvdGVzdHMvaW50ZWwva21zX3Bzci5jCj4gaW5kZXggODQ4NWU5ODk0Li44MWI1MDIwODgg MTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaW50ZWwva21zX3Bzci5jCj4gKysrIGIvdGVzdHMvaW50ZWwv a21zX3Bzci5jCj4gQEAgLTI1LDcgKzI1LDcgQEAKPiDCoC8qKgo+IMKgICogVEVTVDoga21zIHBz cgo+IMKgICogQ2F0ZWdvcnk6IERpc3BsYXkKPiAtICogRGVzY3JpcHRpb246IFRlc3RzIGJlaGF2 aW91ciBvZiBQU1IgJiBQU1IyCj4gKyAqIERlc2NyaXB0aW9uOiBUZXN0cyBiZWhhdmlvdXIgb2Yg UFNSICYgUFNSMiAmIFBSCj4gwqAgKi8KPiDCoAo+IMKgI2luY2x1ZGUgImlndC5oIgo+IEBAIC0z OSwxNCArMzksMTQgQEAKPiDCoCNpbmNsdWRlICJ4ZS94ZV9xdWVyeS5oIgo+IMKgCj4gwqAvKioK PiAtICogU1VCVEVTVDogYmFzaWMKPiArICogU1VCVEVTVDogcHNyX2Jhc2ljCj4gwqAgKiBEZXNj cmlwdGlvbjogQmFzaWMgY2hlY2sgZm9yIHBzciBpZiBpdCBpcyBkZXRlY3RpbmcgY2hhbmdlcyBt YWRlCj4gaW4gcGxhbmVzCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gwqAg KiBGdW5jdGlvbmFsaXR5OiBwc3IKPiDCoCAqIE1lZ2EgZmVhdHVyZTogUFNSCj4gwqAgKiBUZXN0 IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiDCoCAqCj4gLSAqIFNVQlRFU1Q6ICVzXyVz Cj4gKyAqIFNVQlRFU1Q6IHBzcl8lc18lcwo+IMKgICogRGVzY3JpcHRpb246IENoZWNrIGlmIHBz ciBpcyBkZXRlY3RpbmcgbWVtb3J5IG1hcHBpbmcsIHJlbmRlcmluZwo+IGFuZCBwbGFuZQo+IMKg ICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiAlYXJn WzFdCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUKPiBAQCAtNjcsNyArNjcsNyBAQAo+ IMKgICovCj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBzcHJpdGVfcGxhbmVfbW92ZQo+ICsg KiBTVUJURVNUOiBwc3Jfc3ByaXRlX3BsYW5lX21vdmUKPiDCoCAqIERlc2NyaXB0aW9uOiBDaGVj ayBpZiBwc3IgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxh bmUKPiDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0aW9ucyBwZXJmb3JtZWQg b24gc3ByaXRlIHBsYW5lcwo+IMKgICogRHJpdmVyIHJlcXVpcmVtZW50OiBpOTE1LCB4ZQo+IEBA IC03NSw3ICs3NSw3IEBACj4gwqAgKiBNZWdhIGZlYXR1cmU6IFBTUgo+IMKgICogVGVzdCBjYXRl Z29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gwqAgKgo+IC0gKiBTVUJURVNUOiAlc18lcwo+ICsg KiBTVUJURVNUOiBwc3JfJXNfJXMKPiDCoCAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwc3IgaXMg ZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxhbmUKPiDCoCAqwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24gJWFyZ1sxXSBw bGFuZXMKPiDCoCAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiBAQCAtOTYsNyArOTYs NyBAQAo+IMKgICovCj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBwcmltYXJ5XyVzCj4gKyAq IFNVQlRFU1Q6IHBzcl9wcmltYXJ5XyVzCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHNy IGlzIGRldGVjdGluZyBtZW1vcnkgbWFwcGluZywgcmVuZGVyaW5nCj4gYW5kIHBsYW5lCj4gwqAg KsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uICVhcmdb MV0gcGxhbmVzCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gQEAgLTExMSw3 ICsxMTEsNyBAQAo+IMKgICovCj4gwqAKPiDCoC8qKgo+IC0gKiBTVUJURVNUOiBkcG1zCj4gKyAq IFNVQlRFU1Q6IHBzcl9kcG1zCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHNyIGlzIGRl dGVjdGluZyBjaGFuZ2VzIHdoZW4gcmVuZGVyaW5nCj4gb3BlcmF0aW9uIGlzCj4gwqAgKsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBlcmZvcm1lZMKgIHdpdGggZHBtcyBlbmFibGVkIG9yIGRp c2FibGVkCj4gwqAgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gQEAgLTExOSwxNCAr MTE5LDE0IEBACj4gwqAgKiBNZWdhIGZlYXR1cmU6IFBTUgo+IMKgICogVGVzdCBjYXRlZ29yeTog ZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gwqAgKgo+IC0gKiBTVUJURVNUOiBub19kcnJzCj4gKyAqIFNV QlRFU1Q6IHBzcl9ub19kcnJzCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHNyIGlzIGRl dGVjdGluZyBjaGFuZ2VzIHdoZW4gZHJycyBpcwo+IGRpc2FibGVkCj4gwqAgKiBEcml2ZXIgcmVx dWlyZW1lbnQ6IGk5MTUsIHhlCj4gwqAgKiBGdW5jdGlvbmFsaXR5OiBkcnJzLCBwc3IKPiDCoCAq IE1lZ2EgZmVhdHVyZTogUFNSCj4gwqAgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRl c3QKPiDCoCAqCj4gLSAqIFNVQlRFU1Q6IHN1c3BlbmQKPiArICogU1VCVEVTVDogcHNyX3N1c3Bl bmQKPiDCoCAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwc3IgaXMgZGV0ZWN0aW5nIGNoYW5nZXMg d2hlbiBwbGFuZQo+IG9wZXJhdGlvbgo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp cyBwZXJmb3JtZWQgd2l0aCBzdXNwZW5kIHJlc3VtZSBjeWNsZXMKPiDCoCAqIERyaXZlciByZXF1 aXJlbWVudDogaTkxNSwgeGUKPiBAQCAtMjI5LDYgKzIyOSwxMTIgQEAKPiDCoCAqIEBwbGFuZV9t b3ZlOsKgwqDCoMKgwqDCoMKgwqAgTW92ZSBwbGFuZSBwb3NpdGlvbgo+IMKgICovCj4gwqAKPiAr LyoqCj4gKyAqIFNVQlRFU1Q6IHByX2RwbXMKPiArICogRGVzY3JpcHRpb246IENoZWNrIGlmIHBy IGlzIGRldGVjdGluZyBjaGFuZ2VzIHdoZW4gcmVuZGVyaW5nCj4gb3BlcmF0aW9uCj4gKyAqwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXMgcGVyZm9ybWVkIHdpdGggZHBtcyBlbmFibGVkIG9y IGRpc2FibGVkCj4gKyAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiArICogRnVuY3Rp b25hbGl0eTogZHBtcywgcHIKPiArICogTWVnYSBmZWF0dXJlOiBQYW5lbCBSZXBsYXkKPiArICog VGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAq IFNVQlRFU1Q6IHByX25vX2RycnMKPiArICogRGVzY3JpcHRpb246IENoZWNrIGlmIHByIGlzIGRl dGVjdGluZyBjaGFuZ2VzIHdoZW4gZHJycyBpcwo+IGRpc2FibGVkCj4gKyAqIERyaXZlciByZXF1 aXJlbWVudDogaTkxNSwgeGUKPiArICogRnVuY3Rpb25hbGl0eTogZHJycywgcHIKPiArICogTWVn YSBmZWF0dXJlOiBQYW5lbCBSZXBsYXkKPiArICogVGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0 eSB0ZXN0Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIFNVQlRFU1Q6IHByX3N1c3BlbmQKPiArICog RGVzY3JpcHRpb246IENoZWNrIGlmIHByIGlzIGRldGVjdGluZyBjaGFuZ2VzIHdoZW4gcGxhbmUK PiBvcGVyYXRpb24gaXMKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwZXJmb3JtZWQg d2l0aCBzdXNwZW5kIHJlc3VtZSBjeWNsZXMKPiArICogRHJpdmVyIHJlcXVpcmVtZW50OiBpOTE1 LCB4ZQo+ICsgKiBGdW5jdGlvbmFsaXR5OiBwciwgc3VzcGVuZAo+ICsgKiBNZWdhIGZlYXR1cmU6 IFBhbmVsIFJlcGxheQo+ICsgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiAr ICovCj4gKwo+ICsvKioKPiArICogU1VCVEVTVDogcHJfYmFzaWMKPiArICogRGVzY3JpcHRpb246 IEJhc2ljIGNoZWNrIGZvciBwciBpZiBpdCBpcyBkZXRlY3RpbmcgY2hhbmdlcyBtYWRlCj4gaW4g cGxhbmVzCj4gKyAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiArICogRnVuY3Rpb25h bGl0eTogcHIKPiArICogTWVnYSBmZWF0dXJlOiBQYW5lbCBSZXBsYXkKPiArICogVGVzdCBjYXRl Z29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIFNVQlRFU1Q6 IHByXyVzXyVzCj4gKyAqIERlc2NyaXB0aW9uOiBDaGVjayBpZiBwciBpcyBkZXRlY3RpbmcgbWVt b3J5IG1hcHBpbmcsIHJlbmRlcmluZwo+IGFuZCBwbGFuZQo+ICsgKsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9uICVhcmdbMV0gcGxhbmVzCj4gKyAqIERy aXZlciByZXF1aXJlbWVudDogaTkxNQo+ICsgKiBGdW5jdGlvbmFsaXR5OiBrbXNfY29yZSwgcGxh bmUsIHByCj4gKyAqIE1lZ2EgZmVhdHVyZTogUGFuZWwgUmVwbGF5Cj4gKyAqIFRlc3QgY2F0ZWdv cnk6IGZ1bmN0aW9uYWxpdHkgdGVzdAo+ICsgKgo+ICsgKiBhcmdbMV06Cj4gKyAqCj4gKyAqIEBj dXJzb3I6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEN1cnNvciBwbGFuZQo+ICsgKiBAcHJpbWFy eTrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFByaW1hcnkgcGxhbmUKPiArICogQHNwcml0ZTrCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgU3ByaXRlIHBsYW5lCj4gKyAqCj4gKyAqIGFyZ1syXToKPiAr ICoKPiArICogQG1tYXBfY3B1OsKgwqDCoMKgwqDCoMKgwqDCoMKgIE1NQVAgQ1BVCj4gKyAqIEBt bWFwX2d0dDrCoMKgwqDCoMKgwqDCoMKgwqDCoCBNTUFQIEdUVAo+ICsgKi8KPiArCj4gKy8qKgo+ ICsgKiBTVUJURVNUOiBwcl9wcmltYXJ5X3BhZ2VfZmxpcAo+ICsgKiBEZXNjcmlwdGlvbjogQ2hl Y2sgaWYgcHIgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxh bmUKPiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBlcmZvcm1lZCBv biBwcmltYXJ5IHBsYW5lcwo+ICsgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gKyAq IEZ1bmN0aW9uYWxpdHk6IHBsYW5lLCBwcgo+ICsgKiBNZWdhIGZlYXR1cmU6IFBhbmVsIFJlcGxh eQo+ICsgKiBUZXN0IGNhdGVnb3J5OiBmdW5jdGlvbmFsaXR5IHRlc3QKPiArICovCj4gKwo+ICsv KioKPiArICogU1VCVEVTVDogcHJfcHJpbWFyeV8lcwo+ICsgKiBEZXNjcmlwdGlvbjogQ2hlY2sg aWYgcHIgaXMgZGV0ZWN0aW5nIG1lbW9yeSBtYXBwaW5nLCByZW5kZXJpbmcKPiBhbmQgcGxhbmUK PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvcGVyYXRpb25zIHBlcmZvcm1lZCBvbiBw cmltYXJ5IHBsYW5lcwo+ICsgKiBEcml2ZXIgcmVxdWlyZW1lbnQ6IGk5MTUsIHhlCj4gKyAqIEZ1 bmN0aW9uYWxpdHk6IGttc19jb3JlLCBwbGFuZSwgcHIKPiArICogTWVnYSBmZWF0dXJlOiBQYW5l bCBSZXBsYXkKPiArICogVGVzdCBjYXRlZ29yeTogZnVuY3Rpb25hbGl0eSB0ZXN0Cj4gKyAqCj4g KyAqIGFyZ1sxXToKPiArICoKPiArICogQGJsdDrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQmxpdHRlcgo+ICsgKiBAcmVuZGVyOsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBSZW5kZXIK PiArICovCj4gKwo+ICsvKioKPiArICogU1VCVEVTVDogcHJfJXNfJXMKPiArICogRGVzY3JpcHRp b246IENoZWNrIGlmIHByIGlzIGRldGVjdGluZyBtZW1vcnkgbWFwcGluZywgcmVuZGVyaW5nCj4g YW5kIHBsYW5lCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3BlcmF0aW9ucyBwZXJm b3JtZWQgb24gJWFyZ1sxXSBwbGFuZXMKPiArICogRHJpdmVyIHJlcXVpcmVtZW50OiBpOTE1LCB4 ZQo+ICsgKiBGdW5jdGlvbmFsaXR5OiBrbXNfY29yZSwgcGxhbmUsIHByCj4gKyAqIE1lZ2EgZmVh dHVyZTogUGFuZWwgUmVwbGF5Cj4gKyAqIFRlc3QgY2F0ZWdvcnk6IGZ1bmN0aW9uYWxpdHkgdGVz dAo+ICsgKgo+ICsgKiBhcmdbMV06Cj4gKyAqCj4gKyAqIEBjdXJzb3I6wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEN1cnNvciBwbGFuZQo+ICsgKiBAc3ByaXRlOsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBTcHJpdGUgcGxhbmUKPiArICoKPiArICogYXJnWzJdOgo+ICsgKgo+ICsgKiBAYmx0OsKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCbGl0dGVyCj4gKyAqIEByZW5kZXI6wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIFJlbmRlcgo+ICsgKiBAcGxhbmVfb25vZmY6wqDCoMKgwqDCoMKg wqAgUGxhbmUgT24gb2ZmCj4gKyAqIEBwbGFuZV9tb3ZlOsKgwqDCoMKgwqDCoMKgwqAgTW92ZSBw bGFuZSBwb3NpdGlvbgo+ICsgKi8KPiArCj4gwqBlbnVtIG9wZXJhdGlvbnMgewo+IMKgwqDCoMKg wqDCoMKgwqBQQUdFX0ZMSVAsCj4gwqDCoMKgwqDCoMKgwqDCoE1NQVBfR1RULAo+IEBAIC0yNzAs OCArMzc2LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgbW9kX3N0 cmlkZTsKPiDCoMKgwqDCoMKgwqDCoMKgZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+IMKgwqDCoMKg wqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiAtwqDCoMKgwqDCoMKgwqBib29sIHdpdGhf cHNyX2Rpc2FibGVkOwo+IC3CoMKgwqDCoMKgwqDCoGJvb2wgc3VwcG9ydHNfcHNyMjsKPiDCoH0g ZGF0YV90Owo+IMKgCj4gwqBzdGF0aWMgdm9pZCBjcmVhdGVfY3Vyc29yX2ZiKGRhdGFfdCAqZGF0 YSkKPiBAQCAtMjg5LDM0ICszOTMsMjAgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2N1cnNvcl9mYihk YXRhX3QgKmRhdGEpCj4gwqDCoMKgwqDCoMKgwqDCoGlndF9wdXRfY2Fpcm9fY3R4KGNyKTsKPiDC oH0KPiDCoAo+IC1zdGF0aWMgdm9pZCBzZXR1cF9vdXRwdXQoZGF0YV90ICpkYXRhKQo+ICtzdGF0 aWMgYm9vbCBvdXRwdXRfc3VwcG9ydHNfcHNyKGRhdGFfdCAqZGF0YSkKPiDCoHsKPiAtwqDCoMKg wqDCoMKgwqBpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4gwqDCoMKg wqDCoMKgwqDCoGlndF9vdXRwdXRfdCAqb3V0cHV0Owo+IC3CoMKgwqDCoMKgwqDCoGVudW0gcGlw ZSBwaXBlOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9waXBlX3dpdGhfdmFsaWRfb3V0 cHV0KGRpc3BsYXksIHBpcGUsIG91dHB1dCkgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkcm1Nb2RlQ29ubmVjdG9yUHRyIGMgPSBvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3I7Cj4g LQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoYy0+Y29ubmVjdG9yX3R5cGUg IT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFpOTE1X3BpcGVfb3V0cHV0X2NvbWJvX3ZhbGlk KGRpc3BsYXkpKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY29udGludWU7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLT5j cnRjX2lkID0gb3V0cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZGF0YS0+b3V0cHV0ID0gb3V0cHV0Owo+IMKgCj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybjsKPiArwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9jb25u ZWN0ZWRfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBvdXRwdXQpIHsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGlmKHBzcl9zaW5rX3N1cHBvcnQoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5k ZWJ1Z2ZzX2ZkLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFBTUl9NT0RFXzIsIG91dHB1dCkgfHwKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwc3Jfc2lua19zdXBwb3J0KGRhdGEtPmRy bV9mZCwgZGF0YS0+ZGVidWdmc19mZCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgUFNSX01PREVfMSwgb3V0cHV0 KSB8fAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBzcl9zaW5rX3N1cHBv cnQoZGF0YS0+ZHJtX2ZkLCBkYXRhLT5kZWJ1Z2ZzX2ZkLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFBSX01P REUsIG91dHB1dCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXR1cm4gdHJ1ZTsKPiDCoMKgwqDCoMKgwqDCoMKgfQo+IC19Cj4gLQo+IC1zdGF0aWMg dm9pZCBkaXNwbGF5X2luaXQoZGF0YV90ICpkYXRhKQo+IC17Cj4gLcKgwqDCoMKgwqDCoMKgaWd0 X2Rpc3BsYXlfcmVxdWlyZSgmZGF0YS0+ZGlzcGxheSwgZGF0YS0+ZHJtX2ZkKTsKPiAtwqDCoMKg wqDCoMKgwqBzZXR1cF9vdXRwdXQoZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIGZhbHNl Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZCBkaXNwbGF5X2ZpbmkoZGF0YV90ICpkYXRhKQo+ IEBAIC00MzAsMzMgKzUyMCwxOCBAQCBzdGF0aWMgdm9pZCBmaWxsX3JlbmRlcihkYXRhX3QgKmRh dGEsIGNvbnN0Cj4gc3RydWN0IGlndF9mYiAqZmIsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBnZW1fYm9fYnVzeShkYXRhLT5kcm1fZmQsIGZiLT5nZW1faGFuZGxlKTsKPiDCoH0K PiDCoAo+IC1zdGF0aWMgYm9vbCBzaW5rX3N1cHBvcnQoZGF0YV90ICpkYXRhLCBlbnVtIHBzcl9t b2RlIG1vZGUpCj4gLXsKPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gZGF0YS0+d2l0aF9wc3JfZGlz YWJsZWQgfHwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHNyX3Npbmtfc3VwcG9ydChk YXRhLT5kcm1fZmQsIGRhdGEtPmRlYnVnZnNfZmQsIG1vZGUsCj4gTlVMTCk7Cj4gLX0KPiAtCj4g wqBzdGF0aWMgYm9vbCBwc3Jfd2FpdF9lbnRyeV9pZl9lbmFibGVkKGRhdGFfdCAqZGF0YSkKPiDC oHsKPiAtwqDCoMKgwqDCoMKgwqBpZiAoZGF0YS0+d2l0aF9wc3JfZGlzYWJsZWQpCj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiB0cnVlOwo+IC0KPiDCoMKgwqDCoMKgwqDC oMKgcmV0dXJuIHBzcl93YWl0X2VudHJ5KGRhdGEtPmRlYnVnZnNfZmQsIGRhdGEtPm9wX3Bzcl9t b2RlLAo+IGRhdGEtPm91dHB1dCk7Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyBib29sIHBzcl93YWl0 X3VwZGF0ZV9pZl9lbmFibGVkKGRhdGFfdCAqZGF0YSkKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBp ZiAoZGF0YS0+d2l0aF9wc3JfZGlzYWJsZWQpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHJldHVybiB0cnVlOwo+IC0KPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHBzcl93YWl0X3Vw ZGF0ZShkYXRhLT5kZWJ1Z2ZzX2ZkLCBkYXRhLT5vcF9wc3JfbW9kZSwKPiBkYXRhLT5vdXRwdXQp Owo+IMKgfQo+IMKgCj4gwqBzdGF0aWMgYm9vbCBwc3JfZW5hYmxlX2lmX2VuYWJsZWQoZGF0YV90 ICpkYXRhKQo+IMKgewo+IC3CoMKgwqDCoMKgwqDCoGlmIChkYXRhLT53aXRoX3Bzcl9kaXNhYmxl ZCkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHRydWU7Cj4gLQo+IMKg wqDCoMKgwqDCoMKgwqByZXR1cm4gcHNyX2VuYWJsZShkYXRhLT5kcm1fZmQsIGRhdGEtPmRlYnVn ZnNfZmQsIGRhdGEtCj4gPm9wX3Bzcl9tb2RlKTsKPiDCoH0KPiDCoAo+IEBAIC01MDIsNyArNTc3 LDcgQEAgc3RhdGljIHZvaWQgZmJfZGlydHlfZmJfaW9jdGwoZGF0YV90ICpkYXRhLAo+IHN0cnVj dCBpZ3RfZmIgKmZiKQo+IMKgfQo+IMKgCj4gwqAvKioKPiAtICogU1VCVEVTVDogY3Vyc29yX3Bs YW5lX21vdmUKPiArICogU1VCVEVTVDogcHNyX2N1cnNvcl9wbGFuZV9tb3ZlCj4gwqAgKiBEZXNj cmlwdGlvbjogQ2hlY2sgaWYgcHNyIGlzIGRldGVjdGluZyB0aGUgcGxhbmUgb3BlcmF0aW9ucwo+ IHBlcmZvcm1lZCBvbgo+IMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGN1cnNvciBwbGFu ZXMKPiDCoCAqIERyaXZlciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiBAQCAtNTEwLDcgKzU4NSw3 IEBAIHN0YXRpYyB2b2lkIGZiX2RpcnR5X2ZiX2lvY3RsKGRhdGFfdCAqZGF0YSwKPiBzdHJ1Y3Qg aWd0X2ZiICpmYikKPiDCoCAqIEZ1bmN0aW9uYWxpdHk6IHBzcgo+IMKgICogTWVnYSBmZWF0dXJl OiBQU1IKPiDCoCAqCj4gLSAqIFNVQlRFU1Q6IHByaW1hcnlfcGFnZV9mbGlwCj4gKyAqIFNVQlRF U1Q6IHBzcl9wcmltYXJ5X3BhZ2VfZmxpcAo+IMKgICogRGVzY3JpcHRpb246IENoZWNrIGlmIHBz ciBpcyBkZXRlY3RpbmcgcGFnZS1mbGlwcGluZyBvcGVyYXRpb25zCj4gcGVyZm9ybWVkCj4gwqAg KsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb24gcHJpbWFyeSBwbGFuZXMKPiDCoCAqIERyaXZl ciByZXF1aXJlbWVudDogaTkxNSwgeGUKPiBAQCAtNTE4LDcgKzU5Myw3IEBAIHN0YXRpYyB2b2lk IGZiX2RpcnR5X2ZiX2lvY3RsKGRhdGFfdCAqZGF0YSwKPiBzdHJ1Y3QgaWd0X2ZiICpmYikKPiDC oCAqIEZ1bmN0aW9uYWxpdHk6IHBzcgo+IMKgICogTWVnYSBmZWF0dXJlOiBQU1IKPiDCoCAqCj4g LSAqIFNVQlRFU1Q6IHNwcml0ZV9wbGFuZV9vbm9mZgo+ICsgKiBTVUJURVNUOiBwc3Jfc3ByaXRl X3BsYW5lX29ub2ZmCj4gwqAgKiBEZXNjcmlwdGlvbjogQ2hlY2sgaWYgcHNyIGlzIGRldGVjdGlu ZyB0aGUgcGxhbmUgb3BlcmF0aW9ucwo+IHBlcmZvcm1lZCBvbgo+IMKgICrCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHNwcml0ZSBwbGFuZXMKPiDCoCAqIERyaXZlciByZXF1aXJlbWVudDogaTkx NSwgeGUKPiBAQCAtNjgzLDE0ICs3NTgsMzUgQEAgc3RhdGljIHZvaWQgc2V0dXBfdGVzdF9wbGFu ZShkYXRhX3QgKmRhdGEsIGludAo+IHRlc3RfcGxhbmUpCj4gwqDCoMKgwqDCoMKgwqDCoGlndF9k aXNwbGF5X2NvbW1pdCgmZGF0YS0+ZGlzcGxheSk7Cj4gwqB9Cj4gwqAKPiArc3RhdGljIGVudW0g cGlwZSBnZXRfcGlwZV9mb3Jfb3V0cHV0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWd0X291dHB1dF90ICpvdXRwdXQpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqAgZW51 bSBwaXBlIHBpcGU7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoCBmb3JfZWFjaF9waXBlKGRpc3BsYXks IHBpcGUpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpZ3RfcGlwZV9j b25uZWN0b3JfdmFsaWQocGlwZSwgb3V0cHV0KSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBwaXBlOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDCoCB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oCBpZ3RfYXNzZXJ0X2YoZmFsc2UsICJObyBwaXBlIGZvdW5kIGZvciBvdXRwdXQgJXNcbiIsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X291dHB1dF9uYW1l KG91dHB1dCkpOwo+ICt9Cj4gKwo+IMKgc3RhdGljIHZvaWQgdGVzdF9zZXR1cChkYXRhX3QgKmRh dGEpCj4gwqB7Cj4gK8KgwqDCoMKgwqDCoMKgZW51bSBwaXBlIHBpcGU7Cj4gwqDCoMKgwqDCoMKg wqDCoGRybU1vZGVDb25uZWN0b3JQdHIgY29ubmVjdG9yOwo+IMKgwqDCoMKgwqDCoMKgwqBib29s IHBzcl9lbnRlcmVkID0gZmFsc2U7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmVf ZihkYXRhLT5vdXRwdXQsCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICJObyBhdmFpbGFibGUgb3V0cHV0IGZvdW5kXG4iKTsKPiDCoAo+ICvCoMKgwqDCoMKgwqDC oCBwaXBlID0gZ2V0X3BpcGVfZm9yX291dHB1dCgmZGF0YS0+ZGlzcGxheSwgZGF0YS0+b3V0cHV0 KTsKPiArwqDCoMKgwqDCoMKgwqAgaWd0X291dHB1dF9zZXRfcGlwZShkYXRhLT5vdXRwdXQsIHBp cGUpOwo+ICvCoMKgwqDCoMKgwqDCoCBpZ3RfcmVxdWlyZV9mKGk5MTVfcGlwZV9vdXRwdXRfY29t Ym9fdmFsaWQoJmRhdGEtPmRpc3BsYXkpLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgIm91dHB1dCBwaXBlIGNvbWJvIG5vdCB2YWxpZFxuIik7Cj4gK8KgwqDC oMKgwqDCoMKgZGF0YS0+Y3J0Y19pZCA9IGRhdGEtPm91dHB1dC0+Y29uZmlnLmNydGMtPmNydGNf aWQ7Cj4gwqDCoMKgwqDCoMKgwqDCoGNvbm5lY3RvciA9IGRhdGEtPm91dHB1dC0+Y29uZmlnLmNv bm5lY3RvcjsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBmb3IgKGludCBpID0gMDsgaSA8IGNvbm5l Y3Rvci0+Y291bnRfbW9kZXM7IGkrKykgewo+IEBAIC03MDAsOSArNzk2LDYgQEAgc3RhdGljIHZv aWQgdGVzdF9zZXR1cChkYXRhX3QgKmRhdGEpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGlndF9vdXRwdXRfb3ZlcnJpZGVfbW9kZShkYXRhLT5vdXRwdXQsIGRhdGEtPm1v ZGUpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChkYXRhLT5vcF9w c3JfbW9kZSA9PSBQU1JfTU9ERV8yKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmUoZGF0YS0+c3VwcG9ydHNfcHNyMik7Cj4gLQo+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHNyX2VuYWJsZV9pZl9lbmFibGVkKGRhdGEp Owo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0dXBfdGVzdF9wbGFuZShkYXRh LCBkYXRhLT50ZXN0X3BsYW5lX2lkKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChwc3Jfd2FpdF9lbnRyeV9pZl9lbmFibGVkKGRhdGEpKSB7Cj4gQEAgLTcyMiwxNDYgKzgx NSwxODMgQEAgc3RhdGljIHZvaWQgZHBtc19vZmZfb24oZGF0YV90ICpkYXRhKQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIERSTV9NT0RFX0RQTVNfT04pOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgb3B0X2hhbmRs ZXIoaW50IG9wdCwgaW50IG9wdF9pbmRleCwgdm9pZCAqX2RhdGEpCj4gLXsKPiAtwqDCoMKgwqDC oMKgwqBkYXRhX3QgKmRhdGEgPSBfZGF0YTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgc3dpdGNoIChv cHQpIHsKPiAtwqDCoMKgwqDCoMKgwqBjYXNlICduJzoKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZGF0YS0+d2l0aF9wc3JfZGlzYWJsZWQgPSB0cnVlOwo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiAtwqDCoMKgwqDCoMKgwqBkZWZhdWx0Ogo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gSUdUX09QVF9IQU5ETEVSX0VSUk9SOwo+ IC3CoMKgwqDCoMKgwqDCoH0KPiAtCj4gLcKgwqDCoMKgwqDCoMKgcmV0dXJuIElHVF9PUFRfSEFO RExFUl9TVUNDRVNTOwo+IC19Cj4gLQo+IC1jb25zdCBjaGFyICpoZWxwX3N0ciA9Cj4gLcKgwqDC oMKgwqDCoMKgIsKgIC0tbm8tcHNyXHRSdW4gdGVzdCB3aXRob3V0IFBTUi9QU1IyLiI7Cj4gLXN0 YXRpYyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0gewo+IC3CoMKgwqDCoMKgwqDCoHsi bm8tcHNyIiwgMCwgMCwgJ24nfSwKPiAtwqDCoMKgwqDCoMKgwqB7IDAsIDAsIDAsIDAgfQo+IC19 Owo+IMKgZGF0YV90IGRhdGEgPSB7fTsKPiDCoAo+IC1pZ3RfbWFpbl9hcmdzKCIiLCBsb25nX29w dGlvbnMsIGhlbHBfc3RyLCBvcHRfaGFuZGxlciwgJmRhdGEpCj4gK2lndF9tYWluCj4gwqB7Cj4g K8KgwqDCoMKgwqDCoMKgaW50IHo7Cj4gwqDCoMKgwqDCoMKgwqDCoGVudW0gb3BlcmF0aW9ucyBv cDsKPiAtwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICphcHBlbmRfc3VidGVzdF9uYW1lWzJdID0g ewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAiIiwKPiAtwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgInBzcjJfIgo+ICvCoMKgwqDCoMKgwqDCoGNvbnN0IGNoYXIgKmFwcGVu ZF9zdWJ0ZXN0X25hbWVbM10gPSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCJw c3JfIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInBzcjJfIiwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgInByXyIKPiDCoMKgwqDCoMKgwqDCoMKgfTsKPiArwqDC oMKgwqDCoMKgwqBpbnQgbW9kZXNbXSA9IHtQU1JfTU9ERV8xLCBQU1JfTU9ERV8yLCBQUl9NT0RF fTsKPiArwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiDCoAo+IMKgwqDCoMKg wqDCoMKgwqBpZ3RfZml4dHVyZSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk YXRhLmRybV9mZCA9IGRybV9vcGVuX2RyaXZlcl9tYXN0ZXIoRFJJVkVSX0lOVEVMIHwKPiBEUklW RVJfWEUpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5kZWJ1Z2ZzX2Zk ID0gaWd0X2RlYnVnZnNfZGlyKGRhdGEuZHJtX2ZkKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUoKTsKPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEuZGV2aWQgPSBpbnRlbF9nZXRfZHJtX2RldmlkKGRhdGEu ZHJtX2ZkKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9yZXF1aXJl X2Yoc2lua19zdXBwb3J0KCZkYXRhLCBQU1JfTU9ERV8xKSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIlNpbmsgZG9lcyBub3Qgc3Vw cG9ydCBQU1JcbiIpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5z dXBwb3J0c19wc3IyID0gc2lua19zdXBwb3J0KCZkYXRhLCBQU1JfTU9ERV8yKTsKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEuYm9wcyA9IGJ1Zl9vcHNfY3JlYXRlKGRhdGEu ZHJtX2ZkKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGlzcGxheV9pbml0KCZk YXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVxdWly ZSgmZGF0YS5kaXNwbGF5LCBkYXRhLmRybV9mZCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZ3RfcmVxdWlyZV9mKG91dHB1dF9zdXBwb3J0c19wc3IoJmRhdGEpLCAiU2luayBk b2VzCj4gbm90IHN1cHBvcnQgUFNSL1BTUjIvUFJcbiIpOwo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4g wqAKPiAtwqDCoMKgwqDCoMKgwqBmb3IgKGRhdGEub3BfcHNyX21vZGUgPSBQU1JfTU9ERV8xOyBk YXRhLm9wX3Bzcl9tb2RlIDw9Cj4gUFNSX01PREVfMjsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkYXRhLm9wX3Bzcl9tb2RlKyspIHsKPiArwqDCoMKgwqDCoMKgwqBmb3IgKHogPSAwOyB6IDwg QVJSQVlfU0laRShtb2Rlcyk7IHorKykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkYXRhLm9wX3Bzcl9tb2RlID0gbW9kZXNbel07Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlndF9kZXNjcmliZSgiQmFzaWMgY2hlY2sgZm9yIHBzciBpZiBpdCBpcyBk ZXRlY3RpbmcKPiBjaGFuZ2VzIG1hZGUgaW4gcGxhbmVzIik7Cj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0X2YoIiVzYmFzaWMiLAo+IGFwcGVuZF9zdWJ0ZXN0X25h bWVbZGF0YS5vcF9wc3JfbW9kZV0pIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9IERSTV9QTEFORV9UWVBFX1BSSU1B Ulk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0 X3NldHVwKCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19mKCIlc2Jhc2ljIiwKPiBhcHBlbmRfc3VidGVz dF9uYW1lW3pdKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZkYXRhLmRpc3BsYXksCj4gb3V0cHV0KSB7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKCFwc3Jfc2lua19zdXBwb3J0KGRhdGEuZHJtX2ZkLAo+IGRhdGEuZGVidWdm c19mZCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAK PiBkYXRhLm9wX3Bzcl9tb2RlLCBvdXRwdXQpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250 aW51ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9yZXNldCgmZGF0YS5kaXNwbGF5KTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk YXRhLm91dHB1dCA9IG91dHB1dDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZHluYW1pY19mKCIlcyIsIGRhdGEub3V0 cHV0LQo+ID5uYW1lKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9p ZCA9Cj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVz dF9zZXR1cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0 YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVzY3JpYmUoIkNoZWNrIGlmIHBzciBpcyBk ZXRlY3RpbmcgY2hhbmdlcyB3aGVuCj4gZHJycyBpcyBkaXNhYmxlZCIpOwo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF9mKCIlc25vX2RycnMiLAo+IGFwcGVuZF9z dWJ0ZXN0X25hbWVbZGF0YS5vcF9wc3JfbW9kZV0pIHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9IERSTV9QTEFORV9U WVBFX1BSSU1BUlk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoZHJyc19kaXNhYmxlZCgmZGF0YSkpOwo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZk YXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3Rfd2l0aF9k eW5hbWljX2YoIiVzbm9fZHJycyIsCj4gYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSkgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVj dGVkX291dHB1dCgmZGF0YS5kaXNwbGF5LAo+IG91dHB1dCkgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghcHNyX3Np bmtfc3VwcG9ydChkYXRhLmRybV9mZCwKPiBkYXRhLmRlYnVnZnNfZmQsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gZGF0YS5vcF9wc3JfbW9kZSwg b3V0cHV0KSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9k aXNwbGF5X3Jlc2V0KCZkYXRhLmRpc3BsYXkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhLm91dHB1dCA9IG91dHB1 dDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaWd0X2R5bmFtaWNfZigiJXMiLCBkYXRhLm91dHB1dC0KPiA+bmFtZSkgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLnRlc3RfcGxhbmVfaWQgPQo+IERSTV9QTEFORV9U WVBFX1BSSU1BUlk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KGRycnNfZGlzYWJsZWQoJmRhdAo+IGEp KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZvciAob3AgPSBQQUdFX0ZMSVA7IG9wIDw9IFJFTkRFUjsgb3ArKykgewo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kZXNj cmliZSgiQ2hlY2sgaWYgcHNyIGlzIGRldGVjdGluZyBwYWdlLQo+IGZsaXBwaW5nLG1lbW9yeSBt YXBwaW5nIGFuZCAiCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAicmVuZGVyaW5nIG9wZXJhdGlv bnMKPiBwZXJmb3JtZWQgb24gcHJpbWFyeSBwbGFuZXMiKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0X2YoIiVzcHJpbWFyeV8lcyIs Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoAo+IGFwcGVuZF9zdWJ0ZXN0X25hbWVbZGF0YS5vcF9wc3JfbW9k ZV0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rf c3VidGVzdF93aXRoX2R5bmFtaWNfZigiJXNwcmltYXJ5XyVzIiwKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFwcGVuZF9zdWJ0ZXN0X25hbWVbel0sCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3Bfc3RyKG9wKSkg ewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3Rfc2tpcF9vbihpc194ZV9kZXZpY2UoZGF0YS5kcm1fZmQpCj4gJiYKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAob3AgPT0gTU1BUF9DUFUgfHwgb3AgPT0KPiBN TUFQX0dUVCkpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLm9wID0gb3A7Cj4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS50ZXN0X3Bs YW5lX2lkID0KPiBEUk1fUExBTkVfVFlQRV9QUklNQVJZOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoJmRh dGEpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHJ1bl90ZXN0KCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRhdGEp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGZvcl9lYWNoX2Nvbm5lY3RlZF9vdXRwdXQoJmRhdGEuZGlzcGwKPiBheSwgb3V0 cHV0KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmCj4gKCFwc3Jfc2lua19zdXBwb3J0KGRh dGEuZHJtX2ZkLCBkYXRhLmRlYnVnZnNfZmQsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IGRhdGEub3BfcHNyX21vZGUs IG91dHB1dCkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjb250aW51 ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEuZGlzcGwK PiBheSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEub3V0cHV0ID0gb3V0cHV0Owo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZHluYW1pY19mKCIlcyIsCj4gZGF0YS5vdXRwdXQtPm5h bWUpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEub3AgPSBv cDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFu ZV9pZCA9Cj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHRlc3Rfc2V0dXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgcnVuX3Rlc3QoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAob3AgPSBNTUFQX0dUVDsgb3AgPD0g UExBTkVfT05PRkY7IG9wKyspIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZ3RfZGVzY3JpYmUoIkNoZWNrIGlmIHBzciBpcyBkZXRlY3RpbmcKPiBt ZW1vcnkgbWFwcGluZyxyZW5kZXJpbmcgIgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgImFuZCBw bGFuZSBvcGVyYXRpb25zCj4gcGVyZm9ybWVkIG9uIHNwcml0ZSBwbGFuZXMiKTsKPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zdWJ0ZXN0X2YoIiVz c3ByaXRlXyVzIiwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gYXBwZW5kX3N1YnRlc3RfbmFtZVtkYXRh Lm9wX3Bzcl9tb2RlXSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlndF9zdWJ0ZXN0X3dpdGhfZHluYW1pY19mKCIlc3Nwcml0ZV8lcyIsCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBhcHBlbmRfc3VidGVzdF9uYW1lW3pdLAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG9w X3N0cihvcCkpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3NraXBfb24oaXNfeGVfZGV2aWNlKGRhdGEuZHJtX2Zk KQo+ICYmCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG9wID09IE1NQVBfQ1BVIHx8 IG9wID09Cj4gTU1BUF9HVFQpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vcCA9IG9wOwo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRh dGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWTsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0 X3NldHVwKCZkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5fdGVzdCgmZGF0YSk7Cj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVh bnVwKCZkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZkYXRhLmRpc3Bs Cj4gYXksIG91dHB1dCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZgo+ICghcHNyX3Npbmtf c3VwcG9ydChkYXRhLmRybV9mZCwgZGF0YS5kZWJ1Z2ZzX2ZkLAo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBkYXRhLm9w X3Bzcl9tb2RlLCBvdXRwdXQpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3Jlc2V0KCZk YXRhLmRpc3BsCj4gYXkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLm91dHB1dCA9IG91 dHB1dDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2R5bmFtaWNfZigiJXMiLAo+IGRhdGEu b3V0cHV0LT5uYW1lKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk YXRhLm9wID0gb3A7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRh LnRlc3RfcGxhbmVfaWQgPQo+IERSTV9QTEFORV9UWVBFX09WRVJMQVk7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ1bl90ZXN0KCZkYXRhKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rlc2NyaWJlKCJDaGVjayBpZiBwc3IgaXMgZGV0ZWN0 aW5nCj4gbWVtb3J5IG1hcHBpbmcsIHJlbmRlcmluZyAiCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAiYW5kIHBsYW5lIG9wZXJhdGlvbnMKPiBwZXJmb3JtZWQgb24gY3Vyc29yIHBsYW5lcyIpOwo+ IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N1YnRl c3RfZigiJXNjdXJzb3JfJXMiLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBhcHBlbmRfc3VidGVzdF9u YW1lW2RhdGEub3BfcHNyX21vZGVdLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljX2YoIiVzY3Vyc29yXyVzIiwK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGFwcGVuZF9zdWJ0ZXN0X25hbWVbel0sCj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgb3Bfc3RyKG9wKSkgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfc2tpcF9vbihpc194ZV9kZXZpY2UoZGF0 YS5kcm1fZmQpCj4gJiYKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAob3AgPT0gTU1B UF9DUFUgfHwgb3AgPT0KPiBNTUFQX0dUVCkpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLm9wID0gb3A7Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lkID0KPiBEUk1fUExBTkVfVFlQRV9DVVJTT1I7Cj4gLcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgdGVzdF9zZXR1cCgmZGF0YSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVuX3Rlc3QoJmRhdGEpOwo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRl c3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVjdGVkX291dHB1dCgmZGF0 YS5kaXNwbAo+IGF5LCBvdXRwdXQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYKPiAoIXBz cl9zaW5rX3N1cHBvcnQoZGF0YS5kcm1fZmQsIGRhdGEuZGVidWdmc19mZCwKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4g ZGF0YS5vcF9wc3JfbW9kZSwgb3V0cHV0KSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNvbnRpbnVlOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9y ZXNldCgmZGF0YS5kaXNwbAo+IGF5KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGF0YS5vdXRw dXQgPSBvdXRwdXQ7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9keW5hbWljX2YoIiVzIiwK PiBkYXRhLm91dHB1dC0+bmFtZSkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZGF0YS50ZXN0X3BsYW5lX2lkID0KPiBEUk1fUExBTkVfVFlQRV9DVVJTT1I7Cj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJ1bl90ZXN0KCZkYXRhKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7 Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVz Y3JpYmUoIkNoZWNrIGlmIHBzciBpcyBkZXRlY3RpbmcgY2hhbmdlcyB3aGVuCj4gcmVuZGVyaW5n IG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQiCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCLCoCB3aXRoIGRwbXMgZW5hYmxlZCBv ciBkaXNhYmxlZCIpOwo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVz dF9mKCIlc2RwbXMiLAo+IGFwcGVuZF9zdWJ0ZXN0X25hbWVbZGF0YS5vcF9wc3JfbW9kZV0pIHsK PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEub3Ag PSBSRU5ERVI7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBkYXRhLnRlc3RfcGxhbmVfaWQgPSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOwo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1cCgmZGF0YSk7 Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkcG1zX29m Zl9vbigmZGF0YSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBydW5fdGVzdCgmZGF0YSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB0ZXN0X2NsZWFudXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWNfZigiJXNkcG1zIiwKPiBhcHBlbmRf c3VidGVzdF9uYW1lW3pdKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBmb3JfZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZkYXRhLmRpc3BsYXksCj4gb3V0 cHV0KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWYgKCFwc3Jfc2lua19zdXBwb3J0KGRhdGEuZHJtX2ZkLAo+IGRhdGEu ZGVidWdmc19mZCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAKPiBkYXRhLm9wX3Bzcl9tb2RlLCBvdXRwdXQpKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBjb250aW51ZTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWd0X2Rpc3BsYXlfcmVzZXQoJmRhdGEuZGlzcGxheSk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGRhdGEub3V0cHV0ID0gb3V0cHV0Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZ3RfZHluYW1pY19mKCIlcyIs IGRhdGEub3V0cHV0LQo+ID5uYW1lKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEub3Ag PSBSRU5ERVI7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9Cj4g RFJNX1BMQU5FX1RZUEVfUFJJTUFSWTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9zZXR1 cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRwbXNfb2ZmX29uKCZkYXRhKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVuX3Rlc3QoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB0ZXN0X2NsZWFudXAoJmRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rlc2Ny aWJlKCJDaGVjayBpZiBwc3IgaXMgZGV0ZWN0aW5nIGNoYW5nZXMgd2hlbgo+IHBsYW5lIG9wZXJh dGlvbiBpcyBwZXJmb3JtZWQgIgo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAid2l0aCBzdXNwZW5kIHJlc3VtZSBjeWNsZXMi KTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3RfZigiJXNzdXNw ZW5kIiwKPiBhcHBlbmRfc3VidGVzdF9uYW1lW2RhdGEub3BfcHNyX21vZGVdKSB7Cj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLm9wID0gUExBTkVf T05PRkY7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBk YXRhLnRlc3RfcGxhbmVfaWQgPSBEUk1fUExBTkVfVFlQRV9DVVJTT1I7Cj4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiAt Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9zeXN0 ZW1fc3VzcGVuZF9hdXRvcmVzdW1lKFNVU1BFTkRfU1RBVEVfTUVNCj4gLAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+IFNVU1BFTkRfVEVTVF9OT05F KTsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9h c3NlcnQocHNyX3dhaXRfZW50cnlfaWZfZW5hYmxlZCgmZGF0YSkpOwo+IC3CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVuX3Rlc3QoJmRhdGEpOwo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9jbGVhbnVwKCZk YXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3Rfd2l0aF9k eW5hbWljX2YoIiVzc3VzcGVuZCIsCj4gYXBwZW5kX3N1YnRlc3RfbmFtZVt6XSkgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yX2VhY2hfY29ubmVj dGVkX291dHB1dCgmZGF0YS5kaXNwbGF5LAo+IG91dHB1dCkgewo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghcHNyX3Np bmtfc3VwcG9ydChkYXRhLmRybV9mZCwKPiBkYXRhLmRlYnVnZnNfZmQsCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gZGF0YS5vcF9wc3JfbW9kZSwg b3V0cHV0KSkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlndF9k aXNwbGF5X3Jlc2V0KCZkYXRhLmRpc3BsYXkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhLm91dHB1dCA9IG91dHB1 dDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgaWd0X2R5bmFtaWNfZigiJXMiLCBkYXRhLm91dHB1dC0KPiA+bmFtZSkgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhLm9wID0gUExBTkVfT05PRkY7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGRhdGEudGVzdF9wbGFuZV9pZCA9Cj4gRFJNX1BMQU5FX1RZUEVfQ1VSU09S Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0ZXN0X3NldHVwKCZkYXRhKTsKPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaWd0X3N5c3RlbV9zdXNwZW5kX2F1dG9yZXN1bWUKPiAoU1VTUEVORF9TVEFU RV9NRU0sCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAKPiBTVVNQRU5EX1RFU1RfTk9ORSk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQocHNyX3dhaXRfZW50cnlfaWZfCj4gZW5h YmxlZCgmZGF0YSkpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW5fdGVzdCgmZGF0YSk7Cj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY2xlYW51cCgmZGF0YSk7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgaWd0X2ZpeHR1cmUgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoIWRhdGEud2l0aF9wc3JfZGlzYWJsZWQpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwc3JfZGlzYWJsZShkYXRhLmRybV9mZCwgZGF0YS5kZWJ1 Z2ZzX2ZkKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHNyX2Rpc2FibGUoZGF0 YS5kcm1fZmQsIGRhdGEuZGVidWdmc19mZCk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGNsb3NlKGRhdGEuZGVidWdmc19mZCk7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBidWZfb3BzX2Rlc3Ryb3koZGF0YS5ib3BzKTsKCg==