Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Encryption with REBOL

From: aparman:mail at: 30-Aug-2000 23:36

[--383836798--967693005289--JavaMail--root--web431-mc--mail--com] Content-Type: text/plain Content-Transfer-Encoding: 7bit With the recent talk about encryption I thought I'd send along this little script. For details read the header. PLEASE READ THE HEADER OF THIS SCRIPT BEFORE USE! It will send and receive encrypted email, and encrypt or decrypt any file. I consider it beta, and would appreciate any feedback. Any one who uses it may modify it, but please email me with a copy of your enhancements. I retain all my rights of original authorship on this script, but make no claims as to it's use. ______________________________________________ FREE Personalized Email at Mail.com Sign up at http://www.mail.com/?sr=signup [--383836798--967693005289--JavaMail--root--web431-mc--mail--com] Content-Type: application/octet-stream; name=cipher-beta.r Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=cipher-beta.r Content-ID: cipher-beta.r O1RoaXMgaXMgYSBSRUJPTC9Db3JlIFNjcmlwdC4gIFJFQk9MIGlzIGVhc3ksIGZyZWUsIGFuZCBj b29sLiAgd3d3LnJlYm9sLmNvbQ0KO3tiaXRzIGFuZCBwaWVjZXMgdGFrZW4gZnJvbSBzZXZlcmFs IHNjcmlwdHMuIG15IGFwb2xvZ2llcyBhbmQgdGhhbmtzIHRvIHRoZSBvdGhlciBhdXRob3JzfQ0K DQpSRUJPTCBbDQoJZmlsZTogJWNpcGhlci5yDQoJdGl0bGU6ICJDaXBoZXJTYWJlciBmb3IgUkVC T0wgRW5jcnlwdGlvbiAoY2lwaGVyKSINCglhdXRob3I6ICJhbGFuIHBhcm1hbiINCgllbWFpbDog YXBhcm1hbkBtYWlsLmNvbQ0KCXZlcnNpb246IDAuMy4wDQoJbmVlZHM6IDIuMy4wLjMuMQ0KCWRh dGU6IDktQXVnLTIwMDAvMTE6NTA6NDgtNDowMA0KCWhpc3Rvcnk6IHt2ZXJzaW9uIDAuMy4wIHdp bGwgYmUgYWZ0ZXIgYmV0YSB0ZXN0aW5nDQpTb21lIGNoYW5nZXMgYnkgbWU6IHJldmFtcGVkIHJl YWRmaWxlIGFuZCB3cml0ZWZpbGUsIHRoZXNlIGFyZSBub3Qgc28gbXVjaCBvZiBhIGhhY2sgbm93 Lg0KUmV2YW1wIG9mIGVuZ2luZTogYmFzZS02NCBjb21wcmVzc2lvbiBhbHJlYWR5IGFybW9ycyBk YXRhIHNvIGNoYW5nZWQsIGVuZ2luZSBhbmQgcmVhZGZpbGUgd3JpdGVmaWxlICh0aGVzZSBub3cg ZG8gZGlmZmVyZW50IHRoaW5ncyBkZXBlbmRpbmcgb24gZW5jcnlwdGlvbiBvciBkZWNyeXB0aW9u KS4gIFJld29ya2VkIHNlY3Rpb24gb24gc2F2aW5nIGVuY3J5cHRlZCBmaWxlcywgbm93IGFsbCB3 cml0ZSBwcm9jZWR1cmVzIGhhbmRsZWQgYnkgd3JpdGVmaWxlLg0KQWRkZWQgcGFyc2luZyB0byBy ZWFkZmlsZSBhbmQgbWFpbC9jb250ZW50IG9mIG1haWwgcmVjZWl2ZS4gIE5vdyB0ZXh0IG91dHNp ZGUgdGhlIGVuY3J5cHRlZCBkYXRhICg2NCN7Li4ufSkgaXMgaWdub3JlZCwgc28geW91IGNhbiBh ZGQgeW91ciBvd24gcHJlIG9yIHBvc3QgbWVzc2FnZSwgb3IgaWYgeW91ciBtYWlsIHNlcnZlciBh ZGRzIG1lc3NhZ2VzIChpLmUuIHlhaG9vKSBpdCBpcyBpZ25vcmVkLg0KQWRkZWQgcXVlcnkgdG8g bGlzdCBjb250ZW50cyBvZiBjdXJyZW50IGRpcmVjdG9yeSB3aGVuIGRvaW5nIHJlYWRmaWxlIG9y IHdyaXRlZmlsZS4NCg0KdmVyc2lvbiAwLjIuMyBtaW5vciBjbGVhbnVwLCBhZGRlZCBlcnJvciBj aGVja2luZyB3aGVuIHdyaXRpbmcgYSBmaWxlICh3cml0ZWZpbGUpDQp2ZXJzaW9uIDAuMi4zIG1p bm9yIHNlY3VyaXR5IHVwZGF0ZSBpbiB0aGUgY2xlYXJzdHVmZiB3b3JkLCBhZGRlZCBtb3JlIGVy cm9yIGNoZWNraW5nIHdoZW4gYXNraW5nIGZvciBmaWxlIHRvIHJlYWQgKHJlYWRmaWxlKS4gDQp2 ZXJzaW9uIDAuMi4xIG5vdyBhdXRvbWF0aWNhbGx5IGFza3MgZm9yIHBvcCBhbmQgc210cCBpbmZv IGlmIG5vdCBhbHJlYWR5IHNldCB1cCBpbiB1c2VyLnINCnZlcnNpb24gMC4yLjAgYWRkZWQgc29t ZSBlbGVtZW50YXJ5IGVycm9yIGNoZWNraW5nIHRvIHRoZSBwYXNzcGhyYXNlLWRlY3J5cHRpb24t ZGVjb21wcmVzc2lvbiBhcmVhcy4gIEF0IGxlYXN0IG5vdyB5b3UgYXJlbid0IHRocm93biBvdXQg b2YgdGhlIHNjcmlwdCBpZiB5b3UgZW50ZXIgYW4gaW5jb3JyZWN0IGRlY3J5cHRpb24gcGFzc3Bo cmFzZQ0KfQ0KCXB1cnBvc2U6ICJTZW5kcyBhbmQgcmVjZWl2ZXMgQVJDNCBlbmNyeXB0ZWQgZW1h aWwsIGFuZCBkZS9lbmNyeXB0cyBmaWxlcy4iDQoJY2F0ZWdvcnk6ICdlbWFpbA0KCWNvbW1lbnQ6 IHtUaGlzIHNjcmlwdCB1c2VzIHRoZSBzYW1lIFJDNCBzdHJvbmcgZW5jcnlwdGlvbiBhbGdvcml0 aG0gYXMgaW4gcG9wdWxhciBpbnRlcm5ldC9lbWFpbCBjbGllbnRzLiAgSXQgdXNlcyBhIHN5bW1l dHJpYyBrZXkgKGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gdXNlIHRoZSBzYW1lIGtleSkgd2hp Y2ggZG9lcyBub3QgaGF2ZSB0byBiZSBzdG9yZWQgb24tbGluZSBhcyBpbiBwdWJsaWMga2V5IHN5 c3RlbXMuICBUaGUga2V5IGNhbiBiZSB1cHRvIDI0NiBjaGFyYWN0ZXJzIGluIGxlbmd0aCwgYW5k LCBkZXBlbmRpbmcgb24gaG93IHdlbGwgeW91IHNlbGVjdCB5b3VyIGtleSwgY2FuIHByb3ZpZGUg ZW5jcnlwdGlvbiBzdHJlbmd0aCBtdWNoIGdyZWF0ZXIgdGhhbiAxMjggYml0Lg0KDQpTaW5jZSB0 aGlzIGlzIGEgUkVCT0wgc2NyaXB0LCBpdCBwcm92aWRlcyBhIHBlcnNvbmFsIHN0cm9uZyBlbmNy eXB0aW9uIHByb2R1Y3QgdGhhdCB3aWxsIHdvcmsgb24gYW55dGhpbmcgUkVCT0wgd2lsbCBydW4g b24uICBObyByZWxpYW5jZSBvbiBwcm9ncmFtcyBmb3Igd2hpY2ggeW91IGhhdmUgbmV2ZXIgc2Vl biB0aGUgc291cmNlIGNvZGUsIG5vIHJlc3RyaWN0aW9ucyB0byA0MCBiaXQga2V5cywgbm8gcHVi bGljIHN0b3JhZ2Ugb2YgeW91ciBrZXksIG5vIHBheW1lbnQgZm9yIGRpZ2l0YWwgaS5kLidzLCBu byB3YXkgZm9yIHRoZSBnb3Zlcm5tZW50IHRvIHRha2UgYXdheSB5b3VyIHByaXZhY3kgcmlnaHRz Lg0KDQpUaGlzIHNjcmlwdCBpcyAiVGhlIENhcm5pdm9yZSBCdXN0ZXIiIJkuDQoNCllvdSBuZWVk IG5vdCByZXN0cmljdCB5b3Vyc2VsZiB0byBlbWFpbDogdGhlIHNjcmlwdCB3aWxsIGVuY3J5cHQg YW55IHR5cGUgb2YgZmlsZSwgYW5kIHlvdSBoYXZlIG9wdGlvbnMgZm9yIHNhdmluZyB0aGUgZW5j cnlwdGVkIGZpbGVzIHRvIHlvdXIgaGFyZGRpc2suDQoNCkRvIG5vdCBjb25mdXNlIHRoaXMgZW5j cnlwdGlvbiB3aXRoIG90aGVycyB5b3UgbWF5IHNlZSBhcyBDaXBoZXJTYWJlciAodXNpbmcgdGhl ICouY3MxIG9yIC5jczIgZXh0ZW5zaW9uKS4gIFdoaWxlIGl0IHVzZXMgdGhlIHNhbWUgYmFzaWMg ZW5jcnlwdGlvbiBlbmdpbmUsIEkgaGF2ZSBtb2RpZmllZCBpdCBmb3Igc3BlY2lmaWMgdXNlIHdp dGggUkVCT0wncyBzdHJlbmd0aHMuICBGaWxlcyAobm90IGVtYWlsKSBwcm9kdWNlZCB3aXRoIHRo aXMgc2NyaXB0IHNob3VsZCB1c2UgdGhlICouY3NyIGV4dGVuc2lvbiAoQ2lwaGVyU2FiZXIgZm9y IFJlYm9sKS4gIChOb3RlOiBJIGhhdmUgbm90IHRhbXBlcmVkIHdpdGggdGhlIFJDNCBhbGdvcml0 aG0gaW4gYW55IHdheSBleGNlcHQgYnk7IDEgLSBjb21wcmVzc2luZyB0aGUgcGxhaW50ZXh0IHBy aW9yIHRvIGVuY3J5cHRpb24gKHNob3VsZCBzdHJlbmd0aGVuIHRoZSBlbmNyeXB0aW9uKSwgYW5k IDIgLSB0byBtaXggdGhlIGluaXRpYWwga2V5IHN0YXRlIHRocmVlIHRpbWVzIHJhdGhlciB0aGFu IG9uY2UgKGEgY2lwaGVyc2FiZXItMiBhZGRpdGlvbiwgd2hpY2ggc2hvdWxkIGFsc28gc2hvdWxk IHN0cmVuZ3RoZW4gdGhlIGVuY3J5cHRpb24pLiBBbGwgb2YgdGhlIG90aGVyIGNoYW5nZXMgYXJl IGRvbmUgYWZ0ZXIgZW5jcnlwdGlvbjogSSAiYXJtb3IiIHRoZSBjaXBoZXJ0ZXh0IHdpdGggYmFz ZS02NCBjb21wcmVzc2lvbiAoYXMgb2YgdmVyc2lvbiAzLjAuMCB0aGUgcmVhZGZpbGUgd3JpdGVm aWxlIHJvdXRpbmVzIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGFjdHVhbGx5IHJlYWQvd3JpdGUgdGhl ICJhcm1vdXJlZCIgY2lwaGVydGV4dCkuICBBcm1vcmluZyBjaGFuZ2VzIGFsbCB0aGUgY2hhcmFj dGVycyBvZiB0aGUgY2lwaGVydGV4dCB0byBwcmludGFibGUgY2hhcmFjdGVycyAoaW4gdGhpcyBj YXNlLCBsZXR0ZXJzLCBudW1iZXJzIGFuZCAiLyIgYW5kICIrIiwgdGhlIGJhc2UtNjQgYWxwaGFi ZXQpLiBBcm1vcmluZyBpcyBkb25lIHNvIHRoYXQgYW4gZW5jcnlwdGVkIGZpbGUgbWF5IGJlIHBy aW50ZWQgYW5kIHRyYW5zbWl0dGVkIG9uIHBhcGVyIG9yIGZheC4gDQoNCklmIHlvdSB3aXNoIHRv IGRlY3J5cHQgZmlsZXMgbWFkZSB3aXRoIG90aGVyIENpcGhlclNhYmVyIHByb2R1Y3RzIChleHRl bnNpb24gLmNzMSBvciAuY3MyKSB1c2UgbXkgc2NyaXB0ICJjaXBoZXJzYWJlci5yIi4NCn0NCg0K CVJFQURNRTogew0KICAgICAgICAgICAgVGhpcyBpcyBhIFJFQk9MIGltcGxlbWVudGF0aW9uIG9m IHRoZSBzdHJvbmcgZW5jcnlwdGlvbiBhbGdvcml0aG0NCiAgICAgICAgICAgIGtub3duIGFzIEFS Q0ZPVVIsIHN1cHBvc2VkbHkgaWRlbnRpY2FsIHRvIFJDNCBmcm9tIFJTQSBTZWN1cml0eS4NCiAg ICAgICAgICAgIEFsbCB0aGUgaW5mb3JtYXRpb24gdG8gbWFrZSB0aGUgZW5jcnlwdGlvbiBlbmdp bmUgd2FzIHRha2VuIGZyb20gdGhlIHNpdGVzDQogICAgICAgICAgICBodHRwOi8vY2lwaGVyc2Fi ZXIuZ3VydXMuY29tLywgDQogICAgICAgICAgICB0aGUgR2VuZXJhbCBGcmVuZXRpY3MgcGFnZXMg DQogICAgICAgICAgICBodHRwOi8vd3d3LmxvZHoucGRpLm5ldC9+ZXJpc3RpYy9mcmVlL2NpcGhl cnNhYmVyLmh0bWwsDQogICAgICAgICAgICBhbmQgdGhlIGxpbmtzIHRoZXJlaW4uIEkgaGF2ZSBm b2xsb3dlZCBjbG9zZWx5IHRoZSBub3RhdGlvbiBmcm9tDQogICAgICAgICAgICBodHRwOi8vd3d3 LnhzNGFsbC5ubC9+Y2cvY2lwaGVyc2FiZXIvbmF0L2VuLmh0bWwuDQoNCiAgICAgICAgICAgICoq KioqIFRoaXMgc2NyaXB0IGlzIHByb3ZpZGVkIGFzIGlzIGFuZCBJIG1ha2Ugbm8gY2xhaW1zIGFi b3V0IGl0cw0KICAgICAgICAgICAgdXNlIG9yIGFjY3VyYWN5IG9yIGludGVuZGVkIHB1cnBvc2Uh ISENCiAgICAgICAgICAgICoqKioqIElmIHRoZSBpbmZvcm1hdGlvbiBvZiB0aGUgYWJvdmUgbWVu dGlvbmVkIHBhZ2VzIGlzIGNvcnJlY3QsIA0KICAgICAgICAgICAgYW5kIGlmIHRoaXMgc2NyaXB0 IGRvZXMgd2hhdCBpdCBpcyBzdXBwb3NlZCB0bywgdGhlbi4uLg0KDQogICAgICAgICAgICAqKioq KiBETyBOT1QgRVhQT1JUIFRISVMgU0NSSVBUIE9VVFNJREUgT0YgVEhFIFVOSVRFRCBTVEFURVMs DQogICAgICAgICAgICBhcyBpdCBjYW4gcG9zc2libHksIHdpdGggdGhlIHByb3BlciBwYXNzcGhy YXNlLCBwcm92aWRlIGVuY3J5cHRpb24gc3RyZW5ndGgNCiAgICAgICAgICAgIGdyZWF0ZXIgdGhh biA0MC1iaXQuICBJJ20gbm8gbGF3eWVyLCBhbmQgZG9uJ3Qga25vdyB0aGUgY3VycmVudA0KICAg ICAgICAgICAgcmVzdHJpY3Rpb25zIG9uIGV4cG9ydGluZyB0aGUgJ3NvdXJjZScgY29kZSBmb3Ig c3Ryb25nIGVuY3J5cHRpb24uDQoNCiJBIHVzZXIga2V5IHdpdGggYSBtaW5pbXVtIG9mIDE0IHJh bmRvbSBsZXR0ZXJzLCBvciA1IHNob3J0IHdvcmRzIHNlbGVjdGVkIGF0IHJhbmRvbSBmcm9tIGEg ZGljdGlvbmFyeSwgc2hvdWxkIGJlIHVzZWQgZm9yIG1lZGl1bSBzZWN1cml0eSAoNjQgYml0IGVu dHJvcHkpLiBGb3IgaGlnaCBzZWN1cml0eSwgdXNlIDIwIHJhbmRvbSBsZXR0ZXJzIG9yIHNldmVu IHJhbmRvbSB3b3Jkcy4gKDkwIGJpdCBlbnRyb3B5KS4iIC0gZnJvbSB0aGUgJ2d1cnVzJyBwYWdl DQp9DQpdDQoNCg0KDQo7KioqKiogc2V0LXVwDQpzeXN0ZW0vb3B0aW9ucy9iaW5hcnktYmFzZTog NjQgOyBiZXN0IGJpbmFyeSBlbmNvZGluZw0KDQpjaGVjay13b3JkOiAiVGhpcyBpcyBhIENpcGhl clNhYmVyIGZvciBSRUJPTCBFbmNyeXB0ZWQgRmlsZSINCjsqKioqKnRoaXMgaXMgdGhlIHN1Ympl Y3QgbGluZSBvZiBhbGwgZW1haWwgc2VudCBvciByZWNlaXZlZCBieSB0aGlzIHNjcmlwdCwgYWxs IG90aGVyIGVtYWlscyBhcmUgaWdub3JlZA0KDQo7KioqKioNCndyaXRlZmlsZTogZG9lcyBbDQoJ dW50aWwgWw0KCQlwcmludCAiXi9FbnRlciAgPyAgdG8gc2VlIGEgbGlzdCBvZiBmaWxlcyBpbiB0 aGUgY3VycmVudCBkaXJlY3RvcnkuIg0KCQlmaWxlb3V0OiB0by1maWxlIGFzayAiXi8gICAgU2F2 ZSB0byBmaWxlIG5hbWUgPyA6Pj4gIg0KCQlpZiBmaWxlb3V0ID0gJT8gW3ByaW50IFsiVGhlIGN1 cnJlbnQgZGlyZWN0b3J5IGlzICIgd2hhdC1kaXJdIGxpc3QtZGlyXQ0KCQlpZiBhbGwgW2V4aXN0 cz8gZmlsZW91dA0KCQkJKGxlbmd0aD8gZmlsZW91dCkgPD4gMA0KCQldIFsNCgkJCWlmIChhc2sg Il4vICAgIFRoYXQgZmlsZSBhbHJlYWR5IGV4aXN0cyEgT3ZlcndyaXRlID8gKHkvTikgOj4+ICIp ID0gInkiIFsNCgkJCQlpZiB3aGF0dG9kbyA9ICJkIiBbd3JpdGUvYmluYXJ5IGZpbGVvdXQgY2lw aGVydGV4dF0NCgkJCQlpZiB3aGF0dG9kbyA8PiAiZCIgW3dyaXRlIGZpbGVvdXQgZm9ybSBjaXBo ZXJ0ZXh0XQ0KCQkJCWV4aXQgOyB0aGlzIHdvcmtzIHNpbmNlIGNpcGhlciBpcyBhIGZ1bmN0aW9u IGNhbGxlZCBieSBhbm90aGVyIHNjcmlwdCBzZWN0aW9uDQoJCQldDQoJCV0NCgkJYWxsIFsNCgkJ CW5vdCBleGlzdHM/IGZpbGVvdXQNCgkJCShsZW5ndGg/IGZpbGVvdXQpIDw+IDANCgkJCWZpbGVv dXQgPD4gJT8NCgkJXQ0KCV0NCglpZiB3aGF0dG9kbyA9ICJkIiBbd3JpdGUvYmluYXJ5IGZpbGVv dXQgY2lwaGVydGV4dF0NCglpZiB3aGF0dG9kbyA8PiAiZCIgW3dyaXRlIGZpbGVvdXQgZm9ybSBj aXBoZXJ0ZXh0XQ0KXQ0KDQo7KioqKioNCnJlYWRmaWxlOiBkb2VzIFsNCglwcmludCAiXi9FbnRl ciAgPyAgdG8gc2VlIGEgbGlzdCBvZiBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuIg0K CXVudGlsIFsNCgkJZmlsZWluOiB0by1maWxlIGFzayBqb2luIFtuZXdsaW5lIHRhYiAiV2hhdCBm aWxlIGRvIHlvdSB3YW50IHRvIl0gW2pvaW4gd2hhdGRvICI/IDo+PiAiXQ0KCQlpZiBmaWxlaW4g PSAlPyBbcHJpbnQgWyJUaGUgY3VycmVudCBkaXJlY3RvcnkgaXMgIiB3aGF0LWRpcl0gbGlzdC1k aXJdDQoJCWFsbCBbDQoJCQlleGlzdHM/IGZpbGVpbg0KCQkJKGxlbmd0aD8gZmlsZWluKSA8PiAw DQoJCV0NCgldDQoJaWYgd2hhdHRvZG8gPSAiZCIgWw0KCQlwYXJzZSByZWFkIGZpbGVpbiBbdGhy dSAiNjQjeyIgY29weSBwbGFpbnRleHQgdG8gIn0iXQ0KCQlpbnNlcnQgcGxhaW50ZXh0ICI2NCN7 Ig0KCQlhcHBlbmQgcGxhaW50ZXh0ICJ9Ig0KCQlwbGFpbnRleHQ6IGxvYWQgcGxhaW50ZXh0DQoJ XQ0KCWlmIHdoYXR0b2RvIDw+ICJkIiBbcGxhaW50ZXh0OiByZWFkL2JpbmFyeSBmaWxlaW5dDQpd DQoNCg0KOyBkZXRlcm1pbmUgIndobyIgdmFyaWFibGUgZm9yIHBhc3NwaHJhc2UsIHNlZSBwYXJ0 IDMgb2YgZW5naW5lDQp3aG9zZS1wYXNzOiBkb2VzIFsNCgllaXRoZXIgZmlsZS1tYWlsPyA9ICJm IiBbDQoJCXdobzogInRoaXMgZmlsZS4iDQoJXSBbDQoJCWVpdGhlciByZWNlaXZlLXNlbmQ/ID0g InIiIFsNCgkJCXdobzogbWFpbC9mcm9tDQoJCV0gWw0KCQkJd2hvOiBtYWlsdG8NCgkJXQ0KCV0N CglwcmludCBbbmV3bGluZSAiRW50ZXIgdGhlIHBhc3NwaHJhc2UgZm9yIiB3aG9dIDtydW4gZW5n aW5lIGFmdGVyIHRoaXMsIHdoaWNoIGFza3MgZm9yIHBhc3N3b3JkLCBjaGFuZ2UgbGF0ZXINCl0N CjtuZXdjaXBoZXIgKip2ZXJzaW9uIDMuMC4wKioqKioqICBiYXNlLTY0IGNvbXByZXNzaW9uIGFs cmVhZHkgYXJtb3JzIHRoZSBkYXRhOyByZW1vdmUgcGFydHMgMi1kZWNyeXB0IGFuZCBwYXJ0IDUt ZW5jcnlwdA0KDQo7KioqKipzdGFydCB0aGUgZW4tL2RlLWNyeXB0aW9uIGVuZ2luZSwgYSBtb2Rp ZmllZCAlY3MtcmVib2wuciwgdXNhZ2UgOiBwbGFpbnRleHQgaW4gLSBjaXBoZXJ0ZXh0IG91dCAo ZXZlbiBpZiBkZWNyeXB0aW5nKQ0KO2VuY3J5cHQgPT0+CWNvbXByZXNzCShyZW1vdmUpCWdldC1r ZXkJZW5jcnlwdAlub3RoaW5nCWNvbXByZXNzICANCjtwYXJ0CQkxCQkyCSAgICAgICAgIDMJICAg ICAgICAgNAkgICAgICAgICA1CSAgICA2DQo7ZGVjcnlwdCA9PT4JZGVjb21wcmVzcwlub3RoaW5n CWdldC1rZXkJZGVjcnlwdAkoYWRkKQkgICAgZGVjb21wcmVzcw0KDQo7c2VyaWVzIHN3YXAsIGRl ZmluZSBhIHN3YXBwaW5nIGZ1bmN0aW9uLCBuZWVkZWQgZm9yIGVuY3J5cHRpb24gZW5naW5lKioq KioqKg0Kcy1zd2FwOiBmdW5jIFsic3dhcHMgdGhlIGVsZW1lbnRzIG9mIHR3byBzZXJpZXMgYXQg dGhlIGdpdmVuIGluZGV4IHBvc2l0aW9ucyINCglhIFtzZXJpZXMhXSB7MXN0IHNlcmllc30NCglp bmRleC1hIFtpbnRlZ2VyIV0ge2luZGV4IHBvc2l0aW9uIHRvIHN3YXAgaW4gMXN0IHNlcmllc30N CgliIFtzZXJpZXMhXSB7Mm5kIHNlcmllc30NCglpbmRleC1iIFtpbnRlZ2VyIV0ge2luZGV4IHBv c2l0aW9uIHRvIHN3YXAgaW4gMm5kIHNlcmllc30NCgkvbG9jYWwgaG9sZGVyDQpdIFsNCglob2xk ZXI6IHBpY2sgYSBpbmRleC1hDQoJcG9rZSBhIGluZGV4LWEgcGljayBiIGluZGV4LWINCglwb2tl IGIgaW5kZXgtYiBob2xkZXINCglleGl0DQpdDQoNCmVuZ2luZTogZG9lcyBbO3N0YXJ0IGVuZ2lu ZQ0KDQoJO3BhcnQgMQ0KCWVpdGhlciB3aGF0dG9kbyA9ICJkIiBbOyBpZiBkZWNyeXB0aW5nIGRl Y29tcHJlc3MNCgkJcGxhaW50ZXh0OiBkZWNvbXByZXNzIHBsYWludGV4dA0KCV0gWw0KCQlwbGFp bnRleHQ6IGNvbXByZXNzIHBsYWludGV4dA0KCV0NCgk7cGFydCAyDQoJOyoqKioqKioqKioqKioq KiBteSBzdHVmZiBoZXJlLCBSRUJPTCBhZGRpdGlvbnMgdG8gY2lwaGVyc2FiZXIqKioqKioqKioq KioNCgk7KioqKioqKiB0aGlzIG9uZSBzaW1wbHkgY29tcHJlc3NlcyB0aGUgZGF0YSBiZWZvcmUg ZW5jcnlwdGlvbiBhbmQgYWdhaW4gYWZ0ZXIgZW5jcnlwdGlvbiBmb3IgYXJtb3JpbmcNCgk7aWYg ZGVjcnlwdGluZyB0aGVuIG5vdGhpbmcNCgk7aWYgZW5jcnlwdGluZyB0aGVuIHJlbW92ZSBpbmZv IGZyb20gY29tcHJlc3NlZCBkYXRhIHRoYXQgaXMgYWx3YXlzIHRoZSBzYW1lLCBhbmQgdGh1cyBh IHNlY3VyaXR5IHJpc2ssIGJlZm9yZSBlbmNyeXB0aW9uDQoJaWYgd2hhdHRvZG8gPSAiZSIgWw0K CQlyZW1vdmUvcGFydCBwbGFpbnRleHQgMiA7cmVtb3ZlcyAjNjR7ZUouLi59IG9yIHRvLWJpbmFy eSBbMTIwIDE1Nl0NCgldDQoJOyoqKioqKiBlbmQgb2YgYWRkaXRpb25zICoqKioqKioqKioqKioq KioqKiBidXQgc2VlIGJlbG93IGZvciBzZWNvbmQgc3RlcA0KDQoJO3BhcnQgMw0KCTsqKioqKm1h a2Ugb3IgZXh0cmFjdCBpbml0dmVjdG9yLCAgdGhlbiBzZXQgcGxhaW50ZXh0IGxlbmd0aA0KCWVp dGhlciB3aGF0dG9kbyA9ICJkIiBbDQoJCWluaXR2ZWN0b3I6IG1ha2UgYmxvY2shIDEwDQoJCWZv ciBuIDEgMTAgMSBbDQoJCQlhcHBlbmQgaW5pdHZlY3RvciB0by1jaGFyIChwaWNrIHBsYWludGV4 dCBuKQ0KCQldDQoJCXJlbW92ZS9wYXJ0IHBsYWludGV4dCAxMA0KCV0gWw0KCQlpbml0dmVjdG9y OiBtYWtlIGJsb2NrISAxMA0KDQoJCXJhbmRvbS9zZWVkIHRvLWludGVnZXIgY2hlY2tzdW0vc2Vj dXJlIGZvcm0gbm93IDsgcmVkdWNlcyBjaGFuY2VzIG9mIGRlY2lwaGVyaW5nIHRoZSBkYXRlIGZy b20gaW5pdHZlY3Rvcg0KCQlsb29wIDEwIFsNCgkJCWFwcGVuZCBpbml0dmVjdG9yIHRvLWNoYXIg KChyYW5kb20gMjU2KSAtIDEpIDtSRUJPTCdzIHJhbmRvbSBkb2VzIDEgdG8gTg0KCQldDQoJXQ0K DQoJcGxhaW50ZXh0bGVuZ3RoOiBsZW5ndGg/IHBsYWludGV4dA0KDQoJOyoqKioqZ2V0IHBhc3Nw aHJhc2UNCglwYXNzcGhyYXNlOiAiIg0KCXdoaWxlIFthbnkgWw0KCQkobGVuZ3RoPyBwYXNzcGhy YXNlKSA+IDI0Ng0KCQlwYXNzcGhyYXNlID0gIiINCgkJXQ0KCV1bDQoJCWlmIChsZW5ndGg/IHBh c3NwaHJhc2UpID4gMjQ2IFtwcmludCAiUGFzc3BocmFzZSBtdXN0IGJlIDI0NiBjaGFyYWN0ZXJz IG9yIGxlc3MiXQ0KCQlwYXNzcGhyYXNlOiBhc2svaGlkZSAicGFzc3BocmFzZSA6Pj4gIg0KCV0J DQoJOyoqKioqbWFrZSBrZXkNCglrZXk6IG1ha2UgYmxvY2shIFtdDQoJZm9yZWFjaCBsZXR0ZXIg cGFzc3BocmFzZSBbDQoJCWFwcGVuZCBrZXkgbGV0dGVyDQoJXQ0KCWFwcGVuZCBrZXkgaW5pdHZl Y3Rvcg0KCWtleWxlbmd0aDogbGVuZ3RoPyBrZXkNCg0KCTtwYXJ0IDQNCgk7KioqKiptYWtlIHN0 YXRlLCBhIGJsb2NrIGZyb20gMCB0byAyNTUsIGluIG9yZGVyDQoJc3RhdGU6IG1ha2UgYmxvY2sh IDI1Ng0KCWZvciBpIDAgMjU1IDEgW2FwcGVuZCBzdGF0ZSBpXQ0KDQoJOyoqKioqbWl4IHN0YXRl DQoJOyoqKioqKip0cnkgYSBjczIgdHlwZSBhZGRpdGlvbiwgbWl4aW5nIDMgdGltZXMNCglmb3Ig bnVtYmVyIDEgMyAxIFsNCgkJajogMCA7IHJlbWVtYmVyIGRvIDAgdG8gMjU1LCBub3QgMSB0byAy NTYNCgkJO2kgd2lsbCBpbmRleCBzdGF0ZSBpLmUuIGVhY2ggZWxlbWVudCBpcyBzdGF0ZShpKQ0K CQk7biBpcyB0aGUgaW5kZXggdG8gY3ljbGUgdGhydSB0aGUga2V5IChpIG1vZHVsbyBrZXlsZW5n dGgpDQoJCTtqIGlzIHRoZSAicmFuZG9tbHkiIGNob29zZW4gZWxlbWVudCBvZiBzdGF0ZQ0KDQoJ CWZvciBpIDAgMjU1IDEgWzsgbXVzdCBhZGQgKyAxIHRvIGluZGV4IGkgYXMgdGhlIGFycmF5cyBh cmUgYWNjZXNzZWQgMSAyIDMgLi4uIDI1NiANCgkJCTtpLmUuIGZpcnN0IGVsZW1lbnQgIjAiIGlz IGVsZW1lbnQgMSBub3QgZWxlbWVudCAwDQoJCQluOiBpIC8vIGtleWxlbmd0aA0KDQoJCQlzdGF0 ZS1pOiB0by1pbnRlZ2VyIHBpY2sgc3RhdGUgKGkgKyAxKQ0KCQkJa2V5LW46IHRvLWludGVnZXIg cGljayBrZXkgKG4gKyAxKQ0KDQoJCQlqOiAoaiArIHN0YXRlLWkgKyBrZXktbikgLy8gMjU2DQoN CgkJCXMtc3dhcCBzdGF0ZSAoaSArIDEpIHN0YXRlIChqICsgMSkNCg0KCQldIDtlbmQgb2YgZm9y DQoJXSA7KioqKiogZW5kIG9mICdmb3InIG9mIGNzMiBhZGRpdGlvbg0KDQoJOyoqKioqIHByb2R1 Y2UgdGhlIGNpcGhlcnRleHQNCglpOiBqOiBuOiAwDQoJY2lwaGVydGV4dDogbWFrZSBibG9jayEg W10gOyBjb250ZW50cyBvZiBmaWxlIGdvaW5nIG91dA0KDQoJaWYgd2hhdHRvZG8gPD4gImQiIFsN CgkJYXBwZW5kIGNpcGhlcnRleHQgaW5pdHZlY3Rvcg0KCV0NCg0KCWZvciBjb3VudCAwIChwbGFp bnRleHRsZW5ndGggLSAxKSAxIFsNCgkJaTogKChjb3VudCArIDEpIC8vIDI1NikgOyB0aGlzICIr MSIgaXMgc2hvd24sIGJ1dCBub3QgY2xlYXJseSwgb24gdGhlIGluc3RydWN0aW9ucw0KCQk7IHRo aXMgaXMgX25vdF8gYW4gaW5kZXhpbmcgYWRqdXN0bWVudCwgaXQgaXMgYW4gaW50ZWdyYWwgcGFy dCBvZiB0aGUgY2lwaGVyc2FiZXIgcHJvY2Vzcw0KDQoJCXN0YXRlLWk6IHBpY2sgc3RhdGUgKGkg KyAxKQ0KDQoJCWo6ICgoaiArIHN0YXRlLWkpIC8vIDI1NikNCg0KCQlzLXN3YXAgc3RhdGUgKGkg KyAxKSBzdGF0ZSAoaiArIDEpDQoNCgkJbjogKCgocGljayBzdGF0ZSAoaSArIDEpKSArIChwaWNr IHN0YXRlIChqICsgMSkpKSAvLyAyNTYpDQoNCgkJYXBwZW5kIGNpcGhlcnRleHQgKHhvciAodG8t Y2hhciBwaWNrIHN0YXRlIChuICsgMSkpICh0by1jaGFyIHBpY2sgcGxhaW50ZXh0IChjb3VudCAr IDEpKSkNCg0KCV0gO2VuZCBvZiBmb3IgDQoNCgk7cGFydCA1IGFuZCA2DQoJOyoqKioqKioqKioq Km15IGFkZGl0aW9ucyAqKioqKioqKioqKioqKioqDQoNCgk7aWYgZGVjcnlwdGluZyB0aGVuIGFk ZA0KCWlmIHdoYXR0b2RvID0gImQiIFsNCgkJO3B1dCBiYWNrIHRoZSBpbmZvIHRvIHRoZSBjb21w cmVzc2VkIGRhdGEsIGFmdGVyIG