zkjson 0.6.1 → 1.0.2

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 (187) hide show
  1. package/README.md +537 -0
  2. package/assets/collection.png +0 -0
  3. package/assets/db.png +0 -0
  4. package/assets/encode.png +0 -0
  5. package/assets/query.png +0 -0
  6. package/assets/rollup.png +0 -0
  7. package/assets/structure.png +0 -0
  8. package/assets/weavedb.png +0 -0
  9. package/assets/zkjson.png +0 -0
  10. package/benchmark/components/ui/avatar.jsx +49 -0
  11. package/benchmark/components/ui/checkbox.jsx +17 -0
  12. package/benchmark/components/ui/close-button.jsx +20 -0
  13. package/benchmark/components/ui/color-mode.jsx +89 -0
  14. package/benchmark/components/ui/dialog.jsx +54 -0
  15. package/benchmark/components/ui/drawer.jsx +44 -0
  16. package/benchmark/components/ui/field.jsx +22 -0
  17. package/benchmark/components/ui/input-group.jsx +39 -0
  18. package/benchmark/components/ui/popover.jsx +49 -0
  19. package/benchmark/components/ui/provider.jsx +12 -0
  20. package/benchmark/components/ui/radio.jsx +17 -0
  21. package/benchmark/components/ui/slider.jsx +107 -0
  22. package/benchmark/components/ui/tooltip.jsx +35 -0
  23. package/benchmark/jsconfig.json +7 -0
  24. package/benchmark/lib/cbor.js +387 -0
  25. package/benchmark/lib/msgpack.js +651 -0
  26. package/benchmark/next.config.mjs +6 -0
  27. package/benchmark/package.json +22 -0
  28. package/benchmark/pages/_app.js +9 -0
  29. package/benchmark/pages/_document.js +13 -0
  30. package/benchmark/pages/api/hello.js +5 -0
  31. package/benchmark/pages/index.js +438 -0
  32. package/benchmark/public/favicon.ico +0 -0
  33. package/benchmark/public/file.svg +1 -0
  34. package/benchmark/public/globe.svg +1 -0
  35. package/benchmark/public/next.svg +1 -0
  36. package/benchmark/public/vercel.svg +1 -0
  37. package/benchmark/public/window.svg +1 -0
  38. package/benchmark/yarn.lock +2448 -0
  39. package/circom/collection/collection.circom +32 -0
  40. package/circom/collection/compile.sh +10 -0
  41. package/circom/collection/gen.js +34 -0
  42. package/circom/collection/generateInput.js +10 -0
  43. package/circom/collection/index.circom +4 -0
  44. package/circom/collection/test.js +21 -0
  45. package/circom/collection/verifier.sol +247 -0
  46. package/circom/db/compile.sh +10 -0
  47. package/circom/db/db.circom +39 -0
  48. package/circom/db/gen.js +30 -0
  49. package/circom/db/generateInput.js +10 -0
  50. package/circom/db/index.circom +4 -0
  51. package/circom/db/test.js +21 -0
  52. package/circom/db/verifier.sol +261 -0
  53. package/circom/ipfs/calculate_total.circom +17 -0
  54. package/circom/ipfs/compile.sh +10 -0
  55. package/circom/ipfs/gen.js +18 -0
  56. package/circom/ipfs/generateInput.js +10 -0
  57. package/circom/ipfs/index.circom +4 -0
  58. package/circom/ipfs/ipfs.circom +62 -0
  59. package/circom/ipfs/parse.circom +289 -0
  60. package/circom/ipfs/sha256.circom +99 -0
  61. package/circom/ipfs/test.js +167 -0
  62. package/circom/ipfs/verifier.sol +261 -0
  63. package/circom/json/compile.sh +10 -0
  64. package/circom/json/gen.js +22 -0
  65. package/circom/json/gen2.js +21 -0
  66. package/circom/json/generateInput.js +20 -0
  67. package/circom/json/index.circom +4 -0
  68. package/circom/json/json.circom +81 -0
  69. package/circom/json/test.js +100 -0
  70. package/circom/json/verifier.sol +247 -0
  71. package/circom/query/compile.sh +10 -0
  72. package/circom/query/gen.js +28 -0
  73. package/circom/query/generateInput.js +11 -0
  74. package/circom/query/index.circom +4 -0
  75. package/circom/query/query.circom +58 -0
  76. package/circom/query/test.js +20 -0
  77. package/circom/query/verifier.sol +177 -0
  78. package/circom/rollup/compile.sh +10 -0
  79. package/circom/rollup/gen.js +36 -0
  80. package/circom/rollup/generateInput.js +11 -0
  81. package/circom/rollup/index.circom +4 -0
  82. package/circom/rollup/rollup.circom +43 -0
  83. package/circom/rollup/test.js +35 -0
  84. package/circom/rollup/verifier.sol +240 -0
  85. package/circom/scripts/ceremony.js +39 -0
  86. package/circom/scripts/ceremony.sh +6 -0
  87. package/circom/scripts/compile.js +113 -0
  88. package/circom/scripts/compile.sh +16 -0
  89. package/circom/utils/uint.circom +512 -0
  90. package/circom/utils/utils.circom +628 -0
  91. package/demos/arweave/jsconfig.json +7 -0
  92. package/demos/arweave/lib/ZKArweave.json +617 -0
  93. package/demos/arweave/lib/encoder.js +375 -0
  94. package/demos/arweave/next.config.js +6 -0
  95. package/demos/arweave/package.json +26 -0
  96. package/demos/arweave/pages/_app.js +9 -0
  97. package/demos/arweave/pages/_document.js +19 -0
  98. package/demos/arweave/pages/api/arweave.js +31 -0
  99. package/demos/arweave/pages/api/hello.js +5 -0
  100. package/demos/arweave/pages/index.js +869 -0
  101. package/demos/arweave/public/circuit.wasm +0 -0
  102. package/demos/arweave/public/circuit_final.zkey +0 -0
  103. package/demos/arweave/public/verification_key.json +149 -0
  104. package/demos/arweave/vercel.json +7 -0
  105. package/demos/arweave/yarn.lock +2510 -0
  106. package/demos/simple/jsconfig.json +7 -0
  107. package/demos/simple/lib/encoder.js +375 -0
  108. package/demos/simple/next.config.js +6 -0
  109. package/demos/simple/package.json +24 -0
  110. package/demos/simple/pages/_app.js +9 -0
  111. package/demos/simple/pages/_document.js +13 -0
  112. package/demos/simple/pages/api/hello.js +5 -0
  113. package/demos/simple/pages/index.js +342 -0
  114. package/demos/simple/public/circuit.wasm +0 -0
  115. package/demos/simple/public/circuit_final.zkey +0 -0
  116. package/demos/simple/public/verification_key.json +149 -0
  117. package/demos/simple/yarn.lock +2519 -0
  118. package/docs/README.md +17 -0
  119. package/docs/simple-zkjson.md +210 -0
  120. package/docs/solidity-contracts.md +216 -0
  121. package/docs/zk-circuits.md +125 -0
  122. package/docs/zkdb-rollup.md +218 -0
  123. package/docs/zkjson-sdk.md +254 -0
  124. package/docs/zkjson-v1_5.md +365 -0
  125. package/package.json +16 -7
  126. package/{contracts → sdk/contracts}/NORollup.sol +0 -2
  127. package/sdk/package.json +15 -0
  128. package/sdk/yarn.lock +881 -0
  129. package/solidity/README.md +13 -0
  130. package/solidity/arguments.js +4 -0
  131. package/solidity/contracts/NORollup.sol +13 -0
  132. package/solidity/contracts/OPRollup.sol +14 -0
  133. package/solidity/contracts/ZKIPFS.sol +95 -0
  134. package/solidity/contracts/ZKJson.sol +21 -0
  135. package/solidity/contracts/ZKQuery.sol +286 -0
  136. package/solidity/contracts/ZKRollup.sol +35 -0
  137. package/solidity/contracts/apps/NORU.sol +66 -0
  138. package/solidity/contracts/apps/SimpleJSON.sol +64 -0
  139. package/solidity/contracts/apps/SimpleOPRU.sol +67 -0
  140. package/solidity/contracts/apps/SimpleRU.sol +67 -0
  141. package/solidity/contracts/apps/Token.sol +12 -0
  142. package/solidity/contracts/apps/ZKArweave.sol +89 -0
  143. package/solidity/contracts/apps/ZKBridge.sol +74 -0
  144. package/solidity/contracts/apps/ZKNFT.sol +63 -0
  145. package/solidity/contracts/verifiers/verifier_db.sol +275 -0
  146. package/solidity/contracts/verifiers/verifier_ipfs.sol +464 -0
  147. package/solidity/contracts/verifiers/verifier_json.sol +261 -0
  148. package/solidity/contracts/verifiers/verifier_rollup.sol +240 -0
  149. package/solidity/package.json +27 -0
  150. package/solidity/scripts/deploy.js +33 -0
  151. package/solidity/test/NORU.js +66 -0
  152. package/solidity/test/ZKArweave.js +97 -0
  153. package/solidity/test/arweave.js +55 -0
  154. package/solidity/test/bridge.js +71 -0
  155. package/solidity/test/simple.js +76 -0
  156. package/solidity/test/simpleOPRU.js +98 -0
  157. package/solidity/test/simpleRU.js +94 -0
  158. package/solidity/test/zknft.js +98 -0
  159. package/solidity/yarn.lock +4152 -0
  160. package/test/test.js +304 -0
  161. /package/{circomlibjs.js → sdk/circomlibjs.js} +0 -0
  162. /package/{collection.js → sdk/collection.js} +0 -0
  163. /package/{contracts → sdk/contracts}/OPRollup.sol +0 -0
  164. /package/{contracts → sdk/contracts}/ZKIPFS.sol +0 -0
  165. /package/{contracts → sdk/contracts}/ZKJson.sol +0 -0
  166. /package/{contracts → sdk/contracts}/ZKQuery.sol +0 -0
  167. /package/{contracts → sdk/contracts}/ZKRollup.sol +0 -0
  168. /package/{contracts → sdk/contracts}/apps/SimpleJSON.sol +0 -0
  169. /package/{contracts → sdk/contracts}/apps/SimpleOPRU.sol +0 -0
  170. /package/{contracts → sdk/contracts}/apps/SimpleRU.sol +0 -0
  171. /package/{contracts → sdk/contracts}/apps/Token.sol +0 -0
  172. /package/{contracts → sdk/contracts}/apps/ZKArweave.sol +0 -0
  173. /package/{contracts → sdk/contracts}/apps/ZKBridge.sol +0 -0
  174. /package/{contracts → sdk/contracts}/apps/ZKNFT.sol +0 -0
  175. /package/{contracts → sdk/contracts}/verifiers/verifier_db.sol +0 -0
  176. /package/{contracts → sdk/contracts}/verifiers/verifier_ipfs.sol +0 -0
  177. /package/{contracts → sdk/contracts}/verifiers/verifier_json.sol +0 -0
  178. /package/{contracts → sdk/contracts}/verifiers/verifier_rollup.sol +0 -0
  179. /package/{db.js → sdk/db.js} +0 -0
  180. /package/{doc.js → sdk/doc.js} +0 -0
  181. /package/{encoder-v1_5.js → sdk/encoder-v1_5.js} +0 -0
  182. /package/{encoder.js → sdk/encoder.js} +0 -0
  183. /package/{index.js → sdk/index.js} +0 -0
  184. /package/{json.js → sdk/json.js} +0 -0
  185. /package/{nft.js → sdk/nft.js} +0 -0
  186. /package/{parse.js → sdk/parse.js} +0 -0
  187. /package/{uint.js → sdk/uint.js} +0 -0
@@ -0,0 +1,628 @@
1
+ pragma circom 2.1.5;
2
+
3
+ function digits (x) {
4
+ var p = 0;
5
+ while(x > 0){
6
+ x = x \ 10;
7
+ p++;
8
+ }
9
+ return p;
10
+ }
11
+
12
+ function g(json, _c){
13
+ if(_c[5] == 1){
14
+ return [0, _c[1], 0, 0, 0, 1, _c[6], _c[7], _c[8]];
15
+ }
16
+ var prev = 0;
17
+ for(var j = _c[2]; j < _c[1]; j++){
18
+ var is = json[j] > 0 ? 1 : 0;
19
+ var is2 = json[j] < 0 ? 1 : 0;
20
+ var is3 = 100 > 0 ? 1 : 0;
21
+ var d = digits(json[j]);
22
+
23
+ if(json[j] > 0){
24
+ var p = _c[4] == 0 ? digits(json[j]) : _c[4];
25
+ var x = _c[4] == 0 ? json[j] : _c[3];
26
+ var cur = 0;
27
+ var num = 0;
28
+ var is9 = 0;
29
+ var first = _c[4] == 0 ? 1 : 0;
30
+ var zero = _c[4] == 0 ? 0 : _c[7];
31
+ var on = zero == 1 ? 1 : 0;
32
+ var len = _c[4] == 0 ? 0 : _c[8];
33
+ while(p > 0){
34
+ var n = x \ 10 ** (p - 1);
35
+ if(first == 1){
36
+ first = 0;
37
+ }else if(on == 0){
38
+ if(n == 0){
39
+ if(zero == 0){
40
+ zero = 1;
41
+ }else{
42
+ return [0, _c[1], 0, 0, 0, 1, _c[6], 0, 0];
43
+ }
44
+ }else if(zero == 1){
45
+ on = 1;
46
+ len = n;
47
+ is9 = 0;
48
+ }else if(n == 9){
49
+ on = 1;
50
+ len = 8;
51
+ is9 = 1;
52
+ }else{
53
+ on = 1;
54
+ len = n;
55
+ is9 = 0;
56
+ }
57
+ cur = 0;
58
+ }else if(on == 1){
59
+ num += n * 10 ** (len - cur - 1);
60
+ cur++;
61
+ if(zero == 1){
62
+ num = n;
63
+ len--;
64
+ x -= 10 ** (p - 1) * n;
65
+ p--;
66
+ var done = 0;
67
+ if(p == 0) {
68
+ j++;
69
+ if(_c[1] == j || json[j] == 0){
70
+ x = 0;
71
+ done = 1;
72
+ }else{
73
+ x = json[j];
74
+ }
75
+ }
76
+ if(len == 0) zero = 0;
77
+ return [num, _c[1], j, x, p, done, _c[6], zero, len];
78
+ }else if(cur == len){
79
+ prev *= 10 ** len;
80
+ if(is9 == 1){
81
+ prev += num;
82
+ }else{
83
+ num += prev;
84
+ x -= 10 ** (p - 1) * n;
85
+ p--;
86
+ var done = 0;
87
+ if(p == 0) {
88
+ j++;
89
+ if(_c[1] == j || json[j] == 0){
90
+ x = 0;
91
+ done = 1;
92
+ }else{
93
+ x = json[j];
94
+ }
95
+ }
96
+ return [num, _c[1], j, x, p, done, _c[6], zero, len];
97
+ }
98
+ cur = 0;
99
+ on = 0;
100
+ len = 0;
101
+ num = 0;
102
+ is9 = 0;
103
+ zero = 0;
104
+ }
105
+ }
106
+ x -= 10 ** (p - 1) * n;
107
+ p--;
108
+ }
109
+ }else{
110
+ return [0, _c[1], 0, 0, 0, 1, _c[6], 0, 0];
111
+ }
112
+ }
113
+ return [0, _c[1], 0, 0, 0, 1, _c[6], 0, 0];
114
+ }
115
+
116
+ function getLen(size_json, json){
117
+ var ji = 0;
118
+ var prev = 0;
119
+ for(var j = 0; j < size_json; j++){
120
+ if(json[j] > 0){
121
+ var p = digits(json[j]);
122
+ var x = json[j];
123
+ var on = 0;
124
+ var cur = 0;
125
+ var len = 0;
126
+ var num = 0;
127
+ var is9 = 0;
128
+ var first = 1;
129
+ var zero = 0;
130
+ while(p > 0){
131
+ var n = x \ 10 ** (p - 1);
132
+ if(first == 1){
133
+ first = 0;
134
+ }else if(on == 0){
135
+ if (n == 0){
136
+ if(zero == 0){
137
+ zero = 1;
138
+ }else{
139
+ return ji;
140
+ }
141
+ } else if(zero == 1){
142
+ on = 1;
143
+ len = n;
144
+ is9 = 0;
145
+ } else if(n == 9){
146
+ len = 8;
147
+ is9 = 1;
148
+ on = 1;
149
+ }else{
150
+ len = n;
151
+ is9 = 0;
152
+ on = 1;
153
+ }
154
+ cur = 0;
155
+ }else if(on == 1){
156
+ num += n * 10 ** (len - cur - 1);
157
+ cur++;
158
+ if(zero == 1){
159
+ num = n;
160
+ len--;
161
+ ji++;
162
+ if(len == 0){
163
+ zero = 0;
164
+ cur = 0;
165
+ on = 0;
166
+ num = 0;
167
+ is9 = 0;
168
+ }
169
+ }else if(cur == len){
170
+ prev *= 10 ** len;
171
+ if(is9 == 1){
172
+ prev += num;
173
+ }else{
174
+ num += prev;
175
+ prev = 0;
176
+ ji++;
177
+ }
178
+ cur = 0;
179
+ on = 0;
180
+ len = 0;
181
+ num = 0;
182
+ is9 = 0;
183
+ }
184
+ }
185
+ x -= 10 ** (p - 1) * n;
186
+ p--;
187
+ }
188
+ }else{
189
+ return ji;
190
+ }
191
+ }
192
+ return ji;
193
+ }
194
+
195
+ function checkPartialMatch(_exists, size_path, size_val, path, _path_start, pi, val, _val_start, vi, json, partial ,count){
196
+ var path_len = getLen(size_path, path);
197
+ var pi3 = 0;
198
+ var pi4 = 0;
199
+ var partial_path[9];
200
+ var partial_val[9];
201
+ var path_diff = 0;
202
+
203
+ var _path2_[9] = [0, size_path, 0,0,0,0,0,0,0];
204
+ _path2_ = g(path, _path2_);
205
+ var _path3_[9] = _path_start;
206
+ path_diff = _path3_[0] - _path2_[0];
207
+
208
+ for(var i5 = 0; i5 < path_len; i5++) _path3_ = g(json, _path3_);
209
+ partial_path = _path3_;
210
+
211
+ for(var i5 = path_len; i5 < pi; i5++){
212
+ var p3 = pi > i5 ? _path3_[0] : 0;
213
+ _path3_ = g(json, _path3_);
214
+ pi3++;
215
+ }
216
+
217
+ var _val3_[9] = _val_start;
218
+ partial_val = _val3_;
219
+ for(var i5 = 0; i5 < vi; i5++){
220
+ _val3_ = g(json, _val3_);
221
+ pi4++;
222
+ }
223
+ if(path_diff > 0){
224
+ var val_match = 1;
225
+ var i5 = 0;
226
+ var done = 0;
227
+ while((partial[5] == 0 || i5 < 2 + pi3 + pi4) && done == 0){
228
+ var pval = i5 == 0 ? 4 : 0;
229
+ if(i5 == 1) pval = path_diff;
230
+ if(i5 <= 1){
231
+ if(count == 1) partial = g(val, partial);
232
+ }if(i5 > 1 && i5 < 2 + pi3){
233
+ partial = g(val, partial);
234
+ pval = partial_path[0];
235
+ partial_path = g(json, partial_path);
236
+ if(pval != partial[0]) val_match = 0;
237
+ }else if(i5 >= 2 + pi3 && i5 < 2 + pi3 + pi4){
238
+ pval = partial_val[0];
239
+ if(pval != partial[0]) val_match = 0;
240
+ partial = g(val, partial);
241
+ partial_val = g(json, partial_val);
242
+ }
243
+ if(i5 == 2 + pi3 - 1) partial = g(val, partial);
244
+ if(i5 == 2 + pi3 + pi4 - 1) done = 1;
245
+ i5++;
246
+ }
247
+ if(val_match == 1) _exists = 1;
248
+ }
249
+ partial[6] = _exists;
250
+ if(_exists && partial[0]) partial[6] = 2;
251
+ return partial;
252
+ }
253
+
254
+ function getPath(json, _json_, pi){
255
+ var len = _json_[0];
256
+ for(var i2 = 0; i2 < len; i2++){
257
+ _json_ = g(json, _json_);
258
+ var plen = _json_[0];
259
+ pi++;
260
+ var plen2 = plen;
261
+ if(plen == 0){
262
+ _json_ = g(json, _json_);
263
+ pi++;
264
+ if(_json_[0] == 0){
265
+ _json_ = g(json, _json_);
266
+ pi++;
267
+ }
268
+ }else{
269
+ for(var i3 = 0; i3 < plen2; i3++){
270
+ _json_ = g(json, _json_);
271
+ pi++;
272
+ }
273
+ }
274
+ }
275
+ _json_[6] = pi;
276
+ return _json_;
277
+ }
278
+
279
+ function getVal(json, _json_){
280
+ var type = _json_[0];
281
+ var vi = 0;
282
+ if(type == 1){
283
+ _json_ = g(json, _json_);
284
+ vi = 2;
285
+ }else if(type == 2){
286
+ _json_ = g(json, _json_);
287
+ _json_ = g(json, _json_);
288
+ _json_ = g(json, _json_);
289
+ vi = 4;
290
+ } else if (type == 3){
291
+ _json_ = g(json, _json_);
292
+ var slen = _json_[0];
293
+ for(var i3 = 0;i3 < slen; i3++){
294
+ _json_ = g(json, _json_);
295
+ }
296
+ vi = slen + 2;
297
+ } else {
298
+ vi = 1;
299
+ }
300
+ _json_[6] = vi;
301
+ return _json_;
302
+ }
303
+
304
+ function checkPathMatch(json, path, _path_start, size_path, pi){
305
+ var path_match = 1;
306
+ var path_partial_match = 1;
307
+ var _path2_[9] = [0, size_path, 0,0,0,0,0,0,0];
308
+ var _path3_[9] = _path_start;
309
+ var i4 = 0;
310
+ while(i4 < pi || _path2_[5] == 0){
311
+ _path2_ = g(path, _path2_);
312
+ var p3 = pi > i4 ? _path3_[0] : 0;
313
+ if(p3 != _path2_[0]){
314
+ path_match = 0;
315
+ if(_path2_[5] == 0 && i4 != 0) path_partial_match = 0;
316
+ }
317
+ _path3_ = g(json, _path3_);
318
+ i4++;
319
+ }
320
+ return [path_match, path_partial_match];
321
+ }
322
+
323
+ function checkValMatch (json, val, _val_start, plus, size_val, vi, _val_match) {
324
+ var _val_[9] = [0, size_val, 0,0,0,0,0,0,0];
325
+ if(plus == 1) _val_ = g(val, _val_);
326
+ var _val3_[9] = _val_start;
327
+ var i5 = 0;
328
+ while(vi > i5 || _val_[5] == 0){
329
+ _val_ = g(val, _val_);
330
+ var v3 = vi > i5 ? _val3_[0] : 0;
331
+ if(v3 != _val_[0]) _val_match = 0;
332
+ _val3_ = g(json, _val3_);
333
+ i5++;
334
+ }
335
+ return _val_match;
336
+ }
337
+
338
+ function checkGtLt (op, _val_, _val_start, json, val, _val_match) {
339
+ var rev = op == 14 || op == 15;
340
+ var eq = op == 13 || op == 15;
341
+ var matched = 0;
342
+ var _val2_[9] = _val_;
343
+ _val2_ = g(val, _val2_);
344
+ var _val3_[9] = _val_start;
345
+
346
+ if(_val2_[0] != _val3_[0] || (_val2_[0] != 2 && _val2_[0] != 3 && _val2_[0] != 1)) _val_match = 0;
347
+ if(_val2_[0] == 2 && _val_match == 1){
348
+ var sign = 2;
349
+ _val2_ = g(val, _val2_);
350
+ var val2_2 = _val2_[0];
351
+ _val3_ = g(json,_val3_);
352
+ var val3_1 = _val3_[0];
353
+ if(_val2_[0] == 0 && val3_1 == 0) sign = 0;
354
+ if(_val2_[0] == 1 && val3_1 == 1) sign = 1;
355
+ _val2_ = g(val, _val2_);
356
+ _val3_ = g(json,_val3_);
357
+ var val3_2 = _val3_[0];
358
+ _val3_ = g(json,_val3_);
359
+ var val3_3 = _val3_[0];
360
+ _val3_ = g(json,_val3_);
361
+ if(_val2_[0] == 0 && _val3_[0] == 0 && eq) matched = 1;
362
+
363
+ if(matched == 0 && _val_match == 1){
364
+ var mul2 = 1;
365
+ var mul = 1;
366
+ if(_val2_[0] > val3_2) mul = 10 ** (_val2_[0] - val3_2);
367
+ if(_val2_[0] < val3_2) mul2 = 10 ** (val3_2 - _val2_[0]);
368
+ if(rev == 0){
369
+ if(val2_2 == 1 && val3_1 == 0) _val_match = 0;
370
+ if(_val2_[0] == 0 && _val3_[0] == 0 && eq) matched = 1;
371
+ if(_val_match == 1){
372
+ _val2_ = g(val, _val2_);
373
+ if(sign == 1){
374
+ if((eq == 0 && _val2_[0] * mul2 >= val3_3 * mul) || (eq == 1 && _val2_[0] * mul2 > val3_3 * mul)) _val_match = 0;
375
+ }else if(sign == 0){
376
+ if((eq == 0 && _val2_[0] * mul2 <= val3_3 * mul) || (eq == 1 && _val2_[0] * mul2 < val3_3 * mul)) _val_match = 0;
377
+ }
378
+ }
379
+ }else{
380
+ if(val2_2 == 0 && val3_1 == 1) _val_match = 0;
381
+ if(_val_match == 1){
382
+ _val2_ = g(val, _val2_);
383
+ if(sign == 1){
384
+ if((eq == 0 && _val2_[0] * mul2 <= val3_3 * mul) || (eq == 1 && _val2_[0] * mul2 < val3_3 * mul)) _val_match = 0;
385
+ }else if(sign == 0){
386
+ if((eq == 0 && _val2_[0] * mul2 >= val3_3 * mul) || (eq == 1 && _val2_[0] * mul2 > val3_3 * mul)) _val_match = 0;
387
+ }
388
+ }
389
+ }
390
+ }
391
+ } else if(_val2_[0] == 3 && _val_match == 1){
392
+ _val2_ = g(val, _val2_);
393
+ var val2_2 = _val2_[0];
394
+ _val3_ = g(json,_val3_);
395
+ var val3_1 = _val3_[0];
396
+ var str_size = _val2_[0] > _val3_[0] ? _val3_[0] : _val2_[0];
397
+ var eql = 1;
398
+ if(op == 12 || op == 13){
399
+ for(var i3 = 0; i3 < str_size; i3++){
400
+ _val2_ = g(val, _val2_);
401
+ _val3_ = g(json,_val3_);
402
+ if(_val2_[0] > _val3_[0]) _val_match = 0;
403
+ if(_val2_[0] != _val3_[0]) eql = 0;
404
+ }
405
+ if(_val_match == 1){
406
+ if(val2_2 > str_size) _val_match = 0;
407
+ if (eql && val2_2 == val3_1 && op == 12) _val_match = 0;
408
+ }
409
+ } else if(op == 14 || op == 15){
410
+ for(var i3 = 0; i3 < str_size; i3++){
411
+ _val2_ = g(val, _val2_);
412
+ _val3_ = g(json,_val3_);
413
+ if(_val2_[0] < _val3_[0]) _val_match = 0;
414
+ if(_val2_[0] != _val3_[0]) eql = 0;
415
+ }
416
+ if(_val_match == 1){
417
+ if(val3_1 > str_size) _val_match = 0;
418
+ if (eql && val2_2 == val3_1 && op == 14) _val_match = 0;
419
+ }
420
+ }
421
+ } else if(_val2_[0] == 1 && _val_match == 1){
422
+ _val2_ = g(val, _val2_);
423
+ _val3_ = g(json,_val3_);
424
+ if(eq == 0 && _val2_[0] == _val3_[0]) _val_match = 0;
425
+ if(eq == 1 && _val2_[0] != _val3_[0]) _val_match = 0;
426
+ if(eq == 1 && _val2_[0] == _val3_[0]) matched = 1;
427
+ if(_val_match == 1 && matched == 0){
428
+ if(op == 12 || op == 13){
429
+ if(_val2_[0] > _val3_[0]) _val_match = 0;
430
+ } else if(op == 14 || op == 15){
431
+ if(_val2_[0] < _val3_[0]) _val_match = 0;
432
+ }
433
+ }
434
+ }
435
+ return _val_match;
436
+ }
437
+
438
+ function checkInNin (op, _val_, _val_start, json, val, vi, _val_match){
439
+ var _val2_[9] = _val_;
440
+ _val2_ = g(val, _val2_);
441
+ if(_val2_[0] != 4) _val_match = 0;
442
+ if(_val_match == 1){
443
+ _val2_ = g(val, _val2_);
444
+ var plen2 = _val2_[0];
445
+ var included = 0;
446
+ while(plen2 > 0){
447
+ _val2_ = g(val, _val2_);
448
+ var _next_[9] = g(val, _val2_);
449
+ if(_val2_[0] != 0 || _next_[0] != 0){
450
+ plen2 = 0;
451
+ }else{
452
+ _val2_ = g(val, _val2_);
453
+ _val2_ = g(val, _val2_);
454
+ _val2_ = g(val, _val2_);
455
+ var type2 = _val2_[0];
456
+ var _val4_[9] = _val2_;
457
+ var vi4 = 0;
458
+ var _val_match2 = 1;
459
+ var matched2 = 0;
460
+ if(type2 == 0){
461
+ _val2_ = g(val, _val2_);
462
+ plen2 = _val2_[0];
463
+ vi4 = 1;
464
+ }else if(type2 == 1){
465
+ _val2_ = g(val, _val2_);
466
+ _val2_ = g(val, _val2_);
467
+ plen2 = _val2_[0];
468
+ vi4 = 2;
469
+ }else if(type2 == 2){
470
+ _val2_ = g(val, _val2_);
471
+ _val2_ = g(val, _val2_);
472
+ _val2_ = g(val, _val2_);
473
+ _val2_ = g(val, _val2_);
474
+ plen2 = _val2_[0];
475
+ vi4 = 4;
476
+ } else if (type2 == 3){
477
+ _val2_ = g(val, _val2_);
478
+ var slen2 = _val2_[0];
479
+ for(var i6 = 0;i6 < slen2; i6++){
480
+ _val2_ = g(val, _val2_);
481
+ }
482
+ _val2_ = g(val, _val2_);
483
+ plen2 = _val2_[0];
484
+ vi4 = slen2 + 2;
485
+ } else {
486
+ _val_match2 = 0;
487
+ plen2 = 0;
488
+ matched2 = 1;
489
+ }
490
+ if(_val_match2 == 1 && matched2 == 0){
491
+ var _val3_[9] = _val_start;
492
+ var i5 = 0;
493
+ while(vi > i5 || vi4 > i5){
494
+ var v3 = vi > i5 ? _val3_[0] : 0;
495
+ var v4 = vi4 > i5 ? _val4_[0] : 0;
496
+ if(v4 != v3) _val_match2 = 0;
497
+ _val3_ = g(json, _val3_);
498
+ _val4_ = g(val, _val4_);
499
+ i5++;
500
+ }
501
+ }
502
+ if(_val_match2 == 1){
503
+ matched2 = 1;
504
+ included = 1;
505
+ }
506
+ }
507
+ }
508
+ if((op == 17 && included == 1) || (op == 16 && included == 0)) _val_match = 0;
509
+ }
510
+ return _val_match;
511
+ }
512
+
513
+ function checkContains (_exists, size_val, val, _val_start, vi, json, plus){
514
+ var _pval_match = 1;
515
+ var _val2_[9] = [0, size_val, 0,0,0,0,0,0,0];
516
+ if(plus == 1) _val2_ = g(val, _val2_);
517
+ var _val3_[9] = _val_start;
518
+ var i5 = 0;
519
+ while(vi > i5 || _val2_[5] == 0){
520
+ _val2_ = g(val, _val2_);
521
+ var v3 = vi > i5 ? _val3_[0] : 0;
522
+ if(v3 != _val2_[0]) _pval_match = 0;
523
+ _val3_ = g(json, _val3_);
524
+ i5++;
525
+ }
526
+ if(_pval_match == 1) _exists = 1;
527
+ return _exists;
528
+ }
529
+
530
+ function checkArrayContains (_exists, op, _val_, _val_start, vi, val, json, contains) {
531
+ var _val_match = 1;
532
+ var _val2_[9] = _val_;
533
+ _val2_ = g(val, _val2_);
534
+ if(_val2_[0] != 4) _val_match = 0;
535
+ _val2_ = g(val,_val2_);
536
+ var plen3 = _val2_[0];
537
+ var included = 0;
538
+ var eindex = 0;
539
+ while(plen3 > 0){
540
+ _val2_ = g(val,_val2_);
541
+ var _next_[9] = g(val, _val2_);
542
+ if(_val2_[0] != 0 || _next_[0] != 0){
543
+ plen3 = 0;
544
+ }else{
545
+ _val2_ = g(val,_val2_);
546
+ _val2_ = g(val,_val2_);
547
+ _val2_ = g(val,_val2_);
548
+ var type2 = _val2_[0];
549
+ var _val4_[9] = _val2_;
550
+ var _val_match2 = 1;
551
+ var matched2 = 0;
552
+ var vi4 = 0;
553
+ if(type2 == 0){
554
+ contains[eindex] = 1;
555
+ eindex += 1;
556
+ _val2_ = g(val,_val2_);
557
+ plen3 = _val2_[0];
558
+ vi4 = 1;
559
+ }else if(type2 == 1){
560
+ _val2_ = g(val,_val2_);
561
+ contains[eindex] = 1;
562
+ eindex += 1;
563
+ _val2_ = g(val,_val2_);
564
+ plen3 = _val2_[0];
565
+ vi4 = 2;
566
+ }else if(type2 == 2){
567
+ _val2_ = g(val,_val2_);
568
+ _val2_ = g(val,_val2_);
569
+ _val2_ = g(val,_val2_);
570
+ contains[eindex] = 1;
571
+ eindex += 1;
572
+ _val2_ = g(val,_val2_);
573
+ plen3 = _val2_[0];
574
+ vi4 = 4;
575
+ } else if (type2 == 3){
576
+ _val2_ = g(val,_val2_);
577
+ var slen2 = _val2_[0];
578
+ for(var i6 = 0;i6 < slen2; i6++){
579
+ _val2_ = g(val,_val2_);
580
+ }
581
+ contains[eindex] = 1;
582
+ eindex += 1;
583
+ _val2_ = g(val,_val2_);
584
+ plen3 = _val2_[0];
585
+ vi4 = slen2 + 2;
586
+ } else {
587
+ _val_match2 = 0;
588
+ plen3 = 0;
589
+ matched2 = 1;
590
+ }
591
+ if(_val_match2 == 1 && matched2 == 0){
592
+ var matched3 = 1;
593
+ var _val3_[9] = _val_start;
594
+ var i5 = 0;
595
+ while(_val3_[5] == 0 || _val4_[5] == 0){
596
+ var v3 = vi > i5 ? _val3_[0] : 0;
597
+ var v4 = vi4 > i5 ? _val4_[0] : 0;
598
+ if(v4 != v3){
599
+ _val_match2 = 0;
600
+ matched3 = 0;
601
+ }
602
+ _val3_ = g(json, _val3_);
603
+ _val4_ = g(val, _val4_);
604
+ i5++;
605
+ }
606
+ if(matched3 == 1){
607
+ contains[eindex - 1 + 50] = 1;
608
+ }
609
+ }
610
+ if(_val_match2) included = 1;
611
+ }
612
+ }
613
+ if(included){
614
+ if(op == 19){
615
+ _exists = 1;
616
+ }else if(op == 20){
617
+ var all = 1;
618
+ for(var i5 = 0; i5 < 50; i5++){
619
+ if(contains[i5] == 1 && contains[i5 + 50] == 0) all = 0;
620
+ }
621
+ if(all == 1) _exists = 1;
622
+ }else if(op == 21){
623
+ _exists = 0;
624
+ }
625
+ }
626
+ contains[100] = _exists;
627
+ return contains;
628
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "compilerOptions": {
3
+ "paths": {
4
+ "@/*": ["./*"]
5
+ }
6
+ }
7
+ }