[Users] Problems using the PythonSDK

--_000_5F9E965F5A80BC468BE5F40576769F092A1AEA78exchange21_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkhDQoNCldlwrRyZSBpbiB0aGUgcHJvY2VzcyBvZiBidWlsZGluZyBhbiBvcmRlcnBvcnRhbCB3 aGVyZSBvdXIgY3VzdG9tZXJzIHdpbGwgYmUgYWJsZSB0byBsb2cgaW4sIHNlbGVjdCBhIHZpcnR1 YWwgbWFjaGluZSB0ZW1wbGF0ZSwgdHlwZSBpbiBhIGRlc2lyZWQgaG9zdG5hbWUgYW5kIGl0IHdp bGwgYmUgYXV0b21hdGljYWxseSBjcmVhdGVkLCBhbmQgdGhleSByZWNpZXZlIGEgbWFpbCBleHBs YWluaW5nIHdoYXQgdGhlecK0dmUgZ290dGVuIHRoZW1zZWx2ZXMgaW50bzopLiBGb3IgdGhpcyBJ IGZpZ3VyZWQgdGhlIFB5dGhvblNESyB3b3VsZCBiZSB0aGUgYmVzdCBjaG9pY2UgYnV0IEnCtG0g aGF2aW5nIHRyb3VibGUgdXNpbmcgaXQuIFdoYXQgd2XCtHZlIGRvbmUgc28gZmFyIGlzOg0KDQox KSBDcmVhdGUgYSBuZXcgVk0gZnJvbSBhIHRlbXBsYXRlOyBPSy4gSSBmb3VuZCBhbiBleGFtcGxl IGFuZCBpdCB3b3JrZWQgT09UQg0KMikgUmVuYW1lIHRoZSBuZXcgVk3CtHMgZGlzayBmcm9tICR7 VGVtcGxhdGVOYW1lfV9EaXNrMSB0byAke1ZNTmFtZX1fRGlzazE7IE5vdCBPSy4gSSBmb3VuZCBh biBleGFtcGxlIG9mIGhvdyB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBWTU5pYyBhbmQgdGhhdCB3 b3JrcywgYnV0IHVzaW5nIHRoZSBzYW1lIG1ldGhvZCB0byBjaGFuZ2UgVk1EaXNrwrRzIG5hbWUg ZG9lcyBub3QgKEZZSSwgdGhlIFZNIG9ubHkgaGFzIG9uZSBWTmljIGFuZCBWRGlzayk6DQo+Pj4g ZnJvbSBvdmlydHNkay54bWwgaW1wb3J0IHBhcmFtcw0KPj4+IGZyb20gb3ZpcnRzZGsuYXBpIGlt cG9ydCBBUEkNCj4+PiBhcGkgPSBBUEkodXJsPSdodHRwczovLyR7RU5HSU5FfTo0NDMvYXBpJyw8 aHR0cHM6Ly9zdG9ybS5zbHUuc2U6NDQzL2FwaScsPiBjYV9maWxlPScke0NBQ0VSVH0nLCB1c2Vy bmFtZT0nYWRtaW5AaW50ZXJuYWw8bWFpbHRvOidhZG1pbkBpbnRlcm5hbD4nLCBwYXNzd29yZD0n bGV0bWVpbiEnKQ0KPj4+IHZtID0gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykNCg0KPj4+IHZt bmljID0gdm0ubmljcy5nZXQobmFtZT0nKicpDQo+Pj4gdm1uaWMubmFtZQ0KJ25pYzEnDQo+Pj4g YXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpDQonbmljMScNCj4+ PiB2bW5pYy5uYW1lPSduaWMyJw0KPj4+IHZtbmljLnVwZGF0ZSgpDQo+Pj4gYXBpLnZtcy5nZXQo bmFtZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpDQonbmljMicNCj4+PiB2bW5pYy5uYW1l DQonbmljMicNCg0KPj4+IHZtZGlzayA9IHZtLmRpc2tzLmdldChuYW1lPScqJykNCj4+PiB2bWRp c2submFtZQ0KJ1RlbXBsYXRlTmFtZV9EaXNrMScNCj4+PiBhcGkudm1zLmdldChuYW1lPSdWTU5h bWUnKS5kaXNrcy5nZXQobmFtZT0nKicpDQonVGVtcGxhdGVOYW1lX0Rpc2sxJw0KPj4+IHZtZGlz ay5uYW1lPSdWTU5hbWVfRGlzazEnDQo+Pj4gdm1kaXNrLnVwZGF0ZSgpDQo+Pj4gdm1kaXNrLm5h bWUNCidWTU5hbWVfRGlzazEnDQo+Pj4gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3Mu Z2V0KG5hbWU9JyonKQ0KJ1RlbXBsYXRlTmFtZV9EaXNrMScNCg0KU2VlPyBBbSBJIGhvbGRpbmcg aXQgd3Jvbmc/DQoNCjMpIENyZWF0ZSBhIHNuYXBzaG90IGNhbGxlZCAiT3JpZ2luIiwgc28gaWYg YSBjdXN0b21lciBjYWxscyBpbiBhbmQgc2F5cyB0aGV5wrR2ZSBib3JrZWQgaXQgY29tcGxldGVs eSwgd2XCtGxsIGp1c3QgcmV2ZXJ0IHRvIGl0wrRzICJPcmlnaW4iIGFuZCB0aGV5wrRyZSB1cCBh bmQgcnVubmluZyBhZ2FpbjsgT0ssIGZvdW5kIGFub3RoZXIgT09UQiBleGFtcGxlLCB0aGFuayB5 b3UuDQo0KSBBZGQgdGhlIGN1c3RvbWVyIHRvIFZNwrRzIFBlcm1pc3Npb25zIHdpdGggYW4gYXBw cm9wcmlhdGUgcm9sZTsgTm90IE9LLiBJIGhhdmUgZm91bmQgbm8gZXhhbXBsZXMgb24gaG93IHRv IGRvIHRoaXMgYW5kIGp1c3QgZG9uwrR0IGtub3cgd2hlcmUgdG8gc3RhcnQgbG9va2luZy4gQlRX LCBjcmVhdGluZyBhIG5ldyBWTSB3aXRoIFB5dGhvbiByZXN1bHRzIGluIFBlcm1pc3Npb25zIGNv bXBsZXRlbHkgZW1wdHksIG5vIGluaGVyaXRhbmNlIGVpdGhlci4gRG9uwrR0IGtub3cgaWYgdGhh dCBpcyBpbnRlbmRlZC4uLg0KDQpjbGllbnQjIHJwbSAtcWEgfCBncmVwIG92aXJ0DQpvdmlydC1l bmdpbmUtY2xpLTMuMi4wLjExLTEuZmMxNy5ub2FyY2gNCm92aXJ0LWVuZ2luZS1zZGstMy4yLjAu MTAtMS5mYzE3Lm5vYXJjaA0KDQplbmdpbmUjIHJwbSAtcWEgfCBncmVwIG92aXJ0DQpvdmlydC1l bmdpbmUtY29uZmlnLTMuMS4wLTQuZmMxNy5ub2FyY2gNCm92aXJ0LWVuZ2luZS1kYnNjcmlwdHMt My4xLjAtNC5mYzE3Lm5vYXJjaA0Kb3ZpcnQtbG9nLWNvbGxlY3Rvci0zLjEuMC0wLmdpdDEwZDcx OS5mYzE3Lm5vYXJjaA0Kb3ZpcnQtZW5naW5lLXJlc3RhcGktMy4xLjAtNC5mYzE3Lm5vYXJjaA0K b3ZpcnQtaW1hZ2UtdXBsb2FkZXItMy4xLjAtMC5naXQ5YzQyYzguZmMxNy5ub2FyY2gNCm92aXJ0 LWVuZ2luZS1nZW5lcmljYXBpLTMuMS4wLTQuZmMxNy5ub2FyY2gNCm92aXJ0LWlzby11cGxvYWRl ci0zLjEuMC0wLmdpdDE4NDFkOS5mYzE3Lm5vYXJjaA0Kb3ZpcnQtZW5naW5lLXdlYmFkbWluLXBv cnRhbC0zLjEuMC00LmZjMTcubm9hcmNoDQpvdmlydC1lbmdpbmUtc2V0dXAtMy4xLjAtNC5mYzE3 Lm5vYXJjaA0Kb3ZpcnQtZW5naW5lLXNkay0zLjIuMC4yLTEuZmMxNy5ub2FyY2gNCm92aXJ0LWVu Z2luZS1iYWNrZW5kLTMuMS4wLTQuZmMxNy5ub2FyY2gNCm92aXJ0LWVuZ2luZS10b29scy1jb21t b24tMy4xLjAtNC5mYzE3Lm5vYXJjaA0Kb3ZpcnQtZW5naW5lLTMuMS4wLTQuZmMxNy5ub2FyY2gN Cm92aXJ0LWVuZ2luZS11c2VycG9ydGFsLTMuMS4wLTQuZmMxNy5ub2FyY2gNCm92aXJ0LWVuZ2lu ZS1ub3RpZmljYXRpb24tc2VydmljZS0zLjEuMC00LmZjMTcubm9hcmNoDQoNCi0tDQoNCkJlc3Qg UmVnYXJkcw0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KS2FybGkgU2rDtmJlcmcNClN3ZWRpc2gg VW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXMNCkJveCA3MDc5IChWaXNpdGluZyBB ZGRyZXNzIEtyb27DpXN2w6RnZW4gOCkNClMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbg0KUGhvbmU6 ICArNDYtKDApMTgtNjcgMTUgNjYNCmthcmxpLnNqb2JlcmdAc2x1LnNlPG1haWx0bzprYXJsaS5z am9iZXJnQGFkbS5zbHUuc2U+DQo= --_000_5F9E965F5A80BC468BE5F40576769F092A1AEA78exchange21_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwv L0VOIj4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQo8bWV0YSBuYW1lPSJHRU5FUkFUT1Ii IGNvbnRlbnQ9Ikd0a0hUTUwvNC40LjQiPg0KPC9oZWFkPg0KPGJvZHk+DQpIaSE8YnI+DQo8YnI+ DQpXZcK0cmUgaW4gdGhlIHByb2Nlc3Mgb2YgYnVpbGRpbmcgYW4gb3JkZXJwb3J0YWwgd2hlcmUg b3VyIGN1c3RvbWVycyB3aWxsIGJlIGFibGUgdG8gbG9nIGluLCBzZWxlY3QgYSB2aXJ0dWFsIG1h Y2hpbmUgdGVtcGxhdGUsIHR5cGUgaW4gYSBkZXNpcmVkIGhvc3RuYW1lIGFuZCBpdCB3aWxsIGJl IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCwgYW5kIHRoZXkgcmVjaWV2ZSBhIG1haWwgZXhwbGFpbmlu ZyB3aGF0IHRoZXnCtHZlIGdvdHRlbiB0aGVtc2VsdmVzDQogaW50bzopLiBGb3IgdGhpcyBJIGZp Z3VyZWQgdGhlIFB5dGhvblNESyB3b3VsZCBiZSB0aGUgYmVzdCBjaG9pY2UgYnV0IEnCtG0gaGF2 aW5nIHRyb3VibGUgdXNpbmcgaXQuIFdoYXQgd2XCtHZlIGRvbmUgc28gZmFyIGlzOjxicj4NCjxi cj4NCjEpIENyZWF0ZSBhIG5ldyBWTSBmcm9tIGEgdGVtcGxhdGU7IE9LLiBJIGZvdW5kIGFuIGV4 YW1wbGUgYW5kIGl0IHdvcmtlZCBPT1RCPGJyPg0KMikgUmVuYW1lIHRoZSBuZXcgVk3CtHMgZGlz ayBmcm9tICR7VGVtcGxhdGVOYW1lfV9EaXNrMSB0byAke1ZNTmFtZX1fRGlzazE7IE5vdCBPSy4g SSBmb3VuZCBhbiBleGFtcGxlIG9mIGhvdyB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBWTU5pYyBh bmQgdGhhdCB3b3JrcywgYnV0IHVzaW5nIHRoZSBzYW1lIG1ldGhvZCB0byBjaGFuZ2UgVk1EaXNr wrRzIG5hbWUgZG9lcyBub3QgKEZZSSwgdGhlIFZNIG9ubHkgaGFzIG9uZSBWTmljIGFuZCBWRGlz ayk6PGJyPg0KJmd0OyZndDsmZ3Q7IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXM8YnI+ DQomZ3Q7Jmd0OyZndDsgZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSTxicj4NCiZndDsmZ3Q7 Jmd0OyBhcGkgPSBBUEkodXJsPSc8YSBocmVmPSJodHRwczovL3N0b3JtLnNsdS5zZTo0NDMvYXBp JywiPmh0dHBzOi8vJHtFTkdJTkV9OjQ0My9hcGknLDwvYT4gY2FfZmlsZT0nJHtDQUNFUlR9Jywg dXNlcm5hbWU9PGEgaHJlZj0ibWFpbHRvOidhZG1pbkBpbnRlcm5hbCI+J2FkbWluQGludGVybmFs PC9hPicsIHBhc3N3b3JkPSdsZXRtZWluIScpPGJyPg0KJmd0OyZndDsmZ3Q7IHZtID0gYXBpLnZt cy5nZXQobmFtZT0nVk1OYW1lJyk8YnI+DQo8YnI+DQomZ3Q7Jmd0OyZndDsgdm1uaWMgPSB2bS5u aWNzLmdldChuYW1lPScqJyk8YnI+DQomZ3Q7Jmd0OyZndDsgdm1uaWMubmFtZTxicj4NCiduaWMx Jzxicj4NCiZndDsmZ3Q7Jmd0OyBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5uaWNzLmdldChu YW1lPScqJyk8YnI+DQonbmljMSc8YnI+DQomZ3Q7Jmd0OyZndDsgdm1uaWMubmFtZT0nbmljMic8 YnI+DQomZ3Q7Jmd0OyZndDsgdm1uaWMudXBkYXRlKCk8YnI+DQomZ3Q7Jmd0OyZndDsgYXBpLnZt cy5nZXQobmFtZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpPGJyPg0KJ25pYzInPGJyPg0K Jmd0OyZndDsmZ3Q7IHZtbmljLm5hbWU8YnI+DQonbmljMic8YnI+DQo8YnI+DQomZ3Q7Jmd0OyZn dDsgdm1kaXNrID0gdm0uZGlza3MuZ2V0KG5hbWU9JyonKTxicj4NCiZndDsmZ3Q7Jmd0OyB2bWRp c2submFtZTxicj4NCidUZW1wbGF0ZU5hbWVfRGlzazEnPGJyPg0KJmd0OyZndDsmZ3Q7IGFwaS52 bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLmRpc2tzLmdldChuYW1lPScqJyk8YnI+DQonVGVtcGxhdGVO YW1lX0Rpc2sxJzxicj4NCiZndDsmZ3Q7Jmd0OyB2bWRpc2submFtZT0nVk1OYW1lX0Rpc2sxJzxi cj4NCiZndDsmZ3Q7Jmd0OyB2bWRpc2sudXBkYXRlKCk8YnI+DQomZ3Q7Jmd0OyZndDsgdm1kaXNr Lm5hbWU8YnI+DQonVk1OYW1lX0Rpc2sxJzxicj4NCiZndDsmZ3Q7Jmd0OyBhcGkudm1zLmdldChu YW1lPSdWTU5hbWUnKS5kaXNrcy5nZXQobmFtZT0nKicpPGJyPg0KJ1RlbXBsYXRlTmFtZV9EaXNr MSc8YnI+DQo8YnI+DQpTZWU/IEFtIEkgaG9sZGluZyBpdCB3cm9uZz88YnI+DQo8YnI+DQozKSBD cmVhdGUgYSBzbmFwc2hvdCBjYWxsZWQgJnF1b3Q7T3JpZ2luJnF1b3Q7LCBzbyBpZiBhIGN1c3Rv bWVyIGNhbGxzIGluIGFuZCBzYXlzIHRoZXnCtHZlIGJvcmtlZCBpdCBjb21wbGV0ZWx5LCB3ZcK0 bGwganVzdCByZXZlcnQgdG8gaXTCtHMgJnF1b3Q7T3JpZ2luJnF1b3Q7IGFuZCB0aGV5wrRyZSB1 cCBhbmQgcnVubmluZyBhZ2FpbjsgT0ssIGZvdW5kIGFub3RoZXIgT09UQiBleGFtcGxlLCB0aGFu ayB5b3UuPGJyPg0KNCkgQWRkIHRoZSBjdXN0b21lciB0byBWTcK0cyBQZXJtaXNzaW9ucyB3aXRo IGFuIGFwcHJvcHJpYXRlIHJvbGU7IE5vdCBPSy4gSSBoYXZlIGZvdW5kIG5vIGV4YW1wbGVzIG9u IGhvdyB0byBkbyB0aGlzIGFuZCBqdXN0IGRvbsK0dCBrbm93IHdoZXJlIHRvIHN0YXJ0IGxvb2tp bmcuIEJUVywgY3JlYXRpbmcgYSBuZXcgVk0gd2l0aCBQeXRob24gcmVzdWx0cyBpbiBQZXJtaXNz aW9ucyBjb21wbGV0ZWx5IGVtcHR5LCBubyBpbmhlcml0YW5jZSBlaXRoZXIuDQogRG9uwrR0IGtu b3cgaWYgdGhhdCBpcyBpbnRlbmRlZC4uLjxicj4NCjxicj4NCmNsaWVudCMgcnBtIC1xYSB8IGdy ZXAgb3ZpcnQ8YnI+DQpvdmlydC1lbmdpbmUtY2xpLTMuMi4wLjExLTEuZmMxNy5ub2FyY2g8YnI+ DQpvdmlydC1lbmdpbmUtc2RrLTMuMi4wLjEwLTEuZmMxNy5ub2FyY2g8YnI+DQo8YnI+DQplbmdp bmUjIHJwbSAtcWEgfCBncmVwIG92aXJ0PGJyPg0Kb3ZpcnQtZW5naW5lLWNvbmZpZy0zLjEuMC00 LmZjMTcubm9hcmNoPGJyPg0Kb3ZpcnQtZW5naW5lLWRic2NyaXB0cy0zLjEuMC00LmZjMTcubm9h cmNoPGJyPg0Kb3ZpcnQtbG9nLWNvbGxlY3Rvci0zLjEuMC0wLmdpdDEwZDcxOS5mYzE3Lm5vYXJj aDxicj4NCm92aXJ0LWVuZ2luZS1yZXN0YXBpLTMuMS4wLTQuZmMxNy5ub2FyY2g8YnI+DQpvdmly dC1pbWFnZS11cGxvYWRlci0zLjEuMC0wLmdpdDljNDJjOC5mYzE3Lm5vYXJjaDxicj4NCm92aXJ0 LWVuZ2luZS1nZW5lcmljYXBpLTMuMS4wLTQuZmMxNy5ub2FyY2g8YnI+DQpvdmlydC1pc28tdXBs b2FkZXItMy4xLjAtMC5naXQxODQxZDkuZmMxNy5ub2FyY2g8YnI+DQpvdmlydC1lbmdpbmUtd2Vi YWRtaW4tcG9ydGFsLTMuMS4wLTQuZmMxNy5ub2FyY2g8YnI+DQpvdmlydC1lbmdpbmUtc2V0dXAt My4xLjAtNC5mYzE3Lm5vYXJjaDxicj4NCm92aXJ0LWVuZ2luZS1zZGstMy4yLjAuMi0xLmZjMTcu bm9hcmNoPGJyPg0Kb3ZpcnQtZW5naW5lLWJhY2tlbmQtMy4xLjAtNC5mYzE3Lm5vYXJjaDxicj4N Cm92aXJ0LWVuZ2luZS10b29scy1jb21tb24tMy4xLjAtNC5mYzE3Lm5vYXJjaDxicj4NCm92aXJ0 LWVuZ2luZS0zLjEuMC00LmZjMTcubm9hcmNoPGJyPg0Kb3ZpcnQtZW5naW5lLXVzZXJwb3J0YWwt My4xLjAtNC5mYzE3Lm5vYXJjaDxicj4NCm92aXJ0LWVuZ2luZS1ub3RpZmljYXRpb24tc2Vydmlj ZS0zLjEuMC00LmZjMTcubm9hcmNoPGJyPg0KPGJyPg0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBj ZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPg0KPHRib2R5Pg0KPHRyPg0KPHRkPi0tIDxicj4N Cjxicj4NCkJlc3QgUmVnYXJkczxicj4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQpLYXJs aSBTasO2YmVyZzxicj4NClN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5j ZXM8YnI+DQpCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpPGJyPg0K Uy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuPGJyPg0KUGhvbmU6ICZuYnNwOyYjNDM7NDYtKDApMTgt NjcgMTUgNjY8YnI+DQo8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlIj5r YXJsaS5zam9iZXJnQHNsdS5zZTwvYT4gPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4N CjwvYm9keT4NCjwvaHRtbD4NCg== --_000_5F9E965F5A80BC468BE5F40576769F092A1AEA78exchange21_--

Hi Karli, On 05/23/2013 12:35 PM, Karli Sjöberg wrote:
Hi!
We´re in the process of building an orderportal where our customers will be able to log in, select a virtual machine template, type in a desired hostname and it will be automatically created, and they recieve a mail explaining what they´ve gotten themselves into:). For this I figured the PythonSDK would be the best choice but I´m having trouble using it. What we´ve done so far is:
1) Create a new VM from a template; OK. I found an example and it worked OOTB 2) Rename the new VM´s disk from ${TemplateName}_Disk1 to ${VMName}_Disk1; Not OK. I found an example of how to change the name of a VMNic and that works, but using the same method to change VMDisk´s name does not (FYI, the VM only has one VNic and VDisk):
from ovirtsdk.xml import params from ovirtsdk.api import API api = API(url='https://${ENGINE}:443/api', <https://storm.slu.se:443/api',> ca_file='${CACERT}', username='admin@internal <mailto:'admin@internal>', password='letmein!') vm = api.vms.get(name='VMName')
vmnic = vm.nics.get(name='*') vmnic.name 'nic1' api.vms.get(name='VMName').nics.get(name='*') 'nic1' vmnic.name='nic2' vmnic.update() api.vms.get(name='VMName').nics.get(name='*') 'nic2' vmnic.name 'nic2'
vmdisk = vm.disks.get(name='*') vmdisk.name 'TemplateName_Disk1' api.vms.get(name='VMName').disks.get(name='*')
this kind of call is not efficient, by fetching the disk you also fetch the vm, i'd suggest fetch vm, store it in local variable and then reuse it for any sub-collection manipulations.
'TemplateName_Disk1'
vmdisk.name='VMName_Disk1' vmdisk.update() vmdisk.name 'VMName_Disk1' api.vms.get(name='VMName').disks.get(name='*') 'TemplateName_Disk1'
See? Am I holding it wrong?
disk.name is deprecated, please use 'alias' instead.
3) Create a snapshot called "Origin", so if a customer calls in and says they´ve borked it completely, we´ll just revert to it´s "Origin" and they´re up and running again; OK, found another OOTB example, thank you. 4) Add the customer to VM´s Permissions with an appropriate role; Not OK. I have found no examples on how to do this and just don´t know where to start looking. BTW, creating a new VM with Python results in Permissions completely empty, no inheritance either. Don´t know if that is intended...
elena, ilia, guys, do you have any permission related code to share?
client# rpm -qa | grep ovirt ovirt-engine-cli-3.2.0.11-1.fc17.noarch ovirt-engine-sdk-3.2.0.10-1.fc17.noarch
engine# rpm -qa | grep ovirt ovirt-engine-config-3.1.0-4.fc17.noarch ovirt-engine-dbscripts-3.1.0-4.fc17.noarch ovirt-log-collector-3.1.0-0.git10d719.fc17.noarch ovirt-engine-restapi-3.1.0-4.fc17.noarch ovirt-image-uploader-3.1.0-0.git9c42c8.fc17.noarch ovirt-engine-genericapi-3.1.0-4.fc17.noarch ovirt-iso-uploader-3.1.0-0.git1841d9.fc17.noarch ovirt-engine-webadmin-portal-3.1.0-4.fc17.noarch ovirt-engine-setup-3.1.0-4.fc17.noarch ovirt-engine-sdk-3.2.0.2-1.fc17.noarch ovirt-engine-backend-3.1.0-4.fc17.noarch ovirt-engine-tools-common-3.1.0-4.fc17.noarch ovirt-engine-3.1.0-4.fc17.noarch ovirt-engine-userportal-3.1.0-4.fc17.noarch ovirt-engine-notification-service-3.1.0-4.fc17.noarch
--
Best Regards ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@adm.slu.se>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- Michael Pasternak RedHat, ENG-Virtualization R&D

Hi, We have several tests like: "Add VM permission to user", that are using ART's art/rhevm_api/tests_lib/low_level/mla.py addPermitsToUser function. This is generic function but it shouldn't be hard to prepare SDK code with the same functionality. Thanks Ilia ----- Original Message ----- From: "Michael Pasternak" <mpastern@redhat.com> To: "Karli Sjöberg" <Karli.Sjoberg@slu.se>, "Elena Dolinin" <edolinin@redhat.com>, "Ilia Meerovich" <imeerovi@redhat.com> Cc: "users" <users@ovirt.org> Sent: Thursday, May 23, 2013 3:10:21 PM Subject: Re: [Users] Problems using the PythonSDK Hi Karli, On 05/23/2013 12:35 PM, Karli Sjöberg wrote:
Hi!
We´re in the process of building an orderportal where our customers will be able to log in, select a virtual machine template, type in a desired hostname and it will be automatically created, and they recieve a mail explaining what they´ve gotten themselves into:). For this I figured the PythonSDK would be the best choice but I´m having trouble using it. What we´ve done so far is:
1) Create a new VM from a template; OK. I found an example and it worked OOTB 2) Rename the new VM´s disk from ${TemplateName}_Disk1 to ${VMName}_Disk1; Not OK. I found an example of how to change the name of a VMNic and that works, but using the same method to change VMDisk´s name does not (FYI, the VM only has one VNic and VDisk):
from ovirtsdk.xml import params from ovirtsdk.api import API api = API(url='https://${ENGINE}:443/api', <https://storm.slu.se:443/api',> ca_file='${CACERT}', username='admin@internal <mailto:'admin@internal>', password='letmein!') vm = api.vms.get(name='VMName')
vmnic = vm.nics.get(name='*') vmnic.name 'nic1' api.vms.get(name='VMName').nics.get(name='*') 'nic1' vmnic.name='nic2' vmnic.update() api.vms.get(name='VMName').nics.get(name='*') 'nic2' vmnic.name 'nic2'
vmdisk = vm.disks.get(name='*') vmdisk.name 'TemplateName_Disk1' api.vms.get(name='VMName').disks.get(name='*')
this kind of call is not efficient, by fetching the disk you also fetch the vm, i'd suggest fetch vm, store it in local variable and then reuse it for any sub-collection manipulations.
'TemplateName_Disk1'
vmdisk.name='VMName_Disk1' vmdisk.update() vmdisk.name 'VMName_Disk1' api.vms.get(name='VMName').disks.get(name='*') 'TemplateName_Disk1'
See? Am I holding it wrong?
disk.name is deprecated, please use 'alias' instead.
3) Create a snapshot called "Origin", so if a customer calls in and says they´ve borked it completely, we´ll just revert to it´s "Origin" and they´re up and running again; OK, found another OOTB example, thank you. 4) Add the customer to VM´s Permissions with an appropriate role; Not OK. I have found no examples on how to do this and just don´t know where to start looking. BTW, creating a new VM with Python results in Permissions completely empty, no inheritance either. Don´t know if that is intended...
elena, ilia, guys, do you have any permission related code to share?
client# rpm -qa | grep ovirt ovirt-engine-cli-3.2.0.11-1.fc17.noarch ovirt-engine-sdk-3.2.0.10-1.fc17.noarch
engine# rpm -qa | grep ovirt ovirt-engine-config-3.1.0-4.fc17.noarch ovirt-engine-dbscripts-3.1.0-4.fc17.noarch ovirt-log-collector-3.1.0-0.git10d719.fc17.noarch ovirt-engine-restapi-3.1.0-4.fc17.noarch ovirt-image-uploader-3.1.0-0.git9c42c8.fc17.noarch ovirt-engine-genericapi-3.1.0-4.fc17.noarch ovirt-iso-uploader-3.1.0-0.git1841d9.fc17.noarch ovirt-engine-webadmin-portal-3.1.0-4.fc17.noarch ovirt-engine-setup-3.1.0-4.fc17.noarch ovirt-engine-sdk-3.2.0.2-1.fc17.noarch ovirt-engine-backend-3.1.0-4.fc17.noarch ovirt-engine-tools-common-3.1.0-4.fc17.noarch ovirt-engine-3.1.0-4.fc17.noarch ovirt-engine-userportal-3.1.0-4.fc17.noarch ovirt-engine-notification-service-3.1.0-4.fc17.noarch
--
Best Regards ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@adm.slu.se>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- Michael Pasternak RedHat, ENG-Virtualization R&D

It should be like: from ovirtsdk.xml import params from ovirtsdk.api import API api = API('*', '*', '*') vm = api.vms.list()[0] user = api.users.list()[1] role = api.roles.list()[1] permit = params.Permission() permit.set_role(role) permit.set_vm(vm) user.permissions.add(permit) ----- Original Message ----- From: "Ilia Meerovich" <imeerovi@redhat.com> To: "Michael Pasternak" <mpastern@redhat.com> Cc: "users" <users@ovirt.org>, "Karli Sjöberg" <Karli.Sjoberg@slu.se>, "Elena Dolinin" <edolinin@redhat.com> Sent: Thursday, May 23, 2013 3:30:27 PM Subject: Re: [Users] Problems using the PythonSDK Hi, We have several tests like: "Add VM permission to user", that are using ART's art/rhevm_api/tests_lib/low_level/mla.py addPermitsToUser function. This is generic function but it shouldn't be hard to prepare SDK code with the same functionality. Thanks Ilia ----- Original Message ----- From: "Michael Pasternak" <mpastern@redhat.com> To: "Karli Sjöberg" <Karli.Sjoberg@slu.se>, "Elena Dolinin" <edolinin@redhat.com>, "Ilia Meerovich" <imeerovi@redhat.com> Cc: "users" <users@ovirt.org> Sent: Thursday, May 23, 2013 3:10:21 PM Subject: Re: [Users] Problems using the PythonSDK Hi Karli, On 05/23/2013 12:35 PM, Karli Sjöberg wrote:
Hi!
We´re in the process of building an orderportal where our customers will be able to log in, select a virtual machine template, type in a desired hostname and it will be automatically created, and they recieve a mail explaining what they´ve gotten themselves into:). For this I figured the PythonSDK would be the best choice but I´m having trouble using it. What we´ve done so far is:
1) Create a new VM from a template; OK. I found an example and it worked OOTB 2) Rename the new VM´s disk from ${TemplateName}_Disk1 to ${VMName}_Disk1; Not OK. I found an example of how to change the name of a VMNic and that works, but using the same method to change VMDisk´s name does not (FYI, the VM only has one VNic and VDisk):
from ovirtsdk.xml import params from ovirtsdk.api import API api = API(url='https://${ENGINE}:443/api', <https://storm.slu.se:443/api',> ca_file='${CACERT}', username='admin@internal <mailto:'admin@internal>', password='letmein!') vm = api.vms.get(name='VMName')
vmnic = vm.nics.get(name='*') vmnic.name 'nic1' api.vms.get(name='VMName').nics.get(name='*') 'nic1' vmnic.name='nic2' vmnic.update() api.vms.get(name='VMName').nics.get(name='*') 'nic2' vmnic.name 'nic2'
vmdisk = vm.disks.get(name='*') vmdisk.name 'TemplateName_Disk1' api.vms.get(name='VMName').disks.get(name='*')
this kind of call is not efficient, by fetching the disk you also fetch the vm, i'd suggest fetch vm, store it in local variable and then reuse it for any sub-collection manipulations.
'TemplateName_Disk1'
vmdisk.name='VMName_Disk1' vmdisk.update() vmdisk.name 'VMName_Disk1' api.vms.get(name='VMName').disks.get(name='*') 'TemplateName_Disk1'
See? Am I holding it wrong?
disk.name is deprecated, please use 'alias' instead.
3) Create a snapshot called "Origin", so if a customer calls in and says they´ve borked it completely, we´ll just revert to it´s "Origin" and they´re up and running again; OK, found another OOTB example, thank you. 4) Add the customer to VM´s Permissions with an appropriate role; Not OK. I have found no examples on how to do this and just don´t know where to start looking. BTW, creating a new VM with Python results in Permissions completely empty, no inheritance either. Don´t know if that is intended...
elena, ilia, guys, do you have any permission related code to share?
client# rpm -qa | grep ovirt ovirt-engine-cli-3.2.0.11-1.fc17.noarch ovirt-engine-sdk-3.2.0.10-1.fc17.noarch
engine# rpm -qa | grep ovirt ovirt-engine-config-3.1.0-4.fc17.noarch ovirt-engine-dbscripts-3.1.0-4.fc17.noarch ovirt-log-collector-3.1.0-0.git10d719.fc17.noarch ovirt-engine-restapi-3.1.0-4.fc17.noarch ovirt-image-uploader-3.1.0-0.git9c42c8.fc17.noarch ovirt-engine-genericapi-3.1.0-4.fc17.noarch ovirt-iso-uploader-3.1.0-0.git1841d9.fc17.noarch ovirt-engine-webadmin-portal-3.1.0-4.fc17.noarch ovirt-engine-setup-3.1.0-4.fc17.noarch ovirt-engine-sdk-3.2.0.2-1.fc17.noarch ovirt-engine-backend-3.1.0-4.fc17.noarch ovirt-engine-tools-common-3.1.0-4.fc17.noarch ovirt-engine-3.1.0-4.fc17.noarch ovirt-engine-userportal-3.1.0-4.fc17.noarch ovirt-engine-notification-service-3.1.0-4.fc17.noarch
--
Best Regards ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@adm.slu.se>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- Michael Pasternak RedHat, ENG-Virtualization R&D

--_000_5F9E965F5A80BC468BE5F40576769F092A1AF0CEexchange21_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 dG9yIDIwMTMtMDUtMjMga2xvY2thbiAwODo1MyAtMDQwMCBza3JldiBJbGlhIE1lZXJvdmljaDoN Cg0KDQpJdCBzaG91bGQgYmUgbGlrZToNCg0KZnJvbSBvdmlydHNkay54bWwgaW1wb3J0IHBhcmFt cw0KZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQ0KDQphcGkgPSBBUEkoJyonLCAnKicsICcq JykNCnZtID0gYXBpLnZtcy5saXN0KClbMF0NCnVzZXIgPSAgYXBpLnVzZXJzLmxpc3QoKVsxXQ0K cm9sZSA9IGFwaS5yb2xlcy5saXN0KClbMV0NCnBlcm1pdCA9IHBhcmFtcy5QZXJtaXNzaW9uKCkN CnBlcm1pdC5zZXRfcm9sZShyb2xlKQ0KcGVybWl0LnNldF92bSh2bSkNCnVzZXIucGVybWlzc2lv bnMuYWRkKHBlcm1pdCkNCg0KDQpUaGFuayB5b3UgdmVyeSBtdWNoLCBJwrRtIGdvaW5nIHRvIHRl c3QgdGhpcyBvdXQgdG9kYXkhIENvdWxkIHlvdSBhbHNvIHNob3cgbWUgaG93IHRvIGZpcnN0IGFk ZCBhIHVzZXIgdGhhdCBpc27CtHQgaW4gdGhlIHN5c3RlbSB5ZXQsIHBsZWFzZT8NCg0KDQoNCg0K DQotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tDQpGcm9tOiAiSWxpYSBNZWVyb3ZpY2giIDxp bWVlcm92aUByZWRoYXQuY29tPG1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPj4NClRvOiAiTWlj aGFlbCBQYXN0ZXJuYWsiIDxtcGFzdGVybkByZWRoYXQuY29tPG1haWx0bzptcGFzdGVybkByZWRo YXQuY29tPj4NCkNjOiAidXNlcnMiIDx1c2Vyc0BvdmlydC5vcmc8bWFpbHRvOnVzZXJzQG92aXJ0 Lm9yZz4+LCAiS2FybGkgU2rDtmJlcmciIDxLYXJsaS5Tam9iZXJnQHNsdS5zZTxtYWlsdG86S2Fy bGkuU2pvYmVyZ0BzbHUuc2U+PiwgIkVsZW5hIERvbGluaW4iIDxlZG9saW5pbkByZWRoYXQuY29t PG1haWx0bzplZG9saW5pbkByZWRoYXQuY29tPj4NClNlbnQ6IFRodXJzZGF5LCBNYXkgMjMsIDIw MTMgMzozMDoyNyBQTQ0KU3ViamVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5 dGhvblNESw0KDQpIaSwNCg0KV2UgaGF2ZSBzZXZlcmFsIHRlc3RzIGxpa2U6DQoiQWRkIFZNIHBl cm1pc3Npb24gdG8gdXNlciIsIHRoYXQgYXJlIHVzaW5nIEFSVCdzIGFydC9yaGV2bV9hcGkvdGVz dHNfbGliL2xvd19sZXZlbC9tbGEucHkgYWRkUGVybWl0c1RvVXNlciBmdW5jdGlvbi4NClRoaXMg aXMgZ2VuZXJpYyBmdW5jdGlvbiBidXQgaXQgc2hvdWxkbid0IGJlIGhhcmQgdG8gcHJlcGFyZSBT REsgY29kZSB3aXRoIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuDQoNClRoYW5rcw0KSWxpYQ0KDQot LS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tDQpGcm9tOiAiTWljaGFlbCBQYXN0ZXJuYWsiIDxt cGFzdGVybkByZWRoYXQuY29tPG1haWx0bzptcGFzdGVybkByZWRoYXQuY29tPj4NClRvOiAiS2Fy bGkgU2rDtmJlcmciIDxLYXJsaS5Tam9iZXJnQHNsdS5zZTxtYWlsdG86S2FybGkuU2pvYmVyZ0Bz bHUuc2U+PiwgIkVsZW5hIERvbGluaW4iIDxlZG9saW5pbkByZWRoYXQuY29tPG1haWx0bzplZG9s aW5pbkByZWRoYXQuY29tPj4sICJJbGlhIE1lZXJvdmljaCIgPGltZWVyb3ZpQHJlZGhhdC5jb208 bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20+Pg0KQ2M6ICJ1c2VycyIgPHVzZXJzQG92aXJ0Lm9y ZzxtYWlsdG86dXNlcnNAb3ZpcnQub3JnPj4NClNlbnQ6IFRodXJzZGF5LCBNYXkgMjMsIDIwMTMg MzoxMDoyMSBQTQ0KU3ViamVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhv blNESw0KDQoNCkhpIEthcmxpLA0KDQpPbiAwNS8yMy8yMDEzIDEyOjM1IFBNLCBLYXJsaSBTasO2 YmVyZyB3cm90ZToNCj4gSGkhDQo+DQo+IFdlwrRyZSBpbiB0aGUgcHJvY2VzcyBvZiBidWlsZGlu ZyBhbiBvcmRlcnBvcnRhbCB3aGVyZSBvdXIgY3VzdG9tZXJzIHdpbGwgYmUgYWJsZSB0byBsb2cg aW4sIHNlbGVjdCBhIHZpcnR1YWwgbWFjaGluZSB0ZW1wbGF0ZSwgdHlwZSBpbiBhIGRlc2lyZWQg aG9zdG5hbWUgYW5kIGl0IHdpbGwgYmUNCj4gYXV0b21hdGljYWxseSBjcmVhdGVkLCBhbmQgdGhl eSByZWNpZXZlIGEgbWFpbCBleHBsYWluaW5nIHdoYXQgdGhlecK0dmUgZ290dGVuIHRoZW1zZWx2 ZXMgaW50bzopLiBGb3IgdGhpcyBJIGZpZ3VyZWQgdGhlIFB5dGhvblNESyB3b3VsZCBiZSB0aGUg YmVzdCBjaG9pY2UgYnV0IEnCtG0gaGF2aW5nDQo+IHRyb3VibGUgdXNpbmcgaXQuIFdoYXQgd2XC tHZlIGRvbmUgc28gZmFyIGlzOg0KPg0KPiAxKSBDcmVhdGUgYSBuZXcgVk0gZnJvbSBhIHRlbXBs YXRlOyBPSy4gSSBmb3VuZCBhbiBleGFtcGxlIGFuZCBpdCB3b3JrZWQgT09UQg0KPiAyKSBSZW5h bWUgdGhlIG5ldyBWTcK0cyBkaXNrIGZyb20gJHtUZW1wbGF0ZU5hbWV9X0Rpc2sxIHRvICR7Vk1O YW1lfV9EaXNrMTsgTm90IE9LLiBJIGZvdW5kIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNoYW5nZSB0 aGUgbmFtZSBvZiBhIFZNTmljIGFuZCB0aGF0IHdvcmtzLCBidXQgdXNpbmcgdGhlDQo+IHNhbWUg bWV0aG9kIHRvIGNoYW5nZSBWTURpc2vCtHMgbmFtZSBkb2VzIG5vdCAoRllJLCB0aGUgVk0gb25s eSBoYXMgb25lIFZOaWMgYW5kIFZEaXNrKToNCj4+Pj4gZnJvbSBvdmlydHNkay54bWwgaW1wb3J0 IHBhcmFtcw0KPj4+PiBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJDQo+Pj4+IGFwaSA9IEFQ SSh1cmw9J2h0dHBzOi8vJHtFTkdJTkV9OjQ0My9hcGknLCA8aHR0cHM6Ly9zdG9ybS5zbHUuc2U6 NDQzL2FwaScsPiBjYV9maWxlPScke0NBQ0VSVH0nLCB1c2VybmFtZT0nYWRtaW5AaW50ZXJuYWwg PG1haWx0bzonYWRtaW5AaW50ZXJuYWw+JywgcGFzc3dvcmQ9J2xldG1laW4hJykNCj4+Pj4gdm0g PSBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKQ0KPg0KPj4+PiB2bW5pYyA9IHZtLm5pY3MuZ2V0 KG5hbWU9JyonKQ0KPj4+PiB2bW5pYy5uYW1lDQo+ICduaWMxJw0KPj4+PiBhcGkudm1zLmdldChu YW1lPSdWTU5hbWUnKS5uaWNzLmdldChuYW1lPScqJykNCj4gJ25pYzEnDQo+Pj4+IHZtbmljLm5h bWU9J25pYzInDQo+Pj4+IHZtbmljLnVwZGF0ZSgpDQo+Pj4+IGFwaS52bXMuZ2V0KG5hbWU9J1ZN TmFtZScpLm5pY3MuZ2V0KG5hbWU9JyonKQ0KPiAnbmljMicNCj4+Pj4gdm1uaWMubmFtZQ0KPiAn bmljMicNCj4NCj4+Pj4gdm1kaXNrID0gdm0uZGlza3MuZ2V0KG5hbWU9JyonKQ0KPj4+PiB2bWRp c2submFtZQ0KPiAnVGVtcGxhdGVOYW1lX0Rpc2sxJw0KPj4+PiBhcGkudm1zLmdldChuYW1lPSdW TU5hbWUnKS5kaXNrcy5nZXQobmFtZT0nKicpDQoNCnRoaXMga2luZCBvZiBjYWxsIGlzIG5vdCBl ZmZpY2llbnQsIGJ5IGZldGNoaW5nIHRoZSBkaXNrDQp5b3UgYWxzbyBmZXRjaCB0aGUgdm0sDQoN CmknZCBzdWdnZXN0IGZldGNoIHZtLCBzdG9yZSBpdCBpbiBsb2NhbCB2YXJpYWJsZSBhbmQgdGhl bg0KcmV1c2UgaXQgZm9yIGFueSBzdWItY29sbGVjdGlvbiBtYW5pcHVsYXRpb25zLg0KDQoNCj4g J1RlbXBsYXRlTmFtZV9EaXNrMScNCj4+Pj4gdm1kaXNrLm5hbWU9J1ZNTmFtZV9EaXNrMScNCj4+ Pj4gdm1kaXNrLnVwZGF0ZSgpDQo+Pj4+IHZtZGlzay5uYW1lDQo+ICdWTU5hbWVfRGlzazEnDQo+ Pj4+IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLmRpc2tzLmdldChuYW1lPScqJykNCj4gJ1Rl bXBsYXRlTmFtZV9EaXNrMScNCj4NCj4gU2VlPyBBbSBJIGhvbGRpbmcgaXQgd3Jvbmc/DQoNCmRp c2submFtZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlICdhbGlhcycgaW5zdGVhZC4NCg0KPg0K PiAzKSBDcmVhdGUgYSBzbmFwc2hvdCBjYWxsZWQgIk9yaWdpbiIsIHNvIGlmIGEgY3VzdG9tZXIg Y2FsbHMgaW4gYW5kIHNheXMgdGhlecK0dmUgYm9ya2VkIGl0IGNvbXBsZXRlbHksIHdlwrRsbCBq dXN0IHJldmVydCB0byBpdMK0cyAiT3JpZ2luIiBhbmQgdGhlecK0cmUgdXAgYW5kIHJ1bm5pbmcg YWdhaW47DQo+IE9LLCBmb3VuZCBhbm90aGVyIE9PVEIgZXhhbXBsZSwgdGhhbmsgeW91Lg0KPiA0 KSBBZGQgdGhlIGN1c3RvbWVyIHRvIFZNwrRzIFBlcm1pc3Npb25zIHdpdGggYW4gYXBwcm9wcmlh dGUgcm9sZTsgTm90IE9LLiBJIGhhdmUgZm91bmQgbm8gZXhhbXBsZXMgb24gaG93IHRvIGRvIHRo aXMgYW5kIGp1c3QgZG9uwrR0IGtub3cgd2hlcmUgdG8gc3RhcnQgbG9va2luZy4gQlRXLA0KPiBj cmVhdGluZyBhIG5ldyBWTSB3aXRoIFB5dGhvbiByZXN1bHRzIGluIFBlcm1pc3Npb25zIGNvbXBs ZXRlbHkgZW1wdHksIG5vIGluaGVyaXRhbmNlIGVpdGhlci4gRG9uwrR0IGtub3cgaWYgdGhhdCBp cyBpbnRlbmRlZC4uLg0KDQplbGVuYSwgaWxpYSwNCg0KZ3V5cywgZG8geW91IGhhdmUgYW55IHBl cm1pc3Npb24gcmVsYXRlZCBjb2RlIHRvIHNoYXJlPw0KDQo+DQo+IGNsaWVudCMgcnBtIC1xYSB8 IGdyZXAgb3ZpcnQNCj4gb3ZpcnQtZW5naW5lLWNsaS0zLjIuMC4xMS0xLmZjMTcubm9hcmNoDQo+ IG92aXJ0LWVuZ2luZS1zZGstMy4yLjAuMTAtMS5mYzE3Lm5vYXJjaA0KPg0KPiBlbmdpbmUjIHJw bSAtcWEgfCBncmVwIG92aXJ0DQo+IG92aXJ0LWVuZ2luZS1jb25maWctMy4xLjAtNC5mYzE3Lm5v YXJjaA0KPiBvdmlydC1lbmdpbmUtZGJzY3JpcHRzLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4gb3Zp cnQtbG9nLWNvbGxlY3Rvci0zLjEuMC0wLmdpdDEwZDcxOS5mYzE3Lm5vYXJjaA0KPiBvdmlydC1l bmdpbmUtcmVzdGFwaS0zLjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWltYWdlLXVwbG9hZGVy LTMuMS4wLTAuZ2l0OWM0MmM4LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS1nZW5lcmljYXBp LTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4gb3ZpcnQtaXNvLXVwbG9hZGVyLTMuMS4wLTAuZ2l0MTg0 MWQ5LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS13ZWJhZG1pbi1wb3J0YWwtMy4xLjAtNC5m YzE3Lm5vYXJjaA0KPiBvdmlydC1lbmdpbmUtc2V0dXAtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPiBv dmlydC1lbmdpbmUtc2RrLTMuMi4wLjItMS5mYzE3Lm5vYXJjaA0KPiBvdmlydC1lbmdpbmUtYmFj a2VuZC0zLjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS10b29scy1jb21tb24tMy4x LjAtNC5mYzE3Lm5vYXJjaA0KPiBvdmlydC1lbmdpbmUtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPiBv dmlydC1lbmdpbmUtdXNlcnBvcnRhbC0zLjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2lu ZS1ub3RpZmljYXRpb24tc2VydmljZS0zLjEuMC00LmZjMTcubm9hcmNoDQo+DQo+IC0tDQo+DQo+ IEJlc3QgUmVnYXJkcw0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IEthcmxpIFNqw7ZiZXJn DQo+IFN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXMNCj4gQm94IDcw NzkgKFZpc2l0aW5nIEFkZHJlc3MgS3JvbsOlc3bDpGdlbiA4KQ0KPiBTLTc1MCAwNyBVcHBzYWxh LCBTd2VkZW4NCj4gUGhvbmU6ICArNDYtKDApMTgtNjcgMTUgNjYNCj4ga2FybGkuc2pvYmVyZ0Bz bHUuc2U8bWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlPiA8bWFpbHRvOmthcmxpLnNqb2JlcmdA YWRtLnNsdS5zZT4NCj4NCj4NCj4NCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4gVXNlcnMgbWFpbGluZyBsaXN0DQo+IFVzZXJzQG92aXJ0Lm9yZzxt YWlsdG86VXNlcnNAb3ZpcnQub3JnPg0KPiBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4v bGlzdGluZm8vdXNlcnMNCj4NCg0KDQoNCg0KLS0NCg0KTWVkIFbDpG5saWdhIEjDpGxzbmluZ2Fy DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpLYXJsaSBTasO2YmVyZw0KU3dlZGlzaCBVbml2ZXJz aXR5IG9mIEFncmljdWx0dXJhbCBTY2llbmNlcw0KQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJlc3Mg S3JvbsOlc3bDpGdlbiA4KQ0KUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuDQpQaG9uZTogICs0Ni0o MCkxOC02NyAxNSA2Ng0Ka2FybGkuc2pvYmVyZ0BzbHUuc2U8bWFpbHRvOmthcmxpLnNqb2JlcmdA YWRtLnNsdS5zZT4NCg== --_000_5F9E965F5A80BC468BE5F40576769F092A1AF0CEexchange21_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwv L0VOIj4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQo8bWV0YSBuYW1lPSJHRU5FUkFUT1Ii IGNvbnRlbnQ9Ikd0a0hUTUwvNC40LjQiPg0KPC9oZWFkPg0KPGJvZHk+DQp0b3IgMjAxMy0wNS0y MyBrbG9ja2FuIDA4OjUzIC0wNDAwIHNrcmV2IElsaWEgTWVlcm92aWNoOg0KPGJsb2NrcXVvdGUg dHlwZT0iQ0lURSI+DQo8cHJlPgpJdCBzaG91bGQgYmUgbGlrZToKCmZyb20gb3ZpcnRzZGsueG1s IGltcG9ydCBwYXJhbXMKZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSSAKCmFwaSA9IEFQSSgn KicsICcqJywgJyonKQp2bSA9IGFwaS52bXMubGlzdCgpWzBdCnVzZXIgPSAgYXBpLnVzZXJzLmxp c3QoKVsxXQpyb2xlID0gYXBpLnJvbGVzLmxpc3QoKVsxXQpwZXJtaXQgPSBwYXJhbXMuUGVybWlz c2lvbigpCnBlcm1pdC5zZXRfcm9sZShyb2xlKQpwZXJtaXQuc2V0X3ZtKHZtKQp1c2VyLnBlcm1p c3Npb25zLmFkZChwZXJtaXQpCjwvcHJlPg0KPC9ibG9ja3F1b3RlPg0KPGJyPg0KVGhhbmsgeW91 IHZlcnkgbXVjaCwgScK0bSBnb2luZyB0byB0ZXN0IHRoaXMgb3V0IHRvZGF5ISBDb3VsZCB5b3Ug YWxzbyBzaG93IG1lIGhvdyB0byBmaXJzdCBhZGQgYSB1c2VyIHRoYXQgaXNuwrR0IGluIHRoZSBz eXN0ZW0geWV0LCBwbGVhc2U/PGJyPg0KPGJyPg0KPGJsb2NrcXVvdGUgdHlwZT0iQ0lURSI+DQo8 cHJlPgoKCi0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KRnJvbTogJnF1b3Q7SWxpYSBNZWVy b3ZpY2gmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzppbWVlcm92aUByZWRoYXQuY29tIj5pbWVl cm92aUByZWRoYXQuY29tPC9hPiZndDsKVG86ICZxdW90O01pY2hhZWwgUGFzdGVybmFrJnF1b3Q7 ICZsdDs8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbSI+bXBhc3Rlcm5AcmVkaGF0 LmNvbTwvYT4mZ3Q7CkNjOiAmcXVvdDt1c2VycyZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnVz ZXJzQG92aXJ0Lm9yZyI+dXNlcnNAb3ZpcnQub3JnPC9hPiZndDssICZxdW90O0thcmxpIFNqw7Zi ZXJnJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2UiPkthcmxp LlNqb2JlcmdAc2x1LnNlPC9hPiZndDssICZxdW90O0VsZW5hIERvbGluaW4mcXVvdDsgJmx0Ozxh IGhyZWY9Im1haWx0bzplZG9saW5pbkByZWRoYXQuY29tIj5lZG9saW5pbkByZWRoYXQuY29tPC9h PiZndDsKU2VudDogVGh1cnNkYXksIE1heSAyMywgMjAxMyAzOjMwOjI3IFBNClN1YmplY3Q6IFJl OiBbVXNlcnNdIFByb2JsZW1zIHVzaW5nIHRoZSBQeXRob25TREsKCkhpLAoKV2UgaGF2ZSBzZXZl cmFsIHRlc3RzIGxpa2U6CiZxdW90O0FkZCBWTSBwZXJtaXNzaW9uIHRvIHVzZXImcXVvdDssIHRo YXQgYXJlIHVzaW5nIEFSVCdzIGFydC9yaGV2bV9hcGkvdGVzdHNfbGliL2xvd19sZXZlbC9tbGEu cHkgYWRkUGVybWl0c1RvVXNlciBmdW5jdGlvbi4KVGhpcyBpcyBnZW5lcmljIGZ1bmN0aW9uIGJ1 dCBpdCBzaG91bGRuJ3QgYmUgaGFyZCB0byBwcmVwYXJlIFNESyBjb2RlIHdpdGggdGhlIHNhbWUg ZnVuY3Rpb25hbGl0eS4KClRoYW5rcyAKSWxpYQoKLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0t LQpGcm9tOiAmcXVvdDtNaWNoYWVsIFBhc3Rlcm5hayZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRv Om1wYXN0ZXJuQHJlZGhhdC5jb20iPm1wYXN0ZXJuQHJlZGhhdC5jb208L2E+Jmd0OwpUbzogJnF1 b3Q7S2FybGkgU2rDtmJlcmcmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzpLYXJsaS5Tam9iZXJn QHNsdS5zZSI+S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+Jmd0OywgJnF1b3Q7RWxlbmEgRG9saW5p biZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20iPmVkb2xpbmlu QHJlZGhhdC5jb208L2E+Jmd0OywgJnF1b3Q7SWxpYSBNZWVyb3ZpY2gmcXVvdDsgJmx0OzxhIGhy ZWY9Im1haWx0bzppbWVlcm92aUByZWRoYXQuY29tIj5pbWVlcm92aUByZWRoYXQuY29tPC9hPiZn dDsKQ2M6ICZxdW90O3VzZXJzJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86dXNlcnNAb3ZpcnQu b3JnIj51c2Vyc0BvdmlydC5vcmc8L2E+Jmd0OwpTZW50OiBUaHVyc2RheSwgTWF5IDIzLCAyMDEz IDM6MTA6MjEgUE0KU3ViamVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhv blNESwoKCkhpIEthcmxpLAoKT24gMDUvMjMvMjAxMyAxMjozNSBQTSwgS2FybGkgU2rDtmJlcmcg d3JvdGU6CiZndDsgSGkhCiZndDsgCiZndDsgV2XCtHJlIGluIHRoZSBwcm9jZXNzIG9mIGJ1aWxk aW5nIGFuIG9yZGVycG9ydGFsIHdoZXJlIG91ciBjdXN0b21lcnMgd2lsbCBiZSBhYmxlIHRvIGxv ZyBpbiwgc2VsZWN0IGEgdmlydHVhbCBtYWNoaW5lIHRlbXBsYXRlLCB0eXBlIGluIGEgZGVzaXJl ZCBob3N0bmFtZSBhbmQgaXQgd2lsbCBiZQomZ3Q7IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCwgYW5k IHRoZXkgcmVjaWV2ZSBhIG1haWwgZXhwbGFpbmluZyB3aGF0IHRoZXnCtHZlIGdvdHRlbiB0aGVt c2VsdmVzIGludG86KS4gRm9yIHRoaXMgSSBmaWd1cmVkIHRoZSBQeXRob25TREsgd291bGQgYmUg dGhlIGJlc3QgY2hvaWNlIGJ1dCBJwrRtIGhhdmluZwomZ3Q7IHRyb3VibGUgdXNpbmcgaXQuIFdo YXQgd2XCtHZlIGRvbmUgc28gZmFyIGlzOgomZ3Q7IAomZ3Q7IDEpIENyZWF0ZSBhIG5ldyBWTSBm cm9tIGEgdGVtcGxhdGU7IE9LLiBJIGZvdW5kIGFuIGV4YW1wbGUgYW5kIGl0IHdvcmtlZCBPT1RC CiZndDsgMikgUmVuYW1lIHRoZSBuZXcgVk3CtHMgZGlzayBmcm9tICR7VGVtcGxhdGVOYW1lfV9E aXNrMSB0byAke1ZNTmFtZX1fRGlzazE7IE5vdCBPSy4gSSBmb3VuZCBhbiBleGFtcGxlIG9mIGhv dyB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBWTU5pYyBhbmQgdGhhdCB3b3JrcywgYnV0IHVzaW5n IHRoZQomZ3Q7IHNhbWUgbWV0aG9kIHRvIGNoYW5nZSBWTURpc2vCtHMgbmFtZSBkb2VzIG5vdCAo RllJLCB0aGUgVk0gb25seSBoYXMgb25lIFZOaWMgYW5kIFZEaXNrKToKJmd0OyZndDsmZ3Q7Jmd0 OyBmcm9tIG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFyYW1zCiZndDsmZ3Q7Jmd0OyZndDsgZnJvbSBv dmlydHNkay5hcGkgaW1wb3J0IEFQSQomZ3Q7Jmd0OyZndDsmZ3Q7IGFwaSA9IEFQSSh1cmw9Jzxh IGhyZWY9Imh0dHBzOi8vIj5odHRwczovLzwvYT4ke0VOR0lORX06NDQzL2FwaScsICZsdDs8YSBo cmVmPSJodHRwczovL3N0b3JtLnNsdS5zZTo0NDMvYXBpJyI+aHR0cHM6Ly9zdG9ybS5zbHUuc2U6 NDQzL2FwaSc8L2E+LCZndDsgY2FfZmlsZT0nJHtDQUNFUlR9JywgdXNlcm5hbWU9J2FkbWluQGlu dGVybmFsICZsdDs8YSBocmVmPSJtYWlsdG86J2FkbWluQGludGVybmFsIj5tYWlsdG86J2FkbWlu QGludGVybmFsPC9hPiZndDsnLCBwYXNzd29yZD0nbGV0bWVpbiEnKQomZ3Q7Jmd0OyZndDsmZ3Q7 IHZtID0gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykKJmd0OyAKJmd0OyZndDsmZ3Q7Jmd0OyB2 bW5pYyA9IHZtLm5pY3MuZ2V0KG5hbWU9JyonKQomZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmljLm5hbWUK Jmd0OyAnbmljMScKJmd0OyZndDsmZ3Q7Jmd0OyBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5u aWNzLmdldChuYW1lPScqJykKJmd0OyAnbmljMScKJmd0OyZndDsmZ3Q7Jmd0OyB2bW5pYy5uYW1l PSduaWMyJwomZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmljLnVwZGF0ZSgpCiZndDsmZ3Q7Jmd0OyZndDsg YXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpCiZndDsgJ25pYzIn CiZndDsmZ3Q7Jmd0OyZndDsgdm1uaWMubmFtZQomZ3Q7ICduaWMyJwomZ3Q7IAomZ3Q7Jmd0OyZn dDsmZ3Q7IHZtZGlzayA9IHZtLmRpc2tzLmdldChuYW1lPScqJykKJmd0OyZndDsmZ3Q7Jmd0OyB2 bWRpc2submFtZQomZ3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsmZ3Q7Jmd0OyZndDsgYXBp LnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQoKdGhpcyBraW5kIG9m IGNhbGwgaXMgbm90IGVmZmljaWVudCwgYnkgZmV0Y2hpbmcgdGhlIGRpc2sKeW91IGFsc28gZmV0 Y2ggdGhlIHZtLAoKaSdkIHN1Z2dlc3QgZmV0Y2ggdm0sIHN0b3JlIGl0IGluIGxvY2FsIHZhcmlh YmxlIGFuZCB0aGVuCnJldXNlIGl0IGZvciBhbnkgc3ViLWNvbGxlY3Rpb24gbWFuaXB1bGF0aW9u cy4KCgomZ3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrLm5h bWU9J1ZNTmFtZV9EaXNrMScKJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2sudXBkYXRlKCkKJmd0OyZn dDsmZ3Q7Jmd0OyB2bWRpc2submFtZQomZ3Q7ICdWTU5hbWVfRGlzazEnCiZndDsmZ3Q7Jmd0OyZn dDsgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQomZ3Q7ICdU ZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsgCiZndDsgU2VlPyBBbSBJIGhvbGRpbmcgaXQgd3Jvbmc/ CgpkaXNrLm5hbWUgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSAnYWxpYXMnIGluc3RlYWQuCgom Z3Q7IAomZ3Q7IDMpIENyZWF0ZSBhIHNuYXBzaG90IGNhbGxlZCAmcXVvdDtPcmlnaW4mcXVvdDss IHNvIGlmIGEgY3VzdG9tZXIgY2FsbHMgaW4gYW5kIHNheXMgdGhlecK0dmUgYm9ya2VkIGl0IGNv bXBsZXRlbHksIHdlwrRsbCBqdXN0IHJldmVydCB0byBpdMK0cyAmcXVvdDtPcmlnaW4mcXVvdDsg YW5kIHRoZXnCtHJlIHVwIGFuZCBydW5uaW5nIGFnYWluOwomZ3Q7IE9LLCBmb3VuZCBhbm90aGVy IE9PVEIgZXhhbXBsZSwgdGhhbmsgeW91LgomZ3Q7IDQpIEFkZCB0aGUgY3VzdG9tZXIgdG8gVk3C tHMgUGVybWlzc2lvbnMgd2l0aCBhbiBhcHByb3ByaWF0ZSByb2xlOyBOb3QgT0suIEkgaGF2ZSBm b3VuZCBubyBleGFtcGxlcyBvbiBob3cgdG8gZG8gdGhpcyBhbmQganVzdCBkb27CtHQga25vdyB3 aGVyZSB0byBzdGFydCBsb29raW5nLiBCVFcsCiZndDsgY3JlYXRpbmcgYSBuZXcgVk0gd2l0aCBQ eXRob24gcmVzdWx0cyBpbiBQZXJtaXNzaW9ucyBjb21wbGV0ZWx5IGVtcHR5LCBubyBpbmhlcml0 YW5jZSBlaXRoZXIuIERvbsK0dCBrbm93IGlmIHRoYXQgaXMgaW50ZW5kZWQuLi4KCmVsZW5hLCBp bGlhLAoKZ3V5cywgZG8geW91IGhhdmUgYW55IHBlcm1pc3Npb24gcmVsYXRlZCBjb2RlIHRvIHNo YXJlPwoKJmd0OyAKJmd0OyBjbGllbnQjIHJwbSAtcWEgfCBncmVwIG92aXJ0CiZndDsgb3ZpcnQt ZW5naW5lLWNsaS0zLjIuMC4xMS0xLmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtZW5naW5lLXNkay0z LjIuMC4xMC0xLmZjMTcubm9hcmNoCiZndDsgCiZndDsgZW5naW5lIyBycG0gLXFhIHwgZ3JlcCBv dmlydAomZ3Q7IG92aXJ0LWVuZ2luZS1jb25maWctMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7IG92 aXJ0LWVuZ2luZS1kYnNjcmlwdHMtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7IG92aXJ0LWxvZy1j b2xsZWN0b3ItMy4xLjAtMC5naXQxMGQ3MTkuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUt cmVzdGFwaS0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtaW1hZ2UtdXBsb2FkZXItMy4x LjAtMC5naXQ5YzQyYzguZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtZ2VuZXJpY2FwaS0z LjEuMC00LmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtaXNvLXVwbG9hZGVyLTMuMS4wLTAuZ2l0MTg0 MWQ5LmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtZW5naW5lLXdlYmFkbWluLXBvcnRhbC0zLjEuMC00 LmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtZW5naW5lLXNldHVwLTMuMS4wLTQuZmMxNy5ub2FyY2gK Jmd0OyBvdmlydC1lbmdpbmUtc2RrLTMuMi4wLjItMS5mYzE3Lm5vYXJjaAomZ3Q7IG92aXJ0LWVu Z2luZS1iYWNrZW5kLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtdG9vbHMt Y29tbW9uLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtMy4xLjAtNC5mYzE3 Lm5vYXJjaAomZ3Q7IG92aXJ0LWVuZ2luZS11c2VycG9ydGFsLTMuMS4wLTQuZmMxNy5ub2FyY2gK Jmd0OyBvdmlydC1lbmdpbmUtbm90aWZpY2F0aW9uLXNlcnZpY2UtMy4xLjAtNC5mYzE3Lm5vYXJj aAomZ3Q7IAomZ3Q7IC0tIAomZ3Q7IAomZ3Q7IEJlc3QgUmVnYXJkcwomZ3Q7IC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KJmd0OyBLYXJsaSBTasO2YmVyZwomZ3Q7IFN3ZWRpc2ggVW5pdmVyc2l0eSBv ZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXMKJmd0OyBCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBL cm9uw6VzdsOkZ2VuIDgpCiZndDsgUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuCiZndDsgUGhvbmU6 ICAmIzQzOzQ2LSgwKTE4LTY3IDE1IDY2CiZndDsgPGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2Jl cmdAc2x1LnNlIj5rYXJsaS5zam9iZXJnQHNsdS5zZTwvYT4gJmx0OzxhIGhyZWY9Im1haWx0bzpr YXJsaS5zam9iZXJnQGFkbS5zbHUuc2UiPm1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2U8 L2E+Jmd0OwomZ3Q7IAomZ3Q7IAomZ3Q7IAomZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCiZndDsgVXNlcnMgbWFpbGluZyBsaXN0CiZndDsgPGEgaHJl Zj0ibWFpbHRvOlVzZXJzQG92aXJ0Lm9yZyI+VXNlcnNAb3ZpcnQub3JnPC9hPgomZ3Q7IDxhIGhy ZWY9Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycyI+aHR0cDov L2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzPC9hPgomZ3Q7IAoKCjwvcHJl Pg0KPC9ibG9ja3F1b3RlPg0KPGJyPg0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGlu Zz0iMCIgd2lkdGg9IjEwMCUiPg0KPHRib2R5Pg0KPHRyPg0KPHRkPi0tIDxicj4NCjxicj4NCk1l ZCBWw6RubGlnYSBIw6Rsc25pbmdhcjxicj4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQpL YXJsaSBTasO2YmVyZzxicj4NClN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2Np ZW5jZXM8YnI+DQpCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpPGJy Pg0KUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuPGJyPg0KUGhvbmU6ICZuYnNwOyYjNDM7NDYtKDAp MTgtNjcgMTUgNjY8YnI+DQo8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNl Ij5rYXJsaS5zam9iZXJnQHNsdS5zZTwvYT4gPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJs ZT4NCjwvYm9keT4NCjwvaHRtbD4NCg== --_000_5F9E965F5A80BC468BE5F40576769F092A1AF0CEexchange21_--

On 05/24/2013 08:04 AM, Karli Sjöberg wrote:
tor 2013-05-23 klockan 08:53 -0400 skrev Ilia Meerovich:
It should be like:
from ovirtsdk.xml import params from ovirtsdk.api import API
api = API('*', '*', '*') vm = api.vms.list()[0] user = api.users.list()[1] role = api.roles.list()[1] permit = params.Permission() permit.set_role(role) permit.set_vm(vm) user.permissions.add(permit)
Thank you very much, I´m going to test this out today! Could you also show me how to first add a user that isn´t in the system yet, please?
from api or ui? (you need to add an external directory first using the engine-manage-domains utility, then choose users from it)
----- Original Message ----- From: "Ilia Meerovich" <imeerovi@redhat.com <mailto:imeerovi@redhat.com>> To: "Michael Pasternak" <mpastern@redhat.com <mailto:mpastern@redhat.com>> Cc: "users" <users@ovirt.org <mailto:users@ovirt.org>>, "Karli Sjöberg" <Karli.Sjoberg@slu.se <mailto:Karli.Sjoberg@slu.se>>, "Elena Dolinin" <edolinin@redhat.com <mailto:edolinin@redhat.com>> Sent: Thursday, May 23, 2013 3:30:27 PM Subject: Re: [Users] Problems using the PythonSDK
Hi,
We have several tests like: "Add VM permission to user", that are using ART's art/rhevm_api/tests_lib/low_level/mla.py addPermitsToUser function. This is generic function but it shouldn't be hard to prepare SDK code with the same functionality.
Thanks Ilia
----- Original Message ----- From: "Michael Pasternak" <mpastern@redhat.com <mailto:mpastern@redhat.com>> To: "Karli Sjöberg" <Karli.Sjoberg@slu.se <mailto:Karli.Sjoberg@slu.se>>, "Elena Dolinin" <edolinin@redhat.com <mailto:edolinin@redhat.com>>, "Ilia Meerovich" <imeerovi@redhat.com <mailto:imeerovi@redhat.com>> Cc: "users" <users@ovirt.org <mailto:users@ovirt.org>> Sent: Thursday, May 23, 2013 3:10:21 PM Subject: Re: [Users] Problems using the PythonSDK
Hi Karli,
On 05/23/2013 12:35 PM, Karli Sjöberg wrote:
Hi!
We´re in the process of building an orderportal where our customers will be able to log in, select a virtual machine template, type in a desired hostname and it will be automatically created, and they recieve a mail explaining what they´ve gotten themselves into:). For this I figured the PythonSDK would be the best choice but I´m having trouble using it. What we´ve done so far is:
1) Create a new VM from a template; OK. I found an example and it worked OOTB 2) Rename the new VM´s disk from ${TemplateName}_Disk1 to ${VMName}_Disk1; Not OK. I found an example of how to change the name of a VMNic and that works, but using the same method to change VMDisk´s name does not (FYI, the VM only has one VNic and VDisk):
from ovirtsdk.xml import params from ovirtsdk.api import API api = API(url='https://${ENGINE}:443/api', <https://storm.slu.se:443/api',> ca_file='${CACERT}', username='admin@internal <mailto:'admin@internal>', password='letmein!') vm = api.vms.get(name='VMName')
vmnic = vm.nics.get(name='*') vmnic.name 'nic1' api.vms.get(name='VMName').nics.get(name='*') 'nic1' vmnic.name='nic2' vmnic.update() api.vms.get(name='VMName').nics.get(name='*') 'nic2' vmnic.name 'nic2'
vmdisk = vm.disks.get(name='*') vmdisk.name 'TemplateName_Disk1' api.vms.get(name='VMName').disks.get(name='*')
this kind of call is not efficient, by fetching the disk you also fetch the vm,
i'd suggest fetch vm, store it in local variable and then reuse it for any sub-collection manipulations.
'TemplateName_Disk1'
vmdisk.name='VMName_Disk1' vmdisk.update() vmdisk.name 'VMName_Disk1' api.vms.get(name='VMName').disks.get(name='*') 'TemplateName_Disk1'
See? Am I holding it wrong?
disk.name is deprecated, please use 'alias' instead.
3) Create a snapshot called "Origin", so if a customer calls in and says they´ve borked it completely, we´ll just revert to it´s "Origin" and they´re up and running again; OK, found another OOTB example, thank you. 4) Add the customer to VM´s Permissions with an appropriate role; Not OK. I have found no examples on how to do this and just don´t know where to start looking. BTW, creating a new VM with Python results in Permissions completely empty, no inheritance either. Don´t know if that is intended...
elena, ilia,
guys, do you have any permission related code to share?
client# rpm -qa | grep ovirt ovirt-engine-cli-3.2.0.11-1.fc17.noarch ovirt-engine-sdk-3.2.0.10-1.fc17.noarch
engine# rpm -qa | grep ovirt ovirt-engine-config-3.1.0-4.fc17.noarch ovirt-engine-dbscripts-3.1.0-4.fc17.noarch ovirt-log-collector-3.1.0-0.git10d719.fc17.noarch ovirt-engine-restapi-3.1.0-4.fc17.noarch ovirt-image-uploader-3.1.0-0.git9c42c8.fc17.noarch ovirt-engine-genericapi-3.1.0-4.fc17.noarch ovirt-iso-uploader-3.1.0-0.git1841d9.fc17.noarch ovirt-engine-webadmin-portal-3.1.0-4.fc17.noarch ovirt-engine-setup-3.1.0-4.fc17.noarch ovirt-engine-sdk-3.2.0.2-1.fc17.noarch ovirt-engine-backend-3.1.0-4.fc17.noarch ovirt-engine-tools-common-3.1.0-4.fc17.noarch ovirt-engine-3.1.0-4.fc17.noarch ovirt-engine-userportal-3.1.0-4.fc17.noarch ovirt-engine-notification-service-3.1.0-4.fc17.noarch
--
Best Regards ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@slu.se> <mailto:karli.sjoberg@adm.slu.se>
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users
--
Med Vänliga Hälsningar ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@adm.slu.se>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users

--_000_5F9E965F5A80BC468BE5F40576769F092A1AF41Dexchange21_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 ZnJlIDIwMTMtMDUtMjQga2xvY2thbiAxNToxOCArMDMwMCBza3JldiBJdGFtYXIgSGVpbToNCg0K DQpPbiAwNS8yNC8yMDEzIDA4OjA0IEFNLCBLYXJsaSBTasO2YmVyZyB3cm90ZToNCj4gdG9yIDIw MTMtMDUtMjMga2xvY2thbiAwODo1MyAtMDQwMCBza3JldiBJbGlhIE1lZXJvdmljaDoNCj4+IEl0 IHNob3VsZCBiZSBsaWtlOg0KPj4NCj4+IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXMN Cj4+IGZyb20gb3ZpcnRzZGsuYXBpIGltcG9ydCBBUEkNCj4+DQo+PiBhcGkgPSBBUEkoJyonLCAn KicsICcqJykNCj4+IHZtID0gYXBpLnZtcy5saXN0KClbMF0NCj4+IHVzZXIgPSAgYXBpLnVzZXJz Lmxpc3QoKVsxXQ0KPj4gcm9sZSA9IGFwaS5yb2xlcy5saXN0KClbMV0NCj4+IHBlcm1pdCA9IHBh cmFtcy5QZXJtaXNzaW9uKCkNCj4+IHBlcm1pdC5zZXRfcm9sZShyb2xlKQ0KPj4gcGVybWl0LnNl dF92bSh2bSkNCj4+IHVzZXIucGVybWlzc2lvbnMuYWRkKHBlcm1pdCkNCj4NCj4gVGhhbmsgeW91 IHZlcnkgbXVjaCwgScK0bSBnb2luZyB0byB0ZXN0IHRoaXMgb3V0IHRvZGF5ISBDb3VsZCB5b3Ug YWxzbw0KPiBzaG93IG1lIGhvdyB0byBmaXJzdCBhZGQgYSB1c2VyIHRoYXQgaXNuwrR0IGluIHRo ZSBzeXN0ZW0geWV0LCBwbGVhc2U/DQoNCmZyb20gYXBpIG9yIHVpPw0KKHlvdSBuZWVkIHRvIGFk ZCBhbiBleHRlcm5hbCBkaXJlY3RvcnkgZmlyc3QgdXNpbmcgdGhlDQplbmdpbmUtbWFuYWdlLWRv bWFpbnMgdXRpbGl0eSwgdGhlbiBjaG9vc2UgdXNlcnMgZnJvbSBpdCkNCg0KDQpXaXRoIHRoZSBQ eXRob24gU0RLLiBBZGRpbmcgZXh0ZXJuYWwgZGlyZWN0b3J5IHdhcyBvbmUgb2YgdGhlIGZpcnN0 IHRoaW5ncyBJIGRpZCBhYm91dCBhIHllYXIgYWdvLCB3aGVuIHdlIGZpcnN0IHNldCB0aGlzIHVw LiBBZGRpbmcgdXNlcnMgZnJvbSB0aGUgd2ViLXVpIGhhcyBuZXZlciBiZWVuIGFuIGlzc3VlLCBi dXQgYWRkaW5nIG5ldyB1c2VycyB0byB0aGUgc3lzdGVtIHdpdGggcHl0aG9uIGFuZCB0aGVuIGFz c2lnbiBwZXJtaXNzaW9ucyB3aXRoIHRoYXQgdXNlciBoYXZpbmcgYW4gYXBwcm9wcmlhdGUgcm9s ZSBpcyBjb21wbGV0bHkgbmV3IHRvIG1lLCBidXQgaXQgc2VlbXMgSSBiZWF0IHlvdSB0byBpdCwg aGFoYSwgSSBmaWd1cmVkIGl0IG91dCBieSBteXNlbGY7KQ0KDQpVU0VSX05BTUUgPSAnbmV3Y3Vz dG9tZXInDQpET01BSU5fTkFNRSA9ICdkb21haW4uZXhhbXBsZS5uZXQnDQoNCmRvbWFpbiA9IGFw aS5kb21haW5zLmdldChuYW1lPSclcycgJSAoRE9NQUlOX05BTUUpKQ0KdXNlcnBhcmFtcyA9IHBh cmFtcy5Vc2VyKCkNCg0KdXNlcnBhcmFtcy5zZXRfZG9tYWluKGRvbWFpbikNCnVzZXJwYXJhbXMu c2V0X3VzZXJfbmFtZShVU0VSKQ0KDQphcGkudXNlcnMuYWRkKHVzZXJwYXJhbXMpDQoNCi9LYXJs aQ0KDQoNCg0KDQo+DQo+Pg0KPj4NCj4+IC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0NCj4+ IEZyb206ICJJbGlhIE1lZXJvdmljaCIgPGltZWVyb3ZpQHJlZGhhdC5jb208bWFpbHRvOmltZWVy b3ZpQHJlZGhhdC5jb20+ICA8bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20+Pg0KPj4gVG86ICJN aWNoYWVsIFBhc3Rlcm5hayIgPG1wYXN0ZXJuQHJlZGhhdC5jb208bWFpbHRvOm1wYXN0ZXJuQHJl ZGhhdC5jb20+ICA8bWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20+Pg0KPj4gQ2M6ICJ1c2VycyIg PHVzZXJzQG92aXJ0Lm9yZzxtYWlsdG86dXNlcnNAb3ZpcnQub3JnPiAgPG1haWx0bzp1c2Vyc0Bv dmlydC5vcmc+PiwgIkthcmxpIFNqw7ZiZXJnIiA8S2FybGkuU2pvYmVyZ0BzbHUuc2U8bWFpbHRv OkthcmxpLlNqb2JlcmdAc2x1LnNlPiAgPG1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZT4+LCAi RWxlbmEgRG9saW5pbiIgPGVkb2xpbmluQHJlZGhhdC5jb208bWFpbHRvOmVkb2xpbmluQHJlZGhh dC5jb20+ICA8bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20+Pg0KPj4gU2VudDogVGh1cnNkYXks IE1heSAyMywgMjAxMyAzOjMwOjI3IFBNDQo+PiBTdWJqZWN0OiBSZTogW1VzZXJzXSBQcm9ibGVt cyB1c2luZyB0aGUgUHl0aG9uU0RLDQo+Pg0KPj4gSGksDQo+Pg0KPj4gV2UgaGF2ZSBzZXZlcmFs IHRlc3RzIGxpa2U6DQo+PiAiQWRkIFZNIHBlcm1pc3Npb24gdG8gdXNlciIsIHRoYXQgYXJlIHVz aW5nIEFSVCdzIGFydC9yaGV2bV9hcGkvdGVzdHNfbGliL2xvd19sZXZlbC9tbGEucHkgYWRkUGVy bWl0c1RvVXNlciBmdW5jdGlvbi4NCj4+IFRoaXMgaXMgZ2VuZXJpYyBmdW5jdGlvbiBidXQgaXQg c2hvdWxkbid0IGJlIGhhcmQgdG8gcHJlcGFyZSBTREsgY29kZSB3aXRoIHRoZSBzYW1lIGZ1bmN0 aW9uYWxpdHkuDQo+Pg0KPj4gVGhhbmtzDQo+PiBJbGlhDQo+Pg0KPj4gLS0tLS0gT3JpZ2luYWwg TWVzc2FnZSAtLS0tLQ0KPj4gRnJvbTogIk1pY2hhZWwgUGFzdGVybmFrIiA8bXBhc3Rlcm5AcmVk aGF0LmNvbTxtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbT4gIDxtYWlsdG86bXBhc3Rlcm5AcmVk aGF0LmNvbT4+DQo+PiBUbzogIkthcmxpIFNqw7ZiZXJnIiA8S2FybGkuU2pvYmVyZ0BzbHUuc2U8 bWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlPiAgPG1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5z ZT4+LCAiRWxlbmEgRG9saW5pbiIgPGVkb2xpbmluQHJlZGhhdC5jb208bWFpbHRvOmVkb2xpbmlu QHJlZGhhdC5jb20+ICA8bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20+PiwgIklsaWEgTWVlcm92 aWNoIiA8aW1lZXJvdmlAcmVkaGF0LmNvbTxtYWlsdG86aW1lZXJvdmlAcmVkaGF0LmNvbT4gIDxt YWlsdG86aW1lZXJvdmlAcmVkaGF0LmNvbT4+DQo+PiBDYzogInVzZXJzIiA8dXNlcnNAb3ZpcnQu b3JnPG1haWx0bzp1c2Vyc0BvdmlydC5vcmc+ICA8bWFpbHRvOnVzZXJzQG92aXJ0Lm9yZz4+DQo+ PiBTZW50OiBUaHVyc2RheSwgTWF5IDIzLCAyMDEzIDM6MTA6MjEgUE0NCj4+IFN1YmplY3Q6IFJl OiBbVXNlcnNdIFByb2JsZW1zIHVzaW5nIHRoZSBQeXRob25TREsNCj4+DQo+Pg0KPj4gSGkgS2Fy bGksDQo+Pg0KPj4gT24gMDUvMjMvMjAxMyAxMjozNSBQTSwgS2FybGkgU2rDtmJlcmcgd3JvdGU6 DQo+PiA+IEhpIQ0KPj4gPg0KPj4gPiBXZcK0cmUgaW4gdGhlIHByb2Nlc3Mgb2YgYnVpbGRpbmcg YW4gb3JkZXJwb3J0YWwgd2hlcmUgb3VyIGN1c3RvbWVycyB3aWxsIGJlIGFibGUgdG8gbG9nIGlu LCBzZWxlY3QgYSB2aXJ0dWFsIG1hY2hpbmUgdGVtcGxhdGUsIHR5cGUgaW4gYSBkZXNpcmVkIGhv c3RuYW1lIGFuZCBpdCB3aWxsIGJlDQo+PiA+IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCwgYW5kIHRo ZXkgcmVjaWV2ZSBhIG1haWwgZXhwbGFpbmluZyB3aGF0IHRoZXnCtHZlIGdvdHRlbiB0aGVtc2Vs dmVzIGludG86KS4gRm9yIHRoaXMgSSBmaWd1cmVkIHRoZSBQeXRob25TREsgd291bGQgYmUgdGhl IGJlc3QgY2hvaWNlIGJ1dCBJwrRtIGhhdmluZw0KPj4gPiB0cm91YmxlIHVzaW5nIGl0LiBXaGF0 IHdlwrR2ZSBkb25lIHNvIGZhciBpczoNCj4+ID4NCj4+ID4gMSkgQ3JlYXRlIGEgbmV3IFZNIGZy b20gYSB0ZW1wbGF0ZTsgT0suIEkgZm91bmQgYW4gZXhhbXBsZSBhbmQgaXQgd29ya2VkIE9PVEIN Cj4+ID4gMikgUmVuYW1lIHRoZSBuZXcgVk3CtHMgZGlzayBmcm9tICR7VGVtcGxhdGVOYW1lfV9E aXNrMSB0byAke1ZNTmFtZX1fRGlzazE7IE5vdCBPSy4gSSBmb3VuZCBhbiBleGFtcGxlIG9mIGhv dyB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBWTU5pYyBhbmQgdGhhdCB3b3JrcywgYnV0IHVzaW5n IHRoZQ0KPj4gPiBzYW1lIG1ldGhvZCB0byBjaGFuZ2UgVk1EaXNrwrRzIG5hbWUgZG9lcyBub3Qg KEZZSSwgdGhlIFZNIG9ubHkgaGFzIG9uZSBWTmljIGFuZCBWRGlzayk6DQo+PiA+Pj4+IGZyb20g b3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXMNCj4+ID4+Pj4gZnJvbSBvdmlydHNkay5hcGkgaW1w b3J0IEFQSQ0KPj4gPj4+PiBhcGkgPSBBUEkodXJsPSdodHRwczovLyR7RU5HSU5FfTo0NDMvYXBp JywgPGh0dHBzOi8vc3Rvcm0uc2x1LnNlOjQ0My9hcGknLD4gY2FfZmlsZT0nJHtDQUNFUlR9Jywg dXNlcm5hbWU9J2FkbWluQGludGVybmFsIDxtYWlsdG86J2FkbWluQGludGVybmFsPicsIHBhc3N3 b3JkPSdsZXRtZWluIScpDQo+PiA+Pj4+IHZtID0gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykN Cj4+ID4NCj4+ID4+Pj4gdm1uaWMgPSB2bS5uaWNzLmdldChuYW1lPScqJykNCj4+ID4+Pj4gdm1u aWMubmFtZQ0KPj4gPiAnbmljMScNCj4+ID4+Pj4gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJyku bmljcy5nZXQobmFtZT0nKicpDQo+PiA+ICduaWMxJw0KPj4gPj4+PiB2bW5pYy5uYW1lPSduaWMy Jw0KPj4gPj4+PiB2bW5pYy51cGRhdGUoKQ0KPj4gPj4+PiBhcGkudm1zLmdldChuYW1lPSdWTU5h bWUnKS5uaWNzLmdldChuYW1lPScqJykNCj4+ID4gJ25pYzInDQo+PiA+Pj4+IHZtbmljLm5hbWUN Cj4+ID4gJ25pYzInDQo+PiA+DQo+PiA+Pj4+IHZtZGlzayA9IHZtLmRpc2tzLmdldChuYW1lPScq JykNCj4+ID4+Pj4gdm1kaXNrLm5hbWUNCj4+ID4gJ1RlbXBsYXRlTmFtZV9EaXNrMScNCj4+ID4+ Pj4gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQ0KPj4NCj4+ IHRoaXMga2luZCBvZiBjYWxsIGlzIG5vdCBlZmZpY2llbnQsIGJ5IGZldGNoaW5nIHRoZSBkaXNr DQo+PiB5b3UgYWxzbyBmZXRjaCB0aGUgdm0sDQo+Pg0KPj4gaSdkIHN1Z2dlc3QgZmV0Y2ggdm0s IHN0b3JlIGl0IGluIGxvY2FsIHZhcmlhYmxlIGFuZCB0aGVuDQo+PiByZXVzZSBpdCBmb3IgYW55 IHN1Yi1jb2xsZWN0aW9uIG1hbmlwdWxhdGlvbnMuDQo+Pg0KPj4NCj4+ID4gJ1RlbXBsYXRlTmFt ZV9EaXNrMScNCj4+ID4+Pj4gdm1kaXNrLm5hbWU9J1ZNTmFtZV9EaXNrMScNCj4+ID4+Pj4gdm1k aXNrLnVwZGF0ZSgpDQo+PiA+Pj4+IHZtZGlzay5uYW1lDQo+PiA+ICdWTU5hbWVfRGlzazEnDQo+ PiA+Pj4+IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLmRpc2tzLmdldChuYW1lPScqJykNCj4+ ID4gJ1RlbXBsYXRlTmFtZV9EaXNrMScNCj4+ID4NCj4+ID4gU2VlPyBBbSBJIGhvbGRpbmcgaXQg d3Jvbmc/DQo+Pg0KPj4gZGlzay5uYW1lIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgJ2FsaWFz JyBpbnN0ZWFkLg0KPj4NCj4+ID4NCj4+ID4gMykgQ3JlYXRlIGEgc25hcHNob3QgY2FsbGVkICJP cmlnaW4iLCBzbyBpZiBhIGN1c3RvbWVyIGNhbGxzIGluIGFuZCBzYXlzIHRoZXnCtHZlIGJvcmtl ZCBpdCBjb21wbGV0ZWx5LCB3ZcK0bGwganVzdCByZXZlcnQgdG8gaXTCtHMgIk9yaWdpbiIgYW5k IHRoZXnCtHJlIHVwIGFuZCBydW5uaW5nIGFnYWluOw0KPj4gPiBPSywgZm91bmQgYW5vdGhlciBP T1RCIGV4YW1wbGUsIHRoYW5rIHlvdS4NCj4+ID4gNCkgQWRkIHRoZSBjdXN0b21lciB0byBWTcK0 cyBQZXJtaXNzaW9ucyB3aXRoIGFuIGFwcHJvcHJpYXRlIHJvbGU7IE5vdCBPSy4gSSBoYXZlIGZv dW5kIG5vIGV4YW1wbGVzIG9uIGhvdyB0byBkbyB0aGlzIGFuZCBqdXN0IGRvbsK0dCBrbm93IHdo ZXJlIHRvIHN0YXJ0IGxvb2tpbmcuIEJUVywNCj4+ID4gY3JlYXRpbmcgYSBuZXcgVk0gd2l0aCBQ eXRob24gcmVzdWx0cyBpbiBQZXJtaXNzaW9ucyBjb21wbGV0ZWx5IGVtcHR5LCBubyBpbmhlcml0 YW5jZSBlaXRoZXIuIERvbsK0dCBrbm93IGlmIHRoYXQgaXMgaW50ZW5kZWQuLi4NCj4+DQo+PiBl bGVuYSwgaWxpYSwNCj4+DQo+PiBndXlzLCBkbyB5b3UgaGF2ZSBhbnkgcGVybWlzc2lvbiByZWxh dGVkIGNvZGUgdG8gc2hhcmU/DQo+Pg0KPj4gPg0KPj4gPiBjbGllbnQjIHJwbSAtcWEgfCBncmVw IG92aXJ0DQo+PiA+IG92aXJ0LWVuZ2luZS1jbGktMy4yLjAuMTEtMS5mYzE3Lm5vYXJjaA0KPj4g PiBvdmlydC1lbmdpbmUtc2RrLTMuMi4wLjEwLTEuZmMxNy5ub2FyY2gNCj4+ID4NCj4+ID4gZW5n aW5lIyBycG0gLXFhIHwgZ3JlcCBvdmlydA0KPj4gPiBvdmlydC1lbmdpbmUtY29uZmlnLTMuMS4w LTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLWRic2NyaXB0cy0zLjEuMC00LmZjMTcu bm9hcmNoDQo+PiA+IG92aXJ0LWxvZy1jb2xsZWN0b3ItMy4xLjAtMC5naXQxMGQ3MTkuZmMxNy5u b2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLXJlc3RhcGktMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4g PiBvdmlydC1pbWFnZS11cGxvYWRlci0zLjEuMC0wLmdpdDljNDJjOC5mYzE3Lm5vYXJjaA0KPj4g PiBvdmlydC1lbmdpbmUtZ2VuZXJpY2FwaS0zLjEuMC00LmZjMTcubm9hcmNoDQo+PiA+IG92aXJ0 LWlzby11cGxvYWRlci0zLjEuMC0wLmdpdDE4NDFkOS5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1l bmdpbmUtd2ViYWRtaW4tcG9ydGFsLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5n aW5lLXNldHVwLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLXNkay0zLjIu MC4yLTEuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLWJhY2tlbmQtMy4xLjAtNC5mYzE3 Lm5vYXJjaA0KPj4gPiBvdmlydC1lbmdpbmUtdG9vbHMtY29tbW9uLTMuMS4wLTQuZmMxNy5ub2Fy Y2gNCj4+ID4gb3ZpcnQtZW5naW5lLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5n aW5lLXVzZXJwb3J0YWwtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1lbmdpbmUtbm90 aWZpY2F0aW9uLXNlcnZpY2UtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4gPg0KPj4gPiAtLQ0KPj4g Pg0KPj4gPiBCZXN0IFJlZ2FyZHMNCj4+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gPiBL YXJsaSBTasO2YmVyZw0KPj4gPiBTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNj aWVuY2VzDQo+PiA+IEJveCA3MDc5IChWaXNpdGluZyBBZGRyZXNzIEtyb27DpXN2w6RnZW4gOCkN Cj4+ID4gUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuDQo+PiA+IFBob25lOiAgKzQ2LSgwKTE4LTY3 IDE1IDY2DQo+PiA+a2FybGkuc2pvYmVyZ0BzbHUuc2U8bWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1 LnNlPiAgPG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZT4gIDxtYWlsdG86a2FybGkuc2pvYmVy Z0BhZG0uc2x1LnNlPg0KPj4gPg0KPj4gPg0KPj4gPg0KPj4gPiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPj4gPiBVc2VycyBtYWlsaW5nIGxpc3QNCj4+ ID5Vc2Vyc0BvdmlydC5vcmc8bWFpbHRvOlVzZXJzQG92aXJ0Lm9yZz4gIDxtYWlsdG86VXNlcnNA b3ZpcnQub3JnPg0KPj4gPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91 c2Vycw0KPj4gPg0KPj4NCj4+DQo+DQo+IC0tDQo+DQo+IE1lZCBWw6RubGlnYSBIw6Rsc25pbmdh cg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IEthcmxpIFNqw7ZiZXJnDQo+IFN3ZWRpc2gg VW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXMNCj4gQm94IDcwNzkgKFZpc2l0aW5n IEFkZHJlc3MgS3JvbsOlc3bDpGdlbiA4KQ0KPiBTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4NCj4g UGhvbmU6ICArNDYtKDApMTgtNjcgMTUgNjYNCj4ga2FybGkuc2pvYmVyZ0BzbHUuc2U8bWFpbHRv OmthcmxpLnNqb2JlcmdAc2x1LnNlPiA8bWFpbHRvOmthcmxpLnNqb2JlcmdAYWRtLnNsdS5zZT4N Cj4NCj4NCj4NCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18NCj4gVXNlcnMgbWFpbGluZyBsaXN0DQo+IFVzZXJzQG92aXJ0Lm9yZzxtYWlsdG86VXNlcnNA b3ZpcnQub3JnPg0KPiBodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNl cnMNCj4NCg0KDQoNCi0tDQoNCk1lZCBWw6RubGlnYSBIw6Rsc25pbmdhcg0KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KS2FybGkgU2rDtmJlcmcNClN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3Vs dHVyYWwgU2NpZW5jZXMNCkJveCA3MDc5IChWaXNpdGluZyBBZGRyZXNzIEtyb27DpXN2w6RnZW4g OCkNClMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbg0KUGhvbmU6ICArNDYtKDApMTgtNjcgMTUgNjYN CmthcmxpLnNqb2JlcmdAc2x1LnNlPG1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2U+DQo= --_000_5F9E965F5A80BC468BE5F40576769F092A1AF41Dexchange21_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwv L0VOIj4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQo8bWV0YSBuYW1lPSJHRU5FUkFUT1Ii IGNvbnRlbnQ9Ikd0a0hUTUwvNC40LjQiPg0KPC9oZWFkPg0KPGJvZHk+DQpmcmUgMjAxMy0wNS0y NCBrbG9ja2FuIDE1OjE4ICYjNDM7MDMwMCBza3JldiBJdGFtYXIgSGVpbToNCjxibG9ja3F1b3Rl IHR5cGU9IkNJVEUiPg0KPHByZT4KT24gMDUvMjQvMjAxMyAwODowNCBBTSwgS2FybGkgU2rDtmJl cmcgd3JvdGU6CiZndDsgdG9yIDIwMTMtMDUtMjMga2xvY2thbiAwODo1MyAtMDQwMCBza3JldiBJ bGlhIE1lZXJvdmljaDoKJmd0OyZndDsgSXQgc2hvdWxkIGJlIGxpa2U6CiZndDsmZ3Q7CiZndDsm Z3Q7IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXMKJmd0OyZndDsgZnJvbSBvdmlydHNk ay5hcGkgaW1wb3J0IEFQSQomZ3Q7Jmd0OwomZ3Q7Jmd0OyBhcGkgPSBBUEkoJyonLCAnKicsICcq JykKJmd0OyZndDsgdm0gPSBhcGkudm1zLmxpc3QoKVswXQomZ3Q7Jmd0OyB1c2VyID0gIGFwaS51 c2Vycy5saXN0KClbMV0KJmd0OyZndDsgcm9sZSA9IGFwaS5yb2xlcy5saXN0KClbMV0KJmd0OyZn dDsgcGVybWl0ID0gcGFyYW1zLlBlcm1pc3Npb24oKQomZ3Q7Jmd0OyBwZXJtaXQuc2V0X3JvbGUo cm9sZSkKJmd0OyZndDsgcGVybWl0LnNldF92bSh2bSkKJmd0OyZndDsgdXNlci5wZXJtaXNzaW9u cy5hZGQocGVybWl0KQomZ3Q7CiZndDsgVGhhbmsgeW91IHZlcnkgbXVjaCwgScK0bSBnb2luZyB0 byB0ZXN0IHRoaXMgb3V0IHRvZGF5ISBDb3VsZCB5b3UgYWxzbwomZ3Q7IHNob3cgbWUgaG93IHRv IGZpcnN0IGFkZCBhIHVzZXIgdGhhdCBpc27CtHQgaW4gdGhlIHN5c3RlbSB5ZXQsIHBsZWFzZT8K CmZyb20gYXBpIG9yIHVpPwooeW91IG5lZWQgdG8gYWRkIGFuIGV4dGVybmFsIGRpcmVjdG9yeSBm aXJzdCB1c2luZyB0aGUgCmVuZ2luZS1tYW5hZ2UtZG9tYWlucyB1dGlsaXR5LCB0aGVuIGNob29z ZSB1c2VycyBmcm9tIGl0KQo8L3ByZT4NCjwvYmxvY2txdW90ZT4NCjxicj4NCldpdGggdGhlIFB5 dGhvbiBTREsuIEFkZGluZyBleHRlcm5hbCBkaXJlY3Rvcnkgd2FzIG9uZSBvZiB0aGUgZmlyc3Qg dGhpbmdzIEkgZGlkIGFib3V0IGEgeWVhciBhZ28sIHdoZW4gd2UgZmlyc3Qgc2V0IHRoaXMgdXAu IEFkZGluZyB1c2VycyBmcm9tIHRoZSB3ZWItdWkgaGFzIG5ldmVyIGJlZW4gYW4gaXNzdWUsIGJ1 dCBhZGRpbmcgbmV3IHVzZXJzIHRvIHRoZSBzeXN0ZW0gd2l0aCBweXRob24gYW5kIHRoZW4gYXNz aWduIHBlcm1pc3Npb25zIHdpdGgNCiB0aGF0IHVzZXIgaGF2aW5nIGFuIGFwcHJvcHJpYXRlIHJv bGUgaXMgY29tcGxldGx5IG5ldyB0byBtZSwgYnV0IGl0IHNlZW1zIEkgYmVhdCB5b3UgdG8gaXQs IGhhaGEsIEkgZmlndXJlZCBpdCBvdXQgYnkgbXlzZWxmOyk8YnI+DQo8YnI+DQpVU0VSX05BTUUg PSAnbmV3Y3VzdG9tZXInPGJyPg0KRE9NQUlOX05BTUUgPSAnZG9tYWluLmV4YW1wbGUubmV0Jzxi cj4NCjxicj4NCmRvbWFpbiA9IGFwaS5kb21haW5zLmdldChuYW1lPSclcycgJSAoRE9NQUlOX05B TUUpKTxicj4NCnVzZXJwYXJhbXMgPSBwYXJhbXMuVXNlcigpPGJyPg0KPGJyPg0KdXNlcnBhcmFt cy5zZXRfZG9tYWluKGRvbWFpbik8YnI+DQp1c2VycGFyYW1zLnNldF91c2VyX25hbWUoVVNFUik8 YnI+DQo8YnI+DQphcGkudXNlcnMuYWRkKHVzZXJwYXJhbXMpPGJyPg0KPGJyPg0KL0thcmxpPGJy Pg0KPGJyPg0KPGJsb2NrcXVvdGUgdHlwZT0iQ0lURSI+DQo8cHJlPgoKJmd0OwomZ3Q7Jmd0Owom Z3Q7Jmd0OwomZ3Q7Jmd0OyAtLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCiZndDsmZ3Q7IEZy b206ICZxdW90O0lsaWEgTWVlcm92aWNoJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86aW1lZXJv dmlAcmVkaGF0LmNvbSI+aW1lZXJvdmlAcmVkaGF0LmNvbTwvYT4gICZsdDs8YSBocmVmPSJtYWls dG86aW1lZXJvdmlAcmVkaGF0LmNvbSI+bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb208L2E+Jmd0 OyZndDsKJmd0OyZndDsgVG86ICZxdW90O01pY2hhZWwgUGFzdGVybmFrJnF1b3Q7ICZsdDs8YSBo cmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbSI+bXBhc3Rlcm5AcmVkaGF0LmNvbTwvYT4g ICZsdDs8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbSI+bWFpbHRvOm1wYXN0ZXJu QHJlZGhhdC5jb208L2E+Jmd0OyZndDsKJmd0OyZndDsgQ2M6ICZxdW90O3VzZXJzJnF1b3Q7ICZs dDs8YSBocmVmPSJtYWlsdG86dXNlcnNAb3ZpcnQub3JnIj51c2Vyc0BvdmlydC5vcmc8L2E+ICAm bHQ7PGEgaHJlZj0ibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyI+bWFpbHRvOnVzZXJzQG92aXJ0Lm9y ZzwvYT4mZ3Q7Jmd0OywgJnF1b3Q7S2FybGkgU2rDtmJlcmcmcXVvdDsgJmx0OzxhIGhyZWY9Im1h aWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZSI+S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+ICAmbHQ7 PGEgaHJlZj0ibWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlIj5tYWlsdG86S2FybGkuU2pvYmVy Z0BzbHUuc2U8L2E+Jmd0OyZndDssICZxdW90O0VsZW5hIERvbGluaW4mcXVvdDsgJmx0OzxhIGhy ZWY9Im1haWx0bzplZG9saW5pbkByZWRoYXQuY29tIj5lZG9saW5pbkByZWRoYXQuY29tPC9hPiAg Jmx0OzxhIGhyZWY9Im1haWx0bzplZG9saW5pbkByZWRoYXQuY29tIj5tYWlsdG86ZWRvbGluaW5A cmVkaGF0LmNvbTwvYT4mZ3Q7Jmd0OwomZ3Q7Jmd0OyBTZW50OiBUaHVyc2RheSwgTWF5IDIzLCAy MDEzIDM6MzA6MjcgUE0KJmd0OyZndDsgU3ViamVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNp bmcgdGhlIFB5dGhvblNESwomZ3Q7Jmd0OwomZ3Q7Jmd0OyBIaSwKJmd0OyZndDsKJmd0OyZndDsg V2UgaGF2ZSBzZXZlcmFsIHRlc3RzIGxpa2U6CiZndDsmZ3Q7ICZxdW90O0FkZCBWTSBwZXJtaXNz aW9uIHRvIHVzZXImcXVvdDssIHRoYXQgYXJlIHVzaW5nIEFSVCdzIGFydC9yaGV2bV9hcGkvdGVz dHNfbGliL2xvd19sZXZlbC9tbGEucHkgYWRkUGVybWl0c1RvVXNlciBmdW5jdGlvbi4KJmd0OyZn dDsgVGhpcyBpcyBnZW5lcmljIGZ1bmN0aW9uIGJ1dCBpdCBzaG91bGRuJ3QgYmUgaGFyZCB0byBw cmVwYXJlIFNESyBjb2RlIHdpdGggdGhlIHNhbWUgZnVuY3Rpb25hbGl0eS4KJmd0OyZndDsKJmd0 OyZndDsgVGhhbmtzCiZndDsmZ3Q7IElsaWEKJmd0OyZndDsKJmd0OyZndDsgLS0tLS0gT3JpZ2lu YWwgTWVzc2FnZSAtLS0tLQomZ3Q7Jmd0OyBGcm9tOiAmcXVvdDtNaWNoYWVsIFBhc3Rlcm5hayZx dW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20iPm1wYXN0ZXJuQHJl ZGhhdC5jb208L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20iPm1h aWx0bzptcGFzdGVybkByZWRoYXQuY29tPC9hPiZndDsmZ3Q7CiZndDsmZ3Q7IFRvOiAmcXVvdDtL YXJsaSBTasO2YmVyZyZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1 LnNlIj5LYXJsaS5Tam9iZXJnQHNsdS5zZTwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86S2FybGku U2pvYmVyZ0BzbHUuc2UiPm1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZTwvYT4mZ3Q7Jmd0Oywg JnF1b3Q7RWxlbmEgRG9saW5pbiZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVkb2xpbmluQHJl ZGhhdC5jb20iPmVkb2xpbmluQHJlZGhhdC5jb208L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVk b2xpbmluQHJlZGhhdC5jb20iPm1haWx0bzplZG9saW5pbkByZWRoYXQuY29tPC9hPiZndDsmZ3Q7 LCAmcXVvdDtJbGlhIE1lZXJvdmljaCZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmltZWVyb3Zp QHJlZGhhdC5jb20iPmltZWVyb3ZpQHJlZGhhdC5jb208L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRv OmltZWVyb3ZpQHJlZGhhdC5jb20iPm1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPC9hPiZndDsm Z3Q7CiZndDsmZ3Q7IENjOiAmcXVvdDt1c2VycyZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnVz ZXJzQG92aXJ0Lm9yZyI+dXNlcnNAb3ZpcnQub3JnPC9hPiAgJmx0OzxhIGhyZWY9Im1haWx0bzp1 c2Vyc0BvdmlydC5vcmciPm1haWx0bzp1c2Vyc0BvdmlydC5vcmc8L2E+Jmd0OyZndDsKJmd0OyZn dDsgU2VudDogVGh1cnNkYXksIE1heSAyMywgMjAxMyAzOjEwOjIxIFBNCiZndDsmZ3Q7IFN1Ympl Y3Q6IFJlOiBbVXNlcnNdIFByb2JsZW1zIHVzaW5nIHRoZSBQeXRob25TREsKJmd0OyZndDsKJmd0 OyZndDsKJmd0OyZndDsgSGkgS2FybGksCiZndDsmZ3Q7CiZndDsmZ3Q7IE9uIDA1LzIzLzIwMTMg MTI6MzUgUE0sIEthcmxpIFNqw7ZiZXJnIHdyb3RlOgomZ3Q7Jmd0OyAmZ3Q7IEhpIQomZ3Q7Jmd0 OyAmZ3Q7CiZndDsmZ3Q7ICZndDsgV2XCtHJlIGluIHRoZSBwcm9jZXNzIG9mIGJ1aWxkaW5nIGFu IG9yZGVycG9ydGFsIHdoZXJlIG91ciBjdXN0b21lcnMgd2lsbCBiZSBhYmxlIHRvIGxvZyBpbiwg c2VsZWN0IGEgdmlydHVhbCBtYWNoaW5lIHRlbXBsYXRlLCB0eXBlIGluIGEgZGVzaXJlZCBob3N0 bmFtZSBhbmQgaXQgd2lsbCBiZQomZ3Q7Jmd0OyAmZ3Q7IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCwg YW5kIHRoZXkgcmVjaWV2ZSBhIG1haWwgZXhwbGFpbmluZyB3aGF0IHRoZXnCtHZlIGdvdHRlbiB0 aGVtc2VsdmVzIGludG86KS4gRm9yIHRoaXMgSSBmaWd1cmVkIHRoZSBQeXRob25TREsgd291bGQg YmUgdGhlIGJlc3QgY2hvaWNlIGJ1dCBJwrRtIGhhdmluZwomZ3Q7Jmd0OyAmZ3Q7IHRyb3VibGUg dXNpbmcgaXQuIFdoYXQgd2XCtHZlIGRvbmUgc28gZmFyIGlzOgomZ3Q7Jmd0OyAmZ3Q7CiZndDsm Z3Q7ICZndDsgMSkgQ3JlYXRlIGEgbmV3IFZNIGZyb20gYSB0ZW1wbGF0ZTsgT0suIEkgZm91bmQg YW4gZXhhbXBsZSBhbmQgaXQgd29ya2VkIE9PVEIKJmd0OyZndDsgJmd0OyAyKSBSZW5hbWUgdGhl IG5ldyBWTcK0cyBkaXNrIGZyb20gJHtUZW1wbGF0ZU5hbWV9X0Rpc2sxIHRvICR7Vk1OYW1lfV9E aXNrMTsgTm90IE9LLiBJIGZvdW5kIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNoYW5nZSB0aGUgbmFt ZSBvZiBhIFZNTmljIGFuZCB0aGF0IHdvcmtzLCBidXQgdXNpbmcgdGhlCiZndDsmZ3Q7ICZndDsg c2FtZSBtZXRob2QgdG8gY2hhbmdlIFZNRGlza8K0cyBuYW1lIGRvZXMgbm90IChGWUksIHRoZSBW TSBvbmx5IGhhcyBvbmUgVk5pYyBhbmQgVkRpc2spOgomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7 IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXMKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0 OyBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsg YXBpID0gQVBJKHVybD0nPGEgaHJlZj0iaHR0cHM6Ly8iPmh0dHBzOi8vPC9hPiR7RU5HSU5FfTo0 NDMvYXBpJywgJmx0OzxhIGhyZWY9Imh0dHBzOi8vc3Rvcm0uc2x1LnNlOjQ0My9hcGknIj5odHRw czovL3N0b3JtLnNsdS5zZTo0NDMvYXBpJzwvYT4sJmd0OyBjYV9maWxlPScke0NBQ0VSVH0nLCB1 c2VybmFtZT0nYWRtaW5AaW50ZXJuYWwgJmx0OzxhIGhyZWY9Im1haWx0bzonYWRtaW5AaW50ZXJu YWwiPm1haWx0bzonYWRtaW5AaW50ZXJuYWw8L2E+Jmd0OycsIHBhc3N3b3JkPSdsZXRtZWluIScp CiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm0gPSBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUn KQomZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1uaWMgPSB2bS5uaWNz LmdldChuYW1lPScqJykKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bW5pYy5uYW1lCiZndDsm Z3Q7ICZndDsgJ25pYzEnCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgYXBpLnZtcy5nZXQobmFt ZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpCiZndDsmZ3Q7ICZndDsgJ25pYzEnCiZndDsm Z3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1uaWMubmFtZT0nbmljMicKJmd0OyZndDsgJmd0OyZndDsm Z3Q7Jmd0OyB2bW5pYy51cGRhdGUoKQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IGFwaS52bXMu Z2V0KG5hbWU9J1ZNTmFtZScpLm5pY3MuZ2V0KG5hbWU9JyonKQomZ3Q7Jmd0OyAmZ3Q7ICduaWMy JwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmljLm5hbWUKJmd0OyZndDsgJmd0OyAnbmlj MicKJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtZGlzayA9IHZtLmRp c2tzLmdldChuYW1lPScqJykKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2submFtZQom Z3Q7Jmd0OyAmZ3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZn dDsgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQomZ3Q7Jmd0 OwomZ3Q7Jmd0OyB0aGlzIGtpbmQgb2YgY2FsbCBpcyBub3QgZWZmaWNpZW50LCBieSBmZXRjaGlu ZyB0aGUgZGlzawomZ3Q7Jmd0OyB5b3UgYWxzbyBmZXRjaCB0aGUgdm0sCiZndDsmZ3Q7CiZndDsm Z3Q7IGknZCBzdWdnZXN0IGZldGNoIHZtLCBzdG9yZSBpdCBpbiBsb2NhbCB2YXJpYWJsZSBhbmQg dGhlbgomZ3Q7Jmd0OyByZXVzZSBpdCBmb3IgYW55IHN1Yi1jb2xsZWN0aW9uIG1hbmlwdWxhdGlv bnMuCiZndDsmZ3Q7CiZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsgJ1RlbXBsYXRlTmFtZV9EaXNrMScK Jmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2submFtZT0nVk1OYW1lX0Rpc2sxJwomZ3Q7 Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtZGlzay51cGRhdGUoKQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZn dDsmZ3Q7IHZtZGlzay5uYW1lCiZndDsmZ3Q7ICZndDsgJ1ZNTmFtZV9EaXNrMScKJmd0OyZndDsg Jmd0OyZndDsmZ3Q7Jmd0OyBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5kaXNrcy5nZXQobmFt ZT0nKicpCiZndDsmZ3Q7ICZndDsgJ1RlbXBsYXRlTmFtZV9EaXNrMScKJmd0OyZndDsgJmd0Owom Z3Q7Jmd0OyAmZ3Q7IFNlZT8gQW0gSSBob2xkaW5nIGl0IHdyb25nPwomZ3Q7Jmd0OwomZ3Q7Jmd0 OyBkaXNrLm5hbWUgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSAnYWxpYXMnIGluc3RlYWQuCiZn dDsmZ3Q7CiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyAzKSBDcmVhdGUgYSBzbmFwc2hvdCBj YWxsZWQgJnF1b3Q7T3JpZ2luJnF1b3Q7LCBzbyBpZiBhIGN1c3RvbWVyIGNhbGxzIGluIGFuZCBz YXlzIHRoZXnCtHZlIGJvcmtlZCBpdCBjb21wbGV0ZWx5LCB3ZcK0bGwganVzdCByZXZlcnQgdG8g aXTCtHMgJnF1b3Q7T3JpZ2luJnF1b3Q7IGFuZCB0aGV5wrRyZSB1cCBhbmQgcnVubmluZyBhZ2Fp bjsKJmd0OyZndDsgJmd0OyBPSywgZm91bmQgYW5vdGhlciBPT1RCIGV4YW1wbGUsIHRoYW5rIHlv dS4KJmd0OyZndDsgJmd0OyA0KSBBZGQgdGhlIGN1c3RvbWVyIHRvIFZNwrRzIFBlcm1pc3Npb25z IHdpdGggYW4gYXBwcm9wcmlhdGUgcm9sZTsgTm90IE9LLiBJIGhhdmUgZm91bmQgbm8gZXhhbXBs ZXMgb24gaG93IHRvIGRvIHRoaXMgYW5kIGp1c3QgZG9uwrR0IGtub3cgd2hlcmUgdG8gc3RhcnQg bG9va2luZy4gQlRXLAomZ3Q7Jmd0OyAmZ3Q7IGNyZWF0aW5nIGEgbmV3IFZNIHdpdGggUHl0aG9u IHJlc3VsdHMgaW4gUGVybWlzc2lvbnMgY29tcGxldGVseSBlbXB0eSwgbm8gaW5oZXJpdGFuY2Ug ZWl0aGVyLiBEb27CtHQga25vdyBpZiB0aGF0IGlzIGludGVuZGVkLi4uCiZndDsmZ3Q7CiZndDsm Z3Q7IGVsZW5hLCBpbGlhLAomZ3Q7Jmd0OwomZ3Q7Jmd0OyBndXlzLCBkbyB5b3UgaGF2ZSBhbnkg cGVybWlzc2lvbiByZWxhdGVkIGNvZGUgdG8gc2hhcmU/CiZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsK Jmd0OyZndDsgJmd0OyBjbGllbnQjIHJwbSAtcWEgfCBncmVwIG92aXJ0CiZndDsmZ3Q7ICZndDsg b3ZpcnQtZW5naW5lLWNsaS0zLjIuMC4xMS0xLmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3Zp cnQtZW5naW5lLXNkay0zLjIuMC4xMC0xLmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsKJmd0OyZn dDsgJmd0OyBlbmdpbmUjIHJwbSAtcWEgfCBncmVwIG92aXJ0CiZndDsmZ3Q7ICZndDsgb3ZpcnQt ZW5naW5lLWNvbmZpZy0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5n aW5lLWRic2NyaXB0cy0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtbG9n LWNvbGxlY3Rvci0zLjEuMC0wLmdpdDEwZDcxOS5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7IG92 aXJ0LWVuZ2luZS1yZXN0YXBpLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyBvdmly dC1pbWFnZS11cGxvYWRlci0zLjEuMC0wLmdpdDljNDJjOC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAm Z3Q7IG92aXJ0LWVuZ2luZS1nZW5lcmljYXBpLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsg Jmd0OyBvdmlydC1pc28tdXBsb2FkZXItMy4xLjAtMC5naXQxODQxZDkuZmMxNy5ub2FyY2gKJmd0 OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtd2ViYWRtaW4tcG9ydGFsLTMuMS4wLTQuZmMxNy5ub2Fy Y2gKJmd0OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtc2V0dXAtMy4xLjAtNC5mYzE3Lm5vYXJjaAom Z3Q7Jmd0OyAmZ3Q7IG92aXJ0LWVuZ2luZS1zZGstMy4yLjAuMi0xLmZjMTcubm9hcmNoCiZndDsm Z3Q7ICZndDsgb3ZpcnQtZW5naW5lLWJhY2tlbmQtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0 OyAmZ3Q7IG92aXJ0LWVuZ2luZS10b29scy1jb21tb24tMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7 Jmd0OyAmZ3Q7IG92aXJ0LWVuZ2luZS0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsg b3ZpcnQtZW5naW5lLXVzZXJwb3J0YWwtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7 IG92aXJ0LWVuZ2luZS1ub3RpZmljYXRpb24tc2VydmljZS0zLjEuMC00LmZjMTcubm9hcmNoCiZn dDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyAtLQomZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsg QmVzdCBSZWdhcmRzCiZndDsmZ3Q7ICZndDsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomZ3Q7Jmd0 OyAmZ3Q7IEthcmxpIFNqw7ZiZXJnCiZndDsmZ3Q7ICZndDsgU3dlZGlzaCBVbml2ZXJzaXR5IG9m IEFncmljdWx0dXJhbCBTY2llbmNlcwomZ3Q7Jmd0OyAmZ3Q7IEJveCA3MDc5IChWaXNpdGluZyBB ZGRyZXNzIEtyb27DpXN2w6RnZW4gOCkKJmd0OyZndDsgJmd0OyBTLTc1MCAwNyBVcHBzYWxhLCBT d2VkZW4KJmd0OyZndDsgJmd0OyBQaG9uZTogICYjNDM7NDYtKDApMTgtNjcgMTUgNjYKJmd0OyZn dDsgJmd0OzxhIGhyZWY9Im1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZSI+a2FybGkuc2pvYmVy Z0BzbHUuc2U8L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlIj5t YWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2U8L2E+Jmd0OyAgJmx0OzxhIGhyZWY9Im1haWx0bzpr YXJsaS5zam9iZXJnQGFkbS5zbHUuc2UiPm1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2U8 L2E+Jmd0OwomZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OwomZ3Q7Jmd0 OyAmZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiZn dDsmZ3Q7ICZndDsgVXNlcnMgbWFpbGluZyBsaXN0CiZndDsmZ3Q7ICZndDs8YSBocmVmPSJtYWls dG86VXNlcnNAb3ZpcnQub3JnIj5Vc2Vyc0BvdmlydC5vcmc8L2E+ICAmbHQ7PGEgaHJlZj0ibWFp bHRvOlVzZXJzQG92aXJ0Lm9yZyI+bWFpbHRvOlVzZXJzQG92aXJ0Lm9yZzwvYT4mZ3Q7CiZndDsm Z3Q7ICZndDs8YSBocmVmPSJodHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8v dXNlcnMiPmh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VyczwvYT4K Jmd0OyZndDsgJmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7CiZndDsgLS0KJmd0OwomZ3Q7IE1l ZCBWw6RubGlnYSBIw6Rsc25pbmdhcgomZ3Q7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJmd0OyBL YXJsaSBTasO2YmVyZwomZ3Q7IFN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2Np ZW5jZXMKJmd0OyBCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpCiZn dDsgUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuCiZndDsgUGhvbmU6ICAmIzQzOzQ2LSgwKTE4LTY3 IDE1IDY2CiZndDsgPGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlIj5rYXJsaS5z am9iZXJnQHNsdS5zZTwvYT4gJmx0OzxhIGhyZWY9Im1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5z bHUuc2UiPm1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2U8L2E+Jmd0OwomZ3Q7CiZndDsK Jmd0OwomZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CiZndDsgVXNlcnMgbWFpbGluZyBsaXN0CiZndDsgPGEgaHJlZj0ibWFpbHRvOlVzZXJzQG92aXJ0 Lm9yZyI+VXNlcnNAb3ZpcnQub3JnPC9hPgomZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9saXN0cy5vdmly dC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycyI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWls bWFuL2xpc3RpbmZvL3VzZXJzPC9hPgomZ3Q7Cgo8L3ByZT4NCjwvYmxvY2txdW90ZT4NCjxicj4N Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4NCjx0 Ym9keT4NCjx0cj4NCjx0ZD4tLSA8YnI+DQo8YnI+DQpNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXI8 YnI+DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KS2FybGkgU2rDtmJlcmc8YnI+DQpTd2Vk aXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzPGJyPg0KQm94IDcwNzkgKFZp c2l0aW5nIEFkZHJlc3MgS3JvbsOlc3bDpGdlbiA4KTxicj4NClMtNzUwIDA3IFVwcHNhbGEsIFN3 ZWRlbjxicj4NClBob25lOiAmbmJzcDsmIzQzOzQ2LSgwKTE4LTY3IDE1IDY2PGJyPg0KPGEgaHJl Zj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAYWRtLnNsdS5zZSI+a2FybGkuc2pvYmVyZ0BzbHUuc2U8 L2E+IDwvdGQ+DQo8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_5F9E965F5A80BC468BE5F40576769F092A1AF41Dexchange21_--

--_000_5F9E965F5A80BC468BE5F40576769F092A1AF448exchange21_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 ZnJlIDIwMTMtMDUtMjQga2xvY2thbiAxMjozNCArMDAwMCBza3JldiBLYXJsaSBTasO2YmVyZzoN CmZyZSAyMDEzLTA1LTI0IGtsb2NrYW4gMTU6MTggKzAzMDAgc2tyZXYgSXRhbWFyIEhlaW06DQoN Cg0KT24gMDUvMjQvMjAxMyAwODowNCBBTSwgS2FybGkgU2rDtmJlcmcgd3JvdGU6DQo+IHRvciAy MDEzLTA1LTIzIGtsb2NrYW4gMDg6NTMgLTA0MDAgc2tyZXYgSWxpYSBNZWVyb3ZpY2g6DQo+PiBJ dCBzaG91bGQgYmUgbGlrZToNCj4+DQo+PiBmcm9tIG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFyYW1z DQo+PiBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJDQo+Pg0KPj4gYXBpID0gQVBJKCcqJywg JyonLCAnKicpDQo+PiB2bSA9IGFwaS52bXMubGlzdCgpWzBdDQo+PiB1c2VyID0gIGFwaS51c2Vy cy5saXN0KClbMV0NCj4+IHJvbGUgPSBhcGkucm9sZXMubGlzdCgpWzFdDQo+PiBwZXJtaXQgPSBw YXJhbXMuUGVybWlzc2lvbigpDQo+PiBwZXJtaXQuc2V0X3JvbGUocm9sZSkNCj4+IHBlcm1pdC5z ZXRfdm0odm0pDQo+PiB1c2VyLnBlcm1pc3Npb25zLmFkZChwZXJtaXQpDQo+DQo+IFRoYW5rIHlv dSB2ZXJ5IG11Y2gsIEnCtG0gZ29pbmcgdG8gdGVzdCB0aGlzIG91dCB0b2RheSEgQ291bGQgeW91 IGFsc28NCj4gc2hvdyBtZSBob3cgdG8gZmlyc3QgYWRkIGEgdXNlciB0aGF0IGlzbsK0dCBpbiB0 aGUgc3lzdGVtIHlldCwgcGxlYXNlPw0KDQpmcm9tIGFwaSBvciB1aT8NCih5b3UgbmVlZCB0byBh ZGQgYW4gZXh0ZXJuYWwgZGlyZWN0b3J5IGZpcnN0IHVzaW5nIHRoZQ0KZW5naW5lLW1hbmFnZS1k b21haW5zIHV0aWxpdHksIHRoZW4gY2hvb3NlIHVzZXJzIGZyb20gaXQpDQoNCg0KV2l0aCB0aGUg UHl0aG9uIFNESy4gQWRkaW5nIGV4dGVybmFsIGRpcmVjdG9yeSB3YXMgb25lIG9mIHRoZSBmaXJz dCB0aGluZ3MgSSBkaWQgYWJvdXQgYSB5ZWFyIGFnbywgd2hlbiB3ZSBmaXJzdCBzZXQgdGhpcyB1 cC4gQWRkaW5nIHVzZXJzIGZyb20gdGhlIHdlYi11aSBoYXMgbmV2ZXIgYmVlbiBhbiBpc3N1ZSwg YnV0IGFkZGluZyBuZXcgdXNlcnMgdG8gdGhlIHN5c3RlbSB3aXRoIHB5dGhvbiBhbmQgdGhlbiBh c3NpZ24gcGVybWlzc2lvbnMgd2l0aCB0aGF0IHVzZXIgaGF2aW5nIGFuIGFwcHJvcHJpYXRlIHJv bGUgaXMgY29tcGxldGx5IG5ldyB0byBtZSwgYnV0IGl0IHNlZW1zIEkgYmVhdCB5b3UgdG8gaXQs IGhhaGEsIEkgZmlndXJlZCBpdCBvdXQgYnkgbXlzZWxmOykNCg0KVVNFUl9OQU1FID0gJ25ld2N1 c3RvbWVyJw0KRE9NQUlOX05BTUUgPSAnZG9tYWluLmV4YW1wbGUubmV0Jw0KDQpkb21haW4gPSBh cGkuZG9tYWlucy5nZXQobmFtZT0nJXMnICUgKERPTUFJTl9OQU1FKSkNCnVzZXJwYXJhbXMgPSBw YXJhbXMuVXNlcigpDQoNCnVzZXJwYXJhbXMuc2V0X2RvbWFpbihkb21haW4pDQp1c2VycGFyYW1z LnNldF91c2VyX25hbWUoVVNFUikNCg0KQ3JhcCwgdHlwbyEgVGhpcyBsaW5lIHNob3VsZCBvZiBj b3Vyc2UgYmU6IHVzZXJwYXJhbXMuc2V0X3VzZXJfbmFtZShVU0VSX05BTUUpDQoNCi9LDQoNCg0K YXBpLnVzZXJzLmFkZCh1c2VycGFyYW1zKQ0KDQovS2FybGkNCg0KDQoNCg0KPg0KPj4NCj4+DQo+ PiAtLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tDQo+PiBGcm9tOiAiSWxpYSBNZWVyb3ZpY2gi IDxpbWVlcm92aUByZWRoYXQuY29tPG1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPiAgPG1haWx0 bzppbWVlcm92aUByZWRoYXQuY29tPj4NCj4+IFRvOiAiTWljaGFlbCBQYXN0ZXJuYWsiIDxtcGFz dGVybkByZWRoYXQuY29tPG1haWx0bzptcGFzdGVybkByZWRoYXQuY29tPiAgPG1haWx0bzptcGFz dGVybkByZWRoYXQuY29tPj4NCj4+IENjOiAidXNlcnMiIDx1c2Vyc0BvdmlydC5vcmc8bWFpbHRv OnVzZXJzQG92aXJ0Lm9yZz4gIDxtYWlsdG86dXNlcnNAb3ZpcnQub3JnPj4sICJLYXJsaSBTasO2 YmVyZyIgPEthcmxpLlNqb2JlcmdAc2x1LnNlPG1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZT4g IDxtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U+PiwgIkVsZW5hIERvbGluaW4iIDxlZG9saW5p bkByZWRoYXQuY29tPG1haWx0bzplZG9saW5pbkByZWRoYXQuY29tPiAgPG1haWx0bzplZG9saW5p bkByZWRoYXQuY29tPj4NCj4+IFNlbnQ6IFRodXJzZGF5LCBNYXkgMjMsIDIwMTMgMzozMDoyNyBQ TQ0KPj4gU3ViamVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhvblNESw0K Pj4NCj4+IEhpLA0KPj4NCj4+IFdlIGhhdmUgc2V2ZXJhbCB0ZXN0cyBsaWtlOg0KPj4gIkFkZCBW TSBwZXJtaXNzaW9uIHRvIHVzZXIiLCB0aGF0IGFyZSB1c2luZyBBUlQncyBhcnQvcmhldm1fYXBp L3Rlc3RzX2xpYi9sb3dfbGV2ZWwvbWxhLnB5IGFkZFBlcm1pdHNUb1VzZXIgZnVuY3Rpb24uDQo+ PiBUaGlzIGlzIGdlbmVyaWMgZnVuY3Rpb24gYnV0IGl0IHNob3VsZG4ndCBiZSBoYXJkIHRvIHBy ZXBhcmUgU0RLIGNvZGUgd2l0aCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5Lg0KPj4NCj4+IFRoYW5r cw0KPj4gSWxpYQ0KPj4NCj4+IC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0NCj4+IEZyb206 ICJNaWNoYWVsIFBhc3Rlcm5hayIgPG1wYXN0ZXJuQHJlZGhhdC5jb208bWFpbHRvOm1wYXN0ZXJu QHJlZGhhdC5jb20+ICA8bWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20+Pg0KPj4gVG86ICJLYXJs aSBTasO2YmVyZyIgPEthcmxpLlNqb2JlcmdAc2x1LnNlPG1haWx0bzpLYXJsaS5Tam9iZXJnQHNs dS5zZT4gIDxtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U+PiwgIkVsZW5hIERvbGluaW4iIDxl ZG9saW5pbkByZWRoYXQuY29tPG1haWx0bzplZG9saW5pbkByZWRoYXQuY29tPiAgPG1haWx0bzpl ZG9saW5pbkByZWRoYXQuY29tPj4sICJJbGlhIE1lZXJvdmljaCIgPGltZWVyb3ZpQHJlZGhhdC5j b208bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20+ICA8bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5j b20+Pg0KPj4gQ2M6ICJ1c2VycyIgPHVzZXJzQG92aXJ0Lm9yZzxtYWlsdG86dXNlcnNAb3ZpcnQu b3JnPiAgPG1haWx0bzp1c2Vyc0BvdmlydC5vcmc+Pg0KPj4gU2VudDogVGh1cnNkYXksIE1heSAy MywgMjAxMyAzOjEwOjIxIFBNDQo+PiBTdWJqZWN0OiBSZTogW1VzZXJzXSBQcm9ibGVtcyB1c2lu ZyB0aGUgUHl0aG9uU0RLDQo+Pg0KPj4NCj4+IEhpIEthcmxpLA0KPj4NCj4+IE9uIDA1LzIzLzIw MTMgMTI6MzUgUE0sIEthcmxpIFNqw7ZiZXJnIHdyb3RlOg0KPj4gPiBIaSENCj4+ID4NCj4+ID4g V2XCtHJlIGluIHRoZSBwcm9jZXNzIG9mIGJ1aWxkaW5nIGFuIG9yZGVycG9ydGFsIHdoZXJlIG91 ciBjdXN0b21lcnMgd2lsbCBiZSBhYmxlIHRvIGxvZyBpbiwgc2VsZWN0IGEgdmlydHVhbCBtYWNo aW5lIHRlbXBsYXRlLCB0eXBlIGluIGEgZGVzaXJlZCBob3N0bmFtZSBhbmQgaXQgd2lsbCBiZQ0K Pj4gPiBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQsIGFuZCB0aGV5IHJlY2lldmUgYSBtYWlsIGV4cGxh aW5pbmcgd2hhdCB0aGV5wrR2ZSBnb3R0ZW4gdGhlbXNlbHZlcyBpbnRvOikuIEZvciB0aGlzIEkg ZmlndXJlZCB0aGUgUHl0aG9uU0RLIHdvdWxkIGJlIHRoZSBiZXN0IGNob2ljZSBidXQgScK0bSBo YXZpbmcNCj4+ID4gdHJvdWJsZSB1c2luZyBpdC4gV2hhdCB3ZcK0dmUgZG9uZSBzbyBmYXIgaXM6 DQo+PiA+DQo+PiA+IDEpIENyZWF0ZSBhIG5ldyBWTSBmcm9tIGEgdGVtcGxhdGU7IE9LLiBJIGZv dW5kIGFuIGV4YW1wbGUgYW5kIGl0IHdvcmtlZCBPT1RCDQo+PiA+IDIpIFJlbmFtZSB0aGUgbmV3 IFZNwrRzIGRpc2sgZnJvbSAke1RlbXBsYXRlTmFtZX1fRGlzazEgdG8gJHtWTU5hbWV9X0Rpc2sx OyBOb3QgT0suIEkgZm91bmQgYW4gZXhhbXBsZSBvZiBob3cgdG8gY2hhbmdlIHRoZSBuYW1lIG9m IGEgVk1OaWMgYW5kIHRoYXQgd29ya3MsIGJ1dCB1c2luZyB0aGUNCj4+ID4gc2FtZSBtZXRob2Qg dG8gY2hhbmdlIFZNRGlza8K0cyBuYW1lIGRvZXMgbm90IChGWUksIHRoZSBWTSBvbmx5IGhhcyBv bmUgVk5pYyBhbmQgVkRpc2spOg0KPj4gPj4+PiBmcm9tIG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFy YW1zDQo+PiA+Pj4+IGZyb20gb3ZpcnRzZGsuYXBpIGltcG9ydCBBUEkNCj4+ID4+Pj4gYXBpID0g QVBJKHVybD0naHR0cHM6Ly8ke0VOR0lORX06NDQzL2FwaScsIDxodHRwczovL3N0b3JtLnNsdS5z ZTo0NDMvYXBpJyw+IGNhX2ZpbGU9JyR7Q0FDRVJUfScsIHVzZXJuYW1lPSdhZG1pbkBpbnRlcm5h bCA8bWFpbHRvOidhZG1pbkBpbnRlcm5hbD4nLCBwYXNzd29yZD0nbGV0bWVpbiEnKQ0KPj4gPj4+ PiB2bSA9IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpDQo+PiA+DQo+PiA+Pj4+IHZtbmljID0g dm0ubmljcy5nZXQobmFtZT0nKicpDQo+PiA+Pj4+IHZtbmljLm5hbWUNCj4+ID4gJ25pYzEnDQo+ PiA+Pj4+IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLm5pY3MuZ2V0KG5hbWU9JyonKQ0KPj4g PiAnbmljMScNCj4+ID4+Pj4gdm1uaWMubmFtZT0nbmljMicNCj4+ID4+Pj4gdm1uaWMudXBkYXRl KCkNCj4+ID4+Pj4gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicp DQo+PiA+ICduaWMyJw0KPj4gPj4+PiB2bW5pYy5uYW1lDQo+PiA+ICduaWMyJw0KPj4gPg0KPj4g Pj4+PiB2bWRpc2sgPSB2bS5kaXNrcy5nZXQobmFtZT0nKicpDQo+PiA+Pj4+IHZtZGlzay5uYW1l DQo+PiA+ICdUZW1wbGF0ZU5hbWVfRGlzazEnDQo+PiA+Pj4+IGFwaS52bXMuZ2V0KG5hbWU9J1ZN TmFtZScpLmRpc2tzLmdldChuYW1lPScqJykNCj4+DQo+PiB0aGlzIGtpbmQgb2YgY2FsbCBpcyBu b3QgZWZmaWNpZW50LCBieSBmZXRjaGluZyB0aGUgZGlzaw0KPj4geW91IGFsc28gZmV0Y2ggdGhl IHZtLA0KPj4NCj4+IGknZCBzdWdnZXN0IGZldGNoIHZtLCBzdG9yZSBpdCBpbiBsb2NhbCB2YXJp YWJsZSBhbmQgdGhlbg0KPj4gcmV1c2UgaXQgZm9yIGFueSBzdWItY29sbGVjdGlvbiBtYW5pcHVs YXRpb25zLg0KPj4NCj4+DQo+PiA+ICdUZW1wbGF0ZU5hbWVfRGlzazEnDQo+PiA+Pj4+IHZtZGlz ay5uYW1lPSdWTU5hbWVfRGlzazEnDQo+PiA+Pj4+IHZtZGlzay51cGRhdGUoKQ0KPj4gPj4+PiB2 bWRpc2submFtZQ0KPj4gPiAnVk1OYW1lX0Rpc2sxJw0KPj4gPj4+PiBhcGkudm1zLmdldChuYW1l PSdWTU5hbWUnKS5kaXNrcy5nZXQobmFtZT0nKicpDQo+PiA+ICdUZW1wbGF0ZU5hbWVfRGlzazEn DQo+PiA+DQo+PiA+IFNlZT8gQW0gSSBob2xkaW5nIGl0IHdyb25nPw0KPj4NCj4+IGRpc2submFt ZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlICdhbGlhcycgaW5zdGVhZC4NCj4+DQo+PiA+DQo+ PiA+IDMpIENyZWF0ZSBhIHNuYXBzaG90IGNhbGxlZCAiT3JpZ2luIiwgc28gaWYgYSBjdXN0b21l ciBjYWxscyBpbiBhbmQgc2F5cyB0aGV5wrR2ZSBib3JrZWQgaXQgY29tcGxldGVseSwgd2XCtGxs IGp1c3QgcmV2ZXJ0IHRvIGl0wrRzICJPcmlnaW4iIGFuZCB0aGV5wrRyZSB1cCBhbmQgcnVubmlu ZyBhZ2FpbjsNCj4+ID4gT0ssIGZvdW5kIGFub3RoZXIgT09UQiBleGFtcGxlLCB0aGFuayB5b3Uu DQo+PiA+IDQpIEFkZCB0aGUgY3VzdG9tZXIgdG8gVk3CtHMgUGVybWlzc2lvbnMgd2l0aCBhbiBh cHByb3ByaWF0ZSByb2xlOyBOb3QgT0suIEkgaGF2ZSBmb3VuZCBubyBleGFtcGxlcyBvbiBob3cg dG8gZG8gdGhpcyBhbmQganVzdCBkb27CtHQga25vdyB3aGVyZSB0byBzdGFydCBsb29raW5nLiBC VFcsDQo+PiA+IGNyZWF0aW5nIGEgbmV3IFZNIHdpdGggUHl0aG9uIHJlc3VsdHMgaW4gUGVybWlz c2lvbnMgY29tcGxldGVseSBlbXB0eSwgbm8gaW5oZXJpdGFuY2UgZWl0aGVyLiBEb27CtHQga25v dyBpZiB0aGF0IGlzIGludGVuZGVkLi4uDQo+Pg0KPj4gZWxlbmEsIGlsaWEsDQo+Pg0KPj4gZ3V5 cywgZG8geW91IGhhdmUgYW55IHBlcm1pc3Npb24gcmVsYXRlZCBjb2RlIHRvIHNoYXJlPw0KPj4N Cj4+ID4NCj4+ID4gY2xpZW50IyBycG0gLXFhIHwgZ3JlcCBvdmlydA0KPj4gPiBvdmlydC1lbmdp bmUtY2xpLTMuMi4wLjExLTEuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLXNkay0zLjIu MC4xMC0xLmZjMTcubm9hcmNoDQo+PiA+DQo+PiA+IGVuZ2luZSMgcnBtIC1xYSB8IGdyZXAgb3Zp cnQNCj4+ID4gb3ZpcnQtZW5naW5lLWNvbmZpZy0zLjEuMC00LmZjMTcubm9hcmNoDQo+PiA+IG92 aXJ0LWVuZ2luZS1kYnNjcmlwdHMtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1sb2ct Y29sbGVjdG9yLTMuMS4wLTAuZ2l0MTBkNzE5LmZjMTcubm9hcmNoDQo+PiA+IG92aXJ0LWVuZ2lu ZS1yZXN0YXBpLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtaW1hZ2UtdXBsb2FkZXIt My4xLjAtMC5naXQ5YzQyYzguZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLWdlbmVyaWNh cGktMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1pc28tdXBsb2FkZXItMy4xLjAtMC5n aXQxODQxZDkuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLXdlYmFkbWluLXBvcnRhbC0z LjEuMC00LmZjMTcubm9hcmNoDQo+PiA+IG92aXJ0LWVuZ2luZS1zZXR1cC0zLjEuMC00LmZjMTcu bm9hcmNoDQo+PiA+IG92aXJ0LWVuZ2luZS1zZGstMy4yLjAuMi0xLmZjMTcubm9hcmNoDQo+PiA+ IG92aXJ0LWVuZ2luZS1iYWNrZW5kLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5n aW5lLXRvb2xzLWNvbW1vbi0zLjEuMC00LmZjMTcubm9hcmNoDQo+PiA+IG92aXJ0LWVuZ2luZS0z LjEuMC00LmZjMTcubm9hcmNoDQo+PiA+IG92aXJ0LWVuZ2luZS11c2VycG9ydGFsLTMuMS4wLTQu ZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLW5vdGlmaWNhdGlvbi1zZXJ2aWNlLTMuMS4w LTQuZmMxNy5ub2FyY2gNCj4+ID4NCj4+ID4gLS0NCj4+ID4NCj4+ID4gQmVzdCBSZWdhcmRzDQo+ PiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ID4gS2FybGkgU2rDtmJlcmcNCj4+ID4gU3dl ZGlzaCBVbml2ZXJzaXR5IG9mIEFncmljdWx0dXJhbCBTY2llbmNlcw0KPj4gPiBCb3ggNzA3OSAo VmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpDQo+PiA+IFMtNzUwIDA3IFVwcHNhbGEs IFN3ZWRlbg0KPj4gPiBQaG9uZTogICs0Ni0oMCkxOC02NyAxNSA2Ng0KPj4gPmthcmxpLnNqb2Jl cmdAc2x1LnNlPG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZT4gIDxtYWlsdG86a2FybGkuc2pv YmVyZ0BzbHUuc2U+ICA8bWFpbHRvOmthcmxpLnNqb2JlcmdAYWRtLnNsdS5zZT4NCj4+ID4NCj4+ ID4NCj4+ID4NCj4+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18NCj4+ID4gVXNlcnMgbWFpbGluZyBsaXN0DQo+PiA+VXNlcnNAb3ZpcnQub3JnPG1haWx0 bzpVc2Vyc0BvdmlydC5vcmc+ICA8bWFpbHRvOlVzZXJzQG92aXJ0Lm9yZz4NCj4+ID5odHRwOi8v bGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMNCj4+ID4NCj4+DQo+Pg0KPg0K PiAtLQ0KPg0KPiBNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXINCj4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiBLYXJsaSBTasO2YmVyZw0KPiBTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1 cmFsIFNjaWVuY2VzDQo+IEJveCA3MDc5IChWaXNpdGluZyBBZGRyZXNzIEtyb27DpXN2w6RnZW4g OCkNCj4gUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuDQo+IFBob25lOiAgKzQ2LSgwKTE4LTY3IDE1 IDY2DQo+IGthcmxpLnNqb2JlcmdAc2x1LnNlPG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZT4g PG1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2U+DQo+DQo+DQo+DQo+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IFVzZXJzIG1haWxpbmcgbGlz dA0KPiBVc2Vyc0BvdmlydC5vcmc8bWFpbHRvOlVzZXJzQG92aXJ0Lm9yZz4NCj4gaHR0cDovL2xp c3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzDQo+DQoNCg0KDQotLQ0KDQpNZWQg VsOkbmxpZ2EgSMOkbHNuaW5nYXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkthcmxpIFNqw7Zi ZXJnDQpTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzDQpCb3ggNzA3 OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpDQpTLTc1MCAwNyBVcHBzYWxhLCBT d2VkZW4NClBob25lOiAgKzQ2LSgwKTE4LTY3IDE1IDY2DQprYXJsaS5zam9iZXJnQHNsdS5zZTxt YWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlPg0KDQotLQ0KDQpNZWQgVsOkbmxpZ2EgSMOk bHNuaW5nYXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkthcmxpIFNqw7ZiZXJnDQpTd2VkaXNo IFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzDQpCb3ggNzA3OSAoVmlzaXRpbmcg QWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpDQpTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4NClBob25l OiAgKzQ2LSgwKTE4LTY3IDE1IDY2DQprYXJsaS5zam9iZXJnQHNsdS5zZTxtYWlsdG86a2FybGku c2pvYmVyZ0BhZG0uc2x1LnNlPg0K --_000_5F9E965F5A80BC468BE5F40576769F092A1AF448exchange21_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwv L0VOIj4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQo8bWV0YSBuYW1lPSJHRU5FUkFUT1Ii IGNvbnRlbnQ9Ikd0a0hUTUwvNC40LjQiPg0KPC9oZWFkPg0KPGJvZHk+DQpmcmUgMjAxMy0wNS0y NCBrbG9ja2FuIDEyOjM0ICYjNDM7MDAwMCBza3JldiBLYXJsaSBTasO2YmVyZzo8YnI+DQo8Ymxv Y2txdW90ZSB0eXBlPSJDSVRFIj5mcmUgMjAxMy0wNS0yNCBrbG9ja2FuIDE1OjE4ICYjNDM7MDMw MCBza3JldiBJdGFtYXIgSGVpbToNCjxibG9ja3F1b3RlIHR5cGU9IkNJVEUiPg0KPHByZT4KT24g MDUvMjQvMjAxMyAwODowNCBBTSwgS2FybGkgU2rDtmJlcmcgd3JvdGU6CiZndDsgdG9yIDIwMTMt MDUtMjMga2xvY2thbiAwODo1MyAtMDQwMCBza3JldiBJbGlhIE1lZXJvdmljaDoKJmd0OyZndDsg SXQgc2hvdWxkIGJlIGxpa2U6CiZndDsmZ3Q7CiZndDsmZ3Q7IGZyb20gb3ZpcnRzZGsueG1sIGlt cG9ydCBwYXJhbXMKJmd0OyZndDsgZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQomZ3Q7Jmd0 OwomZ3Q7Jmd0OyBhcGkgPSBBUEkoJyonLCAnKicsICcqJykKJmd0OyZndDsgdm0gPSBhcGkudm1z Lmxpc3QoKVswXQomZ3Q7Jmd0OyB1c2VyID0gIGFwaS51c2Vycy5saXN0KClbMV0KJmd0OyZndDsg cm9sZSA9IGFwaS5yb2xlcy5saXN0KClbMV0KJmd0OyZndDsgcGVybWl0ID0gcGFyYW1zLlBlcm1p c3Npb24oKQomZ3Q7Jmd0OyBwZXJtaXQuc2V0X3JvbGUocm9sZSkKJmd0OyZndDsgcGVybWl0LnNl dF92bSh2bSkKJmd0OyZndDsgdXNlci5wZXJtaXNzaW9ucy5hZGQocGVybWl0KQomZ3Q7CiZndDsg VGhhbmsgeW91IHZlcnkgbXVjaCwgScK0bSBnb2luZyB0byB0ZXN0IHRoaXMgb3V0IHRvZGF5ISBD b3VsZCB5b3UgYWxzbwomZ3Q7IHNob3cgbWUgaG93IHRvIGZpcnN0IGFkZCBhIHVzZXIgdGhhdCBp c27CtHQgaW4gdGhlIHN5c3RlbSB5ZXQsIHBsZWFzZT8KCmZyb20gYXBpIG9yIHVpPwooeW91IG5l ZWQgdG8gYWRkIGFuIGV4dGVybmFsIGRpcmVjdG9yeSBmaXJzdCB1c2luZyB0aGUgCmVuZ2luZS1t YW5hZ2UtZG9tYWlucyB1dGlsaXR5LCB0aGVuIGNob29zZSB1c2VycyBmcm9tIGl0KQo8L3ByZT4N CjwvYmxvY2txdW90ZT4NCjxicj4NCldpdGggdGhlIFB5dGhvbiBTREsuIEFkZGluZyBleHRlcm5h bCBkaXJlY3Rvcnkgd2FzIG9uZSBvZiB0aGUgZmlyc3QgdGhpbmdzIEkgZGlkIGFib3V0IGEgeWVh ciBhZ28sIHdoZW4gd2UgZmlyc3Qgc2V0IHRoaXMgdXAuIEFkZGluZyB1c2VycyBmcm9tIHRoZSB3 ZWItdWkgaGFzIG5ldmVyIGJlZW4gYW4gaXNzdWUsIGJ1dCBhZGRpbmcgbmV3IHVzZXJzIHRvIHRo ZSBzeXN0ZW0gd2l0aCBweXRob24gYW5kIHRoZW4gYXNzaWduIHBlcm1pc3Npb25zIHdpdGgNCiB0 aGF0IHVzZXIgaGF2aW5nIGFuIGFwcHJvcHJpYXRlIHJvbGUgaXMgY29tcGxldGx5IG5ldyB0byBt ZSwgYnV0IGl0IHNlZW1zIEkgYmVhdCB5b3UgdG8gaXQsIGhhaGEsIEkgZmlndXJlZCBpdCBvdXQg YnkgbXlzZWxmOyk8YnI+DQo8YnI+DQpVU0VSX05BTUUgPSAnbmV3Y3VzdG9tZXInPGJyPg0KRE9N QUlOX05BTUUgPSAnZG9tYWluLmV4YW1wbGUubmV0Jzxicj4NCjxicj4NCmRvbWFpbiA9IGFwaS5k b21haW5zLmdldChuYW1lPSclcycgJSAoRE9NQUlOX05BTUUpKTxicj4NCnVzZXJwYXJhbXMgPSBw YXJhbXMuVXNlcigpPGJyPg0KPGJyPg0KdXNlcnBhcmFtcy5zZXRfZG9tYWluKGRvbWFpbik8YnI+ DQp1c2VycGFyYW1zLnNldF91c2VyX25hbWUoVVNFUik8YnI+DQo8L2Jsb2NrcXVvdGU+DQo8YnI+ DQpDcmFwLCB0eXBvISBUaGlzIGxpbmUgc2hvdWxkIG9mIGNvdXJzZSBiZTogdXNlcnBhcmFtcy5z ZXRfdXNlcl9uYW1lKFVTRVJfTkFNRSk8YnI+DQo8YnI+DQovSzxicj4NCjxicj4NCjxibG9ja3F1 b3RlIHR5cGU9IkNJVEUiPjxicj4NCmFwaS51c2Vycy5hZGQodXNlcnBhcmFtcyk8YnI+DQo8YnI+ DQovS2FybGk8YnI+DQo8YnI+DQo8YmxvY2txdW90ZSB0eXBlPSJDSVRFIj4NCjxwcmU+CgomZ3Q7 CiZndDsmZ3Q7CiZndDsmZ3Q7CiZndDsmZ3Q7IC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0K Jmd0OyZndDsgRnJvbTogJnF1b3Q7SWxpYSBNZWVyb3ZpY2gmcXVvdDsgJmx0OzxhIGhyZWY9Im1h aWx0bzppbWVlcm92aUByZWRoYXQuY29tIj5pbWVlcm92aUByZWRoYXQuY29tPC9hPiAgJmx0Ozxh IGhyZWY9Im1haWx0bzppbWVlcm92aUByZWRoYXQuY29tIj5tYWlsdG86aW1lZXJvdmlAcmVkaGF0 LmNvbTwvYT4mZ3Q7Jmd0OwomZ3Q7Jmd0OyBUbzogJnF1b3Q7TWljaGFlbCBQYXN0ZXJuYWsmcXVv dDsgJmx0OzxhIGhyZWY9Im1haWx0bzptcGFzdGVybkByZWRoYXQuY29tIj5tcGFzdGVybkByZWRo YXQuY29tPC9hPiAgJmx0OzxhIGhyZWY9Im1haWx0bzptcGFzdGVybkByZWRoYXQuY29tIj5tYWls dG86bXBhc3Rlcm5AcmVkaGF0LmNvbTwvYT4mZ3Q7Jmd0OwomZ3Q7Jmd0OyBDYzogJnF1b3Q7dXNl cnMmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzp1c2Vyc0BvdmlydC5vcmciPnVzZXJzQG92aXJ0 Lm9yZzwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86dXNlcnNAb3ZpcnQub3JnIj5tYWlsdG86dXNl cnNAb3ZpcnQub3JnPC9hPiZndDsmZ3Q7LCAmcXVvdDtLYXJsaSBTasO2YmVyZyZxdW90OyAmbHQ7 PGEgaHJlZj0ibWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlIj5LYXJsaS5Tam9iZXJnQHNsdS5z ZTwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2UiPm1haWx0bzpL YXJsaS5Tam9iZXJnQHNsdS5zZTwvYT4mZ3Q7Jmd0OywgJnF1b3Q7RWxlbmEgRG9saW5pbiZxdW90 OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20iPmVkb2xpbmluQHJlZGhh dC5jb208L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20iPm1haWx0 bzplZG9saW5pbkByZWRoYXQuY29tPC9hPiZndDsmZ3Q7CiZndDsmZ3Q7IFNlbnQ6IFRodXJzZGF5 LCBNYXkgMjMsIDIwMTMgMzozMDoyNyBQTQomZ3Q7Jmd0OyBTdWJqZWN0OiBSZTogW1VzZXJzXSBQ cm9ibGVtcyB1c2luZyB0aGUgUHl0aG9uU0RLCiZndDsmZ3Q7CiZndDsmZ3Q7IEhpLAomZ3Q7Jmd0 OwomZ3Q7Jmd0OyBXZSBoYXZlIHNldmVyYWwgdGVzdHMgbGlrZToKJmd0OyZndDsgJnF1b3Q7QWRk IFZNIHBlcm1pc3Npb24gdG8gdXNlciZxdW90OywgdGhhdCBhcmUgdXNpbmcgQVJUJ3MgYXJ0L3Jo ZXZtX2FwaS90ZXN0c19saWIvbG93X2xldmVsL21sYS5weSBhZGRQZXJtaXRzVG9Vc2VyIGZ1bmN0 aW9uLgomZ3Q7Jmd0OyBUaGlzIGlzIGdlbmVyaWMgZnVuY3Rpb24gYnV0IGl0IHNob3VsZG4ndCBi ZSBoYXJkIHRvIHByZXBhcmUgU0RLIGNvZGUgd2l0aCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5Lgom Z3Q7Jmd0OwomZ3Q7Jmd0OyBUaGFua3MKJmd0OyZndDsgSWxpYQomZ3Q7Jmd0OwomZ3Q7Jmd0OyAt LS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCiZndDsmZ3Q7IEZyb206ICZxdW90O01pY2hhZWwg UGFzdGVybmFrJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbSI+ bXBhc3Rlcm5AcmVkaGF0LmNvbTwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVk aGF0LmNvbSI+bWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb208L2E+Jmd0OyZndDsKJmd0OyZndDsg VG86ICZxdW90O0thcmxpIFNqw7ZiZXJnJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86S2FybGku U2pvYmVyZ0BzbHUuc2UiPkthcmxpLlNqb2JlcmdAc2x1LnNlPC9hPiAgJmx0OzxhIGhyZWY9Im1h aWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZSI+bWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlPC9h PiZndDsmZ3Q7LCAmcXVvdDtFbGVuYSBEb2xpbmluJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86 ZWRvbGluaW5AcmVkaGF0LmNvbSI+ZWRvbGluaW5AcmVkaGF0LmNvbTwvYT4gICZsdDs8YSBocmVm PSJtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbSI+bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb208 L2E+Jmd0OyZndDssICZxdW90O0lsaWEgTWVlcm92aWNoJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWls dG86aW1lZXJvdmlAcmVkaGF0LmNvbSI+aW1lZXJvdmlAcmVkaGF0LmNvbTwvYT4gICZsdDs8YSBo cmVmPSJtYWlsdG86aW1lZXJvdmlAcmVkaGF0LmNvbSI+bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5j b208L2E+Jmd0OyZndDsKJmd0OyZndDsgQ2M6ICZxdW90O3VzZXJzJnF1b3Q7ICZsdDs8YSBocmVm PSJtYWlsdG86dXNlcnNAb3ZpcnQub3JnIj51c2Vyc0BvdmlydC5vcmc8L2E+ICAmbHQ7PGEgaHJl Zj0ibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyI+bWFpbHRvOnVzZXJzQG92aXJ0Lm9yZzwvYT4mZ3Q7 Jmd0OwomZ3Q7Jmd0OyBTZW50OiBUaHVyc2RheSwgTWF5IDIzLCAyMDEzIDM6MTA6MjEgUE0KJmd0 OyZndDsgU3ViamVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhvblNESwom Z3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OyBIaSBLYXJsaSwKJmd0OyZndDsKJmd0OyZndDsgT24g MDUvMjMvMjAxMyAxMjozNSBQTSwgS2FybGkgU2rDtmJlcmcgd3JvdGU6CiZndDsmZ3Q7ICZndDsg SGkhCiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyBXZcK0cmUgaW4gdGhlIHByb2Nlc3Mgb2Yg YnVpbGRpbmcgYW4gb3JkZXJwb3J0YWwgd2hlcmUgb3VyIGN1c3RvbWVycyB3aWxsIGJlIGFibGUg dG8gbG9nIGluLCBzZWxlY3QgYSB2aXJ0dWFsIG1hY2hpbmUgdGVtcGxhdGUsIHR5cGUgaW4gYSBk ZXNpcmVkIGhvc3RuYW1lIGFuZCBpdCB3aWxsIGJlCiZndDsmZ3Q7ICZndDsgYXV0b21hdGljYWxs eSBjcmVhdGVkLCBhbmQgdGhleSByZWNpZXZlIGEgbWFpbCBleHBsYWluaW5nIHdoYXQgdGhlecK0 dmUgZ290dGVuIHRoZW1zZWx2ZXMgaW50bzopLiBGb3IgdGhpcyBJIGZpZ3VyZWQgdGhlIFB5dGhv blNESyB3b3VsZCBiZSB0aGUgYmVzdCBjaG9pY2UgYnV0IEnCtG0gaGF2aW5nCiZndDsmZ3Q7ICZn dDsgdHJvdWJsZSB1c2luZyBpdC4gV2hhdCB3ZcK0dmUgZG9uZSBzbyBmYXIgaXM6CiZndDsmZ3Q7 ICZndDsKJmd0OyZndDsgJmd0OyAxKSBDcmVhdGUgYSBuZXcgVk0gZnJvbSBhIHRlbXBsYXRlOyBP Sy4gSSBmb3VuZCBhbiBleGFtcGxlIGFuZCBpdCB3b3JrZWQgT09UQgomZ3Q7Jmd0OyAmZ3Q7IDIp IFJlbmFtZSB0aGUgbmV3IFZNwrRzIGRpc2sgZnJvbSAke1RlbXBsYXRlTmFtZX1fRGlzazEgdG8g JHtWTU5hbWV9X0Rpc2sxOyBOb3QgT0suIEkgZm91bmQgYW4gZXhhbXBsZSBvZiBob3cgdG8gY2hh bmdlIHRoZSBuYW1lIG9mIGEgVk1OaWMgYW5kIHRoYXQgd29ya3MsIGJ1dCB1c2luZyB0aGUKJmd0 OyZndDsgJmd0OyBzYW1lIG1ldGhvZCB0byBjaGFuZ2UgVk1EaXNrwrRzIG5hbWUgZG9lcyBub3Qg KEZZSSwgdGhlIFZNIG9ubHkgaGFzIG9uZSBWTmljIGFuZCBWRGlzayk6CiZndDsmZ3Q7ICZndDsm Z3Q7Jmd0OyZndDsgZnJvbSBvdmlydHNkay54bWwgaW1wb3J0IHBhcmFtcwomZ3Q7Jmd0OyAmZ3Q7 Jmd0OyZndDsmZ3Q7IGZyb20gb3ZpcnRzZGsuYXBpIGltcG9ydCBBUEkKJmd0OyZndDsgJmd0OyZn dDsmZ3Q7Jmd0OyBhcGkgPSBBUEkodXJsPSc8YSBocmVmPSJodHRwczovLyI+aHR0cHM6Ly88L2E+ JHtFTkdJTkV9OjQ0My9hcGknLCAmbHQ7PGEgaHJlZj0iaHR0cHM6Ly9zdG9ybS5zbHUuc2U6NDQz L2FwaSciPmh0dHBzOi8vc3Rvcm0uc2x1LnNlOjQ0My9hcGknPC9hPiwmZ3Q7IGNhX2ZpbGU9JyR7 Q0FDRVJUfScsIHVzZXJuYW1lPSdhZG1pbkBpbnRlcm5hbCAmbHQ7PGEgaHJlZj0ibWFpbHRvOidh ZG1pbkBpbnRlcm5hbCI+bWFpbHRvOidhZG1pbkBpbnRlcm5hbDwvYT4mZ3Q7JywgcGFzc3dvcmQ9 J2xldG1laW4hJykKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bSA9IGFwaS52bXMuZ2V0KG5h bWU9J1ZNTmFtZScpCiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bW5p YyA9IHZtLm5pY3MuZ2V0KG5hbWU9JyonKQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmlj Lm5hbWUKJmd0OyZndDsgJmd0OyAnbmljMScKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyBhcGku dm1zLmdldChuYW1lPSdWTU5hbWUnKS5uaWNzLmdldChuYW1lPScqJykKJmd0OyZndDsgJmd0OyAn bmljMScKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bW5pYy5uYW1lPSduaWMyJwomZ3Q7Jmd0 OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmljLnVwZGF0ZSgpCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZn dDsgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpCiZndDsmZ3Q7 ICZndDsgJ25pYzInCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1uaWMubmFtZQomZ3Q7Jmd0 OyAmZ3Q7ICduaWMyJwomZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1k aXNrID0gdm0uZGlza3MuZ2V0KG5hbWU9JyonKQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZt ZGlzay5uYW1lCiZndDsmZ3Q7ICZndDsgJ1RlbXBsYXRlTmFtZV9EaXNrMScKJmd0OyZndDsgJmd0 OyZndDsmZ3Q7Jmd0OyBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5kaXNrcy5nZXQobmFtZT0n KicpCiZndDsmZ3Q7CiZndDsmZ3Q7IHRoaXMga2luZCBvZiBjYWxsIGlzIG5vdCBlZmZpY2llbnQs IGJ5IGZldGNoaW5nIHRoZSBkaXNrCiZndDsmZ3Q7IHlvdSBhbHNvIGZldGNoIHRoZSB2bSwKJmd0 OyZndDsKJmd0OyZndDsgaSdkIHN1Z2dlc3QgZmV0Y2ggdm0sIHN0b3JlIGl0IGluIGxvY2FsIHZh cmlhYmxlIGFuZCB0aGVuCiZndDsmZ3Q7IHJldXNlIGl0IGZvciBhbnkgc3ViLWNvbGxlY3Rpb24g bWFuaXB1bGF0aW9ucy4KJmd0OyZndDsKJmd0OyZndDsKJmd0OyZndDsgJmd0OyAnVGVtcGxhdGVO YW1lX0Rpc2sxJwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtZGlzay5uYW1lPSdWTU5hbWVf RGlzazEnCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrLnVwZGF0ZSgpCiZndDsmZ3Q7 ICZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrLm5hbWUKJmd0OyZndDsgJmd0OyAnVk1OYW1lX0Rpc2sx JwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLmRp c2tzLmdldChuYW1lPScqJykKJmd0OyZndDsgJmd0OyAnVGVtcGxhdGVOYW1lX0Rpc2sxJwomZ3Q7 Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsgU2VlPyBBbSBJIGhvbGRpbmcgaXQgd3Jvbmc/CiZndDsm Z3Q7CiZndDsmZ3Q7IGRpc2submFtZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlICdhbGlhcycg aW5zdGVhZC4KJmd0OyZndDsKJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7IDMpIENyZWF0ZSBh IHNuYXBzaG90IGNhbGxlZCAmcXVvdDtPcmlnaW4mcXVvdDssIHNvIGlmIGEgY3VzdG9tZXIgY2Fs bHMgaW4gYW5kIHNheXMgdGhlecK0dmUgYm9ya2VkIGl0IGNvbXBsZXRlbHksIHdlwrRsbCBqdXN0 IHJldmVydCB0byBpdMK0cyAmcXVvdDtPcmlnaW4mcXVvdDsgYW5kIHRoZXnCtHJlIHVwIGFuZCBy dW5uaW5nIGFnYWluOwomZ3Q7Jmd0OyAmZ3Q7IE9LLCBmb3VuZCBhbm90aGVyIE9PVEIgZXhhbXBs ZSwgdGhhbmsgeW91LgomZ3Q7Jmd0OyAmZ3Q7IDQpIEFkZCB0aGUgY3VzdG9tZXIgdG8gVk3CtHMg UGVybWlzc2lvbnMgd2l0aCBhbiBhcHByb3ByaWF0ZSByb2xlOyBOb3QgT0suIEkgaGF2ZSBmb3Vu ZCBubyBleGFtcGxlcyBvbiBob3cgdG8gZG8gdGhpcyBhbmQganVzdCBkb27CtHQga25vdyB3aGVy ZSB0byBzdGFydCBsb29raW5nLiBCVFcsCiZndDsmZ3Q7ICZndDsgY3JlYXRpbmcgYSBuZXcgVk0g d2l0aCBQeXRob24gcmVzdWx0cyBpbiBQZXJtaXNzaW9ucyBjb21wbGV0ZWx5IGVtcHR5LCBubyBp bmhlcml0YW5jZSBlaXRoZXIuIERvbsK0dCBrbm93IGlmIHRoYXQgaXMgaW50ZW5kZWQuLi4KJmd0 OyZndDsKJmd0OyZndDsgZWxlbmEsIGlsaWEsCiZndDsmZ3Q7CiZndDsmZ3Q7IGd1eXMsIGRvIHlv dSBoYXZlIGFueSBwZXJtaXNzaW9uIHJlbGF0ZWQgY29kZSB0byBzaGFyZT8KJmd0OyZndDsKJmd0 OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7IGNsaWVudCMgcnBtIC1xYSB8IGdyZXAgb3ZpcnQKJmd0 OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtY2xpLTMuMi4wLjExLTEuZmMxNy5ub2FyY2gKJmd0OyZn dDsgJmd0OyBvdmlydC1lbmdpbmUtc2RrLTMuMi4wLjEwLTEuZmMxNy5ub2FyY2gKJmd0OyZndDsg Jmd0OwomZ3Q7Jmd0OyAmZ3Q7IGVuZ2luZSMgcnBtIC1xYSB8IGdyZXAgb3ZpcnQKJmd0OyZndDsg Jmd0OyBvdmlydC1lbmdpbmUtY29uZmlnLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0 OyBvdmlydC1lbmdpbmUtZGJzY3JpcHRzLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0 OyBvdmlydC1sb2ctY29sbGVjdG9yLTMuMS4wLTAuZ2l0MTBkNzE5LmZjMTcubm9hcmNoCiZndDsm Z3Q7ICZndDsgb3ZpcnQtZW5naW5lLXJlc3RhcGktMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0 OyAmZ3Q7IG92aXJ0LWltYWdlLXVwbG9hZGVyLTMuMS4wLTAuZ2l0OWM0MmM4LmZjMTcubm9hcmNo CiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLWdlbmVyaWNhcGktMy4xLjAtNC5mYzE3Lm5vYXJj aAomZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWlzby11cGxvYWRlci0zLjEuMC0wLmdpdDE4NDFkOS5mYzE3 Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWVuZ2luZS13ZWJhZG1pbi1wb3J0YWwtMy4xLjAt NC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWVuZ2luZS1zZXR1cC0zLjEuMC00LmZj MTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLXNkay0zLjIuMC4yLTEuZmMxNy5u b2FyY2gKJmd0OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtYmFja2VuZC0zLjEuMC00LmZjMTcubm9h cmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLXRvb2xzLWNvbW1vbi0zLjEuMC00LmZjMTcu bm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0 OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtdXNlcnBvcnRhbC0zLjEuMC00LmZjMTcubm9hcmNoCiZn dDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLW5vdGlmaWNhdGlvbi1zZXJ2aWNlLTMuMS4wLTQuZmMx Ny5ub2FyY2gKJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7IC0tCiZndDsmZ3Q7ICZndDsKJmd0 OyZndDsgJmd0OyBCZXN0IFJlZ2FyZHMKJmd0OyZndDsgJmd0OyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiZndDsmZ3Q7ICZndDsgS2FybGkgU2rDtmJlcmcKJmd0OyZndDsgJmd0OyBTd2VkaXNoIFVu aXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzCiZndDsmZ3Q7ICZndDsgQm94IDcwNzkg KFZpc2l0aW5nIEFkZHJlc3MgS3JvbsOlc3bDpGdlbiA4KQomZ3Q7Jmd0OyAmZ3Q7IFMtNzUwIDA3 IFVwcHNhbGEsIFN3ZWRlbgomZ3Q7Jmd0OyAmZ3Q7IFBob25lOiAgJiM0Mzs0Ni0oMCkxOC02NyAx NSA2NgomZ3Q7Jmd0OyAmZ3Q7PGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlIj5r YXJsaS5zam9iZXJnQHNsdS5zZTwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVy Z0BzbHUuc2UiPm1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZTwvYT4mZ3Q7ICAmbHQ7PGEgaHJl Zj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAYWRtLnNsdS5zZSI+bWFpbHRvOmthcmxpLnNqb2JlcmdA YWRtLnNsdS5zZTwvYT4mZ3Q7CiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAm Z3Q7CiZndDsmZ3Q7ICZndDsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KJmd0OyZndDsgJmd0OyBVc2VycyBtYWlsaW5nIGxpc3QKJmd0OyZndDsgJmd0Ozxh IGhyZWY9Im1haWx0bzpVc2Vyc0BvdmlydC5vcmciPlVzZXJzQG92aXJ0Lm9yZzwvYT4gICZsdDs8 YSBocmVmPSJtYWlsdG86VXNlcnNAb3ZpcnQub3JnIj5tYWlsdG86VXNlcnNAb3ZpcnQub3JnPC9h PiZndDsKJmd0OyZndDsgJmd0OzxhIGhyZWY9Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1h bi9saXN0aW5mby91c2VycyI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZv L3VzZXJzPC9hPgomZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7CiZndDsmZ3Q7CiZndDsKJmd0OyAtLQom Z3Q7CiZndDsgTWVkIFbDpG5saWdhIEjDpGxzbmluZ2FyCiZndDsgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQomZ3Q7IEthcmxpIFNqw7ZiZXJnCiZndDsgU3dlZGlzaCBVbml2ZXJzaXR5IG9mIEFncmlj dWx0dXJhbCBTY2llbmNlcwomZ3Q7IEJveCA3MDc5IChWaXNpdGluZyBBZGRyZXNzIEtyb27DpXN2 w6RnZW4gOCkKJmd0OyBTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4KJmd0OyBQaG9uZTogICYjNDM7 NDYtKDApMTgtNjcgMTUgNjYKJmd0OyA8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BzbHUu c2UiPmthcmxpLnNqb2JlcmdAc2x1LnNlPC9hPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmthcmxpLnNq b2JlcmdAYWRtLnNsdS5zZSI+bWFpbHRvOmthcmxpLnNqb2JlcmdAYWRtLnNsdS5zZTwvYT4mZ3Q7 CiZndDsKJmd0OwomZ3Q7CiZndDsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KJmd0OyBVc2VycyBtYWlsaW5nIGxpc3QKJmd0OyA8YSBocmVmPSJtYWlsdG86 VXNlcnNAb3ZpcnQub3JnIj5Vc2Vyc0BvdmlydC5vcmc8L2E+CiZndDsgPGEgaHJlZj0iaHR0cDov L2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzIj5odHRwOi8vbGlzdHMub3Zp cnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnM8L2E+CiZndDsKCjwvcHJlPg0KPC9ibG9ja3F1 b3RlPg0KPGJyPg0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9 IjEwMCUiPg0KPHRib2R5Pg0KPHRyPg0KPHRkPi0tIDxicj4NCjxicj4NCk1lZCBWw6RubGlnYSBI w6Rsc25pbmdhcjxicj4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQpLYXJsaSBTasO2YmVy Zzxicj4NClN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXM8YnI+DQpC b3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpPGJyPg0KUy03NTAgMDcg VXBwc2FsYSwgU3dlZGVuPGJyPg0KUGhvbmU6ICZuYnNwOyYjNDM7NDYtKDApMTgtNjcgMTUgNjY8 YnI+DQo8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlIj5rYXJsaS5zam9i ZXJnQHNsdS5zZTwvYT4gPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4NCjwvYmxvY2tx dW90ZT4NCjxicj4NCjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRo PSIxMDAlIj4NCjx0Ym9keT4NCjx0cj4NCjx0ZD4tLSA8YnI+DQo8YnI+DQpNZWQgVsOkbmxpZ2Eg SMOkbHNuaW5nYXI8YnI+DQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyPg0KS2FybGkgU2rDtmJl cmc8YnI+DQpTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzPGJyPg0K Qm94IDcwNzkgKFZpc2l0aW5nIEFkZHJlc3MgS3JvbsOlc3bDpGdlbiA4KTxicj4NClMtNzUwIDA3 IFVwcHNhbGEsIFN3ZWRlbjxicj4NClBob25lOiAmbmJzcDsmIzQzOzQ2LSgwKTE4LTY3IDE1IDY2 PGJyPg0KPGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAYWRtLnNsdS5zZSI+a2FybGkuc2pv YmVyZ0BzbHUuc2U8L2E+IDwvdGQ+DQo8L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo8L2JvZHk+ DQo8L2h0bWw+DQo= --_000_5F9E965F5A80BC468BE5F40576769F092A1AF448exchange21_--

Hi, Lets follow http://www.ovirt.org/Python-sdk In [1]: from ovirtsdk.xml import params In [2]: from ovirtsdk.api import API In [3]: In [4]: api = API(***, ***, ***) In [5]: user_name = "***" In [6]: domain = "***.***.***.redhat.com" In [7]: user_domain = params.Domain(name=domain) In [8]: user_name = "{0}@{1}".format(user_name, domain) # creating user In [9]: new_user = params.User(domain=user_domain, user_name=user_name) # adding user to users resource In [10]: user = api.users.add(new_user) # adding role to user In [11]: user.roles.add(api.roles.get('UserRole')) Out[11]: <ovirtsdk.infrastructure.brokers.UserRole object at 0x30c7590> Thanks Ilia ----- Original Message ----- From: "Karli Sjöberg" <Karli.Sjoberg@slu.se> To: "Ilia Meerovich" <imeerovi@redhat.com> Cc: "Michael Pasternak" <mpastern@redhat.com>, "users" <users@ovirt.org>, "Elena Dolinin" <edolinin@redhat.com> Sent: Friday, May 24, 2013 8:04:43 AM Subject: Re: [Users] Problems using the PythonSDK tor 2013-05-23 klockan 08:53 -0400 skrev Ilia Meerovich: It should be like: from ovirtsdk.xml import params from ovirtsdk.api import API api = API('*', '*', '*') vm = api.vms.list()[0] user = api.users.list()[1] role = api.roles.list()[1] permit = params.Permission() permit.set_role(role) permit.set_vm(vm) user.permissions.add(permit) Thank you very much, I´m going to test this out today! Could you also show me how to first add a user that isn´t in the system yet, please? ----- Original Message ----- From: "Ilia Meerovich" < imeerovi@redhat.com > To: "Michael Pasternak" < mpastern@redhat.com > Cc: "users" < users@ovirt.org >, "Karli Sjöberg" < Karli.Sjoberg@slu.se >, "Elena Dolinin" < edolinin@redhat.com > Sent: Thursday, May 23, 2013 3:30:27 PM Subject: Re: [Users] Problems using the PythonSDK Hi, We have several tests like: "Add VM permission to user", that are using ART's art/rhevm_api/tests_lib/low_level/mla.py addPermitsToUser function. This is generic function but it shouldn't be hard to prepare SDK code with the same functionality. Thanks Ilia ----- Original Message ----- From: "Michael Pasternak" < mpastern@redhat.com > To: "Karli Sjöberg" < Karli.Sjoberg@slu.se >, "Elena Dolinin" < edolinin@redhat.com >, "Ilia Meerovich" < imeerovi@redhat.com > Cc: "users" < users@ovirt.org > Sent: Thursday, May 23, 2013 3:10:21 PM Subject: Re: [Users] Problems using the PythonSDK Hi Karli, On 05/23/2013 12:35 PM, Karli Sjöberg wrote:
Hi!
We´re in the process of building an orderportal where our customers will be able to log in, select a virtual machine template, type in a desired hostname and it will be automatically created, and they recieve a mail explaining what they´ve gotten themselves into:). For this I figured the PythonSDK would be the best choice but I´m having trouble using it. What we´ve done so far is:
1) Create a new VM from a template; OK. I found an example and it worked OOTB 2) Rename the new VM´s disk from ${TemplateName}_Disk1 to ${VMName}_Disk1; Not OK. I found an example of how to change the name of a VMNic and that works, but using the same method to change VMDisk´s name does not (FYI, the VM only has one VNic and VDisk):
from ovirtsdk.xml import params from ovirtsdk.api import API api = API(url=' https:// ${ENGINE}:443/api', < https://storm.slu.se:443/api' ,> ca_file='${CACERT}', username='admin@internal < mailto:'admin@internal >', password='letmein!') vm = api.vms.get(name='VMName')
vmnic = vm.nics.get(name='*') vmnic.name 'nic1' api.vms.get(name='VMName').nics.get(name='*') 'nic1' vmnic.name='nic2' vmnic.update() api.vms.get(name='VMName').nics.get(name='*') 'nic2' vmnic.name 'nic2'
vmdisk = vm.disks.get(name='*') vmdisk.name 'TemplateName_Disk1' api.vms.get(name='VMName').disks.get(name='*')
this kind of call is not efficient, by fetching the disk you also fetch the vm, i'd suggest fetch vm, store it in local variable and then reuse it for any sub-collection manipulations.
'TemplateName_Disk1'
vmdisk.name='VMName_Disk1' vmdisk.update() vmdisk.name 'VMName_Disk1' api.vms.get(name='VMName').disks.get(name='*') 'TemplateName_Disk1'
See? Am I holding it wrong?
disk.name is deprecated, please use 'alias' instead.
3) Create a snapshot called "Origin", so if a customer calls in and says they´ve borked it completely, we´ll just revert to it´s "Origin" and they´re up and running again; OK, found another OOTB example, thank you. 4) Add the customer to VM´s Permissions with an appropriate role; Not OK. I have found no examples on how to do this and just don´t know where to start looking. BTW, creating a new VM with Python results in Permissions completely empty, no inheritance either. Don´t know if that is intended...
elena, ilia, guys, do you have any permission related code to share?
client# rpm -qa | grep ovirt ovirt-engine-cli-3.2.0.11-1.fc17.noarch ovirt-engine-sdk-3.2.0.10-1.fc17.noarch
engine# rpm -qa | grep ovirt ovirt-engine-config-3.1.0-4.fc17.noarch ovirt-engine-dbscripts-3.1.0-4.fc17.noarch ovirt-log-collector-3.1.0-0.git10d719.fc17.noarch ovirt-engine-restapi-3.1.0-4.fc17.noarch ovirt-image-uploader-3.1.0-0.git9c42c8.fc17.noarch ovirt-engine-genericapi-3.1.0-4.fc17.noarch ovirt-iso-uploader-3.1.0-0.git1841d9.fc17.noarch ovirt-engine-webadmin-portal-3.1.0-4.fc17.noarch ovirt-engine-setup-3.1.0-4.fc17.noarch ovirt-engine-sdk-3.2.0.2-1.fc17.noarch ovirt-engine-backend-3.1.0-4.fc17.noarch ovirt-engine-tools-common-3.1.0-4.fc17.noarch ovirt-engine-3.1.0-4.fc17.noarch ovirt-engine-userportal-3.1.0-4.fc17.noarch ovirt-engine-notification-service-3.1.0-4.fc17.noarch
--
Best Regards ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se < mailto:karli.sjoberg@adm.slu.se >
_______________________________________________ Users mailing list Users@ovirt.org > http://lists.ovirt.org/mailman/listinfo/users >
-- Med Vänliga Hälsningar ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se

--_000_5F9E965F5A80BC468BE5F40576769F092E65167Aexchange21_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGVsbG8gZXZlcnlvbmUhDQoNCknCtG0gYWxtb3N0IGRvbmUgd2l0aCBQeXRob24gZm9yIG5vdy4g QnV0IHRoZSBsYXN0IHRoaW5nIEkgc2l0bGwgY2FuwrR0IHNlZW0gdG8gZ2V0IGFueSBoYW5nIG9u IGlzIGhvdyB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBWTcK0cyBkaXNrOg0KDQo+Pj4gZnJvbSBv dmlydHNkay5hcGkgaW1wb3J0IEFQSQ0KPj4+IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJh bXMNCj4+PiBhcGkgPSBBUEkodXJsPSdodHRwczovLyR7T1ZJUlR9OjQ0MzxodHRwczovL3N0b3Jt LnNsdS5zZTo0NDM+JywgY2FfZmlsZT0nL2V0Yy9wa2kvb3ZpcnQtZW5naW5lL2NhLnBlbScsIHVz ZXJuYW1lPSdhZG1pbkBpbnRlcm5hbDxtYWlsdG86J2FkbWluQGludGVybmFsPicsIHBhc3N3b3Jk PSdsZXRtZWluIScpDQo+Pj4gVk1fTkFNRSA9ICdGZWRvcmFUZXN0Jw0KPj4+IERJU0tfTkFNRSA9 ICclc19EaXNrMScgJSAoVk1fTkFNRSkNCj4+PiB2bSA9IGFwaS52bXMuZ2V0KFZNX05BTUUpDQo+ Pj4gdm1kaXNrID0gdm0uZGlza3MubGlzdCgpWzBdDQo+Pj4gdm1kaXNrLmFsaWFzID0gJ2Zvb2Jh cicNCj4+PiB2bWRpc2submFtZSA9ICdmb29iYXInDQo+Pj4gdm1kaXNrLnVwZGF0ZSgpDQo8b3Zp cnRzZGsuaW5mcmFzdHJ1Y3R1cmUuYnJva2Vycy5WTURpc2sgb2JqZWN0IGF0IDB4MjVkN2FkMD4N Cg0KQnV0IHRoZSBuYW1lL2FsaWFzL3doYXRldiBuZXZlciBjaGFuZ2VzLi4uDQoNCkNvdWxkIHlv dSBwbGVhc2UgZ2l2ZSBtZSBhbiBleGFjdCwgYW5kIHdvcmtpbmcgZXhhbXBsZSBvZiBob3cgdG8g Y2hhbmdlIHRoZSBuYW1lIG9mIGEgVk3CtHMgZGlzay4gVGhpcyBpcyB0aGUgbGFzdCBzaW1wbGUg dGhpbmcgSSB3b3VsZCBsaWtlIHRvIGFjY29tcGxpc2ggYmVmb3JlIHNoYXJpbmcgYSBsaXR0bGUg c29tZXRoaW5nIGJhY2sgd2l0aCB5wrRhbGwodGVhc2VyLCB0ZWFzZXIpLg0KDQovS2FybGkNCg0K c8O2biAyMDEzLTA1LTI2IGtsb2NrYW4gMDI6NDggLTA0MDAgc2tyZXYgSWxpYSBNZWVyb3ZpY2g6 DQoNCg0KSGksDQoNCkxldHMgZm9sbG93IGh0dHA6Ly93d3cub3ZpcnQub3JnL1B5dGhvbi1zZGsN Cg0KSW4gWzFdOiBmcm9tIG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFyYW1zDQoNCkluIFsyXTogZnJv bSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQ0KDQpJbiBbM106DQoNCkluIFs0XTogYXBpID0gQVBJ KCoqKiwgKioqLCAqKiopDQoNCkluIFs1XTogdXNlcl9uYW1lID0gIioqKiINCg0KSW4gWzZdOiBk b21haW4gPSAiKioqLioqKi4qKioucmVkaGF0LmNvbSINCg0KSW4gWzddOiB1c2VyX2RvbWFpbiA9 IHBhcmFtcy5Eb21haW4obmFtZT1kb21haW4pDQoNCkluIFs4XTogdXNlcl9uYW1lID0gInswfUB7 MX0iLmZvcm1hdCh1c2VyX25hbWUsIGRvbWFpbikNCiMgY3JlYXRpbmcgdXNlcg0KSW4gWzldOiBu ZXdfdXNlciA9IHBhcmFtcy5Vc2VyKGRvbWFpbj11c2VyX2RvbWFpbiwgdXNlcl9uYW1lPXVzZXJf bmFtZSkNCiMgYWRkaW5nIHVzZXIgdG8gdXNlcnMgcmVzb3VyY2UNCkluIFsxMF06IHVzZXIgPSBh cGkudXNlcnMuYWRkKG5ld191c2VyKQ0KIyBhZGRpbmcgcm9sZSB0byB1c2VyDQpJbiBbMTFdOiB1 c2VyLnJvbGVzLmFkZChhcGkucm9sZXMuZ2V0KCdVc2VyUm9sZScpKQ0KT3V0WzExXTogPG92aXJ0 c2RrLmluZnJhc3RydWN0dXJlLmJyb2tlcnMuVXNlclJvbGUgb2JqZWN0IGF0IDB4MzBjNzU5MD4N Cg0KVGhhbmtzDQpJbGlhDQoNCi0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0NCkZyb206ICJL YXJsaSBTasO2YmVyZyIgPEthcmxpLlNqb2JlcmdAc2x1LnNlPG1haWx0bzpLYXJsaS5Tam9iZXJn QHNsdS5zZT4+DQpUbzogIklsaWEgTWVlcm92aWNoIiA8aW1lZXJvdmlAcmVkaGF0LmNvbTxtYWls dG86aW1lZXJvdmlAcmVkaGF0LmNvbT4+DQpDYzogIk1pY2hhZWwgUGFzdGVybmFrIiA8bXBhc3Rl cm5AcmVkaGF0LmNvbTxtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbT4+LCAidXNlcnMiIDx1c2Vy c0BvdmlydC5vcmc8bWFpbHRvOnVzZXJzQG92aXJ0Lm9yZz4+LCAiRWxlbmEgRG9saW5pbiIgPGVk b2xpbmluQHJlZGhhdC5jb208bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20+Pg0KU2VudDogRnJp ZGF5LCBNYXkgMjQsIDIwMTMgODowNDo0MyBBTQ0KU3ViamVjdDogUmU6IFtVc2Vyc10gUHJvYmxl bXMgdXNpbmcgdGhlIFB5dGhvblNESw0KDQp0b3IgMjAxMy0wNS0yMyBrbG9ja2FuIDA4OjUzIC0w NDAwIHNrcmV2IElsaWEgTWVlcm92aWNoOg0KDQpJdCBzaG91bGQgYmUgbGlrZToNCg0KZnJvbSBv dmlydHNkay54bWwgaW1wb3J0IHBhcmFtcw0KZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQ0K DQphcGkgPSBBUEkoJyonLCAnKicsICcqJykNCnZtID0gYXBpLnZtcy5saXN0KClbMF0NCnVzZXIg PSAgYXBpLnVzZXJzLmxpc3QoKVsxXQ0Kcm9sZSA9IGFwaS5yb2xlcy5saXN0KClbMV0NCnBlcm1p dCA9IHBhcmFtcy5QZXJtaXNzaW9uKCkNCnBlcm1pdC5zZXRfcm9sZShyb2xlKQ0KcGVybWl0LnNl dF92bSh2bSkNCnVzZXIucGVybWlzc2lvbnMuYWRkKHBlcm1pdCkNClRoYW5rIHlvdSB2ZXJ5IG11 Y2gsIEnCtG0gZ29pbmcgdG8gdGVzdCB0aGlzIG91dCB0b2RheSEgQ291bGQgeW91IGFsc28gc2hv dyBtZSBob3cgdG8gZmlyc3QgYWRkIGEgdXNlciB0aGF0IGlzbsK0dCBpbiB0aGUgc3lzdGVtIHll dCwgcGxlYXNlPw0KDQoNCg0KLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQ0KRnJvbTogIkls aWEgTWVlcm92aWNoIiA8IGltZWVyb3ZpQHJlZGhhdC5jb208bWFpbHRvOmltZWVyb3ZpQHJlZGhh dC5jb20+ID4NClRvOiAiTWljaGFlbCBQYXN0ZXJuYWsiIDwgbXBhc3Rlcm5AcmVkaGF0LmNvbTxt YWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbT4gPg0KQ2M6ICJ1c2VycyIgPCB1c2Vyc0BvdmlydC5v cmc8bWFpbHRvOnVzZXJzQG92aXJ0Lm9yZz4gPiwgIkthcmxpIFNqw7ZiZXJnIiA8IEthcmxpLlNq b2JlcmdAc2x1LnNlPG1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZT4gPiwgIkVsZW5hIERvbGlu aW4iIDwgZWRvbGluaW5AcmVkaGF0LmNvbTxtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbT4gPg0K U2VudDogVGh1cnNkYXksIE1heSAyMywgMjAxMyAzOjMwOjI3IFBNDQpTdWJqZWN0OiBSZTogW1Vz ZXJzXSBQcm9ibGVtcyB1c2luZyB0aGUgUHl0aG9uU0RLDQoNCkhpLA0KDQpXZSBoYXZlIHNldmVy YWwgdGVzdHMgbGlrZToNCiJBZGQgVk0gcGVybWlzc2lvbiB0byB1c2VyIiwgdGhhdCBhcmUgdXNp bmcgQVJUJ3MgYXJ0L3JoZXZtX2FwaS90ZXN0c19saWIvbG93X2xldmVsL21sYS5weSBhZGRQZXJt aXRzVG9Vc2VyIGZ1bmN0aW9uLg0KVGhpcyBpcyBnZW5lcmljIGZ1bmN0aW9uIGJ1dCBpdCBzaG91 bGRuJ3QgYmUgaGFyZCB0byBwcmVwYXJlIFNESyBjb2RlIHdpdGggdGhlIHNhbWUgZnVuY3Rpb25h bGl0eS4NCg0KVGhhbmtzDQpJbGlhDQoNCi0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0NCkZy b206ICJNaWNoYWVsIFBhc3Rlcm5hayIgPCBtcGFzdGVybkByZWRoYXQuY29tPG1haWx0bzptcGFz dGVybkByZWRoYXQuY29tPiA+DQpUbzogIkthcmxpIFNqw7ZiZXJnIiA8IEthcmxpLlNqb2JlcmdA c2x1LnNlPG1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZT4gPiwgIkVsZW5hIERvbGluaW4iIDwg ZWRvbGluaW5AcmVkaGF0LmNvbTxtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbT4gPiwgIklsaWEg TWVlcm92aWNoIiA8IGltZWVyb3ZpQHJlZGhhdC5jb208bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5j b20+ID4NCkNjOiAidXNlcnMiIDwgdXNlcnNAb3ZpcnQub3JnPG1haWx0bzp1c2Vyc0BvdmlydC5v cmc+ID4NClNlbnQ6IFRodXJzZGF5LCBNYXkgMjMsIDIwMTMgMzoxMDoyMSBQTQ0KU3ViamVjdDog UmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhvblNESw0KDQoNCkhpIEthcmxpLA0K DQpPbiAwNS8yMy8yMDEzIDEyOjM1IFBNLCBLYXJsaSBTasO2YmVyZyB3cm90ZToNCj4gSGkhDQo+ DQo+IFdlwrRyZSBpbiB0aGUgcHJvY2VzcyBvZiBidWlsZGluZyBhbiBvcmRlcnBvcnRhbCB3aGVy ZSBvdXIgY3VzdG9tZXJzIHdpbGwgYmUgYWJsZSB0byBsb2cgaW4sIHNlbGVjdCBhIHZpcnR1YWwg bWFjaGluZSB0ZW1wbGF0ZSwgdHlwZSBpbiBhIGRlc2lyZWQgaG9zdG5hbWUgYW5kIGl0IHdpbGwg YmUNCj4gYXV0b21hdGljYWxseSBjcmVhdGVkLCBhbmQgdGhleSByZWNpZXZlIGEgbWFpbCBleHBs YWluaW5nIHdoYXQgdGhlecK0dmUgZ290dGVuIHRoZW1zZWx2ZXMgaW50bzopLiBGb3IgdGhpcyBJ IGZpZ3VyZWQgdGhlIFB5dGhvblNESyB3b3VsZCBiZSB0aGUgYmVzdCBjaG9pY2UgYnV0IEnCtG0g aGF2aW5nDQo+IHRyb3VibGUgdXNpbmcgaXQuIFdoYXQgd2XCtHZlIGRvbmUgc28gZmFyIGlzOg0K Pg0KPiAxKSBDcmVhdGUgYSBuZXcgVk0gZnJvbSBhIHRlbXBsYXRlOyBPSy4gSSBmb3VuZCBhbiBl eGFtcGxlIGFuZCBpdCB3b3JrZWQgT09UQg0KPiAyKSBSZW5hbWUgdGhlIG5ldyBWTcK0cyBkaXNr IGZyb20gJHtUZW1wbGF0ZU5hbWV9X0Rpc2sxIHRvICR7Vk1OYW1lfV9EaXNrMTsgTm90IE9LLiBJ IGZvdW5kIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNoYW5nZSB0aGUgbmFtZSBvZiBhIFZNTmljIGFu ZCB0aGF0IHdvcmtzLCBidXQgdXNpbmcgdGhlDQo+IHNhbWUgbWV0aG9kIHRvIGNoYW5nZSBWTURp c2vCtHMgbmFtZSBkb2VzIG5vdCAoRllJLCB0aGUgVk0gb25seSBoYXMgb25lIFZOaWMgYW5kIFZE aXNrKToNCj4+Pj4gZnJvbSBvdmlydHNkay54bWwgaW1wb3J0IHBhcmFtcw0KPj4+PiBmcm9tIG92 aXJ0c2RrLmFwaSBpbXBvcnQgQVBJDQo+Pj4+IGFwaSA9IEFQSSh1cmw9JyBodHRwczovLyAke0VO R0lORX06NDQzL2FwaScsIDwgaHR0cHM6Ly9zdG9ybS5zbHUuc2U6NDQzL2FwaScgLD4gY2FfZmls ZT0nJHtDQUNFUlR9JywgdXNlcm5hbWU9J2FkbWluQGludGVybmFsIDwgbWFpbHRvOidhZG1pbkBp bnRlcm5hbCA+JywgcGFzc3dvcmQ9J2xldG1laW4hJykNCj4+Pj4gdm0gPSBhcGkudm1zLmdldChu YW1lPSdWTU5hbWUnKQ0KPg0KPj4+PiB2bW5pYyA9IHZtLm5pY3MuZ2V0KG5hbWU9JyonKQ0KPj4+ PiB2bW5pYy5uYW1lDQo+ICduaWMxJw0KPj4+PiBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5u aWNzLmdldChuYW1lPScqJykNCj4gJ25pYzEnDQo+Pj4+IHZtbmljLm5hbWU9J25pYzInDQo+Pj4+ IHZtbmljLnVwZGF0ZSgpDQo+Pj4+IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLm5pY3MuZ2V0 KG5hbWU9JyonKQ0KPiAnbmljMicNCj4+Pj4gdm1uaWMubmFtZQ0KPiAnbmljMicNCj4NCj4+Pj4g dm1kaXNrID0gdm0uZGlza3MuZ2V0KG5hbWU9JyonKQ0KPj4+PiB2bWRpc2submFtZQ0KPiAnVGVt cGxhdGVOYW1lX0Rpc2sxJw0KPj4+PiBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5kaXNrcy5n ZXQobmFtZT0nKicpDQoNCnRoaXMga2luZCBvZiBjYWxsIGlzIG5vdCBlZmZpY2llbnQsIGJ5IGZl dGNoaW5nIHRoZSBkaXNrDQp5b3UgYWxzbyBmZXRjaCB0aGUgdm0sDQoNCmknZCBzdWdnZXN0IGZl dGNoIHZtLCBzdG9yZSBpdCBpbiBsb2NhbCB2YXJpYWJsZSBhbmQgdGhlbg0KcmV1c2UgaXQgZm9y IGFueSBzdWItY29sbGVjdGlvbiBtYW5pcHVsYXRpb25zLg0KDQoNCj4gJ1RlbXBsYXRlTmFtZV9E aXNrMScNCj4+Pj4gdm1kaXNrLm5hbWU9J1ZNTmFtZV9EaXNrMScNCj4+Pj4gdm1kaXNrLnVwZGF0 ZSgpDQo+Pj4+IHZtZGlzay5uYW1lDQo+ICdWTU5hbWVfRGlzazEnDQo+Pj4+IGFwaS52bXMuZ2V0 KG5hbWU9J1ZNTmFtZScpLmRpc2tzLmdldChuYW1lPScqJykNCj4gJ1RlbXBsYXRlTmFtZV9EaXNr MScNCj4NCj4gU2VlPyBBbSBJIGhvbGRpbmcgaXQgd3Jvbmc/DQoNCmRpc2submFtZSBpcyBkZXBy ZWNhdGVkLCBwbGVhc2UgdXNlICdhbGlhcycgaW5zdGVhZC4NCg0KPg0KPiAzKSBDcmVhdGUgYSBz bmFwc2hvdCBjYWxsZWQgIk9yaWdpbiIsIHNvIGlmIGEgY3VzdG9tZXIgY2FsbHMgaW4gYW5kIHNh eXMgdGhlecK0dmUgYm9ya2VkIGl0IGNvbXBsZXRlbHksIHdlwrRsbCBqdXN0IHJldmVydCB0byBp dMK0cyAiT3JpZ2luIiBhbmQgdGhlecK0cmUgdXAgYW5kIHJ1bm5pbmcgYWdhaW47DQo+IE9LLCBm b3VuZCBhbm90aGVyIE9PVEIgZXhhbXBsZSwgdGhhbmsgeW91Lg0KPiA0KSBBZGQgdGhlIGN1c3Rv bWVyIHRvIFZNwrRzIFBlcm1pc3Npb25zIHdpdGggYW4gYXBwcm9wcmlhdGUgcm9sZTsgTm90IE9L LiBJIGhhdmUgZm91bmQgbm8gZXhhbXBsZXMgb24gaG93IHRvIGRvIHRoaXMgYW5kIGp1c3QgZG9u wrR0IGtub3cgd2hlcmUgdG8gc3RhcnQgbG9va2luZy4gQlRXLA0KPiBjcmVhdGluZyBhIG5ldyBW TSB3aXRoIFB5dGhvbiByZXN1bHRzIGluIFBlcm1pc3Npb25zIGNvbXBsZXRlbHkgZW1wdHksIG5v IGluaGVyaXRhbmNlIGVpdGhlci4gRG9uwrR0IGtub3cgaWYgdGhhdCBpcyBpbnRlbmRlZC4uLg0K DQplbGVuYSwgaWxpYSwNCg0KZ3V5cywgZG8geW91IGhhdmUgYW55IHBlcm1pc3Npb24gcmVsYXRl ZCBjb2RlIHRvIHNoYXJlPw0KDQo+DQo+IGNsaWVudCMgcnBtIC1xYSB8IGdyZXAgb3ZpcnQNCj4g b3ZpcnQtZW5naW5lLWNsaS0zLjIuMC4xMS0xLmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS1z ZGstMy4yLjAuMTAtMS5mYzE3Lm5vYXJjaA0KPg0KPiBlbmdpbmUjIHJwbSAtcWEgfCBncmVwIG92 aXJ0DQo+IG92aXJ0LWVuZ2luZS1jb25maWctMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPiBvdmlydC1l bmdpbmUtZGJzY3JpcHRzLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4gb3ZpcnQtbG9nLWNvbGxlY3Rv ci0zLjEuMC0wLmdpdDEwZDcxOS5mYzE3Lm5vYXJjaA0KPiBvdmlydC1lbmdpbmUtcmVzdGFwaS0z LjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWltYWdlLXVwbG9hZGVyLTMuMS4wLTAuZ2l0OWM0 MmM4LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS1nZW5lcmljYXBpLTMuMS4wLTQuZmMxNy5u b2FyY2gNCj4gb3ZpcnQtaXNvLXVwbG9hZGVyLTMuMS4wLTAuZ2l0MTg0MWQ5LmZjMTcubm9hcmNo DQo+IG92aXJ0LWVuZ2luZS13ZWJhZG1pbi1wb3J0YWwtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPiBv dmlydC1lbmdpbmUtc2V0dXAtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPiBvdmlydC1lbmdpbmUtc2Rr LTMuMi4wLjItMS5mYzE3Lm5vYXJjaA0KPiBvdmlydC1lbmdpbmUtYmFja2VuZC0zLjEuMC00LmZj MTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS10b29scy1jb21tb24tMy4xLjAtNC5mYzE3Lm5vYXJj aA0KPiBvdmlydC1lbmdpbmUtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPiBvdmlydC1lbmdpbmUtdXNl cnBvcnRhbC0zLjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS1ub3RpZmljYXRpb24t c2VydmljZS0zLjEuMC00LmZjMTcubm9hcmNoDQo+DQo+IC0tDQo+DQo+IEJlc3QgUmVnYXJkcw0K PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IEthcmxpIFNqw7ZiZXJnDQo+IFN3ZWRpc2ggVW5p dmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXMNCj4gQm94IDcwNzkgKFZpc2l0aW5nIEFk ZHJlc3MgS3JvbsOlc3bDpGdlbiA4KQ0KPiBTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4NCj4gUGhv bmU6ICArNDYtKDApMTgtNjcgMTUgNjYNCj4ga2FybGkuc2pvYmVyZ0BzbHUuc2U8bWFpbHRvOmth cmxpLnNqb2JlcmdAc2x1LnNlPiA8IG1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2UgPg0K Pg0KPg0KPg0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xw0KPiBVc2VycyBtYWlsaW5nIGxpc3QNCj4gVXNlcnNAb3ZpcnQub3JnPG1haWx0bzpVc2Vyc0Bv dmlydC5vcmc+ID4gaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJz ID4NCg0KICAgICAgICAtLQ0KDQpNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXINCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCkthcmxpIFNqw7ZiZXJnDQpTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1 bHR1cmFsIFNjaWVuY2VzDQpCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2Vu IDgpDQpTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4NClBob25lOiArNDYtKDApMTgtNjcgMTUgNjYN CmthcmxpLnNqb2JlcmdAc2x1LnNlPG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZT4NCg0KDQot LQ0KDQpNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkth cmxpIFNqw7ZiZXJnDQpTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2Vz DQpCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpDQpTLTc1MCAwNyBV cHBzYWxhLCBTd2VkZW4NClBob25lOiAgKzQ2LSgwKTE4LTY3IDE1IDY2DQprYXJsaS5zam9iZXJn QHNsdS5zZTxtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlPg0K --_000_5F9E965F5A80BC468BE5F40576769F092E65167Aexchange21_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwv L0VOIj4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQo8bWV0YSBuYW1lPSJHRU5FUkFUT1Ii IGNvbnRlbnQ9Ikd0a0hUTUwvNC40LjQiPg0KPC9oZWFkPg0KPGJvZHk+DQpIZWxsbyBldmVyeW9u ZSE8YnI+DQo8YnI+DQpJwrRtIGFsbW9zdCBkb25lIHdpdGggUHl0aG9uIGZvciBub3cuIEJ1dCB0 aGUgbGFzdCB0aGluZyBJIHNpdGxsIGNhbsK0dCBzZWVtIHRvIGdldCBhbnkgaGFuZyBvbiBpcyBo b3cgdG8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgVk3CtHMgZGlzazo8YnI+DQo8YnI+DQomZ3Q7Jmd0 OyZndDsgZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSTxicj4NCiZndDsmZ3Q7Jmd0OyBmcm9t IG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFyYW1zPGJyPg0KJmd0OyZndDsmZ3Q7IGFwaSA9IEFQSSh1 cmw9JzxhIGhyZWY9Imh0dHBzOi8vc3Rvcm0uc2x1LnNlOjQ0MyI+aHR0cHM6Ly8ke09WSVJUfTo0 NDM8L2E+JywgY2FfZmlsZT0nL2V0Yy9wa2kvb3ZpcnQtZW5naW5lL2NhLnBlbScsIHVzZXJuYW1l PTxhIGhyZWY9Im1haWx0bzonYWRtaW5AaW50ZXJuYWwiPidhZG1pbkBpbnRlcm5hbDwvYT4nLCBw YXNzd29yZD0nbGV0bWVpbiEnKTxicj4NCiZndDsmZ3Q7Jmd0OyBWTV9OQU1FID0gJ0ZlZG9yYVRl c3QnPGJyPg0KJmd0OyZndDsmZ3Q7IERJU0tfTkFNRSA9ICclc19EaXNrMScgJSAoVk1fTkFNRSk8 YnI+DQomZ3Q7Jmd0OyZndDsgdm0gPSBhcGkudm1zLmdldChWTV9OQU1FKTxicj4NCiZndDsmZ3Q7 Jmd0OyB2bWRpc2sgPSB2bS5kaXNrcy5saXN0KClbMF08YnI+DQomZ3Q7Jmd0OyZndDsgdm1kaXNr LmFsaWFzID0gJ2Zvb2Jhcic8YnI+DQomZ3Q7Jmd0OyZndDsgdm1kaXNrLm5hbWUgPSAnZm9vYmFy Jzxicj4NCiZndDsmZ3Q7Jmd0OyB2bWRpc2sudXBkYXRlKCk8YnI+DQombHQ7b3ZpcnRzZGsuaW5m cmFzdHJ1Y3R1cmUuYnJva2Vycy5WTURpc2sgb2JqZWN0IGF0IDB4MjVkN2FkMCZndDs8YnI+DQo8 YnI+DQpCdXQgdGhlIG5hbWUvYWxpYXMvd2hhdGV2IG5ldmVyIGNoYW5nZXMuLi48YnI+DQo8YnI+ DQpDb3VsZCB5b3UgcGxlYXNlIGdpdmUgbWUgYW4gZXhhY3QsIGFuZCB3b3JraW5nIGV4YW1wbGUg b2YgaG93IHRvIGNoYW5nZSB0aGUgbmFtZSBvZiBhIFZNwrRzIGRpc2suIFRoaXMgaXMgdGhlIGxh c3Qgc2ltcGxlIHRoaW5nIEkgd291bGQgbGlrZSB0byBhY2NvbXBsaXNoIGJlZm9yZSBzaGFyaW5n IGEgbGl0dGxlIHNvbWV0aGluZyBiYWNrIHdpdGggecK0YWxsKHRlYXNlciwgdGVhc2VyKS48YnI+ DQo8YnI+DQovS2FybGk8YnI+DQo8YnI+DQpzw7ZuIDIwMTMtMDUtMjYga2xvY2thbiAwMjo0OCAt MDQwMCBza3JldiBJbGlhIE1lZXJvdmljaDoNCjxibG9ja3F1b3RlIHR5cGU9IkNJVEUiPg0KPHBy ZT4KSGksCgpMZXRzIGZvbGxvdyA8YSBocmVmPSJodHRwOi8vd3d3Lm92aXJ0Lm9yZy9QeXRob24t c2RrIj5odHRwOi8vd3d3Lm92aXJ0Lm9yZy9QeXRob24tc2RrPC9hPiAKCkluIFsxXTogZnJvbSBv dmlydHNkay54bWwgaW1wb3J0IHBhcmFtcwoKSW4gWzJdOiBmcm9tIG92aXJ0c2RrLmFwaSBpbXBv cnQgQVBJIAoKSW4gWzNdOiAKCkluIFs0XTogYXBpID0gQVBJKCoqKiwgKioqLCAqKiopCgpJbiBb NV06IHVzZXJfbmFtZSA9ICZxdW90OyoqKiZxdW90OwoKSW4gWzZdOiBkb21haW4gPSAmcXVvdDsq KiouKioqLioqKi5yZWRoYXQuY29tJnF1b3Q7CgpJbiBbN106IHVzZXJfZG9tYWluID0gcGFyYW1z LkRvbWFpbihuYW1lPWRvbWFpbikKCkluIFs4XTogdXNlcl9uYW1lID0gJnF1b3Q7ezB9QHsxfSZx dW90Oy5mb3JtYXQodXNlcl9uYW1lLCBkb21haW4pIAojIGNyZWF0aW5nIHVzZXIgCkluIFs5XTog bmV3X3VzZXIgPSBwYXJhbXMuVXNlcihkb21haW49dXNlcl9kb21haW4sIHVzZXJfbmFtZT11c2Vy X25hbWUpCiMgYWRkaW5nIHVzZXIgdG8gdXNlcnMgcmVzb3VyY2UgCkluIFsxMF06IHVzZXIgPSBh cGkudXNlcnMuYWRkKG5ld191c2VyKQojIGFkZGluZyByb2xlIHRvIHVzZXIKSW4gWzExXTogdXNl ci5yb2xlcy5hZGQoYXBpLnJvbGVzLmdldCgnVXNlclJvbGUnKSkKT3V0WzExXTogJmx0O292aXJ0 c2RrLmluZnJhc3RydWN0dXJlLmJyb2tlcnMuVXNlclJvbGUgb2JqZWN0IGF0IDB4MzBjNzU5MCZn dDsKClRoYW5rcwpJbGlhCgotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCkZyb206ICZxdW90 O0thcmxpIFNqw7ZiZXJnJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86S2FybGkuU2pvYmVyZ0Bz bHUuc2UiPkthcmxpLlNqb2JlcmdAc2x1LnNlPC9hPiZndDsKVG86ICZxdW90O0lsaWEgTWVlcm92 aWNoJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86aW1lZXJvdmlAcmVkaGF0LmNvbSI+aW1lZXJv dmlAcmVkaGF0LmNvbTwvYT4mZ3Q7CkNjOiAmcXVvdDtNaWNoYWVsIFBhc3Rlcm5hayZxdW90OyAm bHQ7PGEgaHJlZj0ibWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20iPm1wYXN0ZXJuQHJlZGhhdC5j b208L2E+Jmd0OywgJnF1b3Q7dXNlcnMmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzp1c2Vyc0Bv dmlydC5vcmciPnVzZXJzQG92aXJ0Lm9yZzwvYT4mZ3Q7LCAmcXVvdDtFbGVuYSBEb2xpbmluJnF1 b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbSI+ZWRvbGluaW5AcmVk aGF0LmNvbTwvYT4mZ3Q7ClNlbnQ6IEZyaWRheSwgTWF5IDI0LCAyMDEzIDg6MDQ6NDMgQU0KU3Vi amVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhvblNESwoKdG9yIDIwMTMt MDUtMjMga2xvY2thbiAwODo1MyAtMDQwMCBza3JldiBJbGlhIE1lZXJvdmljaDogCgpJdCBzaG91 bGQgYmUgbGlrZToKCmZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXMKZnJvbSBvdmlydHNk ay5hcGkgaW1wb3J0IEFQSSAKCmFwaSA9IEFQSSgnKicsICcqJywgJyonKQp2bSA9IGFwaS52bXMu bGlzdCgpWzBdCnVzZXIgPSAgYXBpLnVzZXJzLmxpc3QoKVsxXQpyb2xlID0gYXBpLnJvbGVzLmxp c3QoKVsxXQpwZXJtaXQgPSBwYXJhbXMuUGVybWlzc2lvbigpCnBlcm1pdC5zZXRfcm9sZShyb2xl KQpwZXJtaXQuc2V0X3ZtKHZtKQp1c2VyLnBlcm1pc3Npb25zLmFkZChwZXJtaXQpIApUaGFuayB5 b3UgdmVyeSBtdWNoLCBJwrRtIGdvaW5nIHRvIHRlc3QgdGhpcyBvdXQgdG9kYXkhIENvdWxkIHlv dSBhbHNvIHNob3cgbWUgaG93IHRvIGZpcnN0IGFkZCBhIHVzZXIgdGhhdCBpc27CtHQgaW4gdGhl IHN5c3RlbSB5ZXQsIHBsZWFzZT8gCgoKCi0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KRnJv bTogJnF1b3Q7SWxpYSBNZWVyb3ZpY2gmcXVvdDsgJmx0OyA8YSBocmVmPSJtYWlsdG86aW1lZXJv dmlAcmVkaGF0LmNvbSI+aW1lZXJvdmlAcmVkaGF0LmNvbTwvYT4gJmd0OwpUbzogJnF1b3Q7TWlj aGFlbCBQYXN0ZXJuYWsmcXVvdDsgJmx0OyA8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0 LmNvbSI+bXBhc3Rlcm5AcmVkaGF0LmNvbTwvYT4gJmd0OwpDYzogJnF1b3Q7dXNlcnMmcXVvdDsg Jmx0OyA8YSBocmVmPSJtYWlsdG86dXNlcnNAb3ZpcnQub3JnIj51c2Vyc0BvdmlydC5vcmc8L2E+ ICZndDssICZxdW90O0thcmxpIFNqw7ZiZXJnJnF1b3Q7ICZsdDsgPGEgaHJlZj0ibWFpbHRvOkth cmxpLlNqb2JlcmdAc2x1LnNlIj5LYXJsaS5Tam9iZXJnQHNsdS5zZTwvYT4gJmd0OywgJnF1b3Q7 RWxlbmEgRG9saW5pbiZxdW90OyAmbHQ7IDxhIGhyZWY9Im1haWx0bzplZG9saW5pbkByZWRoYXQu Y29tIj5lZG9saW5pbkByZWRoYXQuY29tPC9hPiAmZ3Q7ClNlbnQ6IFRodXJzZGF5LCBNYXkgMjMs IDIwMTMgMzozMDoyNyBQTQpTdWJqZWN0OiBSZTogW1VzZXJzXSBQcm9ibGVtcyB1c2luZyB0aGUg UHl0aG9uU0RLCgpIaSwKCldlIGhhdmUgc2V2ZXJhbCB0ZXN0cyBsaWtlOgomcXVvdDtBZGQgVk0g cGVybWlzc2lvbiB0byB1c2VyJnF1b3Q7LCB0aGF0IGFyZSB1c2luZyBBUlQncyBhcnQvcmhldm1f YXBpL3Rlc3RzX2xpYi9sb3dfbGV2ZWwvbWxhLnB5IGFkZFBlcm1pdHNUb1VzZXIgZnVuY3Rpb24u ClRoaXMgaXMgZ2VuZXJpYyBmdW5jdGlvbiBidXQgaXQgc2hvdWxkbid0IGJlIGhhcmQgdG8gcHJl cGFyZSBTREsgY29kZSB3aXRoIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuCgpUaGFua3MgCklsaWEK Ci0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KRnJvbTogJnF1b3Q7TWljaGFlbCBQYXN0ZXJu YWsmcXVvdDsgJmx0OyA8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbSI+bXBhc3Rl cm5AcmVkaGF0LmNvbTwvYT4gJmd0OwpUbzogJnF1b3Q7S2FybGkgU2rDtmJlcmcmcXVvdDsgJmx0 OyA8YSBocmVmPSJtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2UiPkthcmxpLlNqb2JlcmdAc2x1 LnNlPC9hPiAmZ3Q7LCAmcXVvdDtFbGVuYSBEb2xpbmluJnF1b3Q7ICZsdDsgPGEgaHJlZj0ibWFp bHRvOmVkb2xpbmluQHJlZGhhdC5jb20iPmVkb2xpbmluQHJlZGhhdC5jb208L2E+ICZndDssICZx dW90O0lsaWEgTWVlcm92aWNoJnF1b3Q7ICZsdDsgPGEgaHJlZj0ibWFpbHRvOmltZWVyb3ZpQHJl ZGhhdC5jb20iPmltZWVyb3ZpQHJlZGhhdC5jb208L2E+ICZndDsKQ2M6ICZxdW90O3VzZXJzJnF1 b3Q7ICZsdDsgPGEgaHJlZj0ibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyI+dXNlcnNAb3ZpcnQub3Jn PC9hPiAmZ3Q7ClNlbnQ6IFRodXJzZGF5LCBNYXkgMjMsIDIwMTMgMzoxMDoyMSBQTQpTdWJqZWN0 OiBSZTogW1VzZXJzXSBQcm9ibGVtcyB1c2luZyB0aGUgUHl0aG9uU0RLCgoKSGkgS2FybGksCgpP biAwNS8yMy8yMDEzIDEyOjM1IFBNLCBLYXJsaSBTasO2YmVyZyB3cm90ZToKJmd0OyBIaSEKJmd0 OyAKJmd0OyBXZcK0cmUgaW4gdGhlIHByb2Nlc3Mgb2YgYnVpbGRpbmcgYW4gb3JkZXJwb3J0YWwg d2hlcmUgb3VyIGN1c3RvbWVycyB3aWxsIGJlIGFibGUgdG8gbG9nIGluLCBzZWxlY3QgYSB2aXJ0 dWFsIG1hY2hpbmUgdGVtcGxhdGUsIHR5cGUgaW4gYSBkZXNpcmVkIGhvc3RuYW1lIGFuZCBpdCB3 aWxsIGJlCiZndDsgYXV0b21hdGljYWxseSBjcmVhdGVkLCBhbmQgdGhleSByZWNpZXZlIGEgbWFp bCBleHBsYWluaW5nIHdoYXQgdGhlecK0dmUgZ290dGVuIHRoZW1zZWx2ZXMgaW50bzopLiBGb3Ig dGhpcyBJIGZpZ3VyZWQgdGhlIFB5dGhvblNESyB3b3VsZCBiZSB0aGUgYmVzdCBjaG9pY2UgYnV0 IEnCtG0gaGF2aW5nCiZndDsgdHJvdWJsZSB1c2luZyBpdC4gV2hhdCB3ZcK0dmUgZG9uZSBzbyBm YXIgaXM6CiZndDsgCiZndDsgMSkgQ3JlYXRlIGEgbmV3IFZNIGZyb20gYSB0ZW1wbGF0ZTsgT0su IEkgZm91bmQgYW4gZXhhbXBsZSBhbmQgaXQgd29ya2VkIE9PVEIKJmd0OyAyKSBSZW5hbWUgdGhl IG5ldyBWTcK0cyBkaXNrIGZyb20gJHtUZW1wbGF0ZU5hbWV9X0Rpc2sxIHRvICR7Vk1OYW1lfV9E aXNrMTsgTm90IE9LLiBJIGZvdW5kIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNoYW5nZSB0aGUgbmFt ZSBvZiBhIFZNTmljIGFuZCB0aGF0IHdvcmtzLCBidXQgdXNpbmcgdGhlCiZndDsgc2FtZSBtZXRo b2QgdG8gY2hhbmdlIFZNRGlza8K0cyBuYW1lIGRvZXMgbm90IChGWUksIHRoZSBWTSBvbmx5IGhh cyBvbmUgVk5pYyBhbmQgVkRpc2spOgomZ3Q7Jmd0OyZndDsmZ3Q7IGZyb20gb3ZpcnRzZGsueG1s IGltcG9ydCBwYXJhbXMKJmd0OyZndDsmZ3Q7Jmd0OyBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQg QVBJCiZndDsmZ3Q7Jmd0OyZndDsgYXBpID0gQVBJKHVybD0nIGh0dHBzOi8vICR7RU5HSU5FfTo0 NDMvYXBpJywgJmx0OyA8YSBocmVmPSJodHRwczovL3N0b3JtLnNsdS5zZTo0NDMvYXBpJyI+aHR0 cHM6Ly9zdG9ybS5zbHUuc2U6NDQzL2FwaSc8L2E+ICwmZ3Q7IGNhX2ZpbGU9JyR7Q0FDRVJUfScs IHVzZXJuYW1lPSdhZG1pbkBpbnRlcm5hbCAmbHQ7IDxhIGhyZWY9Im1haWx0bzonYWRtaW5AaW50 ZXJuYWwiPm1haWx0bzonYWRtaW5AaW50ZXJuYWw8L2E+ICZndDsnLCBwYXNzd29yZD0nbGV0bWVp biEnKQomZ3Q7Jmd0OyZndDsmZ3Q7IHZtID0gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykKJmd0 OyAKJmd0OyZndDsmZ3Q7Jmd0OyB2bW5pYyA9IHZtLm5pY3MuZ2V0KG5hbWU9JyonKQomZ3Q7Jmd0 OyZndDsmZ3Q7IHZtbmljLm5hbWUKJmd0OyAnbmljMScKJmd0OyZndDsmZ3Q7Jmd0OyBhcGkudm1z LmdldChuYW1lPSdWTU5hbWUnKS5uaWNzLmdldChuYW1lPScqJykKJmd0OyAnbmljMScKJmd0OyZn dDsmZ3Q7Jmd0OyB2bW5pYy5uYW1lPSduaWMyJwomZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmljLnVwZGF0 ZSgpCiZndDsmZ3Q7Jmd0OyZndDsgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykubmljcy5nZXQo bmFtZT0nKicpCiZndDsgJ25pYzInCiZndDsmZ3Q7Jmd0OyZndDsgdm1uaWMubmFtZQomZ3Q7ICdu aWMyJwomZ3Q7IAomZ3Q7Jmd0OyZndDsmZ3Q7IHZtZGlzayA9IHZtLmRpc2tzLmdldChuYW1lPScq JykKJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2submFtZQomZ3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEn CiZndDsmZ3Q7Jmd0OyZndDsgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5h bWU9JyonKQoKdGhpcyBraW5kIG9mIGNhbGwgaXMgbm90IGVmZmljaWVudCwgYnkgZmV0Y2hpbmcg dGhlIGRpc2sKeW91IGFsc28gZmV0Y2ggdGhlIHZtLAoKaSdkIHN1Z2dlc3QgZmV0Y2ggdm0sIHN0 b3JlIGl0IGluIGxvY2FsIHZhcmlhYmxlIGFuZCB0aGVuCnJldXNlIGl0IGZvciBhbnkgc3ViLWNv bGxlY3Rpb24gbWFuaXB1bGF0aW9ucy4KCgomZ3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsm Z3Q7Jmd0OyZndDsgdm1kaXNrLm5hbWU9J1ZNTmFtZV9EaXNrMScKJmd0OyZndDsmZ3Q7Jmd0OyB2 bWRpc2sudXBkYXRlKCkKJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2submFtZQomZ3Q7ICdWTU5hbWVf RGlzazEnCiZndDsmZ3Q7Jmd0OyZndDsgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3Mu Z2V0KG5hbWU9JyonKQomZ3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsgCiZndDsgU2VlPyBB bSBJIGhvbGRpbmcgaXQgd3Jvbmc/CgpkaXNrLm5hbWUgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVz ZSAnYWxpYXMnIGluc3RlYWQuCgomZ3Q7IAomZ3Q7IDMpIENyZWF0ZSBhIHNuYXBzaG90IGNhbGxl ZCAmcXVvdDtPcmlnaW4mcXVvdDssIHNvIGlmIGEgY3VzdG9tZXIgY2FsbHMgaW4gYW5kIHNheXMg dGhlecK0dmUgYm9ya2VkIGl0IGNvbXBsZXRlbHksIHdlwrRsbCBqdXN0IHJldmVydCB0byBpdMK0 cyAmcXVvdDtPcmlnaW4mcXVvdDsgYW5kIHRoZXnCtHJlIHVwIGFuZCBydW5uaW5nIGFnYWluOwom Z3Q7IE9LLCBmb3VuZCBhbm90aGVyIE9PVEIgZXhhbXBsZSwgdGhhbmsgeW91LgomZ3Q7IDQpIEFk ZCB0aGUgY3VzdG9tZXIgdG8gVk3CtHMgUGVybWlzc2lvbnMgd2l0aCBhbiBhcHByb3ByaWF0ZSBy b2xlOyBOb3QgT0suIEkgaGF2ZSBmb3VuZCBubyBleGFtcGxlcyBvbiBob3cgdG8gZG8gdGhpcyBh bmQganVzdCBkb27CtHQga25vdyB3aGVyZSB0byBzdGFydCBsb29raW5nLiBCVFcsCiZndDsgY3Jl YXRpbmcgYSBuZXcgVk0gd2l0aCBQeXRob24gcmVzdWx0cyBpbiBQZXJtaXNzaW9ucyBjb21wbGV0 ZWx5IGVtcHR5LCBubyBpbmhlcml0YW5jZSBlaXRoZXIuIERvbsK0dCBrbm93IGlmIHRoYXQgaXMg aW50ZW5kZWQuLi4KCmVsZW5hLCBpbGlhLAoKZ3V5cywgZG8geW91IGhhdmUgYW55IHBlcm1pc3Np b24gcmVsYXRlZCBjb2RlIHRvIHNoYXJlPwoKJmd0OyAKJmd0OyBjbGllbnQjIHJwbSAtcWEgfCBn cmVwIG92aXJ0CiZndDsgb3ZpcnQtZW5naW5lLWNsaS0zLjIuMC4xMS0xLmZjMTcubm9hcmNoCiZn dDsgb3ZpcnQtZW5naW5lLXNkay0zLjIuMC4xMC0xLmZjMTcubm9hcmNoCiZndDsgCiZndDsgZW5n aW5lIyBycG0gLXFhIHwgZ3JlcCBvdmlydAomZ3Q7IG92aXJ0LWVuZ2luZS1jb25maWctMy4xLjAt NC5mYzE3Lm5vYXJjaAomZ3Q7IG92aXJ0LWVuZ2luZS1kYnNjcmlwdHMtMy4xLjAtNC5mYzE3Lm5v YXJjaAomZ3Q7IG92aXJ0LWxvZy1jb2xsZWN0b3ItMy4xLjAtMC5naXQxMGQ3MTkuZmMxNy5ub2Fy Y2gKJmd0OyBvdmlydC1lbmdpbmUtcmVzdGFwaS0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsgb3Zp cnQtaW1hZ2UtdXBsb2FkZXItMy4xLjAtMC5naXQ5YzQyYzguZmMxNy5ub2FyY2gKJmd0OyBvdmly dC1lbmdpbmUtZ2VuZXJpY2FwaS0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtaXNvLXVw bG9hZGVyLTMuMS4wLTAuZ2l0MTg0MWQ5LmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtZW5naW5lLXdl YmFkbWluLXBvcnRhbC0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtZW5naW5lLXNldHVw LTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtc2RrLTMuMi4wLjItMS5mYzE3 Lm5vYXJjaAomZ3Q7IG92aXJ0LWVuZ2luZS1iYWNrZW5kLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0 OyBvdmlydC1lbmdpbmUtdG9vbHMtY29tbW9uLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyBvdmly dC1lbmdpbmUtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7IG92aXJ0LWVuZ2luZS11c2VycG9ydGFs LTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtbm90aWZpY2F0aW9uLXNlcnZp Y2UtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7IAomZ3Q7IC0tIAomZ3Q7IAomZ3Q7IEJlc3QgUmVn YXJkcwomZ3Q7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJmd0OyBLYXJsaSBTasO2YmVyZwomZ3Q7 IFN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXMKJmd0OyBCb3ggNzA3 OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpCiZndDsgUy03NTAgMDcgVXBwc2Fs YSwgU3dlZGVuCiZndDsgUGhvbmU6ICAmIzQzOzQ2LSgwKTE4LTY3IDE1IDY2CiZndDsgPGEgaHJl Zj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlIj5rYXJsaS5zam9iZXJnQHNsdS5zZTwvYT4g Jmx0OyA8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlIj5tYWlsdG86a2Fy bGkuc2pvYmVyZ0BhZG0uc2x1LnNlPC9hPiAmZ3Q7CiZndDsgCiZndDsgCiZndDsgCiZndDsgX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KJmd0OyBVc2VycyBt YWlsaW5nIGxpc3QKJmd0OyA8YSBocmVmPSJtYWlsdG86VXNlcnNAb3ZpcnQub3JnIj5Vc2Vyc0Bv dmlydC5vcmc8L2E+ICZndDsgPGEgaHJlZj0iaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3VzZXJzIj5odHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8v dXNlcnM8L2E+ICZndDsgCgoJLS0gCgpNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXIgCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gCkthcmxpIFNqw7ZiZXJnIApTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdy aWN1bHR1cmFsIFNjaWVuY2VzIApCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOk Z2VuIDgpIApTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4gClBob25lOiAmIzQzOzQ2LSgwKTE4LTY3 IDE1IDY2IAo8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2UiPmthcmxpLnNqb2Jl cmdAc2x1LnNlPC9hPgo8L3ByZT4NCjwvYmxvY2txdW90ZT4NCjxicj4NCjx0YWJsZSBjZWxsc3Bh Y2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4NCjx0Ym9keT4NCjx0cj4NCjx0 ZD4tLSA8YnI+DQo8YnI+DQpNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXI8YnI+DQotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tPGJyPg0KS2FybGkgU2rDtmJlcmc8YnI+DQpTd2VkaXNoIFVuaXZlcnNpdHkg b2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzPGJyPg0KQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJlc3Mg S3JvbsOlc3bDpGdlbiA4KTxicj4NClMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbjxicj4NClBob25l OiAmbmJzcDsmIzQzOzQ2LSgwKTE4LTY3IDE1IDY2PGJyPg0KPGEgaHJlZj0ibWFpbHRvOmthcmxp LnNqb2JlcmdAYWRtLnNsdS5zZSI+a2FybGkuc2pvYmVyZ0BzbHUuc2U8L2E+IDwvdGQ+DQo8L3Ry Pg0KPC90Ym9keT4NCjwvdGFibGU+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_5F9E965F5A80BC468BE5F40576769F092E65167Aexchange21_--

Karli, On 06/04/2013 04:05 PM, Karli Sjöberg wrote:
Hello everyone!
I´m almost done with Python for now. But the last thing I sitll can´t seem to get any hang on is how to change the name of a VM´s disk:
please use disk.alias property, name is deprecated and for backward compatibility only.
from ovirtsdk.api import API from ovirtsdk.xml import params api = API(url='https://${OVIRT}:443 <https://storm.slu.se:443>', ca_file='/etc/pki/ovirt-engine/ca.pem', username='admin@internal <mailto:'admin@internal>', password='letmein!') VM_NAME = 'FedoraTest' DISK_NAME = '%s_Disk1' % (VM_NAME) vm = api.vms.get(VM_NAME) vmdisk = vm.disks.list()[0] vmdisk.alias = 'foobar' vmdisk.name = 'foobar' vmdisk.update() <ovirtsdk.infrastructure.brokers.VMDisk object at 0x25d7ad0>
But the name/alias/whatev never changes...
Could you please give me an exact, and working example of how to change the name of a VM´s disk. This is the last simple thing I would like to accomplish before sharing a little something back with y´all(teaser, teaser).
/Karli
sön 2013-05-26 klockan 02:48 -0400 skrev Ilia Meerovich:
Hi,
Lets follow http://www.ovirt.org/Python-sdk
In [1]: from ovirtsdk.xml import params
In [2]: from ovirtsdk.api import API
In [3]:
In [4]: api = API(***, ***, ***)
In [5]: user_name = "***"
In [6]: domain = "***.***.***.redhat.com"
In [7]: user_domain = params.Domain(name=domain)
In [8]: user_name = "{0}@{1}".format(user_name, domain) # creating user In [9]: new_user = params.User(domain=user_domain, user_name=user_name) # adding user to users resource In [10]: user = api.users.add(new_user) # adding role to user In [11]: user.roles.add(api.roles.get('UserRole')) Out[11]: <ovirtsdk.infrastructure.brokers.UserRole object at 0x30c7590>
Thanks Ilia
----- Original Message ----- From: "Karli Sjöberg" <Karli.Sjoberg@slu.se <mailto:Karli.Sjoberg@slu.se>> To: "Ilia Meerovich" <imeerovi@redhat.com <mailto:imeerovi@redhat.com>> Cc: "Michael Pasternak" <mpastern@redhat.com <mailto:mpastern@redhat.com>>, "users" <users@ovirt.org <mailto:users@ovirt.org>>, "Elena Dolinin" <edolinin@redhat.com <mailto:edolinin@redhat.com>> Sent: Friday, May 24, 2013 8:04:43 AM Subject: Re: [Users] Problems using the PythonSDK
tor 2013-05-23 klockan 08:53 -0400 skrev Ilia Meerovich:
It should be like:
from ovirtsdk.xml import params from ovirtsdk.api import API
api = API('*', '*', '*') vm = api.vms.list()[0] user = api.users.list()[1] role = api.roles.list()[1] permit = params.Permission() permit.set_role(role) permit.set_vm(vm) user.permissions.add(permit) Thank you very much, I´m going to test this out today! Could you also show me how to first add a user that isn´t in the system yet, please?
----- Original Message ----- From: "Ilia Meerovich" < imeerovi@redhat.com <mailto:imeerovi@redhat.com> > To: "Michael Pasternak" < mpastern@redhat.com <mailto:mpastern@redhat.com> > Cc: "users" < users@ovirt.org <mailto:users@ovirt.org> >, "Karli Sjöberg" < Karli.Sjoberg@slu.se <mailto:Karli.Sjoberg@slu.se> >, "Elena Dolinin" < edolinin@redhat.com <mailto:edolinin@redhat.com> > Sent: Thursday, May 23, 2013 3:30:27 PM Subject: Re: [Users] Problems using the PythonSDK
Hi,
We have several tests like: "Add VM permission to user", that are using ART's art/rhevm_api/tests_lib/low_level/mla.py addPermitsToUser function. This is generic function but it shouldn't be hard to prepare SDK code with the same functionality.
Thanks Ilia
----- Original Message ----- From: "Michael Pasternak" < mpastern@redhat.com <mailto:mpastern@redhat.com> > To: "Karli Sjöberg" < Karli.Sjoberg@slu.se <mailto:Karli.Sjoberg@slu.se> >, "Elena Dolinin" < edolinin@redhat.com <mailto:edolinin@redhat.com> >, "Ilia Meerovich" < imeerovi@redhat.com <mailto:imeerovi@redhat.com> > Cc: "users" < users@ovirt.org <mailto:users@ovirt.org> > Sent: Thursday, May 23, 2013 3:10:21 PM Subject: Re: [Users] Problems using the PythonSDK
Hi Karli,
On 05/23/2013 12:35 PM, Karli Sjöberg wrote:
Hi!
We´re in the process of building an orderportal where our customers will be able to log in, select a virtual machine template, type in a desired hostname and it will be automatically created, and they recieve a mail explaining what they´ve gotten themselves into:). For this I figured the PythonSDK would be the best choice but I´m having trouble using it. What we´ve done so far is:
1) Create a new VM from a template; OK. I found an example and it worked OOTB 2) Rename the new VM´s disk from ${TemplateName}_Disk1 to ${VMName}_Disk1; Not OK. I found an example of how to change the name of a VMNic and that works, but using the same method to change VMDisk´s name does not (FYI, the VM only has one VNic and VDisk):
from ovirtsdk.xml import params from ovirtsdk.api import API api = API(url=' https:// ${ENGINE}:443/api', < https://storm.slu.se:443/api' ,> ca_file='${CACERT}', username='admin@internal < mailto:'admin@internal >', password='letmein!') vm = api.vms.get(name='VMName')
vmnic = vm.nics.get(name='*') vmnic.name 'nic1' api.vms.get(name='VMName').nics.get(name='*') 'nic1' vmnic.name='nic2' vmnic.update() api.vms.get(name='VMName').nics.get(name='*') 'nic2' vmnic.name 'nic2'
vmdisk = vm.disks.get(name='*') vmdisk.name 'TemplateName_Disk1' api.vms.get(name='VMName').disks.get(name='*')
this kind of call is not efficient, by fetching the disk you also fetch the vm,
i'd suggest fetch vm, store it in local variable and then reuse it for any sub-collection manipulations.
'TemplateName_Disk1'
vmdisk.name='VMName_Disk1' vmdisk.update() vmdisk.name 'VMName_Disk1' api.vms.get(name='VMName').disks.get(name='*') 'TemplateName_Disk1'
See? Am I holding it wrong?
disk.name is deprecated, please use 'alias' instead.
3) Create a snapshot called "Origin", so if a customer calls in and says they´ve borked it completely, we´ll just revert to it´s "Origin" and they´re up and running again; OK, found another OOTB example, thank you. 4) Add the customer to VM´s Permissions with an appropriate role; Not OK. I have found no examples on how to do this and just don´t know where to start looking. BTW, creating a new VM with Python results in Permissions completely empty, no inheritance either. Don´t know if that is intended...
elena, ilia,
guys, do you have any permission related code to share?
client# rpm -qa | grep ovirt ovirt-engine-cli-3.2.0.11-1.fc17.noarch ovirt-engine-sdk-3.2.0.10-1.fc17.noarch
engine# rpm -qa | grep ovirt ovirt-engine-config-3.1.0-4.fc17.noarch ovirt-engine-dbscripts-3.1.0-4.fc17.noarch ovirt-log-collector-3.1.0-0.git10d719.fc17.noarch ovirt-engine-restapi-3.1.0-4.fc17.noarch ovirt-image-uploader-3.1.0-0.git9c42c8.fc17.noarch ovirt-engine-genericapi-3.1.0-4.fc17.noarch ovirt-iso-uploader-3.1.0-0.git1841d9.fc17.noarch ovirt-engine-webadmin-portal-3.1.0-4.fc17.noarch ovirt-engine-setup-3.1.0-4.fc17.noarch ovirt-engine-sdk-3.2.0.2-1.fc17.noarch ovirt-engine-backend-3.1.0-4.fc17.noarch ovirt-engine-tools-common-3.1.0-4.fc17.noarch ovirt-engine-3.1.0-4.fc17.noarch ovirt-engine-userportal-3.1.0-4.fc17.noarch ovirt-engine-notification-service-3.1.0-4.fc17.noarch
--
Best Regards ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@slu.se> < mailto:karli.sjoberg@adm.slu.se >
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> > http://lists.ovirt.org/mailman/listinfo/users >
--
Med Vänliga Hälsningar ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@slu.se>
--
Med Vänliga Hälsningar ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@adm.slu.se>
-- Michael Pasternak RedHat, ENG-Virtualization R&D

--_000_5F9E965F5A80BC468BE5F40576769F092E656A5Dexchange21_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 dGlzIDIwMTMtMDYtMDQga2xvY2thbiAxNjozMiArMDMwMCBza3JldiBNaWNoYWVsIFBhc3Rlcm5h azoNCg0KDQpLYXJsaSwNCg0KT24gMDYvMDQvMjAxMyAwNDowNSBQTSwgS2FybGkgU2rDtmJlcmcg d3JvdGU6DQo+IEhlbGxvIGV2ZXJ5b25lIQ0KPg0KPiBJwrRtIGFsbW9zdCBkb25lIHdpdGggUHl0 aG9uIGZvciBub3cuIEJ1dCB0aGUgbGFzdCB0aGluZyBJIHNpdGxsIGNhbsK0dCBzZWVtIHRvIGdl dCBhbnkgaGFuZyBvbiBpcyBob3cgdG8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgVk3CtHMgZGlzazoN Cg0KcGxlYXNlIHVzZSBkaXNrLmFsaWFzIHByb3BlcnR5LCBuYW1lIGlzIGRlcHJlY2F0ZWQgYW5k IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IG9ubHkuDQoNCg0KSXQgZG9lc27CtHQgbWF0dGVy IHdoYXQgcHJvcGVydHkgSSB1c2UsIHRoZSBuYW1lIGRvZXNuwrR0IGNoYW5nZSBhbnkgd2F5ISBQ bGVhc2UgcmVhZCBiZWxvdywgeW91wrRsbCBzZWUgSSBldmVuIHRyaWVkIGRlZmluaW5nIC5hbGlh cyBhbmQgLm5hbWUgYXQgdGhlIHNhbWUgdGltZSwgdGhlbiB1cGRhdGUsIGJ1dCBzdGlsbCBubyBj aGFuZ2UuIENvdWxkIHlvdSBwbGVhc2UgcG9zdCB0aGUgY29ycmVjdCwgYW5kIHdvcmtpbmcgd2F5 IG9mIGRvaW5nIHRoaXMsIHBsZWFzZS4NCg0KDQoNCg0KPg0KPj4+PiBmcm9tIG92aXJ0c2RrLmFw aSBpbXBvcnQgQVBJDQo+Pj4+IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXMNCj4+Pj4g YXBpID0gQVBJKHVybD0naHR0cHM6Ly8ke09WSVJUfTo0NDMgPGh0dHBzOi8vc3Rvcm0uc2x1LnNl OjQ0Mz4nLCBjYV9maWxlPScvZXRjL3BraS9vdmlydC1lbmdpbmUvY2EucGVtJywgdXNlcm5hbWU9 J2FkbWluQGludGVybmFsIDxtYWlsdG86J2FkbWluQGludGVybmFsPicsDQo+IHBhc3N3b3JkPSds ZXRtZWluIScpDQo+Pj4+IFZNX05BTUUgPSAnRmVkb3JhVGVzdCcNCj4+Pj4gRElTS19OQU1FID0g JyVzX0Rpc2sxJyAlIChWTV9OQU1FKQ0KPj4+PiB2bSA9IGFwaS52bXMuZ2V0KFZNX05BTUUpDQo+ Pj4+IHZtZGlzayA9IHZtLmRpc2tzLmxpc3QoKVswXQ0KPj4+PiB2bWRpc2suYWxpYXMgPSAnZm9v YmFyJw0KPj4+PiB2bWRpc2submFtZSA9ICdmb29iYXInDQo+Pj4+IHZtZGlzay51cGRhdGUoKQ0K PiA8b3ZpcnRzZGsuaW5mcmFzdHJ1Y3R1cmUuYnJva2Vycy5WTURpc2sgb2JqZWN0IGF0IDB4MjVk N2FkMD4NCj4NCj4gQnV0IHRoZSBuYW1lL2FsaWFzL3doYXRldiBuZXZlciBjaGFuZ2VzLi4uDQo+ DQo+IENvdWxkIHlvdSBwbGVhc2UgZ2l2ZSBtZSBhbiBleGFjdCwgYW5kIHdvcmtpbmcgZXhhbXBs ZSBvZiBob3cgdG8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgVk3CtHMgZGlzay4gVGhpcyBpcyB0aGUg bGFzdCBzaW1wbGUgdGhpbmcgSSB3b3VsZCBsaWtlIHRvIGFjY29tcGxpc2ggYmVmb3JlIHNoYXJp bmcgYQ0KPiBsaXR0bGUgc29tZXRoaW5nIGJhY2sgd2l0aCB5wrRhbGwodGVhc2VyLCB0ZWFzZXIp Lg0KPg0KPiAvS2FybGkNCj4NCj4gc8O2biAyMDEzLTA1LTI2IGtsb2NrYW4gMDI6NDggLTA0MDAg c2tyZXYgSWxpYSBNZWVyb3ZpY2g6DQo+PiBIaSwNCj4+DQo+PiBMZXRzIGZvbGxvdyBodHRwOi8v d3d3Lm92aXJ0Lm9yZy9QeXRob24tc2RrDQo+Pg0KPj4gSW4gWzFdOiBmcm9tIG92aXJ0c2RrLnht bCBpbXBvcnQgcGFyYW1zDQo+Pg0KPj4gSW4gWzJdOiBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQg QVBJDQo+Pg0KPj4gSW4gWzNdOg0KPj4NCj4+IEluIFs0XTogYXBpID0gQVBJKCoqKiwgKioqLCAq KiopDQo+Pg0KPj4gSW4gWzVdOiB1c2VyX25hbWUgPSAiKioqIg0KPj4NCj4+IEluIFs2XTogZG9t YWluID0gIioqKi4qKiouKioqLnJlZGhhdC5jb20iDQo+Pg0KPj4gSW4gWzddOiB1c2VyX2RvbWFp biA9IHBhcmFtcy5Eb21haW4obmFtZT1kb21haW4pDQo+Pg0KPj4gSW4gWzhdOiB1c2VyX25hbWUg PSAiezB9QHsxfSIuZm9ybWF0KHVzZXJfbmFtZSwgZG9tYWluKQ0KPj4gIyBjcmVhdGluZyB1c2Vy DQo+PiBJbiBbOV06IG5ld191c2VyID0gcGFyYW1zLlVzZXIoZG9tYWluPXVzZXJfZG9tYWluLCB1 c2VyX25hbWU9dXNlcl9uYW1lKQ0KPj4gIyBhZGRpbmcgdXNlciB0byB1c2VycyByZXNvdXJjZQ0K Pj4gSW4gWzEwXTogdXNlciA9IGFwaS51c2Vycy5hZGQobmV3X3VzZXIpDQo+PiAjIGFkZGluZyBy b2xlIHRvIHVzZXINCj4+IEluIFsxMV06IHVzZXIucm9sZXMuYWRkKGFwaS5yb2xlcy5nZXQoJ1Vz ZXJSb2xlJykpDQo+PiBPdXRbMTFdOiA8b3ZpcnRzZGsuaW5mcmFzdHJ1Y3R1cmUuYnJva2Vycy5V c2VyUm9sZSBvYmplY3QgYXQgMHgzMGM3NTkwPg0KPj4NCj4+IFRoYW5rcw0KPj4gSWxpYQ0KPj4N Cj4+IC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0NCj4+IEZyb206ICJLYXJsaSBTasO2YmVy ZyIgPEthcmxpLlNqb2JlcmdAc2x1LnNlPG1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZT4gPG1h aWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZT4+DQo+PiBUbzogIklsaWEgTWVlcm92aWNoIiA8aW1l ZXJvdmlAcmVkaGF0LmNvbTxtYWlsdG86aW1lZXJvdmlAcmVkaGF0LmNvbT4gPG1haWx0bzppbWVl cm92aUByZWRoYXQuY29tPj4NCj4+IENjOiAiTWljaGFlbCBQYXN0ZXJuYWsiIDxtcGFzdGVybkBy ZWRoYXQuY29tPG1haWx0bzptcGFzdGVybkByZWRoYXQuY29tPiA8bWFpbHRvOm1wYXN0ZXJuQHJl ZGhhdC5jb20+PiwgInVzZXJzIiA8dXNlcnNAb3ZpcnQub3JnPG1haWx0bzp1c2Vyc0BvdmlydC5v cmc+IDxtYWlsdG86dXNlcnNAb3ZpcnQub3JnPj4sICJFbGVuYSBEb2xpbmluIiA8ZWRvbGluaW5A cmVkaGF0LmNvbTxtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbT4gPG1haWx0bzplZG9saW5pbkBy ZWRoYXQuY29tPj4NCj4+IFNlbnQ6IEZyaWRheSwgTWF5IDI0LCAyMDEzIDg6MDQ6NDMgQU0NCj4+ IFN1YmplY3Q6IFJlOiBbVXNlcnNdIFByb2JsZW1zIHVzaW5nIHRoZSBQeXRob25TREsNCj4+DQo+ PiB0b3IgMjAxMy0wNS0yMyBrbG9ja2FuIDA4OjUzIC0wNDAwIHNrcmV2IElsaWEgTWVlcm92aWNo Og0KPj4NCj4+IEl0IHNob3VsZCBiZSBsaWtlOg0KPj4NCj4+IGZyb20gb3ZpcnRzZGsueG1sIGlt cG9ydCBwYXJhbXMNCj4+IGZyb20gb3ZpcnRzZGsuYXBpIGltcG9ydCBBUEkNCj4+DQo+PiBhcGkg PSBBUEkoJyonLCAnKicsICcqJykNCj4+IHZtID0gYXBpLnZtcy5saXN0KClbMF0NCj4+IHVzZXIg PSAgYXBpLnVzZXJzLmxpc3QoKVsxXQ0KPj4gcm9sZSA9IGFwaS5yb2xlcy5saXN0KClbMV0NCj4+ IHBlcm1pdCA9IHBhcmFtcy5QZXJtaXNzaW9uKCkNCj4+IHBlcm1pdC5zZXRfcm9sZShyb2xlKQ0K Pj4gcGVybWl0LnNldF92bSh2bSkNCj4+IHVzZXIucGVybWlzc2lvbnMuYWRkKHBlcm1pdCkNCj4+ IFRoYW5rIHlvdSB2ZXJ5IG11Y2gsIEnCtG0gZ29pbmcgdG8gdGVzdCB0aGlzIG91dCB0b2RheSEg Q291bGQgeW91IGFsc28gc2hvdyBtZSBob3cgdG8gZmlyc3QgYWRkIGEgdXNlciB0aGF0IGlzbsK0 dCBpbiB0aGUgc3lzdGVtIHlldCwgcGxlYXNlPw0KPj4NCj4+DQo+Pg0KPj4gLS0tLS0gT3JpZ2lu YWwgTWVzc2FnZSAtLS0tLQ0KPj4gRnJvbTogIklsaWEgTWVlcm92aWNoIiA8IGltZWVyb3ZpQHJl ZGhhdC5jb208bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20+IDxtYWlsdG86aW1lZXJvdmlAcmVk aGF0LmNvbT4gPg0KPj4gVG86ICJNaWNoYWVsIFBhc3Rlcm5hayIgPCBtcGFzdGVybkByZWRoYXQu Y29tPG1haWx0bzptcGFzdGVybkByZWRoYXQuY29tPiA8bWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5j b20+ID4NCj4+IENjOiAidXNlcnMiIDwgdXNlcnNAb3ZpcnQub3JnPG1haWx0bzp1c2Vyc0Bvdmly dC5vcmc+IDxtYWlsdG86dXNlcnNAb3ZpcnQub3JnPiA+LCAiS2FybGkgU2rDtmJlcmciIDwgS2Fy bGkuU2pvYmVyZ0BzbHUuc2U8bWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlPiA8bWFpbHRvOkth cmxpLlNqb2JlcmdAc2x1LnNlPiA+LCAiRWxlbmEgRG9saW5pbiIgPCBlZG9saW5pbkByZWRoYXQu Y29tPG1haWx0bzplZG9saW5pbkByZWRoYXQuY29tPiA8bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5j b20+ID4NCj4+IFNlbnQ6IFRodXJzZGF5LCBNYXkgMjMsIDIwMTMgMzozMDoyNyBQTQ0KPj4gU3Vi amVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhvblNESw0KPj4NCj4+IEhp LA0KPj4NCj4+IFdlIGhhdmUgc2V2ZXJhbCB0ZXN0cyBsaWtlOg0KPj4gIkFkZCBWTSBwZXJtaXNz aW9uIHRvIHVzZXIiLCB0aGF0IGFyZSB1c2luZyBBUlQncyBhcnQvcmhldm1fYXBpL3Rlc3RzX2xp Yi9sb3dfbGV2ZWwvbWxhLnB5IGFkZFBlcm1pdHNUb1VzZXIgZnVuY3Rpb24uDQo+PiBUaGlzIGlz IGdlbmVyaWMgZnVuY3Rpb24gYnV0IGl0IHNob3VsZG4ndCBiZSBoYXJkIHRvIHByZXBhcmUgU0RL IGNvZGUgd2l0aCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5Lg0KPj4NCj4+IFRoYW5rcw0KPj4gSWxp YQ0KPj4NCj4+IC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0NCj4+IEZyb206ICJNaWNoYWVs IFBhc3Rlcm5hayIgPCBtcGFzdGVybkByZWRoYXQuY29tPG1haWx0bzptcGFzdGVybkByZWRoYXQu Y29tPiA8bWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20+ID4NCj4+IFRvOiAiS2FybGkgU2rDtmJl cmciIDwgS2FybGkuU2pvYmVyZ0BzbHUuc2U8bWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlPiA8 bWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlPiA+LCAiRWxlbmEgRG9saW5pbiIgPCBlZG9saW5p bkByZWRoYXQuY29tPG1haWx0bzplZG9saW5pbkByZWRoYXQuY29tPiA8bWFpbHRvOmVkb2xpbmlu QHJlZGhhdC5jb20+ID4sICJJbGlhIE1lZXJvdmljaCIgPCBpbWVlcm92aUByZWRoYXQuY29tPG1h aWx0bzppbWVlcm92aUByZWRoYXQuY29tPiA8bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20+ID4N Cj4+IENjOiAidXNlcnMiIDwgdXNlcnNAb3ZpcnQub3JnPG1haWx0bzp1c2Vyc0BvdmlydC5vcmc+ IDxtYWlsdG86dXNlcnNAb3ZpcnQub3JnPiA+DQo+PiBTZW50OiBUaHVyc2RheSwgTWF5IDIzLCAy MDEzIDM6MTA6MjEgUE0NCj4+IFN1YmplY3Q6IFJlOiBbVXNlcnNdIFByb2JsZW1zIHVzaW5nIHRo ZSBQeXRob25TREsNCj4+DQo+Pg0KPj4gSGkgS2FybGksDQo+Pg0KPj4gT24gMDUvMjMvMjAxMyAx MjozNSBQTSwgS2FybGkgU2rDtmJlcmcgd3JvdGU6DQo+PiA+IEhpIQ0KPj4gPg0KPj4gPiBXZcK0 cmUgaW4gdGhlIHByb2Nlc3Mgb2YgYnVpbGRpbmcgYW4gb3JkZXJwb3J0YWwgd2hlcmUgb3VyIGN1 c3RvbWVycyB3aWxsIGJlIGFibGUgdG8gbG9nIGluLCBzZWxlY3QgYSB2aXJ0dWFsIG1hY2hpbmUg dGVtcGxhdGUsIHR5cGUgaW4gYSBkZXNpcmVkIGhvc3RuYW1lIGFuZCBpdCB3aWxsIGJlDQo+PiA+ IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCwgYW5kIHRoZXkgcmVjaWV2ZSBhIG1haWwgZXhwbGFpbmlu ZyB3aGF0IHRoZXnCtHZlIGdvdHRlbiB0aGVtc2VsdmVzIGludG86KS4gRm9yIHRoaXMgSSBmaWd1 cmVkIHRoZSBQeXRob25TREsgd291bGQgYmUgdGhlIGJlc3QgY2hvaWNlIGJ1dCBJwrRtIGhhdmlu Zw0KPj4gPiB0cm91YmxlIHVzaW5nIGl0LiBXaGF0IHdlwrR2ZSBkb25lIHNvIGZhciBpczoNCj4+ ID4NCj4+ID4gMSkgQ3JlYXRlIGEgbmV3IFZNIGZyb20gYSB0ZW1wbGF0ZTsgT0suIEkgZm91bmQg YW4gZXhhbXBsZSBhbmQgaXQgd29ya2VkIE9PVEINCj4+ID4gMikgUmVuYW1lIHRoZSBuZXcgVk3C tHMgZGlzayBmcm9tICR7VGVtcGxhdGVOYW1lfV9EaXNrMSB0byAke1ZNTmFtZX1fRGlzazE7IE5v dCBPSy4gSSBmb3VuZCBhbiBleGFtcGxlIG9mIGhvdyB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBW TU5pYyBhbmQgdGhhdCB3b3JrcywgYnV0IHVzaW5nIHRoZQ0KPj4gPiBzYW1lIG1ldGhvZCB0byBj aGFuZ2UgVk1EaXNrwrRzIG5hbWUgZG9lcyBub3QgKEZZSSwgdGhlIFZNIG9ubHkgaGFzIG9uZSBW TmljIGFuZCBWRGlzayk6DQo+PiA+Pj4+IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXMN Cj4+ID4+Pj4gZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQ0KPj4gPj4+PiBhcGkgPSBBUEko dXJsPScgaHR0cHM6Ly8gJHtFTkdJTkV9OjQ0My9hcGknLCA8IGh0dHBzOi8vc3Rvcm0uc2x1LnNl OjQ0My9hcGknICw+IGNhX2ZpbGU9JyR7Q0FDRVJUfScsIHVzZXJuYW1lPSdhZG1pbkBpbnRlcm5h bCA8IG1haWx0bzonYWRtaW5AaW50ZXJuYWwgPicsIHBhc3N3b3JkPSdsZXRtZWluIScpDQo+PiA+ Pj4+IHZtID0gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykNCj4+ID4NCj4+ID4+Pj4gdm1uaWMg PSB2bS5uaWNzLmdldChuYW1lPScqJykNCj4+ID4+Pj4gdm1uaWMubmFtZQ0KPj4gPiAnbmljMScN Cj4+ID4+Pj4gYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpDQo+ PiA+ICduaWMxJw0KPj4gPj4+PiB2bW5pYy5uYW1lPSduaWMyJw0KPj4gPj4+PiB2bW5pYy51cGRh dGUoKQ0KPj4gPj4+PiBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5uaWNzLmdldChuYW1lPScq JykNCj4+ID4gJ25pYzInDQo+PiA+Pj4+IHZtbmljLm5hbWUNCj4+ID4gJ25pYzInDQo+PiA+DQo+ PiA+Pj4+IHZtZGlzayA9IHZtLmRpc2tzLmdldChuYW1lPScqJykNCj4+ID4+Pj4gdm1kaXNrLm5h bWUNCj4+ID4gJ1RlbXBsYXRlTmFtZV9EaXNrMScNCj4+ID4+Pj4gYXBpLnZtcy5nZXQobmFtZT0n Vk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQ0KPj4NCj4+IHRoaXMga2luZCBvZiBjYWxsIGlz IG5vdCBlZmZpY2llbnQsIGJ5IGZldGNoaW5nIHRoZSBkaXNrDQo+PiB5b3UgYWxzbyBmZXRjaCB0 aGUgdm0sDQo+Pg0KPj4gaSdkIHN1Z2dlc3QgZmV0Y2ggdm0sIHN0b3JlIGl0IGluIGxvY2FsIHZh cmlhYmxlIGFuZCB0aGVuDQo+PiByZXVzZSBpdCBmb3IgYW55IHN1Yi1jb2xsZWN0aW9uIG1hbmlw dWxhdGlvbnMuDQo+Pg0KPj4NCj4+ID4gJ1RlbXBsYXRlTmFtZV9EaXNrMScNCj4+ID4+Pj4gdm1k aXNrLm5hbWU9J1ZNTmFtZV9EaXNrMScNCj4+ID4+Pj4gdm1kaXNrLnVwZGF0ZSgpDQo+PiA+Pj4+ IHZtZGlzay5uYW1lDQo+PiA+ICdWTU5hbWVfRGlzazEnDQo+PiA+Pj4+IGFwaS52bXMuZ2V0KG5h bWU9J1ZNTmFtZScpLmRpc2tzLmdldChuYW1lPScqJykNCj4+ID4gJ1RlbXBsYXRlTmFtZV9EaXNr MScNCj4+ID4NCj4+ID4gU2VlPyBBbSBJIGhvbGRpbmcgaXQgd3Jvbmc/DQo+Pg0KPj4gZGlzay5u YW1lIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgJ2FsaWFzJyBpbnN0ZWFkLg0KPj4NCj4+ID4N Cj4+ID4gMykgQ3JlYXRlIGEgc25hcHNob3QgY2FsbGVkICJPcmlnaW4iLCBzbyBpZiBhIGN1c3Rv bWVyIGNhbGxzIGluIGFuZCBzYXlzIHRoZXnCtHZlIGJvcmtlZCBpdCBjb21wbGV0ZWx5LCB3ZcK0 bGwganVzdCByZXZlcnQgdG8gaXTCtHMgIk9yaWdpbiIgYW5kIHRoZXnCtHJlIHVwIGFuZCBydW5u aW5nIGFnYWluOw0KPj4gPiBPSywgZm91bmQgYW5vdGhlciBPT1RCIGV4YW1wbGUsIHRoYW5rIHlv dS4NCj4+ID4gNCkgQWRkIHRoZSBjdXN0b21lciB0byBWTcK0cyBQZXJtaXNzaW9ucyB3aXRoIGFu IGFwcHJvcHJpYXRlIHJvbGU7IE5vdCBPSy4gSSBoYXZlIGZvdW5kIG5vIGV4YW1wbGVzIG9uIGhv dyB0byBkbyB0aGlzIGFuZCBqdXN0IGRvbsK0dCBrbm93IHdoZXJlIHRvIHN0YXJ0IGxvb2tpbmcu IEJUVywNCj4+ID4gY3JlYXRpbmcgYSBuZXcgVk0gd2l0aCBQeXRob24gcmVzdWx0cyBpbiBQZXJt aXNzaW9ucyBjb21wbGV0ZWx5IGVtcHR5LCBubyBpbmhlcml0YW5jZSBlaXRoZXIuIERvbsK0dCBr bm93IGlmIHRoYXQgaXMgaW50ZW5kZWQuLi4NCj4+DQo+PiBlbGVuYSwgaWxpYSwNCj4+DQo+PiBn dXlzLCBkbyB5b3UgaGF2ZSBhbnkgcGVybWlzc2lvbiByZWxhdGVkIGNvZGUgdG8gc2hhcmU/DQo+ Pg0KPj4gPg0KPj4gPiBjbGllbnQjIHJwbSAtcWEgfCBncmVwIG92aXJ0DQo+PiA+IG92aXJ0LWVu Z2luZS1jbGktMy4yLjAuMTEtMS5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1lbmdpbmUtc2RrLTMu Mi4wLjEwLTEuZmMxNy5ub2FyY2gNCj4+ID4NCj4+ID4gZW5naW5lIyBycG0gLXFhIHwgZ3JlcCBv dmlydA0KPj4gPiBvdmlydC1lbmdpbmUtY29uZmlnLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4g b3ZpcnQtZW5naW5lLWRic2NyaXB0cy0zLjEuMC00LmZjMTcubm9hcmNoDQo+PiA+IG92aXJ0LWxv Zy1jb2xsZWN0b3ItMy4xLjAtMC5naXQxMGQ3MTkuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5n aW5lLXJlc3RhcGktMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1pbWFnZS11cGxvYWRl ci0zLjEuMC0wLmdpdDljNDJjOC5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1lbmdpbmUtZ2VuZXJp Y2FwaS0zLjEuMC00LmZjMTcubm9hcmNoDQo+PiA+IG92aXJ0LWlzby11cGxvYWRlci0zLjEuMC0w LmdpdDE4NDFkOS5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1lbmdpbmUtd2ViYWRtaW4tcG9ydGFs LTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLXNldHVwLTMuMS4wLTQuZmMx Ny5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLXNkay0zLjIuMC4yLTEuZmMxNy5ub2FyY2gNCj4+ ID4gb3ZpcnQtZW5naW5lLWJhY2tlbmQtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1l bmdpbmUtdG9vbHMtY29tbW9uLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5l LTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ID4gb3ZpcnQtZW5naW5lLXVzZXJwb3J0YWwtMy4xLjAt NC5mYzE3Lm5vYXJjaA0KPj4gPiBvdmlydC1lbmdpbmUtbm90aWZpY2F0aW9uLXNlcnZpY2UtMy4x LjAtNC5mYzE3Lm5vYXJjaA0KPj4gPg0KPj4gPiAtLQ0KPj4gPg0KPj4gPiBCZXN0IFJlZ2FyZHMN Cj4+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gPiBLYXJsaSBTasO2YmVyZw0KPj4gPiBT d2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzDQo+PiA+IEJveCA3MDc5 IChWaXNpdGluZyBBZGRyZXNzIEtyb27DpXN2w6RnZW4gOCkNCj4+ID4gUy03NTAgMDcgVXBwc2Fs YSwgU3dlZGVuDQo+PiA+IFBob25lOiAgKzQ2LSgwKTE4LTY3IDE1IDY2DQo+PiA+IGthcmxpLnNq b2JlcmdAc2x1LnNlPG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZT4gPG1haWx0bzprYXJsaS5z am9iZXJnQHNsdS5zZT4gPCBtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlID4NCj4+ID4N Cj4+ID4NCj4+ID4NCj4+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18NCj4+ID4gVXNlcnMgbWFpbGluZyBsaXN0DQo+PiA+IFVzZXJzQG92aXJ0Lm9yZzxt YWlsdG86VXNlcnNAb3ZpcnQub3JnPiA8bWFpbHRvOlVzZXJzQG92aXJ0Lm9yZz4gPiBodHRwOi8v bGlzdHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnMgPg0KPj4NCj4+ICAgICAgLS0N Cj4+DQo+PiBNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXINCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4+IEthcmxpIFNqw7ZiZXJnDQo+PiBTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1 cmFsIFNjaWVuY2VzDQo+PiBCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2Vu IDgpDQo+PiBTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4NCj4+IFBob25lOiArNDYtKDApMTgtNjcg MTUgNjYNCj4+IGthcmxpLnNqb2JlcmdAc2x1LnNlPG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5z ZT4gPG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZT4NCj4NCj4gLS0NCj4NCj4gTWVkIFbDpG5s aWdhIEjDpGxzbmluZ2FyDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gS2FybGkgU2rDtmJl cmcNCj4gU3dlZGlzaCBVbml2ZXJzaXR5IG9mIEFncmljdWx0dXJhbCBTY2llbmNlcw0KPiBCb3gg NzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpDQo+IFMtNzUwIDA3IFVwcHNh bGEsIFN3ZWRlbg0KPiBQaG9uZTogICs0Ni0oMCkxOC02NyAxNSA2Ng0KPiBrYXJsaS5zam9iZXJn QHNsdS5zZTxtYWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2U+IDxtYWlsdG86a2FybGkuc2pvYmVy Z0BhZG0uc2x1LnNlPg0KPg0KDQoNCg0KDQotLQ0KDQpNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXIN Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkthcmxpIFNqw7ZiZXJnDQpTd2VkaXNoIFVuaXZlcnNp dHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzDQpCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBL cm9uw6VzdsOkZ2VuIDgpDQpTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4NClBob25lOiAgKzQ2LSgw KTE4LTY3IDE1IDY2DQprYXJsaS5zam9iZXJnQHNsdS5zZTxtYWlsdG86a2FybGkuc2pvYmVyZ0Bh ZG0uc2x1LnNlPg0K --_000_5F9E965F5A80BC468BE5F40576769F092E656A5Dexchange21_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwv L0VOIj4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQo8bWV0YSBuYW1lPSJHRU5FUkFUT1Ii IGNvbnRlbnQ9Ikd0a0hUTUwvNC40LjQiPg0KPC9oZWFkPg0KPGJvZHk+DQp0aXMgMjAxMy0wNi0w NCBrbG9ja2FuIDE2OjMyICYjNDM7MDMwMCBza3JldiBNaWNoYWVsIFBhc3Rlcm5hazoNCjxibG9j a3F1b3RlIHR5cGU9IkNJVEUiPg0KPHByZT4KS2FybGksCgpPbiAwNi8wNC8yMDEzIDA0OjA1IFBN LCBLYXJsaSBTasO2YmVyZyB3cm90ZToKJmd0OyBIZWxsbyBldmVyeW9uZSEKJmd0OyAKJmd0OyBJ wrRtIGFsbW9zdCBkb25lIHdpdGggUHl0aG9uIGZvciBub3cuIEJ1dCB0aGUgbGFzdCB0aGluZyBJ IHNpdGxsIGNhbsK0dCBzZWVtIHRvIGdldCBhbnkgaGFuZyBvbiBpcyBob3cgdG8gY2hhbmdlIHRo ZSBuYW1lIG9mIGEgVk3CtHMgZGlzazoKCnBsZWFzZSB1c2UgZGlzay5hbGlhcyBwcm9wZXJ0eSwg bmFtZSBpcyBkZXByZWNhdGVkIGFuZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvbmx5Lgo8 L3ByZT4NCjwvYmxvY2txdW90ZT4NCjxicj4NCkl0IGRvZXNuwrR0IG1hdHRlciB3aGF0IHByb3Bl cnR5IEkgdXNlLCB0aGUgbmFtZSBkb2VzbsK0dCBjaGFuZ2UgYW55IHdheSEgUGxlYXNlIHJlYWQg YmVsb3csIHlvdcK0bGwgc2VlIEkgZXZlbiB0cmllZCBkZWZpbmluZyAuYWxpYXMgYW5kIC5uYW1l IGF0IHRoZSBzYW1lIHRpbWUsIHRoZW4gdXBkYXRlLCBidXQgc3RpbGwgbm8gY2hhbmdlLiBDb3Vs ZCB5b3UgcGxlYXNlIHBvc3QgdGhlIGNvcnJlY3QsIGFuZCB3b3JraW5nIHdheSBvZiBkb2luZyB0 aGlzLA0KIHBsZWFzZS48YnI+DQo8YnI+DQo8YmxvY2txdW90ZSB0eXBlPSJDSVRFIj4NCjxwcmU+ CgomZ3Q7IAomZ3Q7Jmd0OyZndDsmZ3Q7IGZyb20gb3ZpcnRzZGsuYXBpIGltcG9ydCBBUEkKJmd0 OyZndDsmZ3Q7Jmd0OyBmcm9tIG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFyYW1zCiZndDsmZ3Q7Jmd0 OyZndDsgYXBpID0gQVBJKHVybD0nPGEgaHJlZj0iaHR0cHM6Ly8iPmh0dHBzOi8vPC9hPiR7T1ZJ UlR9OjQ0MyAmbHQ7PGEgaHJlZj0iaHR0cHM6Ly9zdG9ybS5zbHUuc2U6NDQzIj5odHRwczovL3N0 b3JtLnNsdS5zZTo0NDM8L2E+Jmd0OycsIGNhX2ZpbGU9Jy9ldGMvcGtpL292aXJ0LWVuZ2luZS9j YS5wZW0nLCB1c2VybmFtZT0nYWRtaW5AaW50ZXJuYWwgJmx0OzxhIGhyZWY9Im1haWx0bzonYWRt aW5AaW50ZXJuYWwiPm1haWx0bzonYWRtaW5AaW50ZXJuYWw8L2E+Jmd0OycsCiZndDsgcGFzc3dv cmQ9J2xldG1laW4hJykKJmd0OyZndDsmZ3Q7Jmd0OyBWTV9OQU1FID0gJ0ZlZG9yYVRlc3QnCiZn dDsmZ3Q7Jmd0OyZndDsgRElTS19OQU1FID0gJyVzX0Rpc2sxJyAlIChWTV9OQU1FKQomZ3Q7Jmd0 OyZndDsmZ3Q7IHZtID0gYXBpLnZtcy5nZXQoVk1fTkFNRSkKJmd0OyZndDsmZ3Q7Jmd0OyB2bWRp c2sgPSB2bS5kaXNrcy5saXN0KClbMF0KJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2suYWxpYXMgPSAn Zm9vYmFyJwomZ3Q7Jmd0OyZndDsmZ3Q7IHZtZGlzay5uYW1lID0gJ2Zvb2JhcicKJmd0OyZndDsm Z3Q7Jmd0OyB2bWRpc2sudXBkYXRlKCkKJmd0OyAmbHQ7b3ZpcnRzZGsuaW5mcmFzdHJ1Y3R1cmUu YnJva2Vycy5WTURpc2sgb2JqZWN0IGF0IDB4MjVkN2FkMCZndDsKJmd0OyAKJmd0OyBCdXQgdGhl IG5hbWUvYWxpYXMvd2hhdGV2IG5ldmVyIGNoYW5nZXMuLi4KJmd0OyAKJmd0OyBDb3VsZCB5b3Ug cGxlYXNlIGdpdmUgbWUgYW4gZXhhY3QsIGFuZCB3b3JraW5nIGV4YW1wbGUgb2YgaG93IHRvIGNo YW5nZSB0aGUgbmFtZSBvZiBhIFZNwrRzIGRpc2suIFRoaXMgaXMgdGhlIGxhc3Qgc2ltcGxlIHRo aW5nIEkgd291bGQgbGlrZSB0byBhY2NvbXBsaXNoIGJlZm9yZSBzaGFyaW5nIGEKJmd0OyBsaXR0 bGUgc29tZXRoaW5nIGJhY2sgd2l0aCB5wrRhbGwodGVhc2VyLCB0ZWFzZXIpLgomZ3Q7IAomZ3Q7 IC9LYXJsaQomZ3Q7IAomZ3Q7IHPDtm4gMjAxMy0wNS0yNiBrbG9ja2FuIDAyOjQ4IC0wNDAwIHNr cmV2IElsaWEgTWVlcm92aWNoOgomZ3Q7Jmd0OyBIaSwKJmd0OyZndDsKJmd0OyZndDsgTGV0cyBm b2xsb3cgPGEgaHJlZj0iaHR0cDovL3d3dy5vdmlydC5vcmcvUHl0aG9uLXNkayI+aHR0cDovL3d3 dy5vdmlydC5vcmcvUHl0aG9uLXNkazwvYT4gCiZndDsmZ3Q7CiZndDsmZ3Q7IEluIFsxXTogZnJv bSBvdmlydHNkay54bWwgaW1wb3J0IHBhcmFtcwomZ3Q7Jmd0OwomZ3Q7Jmd0OyBJbiBbMl06IGZy b20gb3ZpcnRzZGsuYXBpIGltcG9ydCBBUEkgCiZndDsmZ3Q7CiZndDsmZ3Q7IEluIFszXTogCiZn dDsmZ3Q7CiZndDsmZ3Q7IEluIFs0XTogYXBpID0gQVBJKCoqKiwgKioqLCAqKiopCiZndDsmZ3Q7 CiZndDsmZ3Q7IEluIFs1XTogdXNlcl9uYW1lID0gJnF1b3Q7KioqJnF1b3Q7CiZndDsmZ3Q7CiZn dDsmZ3Q7IEluIFs2XTogZG9tYWluID0gJnF1b3Q7KioqLioqKi4qKioucmVkaGF0LmNvbSZxdW90 OwomZ3Q7Jmd0OwomZ3Q7Jmd0OyBJbiBbN106IHVzZXJfZG9tYWluID0gcGFyYW1zLkRvbWFpbihu YW1lPWRvbWFpbikKJmd0OyZndDsKJmd0OyZndDsgSW4gWzhdOiB1c2VyX25hbWUgPSAmcXVvdDt7 MH1AezF9JnF1b3Q7LmZvcm1hdCh1c2VyX25hbWUsIGRvbWFpbikgCiZndDsmZ3Q7ICMgY3JlYXRp bmcgdXNlciAKJmd0OyZndDsgSW4gWzldOiBuZXdfdXNlciA9IHBhcmFtcy5Vc2VyKGRvbWFpbj11 c2VyX2RvbWFpbiwgdXNlcl9uYW1lPXVzZXJfbmFtZSkKJmd0OyZndDsgIyBhZGRpbmcgdXNlciB0 byB1c2VycyByZXNvdXJjZSAKJmd0OyZndDsgSW4gWzEwXTogdXNlciA9IGFwaS51c2Vycy5hZGQo bmV3X3VzZXIpCiZndDsmZ3Q7ICMgYWRkaW5nIHJvbGUgdG8gdXNlcgomZ3Q7Jmd0OyBJbiBbMTFd OiB1c2VyLnJvbGVzLmFkZChhcGkucm9sZXMuZ2V0KCdVc2VyUm9sZScpKQomZ3Q7Jmd0OyBPdXRb MTFdOiAmbHQ7b3ZpcnRzZGsuaW5mcmFzdHJ1Y3R1cmUuYnJva2Vycy5Vc2VyUm9sZSBvYmplY3Qg YXQgMHgzMGM3NTkwJmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OyBUaGFua3MKJmd0OyZndDsgSWxpYQom Z3Q7Jmd0OwomZ3Q7Jmd0OyAtLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCiZndDsmZ3Q7IEZy b206ICZxdW90O0thcmxpIFNqw7ZiZXJnJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86S2FybGku U2pvYmVyZ0BzbHUuc2UiPkthcmxpLlNqb2JlcmdAc2x1LnNlPC9hPiAmbHQ7PGEgaHJlZj0ibWFp bHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlIj5tYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+ Jmd0OyZndDsKJmd0OyZndDsgVG86ICZxdW90O0lsaWEgTWVlcm92aWNoJnF1b3Q7ICZsdDs8YSBo cmVmPSJtYWlsdG86aW1lZXJvdmlAcmVkaGF0LmNvbSI+aW1lZXJvdmlAcmVkaGF0LmNvbTwvYT4g Jmx0OzxhIGhyZWY9Im1haWx0bzppbWVlcm92aUByZWRoYXQuY29tIj5tYWlsdG86aW1lZXJvdmlA cmVkaGF0LmNvbTwvYT4mZ3Q7Jmd0OwomZ3Q7Jmd0OyBDYzogJnF1b3Q7TWljaGFlbCBQYXN0ZXJu YWsmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzptcGFzdGVybkByZWRoYXQuY29tIj5tcGFzdGVy bkByZWRoYXQuY29tPC9hPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20i Pm1haWx0bzptcGFzdGVybkByZWRoYXQuY29tPC9hPiZndDsmZ3Q7LCAmcXVvdDt1c2VycyZxdW90 OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyI+dXNlcnNAb3ZpcnQub3JnPC9h PiAmbHQ7PGEgaHJlZj0ibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyI+bWFpbHRvOnVzZXJzQG92aXJ0 Lm9yZzwvYT4mZ3Q7Jmd0OywgJnF1b3Q7RWxlbmEgRG9saW5pbiZxdW90OyAmbHQ7PGEgaHJlZj0i bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20iPmVkb2xpbmluQHJlZGhhdC5jb208L2E+ICZsdDs8 YSBocmVmPSJtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbSI+bWFpbHRvOmVkb2xpbmluQHJlZGhh dC5jb208L2E+Jmd0OyZndDsKJmd0OyZndDsgU2VudDogRnJpZGF5LCBNYXkgMjQsIDIwMTMgODow NDo0MyBBTQomZ3Q7Jmd0OyBTdWJqZWN0OiBSZTogW1VzZXJzXSBQcm9ibGVtcyB1c2luZyB0aGUg UHl0aG9uU0RLCiZndDsmZ3Q7CiZndDsmZ3Q7IHRvciAyMDEzLTA1LTIzIGtsb2NrYW4gMDg6NTMg LTA0MDAgc2tyZXYgSWxpYSBNZWVyb3ZpY2g6IAomZ3Q7Jmd0OwomZ3Q7Jmd0OyBJdCBzaG91bGQg YmUgbGlrZToKJmd0OyZndDsKJmd0OyZndDsgZnJvbSBvdmlydHNkay54bWwgaW1wb3J0IHBhcmFt cwomZ3Q7Jmd0OyBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJIAomZ3Q7Jmd0OwomZ3Q7Jmd0 OyBhcGkgPSBBUEkoJyonLCAnKicsICcqJykKJmd0OyZndDsgdm0gPSBhcGkudm1zLmxpc3QoKVsw XQomZ3Q7Jmd0OyB1c2VyID0gIGFwaS51c2Vycy5saXN0KClbMV0KJmd0OyZndDsgcm9sZSA9IGFw aS5yb2xlcy5saXN0KClbMV0KJmd0OyZndDsgcGVybWl0ID0gcGFyYW1zLlBlcm1pc3Npb24oKQom Z3Q7Jmd0OyBwZXJtaXQuc2V0X3JvbGUocm9sZSkKJmd0OyZndDsgcGVybWl0LnNldF92bSh2bSkK Jmd0OyZndDsgdXNlci5wZXJtaXNzaW9ucy5hZGQocGVybWl0KSAKJmd0OyZndDsgVGhhbmsgeW91 IHZlcnkgbXVjaCwgScK0bSBnb2luZyB0byB0ZXN0IHRoaXMgb3V0IHRvZGF5ISBDb3VsZCB5b3Ug YWxzbyBzaG93IG1lIGhvdyB0byBmaXJzdCBhZGQgYSB1c2VyIHRoYXQgaXNuwrR0IGluIHRoZSBz eXN0ZW0geWV0LCBwbGVhc2U/IAomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OyAt LS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCiZndDsmZ3Q7IEZyb206ICZxdW90O0lsaWEgTWVl cm92aWNoJnF1b3Q7ICZsdDsgPGEgaHJlZj0ibWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20iPmlt ZWVyb3ZpQHJlZGhhdC5jb208L2E+ICZsdDs8YSBocmVmPSJtYWlsdG86aW1lZXJvdmlAcmVkaGF0 LmNvbSI+bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb208L2E+Jmd0OyAmZ3Q7CiZndDsmZ3Q7IFRv OiAmcXVvdDtNaWNoYWVsIFBhc3Rlcm5hayZxdW90OyAmbHQ7IDxhIGhyZWY9Im1haWx0bzptcGFz dGVybkByZWRoYXQuY29tIj5tcGFzdGVybkByZWRoYXQuY29tPC9hPiAmbHQ7PGEgaHJlZj0ibWFp bHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20iPm1haWx0bzptcGFzdGVybkByZWRoYXQuY29tPC9hPiZn dDsgJmd0OwomZ3Q7Jmd0OyBDYzogJnF1b3Q7dXNlcnMmcXVvdDsgJmx0OyA8YSBocmVmPSJtYWls dG86dXNlcnNAb3ZpcnQub3JnIj51c2Vyc0BvdmlydC5vcmc8L2E+ICZsdDs8YSBocmVmPSJtYWls dG86dXNlcnNAb3ZpcnQub3JnIj5tYWlsdG86dXNlcnNAb3ZpcnQub3JnPC9hPiZndDsgJmd0Oywg JnF1b3Q7S2FybGkgU2rDtmJlcmcmcXVvdDsgJmx0OyA8YSBocmVmPSJtYWlsdG86S2FybGkuU2pv YmVyZ0BzbHUuc2UiPkthcmxpLlNqb2JlcmdAc2x1LnNlPC9hPiAmbHQ7PGEgaHJlZj0ibWFpbHRv OkthcmxpLlNqb2JlcmdAc2x1LnNlIj5tYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+Jmd0 OyAmZ3Q7LCAmcXVvdDtFbGVuYSBEb2xpbmluJnF1b3Q7ICZsdDsgPGEgaHJlZj0ibWFpbHRvOmVk b2xpbmluQHJlZGhhdC5jb20iPmVkb2xpbmluQHJlZGhhdC5jb208L2E+ICZsdDs8YSBocmVmPSJt YWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbSI+bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb208L2E+ Jmd0OyAmZ3Q7CiZndDsmZ3Q7IFNlbnQ6IFRodXJzZGF5LCBNYXkgMjMsIDIwMTMgMzozMDoyNyBQ TQomZ3Q7Jmd0OyBTdWJqZWN0OiBSZTogW1VzZXJzXSBQcm9ibGVtcyB1c2luZyB0aGUgUHl0aG9u U0RLCiZndDsmZ3Q7CiZndDsmZ3Q7IEhpLAomZ3Q7Jmd0OwomZ3Q7Jmd0OyBXZSBoYXZlIHNldmVy YWwgdGVzdHMgbGlrZToKJmd0OyZndDsgJnF1b3Q7QWRkIFZNIHBlcm1pc3Npb24gdG8gdXNlciZx dW90OywgdGhhdCBhcmUgdXNpbmcgQVJUJ3MgYXJ0L3JoZXZtX2FwaS90ZXN0c19saWIvbG93X2xl dmVsL21sYS5weSBhZGRQZXJtaXRzVG9Vc2VyIGZ1bmN0aW9uLgomZ3Q7Jmd0OyBUaGlzIGlzIGdl bmVyaWMgZnVuY3Rpb24gYnV0IGl0IHNob3VsZG4ndCBiZSBoYXJkIHRvIHByZXBhcmUgU0RLIGNv ZGUgd2l0aCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LgomZ3Q7Jmd0OwomZ3Q7Jmd0OyBUaGFua3Mg CiZndDsmZ3Q7IElsaWEKJmd0OyZndDsKJmd0OyZndDsgLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAt LS0tLQomZ3Q7Jmd0OyBGcm9tOiAmcXVvdDtNaWNoYWVsIFBhc3Rlcm5hayZxdW90OyAmbHQ7IDxh IGhyZWY9Im1haWx0bzptcGFzdGVybkByZWRoYXQuY29tIj5tcGFzdGVybkByZWRoYXQuY29tPC9h PiAmbHQ7PGEgaHJlZj0ibWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20iPm1haWx0bzptcGFzdGVy bkByZWRoYXQuY29tPC9hPiZndDsgJmd0OwomZ3Q7Jmd0OyBUbzogJnF1b3Q7S2FybGkgU2rDtmJl cmcmcXVvdDsgJmx0OyA8YSBocmVmPSJtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2UiPkthcmxp LlNqb2JlcmdAc2x1LnNlPC9hPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1 LnNlIj5tYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+Jmd0OyAmZ3Q7LCAmcXVvdDtFbGVu YSBEb2xpbmluJnF1b3Q7ICZsdDsgPGEgaHJlZj0ibWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20i PmVkb2xpbmluQHJlZGhhdC5jb208L2E+ICZsdDs8YSBocmVmPSJtYWlsdG86ZWRvbGluaW5AcmVk aGF0LmNvbSI+bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb208L2E+Jmd0OyAmZ3Q7LCAmcXVvdDtJ bGlhIE1lZXJvdmljaCZxdW90OyAmbHQ7IDxhIGhyZWY9Im1haWx0bzppbWVlcm92aUByZWRoYXQu Y29tIj5pbWVlcm92aUByZWRoYXQuY29tPC9hPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmltZWVyb3Zp QHJlZGhhdC5jb20iPm1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPC9hPiZndDsgJmd0OwomZ3Q7 Jmd0OyBDYzogJnF1b3Q7dXNlcnMmcXVvdDsgJmx0OyA8YSBocmVmPSJtYWlsdG86dXNlcnNAb3Zp cnQub3JnIj51c2Vyc0BvdmlydC5vcmc8L2E+ICZsdDs8YSBocmVmPSJtYWlsdG86dXNlcnNAb3Zp cnQub3JnIj5tYWlsdG86dXNlcnNAb3ZpcnQub3JnPC9hPiZndDsgJmd0OwomZ3Q7Jmd0OyBTZW50 OiBUaHVyc2RheSwgTWF5IDIzLCAyMDEzIDM6MTA6MjEgUE0KJmd0OyZndDsgU3ViamVjdDogUmU6 IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhvblNESwomZ3Q7Jmd0OwomZ3Q7Jmd0Owom Z3Q7Jmd0OyBIaSBLYXJsaSwKJmd0OyZndDsKJmd0OyZndDsgT24gMDUvMjMvMjAxMyAxMjozNSBQ TSwgS2FybGkgU2rDtmJlcmcgd3JvdGU6CiZndDsmZ3Q7ICZndDsgSGkhCiZndDsmZ3Q7ICZndDsg CiZndDsmZ3Q7ICZndDsgV2XCtHJlIGluIHRoZSBwcm9jZXNzIG9mIGJ1aWxkaW5nIGFuIG9yZGVy cG9ydGFsIHdoZXJlIG91ciBjdXN0b21lcnMgd2lsbCBiZSBhYmxlIHRvIGxvZyBpbiwgc2VsZWN0 IGEgdmlydHVhbCBtYWNoaW5lIHRlbXBsYXRlLCB0eXBlIGluIGEgZGVzaXJlZCBob3N0bmFtZSBh bmQgaXQgd2lsbCBiZQomZ3Q7Jmd0OyAmZ3Q7IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCwgYW5kIHRo ZXkgcmVjaWV2ZSBhIG1haWwgZXhwbGFpbmluZyB3aGF0IHRoZXnCtHZlIGdvdHRlbiB0aGVtc2Vs dmVzIGludG86KS4gRm9yIHRoaXMgSSBmaWd1cmVkIHRoZSBQeXRob25TREsgd291bGQgYmUgdGhl IGJlc3QgY2hvaWNlIGJ1dCBJwrRtIGhhdmluZwomZ3Q7Jmd0OyAmZ3Q7IHRyb3VibGUgdXNpbmcg aXQuIFdoYXQgd2XCtHZlIGRvbmUgc28gZmFyIGlzOgomZ3Q7Jmd0OyAmZ3Q7IAomZ3Q7Jmd0OyAm Z3Q7IDEpIENyZWF0ZSBhIG5ldyBWTSBmcm9tIGEgdGVtcGxhdGU7IE9LLiBJIGZvdW5kIGFuIGV4 YW1wbGUgYW5kIGl0IHdvcmtlZCBPT1RCCiZndDsmZ3Q7ICZndDsgMikgUmVuYW1lIHRoZSBuZXcg Vk3CtHMgZGlzayBmcm9tICR7VGVtcGxhdGVOYW1lfV9EaXNrMSB0byAke1ZNTmFtZX1fRGlzazE7 IE5vdCBPSy4gSSBmb3VuZCBhbiBleGFtcGxlIG9mIGhvdyB0byBjaGFuZ2UgdGhlIG5hbWUgb2Yg YSBWTU5pYyBhbmQgdGhhdCB3b3JrcywgYnV0IHVzaW5nIHRoZQomZ3Q7Jmd0OyAmZ3Q7IHNhbWUg bWV0aG9kIHRvIGNoYW5nZSBWTURpc2vCtHMgbmFtZSBkb2VzIG5vdCAoRllJLCB0aGUgVk0gb25s eSBoYXMgb25lIFZOaWMgYW5kIFZEaXNrKToKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyBmcm9t IG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFyYW1zCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgZnJv bSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IGFwaSA9 IEFQSSh1cmw9JyBodHRwczovLyAke0VOR0lORX06NDQzL2FwaScsICZsdDsgPGEgaHJlZj0iaHR0 cHM6Ly9zdG9ybS5zbHUuc2U6NDQzL2FwaSciPmh0dHBzOi8vc3Rvcm0uc2x1LnNlOjQ0My9hcGkn PC9hPiAsJmd0OyBjYV9maWxlPScke0NBQ0VSVH0nLCB1c2VybmFtZT0nYWRtaW5AaW50ZXJuYWwg Jmx0OyA8YSBocmVmPSJtYWlsdG86J2FkbWluQGludGVybmFsIj5tYWlsdG86J2FkbWluQGludGVy bmFsPC9hPiAmZ3Q7JywgcGFzc3dvcmQ9J2xldG1laW4hJykKJmd0OyZndDsgJmd0OyZndDsmZ3Q7 Jmd0OyB2bSA9IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpCiZndDsmZ3Q7ICZndDsgCiZndDsm Z3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1uaWMgPSB2bS5uaWNzLmdldChuYW1lPScqJykKJmd0OyZn dDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bW5pYy5uYW1lCiZndDsmZ3Q7ICZndDsgJ25pYzEnCiZndDsm Z3Q7ICZndDsmZ3Q7Jmd0OyZndDsgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykubmljcy5nZXQo bmFtZT0nKicpCiZndDsmZ3Q7ICZndDsgJ25pYzEnCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsg dm1uaWMubmFtZT0nbmljMicKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bW5pYy51cGRhdGUo KQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLm5p Y3MuZ2V0KG5hbWU9JyonKQomZ3Q7Jmd0OyAmZ3Q7ICduaWMyJwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZn dDsmZ3Q7IHZtbmljLm5hbWUKJmd0OyZndDsgJmd0OyAnbmljMicKJmd0OyZndDsgJmd0OyAKJmd0 OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2sgPSB2bS5kaXNrcy5nZXQobmFtZT0nKicpCiZn dDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrLm5hbWUKJmd0OyZndDsgJmd0OyAnVGVtcGxh dGVOYW1lX0Rpc2sxJwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IGFwaS52bXMuZ2V0KG5hbWU9 J1ZNTmFtZScpLmRpc2tzLmdldChuYW1lPScqJykKJmd0OyZndDsKJmd0OyZndDsgdGhpcyBraW5k IG9mIGNhbGwgaXMgbm90IGVmZmljaWVudCwgYnkgZmV0Y2hpbmcgdGhlIGRpc2sKJmd0OyZndDsg eW91IGFsc28gZmV0Y2ggdGhlIHZtLAomZ3Q7Jmd0OwomZ3Q7Jmd0OyBpJ2Qgc3VnZ2VzdCBmZXRj aCB2bSwgc3RvcmUgaXQgaW4gbG9jYWwgdmFyaWFibGUgYW5kIHRoZW4KJmd0OyZndDsgcmV1c2Ug aXQgZm9yIGFueSBzdWItY29sbGVjdGlvbiBtYW5pcHVsYXRpb25zLgomZ3Q7Jmd0OwomZ3Q7Jmd0 OwomZ3Q7Jmd0OyAmZ3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0 OyZndDsgdm1kaXNrLm5hbWU9J1ZNTmFtZV9EaXNrMScKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0 OyB2bWRpc2sudXBkYXRlKCkKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2submFtZQom Z3Q7Jmd0OyAmZ3Q7ICdWTU5hbWVfRGlzazEnCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgYXBp LnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQomZ3Q7Jmd0OyAmZ3Q7 ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsmZ3Q7ICZndDsgCiZndDsmZ3Q7ICZndDsgU2VlPyBB bSBJIGhvbGRpbmcgaXQgd3Jvbmc/CiZndDsmZ3Q7CiZndDsmZ3Q7IGRpc2submFtZSBpcyBkZXBy ZWNhdGVkLCBwbGVhc2UgdXNlICdhbGlhcycgaW5zdGVhZC4KJmd0OyZndDsKJmd0OyZndDsgJmd0 OyAKJmd0OyZndDsgJmd0OyAzKSBDcmVhdGUgYSBzbmFwc2hvdCBjYWxsZWQgJnF1b3Q7T3JpZ2lu JnF1b3Q7LCBzbyBpZiBhIGN1c3RvbWVyIGNhbGxzIGluIGFuZCBzYXlzIHRoZXnCtHZlIGJvcmtl ZCBpdCBjb21wbGV0ZWx5LCB3ZcK0bGwganVzdCByZXZlcnQgdG8gaXTCtHMgJnF1b3Q7T3JpZ2lu JnF1b3Q7IGFuZCB0aGV5wrRyZSB1cCBhbmQgcnVubmluZyBhZ2FpbjsKJmd0OyZndDsgJmd0OyBP SywgZm91bmQgYW5vdGhlciBPT1RCIGV4YW1wbGUsIHRoYW5rIHlvdS4KJmd0OyZndDsgJmd0OyA0 KSBBZGQgdGhlIGN1c3RvbWVyIHRvIFZNwrRzIFBlcm1pc3Npb25zIHdpdGggYW4gYXBwcm9wcmlh dGUgcm9sZTsgTm90IE9LLiBJIGhhdmUgZm91bmQgbm8gZXhhbXBsZXMgb24gaG93IHRvIGRvIHRo aXMgYW5kIGp1c3QgZG9uwrR0IGtub3cgd2hlcmUgdG8gc3RhcnQgbG9va2luZy4gQlRXLAomZ3Q7 Jmd0OyAmZ3Q7IGNyZWF0aW5nIGEgbmV3IFZNIHdpdGggUHl0aG9uIHJlc3VsdHMgaW4gUGVybWlz c2lvbnMgY29tcGxldGVseSBlbXB0eSwgbm8gaW5oZXJpdGFuY2UgZWl0aGVyLiBEb27CtHQga25v dyBpZiB0aGF0IGlzIGludGVuZGVkLi4uCiZndDsmZ3Q7CiZndDsmZ3Q7IGVsZW5hLCBpbGlhLAom Z3Q7Jmd0OwomZ3Q7Jmd0OyBndXlzLCBkbyB5b3UgaGF2ZSBhbnkgcGVybWlzc2lvbiByZWxhdGVk IGNvZGUgdG8gc2hhcmU/CiZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsgCiZndDsmZ3Q7ICZndDsgY2xp ZW50IyBycG0gLXFhIHwgZ3JlcCBvdmlydAomZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWVuZ2luZS1jbGkt My4yLjAuMTEtMS5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWVuZ2luZS1zZGstMy4y LjAuMTAtMS5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7IAomZ3Q7Jmd0OyAmZ3Q7IGVuZ2luZSMg cnBtIC1xYSB8IGdyZXAgb3ZpcnQKJmd0OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtY29uZmlnLTMu MS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtZGJzY3JpcHRzLTMu MS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyBvdmlydC1sb2ctY29sbGVjdG9yLTMuMS4w LTAuZ2l0MTBkNzE5LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLXJlc3Rh cGktMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWltYWdlLXVwbG9hZGVy LTMuMS4wLTAuZ2l0OWM0MmM4LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5l LWdlbmVyaWNhcGktMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWlzby11 cGxvYWRlci0zLjEuMC0wLmdpdDE4NDFkOS5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7IG92aXJ0 LWVuZ2luZS13ZWJhZG1pbi1wb3J0YWwtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7 IG92aXJ0LWVuZ2luZS1zZXR1cC0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3Zp cnQtZW5naW5lLXNkay0zLjIuMC4yLTEuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyBvdmlydC1l bmdpbmUtYmFja2VuZC0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5n aW5lLXRvb2xzLWNvbW1vbi0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQt ZW5naW5lLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtdXNl cnBvcnRhbC0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLW5v dGlmaWNhdGlvbi1zZXJ2aWNlLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyAKJmd0 OyZndDsgJmd0OyAtLSAKJmd0OyZndDsgJmd0OyAKJmd0OyZndDsgJmd0OyBCZXN0IFJlZ2FyZHMK Jmd0OyZndDsgJmd0OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiZndDsmZ3Q7ICZndDsgS2FybGkg U2rDtmJlcmcKJmd0OyZndDsgJmd0OyBTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFs IFNjaWVuY2VzCiZndDsmZ3Q7ICZndDsgQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJlc3MgS3JvbsOl c3bDpGdlbiA4KQomZ3Q7Jmd0OyAmZ3Q7IFMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbgomZ3Q7Jmd0 OyAmZ3Q7IFBob25lOiAgJiM0Mzs0Ni0oMCkxOC02NyAxNSA2NgomZ3Q7Jmd0OyAmZ3Q7IDxhIGhy ZWY9Im1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZSI+a2FybGkuc2pvYmVyZ0BzbHUuc2U8L2E+ ICZsdDs8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2UiPm1haWx0bzprYXJsaS5z am9iZXJnQHNsdS5zZTwvYT4mZ3Q7ICZsdDsgPGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdA YWRtLnNsdS5zZSI+bWFpbHRvOmthcmxpLnNqb2JlcmdAYWRtLnNsdS5zZTwvYT4gJmd0OwomZ3Q7 Jmd0OyAmZ3Q7IAomZ3Q7Jmd0OyAmZ3Q7IAomZ3Q7Jmd0OyAmZ3Q7IAomZ3Q7Jmd0OyAmZ3Q7IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiZndDsmZ3Q7ICZn dDsgVXNlcnMgbWFpbGluZyBsaXN0CiZndDsmZ3Q7ICZndDsgPGEgaHJlZj0ibWFpbHRvOlVzZXJz QG92aXJ0Lm9yZyI+VXNlcnNAb3ZpcnQub3JnPC9hPiAmbHQ7PGEgaHJlZj0ibWFpbHRvOlVzZXJz QG92aXJ0Lm9yZyI+bWFpbHRvOlVzZXJzQG92aXJ0Lm9yZzwvYT4mZ3Q7ICZndDsgPGEgaHJlZj0i aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzIj5odHRwOi8vbGlz dHMub3ZpcnQub3JnL21haWxtYW4vbGlzdGluZm8vdXNlcnM8L2E+ICZndDsgCiZndDsmZ3Q7CiZn dDsmZ3Q7IAktLSAKJmd0OyZndDsKJmd0OyZndDsgTWVkIFbDpG5saWdhIEjDpGxzbmluZ2FyIAom Z3Q7Jmd0OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAomZ3Q7Jmd0OyBLYXJsaSBTasO2YmVyZyAK Jmd0OyZndDsgU3dlZGlzaCBVbml2ZXJzaXR5IG9mIEFncmljdWx0dXJhbCBTY2llbmNlcyAKJmd0 OyZndDsgQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJlc3MgS3JvbsOlc3bDpGdlbiA4KSAKJmd0OyZn dDsgUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuIAomZ3Q7Jmd0OyBQaG9uZTogJiM0Mzs0Ni0oMCkx OC02NyAxNSA2NiAKJmd0OyZndDsgPGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNl Ij5rYXJsaS5zam9iZXJnQHNsdS5zZTwvYT4gJmx0OzxhIGhyZWY9Im1haWx0bzprYXJsaS5zam9i ZXJnQHNsdS5zZSI+bWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlPC9hPiZndDsKJmd0OyAKJmd0 OyAtLSAKJmd0OyAKJmd0OyBNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXIKJmd0OyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiZndDsgS2FybGkgU2rDtmJlcmcKJmd0OyBTd2VkaXNoIFVuaXZlcnNpdHkg b2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzCiZndDsgQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJlc3Mg S3JvbsOlc3bDpGdlbiA4KQomZ3Q7IFMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbgomZ3Q7IFBob25l OiAgJiM0Mzs0Ni0oMCkxOC02NyAxNSA2NgomZ3Q7IDxhIGhyZWY9Im1haWx0bzprYXJsaS5zam9i ZXJnQHNsdS5zZSI+a2FybGkuc2pvYmVyZ0BzbHUuc2U8L2E+ICZsdDs8YSBocmVmPSJtYWlsdG86 a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlIj5tYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNl PC9hPiZndDsKJmd0OyAKCgo8L3ByZT4NCjwvYmxvY2txdW90ZT4NCjxicj4NCjx0YWJsZSBjZWxs c3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4NCjx0Ym9keT4NCjx0cj4N Cjx0ZD4tLSA8YnI+DQo8YnI+DQpNZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXI8YnI+DQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tPGJyPg0KS2FybGkgU2rDtmJlcmc8YnI+DQpTd2VkaXNoIFVuaXZlcnNp dHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzPGJyPg0KQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJl c3MgS3JvbsOlc3bDpGdlbiA4KTxicj4NClMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbjxicj4NClBo b25lOiAmbmJzcDsmIzQzOzQ2LSgwKTE4LTY3IDE1IDY2PGJyPg0KPGEgaHJlZj0ibWFpbHRvOmth cmxpLnNqb2JlcmdAYWRtLnNsdS5zZSI+a2FybGkuc2pvYmVyZ0BzbHUuc2U8L2E+IDwvdGQ+DQo8 L3RyPg0KPC90Ym9keT4NCjwvdGFibGU+DQo8L2JvZHk+DQo8L2h0bWw+DQo= --_000_5F9E965F5A80BC468BE5F40576769F092E656A5Dexchange21_--

On 06/05/2013 07:58 AM, Karli Sjöberg wrote:
tis 2013-06-04 klockan 16:32 +0300 skrev Michael Pasternak:
Karli,
On 06/04/2013 04:05 PM, Karli Sjöberg wrote:
Hello everyone!
I´m almost done with Python for now. But the last thing I sitll can´t seem to get any hang on is how to change the name of a VM´s disk:
please use disk.alias property, name is deprecated and for backward compatibility only.
It doesn´t matter what property I use, the name doesn´t change any way! Please read below, you´ll see I even tried defining .alias and .name at the same time, then update, but still no change. Could you please post the correct, and working way of doing this, please.
from ovirtsdk.api import API from ovirtsdk.xml import params api = API(url='https://${OVIRT}:443 <https://storm.slu.se:443>', ca_file='/etc/pki/ovirt-engine/ca.pem', username='admin@internal <mailto:'admin@internal>', password='letmein!') VM_NAME = 'FedoraTest' DISK_NAME = '%s_Disk1' % (VM_NAME) vm = api.vms.get(VM_NAME) vmdisk = vm.disks.list()[0] vmdisk.alias = 'foobar' vmdisk.name = 'foobar' vmdisk.update() <ovirtsdk.infrastructure.brokers.VMDisk object at 0x25d7ad0>
But the name/alias/whatev never changes...
Could you please give me an exact, and working example of how to change the name of a VM´s disk. This is the last simple thing I would like to accomplish before sharing a little something back with y´all(teaser, teaser).
/Karli
sön 2013-05-26 klockan 02:48 -0400 skrev Ilia Meerovich:
Hi,
Lets followhttp://www.ovirt.org/Python-sdk
In [1]: from ovirtsdk.xml import params
In [2]: from ovirtsdk.api import API
In [3]:
In [4]: api = API(***, ***, ***)
In [5]: user_name = "***"
In [6]: domain = "***.***.***.redhat.com"
In [7]: user_domain = params.Domain(name=domain)
In [8]: user_name = "{0}@{1}".format(user_name, domain) # creating user In [9]: new_user = params.User(domain=user_domain, user_name=user_name) # adding user to users resource In [10]: user = api.users.add(new_user) # adding role to user In [11]: user.roles.add(api.roles.get('UserRole')) Out[11]: <ovirtsdk.infrastructure.brokers.UserRole object at 0x30c7590>
Thanks Ilia
----- Original Message ----- From: "Karli Sjöberg" <Karli.Sjoberg@slu.se <mailto:Karli.Sjoberg@slu.se> <mailto:Karli.Sjoberg@slu.se>> To: "Ilia Meerovich" <imeerovi@redhat.com <mailto:imeerovi@redhat.com> <mailto:imeerovi@redhat.com>> Cc: "Michael Pasternak" <mpastern@redhat.com <mailto:mpastern@redhat.com> <mailto:mpastern@redhat.com>>, "users" <users@ovirt.org <mailto:users@ovirt.org> <mailto:users@ovirt.org>>, "Elena Dolinin" <edolinin@redhat.com <mailto:edolinin@redhat.com> <mailto:edolinin@redhat.com>> Sent: Friday, May 24, 2013 8:04:43 AM Subject: Re: [Users] Problems using the PythonSDK
tor 2013-05-23 klockan 08:53 -0400 skrev Ilia Meerovich:
It should be like:
from ovirtsdk.xml import params from ovirtsdk.api import API
api = API('*', '*', '*') vm = api.vms.list()[0] user = api.users.list()[1] role = api.roles.list()[1] permit = params.Permission() permit.set_role(role) permit.set_vm(vm) user.permissions.add(permit) Thank you very much, I´m going to test this out today! Could you also show me how to first add a user that isn´t in the system yet, please?
----- Original Message ----- From: "Ilia Meerovich" <imeerovi@redhat.com <mailto:imeerovi@redhat.com> <mailto:imeerovi@redhat.com> > To: "Michael Pasternak" <mpastern@redhat.com <mailto:mpastern@redhat.com> <mailto:mpastern@redhat.com> > Cc: "users" <users@ovirt.org <mailto:users@ovirt.org> <mailto:users@ovirt.org> >, "Karli Sjöberg" <Karli.Sjoberg@slu.se <mailto:Karli.Sjoberg@slu.se> <mailto:Karli.Sjoberg@slu.se> >, "Elena Dolinin" <edolinin@redhat.com <mailto:edolinin@redhat.com> <mailto:edolinin@redhat.com> > Sent: Thursday, May 23, 2013 3:30:27 PM Subject: Re: [Users] Problems using the PythonSDK
Hi,
We have several tests like: "Add VM permission to user", that are using ART's art/rhevm_api/tests_lib/low_level/mla.py addPermitsToUser function. This is generic function but it shouldn't be hard to prepare SDK code with the same functionality.
Thanks Ilia
----- Original Message ----- From: "Michael Pasternak" <mpastern@redhat.com <mailto:mpastern@redhat.com> <mailto:mpastern@redhat.com> > To: "Karli Sjöberg" <Karli.Sjoberg@slu.se <mailto:Karli.Sjoberg@slu.se> <mailto:Karli.Sjoberg@slu.se> >, "Elena Dolinin" <edolinin@redhat.com <mailto:edolinin@redhat.com> <mailto:edolinin@redhat.com> >, "Ilia Meerovich" <imeerovi@redhat.com <mailto:imeerovi@redhat.com> <mailto:imeerovi@redhat.com> > Cc: "users" <users@ovirt.org <mailto:users@ovirt.org> <mailto:users@ovirt.org> > Sent: Thursday, May 23, 2013 3:10:21 PM Subject: Re: [Users] Problems using the PythonSDK
Hi Karli,
On 05/23/2013 12:35 PM, Karli Sjöberg wrote:
Hi!
We´re in the process of building an orderportal where our customers will be able to log in, select a virtual machine template, type in a desired hostname and it will be automatically created, and they recieve a mail explaining what they´ve gotten themselves into:). For this I figured the PythonSDK would be the best choice but I´m having trouble using it. What we´ve done so far is:
1) Create a new VM from a template; OK. I found an example and it worked OOTB 2) Rename the new VM´s disk from ${TemplateName}_Disk1 to ${VMName}_Disk1; Not OK. I found an example of how to change the name of a VMNic and that works, but using the same method to change VMDisk´s name does not (FYI, the VM only has one VNic and VDisk):
>> from ovirtsdk.xml import params >> from ovirtsdk.api import API >> api = API(url=' https:// ${ENGINE}:443/api', <https://storm.slu.se:443/api' ,> ca_file='${CACERT}', username='admin@internal <mailto:'admin@internal >', password='letmein!') >> vm = api.vms.get(name='VMName')
>> vmnic = vm.nics.get(name='*') >> vmnic.name 'nic1' >> api.vms.get(name='VMName').nics.get(name='*') 'nic1' >> vmnic.name='nic2' >> vmnic.update() >> api.vms.get(name='VMName').nics.get(name='*') 'nic2' >> vmnic.name 'nic2'
>> vmdisk = vm.disks.get(name='*') >> vmdisk.name 'TemplateName_Disk1' >> api.vms.get(name='VMName').disks.get(name='*')
this kind of call is not efficient, by fetching the disk you also fetch the vm,
i'd suggest fetch vm, store it in local variable and then reuse it for any sub-collection manipulations.
'TemplateName_Disk1'
>> vmdisk.name='VMName_Disk1' >> vmdisk.update() >> vmdisk.name 'VMName_Disk1' >> api.vms.get(name='VMName').disks.get(name='*') 'TemplateName_Disk1'
See? Am I holding it wrong?
disk.name is deprecated, please use 'alias' instead.
3) Create a snapshot called "Origin", so if a customer calls in and says they´ve borked it completely, we´ll just revert to it´s "Origin" and they´re up and running again; OK, found another OOTB example, thank you. 4) Add the customer to VM´s Permissions with an appropriate role; Not OK. I have found no examples on how to do this and just don´t know where to start looking. BTW, creating a new VM with Python results in Permissions completely empty, no inheritance either. Don´t know if that is intended...
elena, ilia,
guys, do you have any permission related code to share?
client# rpm -qa | grep ovirt ovirt-engine-cli-3.2.0.11-1.fc17.noarch ovirt-engine-sdk-3.2.0.10-1.fc17.noarch
engine# rpm -qa | grep ovirt ovirt-engine-config-3.1.0-4.fc17.noarch ovirt-engine-dbscripts-3.1.0-4.fc17.noarch ovirt-log-collector-3.1.0-0.git10d719.fc17.noarch ovirt-engine-restapi-3.1.0-4.fc17.noarch ovirt-image-uploader-3.1.0-0.git9c42c8.fc17.noarch ovirt-engine-genericapi-3.1.0-4.fc17.noarch ovirt-iso-uploader-3.1.0-0.git1841d9.fc17.noarch ovirt-engine-webadmin-portal-3.1.0-4.fc17.noarch ovirt-engine-setup-3.1.0-4.fc17.noarch ovirt-engine-sdk-3.2.0.2-1.fc17.noarch ovirt-engine-backend-3.1.0-4.fc17.noarch ovirt-engine-tools-common-3.1.0-4.fc17.noarch ovirt-engine-3.1.0-4.fc17.noarch ovirt-engine-userportal-3.1.0-4.fc17.noarch ovirt-engine-notification-service-3.1.0-4.fc17.noarch
--
Best Regards ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@slu.se> <mailto:karli.sjoberg@slu.se> <mailto:karli.sjoberg@adm.slu.se >
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> <mailto:Users@ovirt.org> >http://lists.ovirt.org/mailman/listinfo/users >
--
Med Vänliga Hälsningar ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@slu.se> <mailto:karli.sjoberg@slu.se>
--
Med Vänliga Hälsningar ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@slu.se> <mailto:karli.sjoberg@adm.slu.se>
--
Med Vänliga Hälsningar ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@adm.slu.se>
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
was this resolved?

--_000_5F9E965F5A80BC468BE5F40576769F092E6C1EFBexchange21_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 c8O2biAyMDEzLTA2LTIzIGtsb2NrYW4gMjA6NDggKzAzMDAgc2tyZXYgSXRhbWFyIEhlaW06DQoN Cg0KT24gMDYvMDUvMjAxMyAwNzo1OCBBTSwgS2FybGkgU2rDtmJlcmcgd3JvdGU6DQo+IHRpcyAy MDEzLTA2LTA0IGtsb2NrYW4gMTY6MzIgKzAzMDAgc2tyZXYgTWljaGFlbCBQYXN0ZXJuYWs6DQo+ PiBLYXJsaSwNCj4+DQo+PiBPbiAwNi8wNC8yMDEzIDA0OjA1IFBNLCBLYXJsaSBTasO2YmVyZyB3 cm90ZToNCj4+ID4gSGVsbG8gZXZlcnlvbmUhDQo+PiA+DQo+PiA+IEnCtG0gYWxtb3N0IGRvbmUg d2l0aCBQeXRob24gZm9yIG5vdy4gQnV0IHRoZSBsYXN0IHRoaW5nIEkgc2l0bGwgY2FuwrR0IHNl ZW0gdG8gZ2V0IGFueSBoYW5nIG9uIGlzIGhvdyB0byBjaGFuZ2UgdGhlIG5hbWUgb2YgYSBWTcK0 cyBkaXNrOg0KPj4NCj4+IHBsZWFzZSB1c2UgZGlzay5hbGlhcyBwcm9wZXJ0eSwgbmFtZSBpcyBk ZXByZWNhdGVkIGFuZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBvbmx5Lg0KPg0KPiBJdCBk b2VzbsK0dCBtYXR0ZXIgd2hhdCBwcm9wZXJ0eSBJIHVzZSwgdGhlIG5hbWUgZG9lc27CtHQgY2hh bmdlIGFueSB3YXkhDQo+IFBsZWFzZSByZWFkIGJlbG93LCB5b3XCtGxsIHNlZSBJIGV2ZW4gdHJp ZWQgZGVmaW5pbmcgLmFsaWFzIGFuZCAubmFtZSBhdA0KPiB0aGUgc2FtZSB0aW1lLCB0aGVuIHVw ZGF0ZSwgYnV0IHN0aWxsIG5vIGNoYW5nZS4gQ291bGQgeW91IHBsZWFzZSBwb3N0DQo+IHRoZSBj b3JyZWN0LCBhbmQgd29ya2luZyB3YXkgb2YgZG9pbmcgdGhpcywgcGxlYXNlLg0KPg0KPj4NCj4+ ID4NCj4+ID4+Pj4gZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQ0KPj4gPj4+PiBmcm9tIG92 aXJ0c2RrLnhtbCBpbXBvcnQgcGFyYW1zDQo+PiA+Pj4+IGFwaSA9IEFQSSh1cmw9J2h0dHBzOi8v JHtPVklSVH06NDQzIDxodHRwczovL3N0b3JtLnNsdS5zZTo0NDM+JywgY2FfZmlsZT0nL2V0Yy9w a2kvb3ZpcnQtZW5naW5lL2NhLnBlbScsIHVzZXJuYW1lPSdhZG1pbkBpbnRlcm5hbCA8bWFpbHRv OidhZG1pbkBpbnRlcm5hbD4nLA0KPj4gPiBwYXNzd29yZD0nbGV0bWVpbiEnKQ0KPj4gPj4+PiBW TV9OQU1FID0gJ0ZlZG9yYVRlc3QnDQo+PiA+Pj4+IERJU0tfTkFNRSA9ICclc19EaXNrMScgJSAo Vk1fTkFNRSkNCj4+ID4+Pj4gdm0gPSBhcGkudm1zLmdldChWTV9OQU1FKQ0KPj4gPj4+PiB2bWRp c2sgPSB2bS5kaXNrcy5saXN0KClbMF0NCj4+ID4+Pj4gdm1kaXNrLmFsaWFzID0gJ2Zvb2JhcicN Cj4+ID4+Pj4gdm1kaXNrLm5hbWUgPSAnZm9vYmFyJw0KPj4gPj4+PiB2bWRpc2sudXBkYXRlKCkN Cj4+ID4gPG92aXJ0c2RrLmluZnJhc3RydWN0dXJlLmJyb2tlcnMuVk1EaXNrIG9iamVjdCBhdCAw eDI1ZDdhZDA+DQo+PiA+DQo+PiA+IEJ1dCB0aGUgbmFtZS9hbGlhcy93aGF0ZXYgbmV2ZXIgY2hh bmdlcy4uLg0KPj4gPg0KPj4gPiBDb3VsZCB5b3UgcGxlYXNlIGdpdmUgbWUgYW4gZXhhY3QsIGFu ZCB3b3JraW5nIGV4YW1wbGUgb2YgaG93IHRvIGNoYW5nZSB0aGUgbmFtZSBvZiBhIFZNwrRzIGRp c2suIFRoaXMgaXMgdGhlIGxhc3Qgc2ltcGxlIHRoaW5nIEkgd291bGQgbGlrZSB0byBhY2NvbXBs aXNoIGJlZm9yZSBzaGFyaW5nIGENCj4+ID4gbGl0dGxlIHNvbWV0aGluZyBiYWNrIHdpdGggecK0 YWxsKHRlYXNlciwgdGVhc2VyKS4NCj4+ID4NCj4+ID4gL0thcmxpDQo+PiA+DQo+PiA+IHPDtm4g MjAxMy0wNS0yNiBrbG9ja2FuIDAyOjQ4IC0wNDAwIHNrcmV2IElsaWEgTWVlcm92aWNoOg0KPj4g Pj4gSGksDQo+PiA+Pg0KPj4gPj4gTGV0cyBmb2xsb3dodHRwOi8vd3d3Lm92aXJ0Lm9yZy9QeXRo b24tc2RrDQo+PiA+Pg0KPj4gPj4gSW4gWzFdOiBmcm9tIG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFy YW1zDQo+PiA+Pg0KPj4gPj4gSW4gWzJdOiBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJDQo+ PiA+Pg0KPj4gPj4gSW4gWzNdOg0KPj4gPj4NCj4+ID4+IEluIFs0XTogYXBpID0gQVBJKCoqKiwg KioqLCAqKiopDQo+PiA+Pg0KPj4gPj4gSW4gWzVdOiB1c2VyX25hbWUgPSAiKioqIg0KPj4gPj4N Cj4+ID4+IEluIFs2XTogZG9tYWluID0gIioqKi4qKiouKioqLnJlZGhhdC5jb20iDQo+PiA+Pg0K Pj4gPj4gSW4gWzddOiB1c2VyX2RvbWFpbiA9IHBhcmFtcy5Eb21haW4obmFtZT1kb21haW4pDQo+ PiA+Pg0KPj4gPj4gSW4gWzhdOiB1c2VyX25hbWUgPSAiezB9QHsxfSIuZm9ybWF0KHVzZXJfbmFt ZSwgZG9tYWluKQ0KPj4gPj4gIyBjcmVhdGluZyB1c2VyDQo+PiA+PiBJbiBbOV06IG5ld191c2Vy ID0gcGFyYW1zLlVzZXIoZG9tYWluPXVzZXJfZG9tYWluLCB1c2VyX25hbWU9dXNlcl9uYW1lKQ0K Pj4gPj4gIyBhZGRpbmcgdXNlciB0byB1c2VycyByZXNvdXJjZQ0KPj4gPj4gSW4gWzEwXTogdXNl ciA9IGFwaS51c2Vycy5hZGQobmV3X3VzZXIpDQo+PiA+PiAjIGFkZGluZyByb2xlIHRvIHVzZXIN Cj4+ID4+IEluIFsxMV06IHVzZXIucm9sZXMuYWRkKGFwaS5yb2xlcy5nZXQoJ1VzZXJSb2xlJykp DQo+PiA+PiBPdXRbMTFdOiA8b3ZpcnRzZGsuaW5mcmFzdHJ1Y3R1cmUuYnJva2Vycy5Vc2VyUm9s ZSBvYmplY3QgYXQgMHgzMGM3NTkwPg0KPj4gPj4NCj4+ID4+IFRoYW5rcw0KPj4gPj4gSWxpYQ0K Pj4gPj4NCj4+ID4+IC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0NCj4+ID4+IEZyb206ICJL YXJsaSBTasO2YmVyZyIgPEthcmxpLlNqb2JlcmdAc2x1LnNlPG1haWx0bzpLYXJsaS5Tam9iZXJn QHNsdS5zZT4gIDxtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U+ICA8bWFpbHRvOkthcmxpLlNq b2JlcmdAc2x1LnNlPj4NCj4+ID4+IFRvOiAiSWxpYSBNZWVyb3ZpY2giIDxpbWVlcm92aUByZWRo YXQuY29tPG1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPiAgPG1haWx0bzppbWVlcm92aUByZWRo YXQuY29tPiAgPG1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPj4NCj4+ID4+IENjOiAiTWljaGFl bCBQYXN0ZXJuYWsiIDxtcGFzdGVybkByZWRoYXQuY29tPG1haWx0bzptcGFzdGVybkByZWRoYXQu Y29tPiAgPG1haWx0bzptcGFzdGVybkByZWRoYXQuY29tPiAgPG1haWx0bzptcGFzdGVybkByZWRo YXQuY29tPj4sICJ1c2VycyIgPHVzZXJzQG92aXJ0Lm9yZzxtYWlsdG86dXNlcnNAb3ZpcnQub3Jn PiAgPG1haWx0bzp1c2Vyc0BvdmlydC5vcmc+ICA8bWFpbHRvOnVzZXJzQG92aXJ0Lm9yZz4+LCAi RWxlbmEgRG9saW5pbiIgPGVkb2xpbmluQHJlZGhhdC5jb208bWFpbHRvOmVkb2xpbmluQHJlZGhh dC5jb20+ICA8bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20+ICA8bWFpbHRvOmVkb2xpbmluQHJl ZGhhdC5jb20+Pg0KPj4gPj4gU2VudDogRnJpZGF5LCBNYXkgMjQsIDIwMTMgODowNDo0MyBBTQ0K Pj4gPj4gU3ViamVjdDogUmU6IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhvblNESw0K Pj4gPj4NCj4+ID4+IHRvciAyMDEzLTA1LTIzIGtsb2NrYW4gMDg6NTMgLTA0MDAgc2tyZXYgSWxp YSBNZWVyb3ZpY2g6DQo+PiA+Pg0KPj4gPj4gSXQgc2hvdWxkIGJlIGxpa2U6DQo+PiA+Pg0KPj4g Pj4gZnJvbSBvdmlydHNkay54bWwgaW1wb3J0IHBhcmFtcw0KPj4gPj4gZnJvbSBvdmlydHNkay5h cGkgaW1wb3J0IEFQSQ0KPj4gPj4NCj4+ID4+IGFwaSA9IEFQSSgnKicsICcqJywgJyonKQ0KPj4g Pj4gdm0gPSBhcGkudm1zLmxpc3QoKVswXQ0KPj4gPj4gdXNlciA9ICBhcGkudXNlcnMubGlzdCgp WzFdDQo+PiA+PiByb2xlID0gYXBpLnJvbGVzLmxpc3QoKVsxXQ0KPj4gPj4gcGVybWl0ID0gcGFy YW1zLlBlcm1pc3Npb24oKQ0KPj4gPj4gcGVybWl0LnNldF9yb2xlKHJvbGUpDQo+PiA+PiBwZXJt aXQuc2V0X3ZtKHZtKQ0KPj4gPj4gdXNlci5wZXJtaXNzaW9ucy5hZGQocGVybWl0KQ0KPj4gPj4g VGhhbmsgeW91IHZlcnkgbXVjaCwgScK0bSBnb2luZyB0byB0ZXN0IHRoaXMgb3V0IHRvZGF5ISBD b3VsZCB5b3UgYWxzbyBzaG93IG1lIGhvdyB0byBmaXJzdCBhZGQgYSB1c2VyIHRoYXQgaXNuwrR0 IGluIHRoZSBzeXN0ZW0geWV0LCBwbGVhc2U/DQo+PiA+Pg0KPj4gPj4NCj4+ID4+DQo+PiA+PiAt LS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tDQo+PiA+PiBGcm9tOiAiSWxpYSBNZWVyb3ZpY2gi IDxpbWVlcm92aUByZWRoYXQuY29tPG1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPiAgPG1haWx0 bzppbWVlcm92aUByZWRoYXQuY29tPiAgPG1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPiA+DQo+ PiA+PiBUbzogIk1pY2hhZWwgUGFzdGVybmFrIiA8bXBhc3Rlcm5AcmVkaGF0LmNvbTxtYWlsdG86 bXBhc3Rlcm5AcmVkaGF0LmNvbT4gIDxtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbT4gIDxtYWls dG86bXBhc3Rlcm5AcmVkaGF0LmNvbT4gPg0KPj4gPj4gQ2M6ICJ1c2VycyIgPHVzZXJzQG92aXJ0 Lm9yZzxtYWlsdG86dXNlcnNAb3ZpcnQub3JnPiAgPG1haWx0bzp1c2Vyc0BvdmlydC5vcmc+ICA8 bWFpbHRvOnVzZXJzQG92aXJ0Lm9yZz4gPiwgIkthcmxpIFNqw7ZiZXJnIiA8S2FybGkuU2pvYmVy Z0BzbHUuc2U8bWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlPiAgPG1haWx0bzpLYXJsaS5Tam9i ZXJnQHNsdS5zZT4gIDxtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U+ID4sICJFbGVuYSBEb2xp bmluIiA8ZWRvbGluaW5AcmVkaGF0LmNvbTxtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbT4gIDxt YWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbT4gIDxtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbT4g Pg0KPj4gPj4gU2VudDogVGh1cnNkYXksIE1heSAyMywgMjAxMyAzOjMwOjI3IFBNDQo+PiA+PiBT dWJqZWN0OiBSZTogW1VzZXJzXSBQcm9ibGVtcyB1c2luZyB0aGUgUHl0aG9uU0RLDQo+PiA+Pg0K Pj4gPj4gSGksDQo+PiA+Pg0KPj4gPj4gV2UgaGF2ZSBzZXZlcmFsIHRlc3RzIGxpa2U6DQo+PiA+ PiAiQWRkIFZNIHBlcm1pc3Npb24gdG8gdXNlciIsIHRoYXQgYXJlIHVzaW5nIEFSVCdzIGFydC9y aGV2bV9hcGkvdGVzdHNfbGliL2xvd19sZXZlbC9tbGEucHkgYWRkUGVybWl0c1RvVXNlciBmdW5j dGlvbi4NCj4+ID4+IFRoaXMgaXMgZ2VuZXJpYyBmdW5jdGlvbiBidXQgaXQgc2hvdWxkbid0IGJl IGhhcmQgdG8gcHJlcGFyZSBTREsgY29kZSB3aXRoIHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHkuDQo+ PiA+Pg0KPj4gPj4gVGhhbmtzDQo+PiA+PiBJbGlhDQo+PiA+Pg0KPj4gPj4gLS0tLS0gT3JpZ2lu YWwgTWVzc2FnZSAtLS0tLQ0KPj4gPj4gRnJvbTogIk1pY2hhZWwgUGFzdGVybmFrIiA8bXBhc3Rl cm5AcmVkaGF0LmNvbTxtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbT4gIDxtYWlsdG86bXBhc3Rl cm5AcmVkaGF0LmNvbT4gIDxtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbT4gPg0KPj4gPj4gVG86 ICJLYXJsaSBTasO2YmVyZyIgPEthcmxpLlNqb2JlcmdAc2x1LnNlPG1haWx0bzpLYXJsaS5Tam9i ZXJnQHNsdS5zZT4gIDxtYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U+ICA8bWFpbHRvOkthcmxp LlNqb2JlcmdAc2x1LnNlPiA+LCAiRWxlbmEgRG9saW5pbiIgPGVkb2xpbmluQHJlZGhhdC5jb208 bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20+ICA8bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20+ ICA8bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20+ID4sICJJbGlhIE1lZXJvdmljaCIgPGltZWVy b3ZpQHJlZGhhdC5jb208bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20+ICA8bWFpbHRvOmltZWVy b3ZpQHJlZGhhdC5jb20+ICA8bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20+ID4NCj4+ID4+IENj OiAidXNlcnMiIDx1c2Vyc0BvdmlydC5vcmc8bWFpbHRvOnVzZXJzQG92aXJ0Lm9yZz4gIDxtYWls dG86dXNlcnNAb3ZpcnQub3JnPiAgPG1haWx0bzp1c2Vyc0BvdmlydC5vcmc+ID4NCj4+ID4+IFNl bnQ6IFRodXJzZGF5LCBNYXkgMjMsIDIwMTMgMzoxMDoyMSBQTQ0KPj4gPj4gU3ViamVjdDogUmU6 IFtVc2Vyc10gUHJvYmxlbXMgdXNpbmcgdGhlIFB5dGhvblNESw0KPj4gPj4NCj4+ID4+DQo+PiA+ PiBIaSBLYXJsaSwNCj4+ID4+DQo+PiA+PiBPbiAwNS8yMy8yMDEzIDEyOjM1IFBNLCBLYXJsaSBT asO2YmVyZyB3cm90ZToNCj4+ID4+ID4gSGkhDQo+PiA+PiA+DQo+PiA+PiA+IFdlwrRyZSBpbiB0 aGUgcHJvY2VzcyBvZiBidWlsZGluZyBhbiBvcmRlcnBvcnRhbCB3aGVyZSBvdXIgY3VzdG9tZXJz IHdpbGwgYmUgYWJsZSB0byBsb2cgaW4sIHNlbGVjdCBhIHZpcnR1YWwgbWFjaGluZSB0ZW1wbGF0 ZSwgdHlwZSBpbiBhIGRlc2lyZWQgaG9zdG5hbWUgYW5kIGl0IHdpbGwgYmUNCj4+ID4+ID4gYXV0 b21hdGljYWxseSBjcmVhdGVkLCBhbmQgdGhleSByZWNpZXZlIGEgbWFpbCBleHBsYWluaW5nIHdo YXQgdGhlecK0dmUgZ290dGVuIHRoZW1zZWx2ZXMgaW50bzopLiBGb3IgdGhpcyBJIGZpZ3VyZWQg dGhlIFB5dGhvblNESyB3b3VsZCBiZSB0aGUgYmVzdCBjaG9pY2UgYnV0IEnCtG0gaGF2aW5nDQo+ PiA+PiA+IHRyb3VibGUgdXNpbmcgaXQuIFdoYXQgd2XCtHZlIGRvbmUgc28gZmFyIGlzOg0KPj4g Pj4gPg0KPj4gPj4gPiAxKSBDcmVhdGUgYSBuZXcgVk0gZnJvbSBhIHRlbXBsYXRlOyBPSy4gSSBm b3VuZCBhbiBleGFtcGxlIGFuZCBpdCB3b3JrZWQgT09UQg0KPj4gPj4gPiAyKSBSZW5hbWUgdGhl IG5ldyBWTcK0cyBkaXNrIGZyb20gJHtUZW1wbGF0ZU5hbWV9X0Rpc2sxIHRvICR7Vk1OYW1lfV9E aXNrMTsgTm90IE9LLiBJIGZvdW5kIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNoYW5nZSB0aGUgbmFt ZSBvZiBhIFZNTmljIGFuZCB0aGF0IHdvcmtzLCBidXQgdXNpbmcgdGhlDQo+PiA+PiA+IHNhbWUg bWV0aG9kIHRvIGNoYW5nZSBWTURpc2vCtHMgbmFtZSBkb2VzIG5vdCAoRllJLCB0aGUgVk0gb25s eSBoYXMgb25lIFZOaWMgYW5kIFZEaXNrKToNCj4+ID4+ID4+Pj4gZnJvbSBvdmlydHNkay54bWwg aW1wb3J0IHBhcmFtcw0KPj4gPj4gPj4+PiBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJDQo+ PiA+PiA+Pj4+IGFwaSA9IEFQSSh1cmw9JyBodHRwczovLyAke0VOR0lORX06NDQzL2FwaScsIDxo dHRwczovL3N0b3JtLnNsdS5zZTo0NDMvYXBpJyAgLD4gY2FfZmlsZT0nJHtDQUNFUlR9JywgdXNl cm5hbWU9J2FkbWluQGludGVybmFsIDxtYWlsdG86J2FkbWluQGludGVybmFsICA+JywgcGFzc3dv cmQ9J2xldG1laW4hJykNCj4+ID4+ID4+Pj4gdm0gPSBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUn KQ0KPj4gPj4gPg0KPj4gPj4gPj4+PiB2bW5pYyA9IHZtLm5pY3MuZ2V0KG5hbWU9JyonKQ0KPj4g Pj4gPj4+PiB2bW5pYy5uYW1lDQo+PiA+PiA+ICduaWMxJw0KPj4gPj4gPj4+PiBhcGkudm1zLmdl dChuYW1lPSdWTU5hbWUnKS5uaWNzLmdldChuYW1lPScqJykNCj4+ID4+ID4gJ25pYzEnDQo+PiA+ PiA+Pj4+IHZtbmljLm5hbWU9J25pYzInDQo+PiA+PiA+Pj4+IHZtbmljLnVwZGF0ZSgpDQo+PiA+ PiA+Pj4+IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLm5pY3MuZ2V0KG5hbWU9JyonKQ0KPj4g Pj4gPiAnbmljMicNCj4+ID4+ID4+Pj4gdm1uaWMubmFtZQ0KPj4gPj4gPiAnbmljMicNCj4+ID4+ ID4NCj4+ID4+ID4+Pj4gdm1kaXNrID0gdm0uZGlza3MuZ2V0KG5hbWU9JyonKQ0KPj4gPj4gPj4+ PiB2bWRpc2submFtZQ0KPj4gPj4gPiAnVGVtcGxhdGVOYW1lX0Rpc2sxJw0KPj4gPj4gPj4+PiBh cGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5kaXNrcy5nZXQobmFtZT0nKicpDQo+PiA+Pg0KPj4g Pj4gdGhpcyBraW5kIG9mIGNhbGwgaXMgbm90IGVmZmljaWVudCwgYnkgZmV0Y2hpbmcgdGhlIGRp c2sNCj4+ID4+IHlvdSBhbHNvIGZldGNoIHRoZSB2bSwNCj4+ID4+DQo+PiA+PiBpJ2Qgc3VnZ2Vz dCBmZXRjaCB2bSwgc3RvcmUgaXQgaW4gbG9jYWwgdmFyaWFibGUgYW5kIHRoZW4NCj4+ID4+IHJl dXNlIGl0IGZvciBhbnkgc3ViLWNvbGxlY3Rpb24gbWFuaXB1bGF0aW9ucy4NCj4+ID4+DQo+PiA+ Pg0KPj4gPj4gPiAnVGVtcGxhdGVOYW1lX0Rpc2sxJw0KPj4gPj4gPj4+PiB2bWRpc2submFtZT0n Vk1OYW1lX0Rpc2sxJw0KPj4gPj4gPj4+PiB2bWRpc2sudXBkYXRlKCkNCj4+ID4+ID4+Pj4gdm1k aXNrLm5hbWUNCj4+ID4+ID4gJ1ZNTmFtZV9EaXNrMScNCj4+ID4+ID4+Pj4gYXBpLnZtcy5nZXQo bmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQ0KPj4gPj4gPiAnVGVtcGxhdGVOYW1l X0Rpc2sxJw0KPj4gPj4gPg0KPj4gPj4gPiBTZWU/IEFtIEkgaG9sZGluZyBpdCB3cm9uZz8NCj4+ ID4+DQo+PiA+PiBkaXNrLm5hbWUgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSAnYWxpYXMnIGlu c3RlYWQuDQo+PiA+Pg0KPj4gPj4gPg0KPj4gPj4gPiAzKSBDcmVhdGUgYSBzbmFwc2hvdCBjYWxs ZWQgIk9yaWdpbiIsIHNvIGlmIGEgY3VzdG9tZXIgY2FsbHMgaW4gYW5kIHNheXMgdGhlecK0dmUg Ym9ya2VkIGl0IGNvbXBsZXRlbHksIHdlwrRsbCBqdXN0IHJldmVydCB0byBpdMK0cyAiT3JpZ2lu IiBhbmQgdGhlecK0cmUgdXAgYW5kIHJ1bm5pbmcgYWdhaW47DQo+PiA+PiA+IE9LLCBmb3VuZCBh bm90aGVyIE9PVEIgZXhhbXBsZSwgdGhhbmsgeW91Lg0KPj4gPj4gPiA0KSBBZGQgdGhlIGN1c3Rv bWVyIHRvIFZNwrRzIFBlcm1pc3Npb25zIHdpdGggYW4gYXBwcm9wcmlhdGUgcm9sZTsgTm90IE9L LiBJIGhhdmUgZm91bmQgbm8gZXhhbXBsZXMgb24gaG93IHRvIGRvIHRoaXMgYW5kIGp1c3QgZG9u wrR0IGtub3cgd2hlcmUgdG8gc3RhcnQgbG9va2luZy4gQlRXLA0KPj4gPj4gPiBjcmVhdGluZyBh IG5ldyBWTSB3aXRoIFB5dGhvbiByZXN1bHRzIGluIFBlcm1pc3Npb25zIGNvbXBsZXRlbHkgZW1w dHksIG5vIGluaGVyaXRhbmNlIGVpdGhlci4gRG9uwrR0IGtub3cgaWYgdGhhdCBpcyBpbnRlbmRl ZC4uLg0KPj4gPj4NCj4+ID4+IGVsZW5hLCBpbGlhLA0KPj4gPj4NCj4+ID4+IGd1eXMsIGRvIHlv dSBoYXZlIGFueSBwZXJtaXNzaW9uIHJlbGF0ZWQgY29kZSB0byBzaGFyZT8NCj4+ID4+DQo+PiA+ PiA+DQo+PiA+PiA+IGNsaWVudCMgcnBtIC1xYSB8IGdyZXAgb3ZpcnQNCj4+ID4+ID4gb3ZpcnQt ZW5naW5lLWNsaS0zLjIuMC4xMS0xLmZjMTcubm9hcmNoDQo+PiA+PiA+IG92aXJ0LWVuZ2luZS1z ZGstMy4yLjAuMTAtMS5mYzE3Lm5vYXJjaA0KPj4gPj4gPg0KPj4gPj4gPiBlbmdpbmUjIHJwbSAt cWEgfCBncmVwIG92aXJ0DQo+PiA+PiA+IG92aXJ0LWVuZ2luZS1jb25maWctMy4xLjAtNC5mYzE3 Lm5vYXJjaA0KPj4gPj4gPiBvdmlydC1lbmdpbmUtZGJzY3JpcHRzLTMuMS4wLTQuZmMxNy5ub2Fy Y2gNCj4+ID4+ID4gb3ZpcnQtbG9nLWNvbGxlY3Rvci0zLjEuMC0wLmdpdDEwZDcxOS5mYzE3Lm5v YXJjaA0KPj4gPj4gPiBvdmlydC1lbmdpbmUtcmVzdGFwaS0zLjEuMC00LmZjMTcubm9hcmNoDQo+ PiA+PiA+IG92aXJ0LWltYWdlLXVwbG9hZGVyLTMuMS4wLTAuZ2l0OWM0MmM4LmZjMTcubm9hcmNo DQo+PiA+PiA+IG92aXJ0LWVuZ2luZS1nZW5lcmljYXBpLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4+ ID4+ID4gb3ZpcnQtaXNvLXVwbG9hZGVyLTMuMS4wLTAuZ2l0MTg0MWQ5LmZjMTcubm9hcmNoDQo+ PiA+PiA+IG92aXJ0LWVuZ2luZS13ZWJhZG1pbi1wb3J0YWwtMy4xLjAtNC5mYzE3Lm5vYXJjaA0K Pj4gPj4gPiBvdmlydC1lbmdpbmUtc2V0dXAtMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4gPj4gPiBv dmlydC1lbmdpbmUtc2RrLTMuMi4wLjItMS5mYzE3Lm5vYXJjaA0KPj4gPj4gPiBvdmlydC1lbmdp bmUtYmFja2VuZC0zLjEuMC00LmZjMTcubm9hcmNoDQo+PiA+PiA+IG92aXJ0LWVuZ2luZS10b29s cy1jb21tb24tMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPj4gPj4gPiBvdmlydC1lbmdpbmUtMy4xLjAt NC5mYzE3Lm5vYXJjaA0KPj4gPj4gPiBvdmlydC1lbmdpbmUtdXNlcnBvcnRhbC0zLjEuMC00LmZj MTcubm9hcmNoDQo+PiA+PiA+IG92aXJ0LWVuZ2luZS1ub3RpZmljYXRpb24tc2VydmljZS0zLjEu MC00LmZjMTcubm9hcmNoDQo+PiA+PiA+DQo+PiA+PiA+IC0tDQo+PiA+PiA+DQo+PiA+PiA+IEJl c3QgUmVnYXJkcw0KPj4gPj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+PiA+PiA+IEthcmxp IFNqw7ZiZXJnDQo+PiA+PiA+IFN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2Np ZW5jZXMNCj4+ID4+ID4gQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJlc3MgS3JvbsOlc3bDpGdlbiA4 KQ0KPj4gPj4gPiBTLTc1MCAwNyBVcHBzYWxhLCBTd2VkZW4NCj4+ID4+ID4gUGhvbmU6ICArNDYt KDApMTgtNjcgMTUgNjYNCj4+ID4+ID5rYXJsaS5zam9iZXJnQHNsdS5zZTxtYWlsdG86a2FybGku c2pvYmVyZ0BzbHUuc2U+ICA8bWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlPiAgPG1haWx0bzpr YXJsaS5zam9iZXJnQHNsdS5zZT4gPG1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2UgID4N Cj4+ID4+ID4NCj4+ID4+ID4NCj4+ID4+ID4NCj4+ID4+ID4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+ID4+ID4gVXNlcnMgbWFpbGluZyBsaXN0DQo+ PiA+PiA+VXNlcnNAb3ZpcnQub3JnPG1haWx0bzpVc2Vyc0BvdmlydC5vcmc+ICA8bWFpbHRvOlVz ZXJzQG92aXJ0Lm9yZz4gIDxtYWlsdG86VXNlcnNAb3ZpcnQub3JnPiA+aHR0cDovL2xpc3RzLm92 aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzICA+DQo+PiA+Pg0KPj4gPj4gICAtLQ0KPj4g Pj4NCj4+ID4+IE1lZCBWw6RubGlnYSBIw6Rsc25pbmdhcg0KPj4gPj4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQ0KPj4gPj4gS2FybGkgU2rDtmJlcmcNCj4+ID4+IFN3ZWRpc2ggVW5pdmVyc2l0eSBv ZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXMNCj4+ID4+IEJveCA3MDc5IChWaXNpdGluZyBBZGRyZXNz IEtyb27DpXN2w6RnZW4gOCkNCj4+ID4+IFMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbg0KPj4gPj4g UGhvbmU6ICs0Ni0oMCkxOC02NyAxNSA2Ng0KPj4gPj5rYXJsaS5zam9iZXJnQHNsdS5zZTxtYWls dG86a2FybGkuc2pvYmVyZ0BzbHUuc2U+ICA8bWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlPiAg PG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZT4NCj4+ID4NCj4+ID4gLS0NCj4+ID4NCj4+ID4g TWVkIFbDpG5saWdhIEjDpGxzbmluZ2FyDQo+PiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ ID4gS2FybGkgU2rDtmJlcmcNCj4+ID4gU3dlZGlzaCBVbml2ZXJzaXR5IG9mIEFncmljdWx0dXJh bCBTY2llbmNlcw0KPj4gPiBCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2Vu IDgpDQo+PiA+IFMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbg0KPj4gPiBQaG9uZTogICs0Ni0oMCkx OC02NyAxNSA2Ng0KPj4gPmthcmxpLnNqb2JlcmdAc2x1LnNlPG1haWx0bzprYXJsaS5zam9iZXJn QHNsdS5zZT4gIDxtYWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2U+ICA8bWFpbHRvOmthcmxpLnNq b2JlcmdAYWRtLnNsdS5zZT4NCj4+ID4NCj4+DQo+Pg0KPg0KPiAtLQ0KPg0KPiBNZWQgVsOkbmxp Z2EgSMOkbHNuaW5nYXINCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBLYXJsaSBTasO2YmVy Zw0KPiBTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzDQo+IEJveCA3 MDc5IChWaXNpdGluZyBBZGRyZXNzIEtyb27DpXN2w6RnZW4gOCkNCj4gUy03NTAgMDcgVXBwc2Fs YSwgU3dlZGVuDQo+IFBob25lOiAgKzQ2LSgwKTE4LTY3IDE1IDY2DQo+IGthcmxpLnNqb2JlcmdA c2x1LnNlPG1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZT4gPG1haWx0bzprYXJsaS5zam9iZXJn QGFkbS5zbHUuc2U+DQo+DQo+DQo+DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fDQo+IFVzZXJzIG1haWxpbmcgbGlzdA0KPiBVc2Vyc0BvdmlydC5vcmc8 bWFpbHRvOlVzZXJzQG92aXJ0Lm9yZz4NCj4gaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3VzZXJzDQo+DQoNCndhcyB0aGlzIHJlc29sdmVkPw0KDQoNCk5vLCBpdCBkb2Vz bsK0dCBzZWVtIHRvIG1hdHRlciwgZXZlbiBmb2xsb3dpbmcgdGhlIGV4YWN0IGluc3RydWN0aW9u cyBnaXZlbi4gQ2hhbmdpbmcgdGhlIG5hbWUvYWxpYXMgb2YgYSBkaXNrIGRvZXMgbm90IHdvcmsu IE5vdyBob3BlZnVsbHkgYWZ0ZXIgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgb24gaG93IHRv IHVwZ3JhZGUgdG8gMy4yLCBJIGNhbiB0ZXN0IGFnYWluIHRvIHNlZSBpZiB0aGVyZSBhbnkgY2hh bmdlIGluIHN1Y2Nlc3MuIEkgaG9wZSBzby4NCg0KLS0NCg0KTWVkIFbDpG5saWdhIEjDpGxzbmlu Z2FyDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpLYXJsaSBTasO2YmVyZw0KU3dlZGlzaCBVbml2 ZXJzaXR5IG9mIEFncmljdWx0dXJhbCBTY2llbmNlcw0KQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJl c3MgS3JvbsOlc3bDpGdlbiA4KQ0KUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuDQpQaG9uZTogICs0 Ni0oMCkxOC02NyAxNSA2Ng0Ka2FybGkuc2pvYmVyZ0BzbHUuc2U8bWFpbHRvOmthcmxpLnNqb2Jl cmdAYWRtLnNsdS5zZT4NCg== --_000_5F9E965F5A80BC468BE5F40576769F092E6C1EFBexchange21_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwv L0VOIj4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQo8bWV0YSBuYW1lPSJHRU5FUkFUT1Ii IGNvbnRlbnQ9Ikd0a0hUTUwvNC40LjQiPg0KPC9oZWFkPg0KPGJvZHk+DQpzw7ZuIDIwMTMtMDYt MjMga2xvY2thbiAyMDo0OCAmIzQzOzAzMDAgc2tyZXYgSXRhbWFyIEhlaW06DQo8YmxvY2txdW90 ZSB0eXBlPSJDSVRFIj4NCjxwcmU+Ck9uIDA2LzA1LzIwMTMgMDc6NTggQU0sIEthcmxpIFNqw7Zi ZXJnIHdyb3RlOgomZ3Q7IHRpcyAyMDEzLTA2LTA0IGtsb2NrYW4gMTY6MzIgJiM0MzswMzAwIHNr cmV2IE1pY2hhZWwgUGFzdGVybmFrOgomZ3Q7Jmd0OyBLYXJsaSwKJmd0OyZndDsKJmd0OyZndDsg T24gMDYvMDQvMjAxMyAwNDowNSBQTSwgS2FybGkgU2rDtmJlcmcgd3JvdGU6CiZndDsmZ3Q7ICZn dDsgSGVsbG8gZXZlcnlvbmUhCiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyBJwrRtIGFsbW9z dCBkb25lIHdpdGggUHl0aG9uIGZvciBub3cuIEJ1dCB0aGUgbGFzdCB0aGluZyBJIHNpdGxsIGNh bsK0dCBzZWVtIHRvIGdldCBhbnkgaGFuZyBvbiBpcyBob3cgdG8gY2hhbmdlIHRoZSBuYW1lIG9m IGEgVk3CtHMgZGlzazoKJmd0OyZndDsKJmd0OyZndDsgcGxlYXNlIHVzZSBkaXNrLmFsaWFzIHBy b3BlcnR5LCBuYW1lIGlzIGRlcHJlY2F0ZWQgYW5kIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5 IG9ubHkuCiZndDsKJmd0OyBJdCBkb2VzbsK0dCBtYXR0ZXIgd2hhdCBwcm9wZXJ0eSBJIHVzZSwg dGhlIG5hbWUgZG9lc27CtHQgY2hhbmdlIGFueSB3YXkhCiZndDsgUGxlYXNlIHJlYWQgYmVsb3cs IHlvdcK0bGwgc2VlIEkgZXZlbiB0cmllZCBkZWZpbmluZyAuYWxpYXMgYW5kIC5uYW1lIGF0CiZn dDsgdGhlIHNhbWUgdGltZSwgdGhlbiB1cGRhdGUsIGJ1dCBzdGlsbCBubyBjaGFuZ2UuIENvdWxk IHlvdSBwbGVhc2UgcG9zdAomZ3Q7IHRoZSBjb3JyZWN0LCBhbmQgd29ya2luZyB3YXkgb2YgZG9p bmcgdGhpcywgcGxlYXNlLgomZ3Q7CiZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0 OyZndDsmZ3Q7Jmd0OyBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJCiZndDsmZ3Q7ICZndDsm Z3Q7Jmd0OyZndDsgZnJvbSBvdmlydHNkay54bWwgaW1wb3J0IHBhcmFtcwomZ3Q7Jmd0OyAmZ3Q7 Jmd0OyZndDsmZ3Q7IGFwaSA9IEFQSSh1cmw9JzxhIGhyZWY9Imh0dHBzOi8vIj5odHRwczovLzwv YT4ke09WSVJUfTo0NDMgJmx0OzxhIGhyZWY9Imh0dHBzOi8vc3Rvcm0uc2x1LnNlOjQ0MyI+aHR0 cHM6Ly9zdG9ybS5zbHUuc2U6NDQzPC9hPiZndDsnLCBjYV9maWxlPScvZXRjL3BraS9vdmlydC1l bmdpbmUvY2EucGVtJywgdXNlcm5hbWU9J2FkbWluQGludGVybmFsICZsdDs8YSBocmVmPSJtYWls dG86J2FkbWluQGludGVybmFsIj5tYWlsdG86J2FkbWluQGludGVybmFsPC9hPiZndDsnLAomZ3Q7 Jmd0OyAmZ3Q7IHBhc3N3b3JkPSdsZXRtZWluIScpCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsg Vk1fTkFNRSA9ICdGZWRvcmFUZXN0JwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IERJU0tfTkFN RSA9ICclc19EaXNrMScgJSAoVk1fTkFNRSkKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bSA9 IGFwaS52bXMuZ2V0KFZNX05BTUUpCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrID0g dm0uZGlza3MubGlzdCgpWzBdCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrLmFsaWFz ID0gJ2Zvb2JhcicKJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2submFtZSA9ICdmb29i YXInCiZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrLnVwZGF0ZSgpCiZndDsmZ3Q7ICZn dDsgJmx0O292aXJ0c2RrLmluZnJhc3RydWN0dXJlLmJyb2tlcnMuVk1EaXNrIG9iamVjdCBhdCAw eDI1ZDdhZDAmZ3Q7CiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyBCdXQgdGhlIG5hbWUvYWxp YXMvd2hhdGV2IG5ldmVyIGNoYW5nZXMuLi4KJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7IENv dWxkIHlvdSBwbGVhc2UgZ2l2ZSBtZSBhbiBleGFjdCwgYW5kIHdvcmtpbmcgZXhhbXBsZSBvZiBo b3cgdG8gY2hhbmdlIHRoZSBuYW1lIG9mIGEgVk3CtHMgZGlzay4gVGhpcyBpcyB0aGUgbGFzdCBz aW1wbGUgdGhpbmcgSSB3b3VsZCBsaWtlIHRvIGFjY29tcGxpc2ggYmVmb3JlIHNoYXJpbmcgYQom Z3Q7Jmd0OyAmZ3Q7IGxpdHRsZSBzb21ldGhpbmcgYmFjayB3aXRoIHnCtGFsbCh0ZWFzZXIsIHRl YXNlcikuCiZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyAvS2FybGkKJmd0OyZndDsgJmd0Owom Z3Q7Jmd0OyAmZ3Q7IHPDtm4gMjAxMy0wNS0yNiBrbG9ja2FuIDAyOjQ4IC0wNDAwIHNrcmV2IEls aWEgTWVlcm92aWNoOgomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBIaSwKJmd0OyZndDsgJmd0OyZndDsKJmd0 OyZndDsgJmd0OyZndDsgTGV0cyBmb2xsb3c8YSBocmVmPSJodHRwOi8vd3d3Lm92aXJ0Lm9yZy9Q eXRob24tc2RrIj5odHRwOi8vd3d3Lm92aXJ0Lm9yZy9QeXRob24tc2RrPC9hPgomZ3Q7Jmd0OyAm Z3Q7Jmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBJbiBbMV06IGZyb20gb3ZpcnRzZGsueG1sIGltcG9y dCBwYXJhbXMKJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsgSW4gWzJdOiBmcm9t IG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJCiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsm Z3Q7IEluIFszXToKJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsgSW4gWzRdOiBh cGkgPSBBUEkoKioqLCAqKiosICoqKikKJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZn dDsgSW4gWzVdOiB1c2VyX25hbWUgPSAmcXVvdDsqKiomcXVvdDsKJmd0OyZndDsgJmd0OyZndDsK Jmd0OyZndDsgJmd0OyZndDsgSW4gWzZdOiBkb21haW4gPSAmcXVvdDsqKiouKioqLioqKi5yZWRo YXQuY29tJnF1b3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IEluIFs3XTog dXNlcl9kb21haW4gPSBwYXJhbXMuRG9tYWluKG5hbWU9ZG9tYWluKQomZ3Q7Jmd0OyAmZ3Q7Jmd0 OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBJbiBbOF06IHVzZXJfbmFtZSA9ICZxdW90O3swfUB7MX0mcXVv dDsuZm9ybWF0KHVzZXJfbmFtZSwgZG9tYWluKQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAjIGNyZWF0aW5n IHVzZXIKJmd0OyZndDsgJmd0OyZndDsgSW4gWzldOiBuZXdfdXNlciA9IHBhcmFtcy5Vc2VyKGRv bWFpbj11c2VyX2RvbWFpbiwgdXNlcl9uYW1lPXVzZXJfbmFtZSkKJmd0OyZndDsgJmd0OyZndDsg IyBhZGRpbmcgdXNlciB0byB1c2VycyByZXNvdXJjZQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBJbiBbMTBd OiB1c2VyID0gYXBpLnVzZXJzLmFkZChuZXdfdXNlcikKJmd0OyZndDsgJmd0OyZndDsgIyBhZGRp bmcgcm9sZSB0byB1c2VyCiZndDsmZ3Q7ICZndDsmZ3Q7IEluIFsxMV06IHVzZXIucm9sZXMuYWRk KGFwaS5yb2xlcy5nZXQoJ1VzZXJSb2xlJykpCiZndDsmZ3Q7ICZndDsmZ3Q7IE91dFsxMV06ICZs dDtvdmlydHNkay5pbmZyYXN0cnVjdHVyZS5icm9rZXJzLlVzZXJSb2xlIG9iamVjdCBhdCAweDMw Yzc1OTAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IFRoYW5rcwomZ3Q7 Jmd0OyAmZ3Q7Jmd0OyBJbGlhCiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IC0t LS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KJmd0OyZndDsgJmd0OyZndDsgRnJvbTogJnF1b3Q7 S2FybGkgU2rDtmJlcmcmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzpLYXJsaS5Tam9iZXJnQHNs dS5zZSI+S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOkthcmxp LlNqb2JlcmdAc2x1LnNlIj5tYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+Jmd0OyAgJmx0 OzxhIGhyZWY9Im1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZSI+bWFpbHRvOkthcmxpLlNqb2Jl cmdAc2x1LnNlPC9hPiZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IFRvOiAmcXVvdDtJbGlhIE1l ZXJvdmljaCZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20iPmlt ZWVyb3ZpQHJlZGhhdC5jb208L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmltZWVyb3ZpQHJlZGhh dC5jb20iPm1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPC9hPiZndDsgICZsdDs8YSBocmVmPSJt YWlsdG86aW1lZXJvdmlAcmVkaGF0LmNvbSI+bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb208L2E+ Jmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsgQ2M6ICZxdW90O01pY2hhZWwgUGFzdGVybmFrJnF1 b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbSI+bXBhc3Rlcm5AcmVk aGF0LmNvbTwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbSI+bWFp bHRvOm1wYXN0ZXJuQHJlZGhhdC5jb208L2E+Jmd0OyAgJmx0OzxhIGhyZWY9Im1haWx0bzptcGFz dGVybkByZWRoYXQuY29tIj5tYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbTwvYT4mZ3Q7Jmd0Oywg JnF1b3Q7dXNlcnMmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzp1c2Vyc0BvdmlydC5vcmciPnVz ZXJzQG92aXJ0Lm9yZzwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86dXNlcnNAb3ZpcnQub3JnIj5t YWlsdG86dXNlcnNAb3ZpcnQub3JnPC9hPiZndDsgICZsdDs8YSBocmVmPSJtYWlsdG86dXNlcnNA b3ZpcnQub3JnIj5tYWlsdG86dXNlcnNAb3ZpcnQub3JnPC9hPiZndDsmZ3Q7LCAmcXVvdDtFbGVu YSBEb2xpbmluJnF1b3Q7ICZsdDs8YSBocmVmPSJtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbSI+ ZWRvbGluaW5AcmVkaGF0LmNvbTwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86ZWRvbGluaW5AcmVk aGF0LmNvbSI+bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb208L2E+Jmd0OyAgJmx0OzxhIGhyZWY9 Im1haWx0bzplZG9saW5pbkByZWRoYXQuY29tIj5tYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbTwv YT4mZ3Q7Jmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBTZW50OiBGcmlkYXksIE1heSAyNCwgMjAxMyA4 OjA0OjQzIEFNCiZndDsmZ3Q7ICZndDsmZ3Q7IFN1YmplY3Q6IFJlOiBbVXNlcnNdIFByb2JsZW1z IHVzaW5nIHRoZSBQeXRob25TREsKJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsg dG9yIDIwMTMtMDUtMjMga2xvY2thbiAwODo1MyAtMDQwMCBza3JldiBJbGlhIE1lZXJvdmljaDoK Jmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsgSXQgc2hvdWxkIGJlIGxpa2U6CiZn dDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IGZyb20gb3ZpcnRzZGsueG1sIGltcG9y dCBwYXJhbXMKJmd0OyZndDsgJmd0OyZndDsgZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQom Z3Q7Jmd0OyAmZ3Q7Jmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBhcGkgPSBBUEkoJyonLCAnKicsICcq JykKJmd0OyZndDsgJmd0OyZndDsgdm0gPSBhcGkudm1zLmxpc3QoKVswXQomZ3Q7Jmd0OyAmZ3Q7 Jmd0OyB1c2VyID0gIGFwaS51c2Vycy5saXN0KClbMV0KJmd0OyZndDsgJmd0OyZndDsgcm9sZSA9 IGFwaS5yb2xlcy5saXN0KClbMV0KJmd0OyZndDsgJmd0OyZndDsgcGVybWl0ID0gcGFyYW1zLlBl cm1pc3Npb24oKQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBwZXJtaXQuc2V0X3JvbGUocm9sZSkKJmd0OyZn dDsgJmd0OyZndDsgcGVybWl0LnNldF92bSh2bSkKJmd0OyZndDsgJmd0OyZndDsgdXNlci5wZXJt aXNzaW9ucy5hZGQocGVybWl0KQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBUaGFuayB5b3UgdmVyeSBtdWNo LCBJwrRtIGdvaW5nIHRvIHRlc3QgdGhpcyBvdXQgdG9kYXkhIENvdWxkIHlvdSBhbHNvIHNob3cg bWUgaG93IHRvIGZpcnN0IGFkZCBhIHVzZXIgdGhhdCBpc27CtHQgaW4gdGhlIHN5c3RlbSB5ZXQs IHBsZWFzZT8KJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0 OyZndDsKJmd0OyZndDsgJmd0OyZndDsgLS0tLS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQomZ3Q7 Jmd0OyAmZ3Q7Jmd0OyBGcm9tOiAmcXVvdDtJbGlhIE1lZXJvdmljaCZxdW90OyAmbHQ7PGEgaHJl Zj0ibWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20iPmltZWVyb3ZpQHJlZGhhdC5jb208L2E+ICAm bHQ7PGEgaHJlZj0ibWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb20iPm1haWx0bzppbWVlcm92aUBy ZWRoYXQuY29tPC9hPiZndDsgICZsdDs8YSBocmVmPSJtYWlsdG86aW1lZXJvdmlAcmVkaGF0LmNv bSI+bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5jb208L2E+Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsm Z3Q7IFRvOiAmcXVvdDtNaWNoYWVsIFBhc3Rlcm5hayZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRv Om1wYXN0ZXJuQHJlZGhhdC5jb20iPm1wYXN0ZXJuQHJlZGhhdC5jb208L2E+ICAmbHQ7PGEgaHJl Zj0ibWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20iPm1haWx0bzptcGFzdGVybkByZWRoYXQuY29t PC9hPiZndDsgICZsdDs8YSBocmVmPSJtYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbSI+bWFpbHRv Om1wYXN0ZXJuQHJlZGhhdC5jb208L2E+Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IENjOiAm cXVvdDt1c2VycyZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyI+dXNl cnNAb3ZpcnQub3JnPC9hPiAgJmx0OzxhIGhyZWY9Im1haWx0bzp1c2Vyc0BvdmlydC5vcmciPm1h aWx0bzp1c2Vyc0BvdmlydC5vcmc8L2E+Jmd0OyAgJmx0OzxhIGhyZWY9Im1haWx0bzp1c2Vyc0Bv dmlydC5vcmciPm1haWx0bzp1c2Vyc0BvdmlydC5vcmc8L2E+Jmd0OyAmZ3Q7LCAmcXVvdDtLYXJs aSBTasO2YmVyZyZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNl Ij5LYXJsaS5Tam9iZXJnQHNsdS5zZTwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86S2FybGkuU2pv YmVyZ0BzbHUuc2UiPm1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZTwvYT4mZ3Q7ICAmbHQ7PGEg aHJlZj0ibWFpbHRvOkthcmxpLlNqb2JlcmdAc2x1LnNlIj5tYWlsdG86S2FybGkuU2pvYmVyZ0Bz bHUuc2U8L2E+Jmd0OyAmZ3Q7LCAmcXVvdDtFbGVuYSBEb2xpbmluJnF1b3Q7ICZsdDs8YSBocmVm PSJtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbSI+ZWRvbGluaW5AcmVkaGF0LmNvbTwvYT4gICZs dDs8YSBocmVmPSJtYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbSI+bWFpbHRvOmVkb2xpbmluQHJl ZGhhdC5jb208L2E+Jmd0OyAgJmx0OzxhIGhyZWY9Im1haWx0bzplZG9saW5pbkByZWRoYXQuY29t Ij5tYWlsdG86ZWRvbGluaW5AcmVkaGF0LmNvbTwvYT4mZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyZn dDsgU2VudDogVGh1cnNkYXksIE1heSAyMywgMjAxMyAzOjMwOjI3IFBNCiZndDsmZ3Q7ICZndDsm Z3Q7IFN1YmplY3Q6IFJlOiBbVXNlcnNdIFByb2JsZW1zIHVzaW5nIHRoZSBQeXRob25TREsKJmd0 OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsgSGksCiZndDsmZ3Q7ICZndDsmZ3Q7CiZn dDsmZ3Q7ICZndDsmZ3Q7IFdlIGhhdmUgc2V2ZXJhbCB0ZXN0cyBsaWtlOgomZ3Q7Jmd0OyAmZ3Q7 Jmd0OyAmcXVvdDtBZGQgVk0gcGVybWlzc2lvbiB0byB1c2VyJnF1b3Q7LCB0aGF0IGFyZSB1c2lu ZyBBUlQncyBhcnQvcmhldm1fYXBpL3Rlc3RzX2xpYi9sb3dfbGV2ZWwvbWxhLnB5IGFkZFBlcm1p dHNUb1VzZXIgZnVuY3Rpb24uCiZndDsmZ3Q7ICZndDsmZ3Q7IFRoaXMgaXMgZ2VuZXJpYyBmdW5j dGlvbiBidXQgaXQgc2hvdWxkbid0IGJlIGhhcmQgdG8gcHJlcGFyZSBTREsgY29kZSB3aXRoIHRo ZSBzYW1lIGZ1bmN0aW9uYWxpdHkuCiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7 IFRoYW5rcwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBJbGlhCiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7 ICZndDsmZ3Q7IC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KJmd0OyZndDsgJmd0OyZndDsg RnJvbTogJnF1b3Q7TWljaGFlbCBQYXN0ZXJuYWsmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzpt cGFzdGVybkByZWRoYXQuY29tIj5tcGFzdGVybkByZWRoYXQuY29tPC9hPiAgJmx0OzxhIGhyZWY9 Im1haWx0bzptcGFzdGVybkByZWRoYXQuY29tIj5tYWlsdG86bXBhc3Rlcm5AcmVkaGF0LmNvbTwv YT4mZ3Q7ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOm1wYXN0ZXJuQHJlZGhhdC5jb20iPm1haWx0bzpt cGFzdGVybkByZWRoYXQuY29tPC9hPiZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBUbzogJnF1 b3Q7S2FybGkgU2rDtmJlcmcmcXVvdDsgJmx0OzxhIGhyZWY9Im1haWx0bzpLYXJsaS5Tam9iZXJn QHNsdS5zZSI+S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOkth cmxpLlNqb2JlcmdAc2x1LnNlIj5tYWlsdG86S2FybGkuU2pvYmVyZ0BzbHUuc2U8L2E+Jmd0OyAg Jmx0OzxhIGhyZWY9Im1haWx0bzpLYXJsaS5Tam9iZXJnQHNsdS5zZSI+bWFpbHRvOkthcmxpLlNq b2JlcmdAc2x1LnNlPC9hPiZndDsgJmd0OywgJnF1b3Q7RWxlbmEgRG9saW5pbiZxdW90OyAmbHQ7 PGEgaHJlZj0ibWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20iPmVkb2xpbmluQHJlZGhhdC5jb208 L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb20iPm1haWx0bzplZG9s aW5pbkByZWRoYXQuY29tPC9hPiZndDsgICZsdDs8YSBocmVmPSJtYWlsdG86ZWRvbGluaW5AcmVk aGF0LmNvbSI+bWFpbHRvOmVkb2xpbmluQHJlZGhhdC5jb208L2E+Jmd0OyAmZ3Q7LCAmcXVvdDtJ bGlhIE1lZXJvdmljaCZxdW90OyAmbHQ7PGEgaHJlZj0ibWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5j b20iPmltZWVyb3ZpQHJlZGhhdC5jb208L2E+ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmltZWVyb3Zp QHJlZGhhdC5jb20iPm1haWx0bzppbWVlcm92aUByZWRoYXQuY29tPC9hPiZndDsgICZsdDs8YSBo cmVmPSJtYWlsdG86aW1lZXJvdmlAcmVkaGF0LmNvbSI+bWFpbHRvOmltZWVyb3ZpQHJlZGhhdC5j b208L2E+Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IENjOiAmcXVvdDt1c2VycyZxdW90OyAm bHQ7PGEgaHJlZj0ibWFpbHRvOnVzZXJzQG92aXJ0Lm9yZyI+dXNlcnNAb3ZpcnQub3JnPC9hPiAg Jmx0OzxhIGhyZWY9Im1haWx0bzp1c2Vyc0BvdmlydC5vcmciPm1haWx0bzp1c2Vyc0BvdmlydC5v cmc8L2E+Jmd0OyAgJmx0OzxhIGhyZWY9Im1haWx0bzp1c2Vyc0BvdmlydC5vcmciPm1haWx0bzp1 c2Vyc0BvdmlydC5vcmc8L2E+Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IFNlbnQ6IFRodXJz ZGF5LCBNYXkgMjMsIDIwMTMgMzoxMDoyMSBQTQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBTdWJqZWN0OiBS ZTogW1VzZXJzXSBQcm9ibGVtcyB1c2luZyB0aGUgUHl0aG9uU0RLCiZndDsmZ3Q7ICZndDsmZ3Q7 CiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IEhpIEthcmxpLAomZ3Q7Jmd0OyAm Z3Q7Jmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBPbiAwNS8yMy8yMDEzIDEyOjM1IFBNLCBLYXJsaSBT asO2YmVyZyB3cm90ZToKJmd0OyZndDsgJmd0OyZndDsgJmd0OyBIaSEKJmd0OyZndDsgJmd0OyZn dDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7IFdlwrRyZSBpbiB0aGUgcHJvY2VzcyBvZiBi dWlsZGluZyBhbiBvcmRlcnBvcnRhbCB3aGVyZSBvdXIgY3VzdG9tZXJzIHdpbGwgYmUgYWJsZSB0 byBsb2cgaW4sIHNlbGVjdCBhIHZpcnR1YWwgbWFjaGluZSB0ZW1wbGF0ZSwgdHlwZSBpbiBhIGRl c2lyZWQgaG9zdG5hbWUgYW5kIGl0IHdpbGwgYmUKJmd0OyZndDsgJmd0OyZndDsgJmd0OyBhdXRv bWF0aWNhbGx5IGNyZWF0ZWQsIGFuZCB0aGV5IHJlY2lldmUgYSBtYWlsIGV4cGxhaW5pbmcgd2hh dCB0aGV5wrR2ZSBnb3R0ZW4gdGhlbXNlbHZlcyBpbnRvOikuIEZvciB0aGlzIEkgZmlndXJlZCB0 aGUgUHl0aG9uU0RLIHdvdWxkIGJlIHRoZSBiZXN0IGNob2ljZSBidXQgScK0bSBoYXZpbmcKJmd0 OyZndDsgJmd0OyZndDsgJmd0OyB0cm91YmxlIHVzaW5nIGl0LiBXaGF0IHdlwrR2ZSBkb25lIHNv IGZhciBpczoKJmd0OyZndDsgJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7IDEp IENyZWF0ZSBhIG5ldyBWTSBmcm9tIGEgdGVtcGxhdGU7IE9LLiBJIGZvdW5kIGFuIGV4YW1wbGUg YW5kIGl0IHdvcmtlZCBPT1RCCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsgMikgUmVuYW1lIHRoZSBu ZXcgVk3CtHMgZGlzayBmcm9tICR7VGVtcGxhdGVOYW1lfV9EaXNrMSB0byAke1ZNTmFtZX1fRGlz azE7IE5vdCBPSy4gSSBmb3VuZCBhbiBleGFtcGxlIG9mIGhvdyB0byBjaGFuZ2UgdGhlIG5hbWUg b2YgYSBWTU5pYyBhbmQgdGhhdCB3b3JrcywgYnV0IHVzaW5nIHRoZQomZ3Q7Jmd0OyAmZ3Q7Jmd0 OyAmZ3Q7IHNhbWUgbWV0aG9kIHRvIGNoYW5nZSBWTURpc2vCtHMgbmFtZSBkb2VzIG5vdCAoRllJ LCB0aGUgVk0gb25seSBoYXMgb25lIFZOaWMgYW5kIFZEaXNrKToKJmd0OyZndDsgJmd0OyZndDsg Jmd0OyZndDsmZ3Q7Jmd0OyBmcm9tIG92aXJ0c2RrLnhtbCBpbXBvcnQgcGFyYW1zCiZndDsmZ3Q7 ICZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQom Z3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IGFwaSA9IEFQSSh1cmw9JyBodHRwczov LyAke0VOR0lORX06NDQzL2FwaScsICZsdDs8YSBocmVmPSJodHRwczovL3N0b3JtLnNsdS5zZTo0 NDMvYXBpJyI+aHR0cHM6Ly9zdG9ybS5zbHUuc2U6NDQzL2FwaSc8L2E+ICAsJmd0OyBjYV9maWxl PScke0NBQ0VSVH0nLCB1c2VybmFtZT0nYWRtaW5AaW50ZXJuYWwgJmx0OzxhIGhyZWY9Im1haWx0 bzonYWRtaW5AaW50ZXJuYWwiPm1haWx0bzonYWRtaW5AaW50ZXJuYWw8L2E+ICAmZ3Q7JywgcGFz c3dvcmQ9J2xldG1laW4hJykKJmd0OyZndDsgJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bSA9 IGFwaS52bXMuZ2V0KG5hbWU9J1ZNTmFtZScpCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsKJmd0OyZn dDsgJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bW5pYyA9IHZtLm5pY3MuZ2V0KG5hbWU9Jyon KQomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmljLm5hbWUKJmd0OyZndDsg Jmd0OyZndDsgJmd0OyAnbmljMScKJmd0OyZndDsgJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyBh cGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5uaWNzLmdldChuYW1lPScqJykKJmd0OyZndDsgJmd0 OyZndDsgJmd0OyAnbmljMScKJmd0OyZndDsgJmd0OyZndDsgJmd0OyZndDsmZ3Q7Jmd0OyB2bW5p Yy5uYW1lPSduaWMyJwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmljLnVw ZGF0ZSgpCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgYXBpLnZtcy5nZXQobmFt ZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsgJ25p YzInCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1uaWMubmFtZQomZ3Q7Jmd0 OyAmZ3Q7Jmd0OyAmZ3Q7ICduaWMyJwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZn dDsmZ3Q7ICZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrID0gdm0uZGlza3MuZ2V0KG5hbWU9JyonKQom Z3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IHZtZGlzay5uYW1lCiZndDsmZ3Q7ICZn dDsmZ3Q7ICZndDsgJ1RlbXBsYXRlTmFtZV9EaXNrMScKJmd0OyZndDsgJmd0OyZndDsgJmd0OyZn dDsmZ3Q7Jmd0OyBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5kaXNrcy5nZXQobmFtZT0nKicp CiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7IHRoaXMga2luZCBvZiBjYWxsIGlz IG5vdCBlZmZpY2llbnQsIGJ5IGZldGNoaW5nIHRoZSBkaXNrCiZndDsmZ3Q7ICZndDsmZ3Q7IHlv dSBhbHNvIGZldGNoIHRoZSB2bSwKJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsg aSdkIHN1Z2dlc3QgZmV0Y2ggdm0sIHN0b3JlIGl0IGluIGxvY2FsIHZhcmlhYmxlIGFuZCB0aGVu CiZndDsmZ3Q7ICZndDsmZ3Q7IHJldXNlIGl0IGZvciBhbnkgc3ViLWNvbGxlY3Rpb24gbWFuaXB1 bGF0aW9ucy4KJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0 OyZndDsgJmd0OyAnVGVtcGxhdGVOYW1lX0Rpc2sxJwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7Jmd0 OyZndDsmZ3Q7IHZtZGlzay5uYW1lPSdWTU5hbWVfRGlzazEnCiZndDsmZ3Q7ICZndDsmZ3Q7ICZn dDsmZ3Q7Jmd0OyZndDsgdm1kaXNrLnVwZGF0ZSgpCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsmZ3Q7 Jmd0OyZndDsgdm1kaXNrLm5hbWUKJmd0OyZndDsgJmd0OyZndDsgJmd0OyAnVk1OYW1lX0Rpc2sx JwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7Jmd0OyZndDsmZ3Q7IGFwaS52bXMuZ2V0KG5hbWU9J1ZN TmFtZScpLmRpc2tzLmdldChuYW1lPScqJykKJmd0OyZndDsgJmd0OyZndDsgJmd0OyAnVGVtcGxh dGVOYW1lX0Rpc2sxJwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7ICZn dDsgU2VlPyBBbSBJIGhvbGRpbmcgaXQgd3Jvbmc/CiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7 ICZndDsmZ3Q7IGRpc2submFtZSBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlICdhbGlhcycgaW5z dGVhZC4KJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAm Z3Q7Jmd0OyAmZ3Q7IDMpIENyZWF0ZSBhIHNuYXBzaG90IGNhbGxlZCAmcXVvdDtPcmlnaW4mcXVv dDssIHNvIGlmIGEgY3VzdG9tZXIgY2FsbHMgaW4gYW5kIHNheXMgdGhlecK0dmUgYm9ya2VkIGl0 IGNvbXBsZXRlbHksIHdlwrRsbCBqdXN0IHJldmVydCB0byBpdMK0cyAmcXVvdDtPcmlnaW4mcXVv dDsgYW5kIHRoZXnCtHJlIHVwIGFuZCBydW5uaW5nIGFnYWluOwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAm Z3Q7IE9LLCBmb3VuZCBhbm90aGVyIE9PVEIgZXhhbXBsZSwgdGhhbmsgeW91LgomZ3Q7Jmd0OyAm Z3Q7Jmd0OyAmZ3Q7IDQpIEFkZCB0aGUgY3VzdG9tZXIgdG8gVk3CtHMgUGVybWlzc2lvbnMgd2l0 aCBhbiBhcHByb3ByaWF0ZSByb2xlOyBOb3QgT0suIEkgaGF2ZSBmb3VuZCBubyBleGFtcGxlcyBv biBob3cgdG8gZG8gdGhpcyBhbmQganVzdCBkb27CtHQga25vdyB3aGVyZSB0byBzdGFydCBsb29r aW5nLiBCVFcsCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsgY3JlYXRpbmcgYSBuZXcgVk0gd2l0aCBQ eXRob24gcmVzdWx0cyBpbiBQZXJtaXNzaW9ucyBjb21wbGV0ZWx5IGVtcHR5LCBubyBpbmhlcml0 YW5jZSBlaXRoZXIuIERvbsK0dCBrbm93IGlmIHRoYXQgaXMgaW50ZW5kZWQuLi4KJmd0OyZndDsg Jmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsgZWxlbmEsIGlsaWEsCiZndDsmZ3Q7ICZndDsmZ3Q7 CiZndDsmZ3Q7ICZndDsmZ3Q7IGd1eXMsIGRvIHlvdSBoYXZlIGFueSBwZXJtaXNzaW9uIHJlbGF0 ZWQgY29kZSB0byBzaGFyZT8KJmd0OyZndDsgJmd0OyZndDsKJmd0OyZndDsgJmd0OyZndDsgJmd0 OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7IGNsaWVudCMgcnBtIC1xYSB8IGdyZXAgb3ZpcnQKJmd0 OyZndDsgJmd0OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtY2xpLTMuMi4wLjExLTEuZmMxNy5ub2Fy Y2gKJmd0OyZndDsgJmd0OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtc2RrLTMuMi4wLjEwLTEuZmMx Ny5ub2FyY2gKJmd0OyZndDsgJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7IGVu Z2luZSMgcnBtIC1xYSB8IGdyZXAgb3ZpcnQKJmd0OyZndDsgJmd0OyZndDsgJmd0OyBvdmlydC1l bmdpbmUtY29uZmlnLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyZndDsgJmd0OyBv dmlydC1lbmdpbmUtZGJzY3JpcHRzLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyZn dDsgJmd0OyBvdmlydC1sb2ctY29sbGVjdG9yLTMuMS4wLTAuZ2l0MTBkNzE5LmZjMTcubm9hcmNo CiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLXJlc3RhcGktMy4xLjAtNC5mYzE3 Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWltYWdlLXVwbG9hZGVyLTMuMS4w LTAuZ2l0OWM0MmM4LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5n aW5lLWdlbmVyaWNhcGktMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7 IG92aXJ0LWlzby11cGxvYWRlci0zLjEuMC0wLmdpdDE4NDFkOS5mYzE3Lm5vYXJjaAomZ3Q7Jmd0 OyAmZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWVuZ2luZS13ZWJhZG1pbi1wb3J0YWwtMy4xLjAtNC5mYzE3 Lm5vYXJjaAomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7IG92aXJ0LWVuZ2luZS1zZXR1cC0zLjEuMC00 LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLXNkay0zLjIu MC4yLTEuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyZndDsgJmd0OyBvdmlydC1lbmdpbmUtYmFj a2VuZC0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsgb3ZpcnQtZW5n aW5lLXRvb2xzLWNvbW1vbi0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZndDsmZ3Q7ICZn dDsgb3ZpcnQtZW5naW5lLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyZndDsgJmd0OyZndDsgJmd0 OyBvdmlydC1lbmdpbmUtdXNlcnBvcnRhbC0zLjEuMC00LmZjMTcubm9hcmNoCiZndDsmZ3Q7ICZn dDsmZ3Q7ICZndDsgb3ZpcnQtZW5naW5lLW5vdGlmaWNhdGlvbi1zZXJ2aWNlLTMuMS4wLTQuZmMx Ny5ub2FyY2gKJmd0OyZndDsgJmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7IC0t CiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyZndDsgJmd0OyBCZXN0IFJlZ2Fy ZHMKJmd0OyZndDsgJmd0OyZndDsgJmd0OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiZndDsmZ3Q7 ICZndDsmZ3Q7ICZndDsgS2FybGkgU2rDtmJlcmcKJmd0OyZndDsgJmd0OyZndDsgJmd0OyBTd2Vk aXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzCiZndDsmZ3Q7ICZndDsmZ3Q7 ICZndDsgQm94IDcwNzkgKFZpc2l0aW5nIEFkZHJlc3MgS3JvbsOlc3bDpGdlbiA4KQomZ3Q7Jmd0 OyAmZ3Q7Jmd0OyAmZ3Q7IFMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbgomZ3Q7Jmd0OyAmZ3Q7Jmd0 OyAmZ3Q7IFBob25lOiAgJiM0Mzs0Ni0oMCkxOC02NyAxNSA2NgomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAm Z3Q7PGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlIj5rYXJsaS5zam9iZXJnQHNs dS5zZTwvYT4gICZsdDs8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2UiPm1haWx0 bzprYXJsaS5zam9iZXJnQHNsdS5zZTwvYT4mZ3Q7ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmthcmxp LnNqb2JlcmdAc2x1LnNlIj5tYWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2U8L2E+Jmd0OyAmbHQ7 PGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAYWRtLnNsdS5zZSI+bWFpbHRvOmthcmxpLnNq b2JlcmdAYWRtLnNsdS5zZTwvYT4gICZndDsKJmd0OyZndDsgJmd0OyZndDsgJmd0OwomZ3Q7Jmd0 OyAmZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7ICZndDsKJmd0OyZndDsgJmd0OyZndDsg Jmd0OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwomZ3Q7 Jmd0OyAmZ3Q7Jmd0OyAmZ3Q7IFVzZXJzIG1haWxpbmcgbGlzdAomZ3Q7Jmd0OyAmZ3Q7Jmd0OyAm Z3Q7PGEgaHJlZj0ibWFpbHRvOlVzZXJzQG92aXJ0Lm9yZyI+VXNlcnNAb3ZpcnQub3JnPC9hPiAg Jmx0OzxhIGhyZWY9Im1haWx0bzpVc2Vyc0BvdmlydC5vcmciPm1haWx0bzpVc2Vyc0BvdmlydC5v cmc8L2E+Jmd0OyAgJmx0OzxhIGhyZWY9Im1haWx0bzpVc2Vyc0BvdmlydC5vcmciPm1haWx0bzpV c2Vyc0BvdmlydC5vcmc8L2E+Jmd0OyAmZ3Q7PGEgaHJlZj0iaHR0cDovL2xpc3RzLm92aXJ0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzIj5odHRwOi8vbGlzdHMub3ZpcnQub3JnL21haWxtYW4v bGlzdGluZm8vdXNlcnM8L2E+ICAmZ3Q7CiZndDsmZ3Q7ICZndDsmZ3Q7CiZndDsmZ3Q7ICZndDsm Z3Q7IAktLQomZ3Q7Jmd0OyAmZ3Q7Jmd0OwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBNZWQgVsOkbmxpZ2Eg SMOkbHNuaW5nYXIKJmd0OyZndDsgJmd0OyZndDsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQomZ3Q7 Jmd0OyAmZ3Q7Jmd0OyBLYXJsaSBTasO2YmVyZwomZ3Q7Jmd0OyAmZ3Q7Jmd0OyBTd2VkaXNoIFVu aXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzCiZndDsmZ3Q7ICZndDsmZ3Q7IEJveCA3 MDc5IChWaXNpdGluZyBBZGRyZXNzIEtyb27DpXN2w6RnZW4gOCkKJmd0OyZndDsgJmd0OyZndDsg Uy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuCiZndDsmZ3Q7ICZndDsmZ3Q7IFBob25lOiAmIzQzOzQ2 LSgwKTE4LTY3IDE1IDY2CiZndDsmZ3Q7ICZndDsmZ3Q7PGEgaHJlZj0ibWFpbHRvOmthcmxpLnNq b2JlcmdAc2x1LnNlIj5rYXJsaS5zam9iZXJnQHNsdS5zZTwvYT4gICZsdDs8YSBocmVmPSJtYWls dG86a2FybGkuc2pvYmVyZ0BzbHUuc2UiPm1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZTwvYT4m Z3Q7ICAmbHQ7PGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlIj5tYWlsdG86a2Fy bGkuc2pvYmVyZ0BzbHUuc2U8L2E+Jmd0OwomZ3Q7Jmd0OyAmZ3Q7CiZndDsmZ3Q7ICZndDsgLS0K Jmd0OyZndDsgJmd0OwomZ3Q7Jmd0OyAmZ3Q7IE1lZCBWw6RubGlnYSBIw6Rsc25pbmdhcgomZ3Q7 Jmd0OyAmZ3Q7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJmd0OyZndDsgJmd0OyBLYXJsaSBTasO2 YmVyZwomZ3Q7Jmd0OyAmZ3Q7IFN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2Np ZW5jZXMKJmd0OyZndDsgJmd0OyBCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOk Z2VuIDgpCiZndDsmZ3Q7ICZndDsgUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuCiZndDsmZ3Q7ICZn dDsgUGhvbmU6ICAmIzQzOzQ2LSgwKTE4LTY3IDE1IDY2CiZndDsmZ3Q7ICZndDs8YSBocmVmPSJt YWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2UiPmthcmxpLnNqb2JlcmdAc2x1LnNlPC9hPiAgJmx0 OzxhIGhyZWY9Im1haWx0bzprYXJsaS5zam9iZXJnQHNsdS5zZSI+bWFpbHRvOmthcmxpLnNqb2Jl cmdAc2x1LnNlPC9hPiZndDsgICZsdDs8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0u c2x1LnNlIj5tYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlPC9hPiZndDsKJmd0OyZndDsg Jmd0OwomZ3Q7Jmd0OwomZ3Q7Jmd0OwomZ3Q7CiZndDsgLS0KJmd0OwomZ3Q7IE1lZCBWw6RubGln YSBIw6Rsc25pbmdhcgomZ3Q7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJmd0OyBLYXJsaSBTasO2 YmVyZwomZ3Q7IFN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXMKJmd0 OyBCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpCiZndDsgUy03NTAg MDcgVXBwc2FsYSwgU3dlZGVuCiZndDsgUGhvbmU6ICAmIzQzOzQ2LSgwKTE4LTY3IDE1IDY2CiZn dDsgPGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlIj5rYXJsaS5zam9iZXJnQHNs dS5zZTwvYT4gJmx0OzxhIGhyZWY9Im1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2UiPm1h aWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2U8L2E+Jmd0OwomZ3Q7CiZndDsKJmd0OwomZ3Q7 IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiZndDsgVXNl cnMgbWFpbGluZyBsaXN0CiZndDsgPGEgaHJlZj0ibWFpbHRvOlVzZXJzQG92aXJ0Lm9yZyI+VXNl cnNAb3ZpcnQub3JnPC9hPgomZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFp bG1hbi9saXN0aW5mby91c2VycyI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3VzZXJzPC9hPgomZ3Q7Cgp3YXMgdGhpcyByZXNvbHZlZD8KPC9wcmU+DQo8L2Jsb2NrcXVv dGU+DQo8YnI+DQpObywgaXQgZG9lc27CtHQgc2VlbSB0byBtYXR0ZXIsIGV2ZW4gZm9sbG93aW5n IHRoZSBleGFjdCBpbnN0cnVjdGlvbnMgZ2l2ZW4uIENoYW5naW5nIHRoZSBuYW1lL2FsaWFzIG9m IGEgZGlzayBkb2VzIG5vdCB3b3JrLiBOb3cgaG9wZWZ1bGx5IGFmdGVyIGZvbGxvd2luZyB0aGUg aW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1cGdyYWRlIHRvIDMuMiwgSSBjYW4gdGVzdCBhZ2FpbiB0 byBzZWUgaWYgdGhlcmUgYW55IGNoYW5nZSBpbiBzdWNjZXNzLiBJIGhvcGUNCiBzby48YnI+DQo8 YnI+DQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+ DQo8dGJvZHk+DQo8dHI+DQo8dGQ+LS0gPGJyPg0KPGJyPg0KTWVkIFbDpG5saWdhIEjDpGxzbmlu Z2FyPGJyPg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxicj4NCkthcmxpIFNqw7ZiZXJnPGJyPg0K U3dlZGlzaCBVbml2ZXJzaXR5IG9mIEFncmljdWx0dXJhbCBTY2llbmNlczxicj4NCkJveCA3MDc5 IChWaXNpdGluZyBBZGRyZXNzIEtyb27DpXN2w6RnZW4gOCk8YnI+DQpTLTc1MCAwNyBVcHBzYWxh LCBTd2VkZW48YnI+DQpQaG9uZTogJm5ic3A7JiM0Mzs0Ni0oMCkxOC02NyAxNSA2Njxicj4NCjxh IGhyZWY9Im1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2UiPmthcmxpLnNqb2JlcmdAc2x1 LnNlPC9hPiA8L3RkPg0KPC90cj4NCjwvdGJvZHk+DQo8L3RhYmxlPg0KPC9ib2R5Pg0KPC9odG1s Pg0K --_000_5F9E965F5A80BC468BE5F40576769F092E6C1EFBexchange21_--

--_000_5F9E965F5A80BC468BE5F40576769F092A1AEB91exchange21_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 dG9yIDIwMTMtMDUtMjMga2xvY2thbiAxNToxMCArMDMwMCBza3JldiBNaWNoYWVsIFBhc3Rlcm5h azoNCg0KDQpIaSBLYXJsaSwNCg0KT24gMDUvMjMvMjAxMyAxMjozNSBQTSwgS2FybGkgU2rDtmJl cmcgd3JvdGU6DQo+IEhpIQ0KPg0KPiBXZcK0cmUgaW4gdGhlIHByb2Nlc3Mgb2YgYnVpbGRpbmcg YW4gb3JkZXJwb3J0YWwgd2hlcmUgb3VyIGN1c3RvbWVycyB3aWxsIGJlIGFibGUgdG8gbG9nIGlu LCBzZWxlY3QgYSB2aXJ0dWFsIG1hY2hpbmUgdGVtcGxhdGUsIHR5cGUgaW4gYSBkZXNpcmVkIGhv c3RuYW1lIGFuZCBpdCB3aWxsIGJlDQo+IGF1dG9tYXRpY2FsbHkgY3JlYXRlZCwgYW5kIHRoZXkg cmVjaWV2ZSBhIG1haWwgZXhwbGFpbmluZyB3aGF0IHRoZXnCtHZlIGdvdHRlbiB0aGVtc2VsdmVz IGludG86KS4gRm9yIHRoaXMgSSBmaWd1cmVkIHRoZSBQeXRob25TREsgd291bGQgYmUgdGhlIGJl c3QgY2hvaWNlIGJ1dCBJwrRtIGhhdmluZw0KPiB0cm91YmxlIHVzaW5nIGl0LiBXaGF0IHdlwrR2 ZSBkb25lIHNvIGZhciBpczoNCj4NCj4gMSkgQ3JlYXRlIGEgbmV3IFZNIGZyb20gYSB0ZW1wbGF0 ZTsgT0suIEkgZm91bmQgYW4gZXhhbXBsZSBhbmQgaXQgd29ya2VkIE9PVEINCj4gMikgUmVuYW1l IHRoZSBuZXcgVk3CtHMgZGlzayBmcm9tICR7VGVtcGxhdGVOYW1lfV9EaXNrMSB0byAke1ZNTmFt ZX1fRGlzazE7IE5vdCBPSy4gSSBmb3VuZCBhbiBleGFtcGxlIG9mIGhvdyB0byBjaGFuZ2UgdGhl IG5hbWUgb2YgYSBWTU5pYyBhbmQgdGhhdCB3b3JrcywgYnV0IHVzaW5nIHRoZQ0KPiBzYW1lIG1l dGhvZCB0byBjaGFuZ2UgVk1EaXNrwrRzIG5hbWUgZG9lcyBub3QgKEZZSSwgdGhlIFZNIG9ubHkg aGFzIG9uZSBWTmljIGFuZCBWRGlzayk6DQo+Pj4+IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBw YXJhbXMNCj4+Pj4gZnJvbSBvdmlydHNkay5hcGkgaW1wb3J0IEFQSQ0KPj4+PiBhcGkgPSBBUEko dXJsPSdodHRwczovLyR7RU5HSU5FfTo0NDMvYXBpJywgPGh0dHBzOi8vc3Rvcm0uc2x1LnNlOjQ0 My9hcGknLD4gY2FfZmlsZT0nJHtDQUNFUlR9JywgdXNlcm5hbWU9J2FkbWluQGludGVybmFsIDxt YWlsdG86J2FkbWluQGludGVybmFsPicsIHBhc3N3b3JkPSdsZXRtZWluIScpDQo+Pj4+IHZtID0g YXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykNCj4NCj4+Pj4gdm1uaWMgPSB2bS5uaWNzLmdldChu YW1lPScqJykNCj4+Pj4gdm1uaWMubmFtZQ0KPiAnbmljMScNCj4+Pj4gYXBpLnZtcy5nZXQobmFt ZT0nVk1OYW1lJykubmljcy5nZXQobmFtZT0nKicpDQo+ICduaWMxJw0KPj4+PiB2bW5pYy5uYW1l PSduaWMyJw0KPj4+PiB2bW5pYy51cGRhdGUoKQ0KPj4+PiBhcGkudm1zLmdldChuYW1lPSdWTU5h bWUnKS5uaWNzLmdldChuYW1lPScqJykNCj4gJ25pYzInDQo+Pj4+IHZtbmljLm5hbWUNCj4gJ25p YzInDQo+DQo+Pj4+IHZtZGlzayA9IHZtLmRpc2tzLmdldChuYW1lPScqJykNCj4+Pj4gdm1kaXNr Lm5hbWUNCj4gJ1RlbXBsYXRlTmFtZV9EaXNrMScNCj4+Pj4gYXBpLnZtcy5nZXQobmFtZT0nVk1O YW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQ0KDQp0aGlzIGtpbmQgb2YgY2FsbCBpcyBub3QgZWZm aWNpZW50LCBieSBmZXRjaGluZyB0aGUgZGlzaw0KeW91IGFsc28gZmV0Y2ggdGhlIHZtLA0KDQpp J2Qgc3VnZ2VzdCBmZXRjaCB2bSwgc3RvcmUgaXQgaW4gbG9jYWwgdmFyaWFibGUgYW5kIHRoZW4N CnJldXNlIGl0IGZvciBhbnkgc3ViLWNvbGxlY3Rpb24gbWFuaXB1bGF0aW9ucy4NCg0KDQpDb3Vs ZCB5b3UgcGxlYXNlIHNob3cgbWUgZXhhbXBsZSBvZiB0aGF0LCBteSBQeXRob25qb3VybmV5IHN0 YXJ0ZWQgb25seSB5ZXN0ZXJkYXk6KT8NCg0KDQoNCg0KDQo+ICdUZW1wbGF0ZU5hbWVfRGlzazEn DQo+Pj4+IHZtZGlzay5uYW1lPSdWTU5hbWVfRGlzazEnDQo+Pj4+IHZtZGlzay51cGRhdGUoKQ0K Pj4+PiB2bWRpc2submFtZQ0KPiAnVk1OYW1lX0Rpc2sxJw0KPj4+PiBhcGkudm1zLmdldChuYW1l PSdWTU5hbWUnKS5kaXNrcy5nZXQobmFtZT0nKicpDQo+ICdUZW1wbGF0ZU5hbWVfRGlzazEnDQo+ DQo+IFNlZT8gQW0gSSBob2xkaW5nIGl0IHdyb25nPw0KDQpkaXNrLm5hbWUgaXMgZGVwcmVjYXRl ZCwgcGxlYXNlIHVzZSAnYWxpYXMnIGluc3RlYWQuDQoNCg0KPj4+IHByaW50IGFwaS52bXMuZ2V0 KG5hbWU9J1ZNTmFtZScpLmRpc2tzLmdldChuYW1lPScqJykubmFtZQ0KVGVtcGxhdGVOYW1lX0Rp c2sxDQo+Pj4gcHJpbnQgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9 JyonKS5hbGlhcw0KTm9uZQ0KDQpTbyB0aGF0IGRvZXNuwrR0IHNlZW0gdG8gd29yayBlaXRoZXI/ DQoNCi9LYXJsaQ0KDQoNCg0KDQo+DQo+IDMpIENyZWF0ZSBhIHNuYXBzaG90IGNhbGxlZCAiT3Jp Z2luIiwgc28gaWYgYSBjdXN0b21lciBjYWxscyBpbiBhbmQgc2F5cyB0aGV5wrR2ZSBib3JrZWQg aXQgY29tcGxldGVseSwgd2XCtGxsIGp1c3QgcmV2ZXJ0IHRvIGl0wrRzICJPcmlnaW4iIGFuZCB0 aGV5wrRyZSB1cCBhbmQgcnVubmluZyBhZ2FpbjsNCj4gT0ssIGZvdW5kIGFub3RoZXIgT09UQiBl eGFtcGxlLCB0aGFuayB5b3UuDQo+IDQpIEFkZCB0aGUgY3VzdG9tZXIgdG8gVk3CtHMgUGVybWlz c2lvbnMgd2l0aCBhbiBhcHByb3ByaWF0ZSByb2xlOyBOb3QgT0suIEkgaGF2ZSBmb3VuZCBubyBl eGFtcGxlcyBvbiBob3cgdG8gZG8gdGhpcyBhbmQganVzdCBkb27CtHQga25vdyB3aGVyZSB0byBz dGFydCBsb29raW5nLiBCVFcsDQo+IGNyZWF0aW5nIGEgbmV3IFZNIHdpdGggUHl0aG9uIHJlc3Vs dHMgaW4gUGVybWlzc2lvbnMgY29tcGxldGVseSBlbXB0eSwgbm8gaW5oZXJpdGFuY2UgZWl0aGVy LiBEb27CtHQga25vdyBpZiB0aGF0IGlzIGludGVuZGVkLi4uDQoNCmVsZW5hLCBpbGlhLA0KDQpn dXlzLCBkbyB5b3UgaGF2ZSBhbnkgcGVybWlzc2lvbiByZWxhdGVkIGNvZGUgdG8gc2hhcmU/DQoN Cj4NCj4gY2xpZW50IyBycG0gLXFhIHwgZ3JlcCBvdmlydA0KPiBvdmlydC1lbmdpbmUtY2xpLTMu Mi4wLjExLTEuZmMxNy5ub2FyY2gNCj4gb3ZpcnQtZW5naW5lLXNkay0zLjIuMC4xMC0xLmZjMTcu bm9hcmNoDQo+DQo+IGVuZ2luZSMgcnBtIC1xYSB8IGdyZXAgb3ZpcnQNCj4gb3ZpcnQtZW5naW5l LWNvbmZpZy0zLjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS1kYnNjcmlwdHMtMy4x LjAtNC5mYzE3Lm5vYXJjaA0KPiBvdmlydC1sb2ctY29sbGVjdG9yLTMuMS4wLTAuZ2l0MTBkNzE5 LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS1yZXN0YXBpLTMuMS4wLTQuZmMxNy5ub2FyY2gN Cj4gb3ZpcnQtaW1hZ2UtdXBsb2FkZXItMy4xLjAtMC5naXQ5YzQyYzguZmMxNy5ub2FyY2gNCj4g b3ZpcnQtZW5naW5lLWdlbmVyaWNhcGktMy4xLjAtNC5mYzE3Lm5vYXJjaA0KPiBvdmlydC1pc28t dXBsb2FkZXItMy4xLjAtMC5naXQxODQxZDkuZmMxNy5ub2FyY2gNCj4gb3ZpcnQtZW5naW5lLXdl YmFkbWluLXBvcnRhbC0zLjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS1zZXR1cC0z LjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS1zZGstMy4yLjAuMi0xLmZjMTcubm9h cmNoDQo+IG92aXJ0LWVuZ2luZS1iYWNrZW5kLTMuMS4wLTQuZmMxNy5ub2FyY2gNCj4gb3ZpcnQt ZW5naW5lLXRvb2xzLWNvbW1vbi0zLjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS0z LjEuMC00LmZjMTcubm9hcmNoDQo+IG92aXJ0LWVuZ2luZS11c2VycG9ydGFsLTMuMS4wLTQuZmMx Ny5ub2FyY2gNCj4gb3ZpcnQtZW5naW5lLW5vdGlmaWNhdGlvbi1zZXJ2aWNlLTMuMS4wLTQuZmMx Ny5ub2FyY2gNCj4NCj4gLS0NCj4NCj4gQmVzdCBSZWdhcmRzDQo+IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCj4gS2FybGkgU2rDtmJlcmcNCj4gU3dlZGlzaCBVbml2ZXJzaXR5IG9mIEFncmljdWx0 dXJhbCBTY2llbmNlcw0KPiBCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2Vu IDgpDQo+IFMtNzUwIDA3IFVwcHNhbGEsIFN3ZWRlbg0KPiBQaG9uZTogICs0Ni0oMCkxOC02NyAx NSA2Ng0KPiBrYXJsaS5zam9iZXJnQHNsdS5zZTxtYWlsdG86a2FybGkuc2pvYmVyZ0BzbHUuc2U+ IDxtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlPg0KPg0KPg0KPg0KPiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBVc2VycyBtYWlsaW5nIGxp c3QNCj4gVXNlcnNAb3ZpcnQub3JnPG1haWx0bzpVc2Vyc0BvdmlydC5vcmc+DQo+IGh0dHA6Ly9s aXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2Vycw0KPg0KDQoNCg0KDQotLQ0KDQpN ZWQgVsOkbmxpZ2EgSMOkbHNuaW5nYXINCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkthcmxpIFNq w7ZiZXJnDQpTd2VkaXNoIFVuaXZlcnNpdHkgb2YgQWdyaWN1bHR1cmFsIFNjaWVuY2VzDQpCb3gg NzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpDQpTLTc1MCAwNyBVcHBzYWxh LCBTd2VkZW4NClBob25lOiAgKzQ2LSgwKTE4LTY3IDE1IDY2DQprYXJsaS5zam9iZXJnQHNsdS5z ZTxtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlPg0K --_000_5F9E965F5A80BC468BE5F40576769F092A1AEB91exchange21_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUUkFOU0lUSU9OQUwv L0VOIj4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+DQo8bWV0YSBuYW1lPSJHRU5FUkFUT1Ii IGNvbnRlbnQ9Ikd0a0hUTUwvNC40LjQiPg0KPC9oZWFkPg0KPGJvZHk+DQp0b3IgMjAxMy0wNS0y MyBrbG9ja2FuIDE1OjEwICYjNDM7MDMwMCBza3JldiBNaWNoYWVsIFBhc3Rlcm5hazoNCjxibG9j a3F1b3RlIHR5cGU9IkNJVEUiPg0KPHByZT4KSGkgS2FybGksCgpPbiAwNS8yMy8yMDEzIDEyOjM1 IFBNLCBLYXJsaSBTasO2YmVyZyB3cm90ZToKJmd0OyBIaSEKJmd0OyAKJmd0OyBXZcK0cmUgaW4g dGhlIHByb2Nlc3Mgb2YgYnVpbGRpbmcgYW4gb3JkZXJwb3J0YWwgd2hlcmUgb3VyIGN1c3RvbWVy cyB3aWxsIGJlIGFibGUgdG8gbG9nIGluLCBzZWxlY3QgYSB2aXJ0dWFsIG1hY2hpbmUgdGVtcGxh dGUsIHR5cGUgaW4gYSBkZXNpcmVkIGhvc3RuYW1lIGFuZCBpdCB3aWxsIGJlCiZndDsgYXV0b21h dGljYWxseSBjcmVhdGVkLCBhbmQgdGhleSByZWNpZXZlIGEgbWFpbCBleHBsYWluaW5nIHdoYXQg dGhlecK0dmUgZ290dGVuIHRoZW1zZWx2ZXMgaW50bzopLiBGb3IgdGhpcyBJIGZpZ3VyZWQgdGhl IFB5dGhvblNESyB3b3VsZCBiZSB0aGUgYmVzdCBjaG9pY2UgYnV0IEnCtG0gaGF2aW5nCiZndDsg dHJvdWJsZSB1c2luZyBpdC4gV2hhdCB3ZcK0dmUgZG9uZSBzbyBmYXIgaXM6CiZndDsgCiZndDsg MSkgQ3JlYXRlIGEgbmV3IFZNIGZyb20gYSB0ZW1wbGF0ZTsgT0suIEkgZm91bmQgYW4gZXhhbXBs ZSBhbmQgaXQgd29ya2VkIE9PVEIKJmd0OyAyKSBSZW5hbWUgdGhlIG5ldyBWTcK0cyBkaXNrIGZy b20gJHtUZW1wbGF0ZU5hbWV9X0Rpc2sxIHRvICR7Vk1OYW1lfV9EaXNrMTsgTm90IE9LLiBJIGZv dW5kIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNoYW5nZSB0aGUgbmFtZSBvZiBhIFZNTmljIGFuZCB0 aGF0IHdvcmtzLCBidXQgdXNpbmcgdGhlCiZndDsgc2FtZSBtZXRob2QgdG8gY2hhbmdlIFZNRGlz a8K0cyBuYW1lIGRvZXMgbm90IChGWUksIHRoZSBWTSBvbmx5IGhhcyBvbmUgVk5pYyBhbmQgVkRp c2spOgomZ3Q7Jmd0OyZndDsmZ3Q7IGZyb20gb3ZpcnRzZGsueG1sIGltcG9ydCBwYXJhbXMKJmd0 OyZndDsmZ3Q7Jmd0OyBmcm9tIG92aXJ0c2RrLmFwaSBpbXBvcnQgQVBJCiZndDsmZ3Q7Jmd0OyZn dDsgYXBpID0gQVBJKHVybD0nPGEgaHJlZj0iaHR0cHM6Ly8iPmh0dHBzOi8vPC9hPiR7RU5HSU5F fTo0NDMvYXBpJywgJmx0OzxhIGhyZWY9Imh0dHBzOi8vc3Rvcm0uc2x1LnNlOjQ0My9hcGknIj5o dHRwczovL3N0b3JtLnNsdS5zZTo0NDMvYXBpJzwvYT4sJmd0OyBjYV9maWxlPScke0NBQ0VSVH0n LCB1c2VybmFtZT0nYWRtaW5AaW50ZXJuYWwgJmx0OzxhIGhyZWY9Im1haWx0bzonYWRtaW5AaW50 ZXJuYWwiPm1haWx0bzonYWRtaW5AaW50ZXJuYWw8L2E+Jmd0OycsIHBhc3N3b3JkPSdsZXRtZWlu IScpCiZndDsmZ3Q7Jmd0OyZndDsgdm0gPSBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKQomZ3Q7 IAomZ3Q7Jmd0OyZndDsmZ3Q7IHZtbmljID0gdm0ubmljcy5nZXQobmFtZT0nKicpCiZndDsmZ3Q7 Jmd0OyZndDsgdm1uaWMubmFtZQomZ3Q7ICduaWMxJwomZ3Q7Jmd0OyZndDsmZ3Q7IGFwaS52bXMu Z2V0KG5hbWU9J1ZNTmFtZScpLm5pY3MuZ2V0KG5hbWU9JyonKQomZ3Q7ICduaWMxJwomZ3Q7Jmd0 OyZndDsmZ3Q7IHZtbmljLm5hbWU9J25pYzInCiZndDsmZ3Q7Jmd0OyZndDsgdm1uaWMudXBkYXRl KCkKJmd0OyZndDsmZ3Q7Jmd0OyBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5uaWNzLmdldChu YW1lPScqJykKJmd0OyAnbmljMicKJmd0OyZndDsmZ3Q7Jmd0OyB2bW5pYy5uYW1lCiZndDsgJ25p YzInCiZndDsgCiZndDsmZ3Q7Jmd0OyZndDsgdm1kaXNrID0gdm0uZGlza3MuZ2V0KG5hbWU9Jyon KQomZ3Q7Jmd0OyZndDsmZ3Q7IHZtZGlzay5uYW1lCiZndDsgJ1RlbXBsYXRlTmFtZV9EaXNrMScK Jmd0OyZndDsmZ3Q7Jmd0OyBhcGkudm1zLmdldChuYW1lPSdWTU5hbWUnKS5kaXNrcy5nZXQobmFt ZT0nKicpCgp0aGlzIGtpbmQgb2YgY2FsbCBpcyBub3QgZWZmaWNpZW50LCBieSBmZXRjaGluZyB0 aGUgZGlzawp5b3UgYWxzbyBmZXRjaCB0aGUgdm0sCgppJ2Qgc3VnZ2VzdCBmZXRjaCB2bSwgc3Rv cmUgaXQgaW4gbG9jYWwgdmFyaWFibGUgYW5kIHRoZW4KcmV1c2UgaXQgZm9yIGFueSBzdWItY29s bGVjdGlvbiBtYW5pcHVsYXRpb25zLgo8L3ByZT4NCjwvYmxvY2txdW90ZT4NCjxicj4NCkNvdWxk IHlvdSBwbGVhc2Ugc2hvdyBtZSBleGFtcGxlIG9mIHRoYXQsIG15IFB5dGhvbmpvdXJuZXkgc3Rh cnRlZCBvbmx5IHllc3RlcmRheTopPzxicj4NCjxicj4NCjxibG9ja3F1b3RlIHR5cGU9IkNJVEUi Pg0KPHByZT4KCgomZ3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsmZ3Q7Jmd0OyZndDsgdm1k aXNrLm5hbWU9J1ZNTmFtZV9EaXNrMScKJmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2sudXBkYXRlKCkK Jmd0OyZndDsmZ3Q7Jmd0OyB2bWRpc2submFtZQomZ3Q7ICdWTU5hbWVfRGlzazEnCiZndDsmZ3Q7 Jmd0OyZndDsgYXBpLnZtcy5nZXQobmFtZT0nVk1OYW1lJykuZGlza3MuZ2V0KG5hbWU9JyonKQom Z3Q7ICdUZW1wbGF0ZU5hbWVfRGlzazEnCiZndDsgCiZndDsgU2VlPyBBbSBJIGhvbGRpbmcgaXQg d3Jvbmc/CgpkaXNrLm5hbWUgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSAnYWxpYXMnIGluc3Rl YWQuCjwvcHJlPg0KPC9ibG9ja3F1b3RlPg0KPGJyPg0KJmd0OyZndDsmZ3Q7IHByaW50IGFwaS52 bXMuZ2V0KG5hbWU9J1ZNTmFtZScpLmRpc2tzLmdldChuYW1lPScqJykubmFtZTxicj4NClRlbXBs YXRlTmFtZV9EaXNrMTxicj4NCiZndDsmZ3Q7Jmd0OyBwcmludCBhcGkudm1zLmdldChuYW1lPSdW TU5hbWUnKS5kaXNrcy5nZXQobmFtZT0nKicpLmFsaWFzPGJyPg0KTm9uZTxicj4NCjxicj4NClNv IHRoYXQgZG9lc27CtHQgc2VlbSB0byB3b3JrIGVpdGhlcj88YnI+DQo8YnI+DQovS2FybGk8YnI+ DQo8YnI+DQo8YmxvY2txdW90ZSB0eXBlPSJDSVRFIj4NCjxwcmU+CgomZ3Q7IAomZ3Q7IDMpIENy ZWF0ZSBhIHNuYXBzaG90IGNhbGxlZCAmcXVvdDtPcmlnaW4mcXVvdDssIHNvIGlmIGEgY3VzdG9t ZXIgY2FsbHMgaW4gYW5kIHNheXMgdGhlecK0dmUgYm9ya2VkIGl0IGNvbXBsZXRlbHksIHdlwrRs bCBqdXN0IHJldmVydCB0byBpdMK0cyAmcXVvdDtPcmlnaW4mcXVvdDsgYW5kIHRoZXnCtHJlIHVw IGFuZCBydW5uaW5nIGFnYWluOwomZ3Q7IE9LLCBmb3VuZCBhbm90aGVyIE9PVEIgZXhhbXBsZSwg dGhhbmsgeW91LgomZ3Q7IDQpIEFkZCB0aGUgY3VzdG9tZXIgdG8gVk3CtHMgUGVybWlzc2lvbnMg d2l0aCBhbiBhcHByb3ByaWF0ZSByb2xlOyBOb3QgT0suIEkgaGF2ZSBmb3VuZCBubyBleGFtcGxl cyBvbiBob3cgdG8gZG8gdGhpcyBhbmQganVzdCBkb27CtHQga25vdyB3aGVyZSB0byBzdGFydCBs b29raW5nLiBCVFcsCiZndDsgY3JlYXRpbmcgYSBuZXcgVk0gd2l0aCBQeXRob24gcmVzdWx0cyBp biBQZXJtaXNzaW9ucyBjb21wbGV0ZWx5IGVtcHR5LCBubyBpbmhlcml0YW5jZSBlaXRoZXIuIERv bsK0dCBrbm93IGlmIHRoYXQgaXMgaW50ZW5kZWQuLi4KCmVsZW5hLCBpbGlhLAoKZ3V5cywgZG8g eW91IGhhdmUgYW55IHBlcm1pc3Npb24gcmVsYXRlZCBjb2RlIHRvIHNoYXJlPwoKJmd0OyAKJmd0 OyBjbGllbnQjIHJwbSAtcWEgfCBncmVwIG92aXJ0CiZndDsgb3ZpcnQtZW5naW5lLWNsaS0zLjIu MC4xMS0xLmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtZW5naW5lLXNkay0zLjIuMC4xMC0xLmZjMTcu bm9hcmNoCiZndDsgCiZndDsgZW5naW5lIyBycG0gLXFhIHwgZ3JlcCBvdmlydAomZ3Q7IG92aXJ0 LWVuZ2luZS1jb25maWctMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7IG92aXJ0LWVuZ2luZS1kYnNj cmlwdHMtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7IG92aXJ0LWxvZy1jb2xsZWN0b3ItMy4xLjAt MC5naXQxMGQ3MTkuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtcmVzdGFwaS0zLjEuMC00 LmZjMTcubm9hcmNoCiZndDsgb3ZpcnQtaW1hZ2UtdXBsb2FkZXItMy4xLjAtMC5naXQ5YzQyYzgu ZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtZ2VuZXJpY2FwaS0zLjEuMC00LmZjMTcubm9h cmNoCiZndDsgb3ZpcnQtaXNvLXVwbG9hZGVyLTMuMS4wLTAuZ2l0MTg0MWQ5LmZjMTcubm9hcmNo CiZndDsgb3ZpcnQtZW5naW5lLXdlYmFkbWluLXBvcnRhbC0zLjEuMC00LmZjMTcubm9hcmNoCiZn dDsgb3ZpcnQtZW5naW5lLXNldHVwLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdp bmUtc2RrLTMuMi4wLjItMS5mYzE3Lm5vYXJjaAomZ3Q7IG92aXJ0LWVuZ2luZS1iYWNrZW5kLTMu MS4wLTQuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtdG9vbHMtY29tbW9uLTMuMS4wLTQu ZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdpbmUtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7IG92 aXJ0LWVuZ2luZS11c2VycG9ydGFsLTMuMS4wLTQuZmMxNy5ub2FyY2gKJmd0OyBvdmlydC1lbmdp bmUtbm90aWZpY2F0aW9uLXNlcnZpY2UtMy4xLjAtNC5mYzE3Lm5vYXJjaAomZ3Q7IAomZ3Q7IC0t IAomZ3Q7IAomZ3Q7IEJlc3QgUmVnYXJkcwomZ3Q7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJmd0 OyBLYXJsaSBTasO2YmVyZwomZ3Q7IFN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwg U2NpZW5jZXMKJmd0OyBCb3ggNzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgp CiZndDsgUy03NTAgMDcgVXBwc2FsYSwgU3dlZGVuCiZndDsgUGhvbmU6ICAmIzQzOzQ2LSgwKTE4 LTY3IDE1IDY2CiZndDsgPGEgaHJlZj0ibWFpbHRvOmthcmxpLnNqb2JlcmdAc2x1LnNlIj5rYXJs aS5zam9iZXJnQHNsdS5zZTwvYT4gJmx0OzxhIGhyZWY9Im1haWx0bzprYXJsaS5zam9iZXJnQGFk bS5zbHUuc2UiPm1haWx0bzprYXJsaS5zam9iZXJnQGFkbS5zbHUuc2U8L2E+Jmd0OwomZ3Q7IAom Z3Q7IAomZ3Q7IAomZ3Q7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCiZndDsgVXNlcnMgbWFpbGluZyBsaXN0CiZndDsgPGEgaHJlZj0ibWFpbHRvOlVzZXJz QG92aXJ0Lm9yZyI+VXNlcnNAb3ZpcnQub3JnPC9hPgomZ3Q7IDxhIGhyZWY9Imh0dHA6Ly9saXN0 cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycyI+aHR0cDovL2xpc3RzLm92aXJ0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzPC9hPgomZ3Q7IAoKCjwvcHJlPg0KPC9ibG9ja3F1b3Rl Pg0KPGJyPg0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEw MCUiPg0KPHRib2R5Pg0KPHRyPg0KPHRkPi0tIDxicj4NCjxicj4NCk1lZCBWw6RubGlnYSBIw6Rs c25pbmdhcjxicj4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnI+DQpLYXJsaSBTasO2YmVyZzxi cj4NClN3ZWRpc2ggVW5pdmVyc2l0eSBvZiBBZ3JpY3VsdHVyYWwgU2NpZW5jZXM8YnI+DQpCb3gg NzA3OSAoVmlzaXRpbmcgQWRkcmVzcyBLcm9uw6VzdsOkZ2VuIDgpPGJyPg0KUy03NTAgMDcgVXBw c2FsYSwgU3dlZGVuPGJyPg0KUGhvbmU6ICZuYnNwOyYjNDM7NDYtKDApMTgtNjcgMTUgNjY8YnI+ DQo8YSBocmVmPSJtYWlsdG86a2FybGkuc2pvYmVyZ0BhZG0uc2x1LnNlIj5rYXJsaS5zam9iZXJn QHNsdS5zZTwvYT4gPC90ZD4NCjwvdHI+DQo8L3Rib2R5Pg0KPC90YWJsZT4NCjwvYm9keT4NCjwv aHRtbD4NCg== --_000_5F9E965F5A80BC468BE5F40576769F092A1AEB91exchange21_--

On 05/23/2013 03:53 PM, Karli Sjöberg wrote:
tor 2013-05-23 klockan 15:10 +0300 skrev Michael Pasternak:
Hi Karli,
On 05/23/2013 12:35 PM, Karli Sjöberg wrote:
Hi!
We´re in the process of building an orderportal where our customers will be able to log in, select a virtual machine template, type in a desired hostname and it will be automatically created, and they recieve a mail explaining what they´ve gotten themselves into:). For this I figured the PythonSDK would be the best choice but I´m having trouble using it. What we´ve done so far is:
1) Create a new VM from a template; OK. I found an example and it worked OOTB 2) Rename the new VM´s disk from ${TemplateName}_Disk1 to ${VMName}_Disk1; Not OK. I found an example of how to change the name of a VMNic and that works, but using the same method to change VMDisk´s name does not (FYI, the VM only has one VNic and VDisk):
from ovirtsdk.xml import params from ovirtsdk.api import API api = API(url='https://${ENGINE}:443/api', <https://storm.slu.se:443/api',> ca_file='${CACERT}', username='admin@internal <mailto:'admin@internal>', password='letmein!') vm = api.vms.get(name='VMName')
vmnic = vm.nics.get(name='*') vmnic.name 'nic1' api.vms.get(name='VMName').nics.get(name='*') 'nic1' vmnic.name='nic2' vmnic.update() api.vms.get(name='VMName').nics.get(name='*') 'nic2' vmnic.name 'nic2'
vmdisk = vm.disks.get(name='*') vmdisk.name 'TemplateName_Disk1' api.vms.get(name='VMName').disks.get(name='*')
this kind of call is not efficient, by fetching the disk you also fetch the vm,
i'd suggest fetch vm, store it in local variable and then reuse it for any sub-collection manipulations.
Could you please show me example of that, my Pythonjourney started only yesterday:)?
api = API(...) myvm = api.vms.get(name='VMName') myvm.disks.get(name='...') myvm.nics.get(name='...') myvm.disks.add() myvm.disks.list() ....
'TemplateName_Disk1'
vmdisk.name='VMName_Disk1' vmdisk.update() vmdisk.name 'VMName_Disk1' api.vms.get(name='VMName').disks.get(name='*') 'TemplateName_Disk1'
See? Am I holding it wrong?
disk.name is deprecated, please use 'alias' instead.
print api.vms.get(name='VMName').disks.get(name='*').name TemplateName_Disk1 print api.vms.get(name='VMName').disks.get(name='*').alias None
So that doesn´t seem to work either?
/Karli
3) Create a snapshot called "Origin", so if a customer calls in and says they´ve borked it completely, we´ll just revert to it´s "Origin" and they´re up and running again; OK, found another OOTB example, thank you. 4) Add the customer to VM´s Permissions with an appropriate role; Not OK. I have found no examples on how to do this and just don´t know where to start looking. BTW, creating a new VM with Python results in Permissions completely empty, no inheritance either. Don´t know if that is intended...
elena, ilia,
guys, do you have any permission related code to share?
client# rpm -qa | grep ovirt ovirt-engine-cli-3.2.0.11-1.fc17.noarch ovirt-engine-sdk-3.2.0.10-1.fc17.noarch
engine# rpm -qa | grep ovirt ovirt-engine-config-3.1.0-4.fc17.noarch ovirt-engine-dbscripts-3.1.0-4.fc17.noarch ovirt-log-collector-3.1.0-0.git10d719.fc17.noarch ovirt-engine-restapi-3.1.0-4.fc17.noarch ovirt-image-uploader-3.1.0-0.git9c42c8.fc17.noarch ovirt-engine-genericapi-3.1.0-4.fc17.noarch ovirt-iso-uploader-3.1.0-0.git1841d9.fc17.noarch ovirt-engine-webadmin-portal-3.1.0-4.fc17.noarch ovirt-engine-setup-3.1.0-4.fc17.noarch ovirt-engine-sdk-3.2.0.2-1.fc17.noarch ovirt-engine-backend-3.1.0-4.fc17.noarch ovirt-engine-tools-common-3.1.0-4.fc17.noarch ovirt-engine-3.1.0-4.fc17.noarch ovirt-engine-userportal-3.1.0-4.fc17.noarch ovirt-engine-notification-service-3.1.0-4.fc17.noarch
--
Best Regards ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@slu.se> <mailto:karli.sjoberg@adm.slu.se>
_______________________________________________ Users mailing list Users@ovirt.org <mailto:Users@ovirt.org> http://lists.ovirt.org/mailman/listinfo/users
--
Med Vänliga Hälsningar ------------------------------------------------------------------------------- Karli Sjöberg Swedish University of Agricultural Sciences Box 7079 (Visiting Address Kronåsvägen 8) S-750 07 Uppsala, Sweden Phone: +46-(0)18-67 15 66 karli.sjoberg@slu.se <mailto:karli.sjoberg@adm.slu.se>
-- Michael Pasternak RedHat, ENG-Virtualization R&D
participants (4)
-
Ilia Meerovich
-
Itamar Heim
-
Karli Sjöberg
-
Michael Pasternak