goscript 0.0.5 → 0.0.7
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.
- package/README.md +9 -2
- package/builtin/builtin.ts +31 -21
- package/compiler/compile.go +2 -3
- package/compiler/compile_expr.go +7 -3
- package/compiler/compile_stmt.go +3 -7
- package/compiler/output.go +10 -0
- package/compiler/pkg_compiler.go +1 -2
- package/compiler/types/tokens.go +65 -0
- package/compiler/types/types.go +46 -0
- package/dist/builtin/builtin.d.ts +1 -1
- package/dist/builtin/builtin.js +29 -18
- package/dist/builtin/builtin.js.map +1 -1
- package/dist/compliance/tests/array_literal/array_literal.gs.d.ts +1 -0
- package/dist/compliance/tests/array_literal/array_literal.gs.js +14 -0
- package/dist/compliance/tests/array_literal/array_literal.gs.js.map +1 -0
- package/dist/compliance/tests/async_basic/async_basic.gs.d.ts +1 -0
- package/dist/compliance/tests/async_basic/async_basic.gs.js +24 -0
- package/dist/compliance/tests/async_basic/async_basic.gs.js.map +1 -0
- package/dist/compliance/tests/basic_arithmetic/basic_arithmetic.gs.d.ts +1 -0
- package/dist/compliance/tests/basic_arithmetic/basic_arithmetic.gs.js +16 -0
- package/dist/compliance/tests/basic_arithmetic/basic_arithmetic.gs.js.map +1 -0
- package/dist/compliance/tests/boolean_logic/boolean_logic.gs.d.ts +1 -0
- package/dist/compliance/tests/boolean_logic/boolean_logic.gs.js +14 -0
- package/dist/compliance/tests/boolean_logic/boolean_logic.gs.js.map +1 -0
- package/dist/compliance/tests/channel_basic/channel_basic.gs.d.ts +1 -0
- package/dist/compliance/tests/channel_basic/channel_basic.gs.js +14 -0
- package/dist/compliance/tests/channel_basic/channel_basic.gs.js.map +1 -0
- package/dist/compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.d.ts +1 -0
- package/dist/compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.js +23 -0
- package/dist/compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.js.map +1 -0
- package/dist/compliance/tests/constants/constants.gs.d.ts +1 -0
- package/dist/compliance/tests/constants/constants.gs.js +16 -0
- package/dist/compliance/tests/constants/constants.gs.js.map +1 -0
- package/dist/compliance/tests/copy_independence/copy_independence.gs.d.ts +1 -0
- package/dist/compliance/tests/copy_independence/copy_independence.gs.js +31 -0
- package/dist/compliance/tests/copy_independence/copy_independence.gs.js.map +1 -0
- package/dist/compliance/tests/float64/float64.gs.d.ts +1 -0
- package/dist/compliance/tests/float64/float64.gs.js +23 -0
- package/dist/compliance/tests/float64/float64.gs.js.map +1 -0
- package/dist/compliance/tests/for_loop_basic/for_loop_basic.gs.d.ts +1 -0
- package/dist/compliance/tests/for_loop_basic/for_loop_basic.gs.js +10 -0
- package/dist/compliance/tests/for_loop_basic/for_loop_basic.gs.js.map +1 -0
- package/dist/compliance/tests/for_loop_condition_only/main.gs.d.ts +1 -0
- package/dist/compliance/tests/for_loop_condition_only/main.gs.js +10 -0
- package/dist/compliance/tests/for_loop_condition_only/main.gs.js.map +1 -0
- package/dist/compliance/tests/for_range/for_range.gs.d.ts +1 -0
- package/dist/compliance/tests/for_range/for_range.gs.js +39 -0
- package/dist/compliance/tests/for_range/for_range.gs.js.map +1 -0
- package/dist/compliance/tests/for_range_index_use/for_range_index_use.gs.d.ts +1 -0
- package/dist/compliance/tests/for_range_index_use/for_range_index_use.gs.js +15 -0
- package/dist/compliance/tests/for_range_index_use/for_range_index_use.gs.js.map +1 -0
- package/dist/compliance/tests/func_literal/func_literal.gs.d.ts +1 -0
- package/dist/compliance/tests/func_literal/func_literal.gs.js +10 -0
- package/dist/compliance/tests/func_literal/func_literal.gs.js.map +1 -0
- package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.d.ts +10 -0
- package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.js +26 -0
- package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.js.map +1 -0
- package/dist/compliance/tests/if_statement/if_statement.gs.d.ts +1 -0
- package/dist/compliance/tests/if_statement/if_statement.gs.js +13 -0
- package/dist/compliance/tests/if_statement/if_statement.gs.js.map +1 -0
- package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.d.ts +1 -0
- package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js +26 -0
- package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js.map +1 -0
- package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.d.ts +1 -0
- package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js +26 -0
- package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js.map +1 -0
- package/dist/compliance/tests/map_support/map_support.gs.d.ts +1 -0
- package/dist/compliance/tests/map_support/map_support.gs.js +88 -0
- package/dist/compliance/tests/map_support/map_support.gs.js.map +1 -0
- package/dist/compliance/tests/method_call_on_pointer_receiver/method_call_on_pointer_receiver.gs.d.ts +1 -0
- package/dist/compliance/tests/method_call_on_pointer_receiver/method_call_on_pointer_receiver.gs.js +22 -0
- package/dist/compliance/tests/method_call_on_pointer_receiver/method_call_on_pointer_receiver.gs.js.map +1 -0
- package/dist/compliance/tests/method_call_on_pointer_via_value/method_call_on_pointer_via_value.gs.d.ts +1 -0
- package/dist/compliance/tests/method_call_on_pointer_via_value/method_call_on_pointer_via_value.gs.js +30 -0
- package/dist/compliance/tests/method_call_on_pointer_via_value/method_call_on_pointer_via_value.gs.js.map +1 -0
- package/dist/compliance/tests/method_call_on_value_receiver/method_call_on_value_receiver.gs.d.ts +1 -0
- package/dist/compliance/tests/method_call_on_value_receiver/method_call_on_value_receiver.gs.js +19 -0
- package/dist/compliance/tests/method_call_on_value_receiver/method_call_on_value_receiver.gs.js.map +1 -0
- package/dist/compliance/tests/method_call_on_value_via_pointer/method_call_on_value_via_pointer.gs.d.ts +1 -0
- package/dist/compliance/tests/method_call_on_value_via_pointer/method_call_on_value_via_pointer.gs.js +30 -0
- package/dist/compliance/tests/method_call_on_value_via_pointer/method_call_on_value_via_pointer.gs.js.map +1 -0
- package/dist/compliance/tests/multiple_return_values/multiple_return_values.gs.d.ts +1 -0
- package/dist/compliance/tests/multiple_return_values/multiple_return_values.gs.js +17 -0
- package/dist/compliance/tests/multiple_return_values/multiple_return_values.gs.js.map +1 -0
- package/dist/compliance/tests/pointer_assignment_no_copy/pointer_assignment_no_copy.gs.d.ts +1 -0
- package/dist/compliance/tests/pointer_assignment_no_copy/pointer_assignment_no_copy.gs.js +26 -0
- package/dist/compliance/tests/pointer_assignment_no_copy/pointer_assignment_no_copy.gs.js.map +1 -0
- package/dist/compliance/tests/pointer_composite_literal_assignment/pointer_composite_literal_assignment.gs.d.ts +1 -0
- package/dist/compliance/tests/pointer_composite_literal_assignment/pointer_composite_literal_assignment.gs.js +24 -0
- package/dist/compliance/tests/pointer_composite_literal_assignment/pointer_composite_literal_assignment.gs.js.map +1 -0
- package/dist/compliance/tests/pointer_deref_multiassign/pointer_deref_multiassign.gs.d.ts +1 -0
- package/dist/compliance/tests/pointer_deref_multiassign/pointer_deref_multiassign.gs.js +19 -0
- package/dist/compliance/tests/pointer_deref_multiassign/pointer_deref_multiassign.gs.js.map +1 -0
- package/dist/compliance/tests/pointer_initialization/pointer_initialization.gs.d.ts +1 -0
- package/dist/compliance/tests/pointer_initialization/pointer_initialization.gs.js +18 -0
- package/dist/compliance/tests/pointer_initialization/pointer_initialization.gs.js.map +1 -0
- package/dist/compliance/tests/select_receive_on_closed_channel_no_default/select_receive_on_closed_channel_no_default.gs.d.ts +1 -0
- package/dist/compliance/tests/select_receive_on_closed_channel_no_default/select_receive_on_closed_channel_no_default.gs.js +27 -0
- package/dist/compliance/tests/select_receive_on_closed_channel_no_default/select_receive_on_closed_channel_no_default.gs.js.map +1 -0
- package/dist/compliance/tests/select_send_on_full_buffered_channel_with_default/select_send_on_full_buffered_channel_with_default.gs.d.ts +1 -0
- package/dist/compliance/tests/select_send_on_full_buffered_channel_with_default/select_send_on_full_buffered_channel_with_default.gs.js +29 -0
- package/dist/compliance/tests/select_send_on_full_buffered_channel_with_default/select_send_on_full_buffered_channel_with_default.gs.js.map +1 -0
- package/dist/compliance/tests/select_statement/select_statement.gs.d.ts +1 -0
- package/dist/compliance/tests/select_statement/select_statement.gs.js +209 -0
- package/dist/compliance/tests/select_statement/select_statement.gs.js.map +1 -0
- package/dist/compliance/tests/simple/simple.gs.d.ts +1 -0
- package/dist/compliance/tests/simple/simple.gs.js +6 -0
- package/dist/compliance/tests/simple/simple.gs.js.map +1 -0
- package/dist/compliance/tests/simple_deref_assignment/simple_deref_assignment.gs.d.ts +1 -0
- package/dist/compliance/tests/simple_deref_assignment/simple_deref_assignment.gs.js +22 -0
- package/dist/compliance/tests/simple_deref_assignment/simple_deref_assignment.gs.js.map +1 -0
- package/dist/compliance/tests/slices/slices.gs.d.ts +1 -0
- package/dist/compliance/tests/slices/slices.gs.js +21 -0
- package/dist/compliance/tests/slices/slices.gs.js.map +1 -0
- package/dist/compliance/tests/string_rune_conversion/string_rune_conversion.gs.d.ts +1 -0
- package/dist/compliance/tests/string_rune_conversion/string_rune_conversion.gs.js +17 -0
- package/dist/compliance/tests/string_rune_conversion/string_rune_conversion.gs.js.map +1 -0
- package/dist/compliance/tests/struct_field_access/struct_field_access.gs.d.ts +1 -0
- package/dist/compliance/tests/struct_field_access/struct_field_access.gs.js +16 -0
- package/dist/compliance/tests/struct_field_access/struct_field_access.gs.js.map +1 -0
- package/dist/compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.d.ts +1 -0
- package/dist/compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.js +27 -0
- package/dist/compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.js.map +1 -0
- package/dist/compliance/tests/switch_statement/switch_statement.gs.d.ts +1 -0
- package/dist/compliance/tests/switch_statement/switch_statement.gs.js +76 -0
- package/dist/compliance/tests/switch_statement/switch_statement.gs.js.map +1 -0
- package/dist/compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.d.ts +1 -0
- package/dist/compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.js +29 -0
- package/dist/compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Generated file based on switch_statement.go
|
|
2
|
+
// Updated when compliance tests are re-run, DO NOT EDIT!
|
|
3
|
+
export async function main() {
|
|
4
|
+
let i = 2;
|
|
5
|
+
console.log("Integer switch:");
|
|
6
|
+
switch (i) {
|
|
7
|
+
case 1:
|
|
8
|
+
console.log("one");
|
|
9
|
+
break;
|
|
10
|
+
case 2:
|
|
11
|
+
console.log("two");
|
|
12
|
+
break;
|
|
13
|
+
case 3:
|
|
14
|
+
console.log("three");
|
|
15
|
+
break;
|
|
16
|
+
default:
|
|
17
|
+
console.log("other integer");
|
|
18
|
+
break;
|
|
19
|
+
}
|
|
20
|
+
let s = "hello";
|
|
21
|
+
console.log("\nString switch:");
|
|
22
|
+
switch (s) {
|
|
23
|
+
case "world":
|
|
24
|
+
console.log("world");
|
|
25
|
+
break;
|
|
26
|
+
case "hello":
|
|
27
|
+
console.log("hello");
|
|
28
|
+
break;
|
|
29
|
+
default:
|
|
30
|
+
console.log("other string");
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
let x = -5;
|
|
34
|
+
console.log("\nSwitch without expression:");
|
|
35
|
+
// x > 0
|
|
36
|
+
switch (true) {
|
|
37
|
+
case x < 0:
|
|
38
|
+
console.log("negative");
|
|
39
|
+
break;
|
|
40
|
+
case x == 0:
|
|
41
|
+
console.log("zero");
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
console.log("positive");
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
x = 0;
|
|
48
|
+
console.log("\nSwitch without expression (zero):");
|
|
49
|
+
// x > 0
|
|
50
|
+
switch (true) {
|
|
51
|
+
case x < 0:
|
|
52
|
+
console.log("negative");
|
|
53
|
+
break;
|
|
54
|
+
case x == 0:
|
|
55
|
+
console.log("zero");
|
|
56
|
+
break;
|
|
57
|
+
default:
|
|
58
|
+
console.log("positive");
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
x = 10;
|
|
62
|
+
console.log("\nSwitch without expression (positive):");
|
|
63
|
+
// x > 0
|
|
64
|
+
switch (true) {
|
|
65
|
+
case x < 0:
|
|
66
|
+
console.log("negative");
|
|
67
|
+
break;
|
|
68
|
+
case x == 0:
|
|
69
|
+
console.log("zero");
|
|
70
|
+
break;
|
|
71
|
+
default:
|
|
72
|
+
console.log("positive");
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=switch_statement.gs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch_statement.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/switch_statement/switch_statement.gs.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,yDAAyD;AAIzD,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,QAAQ,CAAC,EAAE,CAAC;QACX,KAAK,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClB,MAAK;QACN,KAAK,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClB,MAAK;QACN,KAAK,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpB,MAAK;QACN;YACC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;YAC5B,MAAK;IACP,CAAC;IAED,IAAI,CAAC,GAAG,OAAO,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IAC/B,QAAQ,CAAC,EAAE,CAAC;QACX,KAAK,OAAO;YACX,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpB,MAAK;QACN,KAAK,OAAO;YACX,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACpB,MAAK;QACN;YACC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YAC3B,MAAK;IACP,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACV,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;IAE3C,QAAQ;IACR,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACvB,MAAK;QACN,KAAK,CAAC,IAAI,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACnB,MAAK;QACN;YACC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACvB,MAAK;IACP,CAAC;IAED,CAAC,GAAG,CAAC,CAAA;IACL,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;IAElD,QAAQ;IACR,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACvB,MAAK;QACN,KAAK,CAAC,IAAI,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACnB,MAAK;QACN;YACC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACvB,MAAK;IACP,CAAC;IAED,CAAC,GAAG,EAAE,CAAA;IACN,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;IAEtD,QAAQ;IACR,QAAQ,IAAI,EAAE,CAAC;QACd,KAAK,CAAC,GAAG,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACvB,MAAK;QACN,KAAK,CAAC,IAAI,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YACnB,MAAK;QACN;YACC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACvB,MAAK;IACP,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function main(): Promise<void>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Generated file based on value_type_copy_behavior.go
|
|
2
|
+
// Updated when compliance tests are re-run, DO NOT EDIT!
|
|
3
|
+
class MyStruct {
|
|
4
|
+
MyInt = 0;
|
|
5
|
+
MyString = "";
|
|
6
|
+
myBool = false;
|
|
7
|
+
constructor(init) { if (init)
|
|
8
|
+
Object.assign(this, init); }
|
|
9
|
+
clone() { return Object.assign(Object.create(MyStruct.prototype), this); }
|
|
10
|
+
}
|
|
11
|
+
export async function main() {
|
|
12
|
+
let dereferencedStructCopy = new MyStruct({ MyString: "original" });
|
|
13
|
+
// === Value-Type Copy Behavior ===
|
|
14
|
+
// Assigning a struct (value type) creates independent copies.
|
|
15
|
+
let valueCopy1 = dereferencedStructCopy.clone();
|
|
16
|
+
let valueCopy2 = dereferencedStructCopy.clone();
|
|
17
|
+
let pointerCopy = dereferencedStructCopy;
|
|
18
|
+
// Modifications to one copy do not affect others or the original.
|
|
19
|
+
valueCopy1.MyString = "value copy 1";
|
|
20
|
+
dereferencedStructCopy.MyString = "original dereferenced copy modified"; // Modify the source of the copies
|
|
21
|
+
valueCopy2.MyString = "value copy 2";
|
|
22
|
+
// Expected: "value copy 1"
|
|
23
|
+
console.log("valueCopy1: Expected: value copy 1, Actual: " + valueCopy1.MyString);
|
|
24
|
+
// Expected: "original dereferenced copy modified"
|
|
25
|
+
console.log("dereferencedStructCopy (modified after copies were made): Expected: original dereferenced copy modified, Actual: " + dereferencedStructCopy.MyString);
|
|
26
|
+
// Expected: "value copy 2"
|
|
27
|
+
console.log("valueCopy2: Expected: value copy 2, Actual: " + valueCopy2.MyString);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=value_type_copy_behavior.gs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value_type_copy_behavior.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,yDAAyD;AAIzD,MAAM,QAAQ;IACN,KAAK,GAAW,CAAC,CAAC;IAClB,QAAQ,GAAW,EAAE,CAAC;IACrB,MAAM,GAAY,KAAK,CAAC;IAEhC,YAAY,IAAwB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,KAAe,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACvG;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,IAAI,sBAAsB,GAAG,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAA;IACnE,mCAAmC;IACnC,8DAA8D;IAC9D,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;IAC/C,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;IAC/C,IAAI,WAAW,GAAG,sBAAsB,CAAA;IACxC,kEAAkE;IAClE,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAA;IACpC,sBAAsB,CAAC,QAAQ,GAAG,qCAAqC,CAAA,CAAC,kCAAkC;IAC1G,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAA;IACpC,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjF,kDAAkD;IAClD,OAAO,CAAC,GAAG,CAAC,mHAAmH,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAClK,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;AAClF,CAAC"}
|