CLSQL Postgresql additions
Andrew Golding <andy-QKmEoyqQnbRWk0Htik3J/[email protected]> Mon, 16 Oct 2006 13:33:03 -0500
| Newsgroups | gmane.lisp.clsql.devel |
|---|---|
| Organization | OnShore Inc. |
| Message-ID | <[email protected]> |
--=-tUA1ynThxubAIDVM+c9W Content-Type: text/plain Content-Transfer-Encoding: 7bit Hello: I've noticed that the error-id slot for the condition sql-database-data-error while using Postgres does not actually contain the 5-letter SQL error code specified by http://www.postgresql.org/docs/8.1/interactive/errcodes-appendix.html (and apparently to some degree the SQL spec), but rather the integer status code for the result set. Since the status code for fatal error is always 7, the error-id slot will always be 7. Setting error-id to the SQL error code (which can be done by calling PQresultErrorField with the result set and the constant PG_DIAG_SQLSTATE (equal to ascii character code for capitol C, specified in postgres_ext.h) is accomplished within the three files attached to this message. Postgresql-api.lisp contains the new UFFI function definition for PQresultErrorField and constants defined for each possible value for the field code argument. Postgresql-package.lisp exports the new function along with the constant +PG-DIAG-SQLSTATE+ (the only constant we are interested in at the moment). Postgresql-sql.lisp is changed so that when the sql-database-data-error is generated as the result of a bad sql command, error-id is set to the error code instead of the result status code. These changes allow application code which handles errors to discern between a constraint violation causing an sql-database-data-error and something more sinister (such as a disk being full or the data center where the machine is hosted being on fire). Let me know if there are any questions. The following changes started with files from CLSQL 3.7.4 Regards Andrew Golding --=-tUA1ynThxubAIDVM+c9W Content-Disposition: attachment; filename=postgresql-api.lisp Content-Type: text/plain; name=postgresql-api.lisp; charset=UTF-8 Content-Transfer-Encoding: base64 Ozs7OyAtKi0gTW9kZTogTElTUDsgU3ludGF4OiBBTlNJLUNvbW1vbi1MaXNwOyBCYXNlOiAxMCAt Ki0NCjs7OzsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKg0KOzs7OyBGSUxFIElERU5USUZJQ0FUSU9ODQo7Ozs7 DQo7Ozs7IE5hbWU6ICAgICAgICAgIHBvc3RncmVzcWwuY2wNCjs7OzsgUHVycG9zZTogICAgICAg TG93LWxldmVsIFBvc3RncmVTUUwgaW50ZXJmYWNlIHVzaW5nIFVGRkkNCjs7OzsgUHJvZ3JhbW1l cnM6ICAgS2V2aW4gTS4gUm9zZW5iZXJnIGJhc2VkIG9uIA0KOzs7OyAgICAgICAgICAgICAgICBP cmlnaW5hbCBjb2RlIGJ5IFBpZXJyZSBSLiBNYWkgDQo7Ozs7IERhdGUgU3RhcnRlZDogIEZlYiAy MDAyDQo7Ozs7DQo7Ozs7ICRJZDogcG9zdGdyZXNxbC1hcGkubGlzcCAxMDA3NyAyMDA0LTEwLTAx IDE3OjAyOjIwWiBrZXZpbiAkDQo7Ozs7DQo7Ozs7IFRoaXMgZmlsZSwgcGFydCBvZiBDTFNRTCwg aXMgQ29weXJpZ2h0IChjKSAyMDAyIGJ5IEtldmluIE0uIFJvc2VuYmVyZw0KOzs7OyBhbmQgQ29w eXJpZ2h0IChjKSAxOTk5LTIwMDEgYnkgUGllcnJlIFIuIE1haQ0KOzs7Ow0KOzs7OyBDTFNRTCB1 c2VycyBhcmUgZ3JhbnRlZCB0aGUgcmlnaHRzIHRvIGRpc3RyaWJ1dGUgYW5kIHVzZSB0aGlzIHNv ZnR3YXJlDQo7Ozs7IGFzIGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGUgTGlzcCBMZXNzZXIg R05VIFB1YmxpYyBMaWNlbnNlDQo7Ozs7IChodHRwOi8vb3BlbnNvdXJjZS5mcmFuei5jb20vcHJl YW1ibGUuaHRtbCksIGFsc28ga25vd24gYXMgdGhlIExMR1BMLg0KOzs7OyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqDQoNCihpbi1wYWNrYWdlICM6cG9zdGdyZXNxbCkNCg0KDQo7Ozs7IFRoaXMgZmlsZSBpbXBs ZW1lbnRzIGFzIGxpdHRsZSBvZiB0aGUgRkZJIGJpbmRpbmdzIHRvIHRoZQ0KOzs7OyBQb3N0Z3Jl U1FMIGNsaWVudCBsaWJyYXJpZXMgYXMgd2UgY291bGQgZ2V0IGF3YXkgd2l0aC4NCjs7OzsgRXNw ZWNpYWxseSBhbGwgdGhlIFBvc3RncmVTUUwtc3BlY2lmaWMgZ29vZGllcyBhcmVuJ3QgdGhlcmUs IGFuZA0KOzs7OyB3ZSBqdXN0IHVzZSB2b2lkIHBvaW50ZXJzIHdoZXJlIHdlIGNhbiBnZXQgYXdh eSB3aXRoIGl0LCB3aGljaA0KOzs7OyB0aGFua3MgdG8gdGhlIGRlc2lnbiBvZiB0aGUgUG9zdGdy ZVNRTCBjbGllbnQgbGlicmFyaWVzIGlzIHByZXR0eQ0KOzs7OyBtdWNoIGV2ZXJ5d2hlcmUsIGlu IGNvbnRyYXN0IHRvIHRoZSBNeVNRTCBjbGllbnQgbGlicmFyaWVzIGZvcg0KOzs7OyBleGFtcGxl Lg0KDQo7Ozs7IFR5cGUgZGVmaW5pdGlvbnMNCg0KOzs7IEJhc2ljIFR5cGVzDQoNCih1ZmZpOmRl Zi1mb3JlaWduLXR5cGUgcGdzcWwtb2lkIDp1bnNpZ25lZC1pbnQpDQoNCih1ZmZpOmRlZi1lbnVt IHBnc3FsLWNvbm4tc3RhdHVzLXR5cGUgDQogICAgKDpjb25uZWN0aW9uLW9rDQogICAgIDpjb25u ZWN0aW9uLWJhZCkpDQoNCih1ZmZpOmRlZi1lbnVtIHBnc3FsLWV4ZWMtc3RhdHVzLXR5cGUNCiAg ICAoOmVtcHR5LXF1ZXJ5DQogICAgIDpjb21tYW5kLW9rDQogICAgIDp0dXBsZXMtb2sNCiAgICAg OmNvcHktb3V0DQogICAgIDpjb3B5LWluDQogICAgIDpiYWQtcmVzcG9uc2UNCiAgICAgOm5vbmZh dGFsLWVycm9yDQogICAgIDpmYXRhbC1lcnJvcikpDQoNCih1ZmZpOmRlZi1mb3JlaWduLXR5cGUg cGdzcWwtY29ubiA6cG9pbnRlci12b2lkKQ0KKHVmZmk6ZGVmLWZvcmVpZ24tdHlwZSBwZ3NxbC1y ZXN1bHQgOnBvaW50ZXItdm9pZCkNCg0KKHVmZmk6ZGVmLXR5cGUgcGdzcWwtY29ubi1wdHIgOnBv aW50ZXItdm9pZCkNCg0KKHVmZmk6ZGVmLWVudW0gcGdzcWwtZnR5cGUNCiAgICAoKDpieXRlYSAx NykNCiAgICAgKDppbnQyIDIxKQ0KICAgICAoOmludDQgMjMpDQogICAgICg6aW50OCAyMCkNCiAg ICAgKDpmbG9hdDQgNzAwKQ0KICAgICAoOmZsb2F0OCA3MDEpKSkNCiAgDQo7OyhkZWNsYWltIChp bmxpbmUgUFFzZXRkYkxvZ2luKSkgOzsgY2F1c2VzIGNvbXBpbGUgZXJyb3IgaW4gTFcgNC4yLjAN Cih1ZmZpOmRlZi1mdW5jdGlvbiAoIlBRc2V0ZGJMb2dpbiIgUFFzZXRkYkxvZ2luKQ0KICAoKHBn aG9zdCA6Y3N0cmluZykNCiAgIChwZ3BvcnQgOmNzdHJpbmcpDQogICAocGdvcHRpb25zIDpjc3Ry aW5nKQ0KICAgKHBndHR5IDpjc3RyaW5nKQ0KICAgKGRiTmFtZSA6Y3N0cmluZykNCiAgIChsb2dp biA6Y3N0cmluZykNCiAgIChwd2QgOmNzdHJpbmcpKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0K ICA6cmV0dXJuaW5nIHBnc3FsLWNvbm4pDQoNCihkZWNsYWltIChpbmxpbmUgUFFmaW5pc2gpKQ0K KHVmZmk6ZGVmLWZ1bmN0aW9uICgiUFFmaW5pc2giIFBRZmluaXNoKQ0KICAoKGNvbm4gcGdzcWwt Y29ubikpDQogIDptb2R1bGUgInBvc3RncmVzcWwiDQogIDpyZXR1cm5pbmcgOnZvaWQpDQoNCihk ZWNsYWltIChpbmxpbmUgUFFzdGF0dXMpKQ0KKHVmZmk6ZGVmLWZ1bmN0aW9uICgiUFFzdGF0dXMi IFBRc3RhdHVzKQ0KICAoKGNvbm4gcGdzcWwtY29ubikpDQogIDptb2R1bGUgInBvc3RncmVzcWwi DQogIDpyZXR1cm5pbmcgcGdzcWwtY29ubi1zdGF0dXMtdHlwZSkNCg0KKGRlY2xhaW0gKGlubGlu ZSBQUWVycm9yTWVzc2FnZSkpDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJQUWVycm9yTWVzc2FnZSIg UFFlcnJvck1lc3NhZ2UpDQogICgoY29ubiBwZ3NxbC1jb25uKSkNCiAgOm1vZHVsZSAicG9zdGdy ZXNxbCINCiAgOnJldHVybmluZyA6Y3N0cmluZykNCg0KKGRlY2xhaW0gKGlubGluZSBQUWV4ZWMp KQ0KKHVmZmk6ZGVmLWZ1bmN0aW9uICgiUFFleGVjIiBQUWV4ZWMpDQogICgoY29ubiBwZ3NxbC1j b25uKQ0KICAgKHF1ZXJ5IDpjc3RyaW5nKSkNCiAgOm1vZHVsZSAicG9zdGdyZXNxbCINCiAgOnJl dHVybmluZyBwZ3NxbC1yZXN1bHQpDQoNCihkZWNsYWltIChpbmxpbmUgUFFyZXN1bHRTdGF0dXMp KQ0KKHVmZmk6ZGVmLWZ1bmN0aW9uICgiUFFyZXN1bHRTdGF0dXMiIFBRcmVzdWx0U3RhdHVzKQ0K ICAoKHJlcyBwZ3NxbC1yZXN1bHQpKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6cmV0dXJu aW5nIHBnc3FsLWV4ZWMtc3RhdHVzLXR5cGUpDQoNCjsgRnJvbSBwb3N0Z3Jlc19leHQuaA0KDQo7 ICNkZWZpbmUgUEdfRElBR19TRVZFUklUWSAgICAgICAgICAgICAgICAnUycNCjsgI2RlZmluZSBQ R19ESUFHX1NRTFNUQVRFICAgICAgICAgICAgICAgICdDJw0KOyAjZGVmaW5lIFBHX0RJQUdfTUVT U0FHRV9QUklNQVJZICdNJw0KOyAjZGVmaW5lIFBHX0RJQUdfTUVTU0FHRV9ERVRBSUwgICdEJw0K OyAjZGVmaW5lIFBHX0RJQUdfTUVTU0FHRV9ISU5UICAgICdIJw0KOyAjZGVmaW5lIFBHX0RJQUdf U1RBVEVNRU5UX1BPU0lUSU9OICdQJw0KOyAjZGVmaW5lIFBHX0RJQUdfSU5URVJOQUxfUE9TSVRJ T04gJ3AnDQo7ICNkZWZpbmUgUEdfRElBR19JTlRFUk5BTF9RVUVSWSAgJ3EnDQo7ICNkZWZpbmUg UEdfRElBR19DT05URVhUICAgICAgICAgICAgICAgICAnVycNCjsgI2RlZmluZSBQR19ESUFHX1NP VVJDRV9GSUxFICAgICAgICAgICAgICdGJw0KOyAjZGVmaW5lIFBHX0RJQUdfU09VUkNFX0xJTkUg ICAgICAgICAgICAgJ0wnDQo7ICNkZWZpbmUgUEdfRElBR19TT1VSQ0VfRlVOQ1RJT04gJ1InDQoo ZGVmY29uc3RhbnQgK1BHLURJQUctU0VWRVJJVFkrIChjaGFyLWNvZGUgI1xTKSkNCihkZWZjb25z dGFudCArUEctRElBRy1TUUxTVEFURSsgKGNoYXItY29kZSAjXEMpKQ0KKGRlZmNvbnN0YW50ICtQ Ry1ESUFHLU1FU1NBR0UtUFJJTUFSWSsgKGNoYXItY29kZSAjXE0pKQ0KKGRlZmNvbnN0YW50ICtQ Ry1ESUFHLU1FU1NBR0UtREVUQUlMKyAoY2hhci1jb2RlICNcRCkpDQooZGVmY29uc3RhbnQgK1BH LURJQUctTUVTU0FHRS1ISU5UKyAoY2hhci1jb2RlICNcSCkpDQooZGVmY29uc3RhbnQgK1BHLURJ QUctU1RBVEVNRU5ULVBPU0lUSU9OKyAoY2hhci1jb2RlICNcUCkpDQooZGVmY29uc3RhbnQgK1BH LURJQUctSU5URVJOQUwtUE9TSVRJT04rIChjaGFyLWNvZGUgI1xwKSkNCihkZWZjb25zdGFudCAr UEctRElBRy1JTlRFUk5BTC1RVUVSWSsgKGNoYXItY29kZSAjXHEpKQ0KKGRlZmNvbnN0YW50ICtQ Ry1ESUFHLUNPTlRFWFQrIChjaGFyLWNvZGUgI1xXKSkNCihkZWZjb25zdGFudCArUEctRElBRy1T T1VSQ0UtRklMRSsgKGNoYXItY29kZSAjXEYpKQ0KKGRlZmNvbnN0YW50ICtQRy1ESUFHLVNPVVJD RS1MSU5FKyAoY2hhci1jb2RlICNcTCkpDQooZGVmY29uc3RhbnQgK1BHLURJQUctU09VUkNFLUZV TkNUSU9OKyAoY2hhci1jb2RlICNcUikpDQoNCjsgUFFyZXN1bHRFcnJvckZpZWxkIGNhbiByZXR1 cm4gZGlhZ25vc3RpYyBpbmZvcm1hdGlvbiBhYm91dCBhbiBlcnJvcg0KKGRlY2xhaW0gKGlubGlu ZSBQUXJlc3VsdEVycm9yRmllbGQpKQ0KKHVmZmk6ZGVmLWZ1bmN0aW9uICgiUFFyZXN1bHRFcnJv ckZpZWxkIiBQUXJlc3VsdEVycm9yRmllbGQpDQogICAgKChyZXMgcGdzcWwtcmVzdWx0KQ0KICAg ICAoZmllbGQtY29kZSA6aW50KSkNCiAgOm1vZHVsZSAicG9zdGdyZXNxbCINCiAgOnJldHVybmlu ZyAoKiBjaGFyKSkNCg0KKGRlY2xhaW0gKGlubGluZSBQUXJlc3VsdEVycm9yTWVzc2FnZSkpDQoo dWZmaTpkZWYtZnVuY3Rpb24gKCJQUXJlc3VsdEVycm9yTWVzc2FnZSIgUFFyZXN1bHRFcnJvck1l c3NhZ2UpDQogICgocmVzIHBnc3FsLXJlc3VsdCkpDQogIDptb2R1bGUgInBvc3RncmVzcWwiDQog IDpyZXR1cm5pbmcgOmNzdHJpbmcpDQoNCihkZWNsYWltIChpbmxpbmUgUFFudHVwbGVzKSkNCih1 ZmZpOmRlZi1mdW5jdGlvbiAoIlBRbnR1cGxlcyIgUFFudHVwbGVzKSANCiAgKChyZXMgcGdzcWwt cmVzdWx0KSkNCiAgOm1vZHVsZSAicG9zdGdyZXNxbCINCiAgOnJldHVybmluZyA6aW50KQ0KDQoo ZGVjbGFpbSAoaW5saW5lIFBRbmZpZWxkcykpDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJQUW5maWVs ZHMiIFBRbmZpZWxkcykNCiAgKChyZXMgcGdzcWwtcmVzdWx0KSkNCiAgOm1vZHVsZSAicG9zdGdy ZXNxbCINCiAgOnJldHVybmluZyA6aW50KQ0KDQooZGVjbGFpbSAoaW5saW5lIFBRZm5hbWUpKQ0K KHVmZmk6ZGVmLWZ1bmN0aW9uICgiUFFmbmFtZSIgUFFmbmFtZSkNCiAgKChyZXMgcGdzcWwtcmVz dWx0KQ0KICAgKGZpZWxkLW51bSA6aW50KSkNCiAgOm1vZHVsZSAicG9zdGdyZXNxbCINCiAgOnJl dHVybmluZyA6Y3N0cmluZykNCg0KKGRlY2xhaW0gKGlubGluZSBQUWZudW1iZXIpKQ0KKHVmZmk6 ZGVmLWZ1bmN0aW9uICgiUFFmbnVtYmVyIiBQUWZudW1iZXIpDQogICgocmVzIHBnc3FsLXJlc3Vs dCkNCiAgKGZpZWxkLW5hbWUgOmNzdHJpbmcpKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6 cmV0dXJuaW5nIDppbnQpDQoNCihkZWNsYWltIChpbmxpbmUgUFFmdHlwZSkpDQoodWZmaTpkZWYt ZnVuY3Rpb24gKCJQUWZ0eXBlIiBQUWZ0eXBlKQ0KICAoKHJlcyBwZ3NxbC1yZXN1bHQpDQogICAo ZmllbGQtbnVtIDppbnQpKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6cmV0dXJuaW5nIHBn c3FsLW9pZCkNCg0KKGRlY2xhaW0gKGlubGluZSBQUWZzaXplKSkNCih1ZmZpOmRlZi1mdW5jdGlv biAoIlBRZnNpemUiIFBRZnNpemUpDQogICgocmVzIHBnc3FsLXJlc3VsdCkNCiAgIChmaWVsZC1u dW0gOmludCkpDQogIDptb2R1bGUgInBvc3RncmVzcWwiDQogIDpyZXR1cm5pbmcgOnNob3J0KQ0K DQooZGVjbGFpbSAoaW5saW5lIFBRY21kU3RhdHVzKSkNCih1ZmZpOmRlZi1mdW5jdGlvbiAoIlBR Y21kU3RhdHVzIiBQUWNtZFN0YXR1cykNCiAgKChyZXMgcGdzcWwtcmVzdWx0KSkNCiAgOm1vZHVs ZSAicG9zdGdyZXNxbCINCiAgOnJldHVybmluZyA6Y3N0cmluZykNCg0KKGRlY2xhaW0gKGlubGlu ZSBQUW9pZFN0YXR1cykpDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJQUW9pZFN0YXR1cyIgUFFvaWRT dGF0dXMpDQogICgocmVzIHBnc3FsLXJlc3VsdCkpDQogIDptb2R1bGUgInBvc3RncmVzcWwiDQog IDpyZXR1cm5pbmcgOmNzdHJpbmcpDQoNCihkZWNsYWltIChpbmxpbmUgUFFjbWRUdXBsZXMpKQ0K KHVmZmk6ZGVmLWZ1bmN0aW9uICgiUFFjbWRUdXBsZXMiIFBRY21kVHVwbGVzKQ0KICAoKHJlcyBw Z3NxbC1yZXN1bHQpKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6cmV0dXJuaW5nIDpjc3Ry aW5nKQ0KDQooZGVjbGFpbSAoaW5saW5lIFBRZ2V0dmFsdWUpKQ0KKHVmZmk6ZGVmLWZ1bmN0aW9u ICgiUFFnZXR2YWx1ZSIgUFFnZXR2YWx1ZSkNCiAgKChyZXMgcGdzcWwtcmVzdWx0KQ0KICAgKHR1 cC1udW0gOmludCkNCiAgIChmaWVsZC1udW0gOmludCkpDQogIDptb2R1bGUgInBvc3RncmVzcWwi DQogIDpyZXR1cm5pbmcgKCogOnVuc2lnbmVkLWNoYXIpKQ0KDQooZGVjbGFpbSAoaW5saW5lIFBR Z2V0bGVuZ3RoKSkNCih1ZmZpOmRlZi1mdW5jdGlvbiAoIlBRZ2V0bGVuZ3RoIiBQUWdldGxlbmd0 aCkNCiAgKChyZXMgcGdzcWwtcmVzdWx0KQ0KICAgKHR1cC1udW0gOmludCkNCiAgIChmaWVsZC1u dW0gOmludCkpDQogIDptb2R1bGUgInBvc3RncmVzcWwiDQogIDpyZXR1cm5pbmcgOmludCkNCg0K KGRlY2xhaW0gKGlubGluZSBQUWdldGlzbnVsbCkpDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJQUWdl dGlzbnVsbCIgUFFnZXRpc251bGwpDQogICgocmVzIHBnc3FsLXJlc3VsdCkNCiAgICh0dXAtbnVt IDppbnQpDQogICAoZmllbGQtbnVtIDppbnQpKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6 cmV0dXJuaW5nIDppbnQpDQoNCihkZWNsYWltIChpbmxpbmUgUFFjbGVhcikpDQoodWZmaTpkZWYt ZnVuY3Rpb24gKCJQUWNsZWFyIiBQUWNsZWFyKQ0KICAoKHJlcyBwZ3NxbC1yZXN1bHQpKQ0KICA6 bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6cmV0dXJuaW5nIDp2b2lkKQ0KDQooZGVjbGFpbSAoaW5s aW5lIFBRaXNCdXN5KSkNCih1ZmZpOmRlZi1mdW5jdGlvbiAoIlBRaXNCdXN5IiBQUWlzQnVzeSkN CiAgKChjb25uIHBnc3FsLWNvbm4pKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6cmV0dXJu aW5nIDppbnQpDQoNCg0KOzs7IExhcmdlIG9iamVjdHMgc3VwcG9ydCAoTUIpDQoNCihkZWZjb25z dGFudCArSU5WX0FSQ0hJVkUrIDY1NTM2KSAgICAgICAgIDsgZmUtbG9iai5jDQooZGVmY29uc3Rh bnQgK0lOVl9XUklURSsgICAxMzEwNzIpDQooZGVmY29uc3RhbnQgK0lOVl9SRUFEKyAgICAyNjIx NDQpDQoNCihkZWNsYWltIChpbmxpbmUgbG8tY3JlYXQpKQ0KKHVmZmk6ZGVmLWZ1bmN0aW9uICgi bG9fY3JlYXQiIGxvLWNyZWF0ZSkNCiAgKChjb25uIHBnc3FsLWNvbm4pDQogICAobW9kZSA6aW50 KSkNCiAgOm1vZHVsZSAicG9zdGdyZXNxbCINCiAgOnJldHVybmluZyBwZ3NxbC1vaWQpDQoNCihk ZWNsYWltIChpbmxpbmUgbG8tb3BlbikpDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJsb19vcGVuIiBs by1vcGVuKQ0KICAoKGNvbm4gcGdzcWwtY29ubikNCiAgIChvaWQgcGdzcWwtb2lkKQ0KICAgKG1v ZGUgOmludCkpDQogIDptb2R1bGUgInBvc3RncmVzcWwiDQogIDpyZXR1cm5pbmcgOmludCkNCg0K KGRlY2xhaW0gKGlubGluZSBsby13cml0ZSkpDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJsb193cml0 ZSIgbG8td3JpdGUpDQogICgoY29ubiBwZ3NxbC1jb25uKQ0KICAgKGZkIDppbnQpDQogICAoZGF0 YSA6Y3N0cmluZykNCiAgIChzaXplIDppbnQpKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6 cmV0dXJuaW5nIDppbnQpDQoNCihkZWNsYWltIChpbmxpbmUgbG8tcmVhZCkpDQoodWZmaTpkZWYt ZnVuY3Rpb24gKCJsb19yZWFkIiBsby1yZWFkKQ0KICAoKGNvbm4gcGdzcWwtY29ubikNCiAgIChm ZCA6aW50KQ0KICAgKGRhdGEgKCogOnVuc2lnbmVkLWNoYXIpKQ0KICAgKHNpemUgOmludCkpDQog IDptb2R1bGUgInBvc3RncmVzcWwiDQogIDpyZXR1cm5pbmcgOmludCkNCg0KKGRlY2xhaW0gKGlu bGluZSBsby1sc2VlaykpDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJsb19sc2VlayIgbG8tbHNlZWsp DQogICgoY29ubiBwZ3NxbC1jb25uKQ0KICAgKGZkIDppbnQpDQogICAob2Zmc2V0IDppbnQpDQog ICAod2hlbmNlIDppbnQpKQ0KICA6bW9kdWxlICJwb3N0Z3Jlc3FsIg0KICA6cmV0dXJuaW5nIDpp bnQpDQoNCihkZWNsYWltIChpbmxpbmUgbG8tY2xvc2UpKQ0KKHVmZmk6ZGVmLWZ1bmN0aW9uICgi bG9fY2xvc2UiIGxvLWNsb3NlKQ0KICAoKGNvbm4gcGdzcWwtY29ubikNCiAgIChmZCA6aW50KSkN CiAgOm1vZHVsZSAicG9zdGdyZXNxbCINCiAgOnJldHVybmluZyA6aW50KQ0KDQooZGVjbGFpbSAo aW5saW5lIGxvLXVubGluaykpDQoodWZmaTpkZWYtZnVuY3Rpb24gKCJsb191bmxpbmsiIGxvLXVu bGluaykNCiAgKChjb25uIHBnc3FsLWNvbm4pDQogICAob2lkIHBnc3FsLW9pZCkpDQogIDptb2R1 bGUgInBvc3RncmVzcWwiDQogIDpyZXR1cm5pbmcgOmludCkNCk== --=-tUA1ynThxubAIDVM+c9W Content-Disposition: attachment; filename=postgresql-package.lisp Content-Type: text/plain; name=postgresql-package.lisp; charset=UTF-8 Content-Transfer-Encoding: base64 Ozs7OyAtKi0gTW9kZTogTElTUDsgU3ludGF4OiBBTlNJLUNvbW1vbi1MaXNwOyBCYXNlOiAxMCAt Ki0NCjs7OzsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKg0KOzs7OyBGSUxFIElERU5USUZJQ0FUSU9ODQo7Ozs7 DQo7Ozs7IE5hbWU6ICAgICAgICAgIHBvc3RncmVzcWwtcGFja2FnZS5jbA0KOzs7OyBQdXJwb3Nl OiAgICAgICBQYWNrYWdlIGRlZmluaXRpb24gZm9yIGxvdy1sZXZlbCBQb3N0Z3JlU1FMIGludGVy ZmFjZQ0KOzs7OyBQcm9ncmFtbWVyOiAgICBLZXZpbiBNLiBSb3NlbmJlcmcNCjs7OzsgRGF0ZSBT dGFydGVkOiAgRmViIDIwMDINCjs7OzsNCjs7OzsgJElkOiBwb3N0Z3Jlc3FsLXBhY2thZ2UubGlz cCA3MDYxIDIwMDMtMDktMDcgMDY6MzQ6NDVaIGtldmluICQNCjs7OzsNCjs7OzsgVGhpcyBmaWxl LCBwYXJ0IG9mIENMU1FMLCBpcyBDb3B5cmlnaHQgKGMpIDIwMDIgYnkgS2V2aW4gTS4gUm9zZW5i ZXJnDQo7Ozs7DQo7Ozs7IENMU1FMIHVzZXJzIGFyZSBncmFudGVkIHRoZSByaWdodHMgdG8gZGlz dHJpYnV0ZSBhbmQgdXNlIHRoaXMgc29mdHdhcmUNCjs7OzsgYXMgZ292ZXJuZWQgYnkgdGhlIHRl cm1zIG9mIHRoZSBMaXNwIExlc3NlciBHTlUgUHVibGljIExpY2Vuc2UNCjs7OzsgKGh0dHA6Ly9v cGVuc291cmNlLmZyYW56LmNvbS9wcmVhbWJsZS5odG1sKSwgYWxzbyBrbm93biBhcyB0aGUgTExH UEwuDQo7Ozs7ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioNCg0KKGluLXBhY2thZ2UgIzpjbC11c2VyKQ0KDQoo ZGVmcGFja2FnZSAjOnBvc3RncmVzcWwNCiAgICAoOm5pY2tuYW1lcyAjOnBnc3FsKQ0KICAgICg6 dXNlICM6Y2wgIzpjbHNxbC11ZmZpKQ0KICAgICg6ZXhwb3J0DQogICAgICM6cGdzcWwtb2lkDQog ICAgICM6cGdzcWwtY29ubi1zdGF0dXMtdHlwZQ0KICAgICAjOnBnc3FsLWNvbm4tc3RhdHVzLXR5 cGUjY29ubmVjdGlvbi1vaw0KICAgICAjOnBnc3FsLWNvbm4tc3RhdHVzLXR5cGUjY29ubmVjdGlv bi1iYWQNCiAgICAgIzpwZ3NxbC1leGVjLXN0YXR1cy10eXBlDQogICAgICM6cGdzcWwtZXhlYy1z dGF0dXMtdHlwZSNlbXB0eS1xdWVyeQ0KICAgICAjOnBnc3FsLWV4ZWMtc3RhdHVzLXR5cGUjY29t bWFuZC1vaw0KICAgICAjOnBnc3FsLWV4ZWMtc3RhdHVzLXR5cGUjdHVwbGVzLW9rDQogICAgICM6 cGdzcWwtZXhlYy1zdGF0dXMtdHlwZSNjb3B5LW91dA0KICAgICAjOnBnc3FsLWV4ZWMtc3RhdHVz LXR5cGUjY29weS1pbg0KICAgICAjOnBnc3FsLWV4ZWMtc3RhdHVzLXR5cGUjYmFkLXJlc3BvbnNl DQogICAgICM6cGdzcWwtZXhlYy1zdGF0dXMtdHlwZSNub25mYXRhbC1lcnJvcg0KICAgICAjOnBn c3FsLWV4ZWMtc3RhdHVzLXR5cGUjZmF0YWwtZXJyb3INCiAgICAgIzpwZ3NxbC1jb25uDQogICAg ICM6cGdzcWwtcmVzdWx0DQoNCiAgICAgIzpwZ3NxbC1mdHlwZSNieXRlYQ0KICAgICAjOnBnc3Fs LWZ0eXBlI2ludDINCiAgICAgIzpwZ3NxbC1mdHlwZSNpbnQ0DQogICAgICM6cGdzcWwtZnR5cGUj aW50OA0KICAgICAjOnBnc3FsLWZ0eXBlI2Zsb2F0NA0KICAgICAjOnBnc3FsLWZ0eXBlI2Zsb2F0 OA0KDQogICAgIDs7IFVzZWQgYnkgUFFyZXN1bHRFcnJvckZpZWxkIHRvIGdldCB0aGUgc3FsIGVy cm9yIGNvZGUNCiAgICAgIzorUEctRElBRy1TUUxTVEFURSsNCg0KICAgICANCiAgICAgOzsgRnVu Y3Rpb25zDQogICAgICM6UFFzZXRkYkxvZ2luDQogICAgICM6UFFsb2dpbg0KICAgICAjOlBRZmlu aXNoDQogICAgICM6UFFzdGF0dXMNCiAgICAgIzpQUWVycm9yTWVzc2FnZQ0KICAgICAjOlBRZXhl Yw0KICAgICAjOlBRcmVzdWx0U3RhdHVzDQogICAgICM6UFFyZXN1bHRFcnJvckZpZWxkIDsgdXNl ZCB0byBncmFiIHRoZSBTUUxTVEFURSBjb2RlIGZyb20gYW4gZXJyb3INCiAgICAgIzpQUXJlc3Vs dEVycm9yTWVzc2FnZQ0KICAgICAjOlBRbnR1cGxlcw0KICAgICAjOlBRbmZpZWxkcw0KICAgICAj OlBRZm5hbWUNCiAgICAgIzpQUWZudW1iZXINCiAgICAgIzpQUWZ0eXBlDQogICAgICM6UFFmc2l6 ZQ0KICAgICAjOlBRY21kU3RhdHVzDQogICAgICM6UFFvaWRTdGF0dXMNCiAgICAgIzpQUWNtZFR1 cGxlcw0KICAgICAjOlBRZ2V0dmFsdWUNCiAgICAgIzpQUWdldGxlbmd0aA0KICAgICAjOlBRZ2V0 aXNudWxsDQogICAgICM6UFFjbGVhcg0KICAgICAjOlBRaXNCdXN5DQogICAgIA0KICAgICA7O0xh cmdlIE9iamVjdHMgKE1hcmMgQikNCiAgICAgIzpsby1jcmVhdGUNCiAgICAgIzpsby1vcGVuDQog ICAgICM6bG8td3JpdGUNCiAgICAgIzpsby1yZWFkDQogICAgICM6bG8tbHNlZWsNCiAgICAgIzps by1jbG9zZQ0KICAgICAjOmxvLXVubGluaw0KICAgICApDQogICAgKDpkb2N1bWVudGF0aW9uICJU aGlzIGlzIHRoZSBsb3ctbGV2ZWwgaW50ZXJmYWNlIHRvIFBvc3RncmVTUUwuIikpDQoNCg0K --=-tUA1ynThxubAIDVM+c9W Content-Disposition: attachment; filename=postgresql-sql.lisp Content-Type: text/plain; name=postgresql-sql.lisp; charset=UTF-8 Content-Transfer-Encoding: base64 Ozs7OyAtKi0gTW9kZTogTElTUDsgU3ludGF4OiBBTlNJLUNvbW1vbi1MaXNwOyBCYXNlOiAxMCAt Ki0NCjs7OzsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKg0KOzs7OyBGSUxFIElERU5USUZJQ0FUSU9ODQo7Ozs7 DQo7Ozs7IE5hbWU6ICAgICAgICAgIHBvc3RncmVzcWwtc3FsLmxpc3ANCjs7OzsgUHVycG9zZTog ICAgICAgSGlnaC1sZXZlbCBQb3N0Z3JlU1FMIGludGVyZmFjZSB1c2luZyBVRkZJDQo7Ozs7IERh dGUgU3RhcnRlZDogIEZlYiAyMDAyDQo7Ozs7DQo7Ozs7ICRJZDogcG9zdGdyZXNxbC1zcWwubGlz cCAxMDk2OSAyMDA2LTA3LTA1IDAyOjE2OjQ5WiBrZXZpbiAkDQo7Ozs7DQo7Ozs7IENMU1FMIHVz ZXJzIGFyZSBncmFudGVkIHRoZSByaWdodHMgdG8gZGlzdHJpYnV0ZSBhbmQgdXNlIHRoaXMgc29m dHdhcmUNCjs7OzsgYXMgZ292ZXJuZWQgYnkgdGhlIHRlcm1zIG9mIHRoZSBMaXNwIExlc3NlciBH TlUgUHVibGljIExpY2Vuc2UNCjs7OzsgKGh0dHA6Ly9vcGVuc291cmNlLmZyYW56LmNvbS9wcmVh bWJsZS5odG1sKSwgYWxzbyBrbm93biBhcyB0aGUgTExHUEwuDQo7Ozs7ICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioNCg0KKGluLXBhY2thZ2UgIzpjbC11c2VyKQ0KDQooZGVmcGFja2FnZSAjOmNsc3FsLXBvc3Rn cmVzcWwNCiAgICAoOnVzZSAjOmNvbW1vbi1saXNwICM6Y2xzcWwtc3lzICM6cG9zdGdyZXNxbCAj OmNsc3FsLXVmZmkpDQogICAgKDpleHBvcnQgIzpwb3N0Z3Jlc3FsLWRhdGFiYXNlKQ0KICAgICg6 ZG9jdW1lbnRhdGlvbiAiVGhpcyBpcyB0aGUgQ0xTUUwgaW50ZXJmYWNlIHRvIFBvc3RncmVTUUwu IikpDQoNCihpbi1wYWNrYWdlICM6Y2xzcWwtcG9zdGdyZXNxbCkNCg0KOzs7IEZpZWxkIGNvbnZl cnNpb24gZnVuY3Rpb25zDQoNCihkZWZ1biBtYWtlLXR5cGUtbGlzdC1mb3ItYXV0byAobnVtLWZp ZWxkcyByZXMtcHRyKQ0KICAobGV0ICgobmV3LXR5cGVzICcoKSkpDQogICAgKGRvdGltZXMgKGkg bnVtLWZpZWxkcykNCiAgICAgIChkZWNsYXJlIChmaXhudW0gaSkpDQogICAgICAobGV0KiAoKHR5 cGUgKFBRZnR5cGUgcmVzLXB0ciBpKSkpDQoJKHB1c2gNCgkgKGNhc2UgdHlwZQ0KCSAgICgoIy5w Z3NxbC1mdHlwZSNieXRlYQ0KCSAgICAgIy5wZ3NxbC1mdHlwZSNpbnQyDQoJICAgICAjLnBnc3Fs LWZ0eXBlI2ludDQpDQoJICAgIDppbnQzMikNCgkgICAoIy5wZ3NxbC1mdHlwZSNpbnQ4DQoJICAg IDppbnQ2NCkNCgkgICAoKCMucGdzcWwtZnR5cGUjZmxvYXQ0DQoJICAgICAjLnBnc3FsLWZ0eXBl I2Zsb2F0OCkNCgkgICAgOmRvdWJsZSkNCgkgICAob3RoZXJ3aXNlDQoJICAgIHQpKQ0KCSBuZXct dHlwZXMpKSkNCiAgICAgIChucmV2ZXJzZSBuZXctdHlwZXMpKSkNCg0KKGRlZnVuIGNhbm9uaWNh bGl6ZS10eXBlcyAodHlwZXMgbnVtLWZpZWxkcyByZXMtcHRyKQ0KICAoaWYgKG51bGwgdHlwZXMp DQogICAgICBuaWwNCiAgICAgIChsZXQgKChhdXRvLWxpc3QgKG1ha2UtdHlwZS1saXN0LWZvci1h dXRvIG51bS1maWVsZHMgcmVzLXB0cikpKQ0KCShjb25kDQoJICAoKGxpc3RwIHR5cGVzKQ0KCSAg IChjYW5vbmljYWxpemUtdHlwZS1saXN0IHR5cGVzIGF1dG8tbGlzdCkpDQoJICAoKGVxIHR5cGVz IDphdXRvKQ0KCSAgIGF1dG8tbGlzdCkNCgkgICh0DQoJICAgbmlsKSkpKSkNCg0KKGRlZnVuIHRp ZHktZXJyb3ItbWVzc2FnZSAobWVzc2FnZSkNCiAgKHVubGVzcyAoc3RyaW5ncCBtZXNzYWdlKQ0K ICAgIChzZXRxIG1lc3NhZ2UgKHVmZmk6Y29udmVydC1mcm9tLWZvcmVpZ24tc3RyaW5nIG1lc3Nh Z2UpKSkNCiAgKGxldCAoKG1lc3NhZ2UgKHN0cmluZy1yaWdodC10cmltICcoI1xSZXR1cm4gI1xO ZXdsaW5lKSBtZXNzYWdlKSkpDQogICAgKGNvbmQNCiAgICAgICgoPCAobGVuZ3RoIG1lc3NhZ2Up IChsZW5ndGggIkVSUk9SOiIpKQ0KICAgICAgIG1lc3NhZ2UpDQogICAgICAoKHN0cmluZz0gbWVz c2FnZSAiRVJST1I6IiA6ZW5kMSA2KQ0KICAgICAgIChzdHJpbmctbGVmdC10cmltICcoI1xTcGFj ZSkgKHN1YnNlcSBtZXNzYWdlIDYpKSkNCiAgICAgICh0DQogICAgICAgbWVzc2FnZSkpKSkNCg0K KGRlZm1ldGhvZCBkYXRhYmFzZS1pbml0aWFsaXplLWRhdGFiYXNlLXR5cGUgKChkYXRhYmFzZS10 eXBlDQoJCQkJCSAgICAgICAoZXFsIDpwb3N0Z3Jlc3FsKSkpDQogIHQpDQoNCih1ZmZpOmRlZi10 eXBlIHBnc3FsLWNvbm4tZGVmIHBnc3FsLWNvbm4pDQoodWZmaTpkZWYtdHlwZSBwZ3NxbC1yZXN1 bHQtZGVmIHBnc3FsLXJlc3VsdCkNCg0KDQooZGVmY2xhc3MgcG9zdGdyZXNxbC1kYXRhYmFzZSAo Z2VuZXJpYy1wb3N0Z3Jlc3FsLWRhdGFiYXNlKQ0KICAoKGNvbm4tcHRyIDphY2Nlc3NvciBkYXRh YmFzZS1jb25uLXB0ciA6aW5pdGFyZyA6Y29ubi1wdHINCgkgICAgIDp0eXBlIHBnc3FsLWNvbm4t ZGVmKQ0KICAgKGxvY2sNCiAgICA6YWNjZXNzb3IgZGF0YWJhc2UtbG9jaw0KICAgIDppbml0Zm9y bSAobWFrZS1wcm9jZXNzLWxvY2sgImNvbm4iKSkpKQ0KDQooZGVmbWV0aG9kIGRhdGFiYXNlLXR5 cGUgKChkYXRhYmFzZSBwb3N0Z3Jlc3FsLWRhdGFiYXNlKSkNCiAgOnBvc3RncmVzcWwpDQoNCihk ZWZtZXRob2QgZGF0YWJhc2UtbmFtZS1mcm9tLXNwZWMgKGNvbm5lY3Rpb24tc3BlYyAoZGF0YWJh c2UtdHlwZQ0KCQkJCQkJICAgICAoZXFsIDpwb3N0Z3Jlc3FsKSkpDQogIChjaGVjay1jb25uZWN0 aW9uLXNwZWMgY29ubmVjdGlvbi1zcGVjIGRhdGFiYXNlLXR5cGUNCgkJCSAoaG9zdCBkYiB1c2Vy IHBhc3N3b3JkICZvcHRpb25hbCBwb3J0IG9wdGlvbnMgdHR5KSkNCiAgKGRlc3RydWN0dXJpbmct YmluZCAoaG9zdCBkYiB1c2VyIHBhc3N3b3JkICZvcHRpb25hbCBwb3J0IG9wdGlvbnMgdHR5KQ0K ICAgICAgY29ubmVjdGlvbi1zcGVjDQogICAgKGRlY2xhcmUgKGlnbm9yZSBwYXNzd29yZCBvcHRp b25zIHR0eSkpDQogICAgKGNvbmNhdGVuYXRlICdzdHJpbmcgDQogICAgICAoZXR5cGVjYXNlIGhv c3QNCgkobnVsbCAibG9jYWxob3N0IikNCgkocGF0aG5hbWUgKG5hbWVzdHJpbmcgaG9zdCkpDQoJ KHN0cmluZyBob3N0KSkNCiAgICAgICh3aGVuIHBvcnQgDQoJKGNvbmNhdGVuYXRlICdzdHJpbmcN CgkJICAgICAiOiINCgkJICAgICAoZXR5cGVjYXNlIHBvcnQNCgkJICAgICAgIChpbnRlZ2VyICh3 cml0ZS10by1zdHJpbmcgcG9ydCkpDQoJCSAgICAgICAoc3RyaW5nIHBvcnQpKSkpDQogICAgICAi LyIgZGIgIi8iIHVzZXIpKSkNCg0KDQooZGVmbWV0aG9kIGRhdGFiYXNlLWNvbm5lY3QgKGNvbm5l Y3Rpb24tc3BlYyAoZGF0YWJhc2UtdHlwZSAoZXFsIDpwb3N0Z3Jlc3FsKSkpDQogIChjaGVjay1j b25uZWN0aW9uLXNwZWMgY29ubmVjdGlvbi1zcGVjIGRhdGFiYXNlLXR5cGUNCgkJCSAoaG9zdCBk YiB1c2VyIHBhc3N3b3JkICZvcHRpb25hbCBwb3J0IG9wdGlvbnMgdHR5KSkNCiAgKGRlc3RydWN0 dXJpbmctYmluZCAoaG9zdCBkYiB1c2VyIHBhc3N3b3JkICZvcHRpb25hbCBwb3J0IG9wdGlvbnMg dHR5KQ0KICAgICAgY29ubmVjdGlvbi1zcGVjDQogICAgKHVmZmk6d2l0aC1jc3RyaW5ncyAoKGhv c3QtbmF0aXZlIGhvc3QpDQoJCQkgKHVzZXItbmF0aXZlIHVzZXIpDQoJCQkgKHBhc3N3b3JkLW5h dGl2ZSBwYXNzd29yZCkNCgkJCSAoZGItbmF0aXZlIGRiKQ0KCQkJIChwb3J0LW5hdGl2ZSBwb3J0 KQ0KCQkJIChvcHRpb25zLW5hdGl2ZSBvcHRpb25zKQ0KCQkJICh0dHktbmF0aXZlIHR0eSkpDQog ICAgICAobGV0ICgoY29ubmVjdGlvbiAoUFFzZXRkYkxvZ2luIGhvc3QtbmF0aXZlIHBvcnQtbmF0 aXZlDQoJCQkJICAgICAgb3B0aW9ucy1uYXRpdmUgdHR5LW5hdGl2ZQ0KCQkJCSAgICAgIGRiLW5h dGl2ZSB1c2VyLW5hdGl2ZQ0KCQkJCSAgICAgIHBhc3N3b3JkLW5hdGl2ZSkpKQ0KCShkZWNsYXJl ICh0eXBlIHBnc3FsLWNvbm4tZGVmIGNvbm5lY3Rpb24pKQ0KCSh3aGVuIChub3QgKGVxIChQUXN0 YXR1cyBjb25uZWN0aW9uKSANCgkJICAgICAgIHBnc3FsLWNvbm4tc3RhdHVzLXR5cGUjY29ubmVj dGlvbi1vaykpDQogICAgICAgICAgKGxldCAoKHBxc3RhdHVzIChQUXN0YXR1cyBjb25uZWN0aW9u KSkNCiAgICAgICAgICAgICAgICAocHFtZXNzYWdlICh0aWR5LWVycm9yLW1lc3NhZ2UgKFBRZXJy b3JNZXNzYWdlIGNvbm5lY3Rpb24pKSkpDQogICAgICAgICAgICAoUFFmaW5pc2ggY29ubmVjdGlv bikNCiAgICAgICAgICAgIChlcnJvciAnc3FsLWNvbm5lY3Rpb24tZXJyb3INCiAgICAgICAgICAg ICAgICAgICA6ZGF0YWJhc2UtdHlwZSBkYXRhYmFzZS10eXBlDQogICAgICAgICAgICAgICAgICAg OmNvbm5lY3Rpb24tc3BlYyBjb25uZWN0aW9uLXNwZWMNCiAgICAgICAgICAgICAgICAgICA6ZXJy b3ItaWQgcHFzdGF0dXMNCiAgICAgICAgICAgICAgICAgICA6bWVzc2FnZSAgcHFtZXNzYWdlKSkp DQoJKG1ha2UtaW5zdGFuY2UgJ3Bvc3RncmVzcWwtZGF0YWJhc2UNCgkJICAgICAgIDpuYW1lIChk YXRhYmFzZS1uYW1lLWZyb20tc3BlYyBjb25uZWN0aW9uLXNwZWMNCgkJCQkJCSAgICAgIGRhdGFi YXNlLXR5cGUpDQoJCSAgICAgICA6ZGF0YWJhc2UtdHlwZSA6cG9zdGdyZXNxbA0KCQkgICAgICAg OmNvbm5lY3Rpb24tc3BlYyBjb25uZWN0aW9uLXNwZWMNCgkJICAgICAgIDpjb25uLXB0ciBjb25u ZWN0aW9uKSkpKSkNCg0KDQooZGVmbWV0aG9kIGRhdGFiYXNlLWRpc2Nvbm5lY3QgKChkYXRhYmFz ZSBwb3N0Z3Jlc3FsLWRhdGFiYXNlKSkNCiAgKFBRZmluaXNoIChkYXRhYmFzZS1jb25uLXB0ciBk YXRhYmFzZSkpDQogIChzZXRmIChkYXRhYmFzZS1jb25uLXB0ciBkYXRhYmFzZSkgbmlsKQ0KICB0 KQ0KDQooZGVmbWV0aG9kIGRhdGFiYXNlLXF1ZXJ5IChxdWVyeS1leHByZXNzaW9uIChkYXRhYmFz ZSBwb3N0Z3Jlc3FsLWRhdGFiYXNlKSByZXN1bHQtdHlwZXMgZmllbGQtbmFtZXMpDQogIChsZXQg KChjb25uLXB0ciAoZGF0YWJhc2UtY29ubi1wdHIgZGF0YWJhc2UpKSkNCiAgICAoZGVjbGFyZSAo dHlwZSBwZ3NxbC1jb25uLWRlZiBjb25uLXB0cikpDQogICAgKHVmZmk6d2l0aC1jc3RyaW5nIChx dWVyeS1uYXRpdmUgcXVlcnktZXhwcmVzc2lvbikNCiAgICAgIChsZXQgKChyZXN1bHQgKFBRZXhl YyBjb25uLXB0ciBxdWVyeS1uYXRpdmUpKSkNCiAgICAgICAgKHdoZW4gKHVmZmk6bnVsbC1wb2lu dGVyLXAgcmVzdWx0KQ0KICAgICAgICAgIChlcnJvciAnc3FsLWRhdGFiYXNlLWRhdGEtZXJyb3IN CiAgICAgICAgICAgICAgICAgOmRhdGFiYXNlIGRhdGFiYXNlDQogICAgICAgICAgICAgICAgIDpl eHByZXNzaW9uIHF1ZXJ5LWV4cHJlc3Npb24NCiAgICAgICAgICAgICAgICAgOm1lc3NhZ2UgKHRp ZHktZXJyb3ItbWVzc2FnZSAoUFFlcnJvck1lc3NhZ2UgY29ubi1wdHIpKSkpDQogICAgICAgICh1 bndpbmQtcHJvdGVjdA0KICAgICAgICAgICAgKGNhc2UgKFBRcmVzdWx0U3RhdHVzIHJlc3VsdCkN CgkgICAgICA7OyBVc2VyIGdhdmUgYSBjb21tYW5kIHJhdGhlciB0aGFuIGEgcXVlcnkgDQogICAg ICAgICAgICAgICgjLnBnc3FsLWV4ZWMtc3RhdHVzLXR5cGUjY29tbWFuZC1vaw0KICAgICAgICAg ICAgICAgbmlsKQ0KICAgICAgICAgICAgICAoIy5wZ3NxbC1leGVjLXN0YXR1cy10eXBlI2VtcHR5 LXF1ZXJ5DQogICAgICAgICAgICAgICBuaWwpDQogICAgICAgICAgICAgICgjLnBnc3FsLWV4ZWMt c3RhdHVzLXR5cGUjdHVwbGVzLW9rDQoJICAgICAgIChsZXQgKChudW0tZmllbGRzIChQUW5maWVs ZHMgcmVzdWx0KSkpDQoJCSAod2hlbiByZXN1bHQtdHlwZXMNCgkJICAgKHNldHEgcmVzdWx0LXR5 cGVzDQoJCSAgICAgKGNhbm9uaWNhbGl6ZS10eXBlcyByZXN1bHQtdHlwZXMgbnVtLWZpZWxkcw0K CQkJCQkgcmVzdWx0KSkpDQoJCSAobGV0ICgocmVzIChsb29wIGZvciB0dXBsZS1pbmRleCBmcm9t IDAgYmVsb3cgKFBRbnR1cGxlcyByZXN1bHQpDQoJCQkJY29sbGVjdA0KCQkJCSAgKGxvb3AgZm9y IGkgZnJvbSAwIGJlbG93IG51bS1maWVsZHMNCgkJCQkgICAgICBjb2xsZWN0DQoJCQkJCShpZiAo emVyb3AgKFBRZ2V0aXNudWxsIHJlc3VsdCB0dXBsZS1pbmRleCBpKSkNCgkJCQkJICAgIChjb252 ZXJ0LXJhdy1maWVsZA0KCQkJCQkgICAgIChQUWdldHZhbHVlIHJlc3VsdCB0dXBsZS1pbmRleCBp KQ0KCQkJCQkgICAgIHJlc3VsdC10eXBlcyBpKQ0KCQkJCQkgIG5pbCkpKSkpDQoJCSAgIChpZiBm aWVsZC1uYW1lcw0KCQkgICAgICAgKHZhbHVlcyByZXMgKHJlc3VsdC1maWVsZC1uYW1lcyBudW0t ZmllbGRzIHJlc3VsdCkpDQoJCSAgICAgcmVzKSkpKQ0KICAgICAgICAgICAgICAodA0KICAgICAg ICAgICAgICAgKGVycm9yICdzcWwtZGF0YWJhc2UtZGF0YS1lcnJvcg0KICAgICAgICAgICAgICAg ICAgICAgIDpkYXRhYmFzZSBkYXRhYmFzZQ0KICAgICAgICAgICAgICAgICAgICAgIDpleHByZXNz aW9uIHF1ZXJ5LWV4cHJlc3Npb24NCiAgICAgICAgICAgICAgICAgICAgICA6ZXJyb3ItaWQgKFBR cmVzdWx0U3RhdHVzIHJlc3VsdCkNCiAgICAgICAgICAgICAgICAgICAgICA6bWVzc2FnZSAodGlk eS1lcnJvci1tZXNzYWdlDQoJCQkJKFBRcmVzdWx0RXJyb3JNZXNzYWdlIHJlc3VsdCkpKSkpDQog ICAgICAgICAgKFBRY2xlYXIgcmVzdWx0KSkpKSkpDQoNCihkZWZ1biByZXN1bHQtZmllbGQtbmFt ZXMgKG51bS1maWVsZHMgcmVzdWx0KQ0KICAiUmV0dXJuIGxpc3Qgb2YgcmVzdWx0IGZpZWxkIG5h bWVzLiINCiAgKGxldCAoKG5hbWVzICcoKSkpDQogICAgKGRvdGltZXMgKGkgbnVtLWZpZWxkcyAo bnJldmVyc2UgbmFtZXMpKQ0KICAgICAgKGRlY2xhcmUgKGZpeG51bSBpKSkNCiAgICAgIChwdXNo ICh1ZmZpOmNvbnZlcnQtZnJvbS1jc3RyaW5nIChQUWZuYW1lIHJlc3VsdCBpKSkgbmFtZXMpKSkp DQoNCihkZWZtZXRob2QgZGF0YWJhc2UtZXhlY3V0ZS1jb21tYW5kIChzcWwtZXhwcmVzc2lvbg0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhYmFzZSBwb3N0Z3Jlc3Fs LWRhdGFiYXNlKSkNCiAgKGxldCAoKGNvbm4tcHRyIChkYXRhYmFzZS1jb25uLXB0ciBkYXRhYmFz ZSkpKQ0KICAgIChkZWNsYXJlICh0eXBlIHBnc3FsLWNvbm4tZGVmIGNvbm4tcHRyKSkNCiAgICAo dWZmaTp3aXRoLWNzdHJpbmcgKHNxbC1uYXRpdmUgc3FsLWV4cHJlc3Npb24pDQogICAgICAobGV0 ICgocmVzdWx0IChQUWV4ZWMgY29ubi1wdHIgc3FsLW5hdGl2ZSkpKQ0KICAgICAgICAod2hlbiAo dWZmaTpudWxsLXBvaW50ZXItcCByZXN1bHQpDQogICAgICAgICAgKGVycm9yICdzcWwtZGF0YWJh c2UtZGF0YS1lcnJvcg0KICAgICAgICAgICAgICAgICA6ZGF0YWJhc2UgZGF0YWJhc2UNCiAgICAg ICAgICAgICAgICAgOmV4cHJlc3Npb24gc3FsLWV4cHJlc3Npb24NCiAgICAgICAgICAgICAgICAg Om1lc3NhZ2UgKHRpZHktZXJyb3ItbWVzc2FnZSAoUFFlcnJvck1lc3NhZ2UgY29ubi1wdHIpKSkp DQogICAgICAgICh1bndpbmQtcHJvdGVjdA0KICAgICAgICAgICAgKGNhc2UgKFBRcmVzdWx0U3Rh dHVzIHJlc3VsdCkNCiAgICAgICAgICAgICAgKCMucGdzcWwtZXhlYy1zdGF0dXMtdHlwZSNjb21t YW5kLW9rDQogICAgICAgICAgICAgICB0KQ0KICAgICAgICAgICAgICAoKCMucGdzcWwtZXhlYy1z dGF0dXMtdHlwZSNlbXB0eS1xdWVyeQ0KICAgICAgICAgICAgICAgICMucGdzcWwtZXhlYy1zdGF0 dXMtdHlwZSN0dXBsZXMtb2spDQogICAgICAgICAgICAgICAod2FybiAiU3RyYW5nZSByZXN1bHQu Li4iKQ0KICAgICAgICAgICAgICAgdCkNCiAgICAgICAgICAgICAgKHQNCiAgICAgICAgICAgICAg IChlcnJvciAnc3FsLWRhdGFiYXNlLWRhdGEtZXJyb3INCiAgICAgICAgICAgICAgICAgICAgICA6 ZGF0YWJhc2UgZGF0YWJhc2UNCiAgICAgICAgICAgICAgICAgICAgICA6ZXhwcmVzc2lvbiBzcWwt ZXhwcmVzc2lvbg0KICAgICAgICAgICAgICAgICAgICAgIDplcnJvci1pZCAodWZmaTpjb252ZXJ0 LWZyb20tZm9yZWlnbi1zdHJpbmcgKFBRcmVzdWx0RXJyb3JGaWVsZCByZXN1bHQgK1BHLURJQUct U1FMU1RBVEUrKSkNCiAgICAgICAgICAgICAgICAgICAgICA6bWVzc2FnZSAodGlkeS1lcnJvci1t ZXNzYWdlDQoJCQkJKFBRcmVzdWx0RXJyb3JNZXNzYWdlIHJlc3VsdCkpKSkpDQogICAgICAgICAg KFBRY2xlYXIgcmVzdWx0KSkpKSkpDQoNCihkZWZzdHJ1Y3QgcG9zdGdyZXNxbC1yZXN1bHQtc2V0 DQogIChyZXMtcHRyICh1ZmZpOm1ha2UtbnVsbC1wb2ludGVyICdwZ3NxbC1yZXN1bHQpIA0KCSAg IDp0eXBlIHBnc3FsLXJlc3VsdC1kZWYpDQogICh0eXBlcyBuaWwpIA0KICAobnVtLXR1cGxlcyAw IDp0eXBlIGludGVnZXIpDQogIChudW0tZmllbGRzIDAgOnR5cGUgaW50ZWdlcikNCiAgKHR1cGxl LWluZGV4IDAgOnR5cGUgaW50ZWdlcikpDQoNCihkZWZtZXRob2QgZGF0YWJhc2UtcXVlcnktcmVz dWx0LXNldCAoKHF1ZXJ5LWV4cHJlc3Npb24gc3RyaW5nKQ0KCQkJCSAgICAgIChkYXRhYmFzZSBw b3N0Z3Jlc3FsLWRhdGFiYXNlKSANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmtleSBmdWxsLXNldCByZXN1bHQtdHlwZXMpDQogIChsZXQgKChjb25uLXB0ciAoZGF0YWJh c2UtY29ubi1wdHIgZGF0YWJhc2UpKSkNCiAgICAoZGVjbGFyZSAodHlwZSBwZ3NxbC1jb25uLWRl ZiBjb25uLXB0cikpDQogICAgKHVmZmk6d2l0aC1jc3RyaW5nIChxdWVyeS1uYXRpdmUgcXVlcnkt ZXhwcmVzc2lvbikNCiAgICAgIChsZXQgKChyZXN1bHQgKFBRZXhlYyBjb25uLXB0ciBxdWVyeS1u YXRpdmUpKSkNCiAgICAgICAgKHdoZW4gKHVmZmk6bnVsbC1wb2ludGVyLXAgcmVzdWx0KQ0KICAg ICAgICAgIChlcnJvciAnc3FsLWRhdGFiYXNlLWRhdGEtZXJyb3INCiAgICAgICAgICAgICAgICAg OmRhdGFiYXNlIGRhdGFiYXNlDQogICAgICAgICAgICAgICAgIDpleHByZXNzaW9uIHF1ZXJ5LWV4 cHJlc3Npb24NCiAgICAgICAgICAgICAgICAgOm1lc3NhZ2UgKHRpZHktZXJyb3ItbWVzc2FnZSAo UFFlcnJvck1lc3NhZ2UgY29ubi1wdHIpKSkpDQogICAgICAgIChjYXNlIChQUXJlc3VsdFN0YXR1 cyByZXN1bHQpDQogICAgICAgICAgKCgjLnBnc3FsLWV4ZWMtc3RhdHVzLXR5cGUjZW1wdHktcXVl cnkNCiAgICAgICAgICAgICMucGdzcWwtZXhlYy1zdGF0dXMtdHlwZSN0dXBsZXMtb2spDQoJICAg KGxldCAoKHJlc3VsdC1zZXQgKG1ha2UtcG9zdGdyZXNxbC1yZXN1bHQtc2V0DQogICAgICAgICAg ICAgICAgICAgICAgICA6cmVzLXB0ciByZXN1bHQNCiAgICAgICAgICAgICAgICAgICAgICAgIDpu dW0tZmllbGRzIChQUW5maWVsZHMgcmVzdWx0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgOm51 bS10dXBsZXMgKFBRbnR1cGxlcyByZXN1bHQpDQoJCQk6dHlwZXMgKGNhbm9uaWNhbGl6ZS10eXBl cyANCgkJCQkgICAgICByZXN1bHQtdHlwZXMNCgkJCQkgICAgICAoUFFuZmllbGRzIHJlc3VsdCkN CgkJCQkgICAgICByZXN1bHQpKSkpDQoJICAgICAoaWYgZnVsbC1zZXQNCgkJICh2YWx1ZXMgcmVz dWx0LXNldA0KCQkJIChQUW5maWVsZHMgcmVzdWx0KQ0KCQkJIChQUW50dXBsZXMgcmVzdWx0KSkN CgkJICh2YWx1ZXMgcmVzdWx0LXNldA0KCQkJIChQUW5maWVsZHMgcmVzdWx0KSkpKSkNCgkgICh0 DQoJICAgKHVud2luZC1wcm90ZWN0DQogICAgICAgICAgICAgICAoZXJyb3IgJ3NxbC1kYXRhYmFz ZS1kYXRhLWVycm9yDQogICAgICAgICAgICAgICAgICAgICAgOmRhdGFiYXNlIGRhdGFiYXNlDQog ICAgICAgICAgICAgICAgICAgICAgOmV4cHJlc3Npb24gcXVlcnktZXhwcmVzc2lvbg0KICAgICAg ICAgICAgICAgICAgICAgIDplcnJvci1pZCAoUFFyZXN1bHRTdGF0dXMgcmVzdWx0KQ0KICAgICAg ICAgICAgICAgICAgICAgIDptZXNzYWdlICh0aWR5LWVycm9yLW1lc3NhZ2UNCgkJCQkoUFFyZXN1 bHRFcnJvck1lc3NhZ2UgcmVzdWx0KSkpDQogICAgICAgICAgICAgKFBRY2xlYXIgcmVzdWx0KSkp KSkpKSkNCiAgDQooZGVmbWV0aG9kIGRhdGFiYXNlLWR1bXAtcmVzdWx0LXNldCAocmVzdWx0LXNl dCAoZGF0YWJhc2UgcG9zdGdyZXNxbC1kYXRhYmFzZSkpDQogIChsZXQgKChyZXMtcHRyIChwb3N0 Z3Jlc3FsLXJlc3VsdC1zZXQtcmVzLXB0ciByZXN1bHQtc2V0KSkpIA0KICAgIChkZWNsYXJlICh0 eXBlIHBnc3FsLXJlc3VsdC1kZWYgcmVzLXB0cikpDQogICAgKFBRY2xlYXIgcmVzLXB0cikNCiAg ICB0KSkNCg0KKGRlZm1ldGhvZCBkYXRhYmFzZS1zdG9yZS1uZXh0LXJvdyAocmVzdWx0LXNldCAo ZGF0YWJhc2UgcG9zdGdyZXNxbC1kYXRhYmFzZSkgDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsaXN0KQ0KICAobGV0ICgocmVzdWx0IChwb3N0Z3Jlc3FsLXJlc3VsdC1zZXQt cmVzLXB0ciByZXN1bHQtc2V0KSkNCgkodHlwZXMgKHBvc3RncmVzcWwtcmVzdWx0LXNldC10eXBl cyByZXN1bHQtc2V0KSkpDQogICAgKGRlY2xhcmUgKHR5cGUgcGdzcWwtcmVzdWx0LWRlZiByZXN1 bHQpKQ0KICAgIChpZiAoPj0gKHBvc3RncmVzcWwtcmVzdWx0LXNldC10dXBsZS1pbmRleCByZXN1 bHQtc2V0KQ0KCSAgICAocG9zdGdyZXNxbC1yZXN1bHQtc2V0LW51bS10dXBsZXMgcmVzdWx0LXNl dCkpDQoJbmlsDQogICAgICAobG9vcCB3aXRoIHR1cGxlLWluZGV4ID0gKHBvc3RncmVzcWwtcmVz dWx0LXNldC10dXBsZS1pbmRleCByZXN1bHQtc2V0KQ0KICAgICAgICAgIGZvciBpIGZyb20gMCBi ZWxvdyAocG9zdGdyZXNxbC1yZXN1bHQtc2V0LW51bS1maWVsZHMgcmVzdWx0LXNldCkNCiAgICAg ICAgICBmb3IgcmVzdCBvbiBsaXN0DQogICAgICAgICAgZG8NCiAgICAgICAgICAgIChzZXRmIChj YXIgcmVzdCkNCiAgICAgICAgICAgICAgKGlmICh6ZXJvcCAoUFFnZXRpc251bGwgcmVzdWx0IHR1 cGxlLWluZGV4IGkpKQ0KICAgICAgICAgICAgICAgICAgKGNvbnZlcnQtcmF3LWZpZWxkDQogICAg ICAgICAgICAgICAgICAgKFBRZ2V0dmFsdWUgcmVzdWx0IHR1cGxlLWluZGV4IGkpDQoJCSAgIHR5 cGVzIGkpDQogICAgICAgICAgICAgICAgbmlsKSkNCiAgICAgICAgICBmaW5hbGx5DQogICAgICAg ICAgICAoaW5jZiAocG9zdGdyZXNxbC1yZXN1bHQtc2V0LXR1cGxlLWluZGV4IHJlc3VsdC1zZXQp KQ0KICAgICAgICAgICAgKHJldHVybiBsaXN0KSkpKSkNCg0KOzs7IExhcmdlIG9iamVjdHMgc3Vw cG9ydCAoTWFyYyBCKQ0KDQooZGVmbWV0aG9kIGRhdGFiYXNlLWNyZWF0ZS1sYXJnZS1vYmplY3Qg KChkYXRhYmFzZSBwb3N0Z3Jlc3FsLWRhdGFiYXNlKSkNCiAgKGxvLWNyZWF0ZSAoZGF0YWJhc2Ut Y29ubi1wdHIgZGF0YWJhc2UpDQoJICAgICAobG9naW9yIHBvc3RncmVzcWw6OitJTlZfV1JJVEUr IHBvc3RncmVzcWw6OitJTlZfUkVBRCspKSkNCg0KDQojK21iLW9yaWdpbmFsDQooZGVmbWV0aG9k IGRhdGFiYXNlLXdyaXRlLWxhcmdlLW9iamVjdCAob2JqZWN0LWlkIChkYXRhIHN0cmluZykgKGRh dGFiYXNlIHBvc3RncmVzcWwtZGF0YWJhc2UpKQ0KICAobGV0ICgocHRyIChkYXRhYmFzZS1jb25u LXB0ciBkYXRhYmFzZSkpDQoJKGxlbmd0aCAobGVuZ3RoIGRhdGEpKQ0KCShyZXN1bHQgbmlsKQ0K CShmZCBuaWwpKQ0KICAgICh3aXRoLXRyYW5zYWN0aW9uICg6ZGF0YWJhc2UgZGF0YWJhc2UpDQog ICAgICAgKHVud2luZC1wcm90ZWN0DQoJICAocHJvZ24gDQoJICAgIChzZXRmIGZkIChsby1vcGVu IHB0ciBvYmplY3QtaWQgcG9zdGdyZXNxbDo6K0lOVl9XUklURSspKQ0KCSAgICAod2hlbiAoPj0g ZmQgMCkNCgkgICAgICAod2hlbiAoPSAobG8td3JpdGUgcHRyIGZkIGRhdGEgbGVuZ3RoKSBsZW5n dGgpDQoJCShzZXRmIHJlc3VsdCB0KSkpKQ0KCSAocHJvZ24NCgkgICAod2hlbiAoYW5kIGZkICg+ PSBmZCAwKSkNCgkgICAgIChsby1jbG9zZSBwdHIgZmQpKQ0KCSAgICkpKQ0KICAgIHJlc3VsdCkp DQoNCihkZWZtZXRob2QgZGF0YWJhc2Utd3JpdGUtbGFyZ2Utb2JqZWN0IChvYmplY3QtaWQgKGRh dGEgc3RyaW5nKSAoZGF0YWJhc2UgcG9zdGdyZXNxbC1kYXRhYmFzZSkpDQogIChsZXQgKChwdHIg KGRhdGFiYXNlLWNvbm4tcHRyIGRhdGFiYXNlKSkNCgkobGVuZ3RoIChsZW5ndGggZGF0YSkpDQoJ KHJlc3VsdCBuaWwpDQoJKGZkIG5pbCkpDQogICAgKGRhdGFiYXNlLWV4ZWN1dGUtY29tbWFuZCAi YmVnaW4iIGRhdGFiYXNlKQ0KICAgICh1bndpbmQtcHJvdGVjdA0KCShwcm9nbiANCgkgIChzZXRm IGZkIChsby1vcGVuIHB0ciBvYmplY3QtaWQgcG9zdGdyZXNxbDo6K0lOVl9XUklURSspKQ0KCSAg KHdoZW4gKD49IGZkIDApDQoJICAgICh3aGVuICg9IChsby13cml0ZSBwdHIgZmQgZGF0YSBsZW5n dGgpIGxlbmd0aCkNCgkgICAgICAoc2V0ZiByZXN1bHQgdCkpKSkNCiAgICAgIChwcm9nbg0KCSh3 aGVuIChhbmQgZmQgKD49IGZkIDApKQ0KCSAgKGxvLWNsb3NlIHB0ciBmZCkpDQoJKGRhdGFiYXNl LWV4ZWN1dGUtY29tbWFuZCAoaWYgcmVzdWx0ICJjb21taXQiICJyb2xsYmFjayIpIGRhdGFiYXNl KSkpDQogICAgcmVzdWx0KSkNCg0KOzsgKE1CKSB0aGUgYmVnaW4vY29tbWl0L3JvbGxiYWNrIHN0 dWZmIHdpbGwgYmUgcmVtb3ZlZCB3aGVuIHdpdGgtdHJhbnNhY3Rpb24gd2lsIGJlIGltcGxlbWVu dGVkDQo7OyAoS01SKSBDYW4ndCB1c2Ugd2l0aC10cmFuc2FjdGlvbiBzaW5jZSB0aGF0IGZ1bmN0 aW9uIGlzIGluIGhpZ2gtbGV2ZWwgY29kZQ0KKGRlZm1ldGhvZCBkYXRhYmFzZS1yZWFkLWxhcmdl LW9iamVjdCAob2JqZWN0LWlkIChkYXRhYmFzZSBwb3N0Z3Jlc3FsLWRhdGFiYXNlKSkNCiAgKGxl dCAoKHB0ciAoZGF0YWJhc2UtY29ubi1wdHIgZGF0YWJhc2UpKQ0KCShidWZmZXIgbmlsKQ0KCShy ZXN1bHQgbmlsKQ0KCShsZW5ndGggMCkNCgkoZmQgbmlsKSkNCiAgICAodW53aW5kLXByb3RlY3QN CiAgICAgICAocHJvZ24NCgkgKGRhdGFiYXNlLWV4ZWN1dGUtY29tbWFuZCAiYmVnaW4iIGRhdGFi YXNlKQ0KCSAoc2V0ZiBmZCAobG8tb3BlbiBwdHIgb2JqZWN0LWlkIHBvc3RncmVzcWw6OitJTlZf UkVBRCspKQ0KCSAod2hlbiAoPj0gZmQgMCkNCgkgICAoc2V0ZiBsZW5ndGggKGxvLWxzZWVrIHB0 ciBmZCAwIDIpKQ0KCSAgIChsby1sc2VlayBwdHIgZmQgMCAwKQ0KCSAgICh3aGVuICg+IGxlbmd0 aCAwKQ0KCSAgICAgKHNldGYgYnVmZmVyICh1ZmZpOmFsbG9jYXRlLWZvcmVpZ24tc3RyaW5nIA0K CQkJICAgbGVuZ3RoIDp1bnNpZ25lZCB0KSkNCgkgICAgICh3aGVuICg9IChsby1yZWFkIHB0ciBm ZCBidWZmZXIgbGVuZ3RoKSBsZW5ndGgpDQoJICAgICAgIChzZXRmIHJlc3VsdCAodWZmaTpjb252 ZXJ0LWZyb20tZm9yZWlnbi1zdHJpbmcNCgkJCSAgICAgYnVmZmVyIDpsZW5ndGggbGVuZ3RoIDpu dWxsLXRlcm1pbmF0ZWQtcCBuaWwpKSkpKSkNCiAgICAgIChwcm9nbg0KCSh3aGVuIGJ1ZmZlciAo dWZmaTpmcmVlLWZvcmVpZ24tb2JqZWN0IGJ1ZmZlcikpDQoJKHdoZW4gKGFuZCBmZCAoPj0gZmQg MCkpIChsby1jbG9zZSBwdHIgZmQpKQ0KCShkYXRhYmFzZS1leGVjdXRlLWNvbW1hbmQgKGlmIHJl c3VsdCAiY29tbWl0IiAicm9sbGJhY2siKSBkYXRhYmFzZSkpKQ0KICAgIHJlc3VsdCkpDQoNCihk ZWZtZXRob2QgZGF0YWJhc2UtZGVsZXRlLWxhcmdlLW9iamVjdCAob2JqZWN0LWlkIChkYXRhYmFz ZSBwb3N0Z3Jlc3FsLWRhdGFiYXNlKSkNCiAgKGxvLXVubGluayAoZGF0YWJhc2UtY29ubi1wdHIg ZGF0YWJhc2UpIG9iamVjdC1pZCkpDQoNCg0KOzs7IE9iamVjdCBsaXN0aW5nDQoNCg0KICANCihk ZWZtZXRob2QgZGF0YWJhc2UtY3JlYXRlIChjb25uZWN0aW9uLXNwZWMgKHR5cGUgKGVxbCA6cG9z dGdyZXNxbCkpKQ0KICAoZGVzdHJ1Y3R1cmluZy1iaW5kIChob3N0IG5hbWUgdXNlciBwYXNzd29y ZCkgY29ubmVjdGlvbi1zcGVjDQogICAgKGRlY2xhcmUgKGlnbm9yZSB1c2VyIHBhc3N3b3JkKSkN CiAgICAobXVsdGlwbGUtdmFsdWUtYmluZCAob3V0cHV0IHN0YXR1cykNCgkoY2xzcWwtc3lzOmNv bW1hbmQtb3V0cHV0ICJjcmVhdGVkYiAtaH5BIH5BIg0KCQkJCSAgICAgICAoaWYgaG9zdCBob3N0 ICJsb2NhbGhvc3QiKQ0KCQkJCSAgICAgICBuYW1lKQ0KICAgICAgKGlmIChvciAobm90ICh6ZXJv cCBzdGF0dXMpKQ0KCSAgICAgIChzZWFyY2ggImRhdGFiYXNlIGNyZWF0aW9uIGZhaWxlZDogRVJS T1I6IiBvdXRwdXQpKQ0KCSAgKGVycm9yICdzcWwtZGF0YWJhc2UtZXJyb3INCgkJIDptZXNzYWdl DQoJCSAoZm9ybWF0IG5pbCAiY3JlYXRlZGIgZmFpbGVkIGZvciBwb3N0Z3Jlc3FsIGJhY2tlbmQg d2l0aCBjb25uZWN0aW9uIHNwZWMgfkEuIg0KCQkJIGNvbm5lY3Rpb24tc3BlYykpDQoJdCkpKSkN Cg0KKGRlZm1ldGhvZCBkYXRhYmFzZS1kZXN0cm95IChjb25uZWN0aW9uLXNwZWMgKHR5cGUgKGVx bCA6cG9zdGdyZXNxbCkpKQ0KICAoZGVzdHJ1Y3R1cmluZy1iaW5kIChob3N0IG5hbWUgdXNlciBw YXNzd29yZCkgY29ubmVjdGlvbi1zcGVjDQogICAgKGRlY2xhcmUgKGlnbm9yZSB1c2VyIHBhc3N3 b3JkKSkNCiAgICAobXVsdGlwbGUtdmFsdWUtYmluZCAob3V0cHV0IHN0YXR1cykNCgkoY2xzcWwt c3lzOmNvbW1hbmQtb3V0cHV0ICJkcm9wZGIgLWh+QSB+QSINCgkJCQkgICAgICAgKGlmIGhvc3Qg aG9zdCAibG9jYWxob3N0IikNCgkJCQkgICAgICAgbmFtZSkNCiAgICAgIChpZiAob3IgKG5vdCAo emVyb3Agc3RhdHVzKSkNCgkgICAgICAoc2VhcmNoICJkYXRhYmFzZSByZW1vdmFsIGZhaWxlZDog RVJST1I6IiBvdXRwdXQpKQ0KCSAgKGVycm9yICdzcWwtZGF0YWJhc2UtZXJyb3INCgkJIDptZXNz YWdlDQoJCSAoZm9ybWF0IG5pbCAiZHJvcGRiIGZhaWxlZCBmb3IgcG9zdGdyZXNxbCBiYWNrZW5k IHdpdGggY29ubmVjdGlvbiBzcGVjIH5BLiINCgkJCSBjb25uZWN0aW9uLXNwZWMpKQ0KCXQpKSkp DQoNCg0KKGRlZm1ldGhvZCBkYXRhYmFzZS1wcm9iZSAoY29ubmVjdGlvbi1zcGVjICh0eXBlIChl cWwgOnBvc3RncmVzcWwpKSkNCiAgKHdoZW4gKGZpbmQgKHNlY29uZCBjb25uZWN0aW9uLXNwZWMp IChkYXRhYmFzZS1saXN0IGNvbm5lY3Rpb24tc3BlYyB0eXBlKQ0KICAgICAgICAgICAgICA6dGVz dCAjJ3N0cmluZy1lcXVhbCkNCiAgICB0KSkNCg0KDQooZGVmdW4gJXBnLWRhdGFiYXNlLWNvbm5l Y3Rpb24gKGNvbm5lY3Rpb24tc3BlYykNCiAgKGNoZWNrLWNvbm5lY3Rpb24tc3BlYyBjb25uZWN0 aW9uLXNwZWMgOnBvc3RncmVzcWwNCgkJCSAoaG9zdCBkYiB1c2VyIHBhc3N3b3JkICZvcHRpb25h bCBwb3J0IG9wdGlvbnMgdHR5KSkNCiAgKG1hY3JvbGV0ICgoY29lcmNlLXN0cmluZyAodmFyKQ0K ICAgICAgICAgICAgICAgYCh1bmxlc3MgKHR5cGVwICx2YXIgJ3NpbXBsZS1iYXNlLXN0cmluZykN CiAgICAgICAgICAgICAgICAgKHNldGYgLHZhciAoY29lcmNlICx2YXIgJ3NpbXBsZS1iYXNlLXN0 cmluZykpKSkpDQogICAgKGRlc3RydWN0dXJpbmctYmluZCAoaG9zdCBkYiB1c2VyIHBhc3N3b3Jk ICZvcHRpb25hbCBwb3J0IG9wdGlvbnMgdHR5KQ0KICAgICAgICBjb25uZWN0aW9uLXNwZWMNCiAg ICAgIChjb2VyY2Utc3RyaW5nIGRiKQ0KICAgICAgKGNvZXJjZS1zdHJpbmcgdXNlcikNCiAgICAg IChsZXQgKChjb25uZWN0aW9uIChQUXNldGRiTG9naW4gaG9zdCBwb3J0IG9wdGlvbnMgdHR5IGRi IHVzZXIgcGFzc3dvcmQpKSkNCiAgICAgICAgKGRlY2xhcmUgKHR5cGUgcG9zdGdyZXNxbDo6cGdz cWwtY29ubi1wdHIgY29ubmVjdGlvbikpDQogICAgICAgICh1bmxlc3MgKGVxIChQUXN0YXR1cyBj b25uZWN0aW9uKQ0KCQkgICAgcGdzcWwtY29ubi1zdGF0dXMtdHlwZSNjb25uZWN0aW9uLW9rKQ0K ICAgICAgICAgIDs7IENvbm5lY3QgZmFpbGVkDQogICAgICAgICAgKGVycm9yICdzcWwtY29ubmVj dGlvbi1lcnJvcg0KICAgICAgICAgICAgICAgICA6ZGF0YWJhc2UtdHlwZSA6cG9zdGdyZXNxbA0K ICAgICAgICAgICAgICAgICA6Y29ubmVjdGlvbi1zcGVjIGNvbm5lY3Rpb24tc3BlYw0KICAgICAg ICAgICAgICAgICA6ZXJyb3ItaWQgKFBRc3RhdHVzIGNvbm5lY3Rpb24pDQogICAgICAgICAgICAg ICAgIDptZXNzYWdlIChQUWVycm9yTWVzc2FnZSBjb25uZWN0aW9uKSkpDQogICAgICAgIGNvbm5l Y3Rpb24pKSkpDQoNCihkZWZtZXRob2QgZGF0YWJhc2UtcmVjb25uZWN0ICgoZGF0YWJhc2UgcG9z dGdyZXNxbC1kYXRhYmFzZSkpDQogIChsZXQgKChsb2NrIChkYXRhYmFzZS1sb2NrIGRhdGFiYXNl KSkpDQogICAgKHdpdGgtcHJvY2Vzcy1sb2NrIChsb2NrICJSZWNvbm5lY3RpbmciKQ0KICAgICAg KHdpdGgtc2xvdHMgKGNvbm5lY3Rpb24tc3BlYyBjb25uLXB0cikNCgkgIGRhdGFiYXNlDQoJKHNl dGYgY29ubi1wdHIgKCVwZy1kYXRhYmFzZS1jb25uZWN0aW9uIGNvbm5lY3Rpb24tc3BlYykpDQoJ ZGF0YWJhc2UpKSkpDQoNCjs7OyBEYXRhYmFzZSBjYXBhYmlsaXRpZXMNCg0KKHdoZW4gKGNsc3Fs LXN5czpkYXRhYmFzZS10eXBlLWxpYnJhcnktbG9hZGVkIDpwb3N0Z3Jlc3FsKQ0KICAoY2xzcWwt c3lzOmluaXRpYWxpemUtZGF0YWJhc2UtdHlwZSA6ZGF0YWJhc2UtdHlwZSA6cG9zdGdyZXNxbCkp DQo= --=-tUA1ynThxubAIDVM+c9W Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ CLSQL-Devel mailing list [email protected] http://lists.b9.com/mailman/listinfo/clsql-devel --=-tUA1ynThxubAIDVM+c9W--