buttplug 1.0.13 → 1.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi.d.ts +9 -4
  3. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi.js +2 -2
  4. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi_bg.js +6 -630
  5. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi_bg.wasm +0 -0
  6. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi_bg.wasm.d.ts +6 -6
  7. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi_bg_node.js +799 -0
  8. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi_bg_web.js +788 -0
  9. package/dist/module/buttplug_ffi.d.ts +2 -1
  10. package/dist/module/buttplug_ffi.js +2747 -2105
  11. package/dist/module/client.d.ts +2 -2
  12. package/dist/module/client.js +13 -13
  13. package/dist/module/client.js.map +1 -1
  14. package/dist/module/connectors.d.ts +2 -2
  15. package/dist/module/connectors.js +19 -14
  16. package/dist/module/connectors.js.map +1 -1
  17. package/dist/module/device.d.ts +4 -3
  18. package/dist/module/device.js +15 -14
  19. package/dist/module/device.js.map +1 -1
  20. package/dist/module/errors.d.ts +1 -1
  21. package/dist/module/errors.js +1 -1
  22. package/dist/module/errors.js.map +1 -1
  23. package/dist/module/ffi.d.ts +19 -19
  24. package/dist/module/ffi.js +52 -47
  25. package/dist/module/ffi.js.map +1 -1
  26. package/dist/module/index.d.ts +8 -8
  27. package/dist/module/index.js +8 -6
  28. package/dist/module/index.js.map +1 -1
  29. package/dist/module/sorter.d.ts +1 -1
  30. package/dist/module/sorter.js +1 -1
  31. package/dist/module/sorter.js.map +1 -1
  32. package/dist/module/web_index.d.ts +1 -1
  33. package/dist/module/web_index.js +1 -1
  34. package/dist/module/web_index.js.map +1 -1
  35. package/dist/web/0.buttplug.js +663 -384
  36. package/dist/web/1.buttplug.min.js +1 -1
  37. package/dist/web/1.buttplug.min.js.map +1 -1
  38. package/dist/web/b0219b34bc18e1ad0240.module.wasm +0 -0
  39. package/dist/web/buttplug.js +825 -740
  40. package/dist/web/buttplug.min.js +8 -8
  41. package/dist/web/buttplug.min.js.map +1 -1
  42. package/dist/web/e5566a8b6a3fda978549.module.wasm +0 -0
  43. package/index.html +6 -10
  44. package/package.json +28 -17
  45. package/tsconfig.json +0 -1
  46. package/{webpack.base.js → webpack.base.cjs} +30 -6
  47. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi.js.map +0 -1
  48. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi_bg.d.ts +0 -117
  49. package/dist/module/buttplug-rs-ffi/buttplug_rs_ffi_bg.js.map +0 -1
  50. package/dist/module/buttplug_ffi.js.map +0 -1
  51. package/dist/web/17a5dc1db11d74b795d7.module.wasm +0 -0
  52. package/dist/web/7cd0851698bfb0cd22ea.module.wasm +0 -0
@@ -33,28 +33,47 @@ module.exports = function(originalModule) {
33
33
  };
34
34
 
35
35
 
36
+ /***/ }),
37
+
38
+ /***/ "./src/buttplug-rs-ffi sync recursive":
39
+ /*!**********************************!*\
40
+ !*** ./src/buttplug-rs-ffi sync ***!
41
+ \**********************************/
42
+ /*! no static exports found */
43
+ /***/ (function(module, exports) {
44
+
45
+ function webpackEmptyContext(req) {
46
+ var e = new Error("Cannot find module '" + req + "'");
47
+ e.code = 'MODULE_NOT_FOUND';
48
+ throw e;
49
+ }
50
+ webpackEmptyContext.keys = function() { return []; };
51
+ webpackEmptyContext.resolve = webpackEmptyContext;
52
+ module.exports = webpackEmptyContext;
53
+ webpackEmptyContext.id = "./src/buttplug-rs-ffi sync recursive";
54
+
36
55
  /***/ }),
37
56
 
38
57
  /***/ "./src/buttplug-rs-ffi/buttplug_rs_ffi.js":
39
58
  /*!************************************************!*\
40
59
  !*** ./src/buttplug-rs-ffi/buttplug_rs_ffi.js ***!
41
60
  \************************************************/
42
- /*! exports provided: buttplug_create_client, buttplug_free_client, buttplug_parse_client_message, buttplug_create_device, buttplug_parse_device_message, buttplug_free_device, buttplug_activate_env_logger, __wbindgen_object_drop_ref, __wbindgen_object_clone_ref, __wbg_log_e6bbcfdff8337573, __wbindgen_string_new, __wbindgen_cb_drop, __wbg_new_59cb74e423758ede, __wbg_stack_558ba5917b466edd, __wbg_error_4bb6c2a97407129a, __wbg_log_b7dcb3facc73166d, __wbg_log_96295d68ab8338df, __wbg_mark_55c5ecfe509deb6a, __wbg_measure_608563106d70d48a, __wbg_Window_f826a1dec163bacb, __wbindgen_is_undefined, __wbg_WorkerGlobalScope_967d186155183d38, __wbg_instanceof_Window_5993230e7331f098, __wbg_navigator_da501e0baab77d64, __wbg_clearTimeout_4fe71f721d0606af, __wbg_setTimeout_d75246e77e993c5d, __wbg_getCharacteristic_c7f9dcc72f7a86f6, __wbg_value_ce5e4fe742d36a1c, __wbg_setoncharacteristicvaluechanged_ece60eda828cb0ef, __wbg_readValue_988440034a0e12ce, __wbg_startNotifications_c88eeb920d1eb45c, __wbg_writeValue_1c451e0da8c56ca9, __wbg_target_90b16facc122062f, __wbg_requestDevice_2d1b71cc28a67a5a, __wbg_id_45ecf3258c9f7dd7, __wbg_name_fe9ee17e821ecea5, __wbg_gatt_99df2e5380097484, __wbg_setongattserverdisconnected_80e78a9d86abdf7b, __wbg_clearTimeout_af54ac34efe00770, __wbg_setTimeout_c5be4c054c4d7da5, __wbg_bluetooth_18ee05df03af2352, __wbg_setonopen_c3975a4f895a052a, __wbg_setonerror_add0a293158012fc, __wbg_setonmessage_0d42c79be06de84f, __wbg_new_fd9f3bfb89d96362, __wbg_close_3797d4fae932c9b9, __wbg_send_ca85b0e6799803ef, __wbg_connect_d31afa0760e2294e, __wbg_getPrimaryService_903e198e60097b4a, __wbg_data_437e74b835241e70, __wbg_call_e5847d15cc228e4f, __wbg_new_7c995f2adeba6fb5, __wbg_push_3f7c76b58919ce0d, __wbg_buffer_32296c67828fee6c, __wbg_byteLength_da948e1afd83c8f8, __wbg_newnoargs_2349ba6aefe72376, __wbg_call_d63edb857edf16f6, __wbg_new_59986c8731bebaa1, __wbg_resolve_e0690143406c88cb, __wbg_then_9caf23122e4fd5d3, __wbg_then_16663faf60ffbe95, __wbg_self_35a0fda3eb965abe, __wbg_window_88a6f88dd3a474f1, __wbg_globalThis_1d843c4ad7b6a1f5, __wbg_global_294ce70448e8fbbf, __wbg_buffer_0be9fb426f2dd82b, __wbg_newwithbyteoffsetandlength_85b7ce82b001ea08, __wbg_length_3a5138f465b971ad, __wbg_new_4e8d18dbf9cd5240, __wbg_set_4769de301eb521d7, __wbg_newwithbyteoffset_0a6b0ce9d45270c3, __wbg_set_7e15d36563072b19, __wbg_getRandomValues_11115a852729f4e8, __wbg_randomFillSync_a2d002fc3b8e30f7, __wbg_self_a5f0fe5564782787, __wbg_static_accessor_MODULE_7f278c5446c126c8, __wbg_require_29e58b5f6f133563, __wbg_crypto_d91429ea1a087f70, __wbg_msCrypto_c8be2bb4fc7d8cd3, __wbindgen_is_string, __wbindgen_string_get, __wbindgen_debug_string, __wbindgen_throw, __wbindgen_memory, __wbindgen_closure_wrapper677, __wbindgen_closure_wrapper679, __wbindgen_closure_wrapper681, __wbindgen_closure_wrapper683, __wbindgen_closure_wrapper2493, __wbindgen_closure_wrapper4268 */
61
+ /*! exports provided: buttplug_create_protobuf_client, buttplug_free_client, buttplug_client_protobuf_message, buttplug_create_device, buttplug_device_protobuf_message, buttplug_free_device, buttplug_activate_env_logger, __wbindgen_object_drop_ref, __wbindgen_cb_drop, __wbg_log_aedd6896ca471fe6, __wbindgen_string_new, __wbindgen_object_clone_ref, __wbindgen_is_string, __wbg_log_02e20a3c32305fb7, __wbg_log_5c7513aa8c164502, __wbg_mark_abc7631bdced64f0, __wbg_measure_c528ff64085b7146, __wbg_new_693216e109162396, __wbg_stack_0ddaca5d1abfb52f, __wbg_error_09919627ac0992f5, __wbg_Window_f826a1dec163bacb, __wbindgen_is_undefined, __wbg_WorkerGlobalScope_967d186155183d38, __wbg_instanceof_Window_c4b70662a0d2c5ec, __wbg_navigator_480e592af6ad365b, __wbg_clearTimeout_2c1ba0016d8bca41, __wbg_setTimeout_df66d951b1726b78, __wbg_data_9e55e7d79ab13ef1, __wbg_value_84cefeb2408dfe15, __wbg_setoncharacteristicvaluechanged_75ec7773e310719c, __wbg_readValue_eeee467eee29d9ab, __wbg_startNotifications_89d52c5da12f4a73, __wbg_writeValue_5045e53d65cf4416, __wbg_target_cc69dde6c2d9ec90, __wbindgen_string_get, __wbg_requestDevice_94797563349e93d8, __wbg_id_a762586fc34a710d, __wbg_name_48ead2aa58c91524, __wbg_gatt_bca8d85b97b18ec3, __wbg_setongattserverdisconnected_5e832e08b6b5f423, __wbg_clearTimeout_c1f246d6874c0679, __wbg_setTimeout_5314850184d61a44, __wbg_bluetooth_cc8e053613d8eeca, __wbg_setonopen_33b75427f7db7ce1, __wbg_setonerror_cb55f0521ac0da3a, __wbg_setonmessage_ca5f75e4a84134ef, __wbg_new_982fe22cd93d67f7, __wbg_close_f2a10c1de90df5f0, __wbg_send_503c2e7652e95bf5, __wbg_connect_e3ccb7d88e903a95, __wbg_getPrimaryService_e624e0982bcd83b1, __wbg_getCharacteristic_7d2869d1ad7151d2, __wbg_getRandomValues_98117e9a7e993920, __wbg_randomFillSync_64cc7d048f228ca8, __wbg_process_2f24d6544ea7b200, __wbindgen_is_object, __wbg_versions_6164651e75405d4a, __wbg_node_4b517d861cbcb3bc, __wbg_modulerequire_3440a4bcf44437db, __wbg_crypto_98fc271021c7d2ad, __wbg_msCrypto_a2cdb043d2bfe57f, __wbg_new_949bbc1147195c4e, __wbg_newnoargs_be86524d73f67598, __wbg_call_888d259a5fefc347, __wbg_new_0b83d3df67ecb33e, __wbg_push_284486ca27c6aa8b, __wbg_buffer_45280fecb82c83df, __wbg_byteLength_c9e4f1b2bae8fc4d, __wbg_call_346669c262382ad7, __wbg_resolve_d23068002f584f22, __wbg_then_2fcac196782070cc, __wbg_then_8c2d62e8ae5978f7, __wbg_self_c6fbdfc2918d5e58, __wbg_window_baec038b5ab35c54, __wbg_globalThis_3f735a5746d41fbd, __wbg_global_1bc0b39582740e95, __wbg_buffer_397eaa4d72ee94dd, __wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff, __wbg_new_a7ce447f15ff496f, __wbg_set_969ad0a60e51d320, __wbg_length_1eb8fc608a0d4cdb, __wbg_newwithlength_929232475839a482, __wbg_newwithbyteoffset_b638bad8cc090f32, __wbg_subarray_8b658422a224f479, __wbg_set_82a4e8a85e31ac42, __wbindgen_debug_string, __wbindgen_throw, __wbindgen_memory, __wbindgen_closure_wrapper256, __wbindgen_closure_wrapper258, __wbindgen_closure_wrapper260, __wbindgen_closure_wrapper262, __wbindgen_closure_wrapper2880, __wbindgen_closure_wrapper4637 */
43
62
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
44
63
 
45
64
  "use strict";
46
65
  __webpack_require__.r(__webpack_exports__);
47
66
  /* harmony import */ var _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buttplug_rs_ffi_bg.wasm */ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.wasm");
48
67
  /* harmony import */ var _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./buttplug_rs_ffi_bg.js */ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.js");
49
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_create_client", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_create_client"]; });
68
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_create_protobuf_client", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_create_protobuf_client"]; });
50
69
 
51
70
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_free_client", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_free_client"]; });
52
71
 
53
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_parse_client_message", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_parse_client_message"]; });
72
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_client_protobuf_message", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_client_protobuf_message"]; });
54
73
 
55
74
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_create_device", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_create_device"]; });
56
75
 
57
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_parse_device_message", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_parse_device_message"]; });
76
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_device_protobuf_message", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_device_protobuf_message"]; });
58
77
 
59
78
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_free_device", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["buttplug_free_device"]; });
60
79
 
@@ -62,27 +81,29 @@ __webpack_require__.r(__webpack_exports__);
62
81
 
63
82
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_object_drop_ref", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_object_drop_ref"]; });
64
83
 
65
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_object_clone_ref", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_object_clone_ref"]; });
84
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_cb_drop", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_cb_drop"]; });
66
85
 
67
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_e6bbcfdff8337573", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_log_e6bbcfdff8337573"]; });
86
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_aedd6896ca471fe6", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_log_aedd6896ca471fe6"]; });
68
87
 
69
88
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_string_new", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_string_new"]; });
70
89
 
71
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_cb_drop", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_cb_drop"]; });
90
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_object_clone_ref", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_object_clone_ref"]; });
72
91
 
73
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_59cb74e423758ede", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_59cb74e423758ede"]; });
92
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_string", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_is_string"]; });
93
+
94
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_02e20a3c32305fb7", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_log_02e20a3c32305fb7"]; });
74
95
 
75
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_stack_558ba5917b466edd", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_stack_558ba5917b466edd"]; });
96
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_5c7513aa8c164502", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_log_5c7513aa8c164502"]; });
76
97
 
77
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_error_4bb6c2a97407129a", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_error_4bb6c2a97407129a"]; });
98
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_mark_abc7631bdced64f0", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_mark_abc7631bdced64f0"]; });
78
99
 
79
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_b7dcb3facc73166d", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_log_b7dcb3facc73166d"]; });
100
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_measure_c528ff64085b7146", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_measure_c528ff64085b7146"]; });
80
101
 
81
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_96295d68ab8338df", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_log_96295d68ab8338df"]; });
102
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_693216e109162396", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_693216e109162396"]; });
82
103
 
83
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_mark_55c5ecfe509deb6a", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_mark_55c5ecfe509deb6a"]; });
104
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_stack_0ddaca5d1abfb52f", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_stack_0ddaca5d1abfb52f"]; });
84
105
 
85
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_measure_608563106d70d48a", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_measure_608563106d70d48a"]; });
106
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_error_09919627ac0992f5", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_error_09919627ac0992f5"]; });
86
107
 
87
108
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_Window_f826a1dec163bacb", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_Window_f826a1dec163bacb"]; });
88
109
 
@@ -90,123 +111,129 @@ __webpack_require__.r(__webpack_exports__);
90
111
 
91
112
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_WorkerGlobalScope_967d186155183d38", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_WorkerGlobalScope_967d186155183d38"]; });
92
113
 
93
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_instanceof_Window_5993230e7331f098", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_instanceof_Window_5993230e7331f098"]; });
114
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_instanceof_Window_c4b70662a0d2c5ec", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_instanceof_Window_c4b70662a0d2c5ec"]; });
115
+
116
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_navigator_480e592af6ad365b", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_navigator_480e592af6ad365b"]; });
94
117
 
95
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_navigator_da501e0baab77d64", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_navigator_da501e0baab77d64"]; });
118
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_2c1ba0016d8bca41", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_clearTimeout_2c1ba0016d8bca41"]; });
96
119
 
97
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_4fe71f721d0606af", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_clearTimeout_4fe71f721d0606af"]; });
120
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_df66d951b1726b78", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setTimeout_df66d951b1726b78"]; });
98
121
 
99
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_d75246e77e993c5d", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setTimeout_d75246e77e993c5d"]; });
122
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_data_9e55e7d79ab13ef1", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_data_9e55e7d79ab13ef1"]; });
100
123
 
101
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getCharacteristic_c7f9dcc72f7a86f6", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_getCharacteristic_c7f9dcc72f7a86f6"]; });
124
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_value_84cefeb2408dfe15", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_value_84cefeb2408dfe15"]; });
102
125
 
103
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_value_ce5e4fe742d36a1c", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_value_ce5e4fe742d36a1c"]; });
126
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setoncharacteristicvaluechanged_75ec7773e310719c", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setoncharacteristicvaluechanged_75ec7773e310719c"]; });
104
127
 
105
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setoncharacteristicvaluechanged_ece60eda828cb0ef", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setoncharacteristicvaluechanged_ece60eda828cb0ef"]; });
128
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_readValue_eeee467eee29d9ab", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_readValue_eeee467eee29d9ab"]; });
106
129
 
107
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_readValue_988440034a0e12ce", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_readValue_988440034a0e12ce"]; });
130
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_startNotifications_89d52c5da12f4a73", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_startNotifications_89d52c5da12f4a73"]; });
108
131
 
109
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_startNotifications_c88eeb920d1eb45c", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_startNotifications_c88eeb920d1eb45c"]; });
132
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_writeValue_5045e53d65cf4416", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_writeValue_5045e53d65cf4416"]; });
110
133
 
111
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_writeValue_1c451e0da8c56ca9", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_writeValue_1c451e0da8c56ca9"]; });
134
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_target_cc69dde6c2d9ec90", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_target_cc69dde6c2d9ec90"]; });
112
135
 
113
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_target_90b16facc122062f", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_target_90b16facc122062f"]; });
136
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_string_get", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_string_get"]; });
114
137
 
115
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_requestDevice_2d1b71cc28a67a5a", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_requestDevice_2d1b71cc28a67a5a"]; });
138
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_requestDevice_94797563349e93d8", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_requestDevice_94797563349e93d8"]; });
116
139
 
117
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_id_45ecf3258c9f7dd7", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_id_45ecf3258c9f7dd7"]; });
140
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_id_a762586fc34a710d", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_id_a762586fc34a710d"]; });
118
141
 
119
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_name_fe9ee17e821ecea5", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_name_fe9ee17e821ecea5"]; });
142
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_name_48ead2aa58c91524", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_name_48ead2aa58c91524"]; });
120
143
 
121
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_gatt_99df2e5380097484", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_gatt_99df2e5380097484"]; });
144
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_gatt_bca8d85b97b18ec3", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_gatt_bca8d85b97b18ec3"]; });
122
145
 
123
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setongattserverdisconnected_80e78a9d86abdf7b", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setongattserverdisconnected_80e78a9d86abdf7b"]; });
146
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setongattserverdisconnected_5e832e08b6b5f423", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setongattserverdisconnected_5e832e08b6b5f423"]; });
124
147
 
125
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_af54ac34efe00770", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_clearTimeout_af54ac34efe00770"]; });
148
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_c1f246d6874c0679", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_clearTimeout_c1f246d6874c0679"]; });
126
149
 
127
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_c5be4c054c4d7da5", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setTimeout_c5be4c054c4d7da5"]; });
150
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_5314850184d61a44", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setTimeout_5314850184d61a44"]; });
128
151
 
129
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_bluetooth_18ee05df03af2352", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_bluetooth_18ee05df03af2352"]; });
152
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_bluetooth_cc8e053613d8eeca", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_bluetooth_cc8e053613d8eeca"]; });
130
153
 
131
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonopen_c3975a4f895a052a", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setonopen_c3975a4f895a052a"]; });
154
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonopen_33b75427f7db7ce1", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setonopen_33b75427f7db7ce1"]; });
132
155
 
133
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonerror_add0a293158012fc", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setonerror_add0a293158012fc"]; });
156
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonerror_cb55f0521ac0da3a", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setonerror_cb55f0521ac0da3a"]; });
134
157
 
135
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonmessage_0d42c79be06de84f", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setonmessage_0d42c79be06de84f"]; });
158
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonmessage_ca5f75e4a84134ef", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_setonmessage_ca5f75e4a84134ef"]; });
136
159
 
137
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_fd9f3bfb89d96362", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_fd9f3bfb89d96362"]; });
160
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_982fe22cd93d67f7", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_982fe22cd93d67f7"]; });
138
161
 
139
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_close_3797d4fae932c9b9", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_close_3797d4fae932c9b9"]; });
162
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_close_f2a10c1de90df5f0", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_close_f2a10c1de90df5f0"]; });
140
163
 
141
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_send_ca85b0e6799803ef", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_send_ca85b0e6799803ef"]; });
164
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_send_503c2e7652e95bf5", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_send_503c2e7652e95bf5"]; });
142
165
 
143
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_connect_d31afa0760e2294e", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_connect_d31afa0760e2294e"]; });
166
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_connect_e3ccb7d88e903a95", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_connect_e3ccb7d88e903a95"]; });
144
167
 
145
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getPrimaryService_903e198e60097b4a", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_getPrimaryService_903e198e60097b4a"]; });
168
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getPrimaryService_e624e0982bcd83b1", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_getPrimaryService_e624e0982bcd83b1"]; });
146
169
 
147
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_data_437e74b835241e70", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_data_437e74b835241e70"]; });
170
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getCharacteristic_7d2869d1ad7151d2", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_getCharacteristic_7d2869d1ad7151d2"]; });
148
171
 
149
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_e5847d15cc228e4f", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_call_e5847d15cc228e4f"]; });
172
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getRandomValues_98117e9a7e993920", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_getRandomValues_98117e9a7e993920"]; });
150
173
 
151
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_7c995f2adeba6fb5", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_7c995f2adeba6fb5"]; });
174
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_randomFillSync_64cc7d048f228ca8", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_randomFillSync_64cc7d048f228ca8"]; });
152
175
 
153
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_push_3f7c76b58919ce0d", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_push_3f7c76b58919ce0d"]; });
176
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_process_2f24d6544ea7b200", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_process_2f24d6544ea7b200"]; });
154
177
 
155
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_32296c67828fee6c", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_buffer_32296c67828fee6c"]; });
178
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_object", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_is_object"]; });
156
179
 
157
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_byteLength_da948e1afd83c8f8", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_byteLength_da948e1afd83c8f8"]; });
180
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_versions_6164651e75405d4a", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_versions_6164651e75405d4a"]; });
158
181
 
159
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newnoargs_2349ba6aefe72376", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_newnoargs_2349ba6aefe72376"]; });
182
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_node_4b517d861cbcb3bc", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_node_4b517d861cbcb3bc"]; });
160
183
 
161
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_d63edb857edf16f6", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_call_d63edb857edf16f6"]; });
184
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_modulerequire_3440a4bcf44437db", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_modulerequire_3440a4bcf44437db"]; });
162
185
 
163
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_59986c8731bebaa1", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_59986c8731bebaa1"]; });
186
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_crypto_98fc271021c7d2ad", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_crypto_98fc271021c7d2ad"]; });
164
187
 
165
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_resolve_e0690143406c88cb", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_resolve_e0690143406c88cb"]; });
188
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_msCrypto_a2cdb043d2bfe57f", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_msCrypto_a2cdb043d2bfe57f"]; });
166
189
 
167
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_9caf23122e4fd5d3", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_then_9caf23122e4fd5d3"]; });
190
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_949bbc1147195c4e", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_949bbc1147195c4e"]; });
168
191
 
169
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_16663faf60ffbe95", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_then_16663faf60ffbe95"]; });
192
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newnoargs_be86524d73f67598", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_newnoargs_be86524d73f67598"]; });
170
193
 
171
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_self_35a0fda3eb965abe", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_self_35a0fda3eb965abe"]; });
194
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_888d259a5fefc347", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_call_888d259a5fefc347"]; });
172
195
 
173
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_window_88a6f88dd3a474f1", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_window_88a6f88dd3a474f1"]; });
196
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_0b83d3df67ecb33e", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_0b83d3df67ecb33e"]; });
174
197
 
175
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_globalThis_1d843c4ad7b6a1f5", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_globalThis_1d843c4ad7b6a1f5"]; });
198
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_push_284486ca27c6aa8b", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_push_284486ca27c6aa8b"]; });
176
199
 
177
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_global_294ce70448e8fbbf", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_global_294ce70448e8fbbf"]; });
200
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_45280fecb82c83df", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_buffer_45280fecb82c83df"]; });
178
201
 
179
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_0be9fb426f2dd82b", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_buffer_0be9fb426f2dd82b"]; });
202
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_byteLength_c9e4f1b2bae8fc4d", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_byteLength_c9e4f1b2bae8fc4d"]; });
180
203
 
181
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffsetandlength_85b7ce82b001ea08", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_newwithbyteoffsetandlength_85b7ce82b001ea08"]; });
204
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_346669c262382ad7", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_call_346669c262382ad7"]; });
182
205
 
183
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_length_3a5138f465b971ad", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_length_3a5138f465b971ad"]; });
206
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_resolve_d23068002f584f22", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_resolve_d23068002f584f22"]; });
184
207
 
185
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_4e8d18dbf9cd5240", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_4e8d18dbf9cd5240"]; });
208
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_2fcac196782070cc", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_then_2fcac196782070cc"]; });
186
209
 
187
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_4769de301eb521d7", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_set_4769de301eb521d7"]; });
210
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_8c2d62e8ae5978f7", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_then_8c2d62e8ae5978f7"]; });
188
211
 
189
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffset_0a6b0ce9d45270c3", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_newwithbyteoffset_0a6b0ce9d45270c3"]; });
212
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_self_c6fbdfc2918d5e58", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_self_c6fbdfc2918d5e58"]; });
190
213
 
191
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_7e15d36563072b19", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_set_7e15d36563072b19"]; });
214
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_window_baec038b5ab35c54", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_window_baec038b5ab35c54"]; });
192
215
 
193
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getRandomValues_11115a852729f4e8", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_getRandomValues_11115a852729f4e8"]; });
216
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_globalThis_3f735a5746d41fbd", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_globalThis_3f735a5746d41fbd"]; });
194
217
 
195
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_randomFillSync_a2d002fc3b8e30f7", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_randomFillSync_a2d002fc3b8e30f7"]; });
218
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_global_1bc0b39582740e95", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_global_1bc0b39582740e95"]; });
196
219
 
197
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_self_a5f0fe5564782787", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_self_a5f0fe5564782787"]; });
220
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_397eaa4d72ee94dd", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_buffer_397eaa4d72ee94dd"]; });
198
221
 
199
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_static_accessor_MODULE_7f278c5446c126c8", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_static_accessor_MODULE_7f278c5446c126c8"]; });
222
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff"]; });
200
223
 
201
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_require_29e58b5f6f133563", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_require_29e58b5f6f133563"]; });
224
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_a7ce447f15ff496f", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_new_a7ce447f15ff496f"]; });
202
225
 
203
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_crypto_d91429ea1a087f70", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_crypto_d91429ea1a087f70"]; });
226
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_969ad0a60e51d320", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_set_969ad0a60e51d320"]; });
204
227
 
205
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_msCrypto_c8be2bb4fc7d8cd3", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_msCrypto_c8be2bb4fc7d8cd3"]; });
228
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_length_1eb8fc608a0d4cdb", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_length_1eb8fc608a0d4cdb"]; });
206
229
 
207
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_string", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_is_string"]; });
230
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithlength_929232475839a482", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_newwithlength_929232475839a482"]; });
208
231
 
209
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_string_get", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_string_get"]; });
232
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffset_b638bad8cc090f32", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_newwithbyteoffset_b638bad8cc090f32"]; });
233
+
234
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_subarray_8b658422a224f479", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_subarray_8b658422a224f479"]; });
235
+
236
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_82a4e8a85e31ac42", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbg_set_82a4e8a85e31ac42"]; });
210
237
 
211
238
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_debug_string", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_debug_string"]; });
212
239
 
@@ -214,17 +241,17 @@ __webpack_require__.r(__webpack_exports__);
214
241
 
215
242
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_memory", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_memory"]; });
216
243
 
217
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper677", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper677"]; });
244
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper256", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper256"]; });
218
245
 
219
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper679", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper679"]; });
246
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper258", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper258"]; });
220
247
 
221
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper681", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper681"]; });
248
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper260", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper260"]; });
222
249
 
223
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper683", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper683"]; });
250
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper262", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper262"]; });
224
251
 
225
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper2493", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper2493"]; });
252
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper2880", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper2880"]; });
226
253
 
227
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper4268", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper4268"]; });
254
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper4637", function() { return _buttplug_rs_ffi_bg_js__WEBPACK_IMPORTED_MODULE_1__["__wbindgen_closure_wrapper4637"]; });
228
255
 
229
256
 
230
257
 
@@ -235,102 +262,340 @@ __webpack_require__.r(__webpack_exports__);
235
262
  /*!***************************************************!*\
236
263
  !*** ./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.js ***!
237
264
  \***************************************************/
238
- /*! exports provided: buttplug_create_client, buttplug_free_client, buttplug_parse_client_message, buttplug_create_device, buttplug_parse_device_message, buttplug_free_device, buttplug_activate_env_logger, __wbindgen_object_drop_ref, __wbindgen_object_clone_ref, __wbg_log_e6bbcfdff8337573, __wbindgen_string_new, __wbindgen_cb_drop, __wbg_new_59cb74e423758ede, __wbg_stack_558ba5917b466edd, __wbg_error_4bb6c2a97407129a, __wbg_log_b7dcb3facc73166d, __wbg_log_96295d68ab8338df, __wbg_mark_55c5ecfe509deb6a, __wbg_measure_608563106d70d48a, __wbg_Window_f826a1dec163bacb, __wbindgen_is_undefined, __wbg_WorkerGlobalScope_967d186155183d38, __wbg_instanceof_Window_5993230e7331f098, __wbg_navigator_da501e0baab77d64, __wbg_clearTimeout_4fe71f721d0606af, __wbg_setTimeout_d75246e77e993c5d, __wbg_getCharacteristic_c7f9dcc72f7a86f6, __wbg_value_ce5e4fe742d36a1c, __wbg_setoncharacteristicvaluechanged_ece60eda828cb0ef, __wbg_readValue_988440034a0e12ce, __wbg_startNotifications_c88eeb920d1eb45c, __wbg_writeValue_1c451e0da8c56ca9, __wbg_target_90b16facc122062f, __wbg_requestDevice_2d1b71cc28a67a5a, __wbg_id_45ecf3258c9f7dd7, __wbg_name_fe9ee17e821ecea5, __wbg_gatt_99df2e5380097484, __wbg_setongattserverdisconnected_80e78a9d86abdf7b, __wbg_clearTimeout_af54ac34efe00770, __wbg_setTimeout_c5be4c054c4d7da5, __wbg_bluetooth_18ee05df03af2352, __wbg_setonopen_c3975a4f895a052a, __wbg_setonerror_add0a293158012fc, __wbg_setonmessage_0d42c79be06de84f, __wbg_new_fd9f3bfb89d96362, __wbg_close_3797d4fae932c9b9, __wbg_send_ca85b0e6799803ef, __wbg_connect_d31afa0760e2294e, __wbg_getPrimaryService_903e198e60097b4a, __wbg_data_437e74b835241e70, __wbg_call_e5847d15cc228e4f, __wbg_new_7c995f2adeba6fb5, __wbg_push_3f7c76b58919ce0d, __wbg_buffer_32296c67828fee6c, __wbg_byteLength_da948e1afd83c8f8, __wbg_newnoargs_2349ba6aefe72376, __wbg_call_d63edb857edf16f6, __wbg_new_59986c8731bebaa1, __wbg_resolve_e0690143406c88cb, __wbg_then_9caf23122e4fd5d3, __wbg_then_16663faf60ffbe95, __wbg_self_35a0fda3eb965abe, __wbg_window_88a6f88dd3a474f1, __wbg_globalThis_1d843c4ad7b6a1f5, __wbg_global_294ce70448e8fbbf, __wbg_buffer_0be9fb426f2dd82b, __wbg_newwithbyteoffsetandlength_85b7ce82b001ea08, __wbg_length_3a5138f465b971ad, __wbg_new_4e8d18dbf9cd5240, __wbg_set_4769de301eb521d7, __wbg_newwithbyteoffset_0a6b0ce9d45270c3, __wbg_set_7e15d36563072b19, __wbg_getRandomValues_11115a852729f4e8, __wbg_randomFillSync_a2d002fc3b8e30f7, __wbg_self_a5f0fe5564782787, __wbg_static_accessor_MODULE_7f278c5446c126c8, __wbg_require_29e58b5f6f133563, __wbg_crypto_d91429ea1a087f70, __wbg_msCrypto_c8be2bb4fc7d8cd3, __wbindgen_is_string, __wbindgen_string_get, __wbindgen_debug_string, __wbindgen_throw, __wbindgen_memory, __wbindgen_closure_wrapper677, __wbindgen_closure_wrapper679, __wbindgen_closure_wrapper681, __wbindgen_closure_wrapper683, __wbindgen_closure_wrapper2493, __wbindgen_closure_wrapper4268 */
265
+ /*! exports provided: buttplug_create_protobuf_client, buttplug_free_client, buttplug_client_protobuf_message, buttplug_create_device, buttplug_device_protobuf_message, buttplug_free_device, buttplug_activate_env_logger, __wbindgen_object_drop_ref, __wbindgen_cb_drop, __wbg_log_aedd6896ca471fe6, __wbindgen_string_new, __wbindgen_object_clone_ref, __wbindgen_is_string, __wbg_log_02e20a3c32305fb7, __wbg_log_5c7513aa8c164502, __wbg_mark_abc7631bdced64f0, __wbg_measure_c528ff64085b7146, __wbg_new_693216e109162396, __wbg_stack_0ddaca5d1abfb52f, __wbg_error_09919627ac0992f5, __wbg_Window_f826a1dec163bacb, __wbindgen_is_undefined, __wbg_WorkerGlobalScope_967d186155183d38, __wbg_instanceof_Window_c4b70662a0d2c5ec, __wbg_navigator_480e592af6ad365b, __wbg_clearTimeout_2c1ba0016d8bca41, __wbg_setTimeout_df66d951b1726b78, __wbg_data_9e55e7d79ab13ef1, __wbg_value_84cefeb2408dfe15, __wbg_setoncharacteristicvaluechanged_75ec7773e310719c, __wbg_readValue_eeee467eee29d9ab, __wbg_startNotifications_89d52c5da12f4a73, __wbg_writeValue_5045e53d65cf4416, __wbg_target_cc69dde6c2d9ec90, __wbindgen_string_get, __wbg_requestDevice_94797563349e93d8, __wbg_id_a762586fc34a710d, __wbg_name_48ead2aa58c91524, __wbg_gatt_bca8d85b97b18ec3, __wbg_setongattserverdisconnected_5e832e08b6b5f423, __wbg_clearTimeout_c1f246d6874c0679, __wbg_setTimeout_5314850184d61a44, __wbg_bluetooth_cc8e053613d8eeca, __wbg_setonopen_33b75427f7db7ce1, __wbg_setonerror_cb55f0521ac0da3a, __wbg_setonmessage_ca5f75e4a84134ef, __wbg_new_982fe22cd93d67f7, __wbg_close_f2a10c1de90df5f0, __wbg_send_503c2e7652e95bf5, __wbg_connect_e3ccb7d88e903a95, __wbg_getPrimaryService_e624e0982bcd83b1, __wbg_getCharacteristic_7d2869d1ad7151d2, __wbg_getRandomValues_98117e9a7e993920, __wbg_randomFillSync_64cc7d048f228ca8, __wbg_process_2f24d6544ea7b200, __wbindgen_is_object, __wbg_versions_6164651e75405d4a, __wbg_node_4b517d861cbcb3bc, __wbg_modulerequire_3440a4bcf44437db, __wbg_crypto_98fc271021c7d2ad, __wbg_msCrypto_a2cdb043d2bfe57f, __wbg_new_949bbc1147195c4e, __wbg_newnoargs_be86524d73f67598, __wbg_call_888d259a5fefc347, __wbg_new_0b83d3df67ecb33e, __wbg_push_284486ca27c6aa8b, __wbg_buffer_45280fecb82c83df, __wbg_byteLength_c9e4f1b2bae8fc4d, __wbg_call_346669c262382ad7, __wbg_resolve_d23068002f584f22, __wbg_then_2fcac196782070cc, __wbg_then_8c2d62e8ae5978f7, __wbg_self_c6fbdfc2918d5e58, __wbg_window_baec038b5ab35c54, __wbg_globalThis_3f735a5746d41fbd, __wbg_global_1bc0b39582740e95, __wbg_buffer_397eaa4d72ee94dd, __wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff, __wbg_new_a7ce447f15ff496f, __wbg_set_969ad0a60e51d320, __wbg_length_1eb8fc608a0d4cdb, __wbg_newwithlength_929232475839a482, __wbg_newwithbyteoffset_b638bad8cc090f32, __wbg_subarray_8b658422a224f479, __wbg_set_82a4e8a85e31ac42, __wbindgen_debug_string, __wbindgen_throw, __wbindgen_memory, __wbindgen_closure_wrapper256, __wbindgen_closure_wrapper258, __wbindgen_closure_wrapper260, __wbindgen_closure_wrapper262, __wbindgen_closure_wrapper2880, __wbindgen_closure_wrapper4637 */
266
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
267
+
268
+ "use strict";
269
+ __webpack_require__.r(__webpack_exports__);
270
+ /* harmony import */ var _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! #buttplug_rs_ffi_bg */ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg_web.js");
271
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_create_protobuf_client", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["buttplug_create_protobuf_client"]; });
272
+
273
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_free_client", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["buttplug_free_client"]; });
274
+
275
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_client_protobuf_message", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["buttplug_client_protobuf_message"]; });
276
+
277
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_create_device", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["buttplug_create_device"]; });
278
+
279
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_device_protobuf_message", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["buttplug_device_protobuf_message"]; });
280
+
281
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_free_device", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["buttplug_free_device"]; });
282
+
283
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttplug_activate_env_logger", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["buttplug_activate_env_logger"]; });
284
+
285
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_object_drop_ref", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_object_drop_ref"]; });
286
+
287
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_cb_drop", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_cb_drop"]; });
288
+
289
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_aedd6896ca471fe6", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_log_aedd6896ca471fe6"]; });
290
+
291
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_string_new", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_string_new"]; });
292
+
293
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_object_clone_ref", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_object_clone_ref"]; });
294
+
295
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_string", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_is_string"]; });
296
+
297
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_02e20a3c32305fb7", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_log_02e20a3c32305fb7"]; });
298
+
299
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_5c7513aa8c164502", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_log_5c7513aa8c164502"]; });
300
+
301
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_mark_abc7631bdced64f0", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_mark_abc7631bdced64f0"]; });
302
+
303
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_measure_c528ff64085b7146", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_measure_c528ff64085b7146"]; });
304
+
305
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_693216e109162396", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_new_693216e109162396"]; });
306
+
307
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_stack_0ddaca5d1abfb52f", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_stack_0ddaca5d1abfb52f"]; });
308
+
309
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_error_09919627ac0992f5", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_error_09919627ac0992f5"]; });
310
+
311
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_Window_f826a1dec163bacb", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_Window_f826a1dec163bacb"]; });
312
+
313
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_undefined", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_is_undefined"]; });
314
+
315
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_WorkerGlobalScope_967d186155183d38", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_WorkerGlobalScope_967d186155183d38"]; });
316
+
317
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_instanceof_Window_c4b70662a0d2c5ec", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_instanceof_Window_c4b70662a0d2c5ec"]; });
318
+
319
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_navigator_480e592af6ad365b", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_navigator_480e592af6ad365b"]; });
320
+
321
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_2c1ba0016d8bca41", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_clearTimeout_2c1ba0016d8bca41"]; });
322
+
323
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_df66d951b1726b78", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_setTimeout_df66d951b1726b78"]; });
324
+
325
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_data_9e55e7d79ab13ef1", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_data_9e55e7d79ab13ef1"]; });
326
+
327
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_value_84cefeb2408dfe15", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_value_84cefeb2408dfe15"]; });
328
+
329
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setoncharacteristicvaluechanged_75ec7773e310719c", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_setoncharacteristicvaluechanged_75ec7773e310719c"]; });
330
+
331
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_readValue_eeee467eee29d9ab", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_readValue_eeee467eee29d9ab"]; });
332
+
333
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_startNotifications_89d52c5da12f4a73", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_startNotifications_89d52c5da12f4a73"]; });
334
+
335
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_writeValue_5045e53d65cf4416", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_writeValue_5045e53d65cf4416"]; });
336
+
337
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_target_cc69dde6c2d9ec90", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_target_cc69dde6c2d9ec90"]; });
338
+
339
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_string_get", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_string_get"]; });
340
+
341
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_requestDevice_94797563349e93d8", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_requestDevice_94797563349e93d8"]; });
342
+
343
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_id_a762586fc34a710d", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_id_a762586fc34a710d"]; });
344
+
345
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_name_48ead2aa58c91524", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_name_48ead2aa58c91524"]; });
346
+
347
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_gatt_bca8d85b97b18ec3", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_gatt_bca8d85b97b18ec3"]; });
348
+
349
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setongattserverdisconnected_5e832e08b6b5f423", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_setongattserverdisconnected_5e832e08b6b5f423"]; });
350
+
351
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_c1f246d6874c0679", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_clearTimeout_c1f246d6874c0679"]; });
352
+
353
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_5314850184d61a44", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_setTimeout_5314850184d61a44"]; });
354
+
355
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_bluetooth_cc8e053613d8eeca", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_bluetooth_cc8e053613d8eeca"]; });
356
+
357
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonopen_33b75427f7db7ce1", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_setonopen_33b75427f7db7ce1"]; });
358
+
359
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonerror_cb55f0521ac0da3a", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_setonerror_cb55f0521ac0da3a"]; });
360
+
361
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonmessage_ca5f75e4a84134ef", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_setonmessage_ca5f75e4a84134ef"]; });
362
+
363
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_982fe22cd93d67f7", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_new_982fe22cd93d67f7"]; });
364
+
365
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_close_f2a10c1de90df5f0", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_close_f2a10c1de90df5f0"]; });
366
+
367
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_send_503c2e7652e95bf5", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_send_503c2e7652e95bf5"]; });
368
+
369
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_connect_e3ccb7d88e903a95", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_connect_e3ccb7d88e903a95"]; });
370
+
371
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getPrimaryService_e624e0982bcd83b1", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_getPrimaryService_e624e0982bcd83b1"]; });
372
+
373
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getCharacteristic_7d2869d1ad7151d2", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_getCharacteristic_7d2869d1ad7151d2"]; });
374
+
375
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_getRandomValues_98117e9a7e993920", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_getRandomValues_98117e9a7e993920"]; });
376
+
377
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_randomFillSync_64cc7d048f228ca8", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_randomFillSync_64cc7d048f228ca8"]; });
378
+
379
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_process_2f24d6544ea7b200", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_process_2f24d6544ea7b200"]; });
380
+
381
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_object", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_is_object"]; });
382
+
383
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_versions_6164651e75405d4a", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_versions_6164651e75405d4a"]; });
384
+
385
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_node_4b517d861cbcb3bc", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_node_4b517d861cbcb3bc"]; });
386
+
387
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_modulerequire_3440a4bcf44437db", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_modulerequire_3440a4bcf44437db"]; });
388
+
389
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_crypto_98fc271021c7d2ad", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_crypto_98fc271021c7d2ad"]; });
390
+
391
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_msCrypto_a2cdb043d2bfe57f", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_msCrypto_a2cdb043d2bfe57f"]; });
392
+
393
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_949bbc1147195c4e", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_new_949bbc1147195c4e"]; });
394
+
395
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newnoargs_be86524d73f67598", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_newnoargs_be86524d73f67598"]; });
396
+
397
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_888d259a5fefc347", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_call_888d259a5fefc347"]; });
398
+
399
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_0b83d3df67ecb33e", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_new_0b83d3df67ecb33e"]; });
400
+
401
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_push_284486ca27c6aa8b", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_push_284486ca27c6aa8b"]; });
402
+
403
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_45280fecb82c83df", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_buffer_45280fecb82c83df"]; });
404
+
405
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_byteLength_c9e4f1b2bae8fc4d", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_byteLength_c9e4f1b2bae8fc4d"]; });
406
+
407
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_346669c262382ad7", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_call_346669c262382ad7"]; });
408
+
409
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_resolve_d23068002f584f22", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_resolve_d23068002f584f22"]; });
410
+
411
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_2fcac196782070cc", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_then_2fcac196782070cc"]; });
412
+
413
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_8c2d62e8ae5978f7", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_then_8c2d62e8ae5978f7"]; });
414
+
415
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_self_c6fbdfc2918d5e58", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_self_c6fbdfc2918d5e58"]; });
416
+
417
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_window_baec038b5ab35c54", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_window_baec038b5ab35c54"]; });
418
+
419
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_globalThis_3f735a5746d41fbd", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_globalThis_3f735a5746d41fbd"]; });
420
+
421
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_global_1bc0b39582740e95", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_global_1bc0b39582740e95"]; });
422
+
423
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_397eaa4d72ee94dd", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_buffer_397eaa4d72ee94dd"]; });
424
+
425
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff"]; });
426
+
427
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_a7ce447f15ff496f", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_new_a7ce447f15ff496f"]; });
428
+
429
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_969ad0a60e51d320", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_set_969ad0a60e51d320"]; });
430
+
431
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_length_1eb8fc608a0d4cdb", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_length_1eb8fc608a0d4cdb"]; });
432
+
433
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithlength_929232475839a482", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_newwithlength_929232475839a482"]; });
434
+
435
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffset_b638bad8cc090f32", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_newwithbyteoffset_b638bad8cc090f32"]; });
436
+
437
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_subarray_8b658422a224f479", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_subarray_8b658422a224f479"]; });
438
+
439
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_82a4e8a85e31ac42", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbg_set_82a4e8a85e31ac42"]; });
440
+
441
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_debug_string", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_debug_string"]; });
442
+
443
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_throw", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_throw"]; });
444
+
445
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_memory", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_memory"]; });
446
+
447
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper256", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_closure_wrapper256"]; });
448
+
449
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper258", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_closure_wrapper258"]; });
450
+
451
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper260", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_closure_wrapper260"]; });
452
+
453
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper262", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_closure_wrapper262"]; });
454
+
455
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper2880", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_closure_wrapper2880"]; });
456
+
457
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper4637", function() { return _buttplug_rs_ffi_bg__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_closure_wrapper4637"]; });
458
+
459
+ // BEGIN_MODULARIZE
460
+ // This file was modified by scripts/modularize.js to create Node ESM-compatible bindings.
461
+ // Do not modify this file directly as your changes will be overwritten.
462
+ // END_MODULARIZE
463
+
464
+
465
+
466
+
467
+ /***/ }),
468
+
469
+ /***/ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.wasm":
470
+ /*!*****************************************************!*\
471
+ !*** ./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.wasm ***!
472
+ \*****************************************************/
473
+ /*! exports provided: memory, buttplug_create_protobuf_client, buttplug_free_client, buttplug_client_protobuf_message, buttplug_create_device, buttplug_device_protobuf_message, buttplug_free_device, buttplug_activate_env_logger, __wbindgen_malloc, __wbindgen_realloc, __wbindgen_export_2, _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0801f0b68538ccb2, _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h6d5d487c79cfdf49, _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha721fdbd23ca35f2, __wbindgen_free, __wbindgen_exn_store */
474
+ /***/ (function(module, exports, __webpack_require__) {
475
+
476
+ "use strict";
477
+ // Instantiate WebAssembly module
478
+ var wasmExports = __webpack_require__.w[module.i];
479
+ __webpack_require__.r(exports);
480
+ // export exports from WebAssembly module
481
+ for(var name in wasmExports) if(name != "__webpack_init__") exports[name] = wasmExports[name];
482
+ // exec imports from WebAssembly module (for esm order)
483
+ /* harmony import */ var m0 = __webpack_require__(/*! ./buttplug_rs_ffi_bg.js */ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.js");
484
+
485
+
486
+ // exec wasm module
487
+ wasmExports["__webpack_init__"]()
488
+
489
+ /***/ }),
490
+
491
+ /***/ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg_web.js":
492
+ /*!*******************************************************!*\
493
+ !*** ./src/buttplug-rs-ffi/buttplug_rs_ffi_bg_web.js ***!
494
+ \*******************************************************/
495
+ /*! exports provided: buttplug_create_protobuf_client, buttplug_free_client, buttplug_client_protobuf_message, buttplug_create_device, buttplug_device_protobuf_message, buttplug_free_device, buttplug_activate_env_logger, __wbindgen_object_drop_ref, __wbindgen_cb_drop, __wbg_log_aedd6896ca471fe6, __wbindgen_string_new, __wbindgen_object_clone_ref, __wbindgen_is_string, __wbg_log_02e20a3c32305fb7, __wbg_log_5c7513aa8c164502, __wbg_mark_abc7631bdced64f0, __wbg_measure_c528ff64085b7146, __wbg_new_693216e109162396, __wbg_stack_0ddaca5d1abfb52f, __wbg_error_09919627ac0992f5, __wbg_Window_f826a1dec163bacb, __wbindgen_is_undefined, __wbg_WorkerGlobalScope_967d186155183d38, __wbg_instanceof_Window_c4b70662a0d2c5ec, __wbg_navigator_480e592af6ad365b, __wbg_clearTimeout_2c1ba0016d8bca41, __wbg_setTimeout_df66d951b1726b78, __wbg_data_9e55e7d79ab13ef1, __wbg_value_84cefeb2408dfe15, __wbg_setoncharacteristicvaluechanged_75ec7773e310719c, __wbg_readValue_eeee467eee29d9ab, __wbg_startNotifications_89d52c5da12f4a73, __wbg_writeValue_5045e53d65cf4416, __wbg_target_cc69dde6c2d9ec90, __wbindgen_string_get, __wbg_requestDevice_94797563349e93d8, __wbg_id_a762586fc34a710d, __wbg_name_48ead2aa58c91524, __wbg_gatt_bca8d85b97b18ec3, __wbg_setongattserverdisconnected_5e832e08b6b5f423, __wbg_clearTimeout_c1f246d6874c0679, __wbg_setTimeout_5314850184d61a44, __wbg_bluetooth_cc8e053613d8eeca, __wbg_setonopen_33b75427f7db7ce1, __wbg_setonerror_cb55f0521ac0da3a, __wbg_setonmessage_ca5f75e4a84134ef, __wbg_new_982fe22cd93d67f7, __wbg_close_f2a10c1de90df5f0, __wbg_send_503c2e7652e95bf5, __wbg_connect_e3ccb7d88e903a95, __wbg_getPrimaryService_e624e0982bcd83b1, __wbg_getCharacteristic_7d2869d1ad7151d2, __wbg_getRandomValues_98117e9a7e993920, __wbg_randomFillSync_64cc7d048f228ca8, __wbg_process_2f24d6544ea7b200, __wbindgen_is_object, __wbg_versions_6164651e75405d4a, __wbg_node_4b517d861cbcb3bc, __wbg_modulerequire_3440a4bcf44437db, __wbg_crypto_98fc271021c7d2ad, __wbg_msCrypto_a2cdb043d2bfe57f, __wbg_new_949bbc1147195c4e, __wbg_newnoargs_be86524d73f67598, __wbg_call_888d259a5fefc347, __wbg_new_0b83d3df67ecb33e, __wbg_push_284486ca27c6aa8b, __wbg_buffer_45280fecb82c83df, __wbg_byteLength_c9e4f1b2bae8fc4d, __wbg_call_346669c262382ad7, __wbg_resolve_d23068002f584f22, __wbg_then_2fcac196782070cc, __wbg_then_8c2d62e8ae5978f7, __wbg_self_c6fbdfc2918d5e58, __wbg_window_baec038b5ab35c54, __wbg_globalThis_3f735a5746d41fbd, __wbg_global_1bc0b39582740e95, __wbg_buffer_397eaa4d72ee94dd, __wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff, __wbg_new_a7ce447f15ff496f, __wbg_set_969ad0a60e51d320, __wbg_length_1eb8fc608a0d4cdb, __wbg_newwithlength_929232475839a482, __wbg_newwithbyteoffset_b638bad8cc090f32, __wbg_subarray_8b658422a224f479, __wbg_set_82a4e8a85e31ac42, __wbindgen_debug_string, __wbindgen_throw, __wbindgen_memory, __wbindgen_closure_wrapper256, __wbindgen_closure_wrapper258, __wbindgen_closure_wrapper260, __wbindgen_closure_wrapper262, __wbindgen_closure_wrapper2880, __wbindgen_closure_wrapper4637 */
239
496
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
240
497
 
241
498
  "use strict";
242
499
  __webpack_require__.r(__webpack_exports__);
243
- /* WEBPACK VAR INJECTION */(function(module, global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_create_client", function() { return buttplug_create_client; });
500
+ /* WEBPACK VAR INJECTION */(function(module, global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_create_protobuf_client", function() { return buttplug_create_protobuf_client; });
244
501
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_free_client", function() { return buttplug_free_client; });
245
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_parse_client_message", function() { return buttplug_parse_client_message; });
502
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_client_protobuf_message", function() { return buttplug_client_protobuf_message; });
246
503
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_create_device", function() { return buttplug_create_device; });
247
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_parse_device_message", function() { return buttplug_parse_device_message; });
504
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_device_protobuf_message", function() { return buttplug_device_protobuf_message; });
248
505
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_free_device", function() { return buttplug_free_device; });
249
506
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttplug_activate_env_logger", function() { return buttplug_activate_env_logger; });
250
507
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_object_drop_ref", function() { return __wbindgen_object_drop_ref; });
251
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_object_clone_ref", function() { return __wbindgen_object_clone_ref; });
252
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_e6bbcfdff8337573", function() { return __wbg_log_e6bbcfdff8337573; });
253
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_string_new", function() { return __wbindgen_string_new; });
254
508
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_cb_drop", function() { return __wbindgen_cb_drop; });
255
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_59cb74e423758ede", function() { return __wbg_new_59cb74e423758ede; });
256
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_stack_558ba5917b466edd", function() { return __wbg_stack_558ba5917b466edd; });
257
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_error_4bb6c2a97407129a", function() { return __wbg_error_4bb6c2a97407129a; });
258
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_b7dcb3facc73166d", function() { return __wbg_log_b7dcb3facc73166d; });
259
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_96295d68ab8338df", function() { return __wbg_log_96295d68ab8338df; });
260
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_mark_55c5ecfe509deb6a", function() { return __wbg_mark_55c5ecfe509deb6a; });
261
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_measure_608563106d70d48a", function() { return __wbg_measure_608563106d70d48a; });
509
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_aedd6896ca471fe6", function() { return __wbg_log_aedd6896ca471fe6; });
510
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_string_new", function() { return __wbindgen_string_new; });
511
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_object_clone_ref", function() { return __wbindgen_object_clone_ref; });
512
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_string", function() { return __wbindgen_is_string; });
513
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_02e20a3c32305fb7", function() { return __wbg_log_02e20a3c32305fb7; });
514
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_log_5c7513aa8c164502", function() { return __wbg_log_5c7513aa8c164502; });
515
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_mark_abc7631bdced64f0", function() { return __wbg_mark_abc7631bdced64f0; });
516
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_measure_c528ff64085b7146", function() { return __wbg_measure_c528ff64085b7146; });
517
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_693216e109162396", function() { return __wbg_new_693216e109162396; });
518
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_stack_0ddaca5d1abfb52f", function() { return __wbg_stack_0ddaca5d1abfb52f; });
519
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_error_09919627ac0992f5", function() { return __wbg_error_09919627ac0992f5; });
262
520
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_Window_f826a1dec163bacb", function() { return __wbg_Window_f826a1dec163bacb; });
263
521
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_undefined", function() { return __wbindgen_is_undefined; });
264
522
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_WorkerGlobalScope_967d186155183d38", function() { return __wbg_WorkerGlobalScope_967d186155183d38; });
265
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_instanceof_Window_5993230e7331f098", function() { return __wbg_instanceof_Window_5993230e7331f098; });
266
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_navigator_da501e0baab77d64", function() { return __wbg_navigator_da501e0baab77d64; });
267
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_4fe71f721d0606af", function() { return __wbg_clearTimeout_4fe71f721d0606af; });
268
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_d75246e77e993c5d", function() { return __wbg_setTimeout_d75246e77e993c5d; });
269
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_getCharacteristic_c7f9dcc72f7a86f6", function() { return __wbg_getCharacteristic_c7f9dcc72f7a86f6; });
270
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_value_ce5e4fe742d36a1c", function() { return __wbg_value_ce5e4fe742d36a1c; });
271
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setoncharacteristicvaluechanged_ece60eda828cb0ef", function() { return __wbg_setoncharacteristicvaluechanged_ece60eda828cb0ef; });
272
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_readValue_988440034a0e12ce", function() { return __wbg_readValue_988440034a0e12ce; });
273
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_startNotifications_c88eeb920d1eb45c", function() { return __wbg_startNotifications_c88eeb920d1eb45c; });
274
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_writeValue_1c451e0da8c56ca9", function() { return __wbg_writeValue_1c451e0da8c56ca9; });
275
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_target_90b16facc122062f", function() { return __wbg_target_90b16facc122062f; });
276
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_requestDevice_2d1b71cc28a67a5a", function() { return __wbg_requestDevice_2d1b71cc28a67a5a; });
277
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_id_45ecf3258c9f7dd7", function() { return __wbg_id_45ecf3258c9f7dd7; });
278
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_name_fe9ee17e821ecea5", function() { return __wbg_name_fe9ee17e821ecea5; });
279
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_gatt_99df2e5380097484", function() { return __wbg_gatt_99df2e5380097484; });
280
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setongattserverdisconnected_80e78a9d86abdf7b", function() { return __wbg_setongattserverdisconnected_80e78a9d86abdf7b; });
281
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_af54ac34efe00770", function() { return __wbg_clearTimeout_af54ac34efe00770; });
282
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_c5be4c054c4d7da5", function() { return __wbg_setTimeout_c5be4c054c4d7da5; });
283
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_bluetooth_18ee05df03af2352", function() { return __wbg_bluetooth_18ee05df03af2352; });
284
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonopen_c3975a4f895a052a", function() { return __wbg_setonopen_c3975a4f895a052a; });
285
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonerror_add0a293158012fc", function() { return __wbg_setonerror_add0a293158012fc; });
286
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonmessage_0d42c79be06de84f", function() { return __wbg_setonmessage_0d42c79be06de84f; });
287
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_fd9f3bfb89d96362", function() { return __wbg_new_fd9f3bfb89d96362; });
288
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_close_3797d4fae932c9b9", function() { return __wbg_close_3797d4fae932c9b9; });
289
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_send_ca85b0e6799803ef", function() { return __wbg_send_ca85b0e6799803ef; });
290
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_connect_d31afa0760e2294e", function() { return __wbg_connect_d31afa0760e2294e; });
291
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_getPrimaryService_903e198e60097b4a", function() { return __wbg_getPrimaryService_903e198e60097b4a; });
292
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_data_437e74b835241e70", function() { return __wbg_data_437e74b835241e70; });
293
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_e5847d15cc228e4f", function() { return __wbg_call_e5847d15cc228e4f; });
294
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_7c995f2adeba6fb5", function() { return __wbg_new_7c995f2adeba6fb5; });
295
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_push_3f7c76b58919ce0d", function() { return __wbg_push_3f7c76b58919ce0d; });
296
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_32296c67828fee6c", function() { return __wbg_buffer_32296c67828fee6c; });
297
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_byteLength_da948e1afd83c8f8", function() { return __wbg_byteLength_da948e1afd83c8f8; });
298
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_newnoargs_2349ba6aefe72376", function() { return __wbg_newnoargs_2349ba6aefe72376; });
299
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_d63edb857edf16f6", function() { return __wbg_call_d63edb857edf16f6; });
300
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_59986c8731bebaa1", function() { return __wbg_new_59986c8731bebaa1; });
301
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_resolve_e0690143406c88cb", function() { return __wbg_resolve_e0690143406c88cb; });
302
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_9caf23122e4fd5d3", function() { return __wbg_then_9caf23122e4fd5d3; });
303
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_16663faf60ffbe95", function() { return __wbg_then_16663faf60ffbe95; });
304
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_self_35a0fda3eb965abe", function() { return __wbg_self_35a0fda3eb965abe; });
305
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_window_88a6f88dd3a474f1", function() { return __wbg_window_88a6f88dd3a474f1; });
306
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_globalThis_1d843c4ad7b6a1f5", function() { return __wbg_globalThis_1d843c4ad7b6a1f5; });
307
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_global_294ce70448e8fbbf", function() { return __wbg_global_294ce70448e8fbbf; });
308
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_0be9fb426f2dd82b", function() { return __wbg_buffer_0be9fb426f2dd82b; });
309
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffsetandlength_85b7ce82b001ea08", function() { return __wbg_newwithbyteoffsetandlength_85b7ce82b001ea08; });
310
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_length_3a5138f465b971ad", function() { return __wbg_length_3a5138f465b971ad; });
311
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_4e8d18dbf9cd5240", function() { return __wbg_new_4e8d18dbf9cd5240; });
312
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_4769de301eb521d7", function() { return __wbg_set_4769de301eb521d7; });
313
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffset_0a6b0ce9d45270c3", function() { return __wbg_newwithbyteoffset_0a6b0ce9d45270c3; });
314
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_7e15d36563072b19", function() { return __wbg_set_7e15d36563072b19; });
315
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_getRandomValues_11115a852729f4e8", function() { return __wbg_getRandomValues_11115a852729f4e8; });
316
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_randomFillSync_a2d002fc3b8e30f7", function() { return __wbg_randomFillSync_a2d002fc3b8e30f7; });
317
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_self_a5f0fe5564782787", function() { return __wbg_self_a5f0fe5564782787; });
318
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_static_accessor_MODULE_7f278c5446c126c8", function() { return __wbg_static_accessor_MODULE_7f278c5446c126c8; });
319
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_require_29e58b5f6f133563", function() { return __wbg_require_29e58b5f6f133563; });
320
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_crypto_d91429ea1a087f70", function() { return __wbg_crypto_d91429ea1a087f70; });
321
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_msCrypto_c8be2bb4fc7d8cd3", function() { return __wbg_msCrypto_c8be2bb4fc7d8cd3; });
322
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_string", function() { return __wbindgen_is_string; });
523
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_instanceof_Window_c4b70662a0d2c5ec", function() { return __wbg_instanceof_Window_c4b70662a0d2c5ec; });
524
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_navigator_480e592af6ad365b", function() { return __wbg_navigator_480e592af6ad365b; });
525
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_2c1ba0016d8bca41", function() { return __wbg_clearTimeout_2c1ba0016d8bca41; });
526
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_df66d951b1726b78", function() { return __wbg_setTimeout_df66d951b1726b78; });
527
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_data_9e55e7d79ab13ef1", function() { return __wbg_data_9e55e7d79ab13ef1; });
528
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_value_84cefeb2408dfe15", function() { return __wbg_value_84cefeb2408dfe15; });
529
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setoncharacteristicvaluechanged_75ec7773e310719c", function() { return __wbg_setoncharacteristicvaluechanged_75ec7773e310719c; });
530
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_readValue_eeee467eee29d9ab", function() { return __wbg_readValue_eeee467eee29d9ab; });
531
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_startNotifications_89d52c5da12f4a73", function() { return __wbg_startNotifications_89d52c5da12f4a73; });
532
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_writeValue_5045e53d65cf4416", function() { return __wbg_writeValue_5045e53d65cf4416; });
533
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_target_cc69dde6c2d9ec90", function() { return __wbg_target_cc69dde6c2d9ec90; });
323
534
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_string_get", function() { return __wbindgen_string_get; });
535
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_requestDevice_94797563349e93d8", function() { return __wbg_requestDevice_94797563349e93d8; });
536
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_id_a762586fc34a710d", function() { return __wbg_id_a762586fc34a710d; });
537
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_name_48ead2aa58c91524", function() { return __wbg_name_48ead2aa58c91524; });
538
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_gatt_bca8d85b97b18ec3", function() { return __wbg_gatt_bca8d85b97b18ec3; });
539
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setongattserverdisconnected_5e832e08b6b5f423", function() { return __wbg_setongattserverdisconnected_5e832e08b6b5f423; });
540
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_clearTimeout_c1f246d6874c0679", function() { return __wbg_clearTimeout_c1f246d6874c0679; });
541
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setTimeout_5314850184d61a44", function() { return __wbg_setTimeout_5314850184d61a44; });
542
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_bluetooth_cc8e053613d8eeca", function() { return __wbg_bluetooth_cc8e053613d8eeca; });
543
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonopen_33b75427f7db7ce1", function() { return __wbg_setonopen_33b75427f7db7ce1; });
544
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonerror_cb55f0521ac0da3a", function() { return __wbg_setonerror_cb55f0521ac0da3a; });
545
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_setonmessage_ca5f75e4a84134ef", function() { return __wbg_setonmessage_ca5f75e4a84134ef; });
546
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_982fe22cd93d67f7", function() { return __wbg_new_982fe22cd93d67f7; });
547
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_close_f2a10c1de90df5f0", function() { return __wbg_close_f2a10c1de90df5f0; });
548
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_send_503c2e7652e95bf5", function() { return __wbg_send_503c2e7652e95bf5; });
549
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_connect_e3ccb7d88e903a95", function() { return __wbg_connect_e3ccb7d88e903a95; });
550
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_getPrimaryService_e624e0982bcd83b1", function() { return __wbg_getPrimaryService_e624e0982bcd83b1; });
551
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_getCharacteristic_7d2869d1ad7151d2", function() { return __wbg_getCharacteristic_7d2869d1ad7151d2; });
552
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_getRandomValues_98117e9a7e993920", function() { return __wbg_getRandomValues_98117e9a7e993920; });
553
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_randomFillSync_64cc7d048f228ca8", function() { return __wbg_randomFillSync_64cc7d048f228ca8; });
554
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_process_2f24d6544ea7b200", function() { return __wbg_process_2f24d6544ea7b200; });
555
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_is_object", function() { return __wbindgen_is_object; });
556
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_versions_6164651e75405d4a", function() { return __wbg_versions_6164651e75405d4a; });
557
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_node_4b517d861cbcb3bc", function() { return __wbg_node_4b517d861cbcb3bc; });
558
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_modulerequire_3440a4bcf44437db", function() { return __wbg_modulerequire_3440a4bcf44437db; });
559
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_crypto_98fc271021c7d2ad", function() { return __wbg_crypto_98fc271021c7d2ad; });
560
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_msCrypto_a2cdb043d2bfe57f", function() { return __wbg_msCrypto_a2cdb043d2bfe57f; });
561
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_949bbc1147195c4e", function() { return __wbg_new_949bbc1147195c4e; });
562
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_newnoargs_be86524d73f67598", function() { return __wbg_newnoargs_be86524d73f67598; });
563
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_888d259a5fefc347", function() { return __wbg_call_888d259a5fefc347; });
564
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_0b83d3df67ecb33e", function() { return __wbg_new_0b83d3df67ecb33e; });
565
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_push_284486ca27c6aa8b", function() { return __wbg_push_284486ca27c6aa8b; });
566
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_45280fecb82c83df", function() { return __wbg_buffer_45280fecb82c83df; });
567
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_byteLength_c9e4f1b2bae8fc4d", function() { return __wbg_byteLength_c9e4f1b2bae8fc4d; });
568
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_call_346669c262382ad7", function() { return __wbg_call_346669c262382ad7; });
569
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_resolve_d23068002f584f22", function() { return __wbg_resolve_d23068002f584f22; });
570
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_2fcac196782070cc", function() { return __wbg_then_2fcac196782070cc; });
571
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_then_8c2d62e8ae5978f7", function() { return __wbg_then_8c2d62e8ae5978f7; });
572
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_self_c6fbdfc2918d5e58", function() { return __wbg_self_c6fbdfc2918d5e58; });
573
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_window_baec038b5ab35c54", function() { return __wbg_window_baec038b5ab35c54; });
574
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_globalThis_3f735a5746d41fbd", function() { return __wbg_globalThis_3f735a5746d41fbd; });
575
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_global_1bc0b39582740e95", function() { return __wbg_global_1bc0b39582740e95; });
576
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_buffer_397eaa4d72ee94dd", function() { return __wbg_buffer_397eaa4d72ee94dd; });
577
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff", function() { return __wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff; });
578
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_new_a7ce447f15ff496f", function() { return __wbg_new_a7ce447f15ff496f; });
579
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_969ad0a60e51d320", function() { return __wbg_set_969ad0a60e51d320; });
580
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_length_1eb8fc608a0d4cdb", function() { return __wbg_length_1eb8fc608a0d4cdb; });
581
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithlength_929232475839a482", function() { return __wbg_newwithlength_929232475839a482; });
582
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_newwithbyteoffset_b638bad8cc090f32", function() { return __wbg_newwithbyteoffset_b638bad8cc090f32; });
583
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_subarray_8b658422a224f479", function() { return __wbg_subarray_8b658422a224f479; });
584
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbg_set_82a4e8a85e31ac42", function() { return __wbg_set_82a4e8a85e31ac42; });
324
585
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_debug_string", function() { return __wbindgen_debug_string; });
325
586
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_throw", function() { return __wbindgen_throw; });
326
587
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_memory", function() { return __wbindgen_memory; });
327
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper677", function() { return __wbindgen_closure_wrapper677; });
328
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper679", function() { return __wbindgen_closure_wrapper679; });
329
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper681", function() { return __wbindgen_closure_wrapper681; });
330
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper683", function() { return __wbindgen_closure_wrapper683; });
331
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper2493", function() { return __wbindgen_closure_wrapper2493; });
332
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper4268", function() { return __wbindgen_closure_wrapper4268; });
588
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper256", function() { return __wbindgen_closure_wrapper256; });
589
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper258", function() { return __wbindgen_closure_wrapper258; });
590
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper260", function() { return __wbindgen_closure_wrapper260; });
591
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper262", function() { return __wbindgen_closure_wrapper262; });
592
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper2880", function() { return __wbindgen_closure_wrapper2880; });
593
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__wbindgen_closure_wrapper4637", function() { return __wbindgen_closure_wrapper4637; });
333
594
  /* harmony import */ var _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./buttplug_rs_ffi_bg.wasm */ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.wasm");
595
+ // BEGIN_MODULARIZE
596
+ // This file was modified by scripts/modularize.js to create Node ESM-compatible bindings.
597
+ // Do not modify this file directly as your changes will be overwritten.
598
+ // END_MODULARIZE
334
599
 
335
600
 
336
601
  const heap = new Array(32).fill(undefined);
@@ -353,15 +618,6 @@ function takeObject(idx) {
353
618
  return ret;
354
619
  }
355
620
 
356
- function addHeapObject(obj) {
357
- if (heap_next === heap.length) heap.push(heap.length + 1);
358
- const idx = heap_next;
359
- heap_next = heap[idx];
360
-
361
- heap[idx] = obj;
362
- return idx;
363
- }
364
-
365
621
  const lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;
366
622
 
367
623
  let cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });
@@ -380,6 +636,15 @@ function getStringFromWasm0(ptr, len) {
380
636
  return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
381
637
  }
382
638
 
639
+ function addHeapObject(obj) {
640
+ if (heap_next === heap.length) heap.push(heap.length + 1);
641
+ const idx = heap_next;
642
+ heap_next = heap[idx];
643
+
644
+ heap[idx] = obj;
645
+ return idx;
646
+ }
647
+
383
648
  let WASM_VECTOR_LEN = 0;
384
649
 
385
650
  const lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;
@@ -538,28 +803,28 @@ function makeMutClosure(arg0, arg1, dtor, f) {
538
803
 
539
804
  return real;
540
805
  }
541
- function __wbg_adapter_22(arg0, arg1, arg2) {
542
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0b764fa99a83aa89"](arg0, arg1, addHeapObject(arg2));
806
+ function __wbg_adapter_24(arg0, arg1, arg2) {
807
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0801f0b68538ccb2"](arg0, arg1, addHeapObject(arg2));
543
808
  }
544
809
 
545
- function __wbg_adapter_25(arg0, arg1, arg2) {
546
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0b764fa99a83aa89"](arg0, arg1, addHeapObject(arg2));
810
+ function __wbg_adapter_27(arg0, arg1, arg2) {
811
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0801f0b68538ccb2"](arg0, arg1, addHeapObject(arg2));
547
812
  }
548
813
 
549
- function __wbg_adapter_28(arg0, arg1, arg2) {
550
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0b764fa99a83aa89"](arg0, arg1, addHeapObject(arg2));
814
+ function __wbg_adapter_30(arg0, arg1, arg2) {
815
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0801f0b68538ccb2"](arg0, arg1, addHeapObject(arg2));
551
816
  }
552
817
 
553
- function __wbg_adapter_31(arg0, arg1, arg2) {
554
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0b764fa99a83aa89"](arg0, arg1, addHeapObject(arg2));
818
+ function __wbg_adapter_33(arg0, arg1, arg2) {
819
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0801f0b68538ccb2"](arg0, arg1, addHeapObject(arg2));
555
820
  }
556
821
 
557
- function __wbg_adapter_34(arg0, arg1, arg2) {
558
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hab1e0ecd8ff83e01"](arg0, arg1, addHeapObject(arg2));
822
+ function __wbg_adapter_36(arg0, arg1, arg2) {
823
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h6d5d487c79cfdf49"](arg0, arg1, addHeapObject(arg2));
559
824
  }
560
825
 
561
- function __wbg_adapter_37(arg0, arg1) {
562
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1e3b60da244339a5"](arg0, arg1);
826
+ function __wbg_adapter_39(arg0, arg1) {
827
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["_dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha721fdbd23ca35f2"](arg0, arg1);
563
828
  }
564
829
 
565
830
  let stack_pointer = 32;
@@ -570,15 +835,16 @@ function addBorrowedObject(obj) {
570
835
  return stack_pointer;
571
836
  }
572
837
  /**
573
- * @param {Function} callback
574
838
  * @param {string} client_name
839
+ * @param {Function} callback
840
+ * @param {number} callback_context
575
841
  * @returns {number}
576
842
  */
577
- function buttplug_create_client(callback, client_name) {
843
+ function buttplug_create_protobuf_client(client_name, callback, callback_context) {
578
844
  try {
579
845
  var ptr0 = passStringToWasm0(client_name, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"], _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_realloc"]);
580
846
  var len0 = WASM_VECTOR_LEN;
581
- var ret = _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["buttplug_create_client"](addBorrowedObject(callback), ptr0, len0);
847
+ var ret = _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["buttplug_create_protobuf_client"](ptr0, len0, addBorrowedObject(callback), callback_context);
582
848
  return ret;
583
849
  } finally {
584
850
  heap[stack_pointer++] = undefined;
@@ -601,11 +867,13 @@ function passArray8ToWasm0(arg, malloc) {
601
867
  /**
602
868
  * @param {number} client_ptr
603
869
  * @param {Uint8Array} buf
870
+ * @param {Function} callback
871
+ * @param {number} callback_context
604
872
  */
605
- function buttplug_parse_client_message(client_ptr, buf) {
873
+ function buttplug_client_protobuf_message(client_ptr, buf, callback, callback_context) {
606
874
  var ptr0 = passArray8ToWasm0(buf, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"]);
607
875
  var len0 = WASM_VECTOR_LEN;
608
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["buttplug_parse_client_message"](client_ptr, ptr0, len0);
876
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["buttplug_client_protobuf_message"](client_ptr, ptr0, len0, addHeapObject(callback), callback_context);
609
877
  }
610
878
 
611
879
  /**
@@ -621,11 +889,13 @@ function buttplug_create_device(client_ptr, device_index) {
621
889
  /**
622
890
  * @param {number} device_ptr
623
891
  * @param {Uint8Array} buf
892
+ * @param {Function} callback
893
+ * @param {number} callback_context
624
894
  */
625
- function buttplug_parse_device_message(device_ptr, buf) {
895
+ function buttplug_device_protobuf_message(device_ptr, buf, callback, callback_context) {
626
896
  var ptr0 = passArray8ToWasm0(buf, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"]);
627
897
  var len0 = WASM_VECTOR_LEN;
628
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["buttplug_parse_device_message"](device_ptr, ptr0, len0);
898
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["buttplug_device_protobuf_message"](device_ptr, ptr0, len0, addHeapObject(callback), callback_context);
629
899
  }
630
900
 
631
901
  /**
@@ -644,55 +914,86 @@ function buttplug_activate_env_logger(max_level) {
644
914
  _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["buttplug_activate_env_logger"](ptr0, len0);
645
915
  }
646
916
 
647
- function handleError(f) {
648
- return function () {
649
- try {
650
- return f.apply(this, arguments);
651
-
652
- } catch (e) {
653
- _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_exn_store"](addHeapObject(e));
654
- }
655
- };
917
+ function handleError(f, args) {
918
+ try {
919
+ return f.apply(this, args);
920
+ } catch (e) {
921
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_exn_store"](addHeapObject(e));
922
+ }
656
923
  }
657
924
 
658
925
  function getArrayU8FromWasm0(ptr, len) {
659
926
  return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);
660
927
  }
661
928
 
662
- const __wbindgen_object_drop_ref = function(arg0) {
929
+ function __wbindgen_object_drop_ref(arg0) {
663
930
  takeObject(arg0);
664
931
  };
665
932
 
666
- const __wbindgen_object_clone_ref = function(arg0) {
667
- var ret = getObject(arg0);
668
- return addHeapObject(ret);
933
+ function __wbindgen_cb_drop(arg0) {
934
+ const obj = takeObject(arg0).original;
935
+ if (obj.cnt-- == 1) {
936
+ obj.a = 0;
937
+ return true;
938
+ }
939
+ var ret = false;
940
+ return ret;
669
941
  };
670
942
 
671
- const __wbg_log_e6bbcfdff8337573 = function(arg0, arg1) {
943
+ function __wbg_log_aedd6896ca471fe6(arg0, arg1) {
672
944
  console.log(getStringFromWasm0(arg0, arg1));
673
945
  };
674
946
 
675
- const __wbindgen_string_new = function(arg0, arg1) {
947
+ function __wbindgen_string_new(arg0, arg1) {
676
948
  var ret = getStringFromWasm0(arg0, arg1);
677
949
  return addHeapObject(ret);
678
950
  };
679
951
 
680
- const __wbindgen_cb_drop = function(arg0) {
681
- const obj = takeObject(arg0).original;
682
- if (obj.cnt-- == 1) {
683
- obj.a = 0;
684
- return true;
685
- }
686
- var ret = false;
952
+ function __wbindgen_object_clone_ref(arg0) {
953
+ var ret = getObject(arg0);
954
+ return addHeapObject(ret);
955
+ };
956
+
957
+ function __wbindgen_is_string(arg0) {
958
+ var ret = typeof(getObject(arg0)) === 'string';
687
959
  return ret;
688
960
  };
689
961
 
690
- const __wbg_new_59cb74e423758ede = function() {
962
+ function __wbg_log_02e20a3c32305fb7(arg0, arg1) {
963
+ try {
964
+ console.log(getStringFromWasm0(arg0, arg1));
965
+ } finally {
966
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_free"](arg0, arg1);
967
+ }
968
+ };
969
+
970
+ function __wbg_log_5c7513aa8c164502(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
971
+ try {
972
+ console.log(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3), getStringFromWasm0(arg4, arg5), getStringFromWasm0(arg6, arg7));
973
+ } finally {
974
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_free"](arg0, arg1);
975
+ }
976
+ };
977
+
978
+ function __wbg_mark_abc7631bdced64f0(arg0, arg1) {
979
+ performance.mark(getStringFromWasm0(arg0, arg1));
980
+ };
981
+
982
+ function __wbg_measure_c528ff64085b7146() { return handleError(function (arg0, arg1, arg2, arg3) {
983
+ try {
984
+ performance.measure(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));
985
+ } finally {
986
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_free"](arg0, arg1);
987
+ _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_free"](arg2, arg3);
988
+ }
989
+ }, arguments) };
990
+
991
+ function __wbg_new_693216e109162396() {
691
992
  var ret = new Error();
692
993
  return addHeapObject(ret);
693
994
  };
694
995
 
695
- const __wbg_stack_558ba5917b466edd = function(arg0, arg1) {
996
+ function __wbg_stack_0ddaca5d1abfb52f(arg0, arg1) {
696
997
  var ret = getObject(arg1).stack;
697
998
  var ptr0 = passStringToWasm0(ret, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"], _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_realloc"]);
698
999
  var len0 = WASM_VECTOR_LEN;
@@ -700,7 +1001,7 @@ const __wbg_stack_558ba5917b466edd = function(arg0, arg1) {
700
1001
  getInt32Memory0()[arg0 / 4 + 0] = ptr0;
701
1002
  };
702
1003
 
703
- const __wbg_error_4bb6c2a97407129a = function(arg0, arg1) {
1004
+ function __wbg_error_09919627ac0992f5(arg0, arg1) {
704
1005
  try {
705
1006
  console.error(getStringFromWasm0(arg0, arg1));
706
1007
  } finally {
@@ -708,96 +1009,89 @@ const __wbg_error_4bb6c2a97407129a = function(arg0, arg1) {
708
1009
  }
709
1010
  };
710
1011
 
711
- const __wbg_log_b7dcb3facc73166d = function(arg0, arg1) {
712
- console.log(getStringFromWasm0(arg0, arg1));
713
- };
714
-
715
- const __wbg_log_96295d68ab8338df = function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) {
716
- console.log(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3), getStringFromWasm0(arg4, arg5), getStringFromWasm0(arg6, arg7));
717
- };
718
-
719
- const __wbg_mark_55c5ecfe509deb6a = function(arg0, arg1) {
720
- performance.mark(getStringFromWasm0(arg0, arg1));
721
- };
722
-
723
- const __wbg_measure_608563106d70d48a = function(arg0, arg1, arg2, arg3) {
724
- performance.measure(getStringFromWasm0(arg0, arg1), getStringFromWasm0(arg2, arg3));
725
- };
726
-
727
- const __wbg_Window_f826a1dec163bacb = function(arg0) {
1012
+ function __wbg_Window_f826a1dec163bacb(arg0) {
728
1013
  var ret = getObject(arg0).Window;
729
1014
  return addHeapObject(ret);
730
1015
  };
731
1016
 
732
- const __wbindgen_is_undefined = function(arg0) {
1017
+ function __wbindgen_is_undefined(arg0) {
733
1018
  var ret = getObject(arg0) === undefined;
734
1019
  return ret;
735
1020
  };
736
1021
 
737
- const __wbg_WorkerGlobalScope_967d186155183d38 = function(arg0) {
1022
+ function __wbg_WorkerGlobalScope_967d186155183d38(arg0) {
738
1023
  var ret = getObject(arg0).WorkerGlobalScope;
739
1024
  return addHeapObject(ret);
740
1025
  };
741
1026
 
742
- const __wbg_instanceof_Window_5993230e7331f098 = function(arg0) {
1027
+ function __wbg_instanceof_Window_c4b70662a0d2c5ec(arg0) {
743
1028
  var ret = getObject(arg0) instanceof Window;
744
1029
  return ret;
745
1030
  };
746
1031
 
747
- const __wbg_navigator_da501e0baab77d64 = function(arg0) {
1032
+ function __wbg_navigator_480e592af6ad365b(arg0) {
748
1033
  var ret = getObject(arg0).navigator;
749
1034
  return addHeapObject(ret);
750
1035
  };
751
1036
 
752
- const __wbg_clearTimeout_4fe71f721d0606af = function(arg0, arg1) {
1037
+ function __wbg_clearTimeout_2c1ba0016d8bca41(arg0, arg1) {
753
1038
  getObject(arg0).clearTimeout(arg1);
754
1039
  };
755
1040
 
756
- const __wbg_setTimeout_d75246e77e993c5d = handleError(function(arg0, arg1, arg2) {
1041
+ function __wbg_setTimeout_df66d951b1726b78() { return handleError(function (arg0, arg1, arg2) {
757
1042
  var ret = getObject(arg0).setTimeout(getObject(arg1), arg2);
758
1043
  return ret;
759
- });
1044
+ }, arguments) };
760
1045
 
761
- const __wbg_getCharacteristic_c7f9dcc72f7a86f6 = function(arg0, arg1, arg2) {
762
- var ret = getObject(arg0).getCharacteristic(getStringFromWasm0(arg1, arg2));
1046
+ function __wbg_data_9e55e7d79ab13ef1(arg0) {
1047
+ var ret = getObject(arg0).data;
763
1048
  return addHeapObject(ret);
764
1049
  };
765
1050
 
766
- const __wbg_value_ce5e4fe742d36a1c = function(arg0) {
1051
+ function __wbg_value_84cefeb2408dfe15(arg0) {
767
1052
  var ret = getObject(arg0).value;
768
1053
  return isLikeNone(ret) ? 0 : addHeapObject(ret);
769
1054
  };
770
1055
 
771
- const __wbg_setoncharacteristicvaluechanged_ece60eda828cb0ef = function(arg0, arg1) {
1056
+ function __wbg_setoncharacteristicvaluechanged_75ec7773e310719c(arg0, arg1) {
772
1057
  getObject(arg0).oncharacteristicvaluechanged = getObject(arg1);
773
1058
  };
774
1059
 
775
- const __wbg_readValue_988440034a0e12ce = function(arg0) {
1060
+ function __wbg_readValue_eeee467eee29d9ab(arg0) {
776
1061
  var ret = getObject(arg0).readValue();
777
1062
  return addHeapObject(ret);
778
1063
  };
779
1064
 
780
- const __wbg_startNotifications_c88eeb920d1eb45c = function(arg0) {
1065
+ function __wbg_startNotifications_89d52c5da12f4a73(arg0) {
781
1066
  var ret = getObject(arg0).startNotifications();
782
1067
  return addHeapObject(ret);
783
1068
  };
784
1069
 
785
- const __wbg_writeValue_1c451e0da8c56ca9 = function(arg0, arg1, arg2) {
1070
+ function __wbg_writeValue_5045e53d65cf4416(arg0, arg1, arg2) {
786
1071
  var ret = getObject(arg0).writeValue(getArrayU8FromWasm0(arg1, arg2));
787
1072
  return addHeapObject(ret);
788
1073
  };
789
1074
 
790
- const __wbg_target_90b16facc122062f = function(arg0) {
1075
+ function __wbg_target_cc69dde6c2d9ec90(arg0) {
791
1076
  var ret = getObject(arg0).target;
792
1077
  return isLikeNone(ret) ? 0 : addHeapObject(ret);
793
1078
  };
794
1079
 
795
- const __wbg_requestDevice_2d1b71cc28a67a5a = function(arg0, arg1) {
1080
+ function __wbindgen_string_get(arg0, arg1) {
1081
+ const obj = getObject(arg1);
1082
+ var ret = typeof(obj) === 'string' ? obj : undefined;
1083
+ var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"], _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_realloc"]);
1084
+ var len0 = WASM_VECTOR_LEN;
1085
+ getInt32Memory0()[arg0 / 4 + 1] = len0;
1086
+ getInt32Memory0()[arg0 / 4 + 0] = ptr0;
1087
+ };
1088
+
1089
+ function __wbg_requestDevice_94797563349e93d8(arg0, arg1) {
796
1090
  var ret = getObject(arg0).requestDevice(getObject(arg1));
797
1091
  return addHeapObject(ret);
798
1092
  };
799
1093
 
800
- const __wbg_id_45ecf3258c9f7dd7 = function(arg0, arg1) {
1094
+ function __wbg_id_a762586fc34a710d(arg0, arg1) {
801
1095
  var ret = getObject(arg1).id;
802
1096
  var ptr0 = passStringToWasm0(ret, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"], _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_realloc"]);
803
1097
  var len0 = WASM_VECTOR_LEN;
@@ -805,7 +1099,7 @@ const __wbg_id_45ecf3258c9f7dd7 = function(arg0, arg1) {
805
1099
  getInt32Memory0()[arg0 / 4 + 0] = ptr0;
806
1100
  };
807
1101
 
808
- const __wbg_name_fe9ee17e821ecea5 = function(arg0, arg1) {
1102
+ function __wbg_name_48ead2aa58c91524(arg0, arg1) {
809
1103
  var ret = getObject(arg1).name;
810
1104
  var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"], _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_realloc"]);
811
1105
  var len0 = WASM_VECTOR_LEN;
@@ -813,226 +1107,233 @@ const __wbg_name_fe9ee17e821ecea5 = function(arg0, arg1) {
813
1107
  getInt32Memory0()[arg0 / 4 + 0] = ptr0;
814
1108
  };
815
1109
 
816
- const __wbg_gatt_99df2e5380097484 = function(arg0) {
1110
+ function __wbg_gatt_bca8d85b97b18ec3(arg0) {
817
1111
  var ret = getObject(arg0).gatt;
818
1112
  return isLikeNone(ret) ? 0 : addHeapObject(ret);
819
1113
  };
820
1114
 
821
- const __wbg_setongattserverdisconnected_80e78a9d86abdf7b = function(arg0, arg1) {
1115
+ function __wbg_setongattserverdisconnected_5e832e08b6b5f423(arg0, arg1) {
822
1116
  getObject(arg0).ongattserverdisconnected = getObject(arg1);
823
1117
  };
824
1118
 
825
- const __wbg_clearTimeout_af54ac34efe00770 = function(arg0, arg1) {
1119
+ function __wbg_clearTimeout_c1f246d6874c0679(arg0, arg1) {
826
1120
  getObject(arg0).clearTimeout(arg1);
827
1121
  };
828
1122
 
829
- const __wbg_setTimeout_c5be4c054c4d7da5 = handleError(function(arg0, arg1, arg2) {
1123
+ function __wbg_setTimeout_5314850184d61a44() { return handleError(function (arg0, arg1, arg2) {
830
1124
  var ret = getObject(arg0).setTimeout(getObject(arg1), arg2);
831
1125
  return ret;
832
- });
1126
+ }, arguments) };
833
1127
 
834
- const __wbg_bluetooth_18ee05df03af2352 = function(arg0) {
1128
+ function __wbg_bluetooth_cc8e053613d8eeca(arg0) {
835
1129
  var ret = getObject(arg0).bluetooth;
836
1130
  return isLikeNone(ret) ? 0 : addHeapObject(ret);
837
1131
  };
838
1132
 
839
- const __wbg_setonopen_c3975a4f895a052a = function(arg0, arg1) {
1133
+ function __wbg_setonopen_33b75427f7db7ce1(arg0, arg1) {
840
1134
  getObject(arg0).onopen = getObject(arg1);
841
1135
  };
842
1136
 
843
- const __wbg_setonerror_add0a293158012fc = function(arg0, arg1) {
1137
+ function __wbg_setonerror_cb55f0521ac0da3a(arg0, arg1) {
844
1138
  getObject(arg0).onerror = getObject(arg1);
845
1139
  };
846
1140
 
847
- const __wbg_setonmessage_0d42c79be06de84f = function(arg0, arg1) {
1141
+ function __wbg_setonmessage_ca5f75e4a84134ef(arg0, arg1) {
848
1142
  getObject(arg0).onmessage = getObject(arg1);
849
1143
  };
850
1144
 
851
- const __wbg_new_fd9f3bfb89d96362 = handleError(function(arg0, arg1) {
1145
+ function __wbg_new_982fe22cd93d67f7() { return handleError(function (arg0, arg1) {
852
1146
  var ret = new WebSocket(getStringFromWasm0(arg0, arg1));
853
1147
  return addHeapObject(ret);
854
- });
1148
+ }, arguments) };
855
1149
 
856
- const __wbg_close_3797d4fae932c9b9 = handleError(function(arg0) {
1150
+ function __wbg_close_f2a10c1de90df5f0() { return handleError(function (arg0) {
857
1151
  getObject(arg0).close();
858
- });
1152
+ }, arguments) };
859
1153
 
860
- const __wbg_send_ca85b0e6799803ef = handleError(function(arg0, arg1, arg2) {
1154
+ function __wbg_send_503c2e7652e95bf5() { return handleError(function (arg0, arg1, arg2) {
861
1155
  getObject(arg0).send(getStringFromWasm0(arg1, arg2));
862
- });
1156
+ }, arguments) };
863
1157
 
864
- const __wbg_connect_d31afa0760e2294e = function(arg0) {
1158
+ function __wbg_connect_e3ccb7d88e903a95(arg0) {
865
1159
  var ret = getObject(arg0).connect();
866
1160
  return addHeapObject(ret);
867
1161
  };
868
1162
 
869
- const __wbg_getPrimaryService_903e198e60097b4a = function(arg0, arg1, arg2) {
1163
+ function __wbg_getPrimaryService_e624e0982bcd83b1(arg0, arg1, arg2) {
870
1164
  var ret = getObject(arg0).getPrimaryService(getStringFromWasm0(arg1, arg2));
871
1165
  return addHeapObject(ret);
872
1166
  };
873
1167
 
874
- const __wbg_data_437e74b835241e70 = function(arg0) {
875
- var ret = getObject(arg0).data;
1168
+ function __wbg_getCharacteristic_7d2869d1ad7151d2(arg0, arg1, arg2) {
1169
+ var ret = getObject(arg0).getCharacteristic(getStringFromWasm0(arg1, arg2));
876
1170
  return addHeapObject(ret);
877
1171
  };
878
1172
 
879
- const __wbg_call_e5847d15cc228e4f = handleError(function(arg0, arg1) {
880
- var ret = getObject(arg0).call(getObject(arg1));
881
- return addHeapObject(ret);
882
- });
1173
+ function __wbg_getRandomValues_98117e9a7e993920() { return handleError(function (arg0, arg1) {
1174
+ getObject(arg0).getRandomValues(getObject(arg1));
1175
+ }, arguments) };
883
1176
 
884
- const __wbg_new_7c995f2adeba6fb5 = function() {
885
- var ret = new Array();
1177
+ function __wbg_randomFillSync_64cc7d048f228ca8() { return handleError(function (arg0, arg1, arg2) {
1178
+ getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));
1179
+ }, arguments) };
1180
+
1181
+ function __wbg_process_2f24d6544ea7b200(arg0) {
1182
+ var ret = getObject(arg0).process;
886
1183
  return addHeapObject(ret);
887
1184
  };
888
1185
 
889
- const __wbg_push_3f7c76b58919ce0d = function(arg0, arg1) {
890
- var ret = getObject(arg0).push(getObject(arg1));
1186
+ function __wbindgen_is_object(arg0) {
1187
+ const val = getObject(arg0);
1188
+ var ret = typeof(val) === 'object' && val !== null;
891
1189
  return ret;
892
1190
  };
893
1191
 
894
- const __wbg_buffer_32296c67828fee6c = function(arg0) {
895
- var ret = getObject(arg0).buffer;
1192
+ function __wbg_versions_6164651e75405d4a(arg0) {
1193
+ var ret = getObject(arg0).versions;
896
1194
  return addHeapObject(ret);
897
1195
  };
898
1196
 
899
- const __wbg_byteLength_da948e1afd83c8f8 = function(arg0) {
900
- var ret = getObject(arg0).byteLength;
901
- return ret;
1197
+ function __wbg_node_4b517d861cbcb3bc(arg0) {
1198
+ var ret = getObject(arg0).node;
1199
+ return addHeapObject(ret);
902
1200
  };
903
1201
 
904
- const __wbg_newnoargs_2349ba6aefe72376 = function(arg0, arg1) {
1202
+ function __wbg_modulerequire_3440a4bcf44437db() { return handleError(function (arg0, arg1) {
1203
+ var ret = __webpack_require__("./src/buttplug-rs-ffi sync recursive")(getStringFromWasm0(arg0, arg1));
1204
+ return addHeapObject(ret);
1205
+ }, arguments) };
1206
+
1207
+ function __wbg_crypto_98fc271021c7d2ad(arg0) {
1208
+ var ret = getObject(arg0).crypto;
1209
+ return addHeapObject(ret);
1210
+ };
1211
+
1212
+ function __wbg_msCrypto_a2cdb043d2bfe57f(arg0) {
1213
+ var ret = getObject(arg0).msCrypto;
1214
+ return addHeapObject(ret);
1215
+ };
1216
+
1217
+ function __wbg_new_949bbc1147195c4e() {
1218
+ var ret = new Array();
1219
+ return addHeapObject(ret);
1220
+ };
1221
+
1222
+ function __wbg_newnoargs_be86524d73f67598(arg0, arg1) {
905
1223
  var ret = new Function(getStringFromWasm0(arg0, arg1));
906
1224
  return addHeapObject(ret);
907
1225
  };
908
1226
 
909
- const __wbg_call_d63edb857edf16f6 = handleError(function(arg0, arg1, arg2) {
910
- var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
1227
+ function __wbg_call_888d259a5fefc347() { return handleError(function (arg0, arg1) {
1228
+ var ret = getObject(arg0).call(getObject(arg1));
911
1229
  return addHeapObject(ret);
912
- });
1230
+ }, arguments) };
913
1231
 
914
- const __wbg_new_59986c8731bebaa1 = function() {
1232
+ function __wbg_new_0b83d3df67ecb33e() {
915
1233
  var ret = new Object();
916
1234
  return addHeapObject(ret);
917
1235
  };
918
1236
 
919
- const __wbg_resolve_e0690143406c88cb = function(arg0) {
1237
+ function __wbg_push_284486ca27c6aa8b(arg0, arg1) {
1238
+ var ret = getObject(arg0).push(getObject(arg1));
1239
+ return ret;
1240
+ };
1241
+
1242
+ function __wbg_buffer_45280fecb82c83df(arg0) {
1243
+ var ret = getObject(arg0).buffer;
1244
+ return addHeapObject(ret);
1245
+ };
1246
+
1247
+ function __wbg_byteLength_c9e4f1b2bae8fc4d(arg0) {
1248
+ var ret = getObject(arg0).byteLength;
1249
+ return ret;
1250
+ };
1251
+
1252
+ function __wbg_call_346669c262382ad7() { return handleError(function (arg0, arg1, arg2) {
1253
+ var ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
1254
+ return addHeapObject(ret);
1255
+ }, arguments) };
1256
+
1257
+ function __wbg_resolve_d23068002f584f22(arg0) {
920
1258
  var ret = Promise.resolve(getObject(arg0));
921
1259
  return addHeapObject(ret);
922
1260
  };
923
1261
 
924
- const __wbg_then_9caf23122e4fd5d3 = function(arg0, arg1) {
1262
+ function __wbg_then_2fcac196782070cc(arg0, arg1) {
925
1263
  var ret = getObject(arg0).then(getObject(arg1));
926
1264
  return addHeapObject(ret);
927
1265
  };
928
1266
 
929
- const __wbg_then_16663faf60ffbe95 = function(arg0, arg1, arg2) {
1267
+ function __wbg_then_8c2d62e8ae5978f7(arg0, arg1, arg2) {
930
1268
  var ret = getObject(arg0).then(getObject(arg1), getObject(arg2));
931
1269
  return addHeapObject(ret);
932
1270
  };
933
1271
 
934
- const __wbg_self_35a0fda3eb965abe = handleError(function() {
1272
+ function __wbg_self_c6fbdfc2918d5e58() { return handleError(function () {
935
1273
  var ret = self.self;
936
1274
  return addHeapObject(ret);
937
- });
1275
+ }, arguments) };
938
1276
 
939
- const __wbg_window_88a6f88dd3a474f1 = handleError(function() {
1277
+ function __wbg_window_baec038b5ab35c54() { return handleError(function () {
940
1278
  var ret = window.window;
941
1279
  return addHeapObject(ret);
942
- });
1280
+ }, arguments) };
943
1281
 
944
- const __wbg_globalThis_1d843c4ad7b6a1f5 = handleError(function() {
1282
+ function __wbg_globalThis_3f735a5746d41fbd() { return handleError(function () {
945
1283
  var ret = globalThis.globalThis;
946
1284
  return addHeapObject(ret);
947
- });
1285
+ }, arguments) };
948
1286
 
949
- const __wbg_global_294ce70448e8fbbf = handleError(function() {
1287
+ function __wbg_global_1bc0b39582740e95() { return handleError(function () {
950
1288
  var ret = global.global;
951
1289
  return addHeapObject(ret);
952
- });
1290
+ }, arguments) };
953
1291
 
954
- const __wbg_buffer_0be9fb426f2dd82b = function(arg0) {
1292
+ function __wbg_buffer_397eaa4d72ee94dd(arg0) {
955
1293
  var ret = getObject(arg0).buffer;
956
1294
  return addHeapObject(ret);
957
1295
  };
958
1296
 
959
- const __wbg_newwithbyteoffsetandlength_85b7ce82b001ea08 = function(arg0, arg1, arg2) {
1297
+ function __wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff(arg0, arg1, arg2) {
960
1298
  var ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0);
961
1299
  return addHeapObject(ret);
962
1300
  };
963
1301
 
964
- const __wbg_length_3a5138f465b971ad = function(arg0) {
965
- var ret = getObject(arg0).length;
966
- return ret;
967
- };
968
-
969
- const __wbg_new_4e8d18dbf9cd5240 = function(arg0) {
1302
+ function __wbg_new_a7ce447f15ff496f(arg0) {
970
1303
  var ret = new Uint8Array(getObject(arg0));
971
1304
  return addHeapObject(ret);
972
1305
  };
973
1306
 
974
- const __wbg_set_4769de301eb521d7 = function(arg0, arg1, arg2) {
1307
+ function __wbg_set_969ad0a60e51d320(arg0, arg1, arg2) {
975
1308
  getObject(arg0).set(getObject(arg1), arg2 >>> 0);
976
1309
  };
977
1310
 
978
- const __wbg_newwithbyteoffset_0a6b0ce9d45270c3 = function(arg0, arg1) {
979
- var ret = new Uint8Array(getObject(arg0), arg1 >>> 0);
980
- return addHeapObject(ret);
981
- };
982
-
983
- const __wbg_set_7e15d36563072b19 = handleError(function(arg0, arg1, arg2) {
984
- var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));
1311
+ function __wbg_length_1eb8fc608a0d4cdb(arg0) {
1312
+ var ret = getObject(arg0).length;
985
1313
  return ret;
986
- });
987
-
988
- const __wbg_getRandomValues_11115a852729f4e8 = handleError(function(arg0, arg1, arg2) {
989
- getObject(arg0).getRandomValues(getArrayU8FromWasm0(arg1, arg2));
990
- });
991
-
992
- const __wbg_randomFillSync_a2d002fc3b8e30f7 = handleError(function(arg0, arg1, arg2) {
993
- getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));
994
- });
995
-
996
- const __wbg_self_a5f0fe5564782787 = handleError(function() {
997
- var ret = self.self;
998
- return addHeapObject(ret);
999
- });
1000
-
1001
- const __wbg_static_accessor_MODULE_7f278c5446c126c8 = function() {
1002
- var ret = module;
1003
- return addHeapObject(ret);
1004
1314
  };
1005
1315
 
1006
- const __wbg_require_29e58b5f6f133563 = handleError(function(arg0, arg1, arg2) {
1007
- var ret = getObject(arg0).require(getStringFromWasm0(arg1, arg2));
1316
+ function __wbg_newwithlength_929232475839a482(arg0) {
1317
+ var ret = new Uint8Array(arg0 >>> 0);
1008
1318
  return addHeapObject(ret);
1009
- });
1319
+ };
1010
1320
 
1011
- const __wbg_crypto_d91429ea1a087f70 = function(arg0) {
1012
- var ret = getObject(arg0).crypto;
1321
+ function __wbg_newwithbyteoffset_b638bad8cc090f32(arg0, arg1) {
1322
+ var ret = new Uint8Array(getObject(arg0), arg1 >>> 0);
1013
1323
  return addHeapObject(ret);
1014
1324
  };
1015
1325
 
1016
- const __wbg_msCrypto_c8be2bb4fc7d8cd3 = function(arg0) {
1017
- var ret = getObject(arg0).msCrypto;
1326
+ function __wbg_subarray_8b658422a224f479(arg0, arg1, arg2) {
1327
+ var ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);
1018
1328
  return addHeapObject(ret);
1019
1329
  };
1020
1330
 
1021
- const __wbindgen_is_string = function(arg0) {
1022
- var ret = typeof(getObject(arg0)) === 'string';
1331
+ function __wbg_set_82a4e8a85e31ac42() { return handleError(function (arg0, arg1, arg2) {
1332
+ var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2));
1023
1333
  return ret;
1024
- };
1025
-
1026
- const __wbindgen_string_get = function(arg0, arg1) {
1027
- const obj = getObject(arg1);
1028
- var ret = typeof(obj) === 'string' ? obj : undefined;
1029
- var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"], _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_realloc"]);
1030
- var len0 = WASM_VECTOR_LEN;
1031
- getInt32Memory0()[arg0 / 4 + 1] = len0;
1032
- getInt32Memory0()[arg0 / 4 + 0] = ptr0;
1033
- };
1334
+ }, arguments) };
1034
1335
 
1035
- const __wbindgen_debug_string = function(arg0, arg1) {
1336
+ function __wbindgen_debug_string(arg0, arg1) {
1036
1337
  var ret = debugString(getObject(arg1));
1037
1338
  var ptr0 = passStringToWasm0(ret, _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_malloc"], _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["__wbindgen_realloc"]);
1038
1339
  var len0 = WASM_VECTOR_LEN;
@@ -1040,71 +1341,49 @@ const __wbindgen_debug_string = function(arg0, arg1) {
1040
1341
  getInt32Memory0()[arg0 / 4 + 0] = ptr0;
1041
1342
  };
1042
1343
 
1043
- const __wbindgen_throw = function(arg0, arg1) {
1344
+ function __wbindgen_throw(arg0, arg1) {
1044
1345
  throw new Error(getStringFromWasm0(arg0, arg1));
1045
1346
  };
1046
1347
 
1047
- const __wbindgen_memory = function() {
1348
+ function __wbindgen_memory() {
1048
1349
  var ret = _buttplug_rs_ffi_bg_wasm__WEBPACK_IMPORTED_MODULE_0__["memory"];
1049
1350
  return addHeapObject(ret);
1050
1351
  };
1051
1352
 
1052
- const __wbindgen_closure_wrapper677 = function(arg0, arg1, arg2) {
1053
- var ret = makeMutClosure(arg0, arg1, 238, __wbg_adapter_22);
1353
+ function __wbindgen_closure_wrapper256(arg0, arg1, arg2) {
1354
+ var ret = makeMutClosure(arg0, arg1, 60, __wbg_adapter_24);
1054
1355
  return addHeapObject(ret);
1055
1356
  };
1056
1357
 
1057
- const __wbindgen_closure_wrapper679 = function(arg0, arg1, arg2) {
1058
- var ret = makeMutClosure(arg0, arg1, 238, __wbg_adapter_25);
1358
+ function __wbindgen_closure_wrapper258(arg0, arg1, arg2) {
1359
+ var ret = makeMutClosure(arg0, arg1, 60, __wbg_adapter_27);
1059
1360
  return addHeapObject(ret);
1060
1361
  };
1061
1362
 
1062
- const __wbindgen_closure_wrapper681 = function(arg0, arg1, arg2) {
1063
- var ret = makeMutClosure(arg0, arg1, 238, __wbg_adapter_28);
1363
+ function __wbindgen_closure_wrapper260(arg0, arg1, arg2) {
1364
+ var ret = makeMutClosure(arg0, arg1, 60, __wbg_adapter_30);
1064
1365
  return addHeapObject(ret);
1065
1366
  };
1066
1367
 
1067
- const __wbindgen_closure_wrapper683 = function(arg0, arg1, arg2) {
1068
- var ret = makeMutClosure(arg0, arg1, 238, __wbg_adapter_31);
1368
+ function __wbindgen_closure_wrapper262(arg0, arg1, arg2) {
1369
+ var ret = makeMutClosure(arg0, arg1, 60, __wbg_adapter_33);
1069
1370
  return addHeapObject(ret);
1070
1371
  };
1071
1372
 
1072
- const __wbindgen_closure_wrapper2493 = function(arg0, arg1, arg2) {
1073
- var ret = makeMutClosure(arg0, arg1, 1210, __wbg_adapter_34);
1373
+ function __wbindgen_closure_wrapper2880(arg0, arg1, arg2) {
1374
+ var ret = makeMutClosure(arg0, arg1, 1529, __wbg_adapter_36);
1074
1375
  return addHeapObject(ret);
1075
1376
  };
1076
1377
 
1077
- const __wbindgen_closure_wrapper4268 = function(arg0, arg1, arg2) {
1078
- var ret = makeMutClosure(arg0, arg1, 1943, __wbg_adapter_37);
1378
+ function __wbindgen_closure_wrapper4637(arg0, arg1, arg2) {
1379
+ var ret = makeMutClosure(arg0, arg1, 2283, __wbg_adapter_39);
1079
1380
  return addHeapObject(ret);
1080
1381
  };
1081
1382
 
1082
1383
 
1083
1384
  /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/harmony-module.js */ "./node_modules/webpack/buildin/harmony-module.js")(module), __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
1084
1385
 
1085
- /***/ }),
1086
-
1087
- /***/ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.wasm":
1088
- /*!*****************************************************!*\
1089
- !*** ./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.wasm ***!
1090
- \*****************************************************/
1091
- /*! exports provided: memory, buttplug_create_client, buttplug_free_client, buttplug_parse_client_message, buttplug_create_device, buttplug_parse_device_message, buttplug_free_device, buttplug_activate_env_logger, __wbindgen_malloc, __wbindgen_realloc, __wbindgen_export_2, _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0b764fa99a83aa89, _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hab1e0ecd8ff83e01, _dyn_core__ops__function__FnMut_____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h1e3b60da244339a5, __wbindgen_free, __wbindgen_exn_store */
1092
- /***/ (function(module, exports, __webpack_require__) {
1093
-
1094
- "use strict";
1095
- // Instantiate WebAssembly module
1096
- var wasmExports = __webpack_require__.w[module.i];
1097
- __webpack_require__.r(exports);
1098
- // export exports from WebAssembly module
1099
- for(var name in wasmExports) if(name != "__webpack_init__") exports[name] = wasmExports[name];
1100
- // exec imports from WebAssembly module (for esm order)
1101
- /* harmony import */ var m0 = __webpack_require__(/*! ./buttplug_rs_ffi_bg.js */ "./src/buttplug-rs-ffi/buttplug_rs_ffi_bg.js");
1102
-
1103
-
1104
- // exec wasm module
1105
- wasmExports["__webpack_init__"]()
1106
-
1107
1386
  /***/ })
1108
1387
 
1109
1388
  }]);
1110
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9CdXR0cGx1Zy8od2VicGFjaykvYnVpbGRpbi9oYXJtb255LW1vZHVsZS5qcyIsIndlYnBhY2s6Ly9CdXR0cGx1Zy8uL3NyYy9idXR0cGx1Zy1ycy1mZmkvYnV0dHBsdWdfcnNfZmZpLmpzIiwid2VicGFjazovL0J1dHRwbHVnLy4vc3JjL2J1dHRwbHVnLXJzLWZmaS9idXR0cGx1Z19yc19mZmlfYmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDdkJBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRDs7Ozs7Ozs7Ozs7OztBQ0FsRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtEOztBQUVsRDs7QUFF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OztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxzQ0FBc0MsMEVBQXNCLEVBQUUsMkVBQXVCO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSw0REFBNEQsMEVBQXNCLEVBQUUsMkVBQXVCO0FBQzNHO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRU07QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRU07QUFDUDtBQUNBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQO0FBQ0E7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQTtBQUNBLENBQUM7O0FBRU07QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0EsQ0FBQzs7QUFFTTtBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSw0REFBNEQsMEVBQXNCLEVBQUUsMkVBQXVCO0FBQzNHO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQSxzQ0FBc0MsMEVBQXNCLEVBQUUsMkVBQXVCO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQLGNBQWMsK0RBQVc7QUFDekI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIwLmJ1dHRwbHVnLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcmlnaW5hbE1vZHVsZSkge1xuXHRpZiAoIW9yaWdpbmFsTW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xuXHRcdHZhciBtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG9yaWdpbmFsTW9kdWxlKTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJleHBvcnRzXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWVcblx0XHR9KTtcblx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcblx0fVxuXHRyZXR1cm4gbW9kdWxlO1xufTtcbiIsImltcG9ydCAqIGFzIHdhc20gZnJvbSBcIi4vYnV0dHBsdWdfcnNfZmZpX2JnLndhc21cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2J1dHRwbHVnX3JzX2ZmaV9iZy5qc1wiOyIsImltcG9ydCAqIGFzIHdhc20gZnJvbSAnLi9idXR0cGx1Z19yc19mZmlfYmcud2FzbSc7XG5cbmNvbnN0IGhlYXAgPSBuZXcgQXJyYXkoMzIpLmZpbGwodW5kZWZpbmVkKTtcblxuaGVhcC5wdXNoKHVuZGVmaW5lZCwgbnVsbCwgdHJ1ZSwgZmFsc2UpO1xuXG5mdW5jdGlvbiBnZXRPYmplY3QoaWR4KSB7IHJldHVybiBoZWFwW2lkeF07IH1cblxubGV0IGhlYXBfbmV4dCA9IGhlYXAubGVuZ3RoO1xuXG5mdW5jdGlvbiBkcm9wT2JqZWN0KGlkeCkge1xuICAgIGlmIChpZHggPCAzNikgcmV0dXJuO1xuICAgIGhlYXBbaWR4XSA9IGhlYXBfbmV4dDtcbiAgICBoZWFwX25leHQgPSBpZHg7XG59XG5cbmZ1bmN0aW9uIHRha2VPYmplY3QoaWR4KSB7XG4gICAgY29uc3QgcmV0ID0gZ2V0T2JqZWN0KGlkeCk7XG4gICAgZHJvcE9iamVjdChpZHgpO1xuICAgIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGFkZEhlYXBPYmplY3Qob2JqKSB7XG4gICAgaWYgKGhlYXBfbmV4dCA9PT0gaGVhcC5sZW5ndGgpIGhlYXAucHVzaChoZWFwLmxlbmd0aCArIDEpO1xuICAgIGNvbnN0IGlkeCA9IGhlYXBfbmV4dDtcbiAgICBoZWFwX25leHQgPSBoZWFwW2lkeF07XG5cbiAgICBoZWFwW2lkeF0gPSBvYmo7XG4gICAgcmV0dXJuIGlkeDtcbn1cblxuY29uc3QgbFRleHREZWNvZGVyID0gdHlwZW9mIFRleHREZWNvZGVyID09PSAndW5kZWZpbmVkJyA/ICgwLCBtb2R1bGUucmVxdWlyZSkoJ3V0aWwnKS5UZXh0RGVjb2RlciA6IFRleHREZWNvZGVyO1xuXG5sZXQgY2FjaGVkVGV4dERlY29kZXIgPSBuZXcgbFRleHREZWNvZGVyKCd1dGYtOCcsIHsgaWdub3JlQk9NOiB0cnVlLCBmYXRhbDogdHJ1ZSB9KTtcblxuY2FjaGVkVGV4dERlY29kZXIuZGVjb2RlKCk7XG5cbmxldCBjYWNoZWdldFVpbnQ4TWVtb3J5MCA9IG51bGw7XG5mdW5jdGlvbiBnZXRVaW50OE1lbW9yeTAoKSB7XG4gICAgaWYgKGNhY2hlZ2V0VWludDhNZW1vcnkwID09PSBudWxsIHx8IGNhY2hlZ2V0VWludDhNZW1vcnkwLmJ1ZmZlciAhPT0gd2FzbS5tZW1vcnkuYnVmZmVyKSB7XG4gICAgICAgIGNhY2hlZ2V0VWludDhNZW1vcnkwID0gbmV3IFVpbnQ4QXJyYXkod2FzbS5tZW1vcnkuYnVmZmVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZ2V0VWludDhNZW1vcnkwO1xufVxuXG5mdW5jdGlvbiBnZXRTdHJpbmdGcm9tV2FzbTAocHRyLCBsZW4pIHtcbiAgICByZXR1cm4gY2FjaGVkVGV4dERlY29kZXIuZGVjb2RlKGdldFVpbnQ4TWVtb3J5MCgpLnN1YmFycmF5KHB0ciwgcHRyICsgbGVuKSk7XG59XG5cbmxldCBXQVNNX1ZFQ1RPUl9MRU4gPSAwO1xuXG5jb25zdCBsVGV4dEVuY29kZXIgPSB0eXBlb2YgVGV4dEVuY29kZXIgPT09ICd1bmRlZmluZWQnID8gKDAsIG1vZHVsZS5yZXF1aXJlKSgndXRpbCcpLlRleHRFbmNvZGVyIDogVGV4dEVuY29kZXI7XG5cbmxldCBjYWNoZWRUZXh0RW5jb2RlciA9IG5ldyBsVGV4dEVuY29kZXIoJ3V0Zi04Jyk7XG5cbmNvbnN0IGVuY29kZVN0cmluZyA9ICh0eXBlb2YgY2FjaGVkVGV4dEVuY29kZXIuZW5jb2RlSW50byA9PT0gJ2Z1bmN0aW9uJ1xuICAgID8gZnVuY3Rpb24gKGFyZywgdmlldykge1xuICAgIHJldHVybiBjYWNoZWRUZXh0RW5jb2Rlci5lbmNvZGVJbnRvKGFyZywgdmlldyk7XG59XG4gICAgOiBmdW5jdGlvbiAoYXJnLCB2aWV3KSB7XG4gICAgY29uc3QgYnVmID0gY2FjaGVkVGV4dEVuY29kZXIuZW5jb2RlKGFyZyk7XG4gICAgdmlldy5zZXQoYnVmKTtcbiAgICByZXR1cm4ge1xuICAgICAgICByZWFkOiBhcmcubGVuZ3RoLFxuICAgICAgICB3cml0dGVuOiBidWYubGVuZ3RoXG4gICAgfTtcbn0pO1xuXG5mdW5jdGlvbiBwYXNzU3RyaW5nVG9XYXNtMChhcmcsIG1hbGxvYywgcmVhbGxvYykge1xuXG4gICAgaWYgKHJlYWxsb2MgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBidWYgPSBjYWNoZWRUZXh0RW5jb2Rlci5lbmNvZGUoYXJnKTtcbiAgICAgICAgY29uc3QgcHRyID0gbWFsbG9jKGJ1Zi5sZW5ndGgpO1xuICAgICAgICBnZXRVaW50OE1lbW9yeTAoKS5zdWJhcnJheShwdHIsIHB0ciArIGJ1Zi5sZW5ndGgpLnNldChidWYpO1xuICAgICAgICBXQVNNX1ZFQ1RPUl9MRU4gPSBidWYubGVuZ3RoO1xuICAgICAgICByZXR1cm4gcHRyO1xuICAgIH1cblxuICAgIGxldCBsZW4gPSBhcmcubGVuZ3RoO1xuICAgIGxldCBwdHIgPSBtYWxsb2MobGVuKTtcblxuICAgIGNvbnN0IG1lbSA9IGdldFVpbnQ4TWVtb3J5MCgpO1xuXG4gICAgbGV0IG9mZnNldCA9IDA7XG5cbiAgICBmb3IgKDsgb2Zmc2V0IDwgbGVuOyBvZmZzZXQrKykge1xuICAgICAgICBjb25zdCBjb2RlID0gYXJnLmNoYXJDb2RlQXQob2Zmc2V0KTtcbiAgICAgICAgaWYgKGNvZGUgPiAweDdGKSBicmVhaztcbiAgICAgICAgbWVtW3B0ciArIG9mZnNldF0gPSBjb2RlO1xuICAgIH1cblxuICAgIGlmIChvZmZzZXQgIT09IGxlbikge1xuICAgICAgICBpZiAob2Zmc2V0ICE9PSAwKSB7XG4gICAgICAgICAgICBhcmcgPSBhcmcuc2xpY2Uob2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgICBwdHIgPSByZWFsbG9jKHB0ciwgbGVuLCBsZW4gPSBvZmZzZXQgKyBhcmcubGVuZ3RoICogMyk7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBnZXRVaW50OE1lbW9yeTAoKS5zdWJhcnJheShwdHIgKyBvZmZzZXQsIHB0ciArIGxlbik7XG4gICAgICAgIGNvbnN0IHJldCA9IGVuY29kZVN0cmluZyhhcmcsIHZpZXcpO1xuXG4gICAgICAgIG9mZnNldCArPSByZXQud3JpdHRlbjtcbiAgICB9XG5cbiAgICBXQVNNX1ZFQ1RPUl9MRU4gPSBvZmZzZXQ7XG4gICAgcmV0dXJuIHB0cjtcbn1cblxuZnVuY3Rpb24gaXNMaWtlTm9uZSh4KSB7XG4gICAgcmV0dXJuIHggPT09IHVuZGVmaW5lZCB8fCB4ID09PSBudWxsO1xufVxuXG5sZXQgY2FjaGVnZXRJbnQzMk1lbW9yeTAgPSBudWxsO1xuZnVuY3Rpb24gZ2V0SW50MzJNZW1vcnkwKCkge1xuICAgIGlmIChjYWNoZWdldEludDMyTWVtb3J5MCA9PT0gbnVsbCB8fCBjYWNoZWdldEludDMyTWVtb3J5MC5idWZmZXIgIT09IHdhc20ubWVtb3J5LmJ1ZmZlcikge1xuICAgICAgICBjYWNoZWdldEludDMyTWVtb3J5MCA9IG5ldyBJbnQzMkFycmF5KHdhc20ubWVtb3J5LmJ1ZmZlcik7XG4gICAgfVxuICAgIHJldHVybiBjYWNoZWdldEludDMyTWVtb3J5MDtcbn1cblxuZnVuY3Rpb24gZGVidWdTdHJpbmcodmFsKSB7XG4gICAgLy8gcHJpbWl0aXZlIHR5cGVzXG4gICAgY29uc3QgdHlwZSA9IHR5cGVvZiB2YWw7XG4gICAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnYm9vbGVhbicgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuICBgJHt2YWx9YDtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGBcIiR7dmFsfVwiYDtcbiAgICB9XG4gICAgaWYgKHR5cGUgPT0gJ3N5bWJvbCcpIHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSB2YWwuZGVzY3JpcHRpb247XG4gICAgICAgIGlmIChkZXNjcmlwdGlvbiA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gJ1N5bWJvbCc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYFN5bWJvbCgke2Rlc2NyaXB0aW9ufSlgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHZhbC5uYW1lO1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT0gJ3N0cmluZycgJiYgbmFtZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gYEZ1bmN0aW9uKCR7bmFtZX0pYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnRnVuY3Rpb24nO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIG9iamVjdHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHZhbC5sZW5ndGg7XG4gICAgICAgIGxldCBkZWJ1ZyA9ICdbJztcbiAgICAgICAgaWYgKGxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGRlYnVnICs9IGRlYnVnU3RyaW5nKHZhbFswXSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yKGxldCBpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkZWJ1ZyArPSAnLCAnICsgZGVidWdTdHJpbmcodmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBkZWJ1ZyArPSAnXSc7XG4gICAgICAgIHJldHVybiBkZWJ1ZztcbiAgICB9XG4gICAgLy8gVGVzdCBmb3IgYnVpbHQtaW5cbiAgICBjb25zdCBidWlsdEluTWF0Y2hlcyA9IC9cXFtvYmplY3QgKFteXFxdXSspXFxdLy5leGVjKHRvU3RyaW5nLmNhbGwodmFsKSk7XG4gICAgbGV0IGNsYXNzTmFtZTtcbiAgICBpZiAoYnVpbHRJbk1hdGNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgICBjbGFzc05hbWUgPSBidWlsdEluTWF0Y2hlc1sxXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBGYWlsZWQgdG8gbWF0Y2ggdGhlIHN0YW5kYXJkICdbb2JqZWN0IENsYXNzTmFtZV0nXG4gICAgICAgIHJldHVybiB0b1N0cmluZy5jYWxsKHZhbCk7XG4gICAgfVxuICAgIGlmIChjbGFzc05hbWUgPT0gJ09iamVjdCcpIHtcbiAgICAgICAgLy8gd2UncmUgYSB1c2VyIGRlZmluZWQgY2xhc3Mgb3IgT2JqZWN0XG4gICAgICAgIC8vIEpTT04uc3RyaW5naWZ5IGF2b2lkcyBwcm9ibGVtcyB3aXRoIGN5Y2xlcywgYW5kIGlzIGdlbmVyYWxseSBtdWNoXG4gICAgICAgIC8vIGVhc2llciB0aGFuIGxvb3BpbmcgdGhyb3VnaCBvd25Qcm9wZXJ0aWVzIG9mIGB2YWxgLlxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuICdPYmplY3QoJyArIEpTT04uc3RyaW5naWZ5KHZhbCkgKyAnKSc7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICAgIHJldHVybiAnT2JqZWN0JztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBlcnJvcnNcbiAgICBpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGAke3ZhbC5uYW1lfTogJHt2YWwubWVzc2FnZX1cXG4ke3ZhbC5zdGFja31gO1xuICAgIH1cbiAgICAvLyBUT0RPIHdlIGNvdWxkIHRlc3QgZm9yIG1vcmUgdGhpbmdzIGhlcmUsIGxpa2UgYFNldGBzIGFuZCBgTWFwYHMuXG4gICAgcmV0dXJuIGNsYXNzTmFtZTtcbn1cblxuZnVuY3Rpb24gbWFrZU11dENsb3N1cmUoYXJnMCwgYXJnMSwgZHRvciwgZikge1xuICAgIGNvbnN0IHN0YXRlID0geyBhOiBhcmcwLCBiOiBhcmcxLCBjbnQ6IDEsIGR0b3IgfTtcbiAgICBjb25zdCByZWFsID0gKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgLy8gRmlyc3QgdXAgd2l0aCBhIGNsb3N1cmUgd2UgaW5jcmVtZW50IHRoZSBpbnRlcm5hbCByZWZlcmVuY2VcbiAgICAgICAgLy8gY291bnQuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBSdXN0IGNsb3N1cmUgZW52aXJvbm1lbnQgd29uJ3RcbiAgICAgICAgLy8gYmUgZGVhbGxvY2F0ZWQgd2hpbGUgd2UncmUgaW52b2tpbmcgaXQuXG4gICAgICAgIHN0YXRlLmNudCsrO1xuICAgICAgICBjb25zdCBhID0gc3RhdGUuYTtcbiAgICAgICAgc3RhdGUuYSA9IDA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gZihhLCBzdGF0ZS5iLCAuLi5hcmdzKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmICgtLXN0YXRlLmNudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHdhc20uX193YmluZGdlbl9leHBvcnRfMi5nZXQoc3RhdGUuZHRvcikoYSwgc3RhdGUuYik7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3RhdGUuYSA9IGE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJlYWwub3JpZ2luYWwgPSBzdGF0ZTtcblxuICAgIHJldHVybiByZWFsO1xufVxuZnVuY3Rpb24gX193YmdfYWRhcHRlcl8yMihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgd2FzbS5fZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuTXV0X19BX19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gwYjc2NGZhOTlhODNhYTg5KGFyZzAsIGFyZzEsIGFkZEhlYXBPYmplY3QoYXJnMikpO1xufVxuXG5mdW5jdGlvbiBfX3diZ19hZGFwdGVyXzI1KGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB3YXNtLl9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDBiNzY0ZmE5OWE4M2FhODkoYXJnMCwgYXJnMSwgYWRkSGVhcE9iamVjdChhcmcyKSk7XG59XG5cbmZ1bmN0aW9uIF9fd2JnX2FkYXB0ZXJfMjgoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHdhc20uX2R5bl9jb3JlX19vcHNfX2Z1bmN0aW9uX19Gbk11dF9fQV9fX19PdXRwdXRfX19SX2FzX3dhc21fYmluZGdlbl9fY2xvc3VyZV9fV2FzbUNsb3N1cmVfX19kZXNjcmliZV9faW52b2tlX19oMGI3NjRmYTk5YTgzYWE4OShhcmcwLCBhcmcxLCBhZGRIZWFwT2JqZWN0KGFyZzIpKTtcbn1cblxuZnVuY3Rpb24gX193YmdfYWRhcHRlcl8zMShhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgd2FzbS5fZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuTXV0X19BX19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gwYjc2NGZhOTlhODNhYTg5KGFyZzAsIGFyZzEsIGFkZEhlYXBPYmplY3QoYXJnMikpO1xufVxuXG5mdW5jdGlvbiBfX3diZ19hZGFwdGVyXzM0KGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB3YXNtLl9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faGFiMWUwZWNkOGZmODNlMDEoYXJnMCwgYXJnMSwgYWRkSGVhcE9iamVjdChhcmcyKSk7XG59XG5cbmZ1bmN0aW9uIF9fd2JnX2FkYXB0ZXJfMzcoYXJnMCwgYXJnMSkge1xuICAgIHdhc20uX2R5bl9jb3JlX19vcHNfX2Z1bmN0aW9uX19Gbk11dF9fX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDFlM2I2MGRhMjQ0MzM5YTUoYXJnMCwgYXJnMSk7XG59XG5cbmxldCBzdGFja19wb2ludGVyID0gMzI7XG5cbmZ1bmN0aW9uIGFkZEJvcnJvd2VkT2JqZWN0KG9iaikge1xuICAgIGlmIChzdGFja19wb2ludGVyID09IDEpIHRocm93IG5ldyBFcnJvcignb3V0IG9mIGpzIHN0YWNrJyk7XG4gICAgaGVhcFstLXN0YWNrX3BvaW50ZXJdID0gb2JqO1xuICAgIHJldHVybiBzdGFja19wb2ludGVyO1xufVxuLyoqXG4qIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4qIEBwYXJhbSB7c3RyaW5nfSBjbGllbnRfbmFtZVxuKiBAcmV0dXJucyB7bnVtYmVyfVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBidXR0cGx1Z19jcmVhdGVfY2xpZW50KGNhbGxiYWNrLCBjbGllbnRfbmFtZSkge1xuICAgIHRyeSB7XG4gICAgICAgIHZhciBwdHIwID0gcGFzc1N0cmluZ1RvV2FzbTAoY2xpZW50X25hbWUsIHdhc20uX193YmluZGdlbl9tYWxsb2MsIHdhc20uX193YmluZGdlbl9yZWFsbG9jKTtcbiAgICAgICAgdmFyIGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgICAgIHZhciByZXQgPSB3YXNtLmJ1dHRwbHVnX2NyZWF0ZV9jbGllbnQoYWRkQm9ycm93ZWRPYmplY3QoY2FsbGJhY2spLCBwdHIwLCBsZW4wKTtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICBoZWFwW3N0YWNrX3BvaW50ZXIrK10gPSB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG4vKipcbiogQHBhcmFtIHtudW1iZXJ9IHB0clxuKi9cbmV4cG9ydCBmdW5jdGlvbiBidXR0cGx1Z19mcmVlX2NsaWVudChwdHIpIHtcbiAgICB3YXNtLmJ1dHRwbHVnX2ZyZWVfY2xpZW50KHB0cik7XG59XG5cbmZ1bmN0aW9uIHBhc3NBcnJheThUb1dhc20wKGFyZywgbWFsbG9jKSB7XG4gICAgY29uc3QgcHRyID0gbWFsbG9jKGFyZy5sZW5ndGggKiAxKTtcbiAgICBnZXRVaW50OE1lbW9yeTAoKS5zZXQoYXJnLCBwdHIgLyAxKTtcbiAgICBXQVNNX1ZFQ1RPUl9MRU4gPSBhcmcubGVuZ3RoO1xuICAgIHJldHVybiBwdHI7XG59XG4vKipcbiogQHBhcmFtIHtudW1iZXJ9IGNsaWVudF9wdHJcbiogQHBhcmFtIHtVaW50OEFycmF5fSBidWZcbiovXG5leHBvcnQgZnVuY3Rpb24gYnV0dHBsdWdfcGFyc2VfY2xpZW50X21lc3NhZ2UoY2xpZW50X3B0ciwgYnVmKSB7XG4gICAgdmFyIHB0cjAgPSBwYXNzQXJyYXk4VG9XYXNtMChidWYsIHdhc20uX193YmluZGdlbl9tYWxsb2MpO1xuICAgIHZhciBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIHdhc20uYnV0dHBsdWdfcGFyc2VfY2xpZW50X21lc3NhZ2UoY2xpZW50X3B0ciwgcHRyMCwgbGVuMCk7XG59XG5cbi8qKlxuKiBAcGFyYW0ge251bWJlcn0gY2xpZW50X3B0clxuKiBAcGFyYW0ge251bWJlcn0gZGV2aWNlX2luZGV4XG4qIEByZXR1cm5zIHtudW1iZXJ9XG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1dHRwbHVnX2NyZWF0ZV9kZXZpY2UoY2xpZW50X3B0ciwgZGV2aWNlX2luZGV4KSB7XG4gICAgdmFyIHJldCA9IHdhc20uYnV0dHBsdWdfY3JlYXRlX2RldmljZShjbGllbnRfcHRyLCBkZXZpY2VfaW5kZXgpO1xuICAgIHJldHVybiByZXQ7XG59XG5cbi8qKlxuKiBAcGFyYW0ge251bWJlcn0gZGV2aWNlX3B0clxuKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZlxuKi9cbmV4cG9ydCBmdW5jdGlvbiBidXR0cGx1Z19wYXJzZV9kZXZpY2VfbWVzc2FnZShkZXZpY2VfcHRyLCBidWYpIHtcbiAgICB2YXIgcHRyMCA9IHBhc3NBcnJheThUb1dhc20wKGJ1Ziwgd2FzbS5fX3diaW5kZ2VuX21hbGxvYyk7XG4gICAgdmFyIGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgd2FzbS5idXR0cGx1Z19wYXJzZV9kZXZpY2VfbWVzc2FnZShkZXZpY2VfcHRyLCBwdHIwLCBsZW4wKTtcbn1cblxuLyoqXG4qIEBwYXJhbSB7bnVtYmVyfSBwdHJcbiovXG5leHBvcnQgZnVuY3Rpb24gYnV0dHBsdWdfZnJlZV9kZXZpY2UocHRyKSB7XG4gICAgd2FzbS5idXR0cGx1Z19mcmVlX2RldmljZShwdHIpO1xufVxuXG4vKipcbiogQHBhcmFtIHtzdHJpbmd9IG1heF9sZXZlbFxuKi9cbmV4cG9ydCBmdW5jdGlvbiBidXR0cGx1Z19hY3RpdmF0ZV9lbnZfbG9nZ2VyKG1heF9sZXZlbCkge1xuICAgIHZhciBwdHIwID0gcGFzc1N0cmluZ1RvV2FzbTAobWF4X2xldmVsLCB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLCB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyk7XG4gICAgdmFyIGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgd2FzbS5idXR0cGx1Z19hY3RpdmF0ZV9lbnZfbG9nZ2VyKHB0cjAsIGxlbjApO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVFcnJvcihmKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgd2FzbS5fX3diaW5kZ2VuX2V4bl9zdG9yZShhZGRIZWFwT2JqZWN0KGUpKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdldEFycmF5VThGcm9tV2FzbTAocHRyLCBsZW4pIHtcbiAgICByZXR1cm4gZ2V0VWludDhNZW1vcnkwKCkuc3ViYXJyYXkocHRyIC8gMSwgcHRyIC8gMSArIGxlbik7XG59XG5cbmV4cG9ydCBjb25zdCBfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZiA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB0YWtlT2JqZWN0KGFyZzApO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JpbmRnZW5fb2JqZWN0X2Nsb25lX3JlZiA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmdfbG9nX2U2YmJjZmRmZjgzMzc1NzMgPSBmdW5jdGlvbihhcmcwLCBhcmcxKSB7XG4gICAgY29uc29sZS5sb2coZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diaW5kZ2VuX3N0cmluZ19uZXcgPSBmdW5jdGlvbihhcmcwLCBhcmcxKSB7XG4gICAgdmFyIHJldCA9IGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JpbmRnZW5fY2JfZHJvcCA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICBjb25zdCBvYmogPSB0YWtlT2JqZWN0KGFyZzApLm9yaWdpbmFsO1xuICAgIGlmIChvYmouY250LS0gPT0gMSkge1xuICAgICAgICBvYmouYSA9IDA7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB2YXIgcmV0ID0gZmFsc2U7XG4gICAgcmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19uZXdfNTljYjc0ZTQyMzc1OGVkZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXQgPSBuZXcgRXJyb3IoKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3N0YWNrXzU1OGJhNTkxN2I0NjZlZGQgPSBmdW5jdGlvbihhcmcwLCBhcmcxKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcxKS5zdGFjaztcbiAgICB2YXIgcHRyMCA9IHBhc3NTdHJpbmdUb1dhc20wKHJldCwgd2FzbS5fX3diaW5kZ2VuX21hbGxvYywgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MpO1xuICAgIHZhciBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMV0gPSBsZW4wO1xuICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMF0gPSBwdHIwO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2Vycm9yXzRiYjZjMmE5NzQwNzEyOWEgPSBmdW5jdGlvbihhcmcwLCBhcmcxKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSkpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIHdhc20uX193YmluZGdlbl9mcmVlKGFyZzAsIGFyZzEpO1xuICAgIH1cbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19sb2dfYjdkY2IzZmFjYzczMTY2ZCA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICBjb25zb2xlLmxvZyhnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2xvZ185NjI5NWQ2OGFiODMzOGRmID0gZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNykge1xuICAgIGNvbnNvbGUubG9nKGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKSwgZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzIsIGFyZzMpLCBnZXRTdHJpbmdGcm9tV2FzbTAoYXJnNCwgYXJnNSksIGdldFN0cmluZ0Zyb21XYXNtMChhcmc2LCBhcmc3KSk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmdfbWFya181NWM1ZWNmZTUwOWRlYjZhID0gZnVuY3Rpb24oYXJnMCwgYXJnMSkge1xuICAgIHBlcmZvcm1hbmNlLm1hcmsoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19tZWFzdXJlXzYwODU2MzEwNmQ3MGQ0OGEgPSBmdW5jdGlvbihhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgcGVyZm9ybWFuY2UubWVhc3VyZShnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSksIGdldFN0cmluZ0Zyb21XYXNtMChhcmcyLCBhcmczKSk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmdfV2luZG93X2Y4MjZhMWRlYzE2M2JhY2IgPSBmdW5jdGlvbihhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5XaW5kb3c7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diaW5kZ2VuX2lzX3VuZGVmaW5lZCA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApID09PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19Xb3JrZXJHbG9iYWxTY29wZV85NjdkMTg2MTU1MTgzZDM4ID0gZnVuY3Rpb24oYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuV29ya2VyR2xvYmFsU2NvcGU7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19pbnN0YW5jZW9mX1dpbmRvd181OTkzMjMwZTczMzFmMDk4ID0gZnVuY3Rpb24oYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkgaW5zdGFuY2VvZiBXaW5kb3c7XG4gICAgcmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19uYXZpZ2F0b3JfZGE1MDFlMGJhYWI3N2Q2NCA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLm5hdmlnYXRvcjtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2NsZWFyVGltZW91dF80ZmU3MWY3MjFkMDYwNmFmID0gZnVuY3Rpb24oYXJnMCwgYXJnMSkge1xuICAgIGdldE9iamVjdChhcmcwKS5jbGVhclRpbWVvdXQoYXJnMSk7XG59O1xuXG5leHBvcnQgY29uc3QgX193Ymdfc2V0VGltZW91dF9kNzUyNDZlNzdlOTkzYzVkID0gaGFuZGxlRXJyb3IoZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuc2V0VGltZW91dChnZXRPYmplY3QoYXJnMSksIGFyZzIpO1xuICAgIHJldHVybiByZXQ7XG59KTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2dldENoYXJhY3RlcmlzdGljX2M3ZjlkY2M3MmY3YTg2ZjYgPSBmdW5jdGlvbihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5nZXRDaGFyYWN0ZXJpc3RpYyhnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMSwgYXJnMikpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmdfdmFsdWVfY2U1ZTRmZTc0MmQzNmExYyA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnZhbHVlO1xuICAgIHJldHVybiBpc0xpa2VOb25lKHJldCkgPyAwIDogYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3NldG9uY2hhcmFjdGVyaXN0aWN2YWx1ZWNoYW5nZWRfZWNlNjBlZGE4MjhjYjBlZiA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkub25jaGFyYWN0ZXJpc3RpY3ZhbHVlY2hhbmdlZCA9IGdldE9iamVjdChhcmcxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19yZWFkVmFsdWVfOTg4NDQwMDM0YTBlMTJjZSA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnJlYWRWYWx1ZSgpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193Ymdfc3RhcnROb3RpZmljYXRpb25zX2M4OGVlYjkyMGQxZWI0NWMgPSBmdW5jdGlvbihhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5zdGFydE5vdGlmaWNhdGlvbnMoKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3dyaXRlVmFsdWVfMWM0NTFlMGRhOGM1NmNhOSA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLndyaXRlVmFsdWUoZ2V0QXJyYXlVOEZyb21XYXNtMChhcmcxLCBhcmcyKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ190YXJnZXRfOTBiMTZmYWNjMTIyMDYyZiA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnRhcmdldDtcbiAgICByZXR1cm4gaXNMaWtlTm9uZShyZXQpID8gMCA6IGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19yZXF1ZXN0RGV2aWNlXzJkMWI3MWNjMjhhNjdhNWEgPSBmdW5jdGlvbihhcmcwLCBhcmcxKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5yZXF1ZXN0RGV2aWNlKGdldE9iamVjdChhcmcxKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19pZF80NWVjZjMyNThjOWY3ZGQ3ID0gZnVuY3Rpb24oYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMSkuaWQ7XG4gICAgdmFyIHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChyZXQsIHdhc20uX193YmluZGdlbl9tYWxsb2MsIHdhc20uX193YmluZGdlbl9yZWFsbG9jKTtcbiAgICB2YXIgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDFdID0gbGVuMDtcbiAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDBdID0gcHRyMDtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19uYW1lX2ZlOWVlMTdlODIxZWNlYTUgPSBmdW5jdGlvbihhcmcwLCBhcmcxKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcxKS5uYW1lO1xuICAgIHZhciBwdHIwID0gaXNMaWtlTm9uZShyZXQpID8gMCA6IHBhc3NTdHJpbmdUb1dhc20wKHJldCwgd2FzbS5fX3diaW5kZ2VuX21hbGxvYywgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MpO1xuICAgIHZhciBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMV0gPSBsZW4wO1xuICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMF0gPSBwdHIwO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2dhdHRfOTlkZjJlNTM4MDA5NzQ4NCA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmdhdHQ7XG4gICAgcmV0dXJuIGlzTGlrZU5vbmUocmV0KSA/IDAgOiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193Ymdfc2V0b25nYXR0c2VydmVyZGlzY29ubmVjdGVkXzgwZTc4YTlkODZhYmRmN2IgPSBmdW5jdGlvbihhcmcwLCBhcmcxKSB7XG4gICAgZ2V0T2JqZWN0KGFyZzApLm9uZ2F0dHNlcnZlcmRpc2Nvbm5lY3RlZCA9IGdldE9iamVjdChhcmcxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19jbGVhclRpbWVvdXRfYWY1NGFjMzRlZmUwMDc3MCA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkuY2xlYXJUaW1lb3V0KGFyZzEpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3NldFRpbWVvdXRfYzViZTRjMDU0YzRkN2RhNSA9IGhhbmRsZUVycm9yKGZ1bmN0aW9uKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnNldFRpbWVvdXQoZ2V0T2JqZWN0KGFyZzEpLCBhcmcyKTtcbiAgICByZXR1cm4gcmV0O1xufSk7XG5cbmV4cG9ydCBjb25zdCBfX3diZ19ibHVldG9vdGhfMThlZTA1ZGYwM2FmMjM1MiA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmJsdWV0b290aDtcbiAgICByZXR1cm4gaXNMaWtlTm9uZShyZXQpID8gMCA6IGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19zZXRvbm9wZW5fYzM5NzVhNGY4OTVhMDUyYSA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkub25vcGVuID0gZ2V0T2JqZWN0KGFyZzEpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3NldG9uZXJyb3JfYWRkMGEyOTMxNTgwMTJmYyA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkub25lcnJvciA9IGdldE9iamVjdChhcmcxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19zZXRvbm1lc3NhZ2VfMGQ0MmM3OWJlMDZkZTg0ZiA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkub25tZXNzYWdlID0gZ2V0T2JqZWN0KGFyZzEpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX25ld19mZDlmM2JmYjg5ZDk2MzYyID0gaGFuZGxlRXJyb3IoZnVuY3Rpb24oYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBuZXcgV2ViU29ja2V0KGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn0pO1xuXG5leHBvcnQgY29uc3QgX193YmdfY2xvc2VfMzc5N2Q0ZmFlOTMyYzliOSA9IGhhbmRsZUVycm9yKGZ1bmN0aW9uKGFyZzApIHtcbiAgICBnZXRPYmplY3QoYXJnMCkuY2xvc2UoKTtcbn0pO1xuXG5leHBvcnQgY29uc3QgX193Ymdfc2VuZF9jYTg1YjBlNjc5OTgwM2VmID0gaGFuZGxlRXJyb3IoZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIGdldE9iamVjdChhcmcwKS5zZW5kKGdldFN0cmluZ0Zyb21XYXNtMChhcmcxLCBhcmcyKSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2Nvbm5lY3RfZDMxYWZhMDc2MGUyMjk0ZSA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmNvbm5lY3QoKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2dldFByaW1hcnlTZXJ2aWNlXzkwM2UxOThlNjAwOTdiNGEgPSBmdW5jdGlvbihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5nZXRQcmltYXJ5U2VydmljZShnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMSwgYXJnMikpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmdfZGF0YV80MzdlNzRiODM1MjQxZTcwID0gZnVuY3Rpb24oYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuZGF0YTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2NhbGxfZTU4NDdkMTVjYzIyOGU0ZiA9IGhhbmRsZUVycm9yKGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmNhbGwoZ2V0T2JqZWN0KGFyZzEpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufSk7XG5cbmV4cG9ydCBjb25zdCBfX3diZ19uZXdfN2M5OTVmMmFkZWJhNmZiNSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXQgPSBuZXcgQXJyYXkoKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3B1c2hfM2Y3Yzc2YjU4OTE5Y2UwZCA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnB1c2goZ2V0T2JqZWN0KGFyZzEpKTtcbiAgICByZXR1cm4gcmV0O1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2J1ZmZlcl8zMjI5NmM2NzgyOGZlZTZjID0gZnVuY3Rpb24oYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuYnVmZmVyO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmdfYnl0ZUxlbmd0aF9kYTk0OGUxYWZkODNjOGY4ID0gZnVuY3Rpb24oYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuYnl0ZUxlbmd0aDtcbiAgICByZXR1cm4gcmV0O1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX25ld25vYXJnc18yMzQ5YmE2YWVmZTcyMzc2ID0gZnVuY3Rpb24oYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBuZXcgRnVuY3Rpb24oZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2NhbGxfZDYzZWRiODU3ZWRmMTZmNiA9IGhhbmRsZUVycm9yKGZ1bmN0aW9uKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmNhbGwoZ2V0T2JqZWN0KGFyZzEpLCBnZXRPYmplY3QoYXJnMikpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59KTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX25ld181OTk4NmM4NzMxYmViYWExID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJldCA9IG5ldyBPYmplY3QoKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3Jlc29sdmVfZTA2OTAxNDM0MDZjODhjYiA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gUHJvbWlzZS5yZXNvbHZlKGdldE9iamVjdChhcmcwKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ190aGVuXzljYWYyMzEyMmU0ZmQ1ZDMgPSBmdW5jdGlvbihhcmcwLCBhcmcxKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS50aGVuKGdldE9iamVjdChhcmcxKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ190aGVuXzE2NjYzZmFmNjBmZmJlOTUgPSBmdW5jdGlvbihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS50aGVuKGdldE9iamVjdChhcmcxKSwgZ2V0T2JqZWN0KGFyZzIpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3NlbGZfMzVhMGZkYTNlYjk2NWFiZSA9IGhhbmRsZUVycm9yKGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXQgPSBzZWxmLnNlbGY7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn0pO1xuXG5leHBvcnQgY29uc3QgX193Ymdfd2luZG93Xzg4YTZmODhkZDNhNDc0ZjEgPSBoYW5kbGVFcnJvcihmdW5jdGlvbigpIHtcbiAgICB2YXIgcmV0ID0gd2luZG93LndpbmRvdztcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufSk7XG5cbmV4cG9ydCBjb25zdCBfX3diZ19nbG9iYWxUaGlzXzFkODQzYzRhZDdiNmExZjUgPSBoYW5kbGVFcnJvcihmdW5jdGlvbigpIHtcbiAgICB2YXIgcmV0ID0gZ2xvYmFsVGhpcy5nbG9iYWxUaGlzO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59KTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2dsb2JhbF8yOTRjZTcwNDQ4ZThmYmJmID0gaGFuZGxlRXJyb3IoZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJldCA9IGdsb2JhbC5nbG9iYWw7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn0pO1xuXG5leHBvcnQgY29uc3QgX193YmdfYnVmZmVyXzBiZTlmYjQyNmYyZGQ4MmIgPSBmdW5jdGlvbihhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5idWZmZXI7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF84NWI3Y2U4MmIwMDFlYTA4ID0gZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBuZXcgVWludDhBcnJheShnZXRPYmplY3QoYXJnMCksIGFyZzEgPj4+IDAsIGFyZzIgPj4+IDApO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmdfbGVuZ3RoXzNhNTEzOGY0NjViOTcxYWQgPSBmdW5jdGlvbihhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5sZW5ndGg7XG4gICAgcmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19uZXdfNGU4ZDE4ZGJmOWNkNTI0MCA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gbmV3IFVpbnQ4QXJyYXkoZ2V0T2JqZWN0KGFyZzApKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3NldF80NzY5ZGUzMDFlYjUyMWQ3ID0gZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIGdldE9iamVjdChhcmcwKS5zZXQoZ2V0T2JqZWN0KGFyZzEpLCBhcmcyID4+PiAwKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19uZXd3aXRoYnl0ZW9mZnNldF8wYTZiMGNlOWQ0NTI3MGMzID0gZnVuY3Rpb24oYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBuZXcgVWludDhBcnJheShnZXRPYmplY3QoYXJnMCksIGFyZzEgPj4+IDApO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193Ymdfc2V0XzdlMTVkMzY1NjMwNzJiMTkgPSBoYW5kbGVFcnJvcihmdW5jdGlvbihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IFJlZmxlY3Quc2V0KGdldE9iamVjdChhcmcwKSwgZ2V0T2JqZWN0KGFyZzEpLCBnZXRPYmplY3QoYXJnMikpO1xuICAgIHJldHVybiByZXQ7XG59KTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX2dldFJhbmRvbVZhbHVlc18xMTExNWE4NTI3MjlmNGU4ID0gaGFuZGxlRXJyb3IoZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIGdldE9iamVjdChhcmcwKS5nZXRSYW5kb21WYWx1ZXMoZ2V0QXJyYXlVOEZyb21XYXNtMChhcmcxLCBhcmcyKSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3JhbmRvbUZpbGxTeW5jX2EyZDAwMmZjM2I4ZTMwZjcgPSBoYW5kbGVFcnJvcihmdW5jdGlvbihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgZ2V0T2JqZWN0KGFyZzApLnJhbmRvbUZpbGxTeW5jKGdldEFycmF5VThGcm9tV2FzbTAoYXJnMSwgYXJnMikpO1xufSk7XG5cbmV4cG9ydCBjb25zdCBfX3diZ19zZWxmX2E1ZjBmZTU1NjQ3ODI3ODcgPSBoYW5kbGVFcnJvcihmdW5jdGlvbigpIHtcbiAgICB2YXIgcmV0ID0gc2VsZi5zZWxmO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59KTtcblxuZXhwb3J0IGNvbnN0IF9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9NT0RVTEVfN2YyNzhjNTQ0NmMxMjZjOCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXQgPSBtb2R1bGU7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19yZXF1aXJlXzI5ZTU4YjVmNmYxMzM1NjMgPSBoYW5kbGVFcnJvcihmdW5jdGlvbihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5yZXF1aXJlKGdldFN0cmluZ0Zyb21XYXNtMChhcmcxLCBhcmcyKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn0pO1xuXG5leHBvcnQgY29uc3QgX193YmdfY3J5cHRvX2Q5MTQyOWVhMWEwODdmNzAgPSBmdW5jdGlvbihhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5jcnlwdG87XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diZ19tc0NyeXB0b19jOGJlMmJiNGZjN2Q4Y2QzID0gZnVuY3Rpb24oYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkubXNDcnlwdG87XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diaW5kZ2VuX2lzX3N0cmluZyA9IGZ1bmN0aW9uKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gdHlwZW9mKGdldE9iamVjdChhcmcwKSkgPT09ICdzdHJpbmcnO1xuICAgIHJldHVybiByZXQ7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmluZGdlbl9zdHJpbmdfZ2V0ID0gZnVuY3Rpb24oYXJnMCwgYXJnMSkge1xuICAgIGNvbnN0IG9iaiA9IGdldE9iamVjdChhcmcxKTtcbiAgICB2YXIgcmV0ID0gdHlwZW9mKG9iaikgPT09ICdzdHJpbmcnID8gb2JqIDogdW5kZWZpbmVkO1xuICAgIHZhciBwdHIwID0gaXNMaWtlTm9uZShyZXQpID8gMCA6IHBhc3NTdHJpbmdUb1dhc20wKHJldCwgd2FzbS5fX3diaW5kZ2VuX21hbGxvYywgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MpO1xuICAgIHZhciBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMV0gPSBsZW4wO1xuICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMF0gPSBwdHIwO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JpbmRnZW5fZGVidWdfc3RyaW5nID0gZnVuY3Rpb24oYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBkZWJ1Z1N0cmluZyhnZXRPYmplY3QoYXJnMSkpO1xuICAgIHZhciBwdHIwID0gcGFzc1N0cmluZ1RvV2FzbTAocmV0LCB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLCB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyk7XG4gICAgdmFyIGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGxlbjA7XG4gICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9IHB0cjA7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmluZGdlbl90aHJvdyA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diaW5kZ2VuX21lbW9yeSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXQgPSB3YXNtLm1lbW9yeTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNjc3ID0gZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBtYWtlTXV0Q2xvc3VyZShhcmcwLCBhcmcxLCAyMzgsIF9fd2JnX2FkYXB0ZXJfMjIpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXI2NzkgPSBmdW5jdGlvbihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IG1ha2VNdXRDbG9zdXJlKGFyZzAsIGFyZzEsIDIzOCwgX193YmdfYWRhcHRlcl8yNSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBfX3diaW5kZ2VuX2Nsb3N1cmVfd3JhcHBlcjY4MSA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gbWFrZU11dENsb3N1cmUoYXJnMCwgYXJnMSwgMjM4LCBfX3diZ19hZGFwdGVyXzI4KTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNjgzID0gZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBtYWtlTXV0Q2xvc3VyZShhcmcwLCBhcmcxLCAyMzgsIF9fd2JnX2FkYXB0ZXJfMzEpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgY29uc3QgX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXIyNDkzID0gZnVuY3Rpb24oYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBtYWtlTXV0Q2xvc3VyZShhcmcwLCBhcmcxLCAxMjEwLCBfX3diZ19hZGFwdGVyXzM0KTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGNvbnN0IF9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyNDI2OCA9IGZ1bmN0aW9uKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gbWFrZU11dENsb3N1cmUoYXJnMCwgYXJnMSwgMTk0MywgX193YmdfYWRhcHRlcl8zNyk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=
1389
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9CdXR0cGx1Zy8od2VicGFjaykvYnVpbGRpbi9oYXJtb255LW1vZHVsZS5qcyIsIndlYnBhY2s6Ly9CdXR0cGx1Zy8uL3NyYy9idXR0cGx1Zy1ycy1mZmkgc3luYyIsIndlYnBhY2s6Ly9CdXR0cGx1Zy8uL3NyYy9idXR0cGx1Zy1ycy1mZmkvYnV0dHBsdWdfcnNfZmZpLmpzIiwid2VicGFjazovL0J1dHRwbHVnLy4vc3JjL2J1dHRwbHVnLXJzLWZmaS9idXR0cGx1Z19yc19mZmlfYmcuanMiLCJ3ZWJwYWNrOi8vQnV0dHBsdWcvLi9zcmMvYnV0dHBsdWctcnMtZmZpL2J1dHRwbHVnX3JzX2ZmaV9iZ193ZWIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUN2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxXQUFXO0FBQ2xEO0FBQ0E7QUFDQSxnRTs7Ozs7Ozs7Ozs7O0FDUkE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrRDs7Ozs7Ozs7Ozs7OztBQ0FsRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBOztBQUVvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMcEM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FB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O0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU87QUFDUDtBQUNBO0FBQ0E7O0FBRU8sdUNBQXVDO0FBQzlDO0FBQ0E7QUFDQSxDQUFDOztBQUVNO0FBQ1A7QUFDQSxzQ0FBc0MsMEVBQXNCLEVBQUUsMkVBQXVCO0FBQ3JGO0FBQ0E7QUFDQTtBQUNBOztBQUVPO0FBQ1A7QUFDQTs7QUFFTztBQUNQLGNBQWMsK0RBQVc7QUFDekI7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFTztBQUNQO0FBQ0E7QUFDQSIsImZpbGUiOiIwLmJ1dHRwbHVnLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcmlnaW5hbE1vZHVsZSkge1xuXHRpZiAoIW9yaWdpbmFsTW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xuXHRcdHZhciBtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG9yaWdpbmFsTW9kdWxlKTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJleHBvcnRzXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWVcblx0XHR9KTtcblx0XHRtb2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcblx0fVxuXHRyZXR1cm4gbW9kdWxlO1xufTtcbiIsImZ1bmN0aW9uIHdlYnBhY2tFbXB0eUNvbnRleHQocmVxKSB7XG5cdHZhciBlID0gbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIiArIHJlcSArIFwiJ1wiKTtcblx0ZS5jb2RlID0gJ01PRFVMRV9OT1RfRk9VTkQnO1xuXHR0aHJvdyBlO1xufVxud2VicGFja0VtcHR5Q29udGV4dC5rZXlzID0gZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfTtcbndlYnBhY2tFbXB0eUNvbnRleHQucmVzb2x2ZSA9IHdlYnBhY2tFbXB0eUNvbnRleHQ7XG5tb2R1bGUuZXhwb3J0cyA9IHdlYnBhY2tFbXB0eUNvbnRleHQ7XG53ZWJwYWNrRW1wdHlDb250ZXh0LmlkID0gXCIuL3NyYy9idXR0cGx1Zy1ycy1mZmkgc3luYyByZWN1cnNpdmVcIjsiLCJpbXBvcnQgKiBhcyB3YXNtIGZyb20gXCIuL2J1dHRwbHVnX3JzX2ZmaV9iZy53YXNtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9idXR0cGx1Z19yc19mZmlfYmcuanNcIjsiLCIvLyBCRUdJTl9NT0RVTEFSSVpFXG4vLyBUaGlzIGZpbGUgd2FzIG1vZGlmaWVkIGJ5IHNjcmlwdHMvbW9kdWxhcml6ZS5qcyB0byBjcmVhdGUgTm9kZSBFU00tY29tcGF0aWJsZSBiaW5kaW5ncy5cbi8vIERvIG5vdCBtb2RpZnkgdGhpcyBmaWxlIGRpcmVjdGx5IGFzIHlvdXIgY2hhbmdlcyB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuLy8gRU5EX01PRFVMQVJJWkVcblxuZXhwb3J0ICogZnJvbSBcIiNidXR0cGx1Z19yc19mZmlfYmdcIjtcbiIsIi8vIEJFR0lOX01PRFVMQVJJWkVcbi8vIFRoaXMgZmlsZSB3YXMgbW9kaWZpZWQgYnkgc2NyaXB0cy9tb2R1bGFyaXplLmpzIHRvIGNyZWF0ZSBOb2RlIEVTTS1jb21wYXRpYmxlIGJpbmRpbmdzLlxuLy8gRG8gbm90IG1vZGlmeSB0aGlzIGZpbGUgZGlyZWN0bHkgYXMgeW91ciBjaGFuZ2VzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4vLyBFTkRfTU9EVUxBUklaRVxuaW1wb3J0ICogYXMgd2FzbSBmcm9tICcuL2J1dHRwbHVnX3JzX2ZmaV9iZy53YXNtJztcblxuY29uc3QgaGVhcCA9IG5ldyBBcnJheSgzMikuZmlsbCh1bmRlZmluZWQpO1xuXG5oZWFwLnB1c2godW5kZWZpbmVkLCBudWxsLCB0cnVlLCBmYWxzZSk7XG5cbmZ1bmN0aW9uIGdldE9iamVjdChpZHgpIHsgcmV0dXJuIGhlYXBbaWR4XTsgfVxuXG5sZXQgaGVhcF9uZXh0ID0gaGVhcC5sZW5ndGg7XG5cbmZ1bmN0aW9uIGRyb3BPYmplY3QoaWR4KSB7XG4gICAgaWYgKGlkeCA8IDM2KSByZXR1cm47XG4gICAgaGVhcFtpZHhdID0gaGVhcF9uZXh0O1xuICAgIGhlYXBfbmV4dCA9IGlkeDtcbn1cblxuZnVuY3Rpb24gdGFrZU9iamVjdChpZHgpIHtcbiAgICBjb25zdCByZXQgPSBnZXRPYmplY3QoaWR4KTtcbiAgICBkcm9wT2JqZWN0KGlkeCk7XG4gICAgcmV0dXJuIHJldDtcbn1cblxuY29uc3QgbFRleHREZWNvZGVyID0gdHlwZW9mIFRleHREZWNvZGVyID09PSAndW5kZWZpbmVkJyA/ICgwLCBtb2R1bGUucmVxdWlyZSkoJ3V0aWwnKS5UZXh0RGVjb2RlciA6IFRleHREZWNvZGVyO1xuXG5sZXQgY2FjaGVkVGV4dERlY29kZXIgPSBuZXcgbFRleHREZWNvZGVyKCd1dGYtOCcsIHsgaWdub3JlQk9NOiB0cnVlLCBmYXRhbDogdHJ1ZSB9KTtcblxuY2FjaGVkVGV4dERlY29kZXIuZGVjb2RlKCk7XG5cbmxldCBjYWNoZWdldFVpbnQ4TWVtb3J5MCA9IG51bGw7XG5mdW5jdGlvbiBnZXRVaW50OE1lbW9yeTAoKSB7XG4gICAgaWYgKGNhY2hlZ2V0VWludDhNZW1vcnkwID09PSBudWxsIHx8IGNhY2hlZ2V0VWludDhNZW1vcnkwLmJ1ZmZlciAhPT0gd2FzbS5tZW1vcnkuYnVmZmVyKSB7XG4gICAgICAgIGNhY2hlZ2V0VWludDhNZW1vcnkwID0gbmV3IFVpbnQ4QXJyYXkod2FzbS5tZW1vcnkuYnVmZmVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZ2V0VWludDhNZW1vcnkwO1xufVxuXG5mdW5jdGlvbiBnZXRTdHJpbmdGcm9tV2FzbTAocHRyLCBsZW4pIHtcbiAgICByZXR1cm4gY2FjaGVkVGV4dERlY29kZXIuZGVjb2RlKGdldFVpbnQ4TWVtb3J5MCgpLnN1YmFycmF5KHB0ciwgcHRyICsgbGVuKSk7XG59XG5cbmZ1bmN0aW9uIGFkZEhlYXBPYmplY3Qob2JqKSB7XG4gICAgaWYgKGhlYXBfbmV4dCA9PT0gaGVhcC5sZW5ndGgpIGhlYXAucHVzaChoZWFwLmxlbmd0aCArIDEpO1xuICAgIGNvbnN0IGlkeCA9IGhlYXBfbmV4dDtcbiAgICBoZWFwX25leHQgPSBoZWFwW2lkeF07XG5cbiAgICBoZWFwW2lkeF0gPSBvYmo7XG4gICAgcmV0dXJuIGlkeDtcbn1cblxubGV0IFdBU01fVkVDVE9SX0xFTiA9IDA7XG5cbmNvbnN0IGxUZXh0RW5jb2RlciA9IHR5cGVvZiBUZXh0RW5jb2RlciA9PT0gJ3VuZGVmaW5lZCcgPyAoMCwgbW9kdWxlLnJlcXVpcmUpKCd1dGlsJykuVGV4dEVuY29kZXIgOiBUZXh0RW5jb2RlcjtcblxubGV0IGNhY2hlZFRleHRFbmNvZGVyID0gbmV3IGxUZXh0RW5jb2RlcigndXRmLTgnKTtcblxuY29uc3QgZW5jb2RlU3RyaW5nID0gKHR5cGVvZiBjYWNoZWRUZXh0RW5jb2Rlci5lbmNvZGVJbnRvID09PSAnZnVuY3Rpb24nXG4gICAgPyBmdW5jdGlvbiAoYXJnLCB2aWV3KSB7XG4gICAgcmV0dXJuIGNhY2hlZFRleHRFbmNvZGVyLmVuY29kZUludG8oYXJnLCB2aWV3KTtcbn1cbiAgICA6IGZ1bmN0aW9uIChhcmcsIHZpZXcpIHtcbiAgICBjb25zdCBidWYgPSBjYWNoZWRUZXh0RW5jb2Rlci5lbmNvZGUoYXJnKTtcbiAgICB2aWV3LnNldChidWYpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHJlYWQ6IGFyZy5sZW5ndGgsXG4gICAgICAgIHdyaXR0ZW46IGJ1Zi5sZW5ndGhcbiAgICB9O1xufSk7XG5cbmZ1bmN0aW9uIHBhc3NTdHJpbmdUb1dhc20wKGFyZywgbWFsbG9jLCByZWFsbG9jKSB7XG5cbiAgICBpZiAocmVhbGxvYyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IGJ1ZiA9IGNhY2hlZFRleHRFbmNvZGVyLmVuY29kZShhcmcpO1xuICAgICAgICBjb25zdCBwdHIgPSBtYWxsb2MoYnVmLmxlbmd0aCk7XG4gICAgICAgIGdldFVpbnQ4TWVtb3J5MCgpLnN1YmFycmF5KHB0ciwgcHRyICsgYnVmLmxlbmd0aCkuc2V0KGJ1Zik7XG4gICAgICAgIFdBU01fVkVDVE9SX0xFTiA9IGJ1Zi5sZW5ndGg7XG4gICAgICAgIHJldHVybiBwdHI7XG4gICAgfVxuXG4gICAgbGV0IGxlbiA9IGFyZy5sZW5ndGg7XG4gICAgbGV0IHB0ciA9IG1hbGxvYyhsZW4pO1xuXG4gICAgY29uc3QgbWVtID0gZ2V0VWludDhNZW1vcnkwKCk7XG5cbiAgICBsZXQgb2Zmc2V0ID0gMDtcblxuICAgIGZvciAoOyBvZmZzZXQgPCBsZW47IG9mZnNldCsrKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBhcmcuY2hhckNvZGVBdChvZmZzZXQpO1xuICAgICAgICBpZiAoY29kZSA+IDB4N0YpIGJyZWFrO1xuICAgICAgICBtZW1bcHRyICsgb2Zmc2V0XSA9IGNvZGU7XG4gICAgfVxuXG4gICAgaWYgKG9mZnNldCAhPT0gbGVuKSB7XG4gICAgICAgIGlmIChvZmZzZXQgIT09IDApIHtcbiAgICAgICAgICAgIGFyZyA9IGFyZy5zbGljZShvZmZzZXQpO1xuICAgICAgICB9XG4gICAgICAgIHB0ciA9IHJlYWxsb2MocHRyLCBsZW4sIGxlbiA9IG9mZnNldCArIGFyZy5sZW5ndGggKiAzKTtcbiAgICAgICAgY29uc3QgdmlldyA9IGdldFVpbnQ4TWVtb3J5MCgpLnN1YmFycmF5KHB0ciArIG9mZnNldCwgcHRyICsgbGVuKTtcbiAgICAgICAgY29uc3QgcmV0ID0gZW5jb2RlU3RyaW5nKGFyZywgdmlldyk7XG5cbiAgICAgICAgb2Zmc2V0ICs9IHJldC53cml0dGVuO1xuICAgIH1cblxuICAgIFdBU01fVkVDVE9SX0xFTiA9IG9mZnNldDtcbiAgICByZXR1cm4gcHRyO1xufVxuXG5mdW5jdGlvbiBpc0xpa2VOb25lKHgpIHtcbiAgICByZXR1cm4geCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGw7XG59XG5cbmxldCBjYWNoZWdldEludDMyTWVtb3J5MCA9IG51bGw7XG5mdW5jdGlvbiBnZXRJbnQzMk1lbW9yeTAoKSB7XG4gICAgaWYgKGNhY2hlZ2V0SW50MzJNZW1vcnkwID09PSBudWxsIHx8IGNhY2hlZ2V0SW50MzJNZW1vcnkwLmJ1ZmZlciAhPT0gd2FzbS5tZW1vcnkuYnVmZmVyKSB7XG4gICAgICAgIGNhY2hlZ2V0SW50MzJNZW1vcnkwID0gbmV3IEludDMyQXJyYXkod2FzbS5tZW1vcnkuYnVmZmVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGNhY2hlZ2V0SW50MzJNZW1vcnkwO1xufVxuXG5mdW5jdGlvbiBkZWJ1Z1N0cmluZyh2YWwpIHtcbiAgICAvLyBwcmltaXRpdmUgdHlwZXNcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbDtcbiAgICBpZiAodHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdib29sZWFuJyB8fCB2YWwgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gIGAke3ZhbH1gO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gYFwiJHt2YWx9XCJgO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PSAnc3ltYm9sJykge1xuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IHZhbC5kZXNjcmlwdGlvbjtcbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiAnU3ltYm9sJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgU3ltYm9sKCR7ZGVzY3JpcHRpb259KWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGUgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb25zdCBuYW1lID0gdmFsLm5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YgbmFtZSA9PSAnc3RyaW5nJyAmJiBuYW1lLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBgRnVuY3Rpb24oJHtuYW1lfSlgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdGdW5jdGlvbic7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gb2JqZWN0c1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdmFsLmxlbmd0aDtcbiAgICAgICAgbGV0IGRlYnVnID0gJ1snO1xuICAgICAgICBpZiAobGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgZGVidWcgKz0gZGVidWdTdHJpbmcodmFsWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IobGV0IGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGRlYnVnICs9ICcsICcgKyBkZWJ1Z1N0cmluZyh2YWxbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGRlYnVnICs9ICddJztcbiAgICAgICAgcmV0dXJuIGRlYnVnO1xuICAgIH1cbiAgICAvLyBUZXN0IGZvciBidWlsdC1pblxuICAgIGNvbnN0IGJ1aWx0SW5NYXRjaGVzID0gL1xcW29iamVjdCAoW15cXF1dKylcXF0vLmV4ZWModG9TdHJpbmcuY2FsbCh2YWwpKTtcbiAgICBsZXQgY2xhc3NOYW1lO1xuICAgIGlmIChidWlsdEluTWF0Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNsYXNzTmFtZSA9IGJ1aWx0SW5NYXRjaGVzWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZhaWxlZCB0byBtYXRjaCB0aGUgc3RhbmRhcmQgJ1tvYmplY3QgQ2xhc3NOYW1lXSdcbiAgICAgICAgcmV0dXJuIHRvU3RyaW5nLmNhbGwodmFsKTtcbiAgICB9XG4gICAgaWYgKGNsYXNzTmFtZSA9PSAnT2JqZWN0Jykge1xuICAgICAgICAvLyB3ZSdyZSBhIHVzZXIgZGVmaW5lZCBjbGFzcyBvciBPYmplY3RcbiAgICAgICAgLy8gSlNPTi5zdHJpbmdpZnkgYXZvaWRzIHByb2JsZW1zIHdpdGggY3ljbGVzLCBhbmQgaXMgZ2VuZXJhbGx5IG11Y2hcbiAgICAgICAgLy8gZWFzaWVyIHRoYW4gbG9vcGluZyB0aHJvdWdoIG93blByb3BlcnRpZXMgb2YgYHZhbGAuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gJ09iamVjdCgnICsgSlNPTi5zdHJpbmdpZnkodmFsKSArICcpJztcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgICAgcmV0dXJuICdPYmplY3QnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIGVycm9yc1xuICAgIGlmICh2YWwgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICByZXR1cm4gYCR7dmFsLm5hbWV9OiAke3ZhbC5tZXNzYWdlfVxcbiR7dmFsLnN0YWNrfWA7XG4gICAgfVxuICAgIC8vIFRPRE8gd2UgY291bGQgdGVzdCBmb3IgbW9yZSB0aGluZ3MgaGVyZSwgbGlrZSBgU2V0YHMgYW5kIGBNYXBgcy5cbiAgICByZXR1cm4gY2xhc3NOYW1lO1xufVxuXG5mdW5jdGlvbiBtYWtlTXV0Q2xvc3VyZShhcmcwLCBhcmcxLCBkdG9yLCBmKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB7IGE6IGFyZzAsIGI6IGFyZzEsIGNudDogMSwgZHRvciB9O1xuICAgIGNvbnN0IHJlYWwgPSAoLi4uYXJncykgPT4ge1xuICAgICAgICAvLyBGaXJzdCB1cCB3aXRoIGEgY2xvc3VyZSB3ZSBpbmNyZW1lbnQgdGhlIGludGVybmFsIHJlZmVyZW5jZVxuICAgICAgICAvLyBjb3VudC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIFJ1c3QgY2xvc3VyZSBlbnZpcm9ubWVudCB3b24ndFxuICAgICAgICAvLyBiZSBkZWFsbG9jYXRlZCB3aGlsZSB3ZSdyZSBpbnZva2luZyBpdC5cbiAgICAgICAgc3RhdGUuY250Kys7XG4gICAgICAgIGNvbnN0IGEgPSBzdGF0ZS5hO1xuICAgICAgICBzdGF0ZS5hID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmKGEsIHN0YXRlLmIsIC4uLmFyZ3MpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgaWYgKC0tc3RhdGUuY250ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgd2FzbS5fX3diaW5kZ2VuX2V4cG9ydF8yLmdldChzdGF0ZS5kdG9yKShhLCBzdGF0ZS5iKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdGF0ZS5hID0gYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgcmVhbC5vcmlnaW5hbCA9IHN0YXRlO1xuXG4gICAgcmV0dXJuIHJlYWw7XG59XG5mdW5jdGlvbiBfX3diZ19hZGFwdGVyXzI0KGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB3YXNtLl9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDA4MDFmMGI2ODUzOGNjYjIoYXJnMCwgYXJnMSwgYWRkSGVhcE9iamVjdChhcmcyKSk7XG59XG5cbmZ1bmN0aW9uIF9fd2JnX2FkYXB0ZXJfMjcoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHdhc20uX2R5bl9jb3JlX19vcHNfX2Z1bmN0aW9uX19Gbk11dF9fQV9fX19PdXRwdXRfX19SX2FzX3dhc21fYmluZGdlbl9fY2xvc3VyZV9fV2FzbUNsb3N1cmVfX19kZXNjcmliZV9faW52b2tlX19oMDgwMWYwYjY4NTM4Y2NiMihhcmcwLCBhcmcxLCBhZGRIZWFwT2JqZWN0KGFyZzIpKTtcbn1cblxuZnVuY3Rpb24gX193YmdfYWRhcHRlcl8zMChhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgd2FzbS5fZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuTXV0X19BX19fX091dHB1dF9fX1JfYXNfd2FzbV9iaW5kZ2VuX19jbG9zdXJlX19XYXNtQ2xvc3VyZV9fX2Rlc2NyaWJlX19pbnZva2VfX2gwODAxZjBiNjg1MzhjY2IyKGFyZzAsIGFyZzEsIGFkZEhlYXBPYmplY3QoYXJnMikpO1xufVxuXG5mdW5jdGlvbiBfX3diZ19hZGFwdGVyXzMzKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB3YXNtLl9keW5fY29yZV9fb3BzX19mdW5jdGlvbl9fRm5NdXRfX0FfX19fT3V0cHV0X19fUl9hc193YXNtX2JpbmRnZW5fX2Nsb3N1cmVfX1dhc21DbG9zdXJlX19fZGVzY3JpYmVfX2ludm9rZV9faDA4MDFmMGI2ODUzOGNjYjIoYXJnMCwgYXJnMSwgYWRkSGVhcE9iamVjdChhcmcyKSk7XG59XG5cbmZ1bmN0aW9uIF9fd2JnX2FkYXB0ZXJfMzYoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHdhc20uX2R5bl9jb3JlX19vcHNfX2Z1bmN0aW9uX19Gbk11dF9fQV9fX19PdXRwdXRfX19SX2FzX3dhc21fYmluZGdlbl9fY2xvc3VyZV9fV2FzbUNsb3N1cmVfX19kZXNjcmliZV9faW52b2tlX19oNmQ1ZDQ4N2M3OWNmZGY0OShhcmcwLCBhcmcxLCBhZGRIZWFwT2JqZWN0KGFyZzIpKTtcbn1cblxuZnVuY3Rpb24gX193YmdfYWRhcHRlcl8zOShhcmcwLCBhcmcxKSB7XG4gICAgd2FzbS5fZHluX2NvcmVfX29wc19fZnVuY3Rpb25fX0ZuTXV0X19fX19PdXRwdXRfX19SX2FzX3dhc21fYmluZGdlbl9fY2xvc3VyZV9fV2FzbUNsb3N1cmVfX19kZXNjcmliZV9faW52b2tlX19oYTcyMWZkYmQyM2NhMzVmMihhcmcwLCBhcmcxKTtcbn1cblxubGV0IHN0YWNrX3BvaW50ZXIgPSAzMjtcblxuZnVuY3Rpb24gYWRkQm9ycm93ZWRPYmplY3Qob2JqKSB7XG4gICAgaWYgKHN0YWNrX3BvaW50ZXIgPT0gMSkgdGhyb3cgbmV3IEVycm9yKCdvdXQgb2YganMgc3RhY2snKTtcbiAgICBoZWFwWy0tc3RhY2tfcG9pbnRlcl0gPSBvYmo7XG4gICAgcmV0dXJuIHN0YWNrX3BvaW50ZXI7XG59XG4vKipcbiogQHBhcmFtIHtzdHJpbmd9IGNsaWVudF9uYW1lXG4qIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4qIEBwYXJhbSB7bnVtYmVyfSBjYWxsYmFja19jb250ZXh0XG4qIEByZXR1cm5zIHtudW1iZXJ9XG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1dHRwbHVnX2NyZWF0ZV9wcm90b2J1Zl9jbGllbnQoY2xpZW50X25hbWUsIGNhbGxiYWNrLCBjYWxsYmFja19jb250ZXh0KSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChjbGllbnRfbmFtZSwgd2FzbS5fX3diaW5kZ2VuX21hbGxvYywgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MpO1xuICAgICAgICB2YXIgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICAgICAgdmFyIHJldCA9IHdhc20uYnV0dHBsdWdfY3JlYXRlX3Byb3RvYnVmX2NsaWVudChwdHIwLCBsZW4wLCBhZGRCb3Jyb3dlZE9iamVjdChjYWxsYmFjayksIGNhbGxiYWNrX2NvbnRleHQpO1xuICAgICAgICByZXR1cm4gcmV0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIGhlYXBbc3RhY2tfcG9pbnRlcisrXSA9IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbi8qKlxuKiBAcGFyYW0ge251bWJlcn0gcHRyXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1dHRwbHVnX2ZyZWVfY2xpZW50KHB0cikge1xuICAgIHdhc20uYnV0dHBsdWdfZnJlZV9jbGllbnQocHRyKTtcbn1cblxuZnVuY3Rpb24gcGFzc0FycmF5OFRvV2FzbTAoYXJnLCBtYWxsb2MpIHtcbiAgICBjb25zdCBwdHIgPSBtYWxsb2MoYXJnLmxlbmd0aCAqIDEpO1xuICAgIGdldFVpbnQ4TWVtb3J5MCgpLnNldChhcmcsIHB0ciAvIDEpO1xuICAgIFdBU01fVkVDVE9SX0xFTiA9IGFyZy5sZW5ndGg7XG4gICAgcmV0dXJuIHB0cjtcbn1cbi8qKlxuKiBAcGFyYW0ge251bWJlcn0gY2xpZW50X3B0clxuKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ1ZlxuKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuKiBAcGFyYW0ge251bWJlcn0gY2FsbGJhY2tfY29udGV4dFxuKi9cbmV4cG9ydCBmdW5jdGlvbiBidXR0cGx1Z19jbGllbnRfcHJvdG9idWZfbWVzc2FnZShjbGllbnRfcHRyLCBidWYsIGNhbGxiYWNrLCBjYWxsYmFja19jb250ZXh0KSB7XG4gICAgdmFyIHB0cjAgPSBwYXNzQXJyYXk4VG9XYXNtMChidWYsIHdhc20uX193YmluZGdlbl9tYWxsb2MpO1xuICAgIHZhciBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIHdhc20uYnV0dHBsdWdfY2xpZW50X3Byb3RvYnVmX21lc3NhZ2UoY2xpZW50X3B0ciwgcHRyMCwgbGVuMCwgYWRkSGVhcE9iamVjdChjYWxsYmFjayksIGNhbGxiYWNrX2NvbnRleHQpO1xufVxuXG4vKipcbiogQHBhcmFtIHtudW1iZXJ9IGNsaWVudF9wdHJcbiogQHBhcmFtIHtudW1iZXJ9IGRldmljZV9pbmRleFxuKiBAcmV0dXJucyB7bnVtYmVyfVxuKi9cbmV4cG9ydCBmdW5jdGlvbiBidXR0cGx1Z19jcmVhdGVfZGV2aWNlKGNsaWVudF9wdHIsIGRldmljZV9pbmRleCkge1xuICAgIHZhciByZXQgPSB3YXNtLmJ1dHRwbHVnX2NyZWF0ZV9kZXZpY2UoY2xpZW50X3B0ciwgZGV2aWNlX2luZGV4KTtcbiAgICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiogQHBhcmFtIHtudW1iZXJ9IGRldmljZV9wdHJcbiogQHBhcmFtIHtVaW50OEFycmF5fSBidWZcbiogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiogQHBhcmFtIHtudW1iZXJ9IGNhbGxiYWNrX2NvbnRleHRcbiovXG5leHBvcnQgZnVuY3Rpb24gYnV0dHBsdWdfZGV2aWNlX3Byb3RvYnVmX21lc3NhZ2UoZGV2aWNlX3B0ciwgYnVmLCBjYWxsYmFjaywgY2FsbGJhY2tfY29udGV4dCkge1xuICAgIHZhciBwdHIwID0gcGFzc0FycmF5OFRvV2FzbTAoYnVmLCB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jKTtcbiAgICB2YXIgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICB3YXNtLmJ1dHRwbHVnX2RldmljZV9wcm90b2J1Zl9tZXNzYWdlKGRldmljZV9wdHIsIHB0cjAsIGxlbjAsIGFkZEhlYXBPYmplY3QoY2FsbGJhY2spLCBjYWxsYmFja19jb250ZXh0KTtcbn1cblxuLyoqXG4qIEBwYXJhbSB7bnVtYmVyfSBwdHJcbiovXG5leHBvcnQgZnVuY3Rpb24gYnV0dHBsdWdfZnJlZV9kZXZpY2UocHRyKSB7XG4gICAgd2FzbS5idXR0cGx1Z19mcmVlX2RldmljZShwdHIpO1xufVxuXG4vKipcbiogQHBhcmFtIHtzdHJpbmd9IG1heF9sZXZlbFxuKi9cbmV4cG9ydCBmdW5jdGlvbiBidXR0cGx1Z19hY3RpdmF0ZV9lbnZfbG9nZ2VyKG1heF9sZXZlbCkge1xuICAgIHZhciBwdHIwID0gcGFzc1N0cmluZ1RvV2FzbTAobWF4X2xldmVsLCB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLCB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyk7XG4gICAgdmFyIGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgd2FzbS5idXR0cGx1Z19hY3RpdmF0ZV9lbnZfbG9nZ2VyKHB0cjAsIGxlbjApO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVFcnJvcihmLCBhcmdzKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGYuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fZXhuX3N0b3JlKGFkZEhlYXBPYmplY3QoZSkpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0QXJyYXlVOEZyb21XYXNtMChwdHIsIGxlbikge1xuICAgIHJldHVybiBnZXRVaW50OE1lbW9yeTAoKS5zdWJhcnJheShwdHIgLyAxLCBwdHIgLyAxICsgbGVuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JpbmRnZW5fb2JqZWN0X2Ryb3BfcmVmKGFyZzApIHtcbiAgICB0YWtlT2JqZWN0KGFyZzApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JpbmRnZW5fY2JfZHJvcChhcmcwKSB7XG4gICAgY29uc3Qgb2JqID0gdGFrZU9iamVjdChhcmcwKS5vcmlnaW5hbDtcbiAgICBpZiAob2JqLmNudC0tID09IDEpIHtcbiAgICAgICAgb2JqLmEgPSAwO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIHJldCA9IGZhbHNlO1xuICAgIHJldHVybiByZXQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfbG9nX2FlZGQ2ODk2Y2E0NzFmZTYoYXJnMCwgYXJnMSkge1xuICAgIGNvbnNvbGUubG9nKGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmluZGdlbl9zdHJpbmdfbmV3KGFyZzAsIGFyZzEpIHtcbiAgICB2YXIgcmV0ID0gZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmluZGdlbl9vYmplY3RfY2xvbmVfcmVmKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmluZGdlbl9pc19zdHJpbmcoYXJnMCkge1xuICAgIHZhciByZXQgPSB0eXBlb2YoZ2V0T2JqZWN0KGFyZzApKSA9PT0gJ3N0cmluZyc7XG4gICAgcmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19sb2dfMDJlMjBhM2MzMjMwNWZiNyhhcmcwLCBhcmcxKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc29sZS5sb2coZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgICB3YXNtLl9fd2JpbmRnZW5fZnJlZShhcmcwLCBhcmcxKTtcbiAgICB9XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfbG9nXzVjNzUxM2FhOGMxNjQ1MDIoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSwgYXJnNiwgYXJnNykge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKSwgZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzIsIGFyZzMpLCBnZXRTdHJpbmdGcm9tV2FzbTAoYXJnNCwgYXJnNSksIGdldFN0cmluZ0Zyb21XYXNtMChhcmc2LCBhcmc3KSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX2ZyZWUoYXJnMCwgYXJnMSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX21hcmtfYWJjNzYzMWJkY2VkNjRmMChhcmcwLCBhcmcxKSB7XG4gICAgcGVyZm9ybWFuY2UubWFyayhnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSkpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX21lYXN1cmVfYzUyOGZmNjQwODViNzE0NigpIHsgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcGVyZm9ybWFuY2UubWVhc3VyZShnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSksIGdldFN0cmluZ0Zyb21XYXNtMChhcmcyLCBhcmczKSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX2ZyZWUoYXJnMCwgYXJnMSk7XG4gICAgICAgIHdhc20uX193YmluZGdlbl9mcmVlKGFyZzIsIGFyZzMpO1xuICAgIH1cbn0sIGFyZ3VtZW50cykgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX25ld182OTMyMTZlMTA5MTYyMzk2KCkge1xuICAgIHZhciByZXQgPSBuZXcgRXJyb3IoKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3N0YWNrXzBkZGFjYTVkMWFiZmI1MmYoYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMSkuc3RhY2s7XG4gICAgdmFyIHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChyZXQsIHdhc20uX193YmluZGdlbl9tYWxsb2MsIHdhc20uX193YmluZGdlbl9yZWFsbG9jKTtcbiAgICB2YXIgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDFdID0gbGVuMDtcbiAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDBdID0gcHRyMDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19lcnJvcl8wOTkxOTYyN2FjMDk5MmY1KGFyZzAsIGFyZzEpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgd2FzbS5fX3diaW5kZ2VuX2ZyZWUoYXJnMCwgYXJnMSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX1dpbmRvd19mODI2YTFkZWMxNjNiYWNiKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLldpbmRvdztcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JpbmRnZW5faXNfdW5kZWZpbmVkKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApID09PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19Xb3JrZXJHbG9iYWxTY29wZV85NjdkMTg2MTU1MTgzZDM4KGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLldvcmtlckdsb2JhbFNjb3BlO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfaW5zdGFuY2VvZl9XaW5kb3dfYzRiNzA2NjJhMGQyYzVlYyhhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKSBpbnN0YW5jZW9mIFdpbmRvdztcbiAgICByZXR1cm4gcmV0O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX25hdmlnYXRvcl80ODBlNTkyYWY2YWQzNjViKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLm5hdmlnYXRvcjtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX2NsZWFyVGltZW91dF8yYzFiYTAwMTZkOGJjYTQxKGFyZzAsIGFyZzEpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkuY2xlYXJUaW1lb3V0KGFyZzEpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3NldFRpbWVvdXRfZGY2NmQ5NTFiMTcyNmI3OCgpIHsgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5zZXRUaW1lb3V0KGdldE9iamVjdChhcmcxKSwgYXJnMik7XG4gICAgcmV0dXJuIHJldDtcbn0sIGFyZ3VtZW50cykgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX2RhdGFfOWU1NWU3ZDc5YWIxM2VmMShhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5kYXRhO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfdmFsdWVfODRjZWZlYjI0MDhkZmUxNShhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS52YWx1ZTtcbiAgICByZXR1cm4gaXNMaWtlTm9uZShyZXQpID8gMCA6IGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19zZXRvbmNoYXJhY3RlcmlzdGljdmFsdWVjaGFuZ2VkXzc1ZWM3NzczZTMxMDcxOWMoYXJnMCwgYXJnMSkge1xuICAgIGdldE9iamVjdChhcmcwKS5vbmNoYXJhY3RlcmlzdGljdmFsdWVjaGFuZ2VkID0gZ2V0T2JqZWN0KGFyZzEpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3JlYWRWYWx1ZV9lZWVlNDY3ZWVlMjlkOWFiKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnJlYWRWYWx1ZSgpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193Ymdfc3RhcnROb3RpZmljYXRpb25zXzg5ZDUyYzVkYTEyZjRhNzMoYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuc3RhcnROb3RpZmljYXRpb25zKCk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ193cml0ZVZhbHVlXzUwNDVlNTNkNjVjZjQ0MTYoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkud3JpdGVWYWx1ZShnZXRBcnJheVU4RnJvbVdhc20wKGFyZzEsIGFyZzIpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3RhcmdldF9jYzY5ZGRlNmMyZDllYzkwKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnRhcmdldDtcbiAgICByZXR1cm4gaXNMaWtlTm9uZShyZXQpID8gMCA6IGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diaW5kZ2VuX3N0cmluZ19nZXQoYXJnMCwgYXJnMSkge1xuICAgIGNvbnN0IG9iaiA9IGdldE9iamVjdChhcmcxKTtcbiAgICB2YXIgcmV0ID0gdHlwZW9mKG9iaikgPT09ICdzdHJpbmcnID8gb2JqIDogdW5kZWZpbmVkO1xuICAgIHZhciBwdHIwID0gaXNMaWtlTm9uZShyZXQpID8gMCA6IHBhc3NTdHJpbmdUb1dhc20wKHJldCwgd2FzbS5fX3diaW5kZ2VuX21hbGxvYywgd2FzbS5fX3diaW5kZ2VuX3JlYWxsb2MpO1xuICAgIHZhciBsZW4wID0gV0FTTV9WRUNUT1JfTEVOO1xuICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMV0gPSBsZW4wO1xuICAgIGdldEludDMyTWVtb3J5MCgpW2FyZzAgLyA0ICsgMF0gPSBwdHIwO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3JlcXVlc3REZXZpY2VfOTQ3OTc1NjMzNDllOTNkOChhcmcwLCBhcmcxKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5yZXF1ZXN0RGV2aWNlKGdldE9iamVjdChhcmcxKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19pZF9hNzYyNTg2ZmMzNGE3MTBkKGFyZzAsIGFyZzEpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzEpLmlkO1xuICAgIHZhciBwdHIwID0gcGFzc1N0cmluZ1RvV2FzbTAocmV0LCB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLCB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyk7XG4gICAgdmFyIGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGxlbjA7XG4gICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9IHB0cjA7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfbmFtZV80OGVhZDJhYTU4YzkxNTI0KGFyZzAsIGFyZzEpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzEpLm5hbWU7XG4gICAgdmFyIHB0cjAgPSBpc0xpa2VOb25lKHJldCkgPyAwIDogcGFzc1N0cmluZ1RvV2FzbTAocmV0LCB3YXNtLl9fd2JpbmRnZW5fbWFsbG9jLCB3YXNtLl9fd2JpbmRnZW5fcmVhbGxvYyk7XG4gICAgdmFyIGxlbjAgPSBXQVNNX1ZFQ1RPUl9MRU47XG4gICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAxXSA9IGxlbjA7XG4gICAgZ2V0SW50MzJNZW1vcnkwKClbYXJnMCAvIDQgKyAwXSA9IHB0cjA7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfZ2F0dF9iY2E4ZDg1Yjk3YjE4ZWMzKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmdhdHQ7XG4gICAgcmV0dXJuIGlzTGlrZU5vbmUocmV0KSA/IDAgOiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193Ymdfc2V0b25nYXR0c2VydmVyZGlzY29ubmVjdGVkXzVlODMyZTA4YjZiNWY0MjMoYXJnMCwgYXJnMSkge1xuICAgIGdldE9iamVjdChhcmcwKS5vbmdhdHRzZXJ2ZXJkaXNjb25uZWN0ZWQgPSBnZXRPYmplY3QoYXJnMSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfY2xlYXJUaW1lb3V0X2MxZjI0NmQ2ODc0YzA2NzkoYXJnMCwgYXJnMSkge1xuICAgIGdldE9iamVjdChhcmcwKS5jbGVhclRpbWVvdXQoYXJnMSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193Ymdfc2V0VGltZW91dF81MzE0ODUwMTg0ZDYxYTQ0KCkgeyByZXR1cm4gaGFuZGxlRXJyb3IoZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnNldFRpbWVvdXQoZ2V0T2JqZWN0KGFyZzEpLCBhcmcyKTtcbiAgICByZXR1cm4gcmV0O1xufSwgYXJndW1lbnRzKSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfYmx1ZXRvb3RoX2NjOGUwNTM2MTNkOGVlY2EoYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuYmx1ZXRvb3RoO1xuICAgIHJldHVybiBpc0xpa2VOb25lKHJldCkgPyAwIDogYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3NldG9ub3Blbl8zM2I3NTQyN2Y3ZGI3Y2UxKGFyZzAsIGFyZzEpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkub25vcGVuID0gZ2V0T2JqZWN0KGFyZzEpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3NldG9uZXJyb3JfY2I1NWYwNTIxYWMwZGEzYShhcmcwLCBhcmcxKSB7XG4gICAgZ2V0T2JqZWN0KGFyZzApLm9uZXJyb3IgPSBnZXRPYmplY3QoYXJnMSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193Ymdfc2V0b25tZXNzYWdlX2NhNWY3NWU0YTg0MTM0ZWYoYXJnMCwgYXJnMSkge1xuICAgIGdldE9iamVjdChhcmcwKS5vbm1lc3NhZ2UgPSBnZXRPYmplY3QoYXJnMSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfbmV3Xzk4MmZlMjJjZDkzZDY3ZjcoKSB7IHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBuZXcgV2ViU29ja2V0KGdldFN0cmluZ0Zyb21XYXNtMChhcmcwLCBhcmcxKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn0sIGFyZ3VtZW50cykgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX2Nsb3NlX2YyYTEwYzFkZTkwZGY1ZjAoKSB7IHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCkge1xuICAgIGdldE9iamVjdChhcmcwKS5jbG9zZSgpO1xufSwgYXJndW1lbnRzKSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gX193Ymdfc2VuZF81MDNjMmU3NjUyZTk1YmY1KCkgeyByZXR1cm4gaGFuZGxlRXJyb3IoZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkuc2VuZChnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMSwgYXJnMikpO1xufSwgYXJndW1lbnRzKSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfY29ubmVjdF9lM2NjYjdkODhlOTAzYTk1KGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmNvbm5lY3QoKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX2dldFByaW1hcnlTZXJ2aWNlX2U2MjRlMDk4MmJjZDgzYjEoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuZ2V0UHJpbWFyeVNlcnZpY2UoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzEsIGFyZzIpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX2dldENoYXJhY3RlcmlzdGljXzdkMjg2OWQxYWQ3MTUxZDIoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuZ2V0Q2hhcmFjdGVyaXN0aWMoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzEsIGFyZzIpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX2dldFJhbmRvbVZhbHVlc185ODExN2U5YTdlOTkzOTIwKCkgeyByZXR1cm4gaGFuZGxlRXJyb3IoZnVuY3Rpb24gKGFyZzAsIGFyZzEpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkuZ2V0UmFuZG9tVmFsdWVzKGdldE9iamVjdChhcmcxKSk7XG59LCBhcmd1bWVudHMpIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19yYW5kb21GaWxsU3luY182NGNjN2QwNDhmMjI4Y2E4KCkgeyByZXR1cm4gaGFuZGxlRXJyb3IoZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkucmFuZG9tRmlsbFN5bmMoZ2V0QXJyYXlVOEZyb21XYXNtMChhcmcxLCBhcmcyKSk7XG59LCBhcmd1bWVudHMpIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19wcm9jZXNzXzJmMjRkNjU0NGVhN2IyMDAoYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkucHJvY2VzcztcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JpbmRnZW5faXNfb2JqZWN0KGFyZzApIHtcbiAgICBjb25zdCB2YWwgPSBnZXRPYmplY3QoYXJnMCk7XG4gICAgdmFyIHJldCA9IHR5cGVvZih2YWwpID09PSAnb2JqZWN0JyAmJiB2YWwgIT09IG51bGw7XG4gICAgcmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ192ZXJzaW9uc182MTY0NjUxZTc1NDA1ZDRhKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnZlcnNpb25zO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193Ymdfbm9kZV80YjUxN2Q4NjFjYmNiM2JjKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLm5vZGU7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19tb2R1bGVyZXF1aXJlXzM0NDBhNGJjZjQ0NDM3ZGIoKSB7IHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBtb2R1bGUucmVxdWlyZShnZXRTdHJpbmdGcm9tV2FzbTAoYXJnMCwgYXJnMSkpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59LCBhcmd1bWVudHMpIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19jcnlwdG9fOThmYzI3MTAyMWM3ZDJhZChhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5jcnlwdG87XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19tc0NyeXB0b19hMmNkYjA0M2QyYmZlNTdmKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLm1zQ3J5cHRvO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfbmV3Xzk0OWJiYzExNDcxOTVjNGUoKSB7XG4gICAgdmFyIHJldCA9IG5ldyBBcnJheSgpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfbmV3bm9hcmdzX2JlODY1MjRkNzNmNjc1OTgoYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBuZXcgRnVuY3Rpb24oZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX2NhbGxfODg4ZDI1OWE1ZmVmYzM0NygpIHsgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uIChhcmcwLCBhcmcxKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5jYWxsKGdldE9iamVjdChhcmcxKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn0sIGFyZ3VtZW50cykgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX25ld18wYjgzZDNkZjY3ZWNiMzNlKCkge1xuICAgIHZhciByZXQgPSBuZXcgT2JqZWN0KCk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19wdXNoXzI4NDQ4NmNhMjdjNmFhOGIoYXJnMCwgYXJnMSkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkucHVzaChnZXRPYmplY3QoYXJnMSkpO1xuICAgIHJldHVybiByZXQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfYnVmZmVyXzQ1MjgwZmVjYjgyYzgzZGYoYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuYnVmZmVyO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfYnl0ZUxlbmd0aF9jOWU0ZjFiMmJhZThmYzRkKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLmJ5dGVMZW5ndGg7XG4gICAgcmV0dXJuIHJldDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19jYWxsXzM0NjY2OWMyNjIzODJhZDcoKSB7IHJldHVybiBoYW5kbGVFcnJvcihmdW5jdGlvbiAoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuY2FsbChnZXRPYmplY3QoYXJnMSksIGdldE9iamVjdChhcmcyKSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn0sIGFyZ3VtZW50cykgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3Jlc29sdmVfZDIzMDY4MDAyZjU4NGYyMihhcmcwKSB7XG4gICAgdmFyIHJldCA9IFByb21pc2UucmVzb2x2ZShnZXRPYmplY3QoYXJnMCkpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfdGhlbl8yZmNhYzE5Njc4MjA3MGNjKGFyZzAsIGFyZzEpIHtcbiAgICB2YXIgcmV0ID0gZ2V0T2JqZWN0KGFyZzApLnRoZW4oZ2V0T2JqZWN0KGFyZzEpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3RoZW5fOGMyZDYyZThhZTU5NzhmNyhhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS50aGVuKGdldE9iamVjdChhcmcxKSwgZ2V0T2JqZWN0KGFyZzIpKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3NlbGZfYzZmYmRmYzI5MThkNWU1OCgpIHsgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmV0ID0gc2VsZi5zZWxmO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59LCBhcmd1bWVudHMpIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ193aW5kb3dfYmFlYzAzOGI1YWIzNWM1NCgpIHsgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmV0ID0gd2luZG93LndpbmRvdztcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufSwgYXJndW1lbnRzKSB9O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfZ2xvYmFsVGhpc18zZjczNWE1NzQ2ZDQxZmJkKCkgeyByZXR1cm4gaGFuZGxlRXJyb3IoZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXQgPSBnbG9iYWxUaGlzLmdsb2JhbFRoaXM7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn0sIGFyZ3VtZW50cykgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX2dsb2JhbF8xYmMwYjM5NTgyNzQwZTk1KCkgeyByZXR1cm4gaGFuZGxlRXJyb3IoZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXQgPSBnbG9iYWwuZ2xvYmFsO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59LCBhcmd1bWVudHMpIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19idWZmZXJfMzk3ZWFhNGQ3MmVlOTRkZChhcmcwKSB7XG4gICAgdmFyIHJldCA9IGdldE9iamVjdChhcmcwKS5idWZmZXI7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF80YjliOGM0ZTNmNWFkYmZmKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gbmV3IFVpbnQ4QXJyYXkoZ2V0T2JqZWN0KGFyZzApLCBhcmcxID4+PiAwLCBhcmcyID4+PiAwKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX25ld19hN2NlNDQ3ZjE1ZmY0OTZmKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gbmV3IFVpbnQ4QXJyYXkoZ2V0T2JqZWN0KGFyZzApKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3NldF85NjlhZDBhNjBlNTFkMzIwKGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICBnZXRPYmplY3QoYXJnMCkuc2V0KGdldE9iamVjdChhcmcxKSwgYXJnMiA+Pj4gMCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfbGVuZ3RoXzFlYjhmYzYwOGEwZDRjZGIoYXJnMCkge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkubGVuZ3RoO1xuICAgIHJldHVybiByZXQ7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmdfbmV3d2l0aGxlbmd0aF85MjkyMzI0NzU4MzlhNDgyKGFyZzApIHtcbiAgICB2YXIgcmV0ID0gbmV3IFVpbnQ4QXJyYXkoYXJnMCA+Pj4gMCk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19uZXd3aXRoYnl0ZW9mZnNldF9iNjM4YmFkOGNjMDkwZjMyKGFyZzAsIGFyZzEpIHtcbiAgICB2YXIgcmV0ID0gbmV3IFVpbnQ4QXJyYXkoZ2V0T2JqZWN0KGFyZzApLCBhcmcxID4+PiAwKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JnX3N1YmFycmF5XzhiNjU4NDIyYTIyNGY0NzkoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBnZXRPYmplY3QoYXJnMCkuc3ViYXJyYXkoYXJnMSA+Pj4gMCwgYXJnMiA+Pj4gMCk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diZ19zZXRfODJhNGU4YTg1ZTMxYWM0MigpIHsgcmV0dXJuIGhhbmRsZUVycm9yKGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IFJlZmxlY3Quc2V0KGdldE9iamVjdChhcmcwKSwgZ2V0T2JqZWN0KGFyZzEpLCBnZXRPYmplY3QoYXJnMikpO1xuICAgIHJldHVybiByZXQ7XG59LCBhcmd1bWVudHMpIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diaW5kZ2VuX2RlYnVnX3N0cmluZyhhcmcwLCBhcmcxKSB7XG4gICAgdmFyIHJldCA9IGRlYnVnU3RyaW5nKGdldE9iamVjdChhcmcxKSk7XG4gICAgdmFyIHB0cjAgPSBwYXNzU3RyaW5nVG9XYXNtMChyZXQsIHdhc20uX193YmluZGdlbl9tYWxsb2MsIHdhc20uX193YmluZGdlbl9yZWFsbG9jKTtcbiAgICB2YXIgbGVuMCA9IFdBU01fVkVDVE9SX0xFTjtcbiAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDFdID0gbGVuMDtcbiAgICBnZXRJbnQzMk1lbW9yeTAoKVthcmcwIC8gNCArIDBdID0gcHRyMDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diaW5kZ2VuX3Rocm93KGFyZzAsIGFyZzEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoZ2V0U3RyaW5nRnJvbVdhc20wKGFyZzAsIGFyZzEpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diaW5kZ2VuX21lbW9yeSgpIHtcbiAgICB2YXIgcmV0ID0gd2FzbS5tZW1vcnk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diaW5kZ2VuX2Nsb3N1cmVfd3JhcHBlcjI1NihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IG1ha2VNdXRDbG9zdXJlKGFyZzAsIGFyZzEsIDYwLCBfX3diZ19hZGFwdGVyXzI0KTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyMjU4KGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gbWFrZU11dENsb3N1cmUoYXJnMCwgYXJnMSwgNjAsIF9fd2JnX2FkYXB0ZXJfMjcpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXIyNjAoYXJnMCwgYXJnMSwgYXJnMikge1xuICAgIHZhciByZXQgPSBtYWtlTXV0Q2xvc3VyZShhcmcwLCBhcmcxLCA2MCwgX193YmdfYWRhcHRlcl8zMCk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBfX3diaW5kZ2VuX2Nsb3N1cmVfd3JhcHBlcjI2MihhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IG1ha2VNdXRDbG9zdXJlKGFyZzAsIGFyZzEsIDYwLCBfX3diZ19hZGFwdGVyXzMzKTtcbiAgICByZXR1cm4gYWRkSGVhcE9iamVjdChyZXQpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIF9fd2JpbmRnZW5fY2xvc3VyZV93cmFwcGVyMjg4MChhcmcwLCBhcmcxLCBhcmcyKSB7XG4gICAgdmFyIHJldCA9IG1ha2VNdXRDbG9zdXJlKGFyZzAsIGFyZzEsIDE1MjksIF9fd2JnX2FkYXB0ZXJfMzYpO1xuICAgIHJldHVybiBhZGRIZWFwT2JqZWN0KHJldCk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gX193YmluZGdlbl9jbG9zdXJlX3dyYXBwZXI0NjM3KGFyZzAsIGFyZzEsIGFyZzIpIHtcbiAgICB2YXIgcmV0ID0gbWFrZU11dENsb3N1cmUoYXJnMCwgYXJnMSwgMjI4MywgX193YmdfYWRhcHRlcl8zOSk7XG4gICAgcmV0dXJuIGFkZEhlYXBPYmplY3QocmV0KTtcbn07XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=