Call for Papers: ICFP 2017
Lindsey Kuper <[email protected]> Fri, 23 Dec 2016 18:58:42 -0800
| Newsgroups | gmane.comp.lang.lambda-prolog |
|---|---|
| Message-ID | <[email protected]> |
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElDRlAgMjAxNwogICAgVGhlIDIybmQg QUNNIFNJR1BMQU4gSW50ZXJuYXRpb25hbCBDb25mZXJlbmNlIG9uIEZ1bmN0aW9uYWwgUHJvZ3Jh bW1pbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPeGZvcmQsIFVuaXRlZCBLaW5nZG9t CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly9pY2ZwMTcuc2lncGxhbi5vcmcvCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsIGZvciBQYXBlcnMKCiMjIyBJbXBvcnRh bnQgZGF0ZXMKClN1Ym1pc3Npb25zIGR1ZTogICAgTW9uZGF5LCBGZWJydWFyeSAyNywgQW55d2hl cmUgb24gRWFydGgKICAgICAgICAgICAgICAgICAgICBodHRwczovL2ljZnAxNy5ob3RjcnAuY29t CkF1dGhvciByZXNwb25zZTogICAgTW9uZGF5LCBBcHJpbCAxNywgMjAxNywgMTU6MDAgKFVUQykg LQogICAgICAgICAgICAgICAgICAgIFRodXJzZGF5LCBBcHJpbCAyMCwgMjAxNywgMTU6MDAgKFVU QykKTm90aWZpY2F0aW9uOiAgICAgICBNb25kYXksIDEgTWF5LCAyMDE3CkZpbmFsIGNvcHkgZHVl OiAgICAgTW9uZGF5LCA1IEp1bmUgMjAxNwpFYXJseSByZWdpc3RyYXRpb246IFRCQQpDb25mZXJl bmNlOiAgICAgICAgIE1vbmRheSwgNCBTZXB0ZW1iZXIgLQogICAgICAgICAgICAgICAgICAgIFdl ZG5lc2RheSwgNiBTZXB0ZW1iZXIsIDIwMTcKCiMjIyBOZXcgdGhpcyB5ZWFyCgpUaG9zZSBmYW1p bGlhciB3aXRoIHByZXZpb3VzIElDRlAgY29uZmVyZW5jZXMgc2hvdWxkIGJlIGF3YXJlIG9mIHR3 byBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgYXJlIGJlaW5nIGludHJvZHVjZWQgaW4gMjAxNzoK CjEuIFBhcGVycyBzZWxlY3RlZCBmb3IgSUNGUCAyMDE3IHdpbGwgYmUgcHVibGlzaGVkIGFzIHRo ZSBJQ0ZQIDIwMTcgaXNzdWUgb2YgYSBuZXcgam91cm5hbCwgUHJvY2VlZGluZ3Mgb2YgdGhlIEFD TSBvbiBQcm9ncmFtbWluZyBMYW5ndWFnZXMgKFBBQ01QTCksIHdoaWNoIHJlcGxhY2VzIHRoZSBw cmV2aW91cyBJQ0ZQIGNvbmZlcmVuY2UgcHJvY2VlZGluZ3MuIFRoZSBtb3ZlIHRvIFBBQ01QTCB3 aWxsIGhhdmUgdHdvIG5vdGljZWFibGUgaW1wYWN0cyBvbiBhdXRob3JzOgoKICAgICogQSBuZXcs IHR3by1waGFzZSBzZWxlY3Rpb24gYW5kIHJldmlld2luZyBwcm9jZXNzIHRoYXQgY29uZm9ybXMg dG8gQUNN4oCZcyBqb3VybmFsIHJldmlld2luZyBndWlkZWxpbmVzLgogICAKICAgICogQSBuZXcs IHNpbmdsZS1jb2x1bW4gZm9ybWF0IGZvciBzdWJtaXNzaW9ucy4KCjIuIEF1dGhvcnMgb2YgcGFw ZXJzIHRoYXQgYXJlIGNvbmRpdGlvbmFsbHkgYWNjZXB0ZWQgaW4gdGhlIGZpcnN0IHBoYXNlIG9m IHRoZSByZXZpZXdpbmcgcHJvY2VzcyB3aWxsIGhhdmUgdGhlIG9wdGlvbiB0byBzdWJtaXQgbWF0 ZXJpYWxzIGZvciBBcnRpZmFjdCBFdmFsdWF0aW9uLgoKRnVydGhlciBkZXRhaWxzIG9uIGVhY2gg b2YgdGhlc2UgY2hhbmdlcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbGxvd2luZyB0ZXh0LgoKIyMj IFNjb3BlCgpJQ0ZQIDIwMTcgc2Vla3Mgb3JpZ2luYWwgcGFwZXJzIG9uIHRoZSBhcnQgYW5kIHNj aWVuY2Ugb2YgZnVuY3Rpb25hbCBwcm9ncmFtbWluZy4gU3VibWlzc2lvbnMgYXJlIGludml0ZWQg b24gYWxsIHRvcGljcyBmcm9tIHByaW5jaXBsZXMgdG8gcHJhY3RpY2UsIGZyb20gZm91bmRhdGlv bnMgdG8gZmVhdHVyZXMsIGFuZCBmcm9tIGFic3RyYWN0aW9uIHRvIGFwcGxpY2F0aW9uLiBUaGUg c2NvcGUgaW5jbHVkZXMgYWxsIGxhbmd1YWdlcyB0aGF0IGVuY291cmFnZSBmdW5jdGlvbmFsIHBy b2dyYW1taW5nLCBpbmNsdWRpbmcgYm90aCBwdXJlbHkgYXBwbGljYXRpdmUgYW5kIGltcGVyYXRp dmUgbGFuZ3VhZ2VzLCBhcyB3ZWxsIGFzIGxhbmd1YWdlcyB3aXRoIG9iamVjdHMsIGNvbmN1cnJl bmN5LCBvciBwYXJhbGxlbGlzbS4gVG9waWNzIG9mIGludGVyZXN0IGluY2x1ZGUgKGJ1dCBhcmUg bm90IGxpbWl0ZWQgdG8pOgoKICAqICpMYW5ndWFnZSBEZXNpZ24qOiBjb25jdXJyZW5jeSwgcGFy YWxsZWxpc20sIGFuZCBkaXN0cmlidXRpb247IG1vZHVsZXM7IGNvbXBvbmVudHMgYW5kIGNvbXBv c2l0aW9uOyBtZXRhcHJvZ3JhbW1pbmc7IHR5cGUgc3lzdGVtczsgaW50ZXJvcGVyYWJpbGl0eTsg ZG9tYWluLXNwZWNpZmljIGxhbmd1YWdlczsgYW5kIHJlbGF0aW9ucyB0byBpbXBlcmF0aXZlLCBv YmplY3Qtb3JpZW50ZWQsIG9yIGxvZ2ljIHByb2dyYW1taW5nLgoKICAqICpJbXBsZW1lbnRhdGlv bio6IGFic3RyYWN0IG1hY2hpbmVzOyB2aXJ0dWFsIG1hY2hpbmVzOyBpbnRlcnByZXRhdGlvbjsg Y29tcGlsYXRpb247IGNvbXBpbGUtdGltZSBhbmQgcnVuLXRpbWUgb3B0aW1pemF0aW9uOyBnYXJi YWdlIGNvbGxlY3Rpb24gYW5kIG1lbW9yeSBtYW5hZ2VtZW50OyBtdWx0aS10aHJlYWRpbmc7IGV4 cGxvaXRpbmcgcGFyYWxsZWwgaGFyZHdhcmU7IGludGVyZmFjZXMgdG8gZm9yZWlnbiBmdW5jdGlv bnMsIHNlcnZpY2VzLCBjb21wb25lbnRzLCBvciBsb3ctbGV2ZWwgbWFjaGluZSByZXNvdXJjZXMu CgogICogKlNvZnR3YXJlLURldmVsb3BtZW50IFRlY2huaXF1ZXMqOiBhbGdvcml0aG1zIGFuZCBk YXRhIHN0cnVjdHVyZXM7IGRlc2lnbiBwYXR0ZXJuczsgc3BlY2lmaWNhdGlvbjsgdmVyaWZpY2F0 aW9uOyB2YWxpZGF0aW9uOyBwcm9vZiBhc3Npc3RhbnRzOyBkZWJ1Z2dpbmc7IHRlc3Rpbmc7IHRy YWNpbmc7IHByb2ZpbGluZy4KCiAgKiAqRm91bmRhdGlvbnMqOiBmb3JtYWwgc2VtYW50aWNzOyBs YW1iZGEgY2FsY3VsdXM7IHJld3JpdGluZzsgdHlwZSB0aGVvcnk7IG1vbmFkczsgY29udGludWF0 aW9uczsgY29udHJvbDsgc3RhdGU7IGVmZmVjdHM7IHByb2dyYW0gdmVyaWZpY2F0aW9uOyBkZXBl bmRlbnQgdHlwZXMuCgogICogKkFuYWx5c2lzIGFuZCBUcmFuc2Zvcm1hdGlvbio6IGNvbnRyb2wt ZmxvdzsgZGF0YS1mbG93OyBhYnN0cmFjdCBpbnRlcnByZXRhdGlvbjsgcGFydGlhbCBldmFsdWF0 aW9uOyBwcm9ncmFtIGNhbGN1bGF0aW9uLgoKICAqICpBcHBsaWNhdGlvbnMqOiBzeW1ib2xpYyBj b21wdXRpbmc7IGZvcm1hbC1tZXRob2RzIHRvb2xzOyBhcnRpZmljaWFsIGludGVsbGlnZW5jZTsg c3lzdGVtcyBwcm9ncmFtbWluZzsgZGlzdHJpYnV0ZWQtc3lzdGVtcyBhbmQgd2ViIHByb2dyYW1t aW5nOyBoYXJkd2FyZSBkZXNpZ247IGRhdGFiYXNlczsgWE1MIHByb2Nlc3Npbmc7IHNjaWVudGlm aWMgYW5kIG51bWVyaWNhbCBjb21wdXRpbmc7IGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZXM7IG11 bHRpbWVkaWEgYW5kIDNEIGdyYXBoaWNzIHByb2dyYW1taW5nOyBzY3JpcHRpbmc7IHN5c3RlbSBh ZG1pbmlzdHJhdGlvbjsgc2VjdXJpdHkuCgogICogKkVkdWNhdGlvbio6IHRlYWNoaW5nIGludHJv ZHVjdG9yeSBwcm9ncmFtbWluZzsgcGFyYWxsZWwgcHJvZ3JhbW1pbmc7IG1hdGhlbWF0aWNhbCBw cm9vZjsgYWxnZWJyYS4KClN1Ym1pc3Npb25zIHdpbGwgYmUgZXZhbHVhdGVkIGFjY29yZGluZyB0 byB0aGVpciByZWxldmFuY2UsIGNvcnJlY3RuZXNzLCBzaWduaWZpY2FuY2UsIG9yaWdpbmFsaXR5 LCBhbmQgY2xhcml0eS4gRWFjaCBzdWJtaXNzaW9uIHNob3VsZCBleHBsYWluIGl0cyBjb250cmli dXRpb25zIGluIGJvdGggZ2VuZXJhbCBhbmQgdGVjaG5pY2FsIHRlcm1zLCBjbGVhcmx5IGlkZW50 aWZ5aW5nIHdoYXQgaGFzIGJlZW4gYWNjb21wbGlzaGVkLCBleHBsYWluaW5nIHdoeSBpdCBpcyBz aWduaWZpY2FudCwgYW5kIGNvbXBhcmluZyBpdCB3aXRoIHByZXZpb3VzIHdvcmsuIFRoZSB0ZWNo bmljYWwgY29udGVudCBzaG91bGQgYmUgYWNjZXNzaWJsZSB0byBhIGJyb2FkIGF1ZGllbmNlLgoK SUNGUCAyMDE3IGFsc28gd2VsY29tZXMgc3VibWlzc2lvbnMgaW4gdHdvIHNlcGFyYXRlIGNhdGVn b3JpZXMgJm1kYXNoOyBGdW5jdGlvbmFsIFBlYXJscyBhbmQgRXhwZXJpZW5jZSBSZXBvcnRzICZt ZGFzaDsgdGhhdCBtdXN0IGJlIG1hcmtlZCBhcyBzdWNoIGF0IHRoZSB0aW1lIG9mIHN1Ym1pc3Np b24gYW5kIHRoYXQgbmVlZCBub3QgcmVwb3J0IG9yaWdpbmFsIHJlc2VhcmNoIHJlc3VsdHMuICBE ZXRhaWxlZCBndWlkZWxpbmVzIG9uIGJvdGggY2F0ZWdvcmllcyBhcmUgZ2l2ZW4gYXQgdGhlIGVu ZCBvZiB0aGlzIGNhbGwuCgpQbGVhc2UgY29udGFjdCB0aGUgcHJvZ3JhbSBjaGFpciBpZiB5b3Ug aGF2ZSBxdWVzdGlvbnMgb3IgYXJlIGNvbmNlcm5lZCBhYm91dCB0aGUgYXBwcm9wcmlhdGVuZXNz IG9mIGEgdG9waWMuCgojIyMgUHJlcGFyYXRpb24gb2Ygc3VibWlzc2lvbnMKCioqRGVhZGxpbmUq KjogVGhlIGRlYWRsaW5lIGZvciBzdWJtaXNzaW9ucyBpcyBNb25kYXksIEZlYnJ1YXJ5IDI3LCAy MDE3LCBBbnl3aGVyZSBvbiBFYXJ0aCAoPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Fu eXdoZXJlX29uX0VhcnRoPikuICBUaGlzIGRlYWRsaW5lIHdpbGwgYmUgc3RyaWN0bHkgZW5mb3Jj ZWQuCgoqKkZvcm1hdHRpbmcqKjogKE5PVEU6IE5FVyBGT1JNQVQgUkVRVUlSRU1FTlRTIEZPUiBJ Q0ZQIDIwMTcpICBTdWJtaXNzaW9ucyBtdXN0IGJlIGluIFBERiBmb3JtYXQsIHByaW50YWJsZSBp biBibGFjayBhbmQgd2hpdGUgb24gVVMgTGV0dGVyIHNpemVkIHBhcGVyLCBhbmQgaW50ZXJwcmV0 YWJsZSBieSBjb21tb24gUERGIHRvb2xzLiBBbGwgc3VibWlzc2lvbnMgbXVzdCBhZGhlcmUgdG8g dGhlICJBQ00gTGFyZ2UiIHRlbXBsYXRlIHRoYXQgaXMgYXZhaWxhYmxlIChpbiBib3RoIExhVGVY IGFuZCBXb3JkIGZvcm1hdHMpIGZyb20gPGh0dHA6Ly93d3cuYWNtLm9yZy9wdWJsaWNhdGlvbnMv cHJvY2VlZGluZ3MtdGVtcGxhdGU+LiAgRm9yIGF1dGhvcnMgdXNpbmcgTGFUZVgsIGEgbGlnaHRl ci13ZWlnaHQgcGFja2FnZSwgaW5jbHVkaW5nIG9ubHkgdGhlIGVzc2VudGlhbCBmaWxlcywgaXMg YXZhaWxhYmxlIGZyb20gPGh0dHA6Ly9zaWdwbGFuLm9yZy9SZXNvdXJjZXMvQXV0aG9yLyNhY21h cnQtZm9ybWF0Pi4KClRoZXJlIGlzIGEgbGltaXQgb2YgMjQgcGFnZXMgZm9yIGEgZnVsbCBwYXBl ciBvciAxMiBwYWdlcyBmb3IgYW4gRXhwZXJpZW5jZSBSZXBvcnQ7IGluIGVpdGhlciBjYXNlLCB0 aGUgYmlibGlvZ3JhcGh5IHdpbGwgbm90IGJlIGNvdW50ZWQgYWdhaW5zdCB0aGVzZSBsaW1pdHMu IFRoZXNlIHBhZ2UgbGltaXRzIGhhdmUgYmVlbiBjaG9zZW4gdG8gYWxsb3cgZXNzZW50aWFsbHkg dGhlIHNhbWUgYW1vdW50IG9mIGNvbnRlbnQgd2l0aCB0aGUgbmV3IHNpbmdsZS1jb2x1bW4gZm9y bWF0IGFzIHdhcyBwb3NzaWJsZSB3aXRoIHRoZSB0d28tY29sdW1uIGZvcm1hdCB1c2VkIGluIHBh c3QgSUNGUCBjb25mZXJlbmNlcy4gU3VibWlzc2lvbnMgdGhhdCBleGNlZWQgdGhlIHBhZ2UgbGlt aXRzIG9yLCBmb3Igb3RoZXIgcmVhc29ucywgZG8gbm90IG1lZXQgdGhlIHJlcXVpcmVtZW50cyBm b3IgZm9ybWF0dGluZywgd2lsbCBiZSBzdW1tYXJpbHkgcmVqZWN0ZWQuCgoqKlN1Ym1pc3Npb24q KjogU3VibWlzc2lvbnMgd2lsbCBiZSBhY2NlcHRlZCBhdCA8aHR0cHM6Ly9pY2ZwMTcuaG90Y3Jw LmNvbS8+IChpbiBwcmVwYXJhdGlvbiBhdCB0aGUgdGltZSBvZiB3cml0aW5nKS4KCkltcHJvdmVk IHZlcnNpb25zIG9mIGEgcGFwZXIgbWF5IGJlIHN1Ym1pdHRlZCBhdCBhbnkgcG9pbnQgYmVmb3Jl IHRoZSBzdWJtaXNzaW9uIGRlYWRsaW5lIHVzaW5nIHRoZSBzYW1lIHdlYiBpbnRlcmZhY2UuCgoq KkF1dGhvciBSZXNwb25zZSBQZXJpb2QqKjogQXV0aG9ycyB3aWxsIGhhdmUgYSA3Mi1ob3VyIHBl cmlvZCwgc3RhcnRpbmcgYXQgMTU6MDAgVVRDIG9uIE1vbmRheSwgQXByaWwgMTcsIDIwMTcsIHRv IHJlYWQgcmV2aWV3cyBhbmQgcmVzcG9uZCB0byB0aGVtLgoKKipTdXBwbGVtZW50YXJ5IE1hdGVy aWFscyoqOiBBdXRob3JzIGhhdmUgdGhlIG9wdGlvbiB0byBhdHRhY2ggc3VwcGxlbWVudGFyeSBt YXRlcmlhbCB0byBhIHN1Ym1pc3Npb24sIG9uIHRoZSB1bmRlcnN0YW5kaW5nIHRoYXQgcmV2aWV3 ZXJzIG1heSBjaG9vc2Ugbm90IHRvIGxvb2sgYXQgaXQuIFRoZSBtYXRlcmlhbCBzaG91bGQgYmUg dXBsb2FkZWQgYXQgc3VibWlzc2lvbiB0aW1lLCBhcyBhIHNpbmdsZSBwZGYgb3IgYSB0YXJiYWxs LCBub3QgdmlhIGEgVVJMLiBUaGlzIHN1cHBsZW1lbnRhcnkgbWF0ZXJpYWwgbWF5IG9yIG1heSBu b3QgYmUgYW5vbnltaXplZDsgaWYgbm90IGFub255bWl6ZWQsIGl0IHdpbGwgb25seSBiZSByZXZl YWxlZCB0byByZXZpZXdlcnMgYWZ0ZXIgdGhleSBoYXZlIHN1Ym1pdHRlZCB0aGVpciByZXZpZXcg b2YgdGhlIHBhcGVyIGFuZCBsZWFybmVkIHRoZSBpZGVudGl0eSBvZiB0aGUgYXV0aG9yKHMpLgoK KipBdXRob3JzaGlwIFBvbGljaWVzKio6IEFsbCBzdWJtaXNzaW9ucyBhcmUgZXhwZWN0ZWQgdG8g Y29tcGx5IHdpdGggdGhlIEFDTSBQb2xpY2llcyBmb3IgQXV0aG9yc2hpcCB0aGF0IGFyZSBkZXRh aWxlZCBhdCA8aHR0cHM6Ly93d3cuYWNtLm9yZy9wdWJsaWNhdGlvbnMvYXV0aG9ycy9pbmZvcm1h dGlvbi1mb3ItYXV0aG9ycz4uCgoqKlJlcHVibGljYXRpb24gUG9saWNpZXMqKjogRWFjaCBzdWJt aXNzaW9uIG11c3QgYWRoZXJlIHRvIFNJR1BMQU4ncyByZXB1YmxpY2F0aW9uIHBvbGljeSwgYXMg ZXhwbGFpbmVkIG9uIHRoZSB3ZWIgYXQgPGh0dHA6Ly93d3cuc2lncGxhbi5vcmcvUmVzb3VyY2Vz L1BvbGljaWVzL1JlcHVibGljYXRpb24+LgoKKipSZXN1Ym1pdHRlZCBQYXBlcnMqKjogQXV0aG9y cyB3aG8gc3VibWl0IGEgcmV2aXNlZCB2ZXJzaW9uIG9mIGEgcGFwZXIgdGhhdCBoYXMgcHJldmlv dXNseSBiZWVuIHJlamVjdGVkIGJ5IGFub3RoZXIgY29uZmVyZW5jZSBoYXZlIHRoZSBvcHRpb24g dG8gYXR0YWNoIGFuIGFubm90YXRlZCBjb3B5IG9mIHRoZSByZXZpZXdzIG9mIHRoZWlyIHByZXZp b3VzIHN1Ym1pc3Npb24ocyksIGV4cGxhaW5pbmcgaG93IHRoZXkgaGF2ZSBhZGRyZXNzZWQgdGhl c2UgcHJldmlvdXMgcmV2aWV3cyBpbiB0aGUgcHJlc2VudCBzdWJtaXNzaW9uLiBJZiBhIHJldmll d2VyIGlkZW50aWZpZXMgaGltL2hlcnNlbGYgYXMgYSByZXZpZXdlciBvZiB0aGlzIHByZXZpb3Vz IHN1Ym1pc3Npb24gYW5kIHdpc2hlcyB0byBzZWUgaG93IGhpcy9oZXIgY29tbWVudHMgaGF2ZSBi ZWVuIGFkZHJlc3NlZCwgdGhlIHByb2dyYW0gY2hhaXIgd2lsbCBjb21tdW5pY2F0ZSB0byB0aGlz IHJldmlld2VyIHRoZSBhbm5vdGF0ZWQgY29weSBvZiBoaXMvaGVyIHByZXZpb3VzIHJldmlldy4g T3RoZXJ3aXNlLCBubyByZXZpZXdlciB3aWxsIHJlYWQgdGhlIGFubm90YXRlZCBjb3BpZXMgb2Yg dGhlIHByZXZpb3VzIHJldmlld3MuCgojIyMgUmV2aWV3IFByb2Nlc3MKClRoaXMgc2VjdGlvbiBv dXRsaW5lcyB0aGUgdHdvLXN0YWdlIHByb2Nlc3Mgd2l0aCBsaWdodHdlaWdodCBkb3VibGUtYmxp bmQgcmV2aWV3aW5nIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHNlbGVjdCBwYXBlcnMgZm9yIHByZXNl bnRhdGlvbiBhdCBJQ0ZQIDIwMTcuICBXZSBhbnRpY2lwYXRlIHRoYXQgdGhlcmUgd2lsbCBiZSBh IG5lZWQgdG8gY2xhcmlmeSBhbmQgZXhwYW5kIG9uIHRoaXMgcHJvY2VzcywgYW5kIHdlIHdpbGwg bWFpbnRhaW4gYSBsaXN0IG9mIGZyZXF1ZW50bHkgYXNrZWQgcXVlc3Rpb25zIGFuZCBhbnN3ZXJz IG9uIHRoZSBjb25mZXJlbmNlIHdlYnNpdGUgdG8gYWRkcmVzcyBjb21tb24gY29uY2VybnMuCiAK KipJQ0ZQIDIwMTcgd2lsbCBlbXBsb3kgYSB0d28tc3RhZ2UgcmV2aWV3IHByb2Nlc3MuKiogIFRo ZSBmaXJzdCBzdGFnZSBpbiB0aGUgcmV2aWV3IHByb2Nlc3Mgd2lsbCBhc3Nlc3Mgc3VibWl0dGVk IHBhcGVycyB1c2luZyB0aGUgY3JpdGVyaWEgc3RhdGVkIGFib3ZlIGFuZCB3aWxsIGFsbG93IGZv ciBmZWVkYmFjayBhbmQgaW5wdXQgb24gaW5pdGlhbCByZXZpZXdzIHRocm91Z2ggdGhlIGF1dGhv ciByZXNwb25zZSBwZXJpb2QgbWVudGlvbmVkIHByZXZpb3VzbHkuIEF0IHRoZSBQQyBtZWV0aW5n LCBhIHNldCBvZiBwYXBlcnMgd2lsbCBiZSBjb25kaXRpb25hbGx5IGFjY2VwdGVkIGFuZCBhbGwg b3RoZXIgcGFwZXJzIHdpbGwgYmUgcmVqZWN0ZWQuICBBdXRob3JzIHdpbGwgYmUgbm90aWZpZWQg b2YgdGhlc2UgZGVjaXNpb25zIG9uIE1heSAxLCAyMDE3LgoKQXV0aG9ycyBvZiBjb25kaXRpb25h bGx5IGFjY2VwdGVkIHBhcGVycyB3aWxsIGJlIHByb3ZpZGVkIHdpdGggY29tbWl0dGVlIHJldmll d3MgKGp1c3QgYXMgaW4gcHJldmlvdXMgY29uZmVyZW5jZXMpIGFsb25nIHdpdGggYSBzZXQgb2Yg bWFuZGF0b3J5IHJldmlzaW9ucy4gQWZ0ZXIgZml2ZSB3ZWVrcyAoSnVuZSA1LCAyMDE3KSwgdGhl IGF1dGhvcnMgd2lsbCBwcm92aWRlIGEgc2Vjb25kIHN1Ym1pc3Npb24uIFRoZSBzZWNvbmQgYW5k IGZpbmFsIHJldmlld2luZyBwaGFzZSBhc3Nlc3NlcyB3aGV0aGVyIHRoZSBtYW5kYXRvcnkgcmV2 aXNpb25zIGhhdmUgYmVlbiBhZGVxdWF0ZWx5IGFkZHJlc3NlZCBieSB0aGUgYXV0aG9ycyBhbmQg dGhlcmVieSBkZXRlcm1pbmVzIHRoZSBmaW5hbCBhY2NlcHQvcmVqZWN0IHN0YXR1cyBvZiB0aGUg cGFwZXIuIFRoZSBpbnRlbnQgYW5kIGV4cGVjdGF0aW9uIGlzIHRoYXQgdGhlIG1hbmRhdG9yeSBy ZXZpc2lvbnMgY2FuIGJlIGFkZHJlc3NlZCB3aXRoaW4gZml2ZSB3ZWVrcyBhbmQgaGVuY2UgdGhh dCBjb25kaXRpb25hbGx5IGFjY2VwdGVkIHBhcGVycyB3aWxsIGluIGdlbmVyYWwgYmUgYWNjZXB0 ZWQgaW4gdGhlIHNlY29uZCBwaGFzZS4KClRoZSBzZWNvbmQgc3VibWlzc2lvbiBzaG91bGQgY2xl YXJseSBpZGVudGlmeSBob3cgdGhlIG1hbmRhdG9yeSByZXZpc2lvbnMgd2VyZSBhZGRyZXNzZWQu IFRvIHRoYXQgZW5kLCB0aGUgc2Vjb25kIHN1Ym1pc3Npb24gbXVzdCBiZSBhY2NvbXBhbmllZCBi eSBhIGNvdmVyIGxldHRlciBtYXBwaW5nIGVhY2ggbWFuZGF0b3J5IHJldmlzaW9uIHJlcXVlc3Qg dG8gc3BlY2lmaWMgcGFydHMgb2YgdGhlIHBhcGVyLiBUaGUgY292ZXIgbGV0dGVyIHdpbGwgZmFj aWxpdGF0ZSBhIHF1aWNrIHNlY29uZCByZXZpZXcsIGFsbG93aW5nIGZvciBjb25maXJtYXRpb24g b2YgZmluYWwgYWNjZXB0YW5jZSB3aXRoaW4gdHdvIHdlZWtzLiBDb252ZXJzZWx5LCB0aGUgYWJz ZW5jZSBvZiBhIGNvdmVyIGxldHRlciB3aWxsIGJlIGdyb3VuZHMgZm9yIHRoZSBwYXBlcuKAmXMg cmVqZWN0aW9uLgoKVGhpcyBwcm9jZXNzIGlzIGludGVuZGVkIGFzIGEgcmVmaW5lbWVudCBvZiB0 aGUgcmV2aWV3IHByb2Nlc3MgdGhhdCBoYXMgYmVlbiB1c2VkIGluIHByZXZpb3VzIElDRlAgY29u ZmVyZW5jZXMuIEJ5IGluY29ycG9yYXRpbmcgYSBzZWNvbmQgc3RhZ2UsIHRoZSBwcm9jZXNzIHdp bGwgY29uZm9ybSB0byBBQ03igJlzIGpvdXJuYWwgcmV2aWV3aW5nIGd1aWRlbGluZXMgZm9yIFBB Q01QTC4KCioqSUNGUCAyMDE3IHdpbGwgZW1wbG95IGEgbGlnaHR3ZWlnaHQgZG91YmxlLWJsaW5k IHJldmlld2luZyBwcm9jZXNzLioqIFRvIGZhY2lsaXRhdGUgdGhpcywgc3VibWl0dGVkIHBhcGVy cyBtdXN0IGFkaGVyZSB0byB0d28gcnVsZXM6CgogIDEuICoqYXV0aG9yIG5hbWVzIGFuZCBpbnN0 aXR1dGlvbnMgbXVzdCBiZSBvbWl0dGVkKiosIGFuZAogIDIuICoqcmVmZXJlbmNlcyB0byBhdXRo b3JzJyBvd24gcmVsYXRlZCB3b3JrIHNob3VsZCBiZSBpbiB0aGUgdGhpcmQgcGVyc29uKiogKGUu Zy4sIG5vdCAiV2UgYnVpbGQgb24gb3VyIHByZXZpb3VzIHdvcmsgLi4uIiBidXQgcmF0aGVyICJX ZSBidWlsZCBvbiB0aGUgd29yayBvZiAuLi4iKS4KClRoZSBwdXJwb3NlIG9mIHRoaXMgcHJvY2Vz cyBpcyB0byBoZWxwIHRoZSBQQyBhbmQgZXh0ZXJuYWwgcmV2aWV3ZXJzIGNvbWUgdG8gYW4gaW5p dGlhbCBqdWRnZW1lbnQgYWJvdXQgdGhlIHBhcGVyIHdpdGhvdXQgYmlhcywgbm90IHRvIG1ha2Ug aXQgaW1wb3NzaWJsZSBmb3IgdGhlbSB0byBkaXNjb3ZlciB0aGUgYXV0aG9ycyBpZiB0aGV5IHdl cmUgdG8gdHJ5LiBOb3RoaW5nIHNob3VsZCBiZSBkb25lIGluIHRoZSBuYW1lIG9mIGFub255bWl0 eSB0aGF0IHdlYWtlbnMgdGhlIHN1Ym1pc3Npb24gb3IgbWFrZXMgdGhlIGpvYiBvZiByZXZpZXdp bmcgdGhlIHBhcGVyIG1vcmUgZGlmZmljdWx0IChlLmcuLCBpbXBvcnRhbnQgYmFja2dyb3VuZCBy ZWZlcmVuY2VzIHNob3VsZCBub3QgYmUgb21pdHRlZCBvciBhbm9ueW1pemVkKS4gSW4gYWRkaXRp b24sIGF1dGhvcnMgc2hvdWxkIGZlZWwgZnJlZSB0byBkaXNzZW1pbmF0ZSB0aGVpciBpZGVhcyBv ciBkcmFmdCB2ZXJzaW9ucyBvZiB0aGVpciBwYXBlciBhcyB0aGV5IG5vcm1hbGx5IHdvdWxkLiBG b3IgaW5zdGFuY2UsIGF1dGhvcnMgbWF5IHBvc3QgZHJhZnRzIG9mIHRoZWlyIHBhcGVycyBvbiB0 aGUgd2ViIG9yIGdpdmUgdGFsa3Mgb24gdGhlaXIgcmVzZWFyY2ggaWRlYXMuCgojIyMgSW5mb3Jt YXRpb24gZm9yIEF1dGhvcnMgb2YgQWNjZXB0ZWQgUGFwZXJzCgoqIEFzIGEgY29uZGl0aW9uIG9m IGFjY2VwdGFuY2UsIGZpbmFsIHZlcnNpb25zIG9mIGFsbCBwYXBlcnMgbXVzdCBhZGhlcmUgdG8g dGhlIG5ldyBBQ00gTGFyZ2UgZm9ybWF0LiBUaGUgcGFnZSBsaW1pdHMgZm9yIGZpbmFsIHZlcnNp b25zIG9mIHBhcGVycyB3aWxsIGJlIGluY3JlYXNlZCB0byBlbnN1cmUgdGhhdCBhdXRob3JzIGhh dmUgc3BhY2UgdG8gcmVzcG9uZCB0byByZXZpZXdlciBjb21tZW50cyBhbmQgbWFuZGF0b3J5IHJl dmlzaW9ucy4KCiogQXV0aG9ycyBvZiBhY2NlcHRlZCBzdWJtaXNzaW9ucyB3aWxsIGJlIHJlcXVp cmVkIHRvIGFncmVlIHRvIG9uZSBvZiB0aGUgdGhyZWUgQUNNIGxpY2Vuc2luZyBvcHRpb25zOiBj b3B5cmlnaHQgdHJhbnNmZXIgdG8gQUNNOyByZXRhaW5pbmcgY29weXJpZ2h0IGJ1dCBncmFudGlu ZyBBQ00gZXhjbHVzaXZlIHB1YmxpY2F0aW9uIHJpZ2h0czsgb3Igb3BlbiBhY2Nlc3Mgb24gcGF5 bWVudCBvZiBhIGZlZS4gIEZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgQUNNIGF1dGhvciByaWdo dHMgaXMgYXZhaWxhYmxlIGZyb20gPGh0dHA6Ly9hdXRob3JzLmFjbS5vcmc+LgoKKiBBdCBsZWFz dCBvbmUgYXV0aG9yIG9mIGVhY2ggYWNjZXB0ZWQgc3VibWlzc2lvbnMgd2lsbCBiZSBleHBlY3Rl ZCB0byBhdHRlbmQgYW5kIHByZXNlbnQgdGhlaXIgcGFwZXIgYXQgdGhlIGNvbmZlcmVuY2UuICBU aGUgc2NoZWR1bGUgZm9yIHByZXNlbnRhdGlvbnMgd2lsbCBiZSBkZXRlcm1pbmVkIGFuZCBzaGFy ZWQgd2l0aCBhdXRob3JzIGFmdGVyIHRoZSBmdWxsIHByb2dyYW0gaGFzIGJlZW4gc2VsZWN0ZWQu ICBQcmVzZW50YXRpb25zIHdpbGwgYmUgdmlkZW90YXBlZCBhbmQgcmVsZWFzZWQgb25saW5lIGlm IHRoZSBwcmVzZW50ZXIgY29uc2VudHMuCgoqIFdlIGludGVuZCB0aGF0IHRoZSBwcm9jZWVkaW5n cyB3aWxsIGJlIGZyZWVseSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGZyb20gdGhlIEFDTSBEaWdp dGFsIExpYnJhcnkgaW4gcGVycGV0dWl0eSB2aWEgdGhlIE9wZW5UT0MgbWVjaGFuaXNtLgoKKiBB Q00gQXV0aG9yLUl6ZXIgaXMgYSB1bmlxdWUgc2VydmljZSB0aGF0IGVuYWJsZXMgQUNNIGF1dGhv cnMgdG8gZ2VuZXJhdGUgYW5kIHBvc3QgbGlua3Mgb24gZWl0aGVyIHRoZWlyIGhvbWUgcGFnZSBv ciBpbnN0aXR1dGlvbmFsIHJlcG9zaXRvcnkgZm9yIHZpc2l0b3JzIHRvIGRvd25sb2FkIHRoZSBk ZWZpbml0aXZlIHZlcnNpb24gb2YgdGhlaXIgYXJ0aWNsZXMgZnJvbSB0aGUgQUNNIERpZ2l0YWwg TGlicmFyeSBhdCBubyBjaGFyZ2UuIERvd25sb2FkcyB0aHJvdWdoIEF1dGhvci1JemVyIGxpbmtz IGFyZSBjYXB0dXJlZCBpbiBvZmZpY2lhbCBBQ00gc3RhdGlzdGljcywgaW1wcm92aW5nIHRoZSBh Y2N1cmFjeSBvZiB1c2FnZSBhbmQgaW1wYWN0IG1lYXN1cmVtZW50cy4gQ29uc2lzdGVudGx5IGxp bmtpbmcgdG8gdGhlIGRlZmluaXRpdmUgdmVyc2lvbiBvZiBhbiBBQ00gYXJ0aWNsZSBzaG91bGQg cmVkdWNlIHVzZXIgY29uZnVzaW9uIG92ZXIgYXJ0aWNsZSB2ZXJzaW9uaW5nLiBBZnRlciBhbiBh cnRpY2xlIGhhcyBiZWVuIHB1Ymxpc2hlZCBhbmQgYXNzaWduZWQgdG8gdGhlIGFwcHJvcHJpYXRl IEFDTSBBdXRob3IgUHJvZmlsZSBwYWdlcywgYXV0aG9ycyBzaG91bGQgdmlzaXQgPGh0dHA6Ly93 d3cuYWNtLm9yZy9wdWJsaWNhdGlvbnMvYWNtLWF1dGhvci1pemVyLXNlcnZpY2U+IHRvIGxlYXJu IGhvdyB0byBjcmVhdGUgbGlua3MgZm9yIGZyZWUgZG93bmxvYWRzIGZyb20gdGhlIEFDTSBETC4K CiogVGhlIG9mZmljaWFsIHB1YmxpY2F0aW9uIGRhdGUgaXMgdGhlIGRhdGUgdGhlIHByb2NlZWRp bmdzIGFyZSBtYWRlIGF2YWlsYWJsZSBpbiB0aGUgQUNNIERpZ2l0YWwgTGlicmFyeS4gVGhpcyBk YXRlIG1heSBiZSB1cCB0byAqdHdvIHdlZWtzIHByaW9yKiB0byB0aGUgZmlyc3QgZGF5IG9mIHRo ZSBjb25mZXJlbmNlLiBUaGUgb2ZmaWNpYWwgcHVibGljYXRpb24gZGF0ZSBhZmZlY3RzIHRoZSBk ZWFkbGluZSBmb3IgYW55IHBhdGVudCBmaWxpbmdzIHJlbGF0ZWQgdG8gcHVibGlzaGVkIHdvcmsu CgojIyMgQXJ0aWZhY3QgRXZhbHVhdGlvbgoKQXV0aG9ycyBvZiBwYXBlcnMgdGhhdCBhcmUgY29u ZGl0aW9uYWxseSBhY2NlcHRlZCBpbiB0aGUgZmlyc3QgcGhhc2Ugb2YgdGhlIHJldmlldyBwcm9j ZXNzIHdpbGwgYmUgZW5jb3VyYWdlZCAoYnV0IG5vdCByZXF1aXJlZCkgdG8gc3VibWl0IHN1cHBv cnRpbmcgbWF0ZXJpYWxzIGZvciBBcnRpZmFjdCBFdmFsdWF0aW9uLiBUaGVzZSBpdGVtcyB3aWxs IHRoZW4gYmUgcmV2aWV3ZWQgYnkgYSBjb21taXR0ZWUsIHNlcGFyYXRlIGZyb20gdGhlIHByb2dy YW0gY29tbWl0dGVlLCB3aG9zZSB0YXNrIGlzIHRvIGFzc2VzcyBob3cgdGhlIGFydGlmYWN0cyBz dXBwb3J0IHRoZSB3b3JrIGRlc2NyaWJlZCBpbiB0aGUgYXNzb2NpYXRlZCBwYXBlci4gUGFwZXJz IHRoYXQgZ28gdGhyb3VnaCB0aGUgQXJ0aWZhY3QgRXZhbHVhdGlvbiBwcm9jZXNzIHN1Y2Nlc3Nm dWxseSB3aWxsIHJlY2VpdmUgYSBzZWFsIG9mIGFwcHJvdmFsIHByaW50ZWQgb24gdGhlIHBhcGVy cyB0aGVtc2VsdmVzLiBBdXRob3JzIG9mIGFjY2VwdGVkIHBhcGVycyB3aWxsIGJlIGVuY291cmFn ZWQgdG8gbWFrZSB0aGUgc3VwcG9ydGluZyBtYXRlcmlhbHMgcHVibGljbHkgYXZhaWxhYmxlIHVw b24gcHVibGljYXRpb24gb2YgdGhlIHByb2NlZWRpbmdzLCBmb3IgZXhhbXBsZSwgYnkgaW5jbHVk aW5nIHRoZW0gYXMgInNvdXJjZSBtYXRlcmlhbHMiIGluIHRoZSBBQ00gRGlnaXRhbCBMaWJyYXJ5 LiAgQW4gYWRkaXRpb25hbCBzZWFsIHdpbGwgbWFyayBwYXBlcnMgd2hvc2UgYXJ0aWZhY3RzIGFy ZSBtYWRlIGF2YWlsYWJsZSwgYXMgb3V0bGluZWQgaW4gdGhlIEFDTSBndWlkZWxpbmVzIGZvciBh cnRpZmFjdCBiYWRnaW5nLgoKUGFydGljaXBhdGlvbiBpbiBBcnRpZmFjdCBFdmFsdWF0aW9uIGlz IHZvbHVudGFyeSBhbmQgd2lsbCBub3QgaW5mbHVlbmNlIHRoZSBmaW5hbCBkZWNpc2lvbiByZWdh cmRpbmcgcGFwZXIgYWNjZXB0YW5jZS4KCkZ1cnRoZXIgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG1v dGl2YXRpb25zIGFuZCBleHBlY3RhdGlvbnMgZm9yIEFydGlmYWN0IEV2YWx1YXRpb24gY2FuIGJl IGZvdW5kIGF0IDxodHRwOi8vaWNmcDE3LnNpZ3BsYW4ub3JnL3RyYWNrL2ljZnAtMjAxNy1BcnRp ZmFjdHM+LgoKIyMjIFNwZWNpYWwgY2F0ZWdvcmllcyBvZiBwYXBlcnMKCkluIGFkZGl0aW9uIHRv IHJlc2VhcmNoIHBhcGVycywgSUNGUCBzb2xpY2l0cyB0d28ga2luZHMgb2YgcGFwZXJzIHRoYXQg ZG8gbm90IHJlcXVpcmUgb3JpZ2luYWwgcmVzZWFyY2ggY29udHJpYnV0aW9uczogRnVuY3Rpb25h bCBQZWFybHMsIHdoaWNoIGFyZSBmdWxsIHBhcGVycywgYW5kIEV4cGVyaWVuY2UgUmVwb3J0cywg d2hpY2ggYXJlIGxpbWl0ZWQgdG8gaGFsZiB0aGUgbGVuZ3RoIG9mIGEgZnVsbCBwYXBlci4gQXV0 aG9ycyBzdWJtaXR0aW5nIHN1Y2ggcGFwZXJzIHNob3VsZCBjb25zaWRlciB0aGUgZm9sbG93aW5n IGd1aWRlbGluZXMuCgojIyMjIEZ1bmN0aW9uYWwgUGVhcmxzCgpBIEZ1bmN0aW9uYWwgUGVhcmwg aXMgYW4gZWxlZ2FudCBlc3NheSBhYm91dCBzb21ldGhpbmcgcmVsYXRlZCB0byBmdW5jdGlvbmFs IHByb2dyYW1taW5nLiBFeGFtcGxlcyBpbmNsdWRlLCBidXQgYXJlIG5vdCBsaW1pdGVkIHRvOgoK ICAqIGEgbmV3IGFuZCB0aG91Z2h0LXByb3Zva2luZyB3YXkgb2YgbG9va2luZyBhdCBhbiBvbGQg aWRlYQoKICAqIGFuIGluc3RydWN0aXZlIGV4YW1wbGUgb2YgcHJvZ3JhbSBjYWxjdWxhdGlvbiBv ciBwcm9vZgoKICAqIGEgbmlmdHkgcHJlc2VudGF0aW9uIG9mIGFuIG9sZCBvciBuZXcgZGF0YSBz dHJ1Y3R1cmUKCiAgKiBhbiBpbnRlcmVzdGluZyBhcHBsaWNhdGlvbiBvZiBmdW5jdGlvbmFsIHBy b2dyYW1taW5nIHRlY2huaXF1ZXMKCiAgKiBhIG5vdmVsIHVzZSBvciBleHBvc2l0aW9uIG9mIGZ1 bmN0aW9uYWwgcHJvZ3JhbW1pbmcgaW4gdGhlIGNsYXNzcm9vbQoKV2hpbGUgcGVhcmxzIG9mdGVu IGRlbW9uc3RyYXRlIGFuIGlkZWEgdGhyb3VnaCB0aGUgZGV2ZWxvcG1lbnQgb2YgYSBzaG9ydCBw cm9ncmFtLCB0aGVyZSBpcyBubyByZXF1aXJlbWVudCBvciBleHBlY3RhdGlvbiB0aGF0IHRoZXkg ZG8gc28uIFRodXMsIHRoZXkgZW5jb21wYXNzIHRoZSBub3Rpb25zIG9mIHRoZW9yZXRpY2FsIGFu ZCBlZHVjYXRpb25hbCBwZWFybHMuCgpGdW5jdGlvbmFsIFBlYXJscyBhcmUgdmFsdWVkIGFzIGhp Z2hseSBhbmQganVkZ2VkIGFzIHJpZ29yb3VzbHkgYXMgb3JkaW5hcnkgcGFwZXJzLCBidXQgdXNp bmcgc29tZXdoYXQgZGlmZmVyZW50IGNyaXRlcmlhLiBJbiBwYXJ0aWN1bGFyLCBhIHBlYXJsIGlz IG5vdCByZXF1aXJlZCB0byByZXBvcnQgb3JpZ2luYWwgcmVzZWFyY2gsIGJ1dCwgaXQgc2hvdWxk IGJlIGNvbmNpc2UsIGluc3RydWN0aXZlLCBhbmQgZW50ZXJ0YWluaW5nLiBBIHBlYXJsIGlzIGxp a2VseSB0byBiZSByZWplY3RlZCBpZiBpdHMgcmVhZGVycyBnZXQgYm9yZWQsIGlmIHRoZSBtYXRl cmlhbCBnZXRzIHRvbyBjb21wbGljYXRlZCwgaWYgdG9vIG11Y2ggc3BlY2lhbGl6ZWQga25vd2xl ZGdlIGlzIG5lZWRlZCwgb3IgaWYgdGhlIHdyaXRpbmcgaXMgaW5lbGVnYW50LiBUaGUga2V5IHRv IHdyaXRpbmcgYSBnb29kIHBlYXJsIGlzIHBvbGlzaGluZy4KCkEgc3VibWlzc2lvbiB0aGF0IGlz IGludGVuZGVkIHRvIGJlIHRyZWF0ZWQgYXMgYSBwZWFybCBtdXN0IGJlIG1hcmtlZCBhcyBzdWNo IG9uIHRoZSBzdWJtaXNzaW9uIHdlYiBwYWdlLCBhbmQgc2hvdWxkIGNvbnRhaW4gdGhlIHdvcmRz ICJGdW5jdGlvbmFsIFBlYXJsIiBzb21ld2hlcmUgaW4gaXRzIHRpdGxlIG9yIHN1YnRpdGxlLiBU aGVzZSBzdGVwcyB3aWxsIGFsZXJ0IHJldmlld2VycyB0byB1c2UgdGhlIGFwcHJvcHJpYXRlIGV2 YWx1YXRpb24gY3JpdGVyaWEuIFBlYXJscyB3aWxsIGJlIGNvbWJpbmVkIHdpdGggb3JkaW5hcnkg cGFwZXJzLCBob3dldmVyLCBmb3IgdGhlIHB1cnBvc2Ugb2YgY29tcHV0aW5nIHRoZSBjb25mZXJl bmNlJ3MgYWNjZXB0YW5jZSByYXRlLgoKIyMjIyBFeHBlcmllbmNlIFJlcG9ydHMKClRoZSBwdXJw b3NlIG9mIGFuIEV4cGVyaWVuY2UgUmVwb3J0IGlzIHRvIGhlbHAgY3JlYXRlIGEgYm9keSBvZiBw dWJsaXNoZWQsIHJlZmVyZWVkLCBjaXRhYmxlIGV2aWRlbmNlIHRoYXQgZnVuY3Rpb25hbCBwcm9n cmFtbWluZyByZWFsbHkgd29ya3MgJm1kYXNoOyBvciB0byBkZXNjcmliZSB3aGF0IG9ic3RhY2xl cyBwcmV2ZW50IGl0IGZyb20gd29ya2luZy4KClBvc3NpYmxlIHRvcGljcyBmb3IgYW4gRXhwZXJp ZW5jZSBSZXBvcnQgaW5jbHVkZSwgYnV0IGFyZSBub3QgbGltaXRlZCB0bzoKCiAgKiBpbnNpZ2h0 cyBnYWluZWQgZnJvbSByZWFsLXdvcmxkIHByb2plY3RzIHVzaW5nIGZ1bmN0aW9uYWwgcHJvZ3Jh bW1pbmcKCiAgKiBjb21wYXJpc29uIG9mIGZ1bmN0aW9uYWwgcHJvZ3JhbW1pbmcgd2l0aCBjb252 ZW50aW9uYWwgcHJvZ3JhbW1pbmcgaW4gdGhlIGNvbnRleHQgb2YgYW4gaW5kdXN0cmlhbCBwcm9q ZWN0IG9yIGEgdW5pdmVyc2l0eSBjdXJyaWN1bHVtCgogICogcHJvamVjdC1tYW5hZ2VtZW50LCBi dXNpbmVzcywgb3IgbGVnYWwgaXNzdWVzIGVuY291bnRlcmVkIHdoZW4gdXNpbmcgZnVuY3Rpb25h bCBwcm9ncmFtbWluZyBpbiBhIHJlYWwtd29ybGQgcHJvamVjdAoKICAqIGN1cnJpY3VsYXIgaXNz dWVzIGVuY291bnRlcmVkIHdoZW4gdXNpbmcgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyBpbiBlZHVj YXRpb24KCiAgKiByZWFsLXdvcmxkIGNvbnN0cmFpbnRzIHRoYXQgY3JlYXRlZCBzcGVjaWFsIGNo YWxsZW5nZXMgZm9yIGFuIGltcGxlbWVudGF0aW9uIG9mIGEgZnVuY3Rpb25hbCBsYW5ndWFnZSBv ciBmb3IgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyBpbiBnZW5lcmFsCgpBbiBFeHBlcmllbmNlIFJl cG9ydCBpcyBkaXN0aW5ndWlzaGVkIGZyb20gYSBub3JtYWwgSUNGUCBwYXBlciBieSBpdHMgdGl0 bGUsIGJ5IGl0cyBsZW5ndGgsIGFuZCBieSB0aGUgY3JpdGVyaWEgdXNlZCB0byBldmFsdWF0ZSBp dC4KCiAgKiBCb3RoIGluIHRoZSBwcm9jZWVkaW5ncyBhbmQgaW4gYW55IGNpdGF0aW9ucywgdGhl IHRpdGxlIG9mIGVhY2ggYWNjZXB0ZWQgRXhwZXJpZW5jZSBSZXBvcnQgbXVzdCBiZWdpbiB3aXRo IHRoZSB3b3JkcyAiRXhwZXJpZW5jZSBSZXBvcnQiIGZvbGxvd2VkIGJ5IGEgY29sb24uIFRoZSBh Y2NlcHRhbmNlIHJhdGUgZm9yIEV4cGVyaWVuY2UgUmVwb3J0cyB3aWxsIGJlIGNvbXB1dGVkIGFu ZCByZXBvcnRlZCBzZXBhcmF0ZWx5IGZyb20gdGhlIHJhdGUgZm9yIG9yZGluYXJ5IHBhcGVycy4K ICAKICAqIEV4cGVyaWVuY2UgUmVwb3J0IHN1Ym1pc3Npb25zIGNhbiBiZSBhdCBtb3N0IDEyIHBh Z2VzIGxvbmcsIGV4Y2x1ZGluZyBiaWJsaW9ncmFwaHkuCgogICogRWFjaCBhY2NlcHRlZCBFeHBl cmllbmNlIFJlcG9ydCB3aWxsIGJlIHByZXNlbnRlZCBhdCB0aGUgY29uZmVyZW5jZSwgYnV0IGRl cGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIEV4cGVyaWVuY2UgUmVwb3J0cyBhbmQgcmVndWxhciBw YXBlcnMgYWNjZXB0ZWQsIGF1dGhvcnMgb2YgRXhwZXJpZW5jZSByZXBvcnRzIG1heSBiZSBhc2tl ZCB0byBnaXZlIHNob3J0ZXIgdGFsa3MuCiAgCiAgKiBCZWNhdXNlIHRoZSBwdXJwb3NlIG9mIEV4 cGVyaWVuY2UgUmVwb3J0cyBpcyB0byBlbmFibGUgb3VyIGNvbW11bml0eSB0byBhY2N1bXVsYXRl IGEgYm9keSBvZiBldmlkZW5jZSBhYm91dCB0aGUgZWZmaWNhY3kgb2YgZnVuY3Rpb25hbCBwcm9n cmFtbWluZywgYW4gYWNjZXB0YWJsZSBFeHBlcmllbmNlIFJlcG9ydCBuZWVkIG5vdCBhZGQgdG8g dGhlIGJvZHkgb2Yga25vd2xlZGdlIG9mIHRoZSBmdW5jdGlvbmFsLXByb2dyYW1taW5nIGNvbW11 bml0eSBieSBwcmVzZW50aW5nIG5vdmVsIHJlc3VsdHMgb3IgY29uY2x1c2lvbnMuIEl0IGlzIHN1 ZmZpY2llbnQgaWYgdGhlIFJlcG9ydCBzdGF0ZXMgYSBjbGVhciB0aGVzaXMgYW5kIHByb3ZpZGVz IHN1cHBvcnRpbmcgZXZpZGVuY2UuIFRoZSB0aGVzaXMgbXVzdCBiZSByZWxldmFudCB0byBJQ0ZQ LCBidXQgaXQgbmVlZCBub3QgYmUgbm92ZWwuCgpUaGUgcHJvZ3JhbSBjb21taXR0ZWUgd2lsbCBh Y2NlcHQgb3IgcmVqZWN0IEV4cGVyaWVuY2UgUmVwb3J0cyBiYXNlZCBvbiB3aGV0aGVyIHRoZXkg anVkZ2UgdGhlIGV2aWRlbmNlIHRvIGJlIGNvbnZpbmNpbmcuIEFuZWNkb3RhbCBldmlkZW5jZSB3 aWxsIGJlIGFjY2VwdGFibGUgcHJvdmlkZWQgaXQgaXMgd2VsbCBhcmd1ZWQgYW5kIHRoZSBhdXRo b3IgZXhwbGFpbnMgd2hhdCBlZmZvcnRzIHdlcmUgbWFkZSB0byBnYXRoZXIgYXMgbXVjaCBldmlk ZW5jZSBhcyBwb3NzaWJsZS4gVHlwaWNhbGx5LCBtb3JlIGNvbnZpbmNpbmcgZXZpZGVuY2UgaXMg b2J0YWluZWQgZnJvbSBwYXBlcnMgd2hpY2ggc2hvdyBob3cgZnVuY3Rpb25hbCBwcm9ncmFtbWlu ZyB3YXMgdXNlZCB0aGFuIGZyb20gcGFwZXJzIHdoaWNoIG9ubHkgc2F5IHRoYXQgZnVuY3Rpb25h bCBwcm9ncmFtbWluZyB3YXMgdXNlZC4gVGhlIG1vc3QgY29udmluY2luZyBldmlkZW5jZSBvZnRl biBpbmNsdWRlcyBjb21wYXJpc29ucyBvZiBzaXR1YXRpb25zIGJlZm9yZSBhbmQgYWZ0ZXIgdGhl IGludHJvZHVjdGlvbiBvciBkaXNjb250aW51YXRpb24gb2YgZnVuY3Rpb25hbCBwcm9ncmFtbWlu Zy4gRXZpZGVuY2UgZHJhd24gZnJvbSBhIHNpbmdsZSBwZXJzb24ncyBleHBlcmllbmNlIG1heSBi ZSBzdWZmaWNpZW50LCBidXQgbW9yZSB3ZWlnaHQgd2lsbCBiZSBnaXZlbiB0byBldmlkZW5jZSBk cmF3biBmcm9tIHRoZSBleHBlcmllbmNlIG9mIGdyb3VwcyBvZiBwZW9wbGUuCgpBbiBFeHBlcmll bmNlIFJlcG9ydCBzaG91bGQgYmUgc2hvcnQgYW5kIHRvIHRoZSBwb2ludDogaXQgc2hvdWxkIG1h a2UgYSBjbGFpbSBhYm91dCBob3cgd2VsbCBmdW5jdGlvbmFsIHByb2dyYW1taW5nIHdvcmtlZCBv biBhIHBhcnRpY3VsYXIgcHJvamVjdCBhbmQgd2h5LCBhbmQgcHJvZHVjZSBldmlkZW5jZSB0byBz dWJzdGFudGlhdGUgdGhpcyBjbGFpbS4gSWYgZnVuY3Rpb25hbCBwcm9ncmFtbWluZyB3b3JrZWQg aW4gdGhpcyBjYXNlIGluIHRoZSBzYW1lIHdheXMgaXQgaGFzIHdvcmtlZCBmb3Igb3RoZXJzLCB0 aGUgcGFwZXIgbmVlZCBvbmx5IHN1bW1hcml6ZSB0aGUgcmVzdWx0cyAmbWRhc2g7IHRoZSBtYWlu IHBhcnQgb2YgdGhlIHBhcGVyIHNob3VsZCBkaXNjdXNzIGhvdyB3ZWxsIGl0IHdvcmtlZCBhbmQg aW4gd2hhdCBjb250ZXh0LiBNb3N0IHJlYWRlcnMgd2lsbCBub3Qgd2FudCB0byBrbm93IGFsbCB0 aGUgZGV0YWlscyBvZiB0aGUgcHJvamVjdCBhbmQgaXRzIGltcGxlbWVudGF0aW9uLCBidXQgdGhl IHBhcGVyIHNob3VsZCBjaGFyYWN0ZXJpemUgdGhlIHByb2plY3QgYW5kIGl0cyBjb250ZXh0IHdl bGwgZW5vdWdoIHNvIHRoYXQgcmVhZGVycyBjYW4ganVkZ2UgdG8gd2hhdCBkZWdyZWUgdGhpcyBl eHBlcmllbmNlIGlzIHJlbGV2YW50IHRvIHRoZWlyIG93biBwcm9qZWN0cy4gVGhlIHBhcGVyIHNo b3VsZCB0YWtlIGNhcmUgdG8gaGlnaGxpZ2h0IGFueSB1bnVzdWFsIGFzcGVjdHMgb2YgdGhlIHBy b2plY3QuIFNwZWNpZmljcyBhYm91dCB0aGUgcHJvamVjdCBhcmUgbW9yZSB2YWx1YWJsZSB0aGFu IGdlbmVyYWxpdGllcyBhYm91dCBmdW5jdGlvbmFsIHByb2dyYW1taW5nOyBmb3IgZXhhbXBsZSwg aXQgaXMgbW9yZSB2YWx1YWJsZSB0byBzYXkgdGhhdCB0aGUgdGVhbSBkZWxpdmVyZWQgaXRzIHNv ZnR3YXJlIGEgbW9udGggYWhlYWQgb2Ygc2NoZWR1bGUgdGhhbiBpdCBpcyB0byBzYXkgdGhhdCBm dW5jdGlvbmFsIHByb2dyYW1taW5nIG1hZGUgdGhlIHRlYW0gbW9yZSBwcm9kdWN0aXZlLgoKSWYg dGhlIHBhcGVyIG5vdCBvbmx5IGRlc2NyaWJlcyBleHBlcmllbmNlIGJ1dCBhbHNvIHByZXNlbnRz IG5ldyB0ZWNobmljYWwgcmVzdWx0cywgb3IgaWYgdGhlIGV4cGVyaWVuY2UgcmVmdXRlcyBjaGVy aXNoZWQgYmVsaWVmcyBvZiB0aGUgZnVuY3Rpb25hbC1wcm9ncmFtbWluZyBjb21tdW5pdHksIGl0 IG1heSBiZSBiZXR0ZXIgb2ZmIHN1Ym1pdHRlZCBpdCBhcyBhIGZ1bGwgcGFwZXIsIHdoaWNoIHdp bGwgYmUganVkZ2VkIGJ5IHRoZSB1c3VhbCBjcml0ZXJpYSBvZiBub3ZlbHR5LCBvcmlnaW5hbGl0 eSwgYW5kIHJlbGV2YW5jZS4gVGhlIHByb2dyYW0gY2hhaXIgd2lsbCBiZSBoYXBweSB0byBhZHZp c2Ugb24gYW55IGNvbmNlcm5zIGFib3V0IHdoaWNoIGNhdGVnb3J5IHRvIHN1Ym1pdCB0by4KCiMj IyBPcmdhbml6ZXJzCgpHZW5lcmFsIENoYWlyOiBKZXJlbXkgR2liYm9ucyAoVW5pdmVyc2l0eSBv ZiBPeGZvcmQsIFVLKQpQcm9ncmFtIENoYWlyOiBNYXJrIEpvbmVzIChQb3J0bGFuZCBTdGF0ZSBV bml2ZXJzaXR5LCBVU0EpCgpBcnRpZmFjdCBFdmFsdWF0aW9uIENoYWlyOiBSeWFuIFIuIE5ld3Rv biAoSW5kaWFuYSBVbml2ZXJzaXR5LCBVU0EpCkluZHVzdHJpYWwgUmVsYXRpb25zIENoYWlyOiBS eWFuIFRyaW5rbGUgKE9ic2lkaWFuIFN5c3RlbXMgTExDLCBVU0EpClByb2dyYW1taW5nIENvbnRl c3QgT3JnYW5pc2VyOiBTYW0gTGluZGxleSAoVW5pdmVyc2l0eSBvZiBFZGluYnVyZ2gsIFVLKQpQ dWJsaWNpdHkgYW5kIFdlYiBDaGFpcjogTGluZHNleSBLdXBlciAoSW50ZWwgTGFicywgVVNBKQpT dHVkZW50IFJlc2VhcmNoIENvbXBldGl0aW9uIENoYWlyOiBJbHlhIFNlcmdleSAoVW5pdmVyc2l0 eSBDb2xsZWdlIExvbmRvbiwgVUspClZpZGVvIENoYWlyOiBKb3NlIENhbGRlcm9uIChHYWxvaXMs IEluYy4sIFVTQSkKV29ya3Nob3BzIENvLUNoYWlyOiBBbmRyZXMgTMO2aCAoV2VsbC1UeXBlZCBM TFApCldvcmtzaG9wcyBDby1DaGFpcjogRGF2aWQgQ2hyaXN0aWFuc2VuIChJbmRpYW5hIFVuaXZl cnNpdHksIFVTQSkKClByb2dyYW0gQ29tbWl0dGVlOgoKQm9iIEF0a2V5IChVbml2ZXJzaXR5IG9m IFN0cmF0aGNseWRlLCBTY290bGFuZCkKQWRhbSBDaGxpcGFsYSAoTUlULCBVU0EpCkRvbWluaXF1 ZSBEZXZyaWVzZSAoS1UgTGV1dmVuLCBCZWxnaXVtKQpNYXJ0aW4gRXJ3aWcgKE9yZWdvbiBTdGF0 ZSwgVVNBKQpNYXR0aGV3IEZsYXR0IChVbml2ZXJzaXR5IG9mIFV0YWgsIFVTQSkKUm9uYWxkIEdh cmNpYSAoVW5pdmVyc2l0eSBvZiBCcml0aXNoIENvbHVtYmlhLCBDYW5hZGEpCkthdGhyeW4gR3Jh eSAoVW5pdmVyc2l0eSBvZiBDYW1icmlkZ2UsIEVuZ2xhbmQpCkpvaG4gSHVnaGVzIChDaGFsbWVy cyBVbml2ZXJzaXR5IGFuZCBRdXZpaywgU3dlZGVuKQpDaHVuZy1LaWwgSHVyIChTZW91bCBOYXRp b25hbCBVbml2ZXJzaXR5LCBLb3JlYSkKR3JhaGFtIEh1dHRvbiAoVW5pdmVyc2l0eSBvZiBOb3R0 aW5naGFtLCBFbmdsYW5kKQpBbGFuIEplZmZyZXkgKE1vemlsbGEgUmVzZWFyY2gsIFVTQSkKUmFu aml0IEpoYWxhIChVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIFNhbiBEaWVnbywgVVNBKQpTaGlu LXlhIEthdHN1bWF0YSAoS3lvdG8gVW5pdmVyc2l0eSwgSmFwYW4pCkxpbmRzZXkgS3VwZXIgKElu dGVsIExhYnMsIFVTQSkKRGFuIExpY2F0YSAoV2VzbGV5YW4gVW5pdmVyc2l0eSwgVVNBKQpCZW4g TGlwcG1laWVyIChEaWdpdGFsIEFzc2V0LCBBdXN0cmFsaWEpCkdhYnJpZWwgU2NoZXJlciAoTm9y dGhlYXN0ZXJuIFVuaXZlcnNpdHksIFVTQSkKQWxleGFuZHJhIFNpbHZhIChVbml2ZXJzaXR5IENv bGxlZ2UgTG9uZG9uLCBFbmdsYW5kKQpOaWtoaWwgU3dhbXkgKE1pY3Jvc29mdCBSZXNlYXJjaCwg VVNBKQpTYW0gVG9iaW4tSG9jaHN0YWR0IChJbmRpYW5hIFVuaXZlcnNpdHksIFVTQSkKTmljb2xh cyBXdSAoVW5pdmVyc2l0eSBvZiBCcmlzdG9sLCBFbmdsYW5kKQpCZXRhIFppbGlhbmkgKENPTklD RVQgYW5kIEZBTUFGLCBVbml2ZXJzaWRhZCBOYWNpb25hbCBkZSBDw7NyZG9iYSwgQXJnZW50aW5h KQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTHByb2xv ZyBtYWlsaW5nIGxpc3QKTHByb2xvZ0Bjcy51bW4uZWR1Cmh0dHBzOi8vd3d3cy5jcy51bW4uZWR1 L21tLWNzL2xpc3RpbmZvL2xwcm9sb2c=