avatar
giggle

Guest 98 22nd Jul, 2019

MARKUP 73.28 KB
                                           
                         U2hyZWsgU2NyaXB0IC0gRGlhbG9ndWUgVHJhbnNjcmlwdApWb2lsYSEgRmluYWxseSwgdGhlIFNocmVrIHNjcmlwdCBpcyBoZXJlIGZvciBhbGwgeW91IHF1b3RlcyBzcG91dGluZyBmYW5zIG9mIHRoZSBtb3ZpZSBzdGFycmluZyBNaWtlIE15ZXJzLCBFZGRpZSBNdXJwaHksIGFuZCBDYW1lcm9uIERpYXouICBUaGlzIHNjcmlwdCBpcyBhIHRyYW5zY3JpcHQgdGhhdCB3YXMgcGFpbnN0YWtpbmdseSB0cmFuc2NyaWJlZCB1c2luZyB0aGUgc2NyZWVucGxheSBhbmQvb3Igdmlld2luZ3Mgb2YgU2hyZWsuIEkga25vdywgSSBrbm93LCBJIHN0aWxsIG5lZWQgdG8gZ2V0IHRoZSBjYXN0IG5hbWVzIGluIHRoZXJlIGFuZCBJJ2xsIGJlIGV0ZXJuYWxseSB0d2Vha2luZyBpdCwgc28gaWYgeW91IGhhdmUgYW55IGNvcnJlY3Rpb25zLCBmZWVsIGZyZWUgdG8gZHJvcCBtZSBhIGxpbmUuIFlvdSB3b24ndCBodXJ0IG15IGZlZWxpbmdzLiBIb25lc3QuClN3aW5nIG9uIGJhY2sgdG8gRHJldydzIFNjcmlwdC1PLVJhbWEgYWZ0ZXJ3YXJkcyBmb3IgbW9yZSBmcmVlIG1vdmllIHNjcmlwdHMhClNocmVrIFNjcmlwdAoKIHtNYW59IE9uY2UgdXBvbiBhIHRpbWUgdGhlcmUgd2FzIGEgbG92ZWx5IHByaW5jZXNzLgoKQnV0IHNoZSBoYWQgYW4gZW5jaGFudG1lbnQgdXBvbiBoZXIgb2YgYSBmZWFyZnVsIHNvcnQgd2hpY2ggY291bGQgb25seSAKCmJlIGJyb2tlbiBieSBsb3ZlJ3MgZmlyc3Qga2lzcy4KClNoZSB3YXMgbG9ja2VkIGF3YXkgaW4gYSBjYXN0bGUgZ3VhcmRlZCBieSBhIHRlcnJpYmxlIGZpcmUtYnJlYXRoaW5nIAoKZHJhZ29uLgoKTWFueSBicmF2ZSBrbmlndHMgaGFkIGF0dGVtcHRlZCB0byBmcmVlIGhlciBmcm9tIHRoaXMgZHJlYWRmdWwgcHJpc29uLCAKCmJ1dCBub24gcHJldmFpbGVkLgoKU2hlIHdhaXRlZCBpbiB0aGUgZHJhZ29uJ3Mga2VlcCBpbiB0aGUgaGlnaGVzdCByb29tIG9mIHRoZSB0YWxsZXN0IAoKdG93ZXIgZm9yIGhlciB0cnVlIGxvdmUgYW5kIHRydWUgbG92ZSdzIGZpcnN0IGtpc3MuCgp7TGF1Z2hpbmd9IAoKTGlrZSB0aGF0J3MgZXZlciBnb25uYSBoYXBwZW4uCgp7UGFwZXIgUnVzdGluZywgVG9pbGV0IEZsdXNoZXN9CgpXaGF0IGEgbG9hZCBvZiAtIAoKCgpTb21lYm9keSBvbmNlIHRvbGQgbWUgdGhlIHdvcmxkIGlzIGdvbm5hIHJvbGwgbWUKCkkgYWluJ3QgdGhlIHNoYXJwZXN0IHRvb2wgaW4gdGhlIHNoZWQKClNoZSB3YXMgbG9va2luJyBraW5kIG9mIGR1bWIgd2l0aCBoZXIgZmluZ2VyIGFuZCBoZXIgdGh1bWIKCkluIHRoZSBzaGFwZSBvZiBhbiAiTCIgb24gaGVyIGZvcmVoZWFkCgpUaGUgeWVhcnMgc3RhcnQgY29taW4nIGFuZCB0aGV5IGRvbid0IHN0b3AgY29taW4nCgpGZWQgdG8gdGhlIHJ1bGVzIGFuZCBoaXQgdGhlIGdyb3VuZCBydW5uaW4nCgpEaWRuJ3QgbWFrZSBzZW5zZSBub3QgdG8gbGl2ZSBmb3IgZnVuCgpZb3VyIGJyYWluIGdldHMgc21hcnQgYnV0IHlvdXIgaGVhZCBnZXRzIGR1bWIKClNvIG11Y2ggdG8gZG8gc28gbXVjaCB0byBzZWUKClNvIHdoYXQncyB3cm9uZyB3aXRoIHRha2luJyB0aGUgYmFja3N0cmVldHMKCllvdSdsbCBuZXZlciBrbm93IGlmIHlvdSBkb24ndCBnbwoKWW91J2xsIG5ldmVyIHNoaW5lIGlmIHlvdSBkb24ndCBnbG93CgpIZXksIG5vdyBZb3UncmUgYW4gYWxsLXN0YXIKCkdldCB5b3VyIGdhbWUgb24sIGdvIHBsYXkKCkhleSwgbm93IFlvdSdyZSBhIHJvY2sgc3RhcgoKR2V0IHRoZSBzaG93IG9uLCBnZXQgcGFpZAoKQW5kIGFsbCB0aGF0IGdsaXR0ZXJzIGlzIGdvbGQKCk9ubHkgc2hvb3Rpbicgc3RhcnMgYnJlYWsgdGhlIG1vbGQKCkl0J3MgYSBjb29sIHBsYWNlIGFuZCB0aGV5IHNheSBpdCBnZXRzIGNvbGRlcgoKWW91J3JlIGJ1bmRsZWQgdXAgbm93IGJ1dCB3YWl0IHRpbGwgeW91IGdldCBvbGRlcgoKQnV0IHRoZSBtZXRlb3IgbWVuIGJlZyB0byBkaWZmZXIKCkp1ZGdpbmcgYnkgdGhlIGhvbGUgaW4gdGhlIHNhdGVsbGl0ZSBwaWN0dXJlCgpUaGUgaWNlIHdlIHNrYXRlIGlzIGdldHRpbicgcHJldHR5IHRoaW4KClRoZSB3YXRlcidzIGdldHRpbmcgd2FybSBzbyB5b3UgbWlnaHQgYXMgd2VsbCBzd2ltCgpNeSB3b3JsZCdzIG9uIGZpcmUKCkhvdyAnYm91dCB5b3VycwoKVGhhdCdzIHRoZSB3YXkgSSBsaWtlIGl0IGFuZCBJJ2xsIG5ldmVyIGdldCBib3JlZAoKSGV5LCBub3csIHlvdSdyZSBhbiBhbGwtc3RhcgoKe1Nob3V0aW5nfQoKR2V0IHlvdXIgZ2FtZSBvbiwgZ28gcGxheQoKSGV5LCBub3cgWW91J3JlIGEgcm9jayBzdGFyCgpHZXQgdGhlIHNob3cgb24sIGdldCBwYWlkCgpBbmQgYWxsIHRoYXQgZ2xpdHRlcnMgaXMgZ29sZAoKT25seSBzaG9vdGluJyBzdGFycyBicmVhayB0aGUgbW9sZAoKe0JlbGNoZXN9CgpHbyEKCkdvIQoKe1JlY29yZCBTY3JhdGNoaW5nfQoKR28uIEdvLkdvLgoKSGV5LCBub3csIHlvdSdyZSBhbiBhbGwtc3RhcgoKR2V0IHlvdXIgZ2FtZSBvbiwgZ28gcGxheQoKSGV5LCBub3cgWW91J3JlIGEgcm9jayBzdGFyCgpHZXQgdGhlIHNob3cgb24sIGdldCBwYWlkCgpBbmQgYWxsIHRoYXQgZ2xpdHRlcnMgaXMgZ29sZAoKT25seSBzaG9vdGluJyBzdGFycyBicmVhayB0aGUgbW9sZAoKCgotVGhpbmsgaXQncyBpbiB0aGVyZT8KCi1BbGwgcmlnaHQuIExldCdzIGdldCBpdCEKCi1XaG9hLiBIb2xkIG9uLiBEbyB5b3Uga25vdyB3aGF0IHRoYXQgdGhpbmcgY2FuIGRvIHRvIHlvdT8KCi1ZZWFoLCBpdCdsbCBncmluZCB5b3VyIGJvbmVzIGZvciBpdCdzIGJyZWFkLgoKe0xhdWdoc30KCi1ZZXMsIHdlbGwsIGFjdHVhbGx5LCB0aGF0IHdvdWxkIGJlIGEgZ2FpbnQuCgpOb3csIG9ncmVzIC0gLSBUaGV5J3JlIG11Y2ggd29yc2UuCgpUaGV5J2xsIG1ha2UgYSBzdWl0IGZyb20geW91ciBmcmVzaGx5IHBlZWxlZCBza2luLgoKLU5vIQoKLVRoZXknbGwgc2hhdmUgeW91ciBsaXZlci4gU3F1ZWV6ZSB0aGUgamVsbHkgZnJvbSB5b3VyIGV5ZXMhCgpBY3R1YWxseSwgaXQncyBxdWl0ZSBnb29kIG9uIHRvYXN0LgoKLUJhY2shIEJhY2ssIGJlYXN0ISBCYWNrISBJIHdhcm4geWEhCgp7R2FzcGluZ30KCi1SaWdodC4KCntSb2FyaW5nfQoKe1Nob3V0aW5nfQoKe1JvYXJpbmd9Cgp7V2hpc3BlcnN9IFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IHJ1biBhd2F5LgoKe0dhc3Bpbmd9Cgp7TGF1Z2hzfQoKe0xhdWdoaW5nfSBBbmQgc3RheSBvdXQhCgoiV2FudGVkLiBGYWlyeSB0YWxlIGNyZWF0dXJlcy4iCgp7U2lnaHN9Cgp7TWFuJ3Mgdm9pY2V9IEFsbCByaWdodC4gVGhpcyBvbmUncyBmdWxsLgoKLVRha2UgaXQgYXdheSEKCntHYXNwc30KCi1Nb3ZlIGl0IGFsb25nLiBDb21lIG9uISBHZXQgdXAhCgotTmV4dCEKCi1HaXZlIG1lIHRoYXQhIFlvdXIgZml5aW5nIGRheXMgYXJlIG92ZXIuCgpUaGF0J3MgMjAgcGllY2VzIG9mIHNpbHZlciBmb3IgdGhlIHdpdGNoLiBOZXh0IQoKLUdldCB1cCEgQ29tZSBvbiEKCi1Ud2VudHkgcGllY2VzLgoKe1RodWRkaW5nfQoKLVNpdCBkb3duIHRoZXJlIQoKLUtlZXAgcXVpZXQhCgp7Q3J5aW5nfQoKLVRoaXMgY2FnZSBpcyB0b28gc21hbGwuCgotUGxlYXNlLCBkb24ndCB0dXJuIG1lIGluLiBJJ2xsIG5ldmVyIGJlIHN0dWJib3JuIGFnYWluLgoKSSBjYW4gY2hhbmdlLiBQbGVhc2UhIEdpdmUgbWUgYW5vdGhlciBjaGFuY2UhCgotT2gsIHNodXQgdXAuCgotT2ghCgotTmV4dCEKCi1XaGF0IGhhdmUgeW91IGdvdD8KCi1UaGlzIGxpdHRsZSB3b29kZW4gcHVwcGV0LgoKLUknbSBub3QgYSBwdXBwZXQuIEknbSBhIHJlYWwgYm95LgoKLUZpdmUgc2hpbGxpbmdzIGZvciB0aGUgcG9zc2Vzc2VkIHRveS4gVGFrZSBpdCBhd2F5LgoKLUZhdGhlciwgcGxlYXNlISBEb24ndCBsZXQgdGhlbSBkbyB0aGlzIQoKLUhlbHAgbWUhCgotTmV4dCEgV2hhdCBoYXZlIHlvdSBnb3Q/CgotV2VsbCwgSSd2ZSBnb3QgYSB0YWxraW5nIGRvbmtleS4KCntHcnVudHN9CgotUmlnaHQuIFdlbGwsIHRoYXQncyBnb29kIGZvciB0ZW4gc2hpbGxpbmdzLCBpZiB5b3UgY2FuIHByb3ZlIGl0LgoKLU9oLCBnbyBhaGVhZCwgbGl0dGxlIGZlbGxhLgoKLVdlbGw/CgotT2gsIG9oLCBoZSdzIGp1c3QgLSAtIEhlJ3MganVzdCBhIGxpdHRsZSBuZXJ2b3VzLgoKSGUncyByZWFsbHkgcXVpdGUgYSBjaGF0dGVyYm94LiBUYWxrLCB5b3UgYm9uZWhlYWRlZCBkb2x0IC0gLQoKLVRoYXQncyBpdC4gSSd2ZSBoZWFyZCBlbm91Z2guIEd1YXJkcyEKCi1Obywgbm8sIGhlIHRhbGtzISBIZSBkb2VzLiBJIGNhbiB0YWxrLiBJIGxvdmUgdG8gdGFsay4KCkknbSB0aGUgdGFsa2luZ2VzdCBkYW1uIHRoaW5nIHlvdSBldmVyIHNhdy4KCi1HZXQgaGVyIG91dCBvZiBteSBzaWdodC4KCi1Obywgbm8hIEkgc3dlYXIhIE9oISBIZSBjYW4gdGFsayEKCntHYXNwc30KCi1IZXkhIEkgY2FuIGZseSEKCi1IZSBjYW4gZmx5IQoKLUhlIGNhbiBmbHkhCgotSGUgY2FuIHRhbGshCgotSGEsIGhhISBUaGF0J3MgcmlnaHQsIGZvb2whIE5vdyBJJ20gYSBmbHlpbmcsIHRhbGtpbmcgZG9ua2V5LgoKWW91IG1pZ2h0IGhhdmUgc2VlbiBhIGhvdXNlZmx5LCBtYXliZSBldmVuIGEgc3VwZXJmbHkKCmJ1dCBJIGJldCB5b3UgYWluJ3QgbmV2ZXIgc2VlbiBhIGRvbmtleSBmbHkuIEhhLCBoYSEKCk9oLW9oLgoKe0dydW50c30KCi1TZWl6ZSBoaW0hCgotQWZ0ZXIgaGltISBIZSdzIGdldHRpbmcgYXdheSEKCntHcnVudHMsIEdhc3BzfQoKe01hbn0KCi1HZXQgaGltISBUaGlzIHdheSEgVHVybiEKCi1Zb3UgdGhlcmUuIE9yZ2UhCgotQXllPwoKLUJ5IHRoZSBvcmRlciBvZiBMb3JkIEZhcnF1YWFkIEkgYW0gYXV0aG9yaXplZCB0byBwbGFjZSB5b3UgYm90aCB1bmRlciAKCmFycmVzdAoKYW5kIHRyYW5zcG9ydCB5b3UgdG8gYSBkZXNpZ25hdGVkLi4uLi4gcmVzZXR0bGVtZW50IGZhY2lsaXR5LgoKLU9oLCByZWFsbHk/IFlvdSBhbmQgd2hhdCBhcm15PwoKe0dhc3BzLCBXaGltcGVyaW5nfQoKe0NodWNrbGVzfQoKLUNhbiBJIHNheSBzb21ldGhpbmcgdG8geW91PwoKLUxpc3RlbiwgeW91IHdhcyByZWFsbHksIHJlYWxseSwgcmVhbGx5IHNvbWV0aGluJyBiYWNrIGhlcmUuIAoKSW5jcmVkaWJsZSEKCkFyZSB5b3UgdGFsa2luJyB0byAtIC0gbWU/IFdob2EhCgotWWVzLiBJIHdhcyB0YWxraW4nIHRvIHlvdS4gQ2FuIEkgdGVsbCB5b3UgdGhhdCB5b3UgdGhhdCB5b3Ugd2FzIGdyZWF0IAoKYmFjayBoZXJlPyBUaG9zZSBndWFyZHMhCgpUaGV5IHRob3VnaHQgdGhleSB3YXMgYWxsIG9mIHRoYXQuIFRoZW4geW91IHNob3dlZCB1cCwgYW5kIGJhbSEgVGhleSAKCndhcyB0cmlwcGluJyBvdmVyIHRoZW1zZWx2ZXMgbGlrZSBiYWJlcyBpbiB0aGUgd29vZHMuIFRoYXQgcmVhbGx5IG1hZGUgCgptZSBmZWVsIGdvb2QgdG8gc2VlIHRoYXQuCgotT2gsIHRoYXQncyBncmVhdC4gUmVhbGx5LgoKLU1hbiwgaXQncyBnb29kIHRvIGJlIGZyZWUuCgotTm93LCB3aHkgZG9uJ3QgeW91IGdvIGNlbGVicmF0ZSB5b3VyIGZyZWVkb20gd2l0aCB5b3VyIG93biBmcmllbmRzPyAKCkhtbT8KCi1CdXQsIHVoLCBJIGRvbid0IGhhdmUgYW55IGZyaWVuZHMuIEFuZCBJJ20gbm90IGdvaW4nIG91dCB0aGVyZSBieSAKCm15c2VsZi4gSGV5LCB3YWl0IGEgbWludXRlISBJIGdvdCBhIGdyZWF0IGlkZWEhIEknbGwgc3RpY2sgd2l0aCB5b3UuIAoKWW91J3JlIG1lYW4sIGdyZWVuLCBmaWdodGluJyBtYWNoaW5lLiBUb2dldGhlciB3ZSdsbCBzY2FyZSB0aGUgc3BpdCAKCm91dCBvZiBhbnlib2R5IHRoYXQgY3Jvc3NlcyB1cy4KCntSb2FyaW5nfQoKLU9oLCB3b3chIFRoYXQgd2FzIHJlYWxseSBzY2FyeS4gSWYgeW91IGRvbid0IG1pbmQgbWUgc2F5aW4nLCBpZiB0aGF0IAoKZG9uJ3Qgd29yaywgeW91ciBicmVhdGggY2VydGFpbmx5IHdpbGwgZ2V0IHRoZSBqb2IgZG9uZSwgJ2NhdXNlIHlvdSAKCmRlZmluaXRlbHkgbmVlZCBzb21lIFRpYyBUYWNzIG9yIHNvbWV0aGluZywgJ2NhdXNlIHlvdSBicmVhdGggc3RpbmtzIQoKWW91IGFsbW9zdCBidXJuZWQgdGhlIGhhaXIgb3V0dGEgbXkgbm9zZSwganVzdCBsaWtlIHRoZSB0aW1lIC0gLSAKCntNdW1ibGluZ30KClRoYW4gSSBhdGUgc29tZSByb3R0ZW4gYmVycmllcy4gSSBoYWQgc3Ryb25nIGdhc2VzIGVraW5nIG91dCBvZiBteSAKCmJ1dHQgdGhhdCBkYXkuCgotV2h5IGFyZSB5b3UgZm9sbG93aW5nIG1lPwoKLUknbGwgdGVsbCB5b3Ugd2h5LiAKCgoKJ0NhdXNlIEknbSBhbGwgYWxvbmUKClRoZXJlJ3Mgbm8gb25lIGhlcmUgYmVzaWRlIG1lCgpNeSBwcm9tbGVtcyBoYXZlIGFsbCBnb25lCgpUaGVyZSdzIG5vIG9uZSB0byBkZXJpZGUgbWUKCkJ1dCB5b3UgZ290dGEgaGV2ZSBmcmllbmRzIC0gLSAKCgoKLVN0b3Agc2luZ2luZyEgSXQncyBubyB3b25kZXIgeW91IGRvbid0IGhhdmUgYW55IGZyaWVuZHMuCgotV293LiBPbmx5IGEgdHJ1ZSBmcmllbmQgd291bGQgYmUgdGhhdCBjcnVlbGx5IGhvbmVzdC4KCi1MaXN0ZW4sIGxpdHRsZSBkb25rZXkuIFRha2UgYSBsb29rIGF0IG1lLiBXaGF0IGFtIEk/CgotVWggLSAtIFJlYWxseSB0YWxsPwoKLU5vISBJJ20gYW4gb3JnZSEgWW91IGtub3cuICJHcmFiIHlvdXIgdG9yY2ggYW5kIHBpdGNoZm9ya3MuIiBEb2Vzbid0IAoKdGhhdCBib3RoZXIgeW91PwoKLU5vcGUuCgotUmVhbGx5PwoKLVJlYWxseSwgcmVhbGx5LgoKLU9oLgoKLU1hbiwgSSBsaWtlIHlvdS4gV2hhdCdzIHlvdSBuYW1lPwoKLVVoLCBTaHJlay4KCi1TaHJlaz8gV2VsbCwgeW91IGtub3cgd2hhdCBJIGxpa2UgYWJvdXQgeW91LCBTaHJlaz8KCllvdSBnb3QgdGhhdCBraW5kIG9mIEktZG9uJ3QtY2FyZS13aGF0LW5vYm9keS10aGlua3Mtb2YtbWUgdGhpbmcuCgpJIGxpa2UgdGhhdC4gSSByZXNwZWN0IHRoYXQsIFNocmVrLiBZb3UgYWxsIHJpZ2h0LiBXaG9vISBMb29rIGF0IHRoYXQuIAoKV2hvJ2Qgd2FudCB0byBsaXZlIGluIHBsYWNlIGxpa2UgdGhhdD8KCi1UaGF0IHdvdWxkIGJlIG15IGhvbWUuCgotT2ghIEFuZCBpdCBpcyBsb3ZlbHkhIEp1c3QgYmVhdXRpZnVsLiBZb3Uga25vdyB5b3UgYXJlIHF1aXRlIGEgCgpkZWNvcmF0b3IuIEl0J3MgYW1hemluZyB3aGF0IHlvdSd2ZSBkb25lIHdpdGggc3VjaCBhIG1vZGVzdCBidWRnZXQuIEkgCgpsaWtlIHRoYXQgYm91bGRlci4gVGhhdCBpcyBhIG5pY2UgYm91bGRlci4KCi1JIGd1ZXNzIHlvdSBkb24ndCBlbnRlcnRhaW4gbXVjaCwgZG8geW91PwoKLUkgbGlrZSBteSBwcml2YWN5LgoKLVlvdSBrbm93LCBJIGRvIHRvby4gVGhhdCdzIGFub3RoZXIgdGhpbmcgd2UgaGF2ZSBpbiBjb21tb24uIExpa2UgSSAKCmhhdGUgaXQgd2hlbiB5b3UgZ290IHNvbWVib2R5IGluIHlvdXIgZmFjZS4gWW91J3ZlIHRyeWluZyB0byBnaXZlIHRoZW0gCgphIGhpbnQsIGFuZCB0aGV5IHdvbid0IGxlYXZlLiBUaGVyZSdzIHRoYXQgYXdrd2FyZCBzaWxlbmNlLgoKLUNhbiBJIHN0YXkgd2l0aCB5b3U/CgotVWgsIHdoYXQ/CgotQ2FuIEkgc3RheSB3aXRoIHlvdSwgcGxlYXNlPwoKLU9mIGNvdXJzZSEKCi1SZWFsbHk/CgotTm8uCgotUGxlYXNlISBJIGRvbid0IHdhbm5hIGdvIGJhY2sgdGhlcmUhIFlvdSBkb24ndCBrbm93IHdoYXQgaXQncyBsaWtlIHRvIAoKYmUgY29uc2lkZXJlZCBhIGZyZWFrLiBXZWxsLCBtYXliZSB5b3UgZG8uIEJ1dCB0aGF0J3Mgd2h5IHdlIGdvdHRhIAoKc3RpY2sgdG9nZXRoZXIuIFlvdSBnb3R0YSBsZXQgbWUgc3RheSEgUGxlYXNlISBQbGVhc2UhCgotT2theSEgT2theSEgQnV0IG9uZSBuaWdodCBvbmx5LgoKLUFoISBUaGFuayB5b3UhCgotV2hhdCBhcmUgeW91IC0gLSBObyEgTm8hCgotVGhpcyBpcyBnb25uYSBiZSBmdW4hIFdlIGNhbiBzdGF5IHVwIGxhdGUsIHN3YXBwaW4nIG1hbmx5IHN0b3JpZXMsIAoKYW5kIGluIHRoZSBtb3JuaW4nIEknbSBtYWtpbicgd2FmZmxlcy4KCi1PaCEKCi1XaGVyZSBkbywgdWgsIEkgc2xlZXA/CgotT3V0c2lkZSEKCi1PaCwgd2VsbC4gSSBndWVzcyB0aGF0J3MgY29vbC4gSSBtZWFuLCBJIGRvbid0IGtub3cgeW91LCBhbmQgeW91IAoKZG9uJ3Qga25vdyBtZSwgc28gSSBndWVzcyBvdXRzaWRlIGlzIGJlc3QsIHlvdSBrbm93LgoKe1NuaWZmbGVzfQoKLUhlcmUgSSBnby4KCi1Hb29kIG5pZ2h0LgoKe1NpZ2hzfQoKLUkgbWVhbiwgSSBkbyBsaWtlIHRoZSBvdXRkb29ycy4gSSdtIGEgZG9ua2V5LiBJIHdhcyBib3JuIG91dHNpZGUuIAoKSSdsbCBqdXN0IGJlIHNpdHRpbmcgYnkgbXlzZWxmIG91dHNpZGUsIEkgZ3Vlc3MsIHlvdSBrbm93LiBCeSBteXNlbGYsIAoKb3V0c2lkZS4KCgoKSSdtIGFsbCBhbG9uZQoKVGhlcmUncyBubyBvbmUgaGVyZSBiZXNpZGUgbWUKCntCdWJibGluZ30KCntTaWdoc30KCntDcmVha2luZ30KCntTaWdoc30KCi1JIHRob3VnaHQgSSB0b2xkIHlvdSB0byBzdGF5IG91dHNpZGUuCgotSSdtIG91dHNpZGUuCgp7Q2xhdHRlcmluZ30KCi1XZWxsLCBnZW50cywgaXQncyBhIGZhciBjcnkgZnJvbSB0aGUgZmFybSwgYnV0IHdoYXQgY2hvaWNlIGRvIHdlIAoKaGF2ZT8gCgotSXQncyBub3QgaG9tZSwgYnV0IGl0J2xsIGRvIGp1c3QgZnVuZS4KCi1XaGF0IGEgbG92ZWx5IGJlZC4KCi1Hb3QgeWEuCgp7U25pZmZzfSBJIGZvdW5kIHNvbWUgY2hlZXNlLgoKLU93ISB7R3J1bnRzfQoKLUJsYWghIEF3ZnVsIHN0dWZmLgoKLUlzIHRoYXQgeW91LCBHb3JkZXI/CgotSG93IGRpZCB5b3Uga25vdz8KCi1Fbm91Z2ghIFdoYXQgYXJlIHlvdSBkb2luZyBpbiBteSBob3VzZT8KCntHcnVudHN9CgotSGV5IQoKe1NuaWNrZXJzfQoKLU9oLCBubywgbm8sIG5vLiBEZWFkIGJyb2FkIG9mZiB0aGUgdGFibGUuCgotV2hlcmUgYXJlIHdlIHN1cHBvc2VkIHRvIHB1dCBoZXI/IFRoZSBiZWQncyB0YWtlbi4KCi1IdWg/Cgp7R3VzcHN9Cgp7TWFsZSB2b2ljZX0gV2hhdD8KCi1JIGxpdmUgaW4gYSBzd2FtcC4gSSBwdXQgdXAgc2lnbnMuIEknbSBhIHRlcnJpZnlpbmcgb3JnZSEgV2hhdCBkbyBJIAoKaGF2ZSB0byBkbyBnZXQgYSBsaXR0bGUgcHJpdmFjeT8KCi1BYWghCgotT2gsIG5vLiBObyEgTm8hCgp7Q2Fja2xpbmd9CgotV2hhdD8KCi1RdWl0IGl0LgoKLURvbid0IHB1c2guCgp7U3F1ZWFraW5nfQoKe0xvd3N9CgotIFdoYXQgYXJlIHlvdSBkb2luZyBpbiBteSBzd2FtcD8KCntFY2hvaW5nfQoKU3dhbXAhIFN3YW1wISBTd2FtcCEKCntHYXNwaW5nfQoKLU9oLCBkZWFyIQoKLVdob2EhCgotQWxsIHJpZ2h0LCBnZXQgb3V0IG9mIGhlcmUuIEFsbCBvZiB5b3UsIG1vdmUgaXQhIENvbWUgb24hIExldCdzIGdvISAKCkhhcGF5YSEgSGFwYXlhISBIZXkhCgotUXVpY2tseS4gQ29tZSBvbiEKCi1Obywgbm8hIE5vLCBuby4gTm90IHRoZXJlLiBOb3QgdGhlcmUuCgotT2ghCgp7U2lnaHN9CgotSGV5LCBkb24ndCBsb29rIGF0IG1lLiBJIGRpZG4ndCBpbnZpdGUgdGhlbS4KCi1PaCwgZ29zaCwgbm8gb25lIGludml0ZWQgdXMuCgotV2hhdD8KCi1XZSB3ZXJlIGZvcmNlZCB0byBjb21lIGhlcmUuCgotQnkgd2hvPwoKLUxvcmQgRmFycXVhYWQuCgotSGUgaHVmZmVkIHVuZCBoZSBwdWZmZWQgdW5kIGhlLi4uLi4uIHNpZ25lZCBhbiBldmljdGlvbiBub3RpY2UuCgp7U2lnaHN9CgotQWxsIHJpZ2h0LiBXaG8ga25vd3Mgd2hlcmUgdGhpcyBGYXJxdWFhZCBndXkgaXM/Cgp7TXVybXVyaW5nfQoKLU9oLCBJIGRvLiBJIGtub3cgd2hlcmUgaGUgaXMuCgotRG9lcyBhbnlvbmUgZWxzZSBrbm93IHdoZXJlIHRvIGZpbmQgaGltPyBBbnlvbmUgYXQgYWxsPwoKLU1lISBNZSEKCi1BbnlvbmU/CgotT2ghIE9oLCBwaWNrIG1lISBPaCwgSSBrbm93ISBJIGtub3chIE1lLCBtZSEKCntTaWdoc30KCi1Pa2F5LCBmaW5lLiBBdHRlbnRpb24sIGFsbCBmYWlyeSB0YWxlIHRoaW5ncy4gRG8gbm90IGdldCBjb21mb3J0YWJsZS4gCgpZb3VyIHdlbGNvbWUgaXMgb2ZmaWNpYWxseSB3b3JuIG91dC4gSW4gZmFjdCwgSSdtIGdvbm5hIHNlZSB0aGlzIGd1eSAKCkZhcnF1YWFkIHJpZ2h0IG5vdyBhbmQgZ2V0IHlvdSBhbGwgb2ZmIG15IGxhbmQgYW5kIGJhY2sgd2hlcmUgeW91IGNhbWUgCgpmcm9tIQoKe0NoZWVyaW5nfQoKe1R3aXR0ZXJpbmd9CgotT2ghIFlvdSEgWW91J3JlIGNvbWluJyB3aXRoIG1lLgoKLSBBbGwgcmlnaHQsIHRoYXQncyB3aGF0IEkgbGlrZSB0byBoZWFyLCBtYW4uIFNocmVrIGFuZCBEb25rZXksIHR3byAKCnN0YWx3YXJ0IGZyaWVuZHMsIG9mZiBvbiBhIHdoaXJsd2luZCBiaWctY2l0eSBhZHZlbnR1cmUuIEkgbG92ZSBpdCEKCi1PbiB0aGUgcm9hZCBhZ2Fpbi4gU2luZyBpdCB3aXRoIG1lLCBTaHJlay4KCi1IZXkuIE9oLCBvaCEKCi1JIGNhbid0IHdhaXQgdG8gZ2V0IG9uIHRoZSByb2FkIGFnYWluLgoKLVdoYXQgZGlkIEkgc2F5IGFib3V0IHNpbmdpbmc/CgotQ2FuIEkgd2hpc3RsZT8KCi1Oby4KCi1DYW4gSSBodW0gaXQ/CgotQWxsIHJpZ2h0LCBodW0gaXQuCgp7SHVtbWluZ30KCgoKe0dydW50c30KCntXaGltcGVyaW5nfQoKLVRoYXQncyBlbm91Z2guIEhlJ3MgcmVhZHkgdG8gdGFsay4KCntDb3VnaGluZ30KCntMYXVnaGluZ30KCntDbGVhcnMgdGhyb2F0fQoKLVJ1biwgcnVuLCBydW4sIGFzIGZ1c3QgYXMgeW91IGNhbi4gWW91IGNhbid0IGNhdGNoIG1lLiBJJ20gdGhlIAoKZ2luZ2VyYnJlYWQgbWFuIQoKLVlvdSBhcmUgYSBtb25zdGVyLgoKLUknbSBub3QgdGhlIG1vbnN0ZXIgaGVyZS4gWW91IGFyZS4gWW91IGFuZCB0aGUgcmVzdCBvZiB0aGF0IGZhaXJ5IAoKdGFsZSB0cmFzaCwgcG9pc29uaW5nIG15IHBlcmZlY3Qgd29ybGQuIE5vdywgdGVsbCBtZSEgV2hlcmUgYXJlIHRoZSAKCm90aGVycz8KCi1FYXQgbWUhe0dydW50c30KCi1JJ3ZlIHRyaWVkIHRvIGJlIGZhaXIgdG8geW91IGNyZWF0dXJlcy4gTm93IG15IHBhdGllbmNlIGhhcyByZWFjaGVkIAoKaXRzIGVuZCEgVGVsbCBtZSBvciBJJ2xsIC0gLQoKLU5vLCBubywgbm90IHRoZSBidXR0b25zLiBOb3QgbXkgZ3VtZHJvcCBidXR0b25zLgoKLUFsbCByaWdodCB0aGVuLiBXaG8ncyBoaWRpbmcgdGhlbT8KCi1Pa2F5LCBJJ2xsIHRlbGwgeW91LiBEbyB5b3Uga25vdyB0aGUgbXVmZmluIG1hbj8KCi1UaGUgbXVmZmluIG1hbj8KCi1UaGUgbXVmZmluIG1hbi4KCi1ZZXMsIEkga25vdyB0aGUgbXVmZmluIG1hbiwgd2hvIGxpdmVzIG9uIERydXJ5IExhbmU/CgotV2VsbCwgc2hlJ3MgbWFycmllZCB0byB0aGUgbXVmZmluIG1hbi4KCi1UaGUgbXVmZmluIG1hbj8KCi1UaGUgbXVmZmluIG1hbiEKCi1TaGUncyBtYXJyaWVkIHRvIHRoZSBtdWZmaW4gbWFuLgoKe0Rvb3Igb3BlbnN9CgotTXkgbG9yZCEgV2UgZm91bmQgaXQuCgotVGhlbiB3aGF0IGFyZSB5b3Ugd2FpdGluZyBmb3I/IEJyaW5nIGl0IGluLgoKe01hbiBncnVudGluZ30KCntHYXNwaW5nfQoKLU9oIQoKLU1hZ2ljIG1pcnJvciAtIC0gCgotRG9uJ3QgdGVsbCBoaW0gYW55dGhpbmchCgotTm8hCgp7R2luZXJicmVhZCBtYW4gd2hpc3BlcnN9CgotRXZlbmluZy4gTWlycm9yLCBtaXJyb3Igb24gdGhlIHdhbGwuIElzIHRoaXMgbm90IHRoZSBtb3N0IHBlcmZlY3QgCgpraW5nZG9tIG9mIHRoZW0gYWxsPwoKLVdlbGwsIHRlY2huaWNhbGx5IHlvdSdyZSBub3QgYSBraW5nLgoKLVVoLCBUaGVsb25pdXMuCgotWW91IHdlcmUgc2F5aW5nPwoKLVdoYXQgSSBtZWFuIGlzLCB5b3UncmUgbm90IGEga2luZyB5ZXQuIEJ1dCB5b3UgY2FuIGJlY29tZSBvbmUuICBBbGwgCgp5b3UgaGF2ZSB0byBkbyBpcyBtYXJyeSBhIHByaW5jZXNzLgoKLUdvIG9uLgoKe0NodWNrbGVzfQoKLVNvLCBqdXN0IHNpdCBiYWNrIGFuZCByZWxheCwgbXkgbG9yZCwgYmVjYXVzZSBpdCdzIHRpbWUgZm9yIHlvdSB0byAKCm1lZXQgdG9kYXkncyBlbGlnaWJsZSBiYWNoZWxvcmV0dGVzLiBBbmQgaGVyZSB0aGV5IGFyZSEgQmFjaGVsb3JldHRlIAoKbnVtYmVyIG9uZSBpcyBhIG1lbnRhbGx5IGFidXNlZCBzaHV0LWluIGZyb20gYSBraW5nZG9tIGZhciwgZmFyIGF3YXkuIAoKU2hlIGxpa2VzIHN1c2hpIGFuZCBob3QgdHViYmluZyBhbnl0aW1lLiBIZXIgaG9iYmllcyBpbmNsdWRlIGNvb2tpbmcgCgphbmQgY2xlYW5pbmcgZm9yIGhlciB0d28gZXZpbCBzaXN0ZXJzLiBQbGVhc2Ugd2VsY29tZSBDaW5kZXJlbGxhLgoKLUJhY2hlbG9yZXR0ZSBudW1iZXIgdHdvIGlzIGEgY2FwZS13ZWFyaW5nIGdpcmwgZnJvbSB0aGUgbGFuZCBvZiAKCmZhbmN5LiBBbHRob3VnaCBzaGUgbGl2ZXMgd2l0aCBzZXZlbiBvdGhlciBtZW4sIHNoZSdzIG5vdCBlYXN5LiBKdXN0IAoKa2lzcyBoZXIgZGVhZCwgZnJvemVuIGxpcHMgYW5kIGZpbmQgb3V0IHdoYXQgYSBsaXZlIHdpcmUgc2hlIGlzLiBDb21lIAoKb24uIEdpdmUgaXQgdXAgZm9yIFNub3cgV2hpdGUhCgotQW5kIGxhc3QsIGJ1dCBjZXJ0YWlubHkgbm90IGxhc3QsIGJhY2hlbG9yZXR0ZSBudW1iZXIgdGhyZWUgaXMgYSAKCmZpZXJ5IHJlZGhlYWQgZnJvbSBhIGRyYWdvbi1ndWFyZGVkIGNhc3RsZSBzdXJyb3VuZGVkIGJ5IGhvdCBib2lsaW5nIAoKbGF2YSEgQnV0IGRvbid0IGxldCB0aGF0IGNvb2wgeW91IG9mZi4gU2hlJ3MgYSBsb2FkZWQgcGlzdG9sIHdobyBsaWtlcyAKCnBpbmEgY29sYWRzIGFuZCBnZXR0aW5nIGNhdWdodCBpbiB0aGUgcmFpbi4gWW91cnMgZm9yIHRoZSByZXNjdWluZywgCgpQcmluY2VzcyBGaW9uYSEKCi1TbyB3aWxsIGl0IGJlIGJhY2hlbG9yZXR0ZSBudW1iZXIgb25lLCBiYWNoZWxvcmV0dGUgbnVtYmVyIHR3byBvciAKCmJhY2hlbG9yZXR0ZSBudW1iZXIgdGhyZWU/CgotVHdvISBUd28hCgotVGhyZWUhIFRocmVlIQoKLVR3byEgVHdvIQoKLVRocmVlISAKCi1UaHJlZT8gT25lPwoKe1NodWRkZXJzfSBUaHJlZT8KCi0tVGhyZWUhIFBpY2sgbnVtYmVyIHRocmVlLCBteSBsb3JkIQoKLU9rYXksIG9rYXksIHVoLCBudW1iZXIgdGhyZWUhCgotTG9yZCBGYXJxdWFhZCwgeW91J3ZlIGNob3NlbiBQcmluY2VzcyBGaW9uYS4KCgoKSWYgeW91IGxpa2UgcGluYSBjb2xhZGFzCgpBbmQgZ2V0dGluZyBjYXVnaHQgaW4gdGhlIHJhaW4KCgoKLVByaW5jZXNzIEZpb25hLgoKCgpJZiB5b3UncmUgbm90IGludG8geW9nYQoKCgotU2hlJ3MgcGVyZmVjdC4gQWxsIEkgaGF2ZSB0byBkbyBpcyBqdXN0IGZpbmQgc29tZW9uZSB3aG8gY2FuIGdvIC0gLSAKCi1CdXQgSSBwcm9iYWJseSBzaG91bGQgbWVudGlvbiB0aGUgbGl0dGxlIHRoaW5nIHRoYXQgaGFwcGVucyBhdCBuaWdodC4KCi1JJ2xsIGRvIGl0LgoKLVllcywgYnV0IGFmdGVyIHN1bnNldCAtIC0KCi1TaWxlbmNlISBJIHdpbGwgbWFrZSB0aGlzIFByaW5jZXNzIEZpb25hIG15IHF1ZWVuLCBhbmQgRHVMb2Mgd2lsbCAKCmZpbmFsbHkgaGF2ZSB0aGUgcGVyZmVjdCBraW5nIQoKQ2FwdGFpbiwgYXNzZW1ibGUgeW91ciBmaW5lc3QgbWVuLiBXZSdyZSBnb2luZyB0byBoYXZlIGEgdG91cm5hbWVudC4KCgoKLUJ1dCB0aGF0J3MgaXQuIFRoYXQncyBpdCByaWdodCB0aGVyZS4gVGhhdCdzIER1TG9jLiBJIHRvbGQgeWEgSSdkIAoKZmluZCBpdC4KCi1TbywgdGhhdCBtdXN0IGJlIExvcmQgRmFycXVhYWQncyBjYXN0bGUuCgotVWgtaHVoLiBUaGF0J3MgdGhlIHBsYWNlLgoKLURvIHlvdSB0aGluayBtYXliZSBoZSdzIGNvbXBlbnNhdGluZyBmb3Igc29tZXRoaW5nPwoKe0xhdWdoc30KCntHcm9hbnN9CgotSGV5LCB3YWl0LiBXYWl0IHVwLCBTaHJlay4KCi1IdXJyeSwgZGFybGluZy4gV2UncmUgbGF0ZS4gSHVycnkuCgotSGV5LCB5b3UhCgp7U2NyZWFtc30KCi1XYWl0IGEgc2Vjb25kLiBMb29rLCBJJ20gbm90IGdvbm5hIGVhdCB5b3UuIEkganVzdCAtIC0gSSBqdXN0IC0gLQoKe1doaW1wZXJpbmd9Cgp7U2lnaHN9Cgp7V2hpbXBlcmluZywgR3JvYW5zfQoKe1R1cm5zdGlsZSBjbGF0dGVyc30KCntDaHVja2xlc30KCntTaWdoc30KCi1JdCdzIHF1aWV0LiBUb28gcXVpZXQuCgp7Q3JlYWtpbmd9CgotV2hlcmUgaXMgZXZlcnlib2R5PwoKLUhleSwgbG9vayBhdCB0aGlzIQoKe0NsYXR0ZXJpbmcsIHdoaXJyaW5nLCBjbGlja2luZ30KCldlbGNvbWUgdG8gRHVMb2Mgc3VjaCBhIHBlcmZlY3QgdG93bgoKSGVyZSB3ZSBoYXZlIHNvbWUgcnVsZXMKCkxldCB1cyBsYXkgdGhlbSBkb3duCgpEb24ndCBtYWtlIHdhdmVzLCBzdGF5IGluIGxpbmUKCkFuZCB3ZSdsbCBnZXQgYWxvbmcgZmluZQoKRHVMb2MgaXMgcGVyZmVjdCBwbGFjZQoKUGxlYXNlIGtlZXAgb2ZmIG9mIHRoZSBncmFzcwoKU2hpbmUgeW91ciBzaG9lcywgd2lwZSB5b3VyLi4uIGZhY2UKCkR1TG9jIGlzLCBEdUxvYyBpcwoKRHVMb2MgaXMgcGVyZmVjdCAuLi4uLi4gcGxhY2UKCntDYW1lcmEgc2h1dHRlciBjbGlja3MKCntXaGlycmluZ30KCi1Xb3chIExldCdzIGRvIHRoYXQgYWdhaW4hCgotTm8uIE5vLiBObywgbm8sIG5vISBOby4KCntUcnVtcGV0IGZhbmZhcmV9Cgp7Q3Jvd2QgY2hlZXJpbmd9CgotQnJhdmUga25pZ2h0cy4KCi1Zb3UgYXJlIHRoZSBiZXN0IGFuZCBicmlnaHRlc3QgaW4gYWxsIHRoZSBsYW5kLgoKLVRvZGF5IG9uZSBvZiB5b3Ugc2hhbGwgcHJvdmUgaGltc2VsZiAtIC0KCi1BbGwgcmlnaHQuIFlvdSdyZSBnb2luZyB0aGUgcmlnaHQgd2F5IGZvciBhIHNtYWNrZWQgYm90dG9tLgoKLVNvcnJ5IGFib3V0IHRoYXQuCgp7Q2hlZXJpbmd9CgotVGhhdCBjaGFtcGlvbiBzaGFsbCBoYXZlIHRoZSBob25vciAtIC0gbm8sIG5vIC0gLSB0aGUgcHJpdmlsZWdlIHRvIGdvIAoKZm9ydGggYW5kIHJlc2N1ZSB0aGUgbG92ZWx5IFByaW5jZXNzIEZpb25hIGZyb20gdGhlIGZpZXJ5IGtlZXAgb2YgdGhlIAoKZHJhZ29uLiBJZiBmb3IgYW55IHJlYXNvbiB0aGUgd2lubmVyIGlzIHVuc3VjY2Vzc2Z1bCwgdGhlIGZpcnN0IAoKcnVubmVyLXVwIHdpbGwgdGFrZSBoaXMgcGxhY2UgYW5kIHNvIG9uIGFuZCBzbyBmb3J0aC4gU29tZSBvZiB5b3UgbWFlIAoKZGllLCBidXQgaXQncyBhIHNhY3JpZmljZSBJIGFtIHdpbGxpbmcgdG8gbWFrZS4KCntDaGVlcmluZ30KCi1MZXQgdGhlIHRvdXJuYW1lbnQgYmVnaW4hCgp7R2FzcHN9CgotT2ghCgotV2hhdCBpcyB0aGF0PwoKe0dhc3Bpbmd9CgotSXQncyBoaWRlb3VzIQoKLUFoLCB0aGF0J3Mgbm90IHZlcnkgbmljZS4gSXQncyBqdXN0IGEgZG9ua2V5LgoKLUluZGVlZC4gS25pZ2h0cywgbmV3IHBsYW4hIFRoZSBvbmUgd2hvIGtpbGxzIHRoZSBvcmdlIHdpbGwgYmUgbmFtZWQgCgpjaGFtcGlvbiEgSGF2ZSBpdCBoaW0hCgotR2V0IGhpbSEKCi1PaCwgaGV5ISBOb3cgY29tZSBvbiEgSGFuZyBvbiBub3cuCgotR28gYWhlYWQhIEdldCBoaW0hCgotQ2FuJ3Qgd2UganVzdCBzZXR0bGUgdGhpcyBvdmVyIGEgcGludD8KCi1LaWxsIHRoZSBiZWFzdCEKCi1Obz8gQWxsIHJpZ2h0IHRoZW4uIENvbWUgb24hCgoKCkkgZG9uJ3QgZ2l2ZSBhIGRhbW4gYWJvdXQgbXkgcmVwdXRhdGlvbgoKWW91J3JlIGxpdmluZyBpbiB0aGUgcGFzdCAKCkl0J3MgYSBuZXcgZ2VuZXJhdGlvbgoKCgotRGFtbiEKCntXaGlubnlpbmd9CgoKCkEgZ2lybCBjYW4gZG8gd2hhdCBzaGUgd2FudHMgdG8gZG8KCkFuZCB0aGF0J3Mgd2hhdCBJJ20gZ29ubmEgZG8KCkFuZCBJIGRvbid0IGdpdmUgYSBkYW1uIGFib3V0IG15IGJhZCByZXB1dGF0aW9uCgpPaCwgbm8sIG5vLCBubywgbm8sIG5vLiBOb3QgbWUKCk1lLCBtZSwgbWUKCgoKLUhleSwgU2hyZWssIHRhZyBtZSEgVGFnIG1lIQoKCgpBbmQgSSBkb24ndCBnaXZlIGEgZGFtbiBhYm91dCBteSBiYWQgcmVwdXRhdGlvbgoKTmV2ZXIgc2FpZCBJIHdhbnRlZCB0byBpbXByb3ZlIG15IHN0YXRpb24KCgoKLUFoIQoKe0xhdWdoc30KCgoKQW5kIEknbSBhbHdheXMgZmVlbGluJyBnb29kIHdoZW4gSSdtIGhhdmluZyBmdW4KCgoKLVllYWghCgoKCkFuZCBJIGRvbid0IGhhdmUgdG8gcGxlYXNlIG5vIG9uZQoKCgotVGhlIGNoYWlyISBHaXZlIGhpbSB0aGUgY2hhaXIhCgoKCkFuZCBJIGRvbid0IGdpdmUgYSBkYW1uIGFib3V0IG15IGJhZCByZXB1dGF0aW9uCgpPaCwgbm8sIG5vLCBubywgbm8sIG5vLiBOb3QgbWUKCk1lLCBtZSwgbWUKCk9oLCBubywgbm8sIG5vLCBubywgbm8uIE5vdCBtZSwgbm90IG1lCgp7QmVsbCBkaW5nc30KCntDaGVlcmluZ30KCntMYXVnaHN9CgotT2gsIHllYWghIEFoISBBaCEgVGhhbmsgeW91ISBUaGFuayB5b3UgdmVyeSBtdWNoISBJJ20gaGVyZSB0aWxsIAoKVGh1cnNkYXkuIFRyeSB0aGUgdmVhbCEgSGEsIGhhIQoKe1NocmVrIGxhdWdoc30KCntDcm93ZCBnYXNwaW5nLCBtdXJtdXJpbmd9CgotU2hhbGwgSSBnaXZlIHRoZSBvcmRlciwgc2lyPwoKLU5vLCBJIGhhdmUgYSBiZXR0ZXIgaWRlYS4gUGVvcGxlIG9mIER1TG9jLCBJIGdpdmUgeW91IG91ciBjaGFtcGlvbiEKCi1XaGF0PwoKLUNvbmdyYXR1bGF0aW9ucywgb3JnZS4gWW91J3JlIHdvbiB0aGUgaG9ub3Igb2YgZW1iYXJraW5nIG9uIGEgZ3JlYXQgCgphbmQgbm9ibGUgcXVlc3QuCgotUXVlc3Q/IEknbSBhbHJlYWR5IGluIGEgcXVlc3QsIGEgcXVlc3QgdG8gZ2V0IG15IHN3YW1wIGJhY2suCgotWW91ciBzd2FtcD8KCi1ZZWFoLCBteSBzd2FtcCEgV2hlcmUgeW91IGR1bXBlZCB0aG9zZSB0YWxlIGNyZWF0dXJlcyEKCntDcm93ZCBtdXJtdXJpbmd9CgotSW5kZWVkLiBBbGwgcmlnaHQsIG9yZ2UuIEknbGwgbWFrZSB5b3UgYSBkZWFsLiBHbyBvbiB0aGlzIHF1ZXN0IGZvciAKCm1lLCBhbmQgSSdsbCBnaXZlIHlvdSB5b3VyIHN3YW1wIGJhY2suCgotRXhhY3RseSB0aGUgd2F5IGl0IHdhcz8KCi1Eb3duIHRvIHRoZSBsYXN0IHNsaW1lLWNvdmVyZWQgdG9hZHN0b29sLgoKLUFuZCB0aGUgc3F1YXR0ZXJzPwoKLUFzIGdvb2QgYXMgZ29uZS4KCi1XaGF0IGtpbmQgb2YgcXVlc3Q/CgotTGV0IG1lIGdldCB0aGlzIHN0cmFpZ2h0LiBZb3UncmUgZ29ubmEgZ28gZmlnaHQgYSBkcmFnb24gYW5kIHJlc2N1ZSBhIAoKcHJpbmNlc3MganVzdCBzbyBGYXJxdWFhZCB3aWxsIGdpdmUgeW91IGJhY2sgYSBzd2FtcCB3aGljaCB5b3Ugb25seSAKCmRvbid0IGhhdmUgYmVjYXVzZSBoZSBmaWxsZWQgaXQgZnVsbCBvZiBmcmVha3MgaW4gdGhlIGZpcnN0IHBsYWNlLgoKLUlzIHRoYXQgYWJvdXQgcmlnaHQ/CgotTWF5YmUgdGhlcmUncyBhIGdvb2QgcmVhc29uIGRvbmtleXMgc2hvdWxkbid0IHRhbGsuCgotSSBkb24ndCBnZXQgaXQuIFdoeSBkb24ndCB5b3UganVzdCBwdWxsIHNvbWUgb2YgdGhhdCBvcmdlIHN0dWZmIG9uIAoKaGltPyBUaHJvdHRsZSBoaW0sIGxheSBzaWVnZSB0byBoaXMgZm9ydHJlc3MsIGdyaW5kcyBoaXMgYm9uZXMgdG8gbWFrZSAKCnlvdXIgYnJlYWQsIHRoZSB3aG9sZSBvcmdlIHRyaXAuCgotT2gsIEkga25vdyB3aGF0LiBNYXliZSBJIGNvdWxkIGhhdmUgZGVjYXBpdGF0ZWQgYW4gZW50aXJlIHZpbGxhZ2UgYW5kIAoKcHV0IHRoZWlyIGhlYWRzIG9uIGEgcGlrZSwgZ290dGVuIGEga25pZmUsIGN1dCBvcGVuIHRoZWlyIHNwbGVlbiBhbmQgCgpkcmluayB0aGVpciBmbHVpZHMuIERvZXMgdGhhdCBzb3VuZCBnb29kIHRvIHlvdT8KCi1VaCwgbm8sIG5vdCByZWFsbHksIG5vLgoKLUZvciB5b3VyIGluZm9ybWF0aW9uLCB0aGVyZSdzIGEgbG90IG1vcmUgdG8gb3JnZXMgdGhhbiBwZW9wbGUgdGhpbmsuCgotRXhhbXBsZT8KCi1FeGFtcGxlPyBPa2F5LCB1bSwgb3JnZXMgYXJlIGxpa2Ugb25pb25zLgoKLXtTbmlmZnN9IFRoZXkgc3Rpbms/CgotWWVzIC0gLSBObyEKCi1UaGV5IG1ha2UgeW91IGNyeT8KCi1ObyEKCi1Zb3UgbGVhdmUgdGhlbSBpbiB0aGUgc3VuLCB0aGV5IGdldCBhbGwgYnJvd24sIHN0YXJ0IHNwcm91dGluJyBsaXR0bGUgCgp3aGl0ZSBoYWlycy4KCi1ObyEgTGF5ZXJzISBPbmlvbnMgaGF2ZSBsYXllcnMuIE9yZ2VzIGhhdmUgbGF5ZXJzISBPbmlvbnMgaGF2ZSAKCmxheWVycy4gWW91IGdldCBpdD8gV2UgYm90aCBoYXZlIGxheWVycy4gCgp7U2lnaHN9CgotT2gsIHlvdSBib3RoIGhhdmUgbGF5ZXJzLiBPaC4ge1NuaWZmc30gWW91IGtub3csIG5vdCBldmVyeWJvZHkgbGlrZXMgCgpvbmlvbnMuIENha2UhIEV2ZXJ5Ym9keSBsb3ZlcyBjYWtlcyEgQ2FrZXMgaGF2ZSBsYXllcnMuCgotSSBkb24ndCBjYXJlLi4uIHdoYXQgZXZlcnlvbmUgbGlrZXMuIE9yZ2VzIGFyZSBub3QgbGlrZSBjYWtlcy4KCi1Zb3Uga25vdyB3aGF0IGVsc2UgZXZlcnlib2R5IGxpa2VzPyBQYXJmYWl0cy4gSGF2ZSB5b3UgZXZlciBtZXQgYSAKCnBlcnNvbiwgeW91IHNheSwgIkxldCdzIGdldCBzb21lIHBhcmZhaXQsIiB0aGV5IHNheSwgIk5vLCBJIGRvbid0IGxpa2UgCgpubyBwYXJmYWl0Ij8gUGFyZmFpdHMgYXJlIGRlbGljaW91cy4KCi1ObyEgWW91IGRlbnNlLCBpcnJpdGF0aW5nLCBtaW5pYXR1cmUgYmVhc3Qgb2YgYnVyZGVuISBPcmdlcyBhcmUgbGlrZSAKCm9uaW9ucyEgQW5kIG9mIHN0b3J5LiBCeWUtYnllLiBTZWUgeWEgbGF0ZXIuCgotUGFyZmFpdHMgbWF5IGJlIHRoZSBtb3N0IGRlbGljaW91cyB0aGluZyBvbiB0aGUgd2hvbGUgZGFtbiBwbGFuZXQuCgotWW91IGtub3csIEkgdGhpbmsgSSBwcmVmZXJyZWQgeW91ciBodW1taW5nLiBEbyB5b3UgaGF2ZSBhIHRpc3N1cmUgb3IgCgpzb21ldGhpbmc/IEknbSBtYWtpbmcgYSBtZXNzLiBKdXN0IHRoZSB3b3JkIHBhcmZhaXQgbWFrZSBtZSBzdGFydCAKCnNsb2JiZXJpbmcuCgoKCkknbSBvbiBteSB3YXkgZnJvbSBtaXNlcnkgdG8gaGFwcGluZXNzIHRvZGF5CgpVaC1odWgsdWgtaHVoLCB1aC1odWgsIHVoLWh1aAoKSSdtIG9uIG15IHdheSBmcm9tIG1pc2VyeSB0byBoYXBwaW5lc3MgdG9kYXkKClVoLWh1aCx1aC1odWgsIHVoLWh1aCwgdWgtaHVoCgpBbmQgZXZlcnl0aGluZyB0aGF0IHlvdSByZWNlaXZlIHVwIHlvbmRlcgoKSXMgd2hhdCB5b3UgZ2l2ZSB0byBtZSB0aGUgZGF5IEkgd2FuZGVyCgpJJ20gb24gbXkgd2F5IAoKSSdtIG9uIG15IHdheSAKCkknbSBvbiBteSB3YXkgCgoKCi1PaGghIFNocmVrISBEaWQgeW91IGRvIHRoYXQ/CgotWW91IGdvdHRhIHdhcm4gc29tZWJvZHkgYmVmb3JlIHlvdSBqdXN0IGNyYWNrIG9uZSBvZmYuIE15IG1vdXRoIHdhcyAKCm9wZW4uIEJlbGlldmUgbWUsIERvbmtleSwgaWYgaXQgd2FzIG1lLCB5b3UnZCBiZSBkZWFkLiB7U25pZmZzfSBJdCdzIAoKYnJpbXN0b25lIFdlIG11c3QgYmUgZ2V0dGluZyBjbG9zZS4KCi1ZZWFoLCByaWdodCwgYnJpbXN0b25lLiBEb24ndCBiZSB0YWxraW5nIGFib3V0IGl0J3MgdGhlIGJyaW1zdG9uZS4gSSAKCmtub3cgd2hhdCBJIHNtZWxsLiBJdCB3YXNuJ3Qgbm8gYnJpbXN0b25lLiBJdCBkaWRuJ3QgY29tZSBvZmYgbm8gc3RvbmUgCgpuZWl0aGVyLgoKe1J1bWJsaW5nfQoKLVN1cmUsIGl0J3MgYmlnIGVub3VnaCwgYnV0IGxvb2sgYXQgdGhlIGxvY2F0aW9uLgoKe0xhdWdoaW5nfQoKLVVoLCBTaHJlaz8gVWgsIHJlbWVtYmVyIHdoZW4geW91IHNhaWQgb3JnZXMgaGF2ZSBsYXllcnM/CgotT2gsIGF5ZS4KCi1XZWxsLCBJIGhhdmUgYSBiaXQgb2YgYSBjb25mZXNzaW9uIHRvIG1ha2UuIERvbmtleXMgZG9uJ3QgaGF2ZSAKCmxheWVycy4gV2Ugd2VhciBvdXIgZmVhciByaWdodCBvdXQgdGhlcmUgb24gb3VyIHNsZWV2ZXMuCgotV2FpdCBhIHNlY29uZC4gIERvbmtleXMgZG9uJ3QgaGF2ZSBzbGVldmVzLgoKLVlvdSBrbm93IHdoYXQgSSBtZWFuLgoKLVlvdSBjYW4ndCB0ZWxsIG1lIHlvdSdyZSBhZnJhaWQgb2YgaGVpZ2h0cy4KCi1JJ20ganVzdCBhIGxpdHRsZSB1bmNvbWZvcnRhYmxlIGFib3V0IGJlaW5nIG9uIGEgcmlja2V0eSBicmlkZ2Ugb3ZlciAKCmEgYm9pbGluZyBsaWtlIG9mIGxhdmEhCgotQ29tZSBvbiwgRG9ua2V5LiBJJ20gcmlnaHQgaGVyZSBiZXNpZGUgeWEsIG9rYXk/IEZvciBlbW90aW9uYWwgCgpzdXBwb3J0Liwgd2UnbGwganVzdCB0YWNrbGUgdGhpcyB0aGluZyB0b2dldGhlciBvbmUgbGl0dGxlIGJhYnkgc3RlcCAKCmF0IGEgdGltZS4KCi1SZWFsbHk/CgotUmVhbGx5LCByZWFsbHkuCgotT2theSwgdGhhdCBtYWtlcyBtZSBmZWVsIHNvIG11Y2ggYmV0dGVyLgoKLUp1c3Qga2VlcCBtb3ZpbmcuIEFuZCBkb24ndCBsb29rICBkb3duLgoKLU9rYXksIGRvbid0IGxvb2sgIGRvd24uIERvbid0IGxvb2sgIGRvd24uIERvbid0IGxvb2sgIGRvd24uIEtlZXAgb24gCgptb3ZpbmcuIERvbid0IGxvb2sgIGRvd24uCgp7R2FzcHN9CgotU2hyZWshIEknbSBsb29raW4nIGRvd24hIE9oLCBHb2QsIEkgY2FuJ3QgZG8gdGhpcyEgSnVzdCBsZXQgbWUgb2ZmLCAKCnBsZWFzZSEgCgotQnV0IHlvdSdyZSBhbHJlYWR5IGhhbGZ3YXkuCgotQnV0IEkga25vdyB0aGF0IGhhbGYgaXMgc2FmZSEKCi1Pa2F5LCBmaW5lLiBJIGRvbid0IGhhdmUgdGltZSBmb3IgdGhpcy4gWW91IGdvIGJhY2suCgotU2hyZWssIG5vISBXYWl0IQoKLUp1c3QsIERvbmtleSAtIC0gTGV0J3MgaGF2ZSBhIGRhbmNlIHRoZW4sIHNoYWxsIG1lPwoKLURvbid0IGRvIHRoYXQhCgotT2gsIEknbSBzb3JyeS4gRG8gd2hhdD8KCi1PaCwgdGhpcz8KCi1ZZXMsIHRoYXQhCgotWWVzPyBZZXMsIGRvIGl0LiBPa2F5LgoKe1NjcmVhbXN9CgotTm8sIFNocmVrISBObyEgU3RvcCBpdCEKCi1Zb3Ugc2FpZCBkbyBpdCEgSSdtIGRvaW4nIGl0LgoKLUknbSBnb25uYSBkaWUuIEknbSBnb25uYSBkaWUuIFNocmVrLCBJJ20gZ29ubmEgZGllLiBPaCEKCi1UaGF0J2xsIGRvLCBEb25rZXkuIFRoYXQnbGwgZG8uCgotQ29vbC4KCi1TbyB3aGVyZSBpcyB0aGlzIGZpcmUtYnJlYXRoaW5nIHBhaW4taW4tdGhlLW5lY2sgYW55d2F5PwoKLUluc2lkZSwgd2FpdGluZyBmb3IgdXMgdG8gcmVzY3VlIGhlci4KCntDaHVja2xlc30KCi1JIHdhcyB0YWxraW4nIGFib3V0IHRoZSBkcmFnb24sIFNocmVrLgoKe1dhdGVyIGRyaXBwaW5nLCB3aW5kIGhvd2xpbmd9CgotWW91IGFmcmFpZD8KCi1Oby4KCi1CdXQgLSAtCgotIFNoaC4KCi1PaCwgZ29vZC4gTWUgbmVpdGhlci4KCntHYXNwc30KCi0nQ2F1c2UgdGhlcmUncyBub3RoaW4nIHdyb25nIHdpdGggYmVpbicgYWZyYWlkLiBGZWFyJ3MgYSBzZW5zaWJsZSAKCnJlc3BvbnNlIHRvIGFuIHVuZmFtaWxpYXIgc2l0dWF0aW9uLiBVbmZhbWlsaWFyIGRhbmdlcm91cyBzaXR1YXRpb24sIEkgCgptaWdodCBhZGQuIFdpdGggYSBkcmFnb24gdGhhdCBicmVhdGhlcyBmaXJlIGFuZCBlYXRzIGtuaWdodHMgYW5kIAoKYnJlYXRoZXMgZmlyZSwgaXQgc3VyZSBkb2Vzbid0IG1lYW4geW91J3JlIGEgY293YXJkIGlmIHlvdSdyZSBhIGxpdHRsZSAKCnNjYXJlZC4gSSBzdXJlIGFzIGhlY2sgYWluJ3Qgbm8gY293YXJkLiBJIGtub3cgdGhhdC4KCntHYXNwc30KCi1Eb25rZXksIHR3byB0aGluZ3MsIG9rYXk/IFNodXQgLi4uIHVwLiBOb3cgZ28gb3ZlciB0aGVyZSBhbmQgc2VlIGlmIAoKeW91IGNhbiBmaW5kIGFueSBzdGFpcnMuCgotU3RhaXJzPyBJIHRob3VnaHQgd2Ugd2FzIGxvb2tpbicgZm9yIHRoZSBwcmluY2Vzcy4KCi1UaGUgcHJpbmNlc3Mgd2lsbCBiZSB1cCB0aGUgc3RhaXJzIGluIHRoZSBoaWdoZXN0IHJvb20gaW4gdGhlIHRhbGxlc3QgCgp0b3dlci4KCi1XaGF0IG1ha2VzIHlvdSB0aGluayBzaGUnbGwgYmUgdGhlcmU/CgotSSByZWFkIGl0IGluIGEgYm9vayBvbmNlLgoKLUNvb2wuIFlvdSBoYW5kbGUgdGhlIGRyYWdvbi4gSSdsbCBoYW5kbGUgdGhlIHN0YWlycy4gSSdsbCBmaW5kIHRob3NlIAoKc3RhaXJzLiBJJ2xsIHdoaXAgdGhlaXIgYnV0dCB0b28uIFRob3NlIHN0YWlycyB3b24ndCBrbm93IHdoaWNoIHdheSAKCnRoZXkncmUgZ29pbicuCgp7Q3JlYWNpbmd9CgotSSdtIGdvbm5hIHRha2UgZHJhc3RpYyBzdGVwcy4gS2ljayBpdCB0byB0aGUgY3VyYi4gRG9uJ3QgbWVzcyB3aXRoIAoKbWUuIEknbSB0aGUgc3RhaXIgbWFzdGVyLiBJJ3ZlIG1hc3RlcmVkIHRoZSBzdGFpcnMuIEkgd2lzaCBJIGhhZCBhIAoKc3RlcCByaWdodCBoZXJlLiBJJ2Qgc3RlcCBhbGwgb3ZlciBpdC4KCi1XZWxsLCBhdCBsZWFzdCB3ZSBrbm93IHdoZXJlIHRoZSBwcmluY2VzcyBpcywgYnV0IHdoZXJlJ3MgdGhlIC0gLSAKCi1EcmFnb24hCgp7U2NyZWFtc30KCntHYXNwc30KCntSb2Fyc30KCi1Eb25rZXksIGxvb2sgb3V0IQoKe1NjcmVhbXN9Cgp7V2hpbXBlcmluZ30KCi1Hb3QgeWEhCgp7Um9hcnN9Cgp7R2FzcHN9Cgp7U2hvdXRzfQoKLVdob2EhIFdob2EhIFdob2EhCgp7U2NyZWFtaW5nfQoKe0dhc3BzfQoKLU9oISBBYWghIEFhaCEKCntHYXNwaW5nfQoKe0Nyb3dsc30KCi1Oby4gT2gsIG5vLCBObyEKCntTY3JlYW1zfQoKLU9oLCB3aGF0IGxhcmdlIHRlZXRoIHlvdSBoYXZlLgoKe0Nyb3dsc30KCi1JIG1lYW4gd2hpdGUsIHNwYXJrbGluZyB0ZWV0aC4gSSBrbm93IHlvdSBwcm9iYWJseSBoZWFyIHRoaXMgYWxsIHRpbWUgCgpmcm9tIHlvdXIgZm9vZCwgYnV0IHlvdSBtdXN0IGJsZWFjaCwgJ2NhdXNlIHRoYXQgaXMgb25lIGRhenpsaW5nIHNtaWxlIAoKeW91IGdvdCAgdGhlcmUuIERvIEkgZGV0ZWN0IGEgaGludCBvZiBtaW50eSBmcmVzaG5lc3M/IEFuZCB5b3Uga25vdyAKCndoYXQgZWxzZT8gWW91J3JlIC0gLSBZb3UncmUgYSBnaXJsIGRyYWdvbiEgT2gsIHN1cmUhIEkgbWVhbiwgb2YgCgpjb3Vyc2UgeW91J3JlIGEgZ2lybCBkcmFnb24uIFlvdSdyZSBqdXN0IHJlZWtpbmcgb2YgZmVtaW5pbmUgYmVhdXR5LiAKCldoYXQncyB0aGUgbWF0dGVyIHdpdGggeW91PyBZb3UgZ290IHNvbWV0aGluZyBpbiB5b3VyIGV5ZT8gT2hoLiBPaC4gCgpPaC4gTWFuLCBJJ2QgcmVhbGx5IGxvdmUgdG8gc3RheSwgYnV0IHlvdSBrbm93LCBJJ20sIHVoIC0gLSAKCihDb3VnaHMpCgotSSdtIGFuIGFzdGhtYXRpYywgYW5kIEkgZG9uJ3Qga25vdyBpZiBpdCdkIHdvcmsgb3V0IGlmIHlvdSdyZSBnb25uYSAKCmJsb3cgc21va2UgcmluZ3MuIFNocmVrIQoKe0dhc3BzfQoKe1doaW1wZXJpbmd9CgotTm8hIFNocmVrISBTaHJlayEgU2hyZWshCgp7R3JvYW5zLCBTaWdoc30KCntWb2NhbGl6aW5nfQoKLU9oISBPaCEKCi1XYWtlIHVwIQoKLVdoYXQ/CgotQXJlIHlvdSBQcmluY2VzcyBGaW9uYT8KCi1JIGFtLCBhd2FpdGluZyBhIGtuaWdodCBzbyBib2xkIGFzIHRvIHJlc2N1ZSBtZS4KCi1PaCwgdGhhdCdzIG5pY2UuIE5vdyBsZXQncyBnbyEKCi1CdXQgd2FpdCwgU2lyIEtuaWdodC4gVGhpcyBiZS1pdGggb3VyIGZpcnN0IG1lZXRpbmcuIFNob3VsZCBpdCBub3QgYmUgCgphIHdvbmRlcmZ1bCwgcm9tYW50aWMgbW9tZW50PwoKLVllYWgsIHNvcnJ5LCBsYWR5LiBUaGVyZSdzIG5vIHRpbWUuCgotSGV5LCB3YWl0LiBXaGF0IGFyZSB5b3UgZG9pbmc/IFlvdSBzaG91bGQgc3dlZXAgbWUgb2ZmIG15IGZlZXQgb3V0IAoKeW9uZGVyIHdpbmRvdyBhbmQgZG93biBhIHJvcGUgb250byB5b3VyIHZhbGlhbnQgc3RlZWQuCgotWW91J3ZlIGhhZCBhIGxvdCBvZiB0aW1lIHRvIHBsYW4gdGhpcywgaGF2ZW4ndCB5b3U/CgotTW0taG1tLgoKe1NjcmVhbXMsIGdydW50c30KCi1CdXQgd2UgaGF2ZSB0byBzYXZvciB0aGlzIG1vbWVudCEgWW91IGNvdWxkIHJlY2l0ZSBhbiBlcGljIHBvZW0gZm9yIAoKbWUuIEEgYmFsbGFkPyBBIHNvbm5ldCEgQSBsaW1lcmljaz8gT3Igc29tZXRoaW5nIQoKLUkgZG9uJ3QgdGhpbmsgc28uCgotQ2FuIEkgYXQgbGVhc3Qga25vdyB0aGUgbmFtZSBvZiBteSBjaGFtcGlvbj8KCi1VbSwgU2hyZWsuCgotU2lyIFNocmVrLgoKe0NsZWFucyB0aHJvYXR9CgotSSBwcmF5IHRoYXQgeW91IHRha2UgdGhpcyBmYXZvciBhcyBhIHRva2VuIG9mIG15IGdyYXRpdHVkZS4KCi1UaGFua3MhCgp7Um9hcmluZ30KCi1Zb3UgZGlkbid0IHNsYXkgdGhlIGRyYWdvbj8KCi1JdCdzIG9uIG15IHRvLWRvIGxpc3QuIE5vdyBjb21lIG9uIQoKe1NjcmVhbXN9CgotQnV0IHRoaXMgaXNuJ3QgcmlnaHQhIFlvdSB3ZXJlIG1lYW50IHRvIGNoYXJnZSBpbiwgc3dvcmQgZHJhd24sIAoKYmFubmVyIGZseWluZy4gVGhhdCdzIHdoYXQgYWxsIHRoZSBvdGhlciBrbmlnaHRzIGRpZC4KCi1ZZWFoLCByaWdodCBiZWZvcmUgdGhleSBidXJzdCBpbnRvIGZsYW1lLgoKLVRoYXQncyBub3QgdGhlIHBvaW50LiBPaCEKCi1XYWl0LiBXaGVyZSBhcmUgeW91IGdvaW5nPyBUaGUgbmV4dCdzIG92ZXIgdGhlcmUuCgotV2VsbCwgSSBoYXZlIHRvIHNhdmUgbXkgYXNzLgoKLVdoYXQga2luZCBvZiBrbmlnaHQgYXJlIHlvdT8KCi1PbmUgb2YgYSBraW5kLgoKLVNsb3cgZG93bi4gU2xvdyBkb3duLCBiYWJ5LCBwbGVhc2UuIEkgYmVsaWV2ZSBpdCdzIGhlYWx0aHkgdG8gZ2V0IHRvIAoKa25vdyBzb21lb25lIG92ZXIgYSBsb25nIHBlcnJpb2Qgb2YgdGltZS4gSnVzdCBjYWxsIG1lIG9sZC1mYXNoaW9uZWQuIAoKe0xhdWdoc30KCi1JIGRvbid0IHdhbnQgdG8gcnVzaCBpbnRvIGEgcGh5c2ljYWwgcmVsYXRpb25zaGlwLiBJJ20gbm90IAoKZW1vdGlvbmFsbHkgcmVhZHkgZm9yIGEgY29tbWl0bWVudCBvZiwgdWgsIHRoaXMgLSAtICBNYWduaXR1ZGUgcmVhbGx5IAoKaXMgdGhlIHdvcmQgSSdtIGxvb2tpbmcgZm9yLiBNYWduaXR1ZGUtIC0gSGV5LCB0aGF0IGlzIHVud2FudGVkIAoKcGh5c2ljYWwgY29udGFjdC4gSGV5LCB3aGF0IGFyZSB5b3UgZG9pbmc/IE9rYXksIG9rYXkuIExldCdzIGp1c3QgYmFjayAKCnVwIGEgbGl0dGxlIGFuZCB0YWtlIHRoaXMgb25lIHN0ZXAgYXQgYSB0aW1lLiBXZSByZWFsbHkgc2hvdWxkIGdldCB0byAKCmtub3cgZWFjaCBvdGhlciBmaXJzdCBhcyBmcmllbmRzIG9yIHBlbiBwYWxzLiBJJ20gb24gdGhlIHJvYWQgYSBsb3QsIAoKYnV0IEkganVzdCBsb3ZlIHJlY2VpdmluZyBjYXJkcyAtIC0gIEknZCByZWFsbHkgbG92ZSB0byBzdGF5LCBidXQgLSAtIAoKRG9uJ3QgZG8gdGhhdCEgVGhhdCdzIG15IHRhaWwhIFRoYXQncyBteSBwZXJzb25hbCB0YWlsLiBZb3UncmUgZ29ubmEgCgp0ZWFyIGl0IG9mZi4gSSBkb24ndCBnaXZlIHBlcm1pc3Npb24gLSAtIFdoYXQgYXJlIHlvdSBnb25uYSBkbyB3aXRoIAoKdGhhdD8gSGV5LCBub3cuIE5vIHdheS4gTm8hIE5vISBObywgbm8hIE5vLiBObywgbm8sIG5vLiBObyEgT2ghCgp7R3Jvd2xzfQoKe1JvYXJpbmd9Cgp7R2FzcHN9CgotSGksIFByaW5jZXNzIQoKLUl0IHRhbGtzIQoKLVllYWgsIGl0J3MgZ2V0dGluZyBoaW0gdG8gc2h1dCB1cCB0aGF0J3MgdGhlIHRyaWNrLgoKe1NjcmVhbXN9Cgp7U2NyZWFtaW5nfQoKLU9oIQoKe1RodWRzfQoKe0dyb2Fuc30KCntSb2Fyc30KCntSb2FyaW5nfQoKLU9rYXksIHlvdSB0d28sIGhlYXJkIGZvciB0aGUgZXhpdCEgSSdsbCB0YWtlIGNhcmUgb2YgdGhlIGRyYWdvbi4KCntGY2hvaW5nfQoKLVJ1biEKCntHYXNwaW5nfQoKe1NjcmVhbWluZ30KCntSb2FyaW5nfQoKe1NjcmVhbXN9Cgp7Um9hcnN9Cgp7UGFudGluZywgc2lnaHN9Cgp7V2hpbXBlcnN9Cgp7Um9hcnN9CgotWW91IGRpZCBpdCEKCi1Zb3UgcmVzY3VlZCBtZSEgWW91J3JlIGFtYXppbmcuIFlvdSdyZSAtIC0gWW91J3JlIHdvbmRlcmZ1bC4gCgpZb3UncmUuLi4gYSBsaXR0bGUgdW5vcnRob2RveCBJJ2xsIGFkbWl0LiBCdXQgdGhleSBkZWVkIGlzIGdyZWF0LCBhbmQgCgp0aGluZSBoZWFydCBpcyBwdXJlLiBJIGFtIGV0ZXJuYWxseSBpbiB5b3VyIGRlYnQuIAoKe0NsZWFycyB0aHJvYXR9CgotQW5kIHdoZXJlIHdvdWxkIGEgYnJhdmUga25pZ2h0IGJlIHdpdGhvdXQgaGlzIG5vYmxlIHN0ZWVkPwoKLUkgaG9wZSB5b3UgaGVhcmQgdGhhdC4gU2hlIGNhbGxlZCBtZSBhIG5vYmxlIHN0ZWVkLiBTaGUgdGhpbmsgSSdtIGEgCgpzdGVlZC4KCi1UaGUgYmF0dGxlIGlzIHdvbi4gWW91IG1heSByZW1vdmUgeW91ciBoZWxtZXQsIGdvb2QgU2lyIEtuaWdodC4KCi1VaCwgbm8uCgotV2h5IG5vdD8KCi1JIGhhdmUgaGVsbWV0IGhhaXIuCgotUGxlYXNlLiBJIHdvdWxkJ3N0IGxvb2sgdXBvbiB0aGUgZmFjZSBvZiBteSByZXNjdWVyLgoKLU5vLCBubywgeW91IHdvdWxkbid0IC0gLSAnc3QuCgotQnV0IGhvdyB3aWxsIHlvdSBraXNzIG1lPwoKLVdoYXQ/IFRoYXQgd2Fzbid0IGluIHRoZSBqb2IgZGVzY3JpcHRpb24uCgotTWF5YmUgaXQncyBhIHBlcmsuCgotTm8sIGl0J3MgZGVzdGlueS4gT2gsIHlvdSBtdXN0IGtub3cgaG93IGl0IGdvZXMuIEEgcHJpbmNlc3MgbG9ja2VkIGluIAoKYSB0b3dlciBhbmQgYmVzZXQgYnkgYSBkcmFnb24gaXMgcmVzY3VlZCBieSBhIGJyYXZlIGtuaWdodCwgYW5kIHRoZW4gCgp0aGV5IHNoYXJlIHRydWUgbG92ZSdzIGZpcnN0IGtpc3MuCgotSG1tPyBXaXRoIFNocmVrPyBZb3UgdGhpbmstIC0gV2FpdC4gV2FpdC4gWW91IHRoaW5rIHRoYXQgU2hyZWsgaXMgeW91IAoKdHJ1ZSBsb3ZlPwoKLVdlbGwsIHllcy4KCntMYXVnaGluZ30KCi1Zb3UgdGhpbmsgU2hyZWsgaXMgeW91ciB0cnVlIGxvdmUhCgotV2hhdCBpcyBzbyBmdW5ueT8KCi1MZXQncyBqdXN0IHNheSBJJ20gbm90IHlvdXIgdGlwZSwgb2theT8KCi1PZiBjb3Vyc2UsIHlvdSBhcmUuIFlvdSdyZSBteSByZXNjdWVyLiBOb3cgLSAtIE5vdyByZW1vdmUgeW91ciAKCmhlbG1ldC4KCi1Mb29rLiBJIHJlYWxseSBkb24ndCB0aGluayB0aGlzIGlzIGEgZ29vZCBpZGVhLgoKLUp1c3QgdGFrZSBvZmYgdGhlIGhlbG1ldC4KCi1JJ20gbm90IGdvaW5nIHRvLgoKLVRha2Ugb3Qgb2ZmLgoKLU5vIQoKLU5vdyEKCi1Pa2F5ISBFYXN5LiBBcyB5b3UgY29tbWFuZC4gWW91ciBIaWdobmVzcy4KCi1Zb3UtIC0gWW91J3JlIGEtIC0gYW4gb3JnZS4KCi1PaCwgeW91IHdlcmUgZXhwZWN0aW5nIFByaW5jZSBDaGFybWluZy4KCi1XZWxsLCB5ZXMsIGFjdHVhbGx5LiBPaCwgbm8uIFRoaXMgaXMgYWxsIHdyb25nLiBZb3UncmUgbm90IHN1cHBvc2VkIAoKdG8gYmUgYW4gb3JnZS4KCntTaWdoc30KCi1QcmluY2VzcywgSSB3YXMgc2VudCB0byByZXNjdWUgeW91IGJ5IExvcmQgRmFycXVhYWQsIG9rYXk/IEhlIGlzIHRoZSAKCm9uZSB3aG8gd2FudHMgdG8gbWFycnkgeW91LgoKLVRoZW4gd2h5IGRpZG4ndCBoZSBjb21lIHJlc2N1ZSBtZT8KCi1Hb29kIHF1ZXN0aW9uLiBZb3Ugc2hvdWxkIGFzayBoaW0gdGhhdCB3aGVuIHdlIGdldCB0aGVyZS4KCi1CdXQgSSBoYXZlIHRvIGJlIHJlc2N1ZWQgYnkgbXkgdHJ1ZSBsb3ZlLCBub3QgYnkgc29tZSBwcmdlIGFuZCBoaXMtIC0gCgpoaXMgcGV0LgoKLVNvIG11Y2ggZm9yIG5vYmxlIHN0ZWVkLgoKLVlvdSdyZSBub3QgbWFraW5nIG15IGpvYiBhbnkgZWFzaWVyLgoKLUknbSBzb3JyeSwgYnV0IHlvdXIgam9iIGlzIG5vdCBteSBwcm9ibGVtLiBZb3UgY2FuIHRlbGwgTG9yZCBGYXJxdWFhZCAKCnRoYXQgaWYgaGUgd2FudHMgdG8gcmVzY3VlIG1lIHByb3Blcmx5LCBJJ2xsIGJlIHdhaXRpbmcgZm9yIGhpbSByaWdodCAKCmhlcmUuCgotSGV5ISBJJ20gbm8gb25lJ3MgbWVzc2VuZ2VyIGJveSwgYWxsIHJpZ2h0PyBJJ20gYSBkZWxpdmVyeSBib3kuCgotWW91IHdvdWxkbid0IGRhcmUuIFB1dCBtZSBkb3duIQoKLVlhIGNvbWluJywgRG9ua2V5PwoKLUknbSByaWdodCBiZWhpbmQgeWEuCgotUHV0IG1lIGRvd24sIG9yIHlvdSB3aWxsIHN1ZmZlciB0aGUgY29uc2VxdWVuY2VzISBUaGlzIGlzIG5vdCAKCmRpZ25pZmllZCEgUHV0IG1lIGRvd24hCgotT2theSwgc28gaGVyZSdzIGFub3RoZXIgcXVlc3Rpb24uIFNheSB0aGVyZSdzIGEgd29tYW4gdGhhdCBkaWdzIHlvdSwgCgpyaWdodCwgYnV0IHlvdSBkb24ndCByZWFsbHkgbGlrZSBoZXIgdGhhdCB3YXkuIEhvdyBkbyB5b3UgbGV0IGhlciBkb3duIAoKcmVhbCBlYXN5IHNvIGhlciBmZWVsaW5ncyBhcmVuJ3QgaHVydCwgYnV0IHlvdSBkb24ndCBnZXQgYnVybmVkIHRvIGEgCgpjcmlzcCBhbmQgZWF0ZW4/CgotWW91IGp1c3QgdGVsbCBoZXIgc2hlJ3Mgbm90IHlvdXIgdHJ1ZSBsb3ZlLiBFdmVyeW9uZSBrbm93ZXN0IHdoYXQgCgpoYXBwZW5zIHdoZW4geW91IGZpbmQgeW91ciAtIC0gIEhleSEKCntTaWdoc30KCi1UaGUgc29vbmVyIHdlIGdldCB0byBEdUxvYyB0aGUgYmV0dGVyLgoKLVlvdSdyZSBnb25uYSBsb3ZlIGl0IHRoZXJlLCBQcmluY2Vzcy4gSXQncyBiZWF1dGlmdWwhCgotQW5kIHdoYXQgb2YgbXkgZ3Jvb20tdG8tYmU/IExvcmQgRmFycXVhYWQ/IFdoYXQncyBoZSBsaWtlPwoKLUxldCBtZSBwdXQgaXQgdGhpcyB3YXksIFByaW5jZXNzLiBNZW4gb2YgRmFycXVhYWQncyBzdGF0dXJlIGFyZSBpbiAKCnNob3J0IHN1cHBseS4KCntMYXVnaHN9CgotSSBkb24ndCBrbm93LiBUaGVyZSBhcmUgdGhvc2Ugd2hvIHRoaW5rIGxpdHRsZSBvZiBoaW0uCgotU3RvcCBpdC4gU3RvcCBpdCwgYm90aCBvZiB5b3UuIFlvdSdyZSBqdXN0IGplYWxvdXMgeW91IGNhbiBuZXZlciAKCm1lYXN1cmUgdXAgdG8gYSBncmVhdCBydWxlciBsaWtlIExvcmQgRmFycXVhYWQuCgotWWVhaCwgd2VsbCwgbWF5YmUgeW91J3JlIHJpZ2h0LCBQcmluY2Vzcy4gQnV0IEknbGwgbGV0IHlvdSBkbyB0aGUgCgoibWVhc3VyaW5nIiB3aGVuIHlvdSBzZWUgaGltIHRvbW9ycm93LgoKLVRvbW9ycm93PyBJdCdsbCB0YWtlIHRoYXQgbG9uZz8gU2hvdWxkbid0IHdlIHN0b3AgdG8gbWFrZSBjYW1wPwoKLU5vLCB0aGF0J2xsIHRha2UgbG9uZ2VyLiBXZSBjYW4ga2VlcCBnb2luZy4KCi1CdXQgdGhlcmUncyByb2JiZXJzIGluIHRoZSB3b29kcy4KCi1XaG9hISBUaW1lIG91dCwgU2hyZWshIENhbXBpbmcncyBzdGFydGluZyB0byBzb3VuZCBnb29kLgoKLUhleSwgY29tZSBvbi4gSSdtIHNjYXJpZXIgdGhhbiBhbnl0aGluZyB3ZSdyZSBnb2luZyB0byBzZWUgaW4gdGhpcyAKCmZvcmVzdC4KCi1JIG5lZWQgdG8gZmluZCBzb21ld2hlcmUgdG8gY2FtcCBub3chCgp7QmlyZHMgd2luZ3MgZmx1dHRlcmluZ30KCntHcnVudGluZ30KCi1IZXkhIE92ZXIgaGVyZS4KCi1TaHJlaywgd2UgY2FuIGRvIGJldHRlciB0aGFuIHRoYXQuIEkgZG9uJ3QgdGhpbmsgdGhpcyBpcyBmaXQgZm9yIGEgCgpwcmluY2Vzcy4KCi1Obywgbm8sIGl0J3MgcGVyZmVjdC4gSXQganVzdCBuZWVkcyBhIGZldyBob21leSB0b3VjaGVzLgoKLUhvbWV5IHRvdWNoZXM/IExpa2Ugd2hhdD8KCntDcmFzaGluZ30KCi1BIGRvb3I/IFdlbGwsIGdlbnRsZW1lbiwgSSBiaWQgdGhlZSBnb29kIG5pZ2h0LgoKLVlvdSB3YW50IG1lIHRvIHJlYWQgeW91IGEgYmVkdGltZSBzdG9yeT8gSSB3aWxsLgoKLUkgc2FpZCBnb29kIG5pZ2h0IQoKLVNocmVrLCBXaGF0IGFyZSB5b3UgZG9pbmc/Cgp7TGF1Z2hzfQoKLUkganVzdC0gLSBZb3Uga25vdyAtIC0gT2gsIGNvbWUgb24uIEkgd2FzIGp1c3Qga2lkZGluZy4KCntGaXJlIGNyYWNraW5nfQoKLUFuZCwgdWgsIHRoYXQgb25lLCB0aGF0J3MgVGhyb3diYWNrLCB0aGUgb25seSBvcmdlIHRvIGV2ZXIgc3BpdCBvdmVyIAoKdGhyZWUgd2hlYXQgZmllbGRzLiBSaWdodC4gWWVhaC4KCi1IZXksIGNhbiB5b3UgdGVsbCBteSBmdXR1cmUgZnJvbSB0aGVzZSBzdGFycz8KCi1UaGUgc3RhcnMgZG9uJ3QgdGVsbCB0aGUgZnV0dXJlLCBEb25rZXkuIFRoZXkgdGVsbCBzdG9yaWVzLiBMb29rLCAKCnRoZXJlJ3MgQmxvb2RudXQsIHRoZSBGbGF0dWxlbnQuIFlvdSBjYW4gZ3Vlc3Mgd2hhdCBoZSdzIGZhbW91cyBmb3IuCgotSSBrbm93IHlvdSdyZSBtYWtpbmcgdGhpcyB1cC4KCi1ObywgbG9vay4gVGhlcmUgaGUgaXMsICBhbmQgdGhlcmUncyB0aGUgZ3JvdXAgb2YgaHVudGVycyBydW5uaW5nIGF3YXkgCgpmcm9tIGhpcyBzdGVuY2guCgotVGhhdCBhaW4ndCBub3RoaW4nIGJ1dCBhIGJ1bmNoIG9mIGxpdHRsZSBkb3RzLgoKLVlvdSBrbm93LCBEb25rZXksIHNvbWV0aW1lcyB0aGluZ3MgYXJlIG1vcmUgdGhhbiB0aGV5IGFwcGVhci4gSG1tPyAKCkZvcmdldCBpdC4KCntTaWdoc30KCi1IZXksIFNocmVrLCB3aGF0IHdlIGdvbm5hIGRvIHdoZW4gd2UgZ2V0IG91ciBzd2FtcCBhbnl3YXk/CgotT3VyIHN3YW1wPwoKLVlvdSBrbm93LCB3aGVuIHdlJ3JlIHRocm91Z2ggcmVzY3VpbmcgdGhlIHByaW5jZXNzLgoKLVdlPyBEb25rZXksIHRoZXJlJ3Mgbm8gIndlIi4gVGhlcmUncyBubyAib3VyIi4gVGhlcmUncyBqdXN0IG1lIGFuZCBteSAKCnN3YW1wLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGdvbm5hIGRvIGlzIGJ1aWxkIGEgdGVuLWZvb3Qgd2FsbCBhcm9uZCBteSAKCmxhbmQuCgotWW91IGN1dCBtZSBkZWVwLCBTaHJlay4gWW91IGN1dCBtZSByZWFsIGRlZXAganVzdCBub3cuIFlvdSBrbm93IHdoYXQgCgpJIHRoaW5rPyBJIHRoaW5rIHRoaXMgd2hvbGUgd2FsbCB0aGluZyBpcyBqdXN0IGEgd2F5IHRvIGtlZXAgc29tZWJvZHkgCgpvdXQuCgotTm8sIGRvIHlhIHRoaW5rPwoKLUFyZSB5b3UgaGlkaW4nIHNvbWV0aGluZz8KCi1OZXZlciBtaW5kLCBEb25rZXkuCgotT2gsIHRoaXMgaXMgYW5vdGhlciBvbmUgb2YgdGhvc2Ugb25pb24gdGhpbmdzLCBpc24ndCBpdD8KCi1ObywgdGhpcyBpcyBvbmUgb2YgdGhvc2UgZHJvcC1pdCBhbmQgbGVhdmUtaXQgYWxvbmUgdGhpbmdzLgoKLVdoeSBkb24ndCB5b3Ugd2FudCB0byB0YWxrIGFib3V0IGl0PwoKLVdoeSBkbyB5b3Ugd2FudCB0byB0YWxrIGFib3V0IGl0PwoKLVdoeSBhcmUgeW91IGJsb2NraW5nPwoKLUknbSBub3QgYmxvY2tpbmcuCgotT2gsIHllcywgeW91IGFyZS4KCi1Eb25rZXksIEknbSB3YXJuaW5nIHlvdS4KCi1XaG8geW91IHRyeWluZyB0byBrZWVwIG91dD8KCi1FdmVyeW9uZSEgT2theT8KCi1PaCwgbm93IHdlJ3JlIGdldHRpbicgc29tZXdoZXJlLgoKLU9oISBGb3IgdGhlIGxvdmUgb2YgUGV0ZSEKCi1XaGF0J3MgeW91ciBwcm9ibGVtPyBXaGF0IHlvdSBnb3QgYWdhaW5zdCB0aGUgd2hvbGUgd29ybGQgYW55d2F5PwoKLUxvb2ssIEknbSBub3QgdGhlIG9uZSB3aXRoIHRoZSBwcm9ibGVtLCBva2F5PyBJdCdzIHRoZSB3b3JsZCB0aGF0IAoKc2VlbXMgdG8gaGF2ZSBhIHByb2JsZW0gd2l0aCBtZS4gUGVvcGxlIHRha2Ugb25lIGxvb2sgYXQgbWUgYW5kIGdvLiAKCiJBYWghIEhlbHAhIFJ1biEgQSBiaWcsIHN0dXBpZCwgdWdseSBvcmdlISIgVGhleSBqdWRnZSBtZSBiZWZvcmUgdGhleSAKCmV2ZW4ga25vdyBtZS4gVGhhdCdzIHdoeSBJJ20gYmV0dGVyIG9mZiBhbG9uZS4KCi1Zb3Uga25vdyB3aGF0PyBXaGVuIHdlIG1ldCwgSSBkaWRuJ3QgdGhpbmsgeW91IHdhcyBqdXN0IGEgYmlnLCAKCnN0dXBpZCwgdWdseSBvcmdlLgoKLVllYWgsIEkga25vdy4KCi1TbywgdWgsIGFyZSB0aGVyZSBhbnkgZG9ua2V5cyB1cCB0aGVyZT8KCi1XZWxsLCB0aGVyZSdzLCB1bSwgR2FiYnksIHRoZSBTbWFsbCBhbmQgQW5ub3lpbmcuCgotT2theSwgb2theSwgSSBzZWUgaXQgbm93LiBUaGUgYmlnIHNoaW55IG9uZSwgcmlnaHQgdGhlcmUuIFRoYXQgb25lIAoKdGhlcmU/CgotVGhhdCdzIHRoZSBtb29uLgoKLU9oLCBva2F5LgoKCgp7T3JjaGVzdHJhfQoKe0R1bGNpbWVyfQoKLUFnYWluLCBzaG93IG1lIGFnYWluLiBNaXJyb3IsIG1pcnJvciwgc2hvdyBoZXIgdG8gbWUuIFNob3cgbWUgdGhlIAoKcHJpbmNlc3MuCgotSG1waC4KCi1BaC4gUGVyZmVjdC4KCntJbmhhbGVzfQoKCgp7U25vcmluZ30KCntWb2NhbGl6aW5nfQoKe1doaXN0bGluZ30KCntTaXp6bGluZ30KCntTbmlmZnMsIHlhd25zfQoKLU1tbSwgeWVhaCwgeW91IGtub3cgSSBsaWtlIGl0IGxpa2UgdGhhdC4KCi0tQ29tZSBvbiwgYmFieS4gSSBzYWlkIEkgbGlrZSBpdC4KCi1Eb25rZXksIHdha2UgdXAuCgotSHVoPyBXaGF0PwoKLVdha2UgdXAuCgotV2hhdD8KCi1Hb29kIG1vcm5pbmcuIEhtLCBob3cgZG8geW91IGxpa2UgeW91ciBlZ2dzPwoKLUdvb2QgbW9ybmluZywgUHJpbmNlc3MhCgotV2hhdCdzIGFsbCB0aGlzIGFib3V0PwoKLVlvdSBrbm93LCB3ZSBraW5kIG9mIGdvdCBvZmYgdG8gYSBiYWQgc3RhcnQgeWVzdGVyZGF5LiBJIHdhbnRlZCB0byAKCm1ha2UgaXQgdXAgdG8geW91LiBJIG1lYW4sIGFmdGVyIGFsbCwgeW91IGRpZCByZXNjdWUgbWUuCgotVWgsIHRoYW5rcy4KCntTbmlmZnN9CgotV2VsbCwgZWF0IHVwLiBXZSd2ZSBnb3QgYSBiaWcgZGF5IGFoZWFkIG9mIHVzLgoKe0JlbGNoZXN9CgotU2hyZWshCgotV2hhdD8gSXQncyBhIGNvbXBsaW1lbnQuIEJldHRlciBvdXQgdGhhbiBpbiwgSSBhbHdheXMgc2F5LiB7TGF1Z2hzfQoKLVdlbGwsIGl0J3Mgbm8gd2F5IHRvIGJlaGF2ZSBpbiBmcm9udCBvZiBhIHByaW5jZXNzLgoKe0JlbGNoZXN9CgotVGhhbmtzLgoKLVNoZSdzIGFzIG5hc3R5IGFzIHlvdSBhcmUuCgote0xhdWdoc30gWW91IGtub3csIHlvdSdyZSBub3QgZXhhY3RseSB3aGF0IEkgZXhwZWN0ZWQuCgotV2VsbCwgbWF5YmUgeW91IHNob3VsZG4ndCBqdWRnZSBwZW9wbGUgYmVmb3JlIHlvdSBnZXQgdG8ga25vdyB0aGVtLgoKe1ZvY2FsaXppbmd9CgoKCi1MYSBsaWJlcnRlISBIZXkhCgotUHJpbmNlc3MhCgp7TGF1Z2hzfQoKLVdoYXQgYXJlIHlvdSBkb2luZz8KCi1CZSBzdGlsbCwgbW9uIGNoZXJpZSwgZm9yIEkgYW0geW91IHNhdmlvciEgQW5kIEkgYW0gcmVzY3VpbmcgeW91IGZyb20gCgp0aGlzIGdyZWVuIC0gLQoKe0tpc3Npbmcgc291bmRzfQoKLWJlYXN0LgoKLUhleSEKCi1UaGF0J3MgbXkgcHJpbmNlc3MhIEdvIGZpbmQgeW91IG93biEKCi1QbGVhc2UsIG1vbnN0ZXIhIENhbid0IHlvdSBzZWUgSSdtIGEgbGl0dGxlIGJ1c3kgaGVyZT8KCi1Mb29rLCBwYWwsIEkgZG9uJ3Qga25vdyB3aG8geW91IHRoaW5rIHlvdSBhcmUhCgotT2ghIE9mIGNvdXNlISBPaCwgaG93IHJ1ZGUuIFBsZWFzZSBsZXQgbWUgaW50cm9kdXNlIG15c2VsZi4gT2gsIE1lcnJ5IAoKTWVuLiAKCntMYXVnaHN9CgoKCntBY2NvcmRpb259CgpUYSwgZGFoLCBkYWgsIGRhaCwgd2hvby4KCkkgc3RlYWwgZnJvbSB0aGUgcmljaCBhbmQgZ2l2ZSB0byB0aGUgbmVlZHkuCgpIZSB0YWtlcyBhIHdlZSBwZXJjZW50YWdlLCAKCkJ1dCBJJ20gbm90IGdyZWVkeS4gSSByZXNjdWUgcHJldHR5IGRhbXNlbHMKCk1hbiwgSSdtIGdvb2QKCldoYXQgYSBndXksIE1vbnNpZXVyIEhvb2QKCkJyZWFrIGl0IGRvd24KCkkgbGlrZSBhbiBob25lc3QgZmlnaHQKCmFuZCBhIHNhdWN5IGxpdHRsZSBtYWlkCgpXaGF0IGhlJ3MgYmFzaWNhbGx5IHNheWluZwoKaXMgaGUgbGlrZXMgdG8gZ2V0IC0gLSAKClBhaWQKClNvCgpXaGVuIGFuIG9yZ2UgaW4gdGhlIGJ1c2gKCmdyYWJzIGEgbGFkeSBieSB0aGUgdHVzaAoKVGhhdCdzIGJhZAoKVGhhdCdzIGJhZAoKV2hlbiBhIGJlYXV0eSdzIHdpdGggYSBiZWFzdAoKaXQgbWFrZXMgbWUgYXdmdWxseSBtYWQKCkhlJ3MgbWFkCgpIZSdzIHJlYWxseSwgcmVhbGx5IG1hZAoKSSdsbCB0YWtlIG15IGJsYWRlIGFuZAoKcmFtIGl0IHRocm91Z2ggeW91ciBoZWFydAoKS2VlcCB5b3VyIGV5ZXMgb24gbWUsIGJveXMKCidjYXVzZSBJJ20gYWJvdXQgdG8gc3RhcnQKCgoKe0dydW50cywgR3JvYW5zfQoKe0thcmF0ZSBZZWxsfQoKe01lcnJ5IE1lbiBHYXNwaW5nfQoKe1BhbnRpbmd9CgotTWFuLCB0aGF0IHdhcyBhbm5veWluZyEKCi1PaCwgeW91IGxpdHRsZS0gLSAKCntLYXJhdGUgWWVsbH0KCntBY2NvcmRpb259Cgp7U2hvdXRpbmcsIGdyb2FuaW5nfQoKe0NodWNrbGVzfQoKLVVoLCBzaGFsbCB3ZT8KCi1Ib2xkIHRoZSBwaG9uZS4KCntHcnVudHN9CgpPaCEgV2hvYSwgd2hvYSwgd2hvYS4gSG9sZCBvbiBub3cuIFdoZXJlIGRpZCB0aGF0IGNvbWUgZnJvbT8KCi1XaGF0PwoKLVRoYXQhIEJhY2sgdGhlcmUuIFRoYXQgd2FzIGFtYXppbmchIFdoZXJlIGRpZCB5b3UgbGVhcm4gdGhhdD8KCi1XZWxsIC0gLSB7Q2h1Y2tsZXN9IFdoZW4gb25lIGxpdmVzIGFsb25lLCB1aCwgb25lIGhhcyB0byBsZWFybiB0aGVzZSAKCnRoaW5ncyBpbiBjYXNlIHRoZXJlJ3MgYSAtIC0gVGhlcmUncyBhbiBhcnJvdyBpbiB5b3VyIGJ1dHQhCgotV2hhdD8gT2gsIHdvdWxkIHlvdSBsb29rIGF0IHRoYXQ/CgotT2gsIG5vLiBUaGlzIGlzIGFsbCBteSBmYXVsdC4gSSdtIHNvIHNvcnJ5LgoKLVdoeT8gV2hhdCdzIHdyb25nPwoKLVNocmVrJ3MgaHVydC4KCi1TaHJlaydzIGh1cnQuIFNocmVrJ3MgaHVydD8gT2gsIG5vLCBTaHJlaydzIGdvbm5hIGRpZS4KCi1Eb25rZXksIEknbSBva2F5LgoKLVlvdSBjYW4ndCBkbyB0aGlzIHRvIG1lLCBTaHJlay4gSSdtIHRvbyB5b3VuZyBmb3IgeW91IHRvIGRpZS4gS2VlcCAKCnlvdSBsZWdzIGVsZXZhdGVkLiBUdXJuIHlvdXIgaGVhZCBhbmQgY291Z2guIERvZXMgYW55b25lIGtub3cgdGhlIAoKSGVpbWxpY2g/CgotRG9ua2V5ISBDYWxtIGRvd24uIElmIHlvdSB3YW50IHRvIGhlbHAgU2hyZWssIHJ1biBpbnRvIHRoZSB3b29kcyBhbmQgCgpmaW5kIG1lIGEgYmx1ZSBmbG93ZXIgd2l0aCByZWQgdGhvcm5zLgoKLUJsdWUgZmxvd2VyLCByZWQgdGhvcm5zLiBPa2F5LCBJJ20gb24gaXQuIEJsdWUgZmxvd2VyLCByZWQgdGhvcm5zLiAKCkRvbid0IGRpZSBTaHJlay4gSWYgeW91IHNlZSBhIGxvbmcgdHVubmVsLCBzdGF5IGF3YXkgZnJvbSB0aGUgbGlnaHQhCgote0JvdGh9IERvbmtleSEKCi1PaCwgeWVhaC4gUmlnaHQuIEJsdWUgZmxvd2VyLCByZWQgdGhvcm5zLgoKLVdoYXQgYXJlIHRoZSBmbG93ZXJzIGZvcj8KCi1Gb3IgZ2V0dGluZyByaWQgb2YgRG9ua2V5LgoKLUFoLgoKLU5vdyB5b3UgaG9sZCBzdGlsbCwgYW5kIEknbGwgeWFuayB0aGlzIHRoaW5nIG91dC4KCi1PdyEgSGV5ISBFYXN5IHdpdGggdGhlIHlhbmtpbicuCgotSSdtIHNvcnJ5LCBidXQgaXQgaGFzIHRvIGNvbWUgb3V0LgoKLU5vLCBpdCdzIHRlbmRlci4KCi1Ob3csIGhvbGQgb24uCgotV2hhdCB5b3UncmUgZG9pbmcgaXMgdGhlIG9wcG9zaXRlIG9mIGhlbHAuCgotRG9uJ3QgbW92ZS4KCi1Mb29rLCB0aW1lIG91dC4KCi1Xb3VsZCB5b3UgLSAtIAoKe0dydW50c30KCi1Pa2F5LiBXaGF0IGRvIHlvdSBwcm9wb3NlIHdlIGRvPwoKLUJsdWUgZmxvd2VyLCByZWQgdGhvcm5zLiBCbHVlIGZsb3dlciwgcmVkIHRob3Jucy4gQmx1ZSBmbG93ZXIsIHJlZCAKCnRob3Jucy4gVGhpcyB3b3VsZCBiZSBzbyBtdWNoIGVhc2llciBpZiBJIHdhc24ndCBjb2xvci1ibGluZCEgQmx1ZSAKCmZsb3dlciwgcmVkIHRob3Jucy4KCi1PdyEKCi1Ib2xkIG9uLCBTaHJlayEgSSdtIGNvbWluJyEKCi1PdyEgTm90IGdvb2QuCgotT2theS4gT2theS4gSSBjYW4gbmVhcmx5IHNlZSB0aGUgaGVhZC4KCntHcnVudHN9CgotSXQncyBqdXN0IGFib3V0IC0gLSAKCi1PdyEgT2hoIQoKLUFoZW0uCgotTm90aGluZyBoYXBwZW5kLiBXZSB3ZXJlIGp1c3QsIHVoIC0gLSAKCi1Mb29rLCBpZiB5b3Ugd2FudGVkIHRvIGJlIGFsb25lLCBhbGwgeW91IGhhZCB0byBkbyB3YXMgYXNrLiBPa2F5PwoKLU9oLCBjb21lIG9uISBUaGF0J3MgdGhlIGxhc3QgdGhpbmcgb24gbXkgbWluZC4gVGhlIHByaW5jZXNzIGhlcmUgd2FzIAoKanVzdC0gLSBVZ2ghIAoKLU93IQoKLUhleSwgd2hhdCdzIHRoYXQ/Cgp7TmVydm91cyBjaGlja2xlfQoKLVRoYXQncy0gLSBJcyB0aGF0IGJsb29kPwoKe1NpZ2hzfQoKe0JpcmQgY2hpcnBpbmd9Cgp7R3J1bnRzfQoKCgpNeSBiZWxvdmVkIG1vbnN0ZXIgYW5kIG1lCgpXZSBnbyBldmVyeXdoZXJlIHRvZ2V0aGVyCgpXZWFyaW4nIGEgcmFpbmNvYXQKCnRoYXQgaGFzIGZvdXIgc2xlZXZlcwoKR2V0cyB1cyB0aHJvdWdoIGFsbCBraW5kcyBvZiB3ZWF0aGVyCgoKCi1BYWghCgoKClNoZSB3aWxsIGFsd2F5cyBiZSB0aGUgb25seSB0aGluZwoKVGhhdCBjb21lcyBiZXR3ZWVuIG1lIGFuZCB0aGUgYXdmdWwgc3RpbmcKClRoYXQgY29tZXMgZnJvbSBsaXZpbmcgaW4gYSB3b3JsZAoKdGhhdCdzIHNvIGRhbW4gbWVhbgoKe0Nyb2Frc30KCk9oLCBvaC1vaC1vaC1vaAoKLUhleSEKCkxhLWxhLCBsYS1sYSwgbGEtbGEtbGEtbGEKCntCb3RoIGxhdWdoaW5nfQoKTGEtbGEsIGxhLWxhLCBsYS1sYQoKCgotVGhlcmUgaXQgaXMsIFByaW5jZXNzLiBZb3VyIGZ1dHVyZSBhd2FpdHMgeW91LgoKLVRoYXQncyBEdUxvYz8KCi1ZZWFoLCBJIGtub3cuIFlvdSBrbm93LCBTaHJlayB0aGlua3MgTG9yZCBGYXJxdWFhZCdzIGNvbXBlbnNhdGluZyBmb3IgCgpzb21ldGhpbmcsICB3aGljaCBJIHRoaW5rIG1lYW5zIGhlIGhhcyBhIHJlYWxseSAtIC0gT3chCgotVW0sIEksIHVoLSAtICBJIGd1ZXNzIHdlIGJldHRlciBtb3ZlIG9uLgoKLVN1cmUuIEJ1dCwgU2hyZWs/IEknbSAtIC0gSSdtIHdvcnJpZWQgYWJvdXQgRG9ua2V5LgoKe0JsdWJiZXJpbmd9CgotV2hhdD8KCi1JIG1lYW4sIGxvb2sgYXQgaGltLiBIZSBkb2Vzbid0IGxvb2sgc28gZ29vZC4gCgotV2hhdCBhcmUgeW91IHRhbGtpbmcgYWJvdXQ/IEknbSBmaW5lLgoKLVRoYXQncyB3aGF0IHRoZXkgYWx3YXlzIHNheSwgYW5kIHRoZW4gbmV4dCB0aGluZyB5b3Uga25vdywgeW91J3JlIG9uIAoKeW91ciBiYWNrLiBEZWFkLgoKLVlvdSBrbm93LCBzaGUncyByaWdodC4gWW91IGxvb2sgYXdmdWwuIERvIHlvdSB3YW50IHRvIHNpdCBkb3duPwoKLVVoLCB5b3Uga25vdywgSSdsbCBtYWtlIHlvdSBzb21lIHRlYS4KCi1JIGRpZG4ndCB3YW50IHRvIHNheSBub3RoaW4nLCBidXQgSSBnb3QgdGhpcyB0d2luZ2UgaW4gbXkgbmVjaywgYW5kIAoKd2hlbiBJIHR1cm4gbXkgaGVhZCBsaWtlIHRoaXMsIGxvb2ssIAoKe0JvbmVzIGNydW5jaH0KCi1PdyEgU2VlPwoKLVdobydzIGh1bmdyeT8gSSdsbCBmaW5kIHVzIHNvbWUgZGlubmVyLgoKLUknbGwgZ2V0IHRoZSBmaXJld29vZC4KCi1IZXksIHdoZXJlIHlvdSBnb2luJz8gT2gsIG1hbiwgSSBjYW4ndCBmZWVsIG15IHRvZXMhIEkgZG9uJ3QgaGF2ZSBhbnkgCgp0b2VzISBJIHRoaW5rIEkgbmVlZCBhIGh1Zy4KCgoKLU1tbS4gVGhpcyBpcyBnb29kLiBUaGlzIGlzIHJlYWxseSBnb29kLiBXaGF0IGlzIHRoaXM/CgotVWgsIHdlZWRyYXQuIFJvdGlzc2VyaWUgc3R5bGUuCgotTm8ga2lkZGluZy4gV2VsbCwgdGhpcyBpcyBkZWxpY2lvdXMuCgotV2VsbCwgdGhleSdyZSBhbHNvIGdyZWF0IGluIHN0ZXdzLiBOb3csIEkgZG9uJ3QgbWVhbiB0byBicmFnLCBidXQgSSAKCm1ha2UgYSBtZWFuIHdlZWRyYXQgc3Rldy4KCntDaHVja2xpbmd9Cgp7U2lnaHN9CgotSSBndWVzcyBJJ2xsIGJlIGRpbmluZyBhIGxpdHRsZSBkaWZmZXJlbnRseSB0b21vcnJvdyBuaWdodC4KCntHdWxwc30KCi1NYXliZSB5b3UgY2FuIGNvbWUgdmlzaXQgbWUgaW4gdGhlIHN3YW1wIHNvbWV0aW1lLiBJJ2xsIGNvb2sgYWxsIGtpbmQgCgpvZiBzdHVmZiBmb3IgeW91LiBTd2FtcCB0b2FkIHNvdXAsIGZpc2ggZXllIHRhcnRhcmUgLSAtIHlvdSBuYW1lIGl0LgoKe0NodWNrbGVzfQoKLUknZCBsaWtlIHRoYXQuCgp7U2x1cnBzLCBsYXVnaHN9CgoKClNlZSB0aGUgcHlyYW1pZHMgYWxvbmcgdGhlIE5pbGUKCgoKLVVtLCBQcmluY2Vzcz8KCgoKV2F0Y2ggdGhlIHN1bnJpc2UgZnJvbSBhIHRyb3BpYyBpc2xlCgoKCi1ZZXMsIFNocmVrPwoKLUksIHVtLCBJIHdhcyB3b25kZXJpbmcuCgoKCkp1c3QgcmVtZW1iZXIsIGRhcmxpbmcgYWxsIHRoZSB3aGlsZQoKCgotQXJlIHlvdS0gLSAKCgoKWW91IGJlbG9uZyB0byBtZQoKCgp7U2lnaHN9IAoKLUFyZSB5b3UgZ29ubmEgZWF0IHRoYXQ/Cgp7Q2h1Y2tsZXN9CgotTWFuLCBpc24ndCB0aGlzIHJvbWFudGljPyBKdXN0IGxvb2sgYXQgdGhhdCBzdW5zZXQuCgotU3Vuc2V0PwoKLU9oLCBubyEgSSBtZWFuLCBpdCdzIGxhdGUuIEktSXQncyB2ZXJ5IGxhdGUuCgotV2hhdD8KCi1XYWl0IGEgbWludXRlLiBJIHNlZSB3aGF0J3MgZ29pbicgb24gaGVyZS4gWW91J3JlIGFmcmFpZCBvZiB0aGUgZGFyaywgCgphcmVuJ3QgeW91PwoKLVllcyEgWWVzLCB0aGF0J3MgaXQuIEknbSB0ZXJyaWZpZWQuIFlvdSBrbm93LCBJJ2QgYmV0dGVyIGdvIGluc2lkZS4KCi1Eb24ndCBmZWVsIGJhZCwgUHJpbmNlc3MuIEkgdXNlZCB0byBiZSBhZnJhaWQgb2YgdGhlIGRhcmssIHRvbywgdW50aWwgCgotIC0gSGV5LCBubywgd2FpdC4gSSdtIHN0aWxsIGFmcmFpZCBvZiB0aGUgZGFyay4KCntTaHJlayBzaWdoc30KCiAtR29vZCBuaWdodC4KCiAtR29vZCBuaWdodC4KCntEb29yIGNyZWFrc30KCi1PaGghIE5vdyBJIHJlYWxseSBzZWUgd2hhdCdzIGdvaW4nIG9uIGhlcmUuCgotT2gsIHdoYXQgYXJlIHlvdSB0YWxraW4nIGFib3V0PwoKLUkgZG9uJ3QgZXZlbiB3YW5uYSBoZWFyIGl0LiBMb29rLCBJJ20gYW4gYW5pbWFsLCBhbmQgSSBnb3QgaW5zdGluY3RzLiAKCkFuZCBJIGtub3cgeW91IHR3byB3ZXJlIGRpZ2dpbicgb24gZWFjaCBvdGhlci4gSSBjb3VsZCBmZWVsIGl0LgoKLVlvdSdyZSBjcmF6eS4gSSdtIGp1c3QgYnJpbmdpbmcgaGVyIGJhY2sgdG8gRmFycXVhYWQuCgotT2gsIGNvbWUgb24sIFNocmVrLiBXYWtlIHVwIGFuZCBzbWVsbCB0aGUgcGhlcm9tb25lcy4gSnVzdCBnbyBvbiBpbiAKCmFuZCB0ZWxsIGhlciBob3cgeW91IGZlZWwuCgotSS0gLSBUaGVyZSdzIG5vdGhpbmcgdG8gdGVsbC4gQmVzaWRlcywgZXZlbiBpZiBJIGRpZCB0ZWxsIGhlciB0aGF0LCAKCndlbGwsIHlvdSBrbm93IC0gLSBhbmQgSSdtIG5vdCBzYXlpbicgSSBkbyAnY2F1c2UgSSBkb24ndCAtIC0gc2hlJ3MgYSAKCnByaW5jZXNzLCBhbmQgSSdtIC0gLSAKCi1BbiBvcmdlPwoKLVllYWguIEFuIG9yZ2UuCgotSGV5LCB3aGVyZSB5b3UgZ29pbic/CgotVG8gZ2V0Li4uIG1vdmUgZmlyZXdvb2QuCgp7U2lnaHN9IAoKCgotUHJpbmNlc3M/IFByaW5jZXNzIEZpb25hPyBQcmluY2Vzcywgd2hlcmUgYXJlIHlvdT8KCntXaW5ncyBmbHV0dGVyaW5nfQoKLVByaW5jZXNzPwoKe0NyZWFraW5nfQoKe0dhc3BzfQoKLUl0J3MgdmVyeSBzcG9va3kgaW4gaGVyZS4gSSBhaW4ndCBwbGF5aW5nIG5vIGdhbWVzLgoKe1NjcmVhbXN9CgotQWFoIQoKLU9oLCBubyEKCi1ObywgaGVscCEKCi1TaGghCgotU2hyZWshIFNocmVrISBTaHJlayEKCi1ObywgaXQncyBva2F5LiBJdCdzIG9rYXkuCgotV2hhdCBkaWQgeW91IGRvIHdpdGggdGhlIHByaW5jZXNzPwoKLURvbmtleSwgSSdtIHRoZSBwcmluY2Vzcy4KCi1BYWghCgotSXQncyBtZSwgaW4gdGhpcyBib2R5LgoKLU9oLCBteSBHb2QhIFlvdSBhdGUgdGhlIHByaW5jZXNzLiBDYW4geW91IGhlYXIgbWU/CgotRG9ua2V5IQoKLUxpc3Rlbiwga2VlcCBicmVhdGhpbmchIEknbGwgZ2V0IHlvdSBvdXQgb2YgdGhlcmUhCgotTm8hCgotU2hyZWshIFNocmVrISBTaHJlayEKCi1TaGguCgotU2hyZWshCgotVGhpcyBpcyBtZS4KCntNdWZmbGVkIG11bWJsaW5nfQoKLVByaW5jZXNzPyBXaGF0IGhhcHBlbmVkIHRvIHlvdT8gWW91J3JlLCB1aCwgdWgsIHVoLCBkaWZmZXJlbnQuCgotSSdtIHVnbHksIG9rYXk/CgotV2VsbCwgeWVhaCEgV2FzIGl0IHNvbWV0aGluZyB5b3UgYXRlPyAnQ2F1c2UgSSB0b2xkIFNocmVrIHRob3NlIHJhdHMgCgp3YXMgYSBiYWQgaWRlYS4gWW91IGFyZSB3aGF0IHlvdSBlYXQsIEkgc2FpZC4gTm93IC0gLSAKCi1Oby4KCi1JIC0gLSBJJ3ZlIGJlZW4gdGhpcyB3YXkgYXMgbG9uZyBhcyBJIGNhbiByZW1lbWJlci4KCi1XaGF0IGRvIHlvdSBtZWFuPyBMb29rLCBJIGFpbid0IG5ldmVyIHNlZW4geW91IGxpa2UgdGhpcyBiZWZvcmUuCgotSXQncyBvbmx5IGhhcHBlbnMgd2hlbiBzdW4gZ29lcyBkb3duLgoKIkJ5IG5pZ2h0IG9uZSB3YXksIGJ5IGRheSBhbm90aGVyLiBUaGlzIHNoYWxsIGJlIHRoZSBub3JtLi4uIHVudGlsIHlvdSAKCmZpbmQgdHJ1ZSBsb3ZlJ3MgZmlyc3Qga2lzcy4uLiBhbmQgdGhlbiB0YWtlIGxvdmUncyB0cnVlIGZvcm0uIgoKLUFoLCB0aGF0J3MgYmVhdXRpZnVsLiBJIGRpZG4ndCBrbm93IHlvdSB3cm90ZSBwb2V0cnkuCgotSXQncyBhIHNwZWxsLgoKe1NpZ2hzfSAKCi1XaGVuIEkgd2FzIGEgbGl0dGxlIGdpcmwsIGEgd2l0Y2ggY2FzdCBhIHNwZWxsIG9uIG1lLiBFdmVyeSBuaWdodCBJIAoKYmVjb21lIHRoaXMuIFRoaXMgaG9ycmlibGUsIHVnbHkgYmVhc3QhIEkgd2FzIHBsYWNlZCBpbiBhIHRvd2VyIHRvIAoKYXdhaXQgdGhlIGRheSBteSB0cnVlIGxvdmUgd291bGQgcmVzY3VlIG1lLiBUaGF0J3Mgd2h5IEkgaGF2ZSB0byBtYXJyeSAKCkxvcmQgRmFycXVhYWQgdG9tb3Jyb3cgYmVmb3JlIHRoZSBzdW4gc2V0cyBhbmQgaGUgc2VlcyBtZSBsaWtlIHRoaXMuCgp7U29ic30KCi1BbGwgcmlnaHQsIGFsbCByaWdodC4gQ2FsbSBkb3duLiBMb29rLCBpdCdzIG5vdCB0aGF0IGJhZC4gWW91J3JlIG5vdCAKCnRoYXQgdWdseS4gV2VsbCwgSSBhaW4ndCBnb25uYSBsaWUuIFlvdSBhcmUgdWdseS4gQnV0IHlvdSBvbmx5IGxvb2sgCgpsaWtlIHRoaXMgYXQgbmlnaHQuIFNocmVrJ3MgdWdseSAyNC03LgoKLUJ1dCBEb25rZXksIEknbSBhIHByaW5jZXNzLCBhbmQgdGhpcyBpcyBub3QgaG93IGEgcHJpbmNlc3MgaXMgbWVhbnQgCgp0byBsb29rLgoKLVByaW5jZXNzLCBob3cgJ2JvdXQgaWYgeW91IGRvbid0IG1hcnJ5IEZhcnF1YWFkPwoKLUkgaGF2ZSB0by4gIE9ubHkgbXkgdHJ1ZSBsb3ZlJ3Mga2lzcyBjYW4gYnJlYWsgdGhlIHNwZWxsLgoKLUJ1dCwgeW91IGtub3csIHVtLCB5b3UncmUga2luZCBvZiBhbiBvcmdlLCBhbmQgU2hyZWsgLSAtIHdlbGwsIHlvdSAKCmdvdCBhIGxvdCBpbiBjb21tb24uCgotU2hyZWs/CgoKCi1QcmluY2VzcywgSSAtIC0gVWgsIGhvdydzIGl0IGdvaW5nLCBmaXJzdCBvZiBhbGw/IEdvb2Q/IFVtLCBnb29kIGZvciAKCm1lIHRvby4gSSdtIG9rYXkuIEkgc2F3IHRoaXMgZmxvd2VyIGFuZCB0aG91Z2h0IG9mIHlvdSBiZWNhdXNlIGl0J3MgCgpwcmV0dHkgYW5kIC0gLSB3ZWxsLCBJIGRvbid0IHJlYWxseSBsaWtlIGl0LCBidXQgSSB0aG91Z2h0IHlvdSBtaWdodCAKCmxpa2UgaXQgJ2NhdXNlIHlvdSdyZSBwcmV0dHkuIEJ1dCBJIGxpa2UgeW91IGFueXdheS4gSSdkIC0gLSB1aCwgdWggLSAKCi0gCgp7U2lnaHN9CgotSSdtIGluIHRyb3VibGUuIE9rYXksIGhlcmUgd2UgZ28uCgotSSBjYW4ndCBqdXN0IG1hcnJ5IHdob2V2ZXIgSSB3YW50LiBUYWtlIGEgZ29vZCBsb29rIGF0IG1lLCBEb25rZXkuIEkgCgptZWFuLCByZWFsbHksIHdobyBjYW4gZXZlciBsb3ZlIGEgYmVhc3Qgc28gaGlkZW91cyBhbmQgdWdseT8gCgoiUHJpbmNlc3MiIGFuZCAidWdseSIgZG9uJ3QgZ28gdG9nZXRoZXIuIFRoYXQncyB3aHkgSSBjYW4ndCBzdGF5IGhlcmUgCgp3aXRoIFNocmVrLgoKe0dhc3BzfQoKLU15IG9ubHkgY2hhbmNlIHRvIGxpdmUgaGFwcGlseSBldmVyIGFmdGVyIGlzIHRvIG1hcnJ5IG15IHRydWUgbG92ZS4KCntEZWVwIHNpZ2h9CgotRG9uJ3QgeW91IHNlZSwgRG9ua2V5PyBUaGF0J3MganVzdCBob3cgaXQgaGFzIHRvIGJlLiBJdCdzIHRoZSBvbmx5IAoKd2F5IHRvIGJyZWFrIHRoZSBzcGVsbC4KCi1Zb3UgYXQgbGVhc3QgZ290dGEgdGVsbCBTaHJlayB0aGUgdHJ1dGguCgotTm8hIFlvdSBjYW4ndCBicmVhdGhlIGEgd29yZC4gTm8gb25lIG11c3QgZXZlciBrbm93LgoKLVdoYXQncyB0aGUgcG9pbnQgb2YgYmVpbmcgYWJsZSB0byB0YWxrIGlmIHlvdSBnb3R0YSBrZWVwIHNlY3JldHM/CgotUHJvbWlzZSB5b3Ugd29uJ3QgdGVsbC4gUHJvbWlzZSEKCi1BbGwgcmlnaHQsIGFsbCByaWdodC4gSSB3b24ndCB0ZWxsIGhpbS4gQnV0IHlvdSBzaG91bGQuIEkganVzdCBrbm93IAoKYmVmb3JlIHRoaXMgaXMgb3ZlciwgSSdtIGdvbm5hIG5lZWQgYSB3aG9sZSBsb3Qgb2Ygc2VyaW91cyB0aGVyYXB5LgoKLUxvb2sgYXQgbXkgZXllIHR3aXRjaGluJy4KCntEb29yIG9wZW5zfQoKe1Nub3Jpbmd9CgotSSB0ZWxsIGhpbSwgSSB0ZWxsIGhpbSBub3QuIEkgdGVsbCBoaW0sIEkgdGVsbCBoaW0gbm90LiBJIHRlbGwgaGltLiAKCi1TaHJlayEgU2hyZWssIHRoZXJlJ3Mgc29tZXRoaW5nIEkgd2FudCAtIC0gCgp7U25vcmluZ30KCi1TaHJlay4gQXJlIHlvdSBhbGwgcmlnaHQ/CgotUGVyZmVjdCEgTmV2ZXIgYmVlbiBiZXR0ZXIuCgotSSAtIC0gSSBkb24ndCAtIC0gVGhlcmUncyBzb21ldGhpbmcgSSBoYXZlIHRvIHRlbGwgeW91LgoKLVlvdSBkb24ndCBoYXZlIHRvIHRlbGwgbWUgYW55dGhpbmcsIFByaW5jZXNzLiBJIGhlYXJkIGVub3VnaCBsYXN0IAoKbmlnaHQuCgotWW91IGhlYXJkIHdoYXQgSSBzYWlkPwoKLUV2ZXJ5IHdvcmQuCgotSSB0aG91Z2h0IHlvdSdkIHVuZGVyc3RhbmQuCgotT2gsIEkgdW5kZXJzYXRuZC4gTGlrZSB5b3Ugc2FpZCwgIldobyBjb3VsZCBsb3ZlIGEgaGlkZW91cywgdWdseSAKCmJlYXN0PyIgCgotQnV0IEkgdGhvdWdodCB0aGF0IHdvdWxkbid0IG1hdHRlciB0byB5b3UuCgotWWVhaD8gV2VsbCwgaXQgZG9lcy4KCntHYXNwcywgc2lnaHN9CgotQWgsIHJpZ2h0IG9uIHRpbWUuCgp7SG9yc2Ugd2hpbm5pZXN9CgotUHJpbmNlc3MsIEkndmUgYnJvdWdodCB5b3UgYSBsaXR0bGUgc29tZXRoaW5nLgoKe0ZhbmZhcmV9Cgp7WWF3bnN9CgotV2hhdCdkIEkgbWlzcz8gV2hhdCdkIEkgbWlzcz8KCntNdWZmbGVkfQoKLVdobyBzYWlkIHRoYXQ/IENvdWxkbid0IGhhdmUgYmVlbiBhIGRvbmtleS4KCi1QcmluY2VzcyBGaW9uYS4KCi1BcyBwcm9taXNlZC4gTm93IGhhbmQgaXQgb3Zlci4KCi1WZXJ5IHdlbGwsIG9yZ2UuIFRoZSBkZWVkIHRvIHlvdXIgc3dhbXAsIGNsZWFyZWQgb3V0LCBhcyBhZ3JlZWQuCgotVGFrZSBpdCBhbmQgZ28gYmVmb3JlIEkgY2hhbmdlIG15IG1pbmQuCgotRm9yZ2l2ZSBtZSwgUHJpbmNlc3MsIGZvciBzdGFydGxpbmcgeW91LCBidXQgeW91IHN0YXJ0bGVkIG1lLCBmb3IgSSAKCmhhdmUgbmV2ZXIgc2VlbiBzdWNoIGEgcmFkaWFudCBiZWF1dHkgYmVmb3JlLiBJJ20gTG9yZCBGYXJxdWFhZC4KCi1Mb3JkIEZhcnF1YWFkPyBPaCwgbm8sIG5vLgoKe1NuYXBzIGZpbmdlcnN9CgotRm9yZ2l2ZSBtZSwgbXkgbG9yZCwgZm9yIEkgd2FzIGp1c3Qgc2F5aW5nIGEgc2hvcnQuLi4gZmFyZXdlbGwuCgotT2gsIHRoYXQgaXMgc28gc3dlZXQuIFlvdSBkb24ndCBoYXZlIHRvIHdhc3RlIGdvb2QgbWFubmVycyBvbiB0aGUgCgpvcmdlLiBJdCdzIG5vdCBsaWtlIGl0IGhhcyBmZWVsaW5ncy4KCi1ObywgeW91J3JlIHJpZ2h0LiBJdCBkb2Vzbid0LgoKLVByaW5jZXNzIEZpb25hLCBiZWF1dGlmdWwsIGZhaXIsIGZsYXdlcnNzIEZpb25hLiBJIGFzayB5b3VyIGhhbmQgaW4gCgptYXJyaWFnZS4KCntHYXNwc30KCi1XaWxsIHlvdSBiZSB0aGUgcGVyZmVjdCBicmlkZSBmb3IgdGhlIHBlcmZlY3QgZ3Jvb20/CgotTG9yZCBGYXJxdWFhZCwgSSBhY2NlcHQuIE5vdGhpbmcgd291bGQgbWFrZSAtIC0gCgotRXhjZWxsZW50ISBJJ2xsIHN0YXJ0IHRoZSBwbGFucywgZm9yIHRvbW9ycm93IHdlIHdlZCEKCi1ObyEgSSBtZWFuLCB1aCwgd2h5IHdhaXQ/IExldCdzIGdldCBtYXJyaWVkIHRvZGF5IGJlZm9yZSB0aGUgc3VuIAoKc2V0cy4KCi1PaCwgYW54aW91cywgYXJlIHlvdT8gWW91J3JlIHJpZ2h0LiBUaGUgc29vbmVyLCB0aGUgYmV0dGVyLiBUaGVyZSdzIAoKc28gbXVjaCB0byBkbyEgVGhyZXJlJ3MgdGhlIGNhdGVyZXIsIHRoZSBjYWtlLCB0aGUgYmFuZCwgdGhlIGd1ZXN0IAoKbGlzdC4gQ2FwdGFpbiwgcm91bmQgdXAgc29tZSBndWVzdHMhCgotRmFyZS10aGVlLXdlbGwsIG9yZ2UuCgotU2hyZWssIHdoYXQgYXJlIHlvdSBkb2luZz8gWW91J3JlIGxldHRpbmcgaGVyIGdldCBhd2F5LgoKLVllYWg/IFNvIHdoYXQ/CgotU2hyZWssIHRoZXJlJ3Mgc29tZXRoaW5nIGFib3V0IGhlciB5b3UgZG9uJ3Qga25vdy4gTG9vaywgSSB0YWxrZWQgdG8gCgpoZXIgbGFzdCBuaWdodCwgU2hlJ3MgLSAtIAoKLUkga25vdyB5b3UgdGFsa2VkIHRvIGhlciBsYXN0IG5pZ2h0LiBZb3UncmUgZ3JlYXQgcGFscywgYXJlbid0IHlhPyAKCk5vdywgaWYgeW91IHR3byBhcmUgc3VjaCBnb29kIGZyaWVuZHMsIHdoeSBkb24ndCB5b3UgZm9sbG93IGhlciBob21lPwoKLVNocmVrLCBJIC0gLSBJIHdhbm5hIGdvIHdpdGggeW91LgoKLUkgdG9sZCB5b3UsIGRpZG4ndCBJPyBZb3UncmUgbm90IGNvbWluZyBob21lIHdpdGggbWUuIEkgbGl2ZSBhbG9uZSEgCgpNeSBzd2FtcCEgTWUhIE5vYm9keSBlbHNlISBVbmRlcnN0YW5kPyBOb2JvZHkhIEVzcGVjaWFsbHkgdXNlbGVzcywgCgpwYXRoZXRpYywgYW5ub3lpbmcsIHRhbGtpbmcgZG9ua2V5cyEKCi1CdXQgSSB0aG91Z2h0IC0gLSAKCi1ZZWFoLiBZb3Uga25vdyB3aGF0PyBZb3UgdG91Z2h0IHdyb25nIQoKLVNocmVrLgoKCgpJIGhlYXJkIHRoZXJlIHdhcyBhIHNlY3JldCBjaG9yZAoKVGhhdCBEYXZpZCBwbGF5ZWQgYW5kIGl0IHBsZWFzZWQgdGhlIExvcmQKCkJ1dCB5b3UgZG9uJ3QgcmVhbGx5IGNhcmUgZm9yIG11c2ljLCBkbyB5YQoKSXQgZ29lcyBsaWtlIHRoaXMgdGhlIGZvdXJ0aCwgdGhlIGZpZnRoCgpUaGUgbWlub3IgZmFsbCB0aGUgbWFqb3IgbGlmdAoKVGhlIGJhZmZsZWQga2luZyBjb21wb3NpbmcgaGFsbGVsdWphaAoKSGFsbGVsdWphaCwgIGhhbGxlbHVqYWgKCkJhYnksIEkndmUgYmVlbiBoZXJlIGJlZm9yZQoKSSBrbm93IHRoaXMgcm9vbSBJJ3ZlIHdhbGtlZCB0aGlzIGZsb29yCgpJIHVzZWQgdG8gbGl2ZSBhbG9uZSBiZWZvcmUgSSBrbmV3IHlvdQoKSSd2ZSBzZWVuIHlvdXIgZmxhZyBvbiB0aGUgbWFyYmxlIGFyY2gKCkJ1dCBsb3ZlIGlzIG5vdCBhIHZpY3RvcnkgbWFyY2gKCkl0J3MgYSBjb2xkIGFuZCBpdCdzIGEgYnJva2VuIGhhbGxlbHVqYWgKCkhhbGxlbHVqYWgsICBoYWxsZWx1amFoCgpBbmQgYWxsIEkgZXZlciBsZWFybmVkIGZyb20gbG92ZQoKSXMgaG93IHRvIHNob290IGF0IHNvbWVvbmUKCldobyBvdXRkcmV3IHlvdQoKe01vYW5pbmd9CgpBbmQgaXQncyBub3QgYSBjcnkgeW91IGNhbiBoZWFyIGF0IG5pZ2h0CgpJdCdzIG5vdCBzb21lYm9keSB3aG8ncyBzZWVuIHRoZSBsaWdodAoKSXQncyBhIGNvbGQgYW5kIGl0J3MgYSBicm9rZW4gaGFsbGVsdWphaAoKe01vYW5pbmd9CgpIYWxsZWx1amFoLCAgaGFsbGVsdWphaAoKCgp7VGh1bXBpbmcgc291bmR9CgotRG9ua2V5PwoKe0dydW50c30KCi1XaGF0IGFyZSB5b3UgZG9pbmc/CgotSSB3b3VsZCB0aGluaywgb2YgYWxsIHBlb3BsZSwgeW91IHdvdWxkIHJlY29nbml6ZSBhIHdhbGwgd2hlbiB5b3Ugc2VlIAoKb25lLgoKLVdlbGwsIHllYWguIEJ1dCB0aGUgd2FsbCdzIHN1cHBvc2VkIHRvIGdvIGFyb3VuZCBteSBzd2FtcCwgbm90IAoKdGhyb3VnaCBpdC4KCi1JdCBpcyBhcm91bmQgeW91ciBoYWxmLiBTZWUgdGhhdCdzIHlvdXIgaGFsZiwgYW5kIHRoaXMgaXMgbXkgaGFsZi4KCi1PaCEgWW91ciBoYWxmLiBIbW0uCgotWWVzLCBteSBoYWxmLiBJIGhlbHBlZCByZXNjdWUgdGhlIHByaW5jZXNzLiBJIGRpZCBoYWxmIHRoZSB3b3JrLiBJIAoKZ2V0IGhhbGYgdGhlIGJvb3R5LiBOb3cgaGFuZCBtZSB0aGF0IGJpZyBvbGQgcm9jaywgdGhlIG9uZSB0aGF0IGxvb2tzIAoKbGlrZSB5b3VyIGhlYWQuCgotQmFjayBvZmYhCgotTm8sIHlvdSBiYWNrIG9mZi4KCi1UaGlzIGlzIG15IHN3YW1wIQoKLU91ciBzd2FtcC4KCi1MZXQgZ28sIERvbmtleSEKCi1Zb3UgbGV0IGdvLgoKLVN0dWJib3JuIGphY2thc3MhCgotU21lbGx5IG9yZ2UuCgotRmluZSEKCi1IZXksIGhleSwgY29tZSBiYWNrIGhlcmUuIEknbSBub3QgdGhyb3VnaCB3aXRoIHlvdSB5ZXQuCgotV2VsbCwgSSdtIHRocm91Z2ggd2l0aCB5b3UuCgotVWgtdWguIFlvdSBrbm93LCB3aXRoIHlvdSBpdCdzIGFsd2F5cywgIk1lLCBtZSwgbWUhIiBXZWxsLCBndWVzcyAKCndoYXQhIE5vdyBpdCdzIG15IHR1cm4hIFNvIHlvdSBqdXN0IHNodXQgdXAgYW5kIHBheSBhdHRlbnRpb24hIFlvdSBhcmUgCgptZWFuIHRvIG1lLiBZb3UgaW5zdWx0IG1lIGFuZCB5b3UgZG9uJ3QgYXBwcmVjaWF0ZSBhbnl0aGluZyB0aGF0IEkgZG8hIAoKWW91J3JlIGFsd2F5cyBwdXNoaW5nIG1lIGFyb3VuZCBvciBwdXNoaW5nIG1lIGF3YXkuCgotT2gsIHllYWg/IFdlbGwsIGlmIEkgdHJlYXRlZCB5b3Ugc28gYmFkLCBob3cgY29tZSB5b3UgY2FtZSBiYWNrPwoKLUJlY2F1c2UgdGhhdCdzIHdoYXQgZnJpZW5kcyBkbyEgVGhleSBmb3JnaXZlIGVhY2ggb3RoZXIhCgotT2gsIHllYWguIFlvdSdyZSByaWdodCwgRG9ua2V5LiBJIGZvcmdpdmUgeW91Li4uIGZvciBzdGFiYmluJyBtZSBpbiAKCnRoZSBiYWNrIQoKLU9oaCEgWW91J3JlIHNvIHdyYXBwZWQgdXAgaW4gbGF5ZXJzLCBvbmlvbiBib3ksIHlvdSdyZSBhZnJhaWQgb2YgeW91ciAKCm93biBmZWVsaW5ncy4KCi1HbyBhd2F5IQoKLVRoZXJlIHlvdSBhcmUgLCBkb2luZyBpdCBhZ2FpbiBqdXN0IGxpa2UgeW91IGRpZCB0byBGaW9uYS4gQWxsIHNoZSAKCmV2ZXIgZG8gd2FzIGxpa2UgeW91LCBtYXliZSBldmVuIGxvdmUgeW91LgoKLUxvdmUgbWU/IFNoZSBzYWlkIEkgd2FzIHVnbHksIGEgaGlkZW91cyBjcmVhdHVyZS4gSSBoZWFyZCB0aGUgdHdvIG9mIAoKeW91IHRhbGtpbmcuIAoKLVNoZSB3YXNuJ3QgdGFsa2luJyBhYm91dCB5b3UuIFNoZSB3YXMgdGFsa2luJyBhYm91dCwgdWgsIHNvbWVib2R5IAoKZWxzZS4KCi1TaGUgd2Fzbid0IHRhbGtpbmcgYWJvdXQgbWU/IFdlbGwsIHRoZW4gd2hvIHdhcyBzaGUgdGFsa2luZyBhYm91dD8KCi1VaC11aCwgbm8gd2F5LiBJIGFpbid0IHNheWluZyBhbnl0aGluZy4gWW91IGRvbid0IHdhbm5hIGxpc3RlbiB0byBtZS4gCgpSaWdodD8gUmlnaHQ/CgotRG9ua2V5IQoKLU5vIQoKLU9rYXksIGxvb2suIEknbSBzb3JyeSwgYWxsIHJpZ2h0PwoKe1NpZ2hzfQoKLUknbSBzb3JyeS4gSSBndWVzcyBJIGFtIGp1c3QgYSBiaWcsIHN0dXBpZCwgdWdseSBvcmdlLiBDYW4geW91IAoKZm9yZ2l2ZSBtZT8KCi1IZXksIHRoYXQncyB3aGF0IGZyaWVuZHMgYXJlIGZvciwgcmlnaHQ/CgotUmlnaHQuIEZyaWVuZHM/CgotRnJpZW5kcy4KCi1TbywgdW0sIHdoYXQgZGlkIEZpb25hIHNheSBhYm91dCBtZT8KCi1XaGF0IGFyZSB5b3UgYXNraW5nIG1lIGZvcj8gV2h5IGRvbid0IHlvdSBqdXN0IGdvIGFzayBoZXI/CgotVGhlIHdlZGRpbmchIFdlJ2xsIG5ldmVyIG1ha2UgaXQgaW4gdGltZS4KCi1IYS1oYS1oYSEgTmV2ZXIgZmVhciwgZm9yIHdoZXJlLCB0aGVyZSdzIGEgd2lsbCwgdGhlcmUncyBhIHdheSBhbmQgSSAKCmhhdmUgYSB3YXkuCgp7V2hpc3RsZXN9CgotRG9ua2V5PwoKLUkgZ3Vlc3MgaXQncyBqdXN0IG15IGFuaW1hbCBtYWduZXRpc20uCgp7TGF1Z2hpbmd9CgotQXcsIGNvbWUgaGVyZSwgeW91LgoKLUFsbCByaWdodCwgYWxsIHJpZ2h0LkRvbid0IGdldCBhbGwgc2xvYmJlcnkuIE5vIG9uZSBsaWtlcyBhIGtpc3MgYXNzLiAKCkFsbCByaWdodCwgaG9wIG9uIGFuZCBob2xkIG9uIHRpZ2h0LiBJIGhhdmVuJ3QgaGFkIGEgY2hhbmNlIHRvIGluc3RhbGwgCgp0aGUgc2VhdCBiZWx0cyB5ZXQuCgotV2hvbyEKCntCZWxscyB0b2xsaW5nfQoKe0FsbCBnYXNwaW5nfQoKLVBlb3BsZSBvZiBEdUxvYywgd2UgZ2F0aGVyIGhlcmUgdG9kYXkgdG8gYmVhciB3aXRuc3MgdG8gdGhlIHVuaW9uLi4uLgoKLVVtLQoKLW9mIG91ciBuZXcga2luZyAtIC0KCi1FeGN1c2UgbWUuIENvdWxkIHdlIGp1c3Qgc2tpcCBhaGVhZCB0byB0aGUgIkkgZG8ncyI/Cgp7Q2h1Y2tsaW5nfQoKLUdvIG9uLgoKLUdvIGFoZWFkLCBIQVZFIFNPTUUgRlVOLiBJZiB3ZSBuZWVkIHlvdSwgSSdsbCB3aGlzdGxlLiBIb3cgYWJvdXQgCgp0aGF0PyBTaHJlaywgd2FpdCwgd2FpdCEgV2FpdCBhIG1pbnV0ZSEgWW91IHdhbm5hIGRvIHRoaXMgcmlnaHQsIGRvbid0IAoKeW91PwoKLVdoYXQgYXJlIHlvdSB0YWxraW5nIGFib3V0PwoKLVRoZXJlJ3MgYSBsaW5lIHlvdSBnb3R0YSB3YWl0IGZvci4gVGhlIHByZWFjaGVyJ3MgZ29ubmEgc2F5LCAiU3BlYWsgCgpub3cgb3IgZm9yZXZlciBob2xkIHlvdXIgcGVhY2UuIiBUaGF0J3Mgd2hlbiB5b3Ugc2F5LCAiSSBvYmplY3QhIgoKLUkgZG9uJ3QgaGF2ZSB0aW1lIGZvciB0aGlzIQoKLUhleSwgd2FpdC4gV2hhdCBhcmUgeW91IGRvaW5nPyBMaXN0ZW4gdG8gbWUhIExvb2ssIHlvdSBsb3ZlIHRoaXMgCgp3b21hbiwgZG9uJ3QgeW91PwoKLVllcy4KCi1Zb3Ugd2FubmEgaG9sZCBoZXI/CgotWWVzLgoKLVBsZWFzZSBoZXI/CgotWWVzIQoKLVRoZW4geW91IGdvdCB0bywgZ290IHRvIHRyeSBhIGxpdHRsZSB0ZW5kZXJuZXNzLiBUaGUgY2hpY2tzIGxvdmUgdGhhdCAKCnJvbWFudGljIGNyYXAhCgotQWxsIHJpZ2h0ISBDdXQgaXQgb3V0LiBXaGVuIGRvZXMgdGhpcyBndXkgc2F5IHRoZSBsaW5lPwoKLVdlIGdvdHRhIGNoZWNrIGl0IG91dC4KCgoKLUFuZCBzbywgYnkgdGhlIHBvd2VyIHZlc3RlZCBpbiBtZSwgCgotV2hhdCBkbyB5b3Ugc2VlPwoKLVRoZSB3aG9sZSB0b3duJ3MgaW4gdGhlcmUuCgotSSBub3cgcHJvbm91bmNlIHlvdSBodXNiYW5kIGFuZCB3aWZlLAoKLVRoZXkncmUgYXQgdGhlIGFsdGFyLgoKLWtpbmcgYW5kIHF1ZWVuLgoKLU1vdGhlciBGbGV0Y2hlciEgSGUgYWxyZWFkeSBzYWlkIGl0LgoKLU9oLCBmb3IgdGhlIGxvdmUgb2YgUGV0ZSEKCntHcnVudHN9CgotSSBvYmplY3QhCgotU2hyZWs/Cgp7R2FzcHN9CgotT2gsIG5vdyB3aGF0IGRvZXMgaGUgd2FudD8KCi1IaSwgZXZlcnlvbmUuIEhhdmluJyBhIGdvb2QgdGltZSwgYXJlIHlhPyBJIGxvdmUgRHVMb2MsIGZpcnN0IGF0IGFsbC4gCgpWZXJ5IGNsZWFuLgoKLVdoYXQgYXJlIHlvdSBkb2luZyBoZXJlPwoKLVJlYWxseSwgaXQncyBydWRlIGVub3VnaCBiZWluZyBhbGl2ZSB3aGVuIG5vIG9uZSB3YW50cyB5b3UsIGJ1dCAKCnNob3dpbmcgdXAgdW5pbnZpdGVkIHRvIGEgd2VkZGluZyAtIC0KCi1GaW9uYSEgSSBuZWVkIHRvIHRhbGsgdG8geW91LgoKLU9oLCBub3cgeW91IHdhbm5hIHRhbGs/IEl0J3MgYSBsaXR0bGUgbGF0ZSBmb3IgdGhhdCwgc28gaWYgeW91J2xsIAoKZXhjdXNlIG1lIC0gLSAKCi1CdXQgeW91IGNhbid0IG1hcnJ5IGhpbS4KCi1BbmQgd2h5IG5vdD8KCi1CZWNhdXNlLSAtIEJlY2F1c2UgaGUncyBqdXN0IG1hcnJpbmcgeW91IHNvIGhlIGNhbiBiZSBraW5nLgoKLU91dHJhZ2VvdXMhIEZpb25hLCBkb24ndCBsaXN0ZW4gdG8gaGltLgoKLUhlJ3Mgbm90IHlvdXIgdHJ1ZSBsb3ZlLgoKLUFuZCB3aGF0IGRvIHlvdSBrbm93IGFib3V0IHRydWUgbG92ZT8KCi1XZWxsLCBJIC0gLSBVaCAtIC0gSSBtZWFuIC0gLSAKCi1PaCwgdGhpcyBpcyBwcmVjaW91cy4gVGhlIG9yZ2UgaGFzIGZhbGxlbiBpbiBsb3ZlIHdpdGggdGhlIHByaW5jZXNzISAKCk9oLCBnb29kIExvcmQuCgp7Q3Jvd2QgbGF1Z2h0aW5nfQoKLUFuIG9yZ2UgYW5kIGEgcHJpbmNlc3MhCgotU2hyZWssIGlzIHRoaXMgdHJ1ZT8KCi1XaG8gY2FyZXM/IEl0J3MgcHJlcG9zdGVyb3VzISBGaW9uYSwgbXkgbG92ZSwgd2UncmUgYnV0IGEga2lzcyBhd2F5IAoKZnJvbSBvdXIgImhhcHBpbHkgZXZlciBhZnRlci4iIE5vdyBraXNzIG1lISBNbW1tbSEKCi0iQnkgbmlnaHQgb25lIHdheSwgYnkgZGF5IGFub3RoZXIuIiBJIHdhbnRlZCB0byBzaG93IHlvdSBiZWZvcmUuCgp7V2hpbXBlcnN9Cgp7Q3Jvd24gZ2FzcGluZ30KCi1XZWxsLCB1aCwgdGhhdCBleHBsYWlucyBhIGxvdC4KCi1VZ2ghIEl0J3MgZGlzZ3VzdGluZyEgR3VhcmRzISBHdWFyZHMhIEkgb3JkZXIgeW91IHRvIGdldCB0aGF0IG91dCBvZiAKCm15IHNpZ2h0IG5vdyEgR2V0IHRoZW0hIEdldCB0aGVtIGJvdGghCgotTm8sIG5vIQoKLVNocmVrIQoKLVRoaXMgaG9jdXMtcG9jdXMgYWx0ZXJzIG5vdGhpbmcuIFRoaXMgbWFycmlhZ2UgaXMgYmluZGluZywgYW5kIHRoYXQgCgptYWtlcyBtZSBraW5nISBTZWU/IFNlZT8KCi1ObywgbGV0IGdvIG9mIG1lISBTaHJlayEKCi1ObyEKCi1Eb24ndCBqdXN0IHN0YW5kIHRoZXJlLCB5b3UgbW9yb25zLgoKLUdldCBvdXQgb2YgbXkgd2F5ISBGaW9uYSEgQXJyZ2ghIAoKLUknbGwgbWFrZSB5b3UgcmVncmV0IHRoZSBkYXkgd2UgbWV0LiBJJ2xsIHNlZSB5b3UgZHJhd24gYW5kIAoKcXVhcnRlcmVkIQoKLVlvdSdsbCBiZWcgZm9yIGRlYXRoIHRvIHNhdmUgeW91IQoKLU5vLCBTaHJlayEKCi1BbmQgYXMgZm9yIHlvdSwgbXkgd2lmZSwKCi1GaW9uYSEKCi1JJ2xsIGhhdmUgeW91IGxvY2tlZCBiYWNrIGluIHRoYXQgdG93ZXIgZm9yIHRoZSByZXN0IG9mIHlvdXIgZGF5cyEKCi1JJ20ga2luZyEKCntXaGlzdGxlc30KCi1JIHdpbGwgaGF2ZSBvcmRlciEgSSB3aWxsIGhhdmUgcGVyZmVjdGlvbiEgSSB3aWxsIGhhdmUgLSAtIEFhYWFoIQoKLUFhaCEKCi1BbGwgcmlnaHQuIE5vYm9keSBtb3ZlLiBJIGdvdCBhIGRyYWdvbiBoZXJlLCBhbmQgSSdtIG5vdCBhZnJhaWQgdG8gCgp1c2UgaXQuCgp7Um9hcnN9CgotSSdtIGEgZG9ua2V5IG9uIHRoZSBlZGdlIQoKe0JlbGNoZXN9CgotQ2VsZWJyaXR5IG1hcnJpYWdlcy4gVGhleSBuZXZlciBsYXN0LCBkbyB0aGV5PwoKe0NoZWVyaW5nfQoKLUdvIGFoZWFkLCBTaHJlay4KCi1VaCwgRmlvbmE/CgotWWVzLCBTaHJlaz8KCi1JIC0gLSBJIGxvdmUgeW91LgoKLVJlYWxseT8KCi1SZWFsbHksIHJlYWxseS4KCi0gSSBsb3ZlIHlvdSB0b28uCgotQWF3d3chCgotIlVudGlsIHlvdSBmaW5kIHRydWUgbG92ZSdzIGZpcnN0IGtpc3MgYW5kIHRoZW4gdGFrZSBsb3ZlJ3MgdHJ1ZSAKCmZvcm0uIgoKLSJUYWtlIGxvdmUncyB0cnVlIGZvcm0uIFRha2UgbG92ZSdzIHRydWUgZm9ybS4iCgotRmlvbmE/IEZpb25hLiBBcmUgeW91IGFsbCByaWdodD8KCi1XZWxsLCB5ZXMuIEJ1dCBJIGRvbid0IHVuZGVyc3RhbmQuIEknbSBzdXBwb3NlZCB0byBiZSBiZWF1dGlmdWwuCgotQnV0IHlvdSBBUkUgYmVhdXRpZnVsLgoKe0NodWNrbGVzfQoKLUkgd2FzIGhvcGluZyB0aGlzIHdvdWxkIGJlIGEgaGFwcHkgZW5kaW5nLgoKCgpJIHRob3VnaHQgbG92ZSB3YXMgb25seSB0cnVlIGluIGZhaXJ5IHRhbGVzCgpPeSEKCk1lYW50IGZvciBzb21lb25lIGVsc2UgYnV0IG5vdCBmb3IgbWUKCkxvdmUgd2FzIG91dCB0byBnZXQgbWUKClRoYXQncyB0aGUgd2F5IGl0IHNlZW1lZAoKRGlzYXBwb2ludG1lbnQgaGF1bnRlZCBhbGwgbXkgZHJlYW1zCgpBbmQgdGhlbiBJIHNhdyBoZXIgZmFjZQoKTm93IEknbSBhIGJlbGlldmVyIGFuZCBub3QgYSB0cmFjZQoKT2YgZG91YnQgaW4gbXkgbWluZAoKSSdtIGluIGxvdmUKCk9vaC1hYWgKCkknbSBhIGJlbGlldmVyIEkgY291bGRuJ3QgbGVhdmUgaGVyCgpJZiBJIHRyaWVkCgoKCi1Hb2QgYmxlc3MgdXMsIGV2ZXJ5IG9uZS4KCgoKQ29tZSBvbiwgeSdhbGwhCgpUaGVuIEkgc2F3IGhlciBmYWNlCgpIYS1oYQoKTm93IEknbSBhIGJlbGlldmVyIAoKTGlzdGVuIQoKTm90IGEgdHJhY2UKCk9mIGRvdWJ0IGluIG15IG1pbmQKCkknbSBpbiBsb3ZlCgpPb2gtYWFoCgpJJ20gYSBiZWxpZXZlciAKCkkgY291bGRuJ3QgbGVhdmUgaGVyIGlmIEkgdHJpZWQKCi1Pb2ghCgotVWghCgpUaGVuIEkgc2F3IGhlciBmYWNlCgpOb3cgSSdtIGEgYmVsaWV2ZXIgCgpIZXkhCgpOb3QgYSB0cmFjZQoKVWhoISBZZWFoLgoKT2YgZG91YnQgaW4gbXkgbWluZAoKCgotT25lIG1vcmUgdGltZSEKCkknbSBpbiBsb3ZlCgpJJ20gYSBiZWxpZXZlciAKCkNvbWUgb24hCgpJIGJlbGlldmUsIEkgYmVsaWV2ZSwgSSBiZWxpZXZlLCBJIGJlbGlldmUsIAoKSSBiZWxpZXZlLCBJIGJlbGlldmUsIEkgYmVsaWV2ZSwgSSBiZWxpZXZlLCBJIGJlbGlldmUsIGhleQoKWSdhbGwgc2luZyBpdCB3aXRoIG1lIQoKSQoKQmVsaWV2ZQoKSSBiZWxpZXZlCgpQZW9wbGUgaW4gdGhlIGJhY2shCgpJIGJlbGlldmUKCkknbSBhIGJlbGlldmVyIAoKSSBiZWxpZXZlCgpJIGJlbGlldmUKCkkgYmVsaWV2ZQoKSSBiZWxpZXZlCgp7SHlzdGVyaWNhbCBsYXVnaGluZ30KCi1PaCwgdGhhdCdzIGZ1bm55LiBPaC4gT2guCgotSSBjYW4ndCBicmVhdGhlLiBJIGNhbid0IGJyZWF0aGUuIAoKCgpJIGJlbGlldmUgaW4gc2VsZi1hc3NlcnRpb24KCkRlc3Rpbnkgb3IgYSBzbGlnaHQgZGl2ZXJzaW9uCgpOb3cgaXQgc2VlbXMgSSd2ZSBnb3QgbXkgaGVhZCBvbiBzdHJhaWdodAoKSSdtIGEgZnJlYWsgYW4gYXBwYXJpdGlvbgoKU2VlbXMgSSd2ZSBtYWRlIHRoZSByaWdodCBkZWNpc2lvbgoKVG8gdHJ5IHRvIHR1cm4gYmFjayBub3cgaXQgbWlnaHQgYmUgdG9vIGxhdGUKCgoKTm93IEkgd2FudCB0byBzdGF5IGhvbWUgdG9kYXkKCkRvbid0IHdhbm5hIGdvIG91dAoKSWYgYW55b25lIGNvbWVzIHRvIHBsYXkKCkdvbm5hIGdldCB0aHJvd24gb3V0CgpJIHdhbm5hIHN0YXkgaG9tZSB0b2RheQoKRG9uJ3Qgd2FudCBubyBjb21wYW55CgpObyB3YXkKClllYWgsIHllYWgsIHllYWgKCgoKSSB3YW5uYSBiZSBhIG1pbGxpb25haXJlIHNvbWVkYXkKCkJ1dCBrbm93IHdoYXQgaXQgZmVlbHMgbGlrZSB0byBnaXZlIGl0IGF3YXkKCldhdGNoIG1lIG1hcmNoIHRvIHRoZSBiZWF0IG9mIG15IG93biBkcnVtCgpBbmQgaXQncyBvZmYgdG8gdGhlIG1vb24gYW5kIHRoZW4gYmFjayBhZ2FpbgoKU2FtZSBvbGQgZGF5IFNhbWUgc2l0dWF0aW9uCgpNeSBoYXBwaW5lc3MgcmVhcnMgYmFjayBhcyBpZiB0byBzYXkKCgoKSSB3YW5uYSBzdGF5IGhvbWUgdG9kYXkKCkRvbid0IHdhbm5hIGdvIG91dAoKSWYgYW55b25lIGNvbWVzIHRvIHBsYXkKCkdvbm5hIGdldCB0aHJvd24gb3V0CgpJIHdhbm5hIHN0YXkgaG9tZSB0b2RheQoKRG9uJ3Qgd2FudCBubyBjb21wYW55CgpObyB3YXkKClllYWgsIHllYWgsIHllYWgKCgoKSSB3YW5uYSBzdGF5IGhvbWUsIHN0YXkgaG9tZSwgc3RheSBob21lLi4uLi4uLi4uCgoKCgoKSSBnZXQgc3VjaCBhIHRocmlsbCB3aGVuIHlvdSBsb29rIGluIG15IGV5ZXMKCk15IGhlYXJ0IHNraXBzIGEgYmVhdAoKR2lybCwgSSBmZWVsIHNvIGFsaXZlCgpQbGVhc2UgdGVsbCBtZSwgYmFieSwgaWYgYWxsIHRoaXMgaXMgdHJ1ZQoKJ0NhdXNlIGRlZXAgZG93biBpbnNpZGUgYWxsIEkgd2FudGVkIHdhcyB5b3UKCk9oLW9oLW9oCgpNYWtlcyBtZSB3YW5uYSBkYW5jZQoKT2gtb2gtb2gKCkl0J3MgYSBuZXcgcm9tYW5jZQoKT2gtb2gtb2gKCkkgbG9vayBpbnRvIHlvdXIgZXllcwoKT2gtb2gtb2gKClRoZSBiZXN0IHllYXJzIG9mIG91ciBsaXZlcwoKV2hlbiB3ZSBmaXJzdCBtZXQKCkkgY291bGQgaGFyZGx5IGJlbGlldmUKClRoZSB0aGluZ3MgdGhhdCB3b3VsZCBoYXBwZW4gCgphbmQgd2UgY291bGQgYWNoaWV2ZQoKU28gbGV0J3MgYmUgdG9nZXRoZXIKCmZvciBhbGwgb2Ygb3VyIHRpbWUKCk9oLCBnaXJsLCBJJ20gc28gdGhhbmtmdWwKCnRoYXQgeW91IGFyZSBzdGlsbCBtaW5lCgpZb3UgYWx3YXlzIGNvbnNpZGVyIG1lCgpsaWtlIGFuIHVnbHkgZHVja2xpbmcKCkFuZCB0cmVhdCBtZSBsaWtlIGEgTm9zdHJhZGFtdXMKCndhcyB3aHkgSSBoYWQgdG8gZ2V0IG15IHNoaW5lIG9uCgpJIGJyZWFrIGEgbGl0dGxlIHNvbWV0aGluZwoKdG8ga2VlcCBteSBtaW5kIG9uCgonQ2F1c2UgeW91IGhhZCBteSBtaW5kIGdvbmUKCkVoLWVoLCBlaC1laCwgZWgtZWgKClR1cm4gdGhlIGxpZ2h0cyBvbiwgQ29tZSBvbiwgYmFieQoKTGV0J3MganVzdCByZXdpbmQgdGhlIHNvbmcKCidDYXVzZSBhbGwgSSB3YW50IHRvIGRvIGlzIAoKbWFrZSB0aGUgcmVzdCB5ZWFycyB0aGUgYmVzdCB5ZWFycwoKQWxsIG5pZ2h0IGxvbmcKCgoKT2gtb2gtb2gKCk1ha2VzIG1lIHdhbm5hIGRhbmNlCgpNYWtlcyBtZSB3YW5uYSBkYW5jZQoKT2gtb2gtb2gKCkl0J3MgYSBuZXcgcm9tYW5jZQoKSXQncyBhIG5ldyByb21hbmNlCgpPaC1vaC1vaAoKSSBsb29rIGludG8geW91ciBleWVzCgpPaCwgeWVhaCwgeWVhaAoKSSBsb29rIGludG8geW91ciBleWVzCgpPaC1vaC1vaAoKVGhlIGJlc3QgeWVhcnMgb2Ygb3VyIGxpdmVzCgpZZWFoLCB5ZWFoLCB5ZWFoLCB5ZWFoLi4uLi4uLi4uLi4uLi4KCgoKCgpFdmVyeXRoaW5nIGxvb2tzIGJyaWdodAoKU3RhbmRpbmcgaW4geW91ciBsaWdodAoKRXZlcnl0aGluZyBmZWVscyByaWdodAoKV2hhdCdzIGxlZnQgaXMgb3V0IG9mIHNpZ2h0CgpXaGF0J3MgYSBnaXJsIHRvIGRvIAoKSSdtIHRlbGxpbmcgeW91CgpZb3UncmUgb24gbXkgbWluZAoKSSB3YW5uYSBiZSB3aXRoIHlvdQoKJ0NhdXNlIHdoZW4geW91J3JlCgpzdGFuZGluJyBuZXh0IHRvIG1lCgpJdCdzIGxpa2Ugd293CgpBbmQgYWxsIHlvdXIga2lzc2VzCgpzZWVtIHRvIHNldCBtZSBmcmVlCgpJdCdzIGxpa2Ugd293CgpBbmQgd2hlbiB3ZSB0b3VjaAoKaXQncyBzdWNoIGEgcnVzaAoKSSBjYW4ndCBnZXQgZW5vdWdoCgpJdCdzIGxpa2UtIC0gSXQncyBsaWtlCgpPb2gtb29oCgpIZXksIHdoYXQKCkl0J3MgbGlrZSB3b3cKCk9vaC1vb2gsIGhleQoKSGV5LCB5ZWFoCgpJdCdzIGxpa2Ugd293CgpFdmVyeXRoaW5nIGlzIGxvb2tpbmcKCnJpZ2h0IG5vdywgcmlnaHQgbm93CgpJdCdzIGxpa2Ugd293CgpBbmQgSSBnb3QgdGhpcyBmZWVsaW5nCgpUaGlzIGZlZWxpbmcgCgppdCdzIGp1c3QgbGlrZSB3b3cKCkl0J3MganVzdCBsaWtlIHdvdwoKWW91IGFyZSBhbGwgSSdtIHRoaW5raW5nIG9mLgoKTGlrZSB3b3cKCkV2ZXJ5dGhpbmcgZmVlbHMgcmlnaHQKCkV2ZXJ5dGhpbmcgZmVlbHMgcmlnaHQKCkxpa2Ugd293CgpFdmVyeXRoaW5nIGxvb2tzIGJyaWdodAoKQWxsIG15IHNlbnNlcyBhcmUgcmlnaHQKCkxpa2Ugd293CgpFdmVyeXRoaW5nIGZlZWxzIHJpZ2h0CgpCYWJ5LCBiYWJ5LCBiYWJ5Cgp0aGUgd2F5IEknbSBmZWVsaW5nIHlvdQoKSXMgbGlrZSB3b3cKCgoKVGhlcmUgaXMgc29tZXRoaW5nCgp0aGF0IEkgc2VlCgpJbiB0aGUgd2F5IAoKeW91IGxvb2sgYXQgbWUKClRoZXJlJ3MgYSBzbWlsZQoKVGhlcmUncyBhIHRydXRoCgpJbiB5b3VyIGV5ZXMKCldoYXQgYW4gdW5leHBlY3RlZCB3YXkKCk9uIHRoaXMgdW5leHBlY3RlZCBkYXkKCkNvdWxkIGl0IGJlCgpUaGlzIGlzIHdoZXJlIEkgYmVsb25nCgpJdCBpcyB5b3UgSSBoYXZlIGxvdmVkCgpBbGwgbG9uZwoKVGhlcmUncyBubyBtb3JlIG15c3RlcnkKCkl0IGlzIGZpbmFsbHkgY2xlYXIgdG8gbWUKCllvdSdyZSB0aGUgaG9tZQoKbXkgaGVhcnQncyBzZWFyY2hlZCBmb3IKClNvIGxvbmcKCkl0IGlzIHlvdSBJIGhhdmUgbG92ZWQKCkFsbCBsb25nCgpXaG9hLCBvdmVyIGFuZCBvdmVyCgpJJ20gZmlsbGVkIHdpdGggZW1vdGlvbgoKQXMgSSBsb29rCgpJbnRvIHlvdXIgcGVyZmVjdCBmYWNlCgoKCgoKCgoKCiAKU3BlY2lhbCBoZWxwIGJ5IFNlcmdlaUs=
                      
                                       
To share this paste please copy this url and send to your friends
RAW Paste Data

Comments

Authentication required

You must log in to post a comment.

Log in
    There are no comments yet.