Skip to content

Commit 40fcf2f

Browse files
committed
Close arrowArray when reading recordbatch stream, also close searcher on context close.
Signed-off-by: Marc Handalian <marc.handalian@gmail.com>
1 parent 9ce258a commit 40fcf2f

23 files changed

Lines changed: 222 additions & 23 deletions

File tree

plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/RecordBatchStream.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ public CompletableFuture<Boolean> loadNextBatch() {
107107
// Reached end of stream
108108
result.complete(false);
109109
} else {
110-
try {
111-
ArrowArray arrowArray = ArrowArray.wrap(arrowArrayAddress);
110+
try (ArrowArray arrowArray = ArrowArray.wrap(arrowArrayAddress)) {
112111
Data.importIntoVectorSchemaRoot(allocator, arrowArray, vectorSchemaRoot, dictionaryProvider);
113112
result.complete(true);
114113
} catch (Exception e) {

plugins/engine-datafusion/src/main/java/org/opensearch/datafusion/search/DatafusionContext.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.apache.lucene.search.Query;
1616
import org.opensearch.action.search.SearchShardTask;
1717
import org.opensearch.action.search.SearchType;
18+
import org.opensearch.common.lease.Releasables;
1819
import org.opensearch.common.unit.TimeValue;
1920
import org.opensearch.common.util.BigArrays;
2021
import org.opensearch.core.common.bytes.BytesReference;
@@ -185,7 +186,7 @@ public boolean isCancelled() {
185186

186187
@Override
187188
protected void doClose() {
188-
189+
Releasables.close(engineSearcher);
189190
}
190191

191192
/**

plugins/engine-datafusion/src/test/java/org/opensearch/datafusion/DataFusionSingleNodeTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public void testClickBenchQueries() throws IOException {
6969

7070
// TODO: run in a loop
7171
String sourceFile = fileToString(
72-
"q25.json",
72+
"q7.json",
7373
false
7474
);
7575
SearchSourceBuilder source = new SearchSourceBuilder();

plugins/engine-datafusion/src/test/resources/q19.json

Lines changed: 56 additions & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"from":0,"size":0,"timeout":"1m","query":{"bool":{"must":[{"bool":{"must":[{"exists":{"field":"URL","boost":1.0}}],"must_not":[{"term":{"URL":{"value":"","boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}},{"exists":{"field":"CounterID","boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},"_source":{"includes":["CounterID","URL"],"excludes":[]},"aggregations":{"composite_buckets":{"composite":{"size":10000,"sources":[{"CounterID":{"terms":{"field":"CounterID","missing_bucket":false,"order":"asc"}}}]},"aggregations":{"l":{"avg":{"script":{"source":"{\"langType\":\"calcite\",\"script\":\"rO0ABXNyABFqYXZhLnV0aWwuQ29sbFNlcleOq7Y6G6gRAwABSQADdGFneHAAAAADdwQAAAAGdAAHcm93VHlwZXQAknsKICAiZmllbGRzIjogWwogICAgewogICAgICAidHlwZSI6ICJWQVJDSEFSIiwKICAgICAgIm51bGxhYmxlIjogdHJ1ZSwKICAgICAgInByZWNpc2lvbiI6IC0xLAogICAgICAibmFtZSI6ICJVUkwiCiAgICB9CiAgXSwKICAibnVsbGFibGUiOiBmYWxzZQp9dAAEZXhwcnQApnsKICAib3AiOiB7CiAgICAibmFtZSI6ICJDSEFSX0xFTkdUSCIsCiAgICAia2luZCI6ICJDSEFSX0xFTkdUSCIsCiAgICAic3ludGF4IjogIkZVTkNUSU9OIgogIH0sCiAgIm9wZXJhbmRzIjogWwogICAgewogICAgICAiaW5wdXQiOiAwLAogICAgICAibmFtZSI6ICIkMCIKICAgIH0KICBdCn10AApmaWVsZFR5cGVzc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAF0AANVUkx+cgApb3JnLm9wZW5zZWFyY2guc3FsLmRhdGEudHlwZS5FeHByQ29yZVR5cGUAAAAAAAAAABIAAHhyAA5qYXZhLmxhbmcuRW51bQAAAAAAAAAAEgAAeHB0AAZTVFJJTkd4eA==\"}","lang":"opensearch_compounded_script","params":{"utcTimestamp":1762824209533948000}}}},"c":{"value_count":{"field":"_index"}}}}},"query_plan_ir":"CiUIBBIhL2Z1bmN0aW9uc19hZ2dyZWdhdGVfZ2VuZXJpYy55YW1sCh4IAxIaL2Z1bmN0aW9uc19hcml0aG1ldGljLnlhbWwKGggCEhYvZnVuY3Rpb25zX3N0cmluZy55YW1sCh4IARIaL2Z1bmN0aW9uc19jb21wYXJpc29uLnlhbWwSGxoZCAEQARoRbm90X2VxdWFsOmFueV9hbnkgARIZGhcIARACGg9pc19ub3RfbnVsbDphbnkgARIZGhcIAhADGg9jaGFyX2xlbmd0aDpzdHIgAhIRGg8IAxAEGgdzdW06aTMyIAMSExoRCAQQBRoJY291bnQ6YW55IAQSEBoOCAQQBhoGY291bnQ6IAQSFBoSCAEQBxoKZ3Q6YW55X2FueSABGs4TEssTCqoTGqcTCgIKABKbEyqYEwoCCgASgxMagBMKAgoAEvUSKvISCgIKABLdEhLaEgoCCgASoxI6oBIKCBIGCgQEBQYHEuURIuIRCgIKABKDETqAEQoGEgQKAmlqEs8QEswQCgIKABKrEBKoEAoCCgAS/w8K/A8KAgoAEu0PCgtBZHZFbmdpbmVJRAoDQWdlCg5Ccm93c2VyQ291bnRyeQoPQnJvd3Nlckxhbmd1YWdlCgRDTElECg9DbGllbnRFdmVudFRpbWUKCENsaWVudElQCg5DbGllbnRUaW1lWm9uZQoLQ29kZVZlcnNpb24KDUNvbm5lY3RUaW1pbmcKDENvb2tpZUVuYWJsZQoMQ291bnRlckNsYXNzCglDb3VudGVySUQKCUROU1RpbWluZwoNRG9udENvdW50SGl0cwoJRXZlbnREYXRlCglFdmVudFRpbWUKB0ZVbmlxSUQKC0ZldGNoVGltaW5nCgpGbGFzaE1ham9yCgpGbGFzaE1pbm9yCgtGbGFzaE1pbm9yMgoHRnJvbVRhZwoJR29vZEV2ZW50CgNISUQKCUhUVFBFcnJvcgoISGFzR0NMSUQKDUhpc3RvcnlMZW5ndGgKCEhpdENvbG9yCgtJUE5ldHdvcmtJRAoGSW5jb21lCglJbnRlcmVzdHMKC0lzQXJ0aWZpY2FsCgpJc0Rvd25sb2FkCgdJc0V2ZW50CgZJc0xpbmsKCElzTW9iaWxlCgtJc05vdEJvdW5jZQoMSXNPbGRDb3VudGVyCgtJc1BhcmFtZXRlcgoJSXNSZWZyZXNoCgpKYXZhRW5hYmxlChBKYXZhc2NyaXB0RW5hYmxlCg5Mb2NhbEV2ZW50VGltZQoLTW9iaWxlUGhvbmUKEE1vYmlsZVBob25lTW9kZWwKCE5ldE1ham9yCghOZXRNaW5vcgoCT1MKCk9wZW5lck5hbWUKDE9wZW5zdGF0QWRJRAoST3BlbnN0YXRDYW1wYWlnbklEChNPcGVuc3RhdFNlcnZpY2VOYW1lChBPcGVuc3RhdFNvdXJjZUlECgtPcmlnaW5hbFVSTAoLUGFnZUNoYXJzZXQKDVBhcmFtQ3VycmVuY3kKD1BhcmFtQ3VycmVuY3lJRAoMUGFyYW1PcmRlcklECgpQYXJhbVByaWNlCgZQYXJhbXMKB1JlZmVyZXIKEVJlZmVyZXJDYXRlZ29yeUlECgtSZWZlcmVySGFzaAoPUmVmZXJlclJlZ2lvbklECghSZWdpb25JRAoIUmVtb3RlSVAKD1Jlc29sdXRpb25EZXB0aAoQUmVzb2x1dGlvbkhlaWdodAoPUmVzb2x1dGlvbldpZHRoChFSZXNwb25zZUVuZFRpbWluZwoTUmVzcG9uc2VTdGFydFRpbWluZwoJUm9ib3RuZXNzCg5TZWFyY2hFbmdpbmVJRAoMU2VhcmNoUGhyYXNlCgpTZW5kVGltaW5nCgNTZXgKE1NpbHZlcmxpZ2h0VmVyc2lvbjEKE1NpbHZlcmxpZ2h0VmVyc2lvbjIKE1NpbHZlcmxpZ2h0VmVyc2lvbjMKE1NpbHZlcmxpZ2h0VmVyc2lvbjQKDFNvY2lhbEFjdGlvbgoNU29jaWFsTmV0d29yawoVU29jaWFsU291cmNlTmV0d29ya0lEChBTb2NpYWxTb3VyY2VQYWdlCgVUaXRsZQoOVHJhZmljU291cmNlSUQKA1VSTAoNVVJMQ2F0ZWdvcnlJRAoHVVJMSGFzaAoLVVJMUmVnaW9uSUQKC1VUTUNhbXBhaWduCgpVVE1Db250ZW50CglVVE1NZWRpdW0KCVVUTVNvdXJjZQoHVVRNVGVybQoJVXNlckFnZW50Cg5Vc2VyQWdlbnRNYWpvcgoOVXNlckFnZW50TWlub3IKBlVzZXJJRAoHV2F0Y2hJRAoSV2luZG93Q2xpZW50SGVpZ2h0ChFXaW5kb3dDbGllbnRXaWR0aAoKV2luZG93TmFtZQoIV2l0aEhhc2gShAUKBBoCEAEKBBoCEAEKBGICEAEKBGICEAEKBCoCEAEKB4oCBAgDGAEKBCoCEAEKBBoCEAEKBCoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBCoCEAEKBBoCEAEKB4oCBAgDGAEKB4oCBAgDGAEKBDoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBGICEAEKBBoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBGICEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKB4oCBAgDGAEKBBoCEAEKBGICEAEKBBoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBBoCEAEKBGICEAEKBDoCEAEKBGICEAEKBGICEAEKBBoCEAEKBDoCEAEKBCoCEAEKBCoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBGICEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBBoCEAEKBGICEAEKBGICEAEKBBoCEAEKBGICEAEKBGICEAEKBBoCEAEKBGICEAEKBBoCEAEKBDoCEAEKBCoCEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBBoCEAEKBBoCEAEKBGICEAEKBDoCEAEKBDoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBBoCEAEYAToGCgRoaXRzGiAaHggBGgQKAhABIgwaChIICgQSAghXIgAiBhoECgJiABoYGhYIAhoECgIQAiIMGgoSCAoEEgIIDCIAGgoSCAoEEgIIDCIAGhgaFggDGgQqAhABIgwaChIICgQSAghXIgAaCgoIEgYKAhIAIgAiHAoaCAQgAyoEOgIQATABOgwaChIICgQSAggBIgAiHAoaCAUgAyoEOgIQAjABOgwaChIICgQSAggBIgAiDgoMCAYgAyoEOgIQAjABGgoSCAoEEgIIASIAGgoSCAoEEgIIAiIAGgoSCAoEEgIIAiIAGggSBgoCEgAiABouGiwIBxoECgIQAiIMGgoSCAoEEgIIASIAIhQaEloQCgQ6AhACEgYKBCigjQYYAhoMCggSBgoCEgAiABAEGAAgGRoMCggSBgoCEgAiABAEGAAgkE4SBWxfc3VtEgdsX2NvdW50EgFjEglDb3VudGVySUQyEhBNKg5zdWJzdHJhaXQtamF2YUIvCAESK2V4dGVuc2lvbjppby5zdWJzdHJhaXQ6ZnVuY3Rpb25zX2NvbXBhcmlzb25CNggEEjJleHRlbnNpb246aW8uc3Vic3RyYWl0OmZ1bmN0aW9uc19hZ2dyZWdhdGVfZ2VuZXJpY0IvCAMSK2V4dGVuc2lvbjppby5zdWJzdHJhaXQ6ZnVuY3Rpb25zX2FyaXRobWV0aWNCKwgCEidleHRlbnNpb246aW8uc3Vic3RyYWl0OmZ1bmN0aW9uc19zdHJpbmc="}
1+
{"from":0,"size":0,"timeout":"1m","query":{"bool":{"must":[{"bool":{"must":[{"exists":{"field":"URL","boost":1.0}}],"must_not":[{"term":{"URL":{"value":"","boost":1.0}}}],"adjust_pure_negative":true,"boost":1.0}},{"exists":{"field":"CounterID","boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},"_source":{"includes":["CounterID","URL"],"excludes":[]},"aggregations":{"composite_buckets":{"composite":{"size":10000,"sources":[{"CounterID":{"terms":{"field":"CounterID","missing_bucket":false,"order":"asc"}}}]},"aggregations":{"l":{"avg":{"script":{"source":"{\"langType\":\"calcite\",\"script\":\"rO0ABXNyABFqYXZhLnV0aWwuQ29sbFNlcleOq7Y6G6gRAwABSQADdGFneHAAAAADdwQAAAAGdAAHcm93VHlwZXQAknsKICAiZmllbGRzIjogWwogICAgewogICAgICAidHlwZSI6ICJWQVJDSEFSIiwKICAgICAgIm51bGxhYmxlIjogdHJ1ZSwKICAgICAgInByZWNpc2lvbiI6IC0xLAogICAgICAibmFtZSI6ICJVUkwiCiAgICB9CiAgXSwKICAibnVsbGFibGUiOiBmYWxzZQp9dAAEZXhwcnQApnsKICAib3AiOiB7CiAgICAibmFtZSI6ICJDSEFSX0xFTkdUSCIsCiAgICAia2luZCI6ICJDSEFSX0xFTkdUSCIsCiAgICAic3ludGF4IjogIkZVTkNUSU9OIgogIH0sCiAgIm9wZXJhbmRzIjogWwogICAgewogICAgICAiaW5wdXQiOiAwLAogICAgICAibmFtZSI6ICIkMCIKICAgIH0KICBdCn10AApmaWVsZFR5cGVzc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAAF0AANVUkx+cgApb3JnLm9wZW5zZWFyY2guc3FsLmRhdGEudHlwZS5FeHByQ29yZVR5cGUAAAAAAAAAABIAAHhyAA5qYXZhLmxhbmcuRW51bQAAAAAAAAAAEgAAeHB0AAZTVFJJTkd4eA==\"}","lang":"opensearch_compounded_script","params":{"utcTimestamp":1763528471115488000}}}},"c":{"value_count":{"field":"_index"}}}}},"query_plan_ir":"CiUIBBIhL2Z1bmN0aW9uc19hZ2dyZWdhdGVfZ2VuZXJpYy55YW1sCh4IAxIaL2Z1bmN0aW9uc19hcml0aG1ldGljLnlhbWwKGggCEhYvZnVuY3Rpb25zX3N0cmluZy55YW1sCh4IARIaL2Z1bmN0aW9uc19jb21wYXJpc29uLnlhbWwSGxoZCAEQARoRbm90X2VxdWFsOmFueV9hbnkgARIZGhcIARACGg9pc19ub3RfbnVsbDphbnkgARIZGhcIAhADGg9jaGFyX2xlbmd0aDpzdHIgAhIRGg8IAxAEGgdzdW06aTMyIAMSExoRCAQQBRoJY291bnQ6YW55IAQSEBoOCAQQBhoGY291bnQ6IAQSFBoSCAEQBxoKZ3Q6YW55X2FueSABGs4TEssTCqoTGqcTCgIKABKbEyqYEwoCCgASgxMagBMKAgoAEvUSKvISCgIKABLdEhLaEgoCCgASoxI6oBIKCBIGCgQEBQYHEuURIuIRCgIKABKDETqAEQoGEgQKAmlqEs8QEswQCgIKABKrEBKoEAoCCgAS/w8K/A8KAgoAEu0PCgtBZHZFbmdpbmVJRAoDQWdlCg5Ccm93c2VyQ291bnRyeQoPQnJvd3Nlckxhbmd1YWdlCgRDTElECg9DbGllbnRFdmVudFRpbWUKCENsaWVudElQCg5DbGllbnRUaW1lWm9uZQoLQ29kZVZlcnNpb24KDUNvbm5lY3RUaW1pbmcKDENvb2tpZUVuYWJsZQoMQ291bnRlckNsYXNzCglDb3VudGVySUQKCUROU1RpbWluZwoNRG9udENvdW50SGl0cwoJRXZlbnREYXRlCglFdmVudFRpbWUKB0ZVbmlxSUQKC0ZldGNoVGltaW5nCgpGbGFzaE1ham9yCgpGbGFzaE1pbm9yCgtGbGFzaE1pbm9yMgoHRnJvbVRhZwoJR29vZEV2ZW50CgNISUQKCUhUVFBFcnJvcgoISGFzR0NMSUQKDUhpc3RvcnlMZW5ndGgKCEhpdENvbG9yCgtJUE5ldHdvcmtJRAoGSW5jb21lCglJbnRlcmVzdHMKC0lzQXJ0aWZpY2FsCgpJc0Rvd25sb2FkCgdJc0V2ZW50CgZJc0xpbmsKCElzTW9iaWxlCgtJc05vdEJvdW5jZQoMSXNPbGRDb3VudGVyCgtJc1BhcmFtZXRlcgoJSXNSZWZyZXNoCgpKYXZhRW5hYmxlChBKYXZhc2NyaXB0RW5hYmxlCg5Mb2NhbEV2ZW50VGltZQoLTW9iaWxlUGhvbmUKEE1vYmlsZVBob25lTW9kZWwKCE5ldE1ham9yCghOZXRNaW5vcgoCT1MKCk9wZW5lck5hbWUKDE9wZW5zdGF0QWRJRAoST3BlbnN0YXRDYW1wYWlnbklEChNPcGVuc3RhdFNlcnZpY2VOYW1lChBPcGVuc3RhdFNvdXJjZUlECgtPcmlnaW5hbFVSTAoLUGFnZUNoYXJzZXQKDVBhcmFtQ3VycmVuY3kKD1BhcmFtQ3VycmVuY3lJRAoMUGFyYW1PcmRlcklECgpQYXJhbVByaWNlCgZQYXJhbXMKB1JlZmVyZXIKEVJlZmVyZXJDYXRlZ29yeUlECgtSZWZlcmVySGFzaAoPUmVmZXJlclJlZ2lvbklECghSZWdpb25JRAoIUmVtb3RlSVAKD1Jlc29sdXRpb25EZXB0aAoQUmVzb2x1dGlvbkhlaWdodAoPUmVzb2x1dGlvbldpZHRoChFSZXNwb25zZUVuZFRpbWluZwoTUmVzcG9uc2VTdGFydFRpbWluZwoJUm9ib3RuZXNzCg5TZWFyY2hFbmdpbmVJRAoMU2VhcmNoUGhyYXNlCgpTZW5kVGltaW5nCgNTZXgKE1NpbHZlcmxpZ2h0VmVyc2lvbjEKE1NpbHZlcmxpZ2h0VmVyc2lvbjIKE1NpbHZlcmxpZ2h0VmVyc2lvbjMKE1NpbHZlcmxpZ2h0VmVyc2lvbjQKDFNvY2lhbEFjdGlvbgoNU29jaWFsTmV0d29yawoVU29jaWFsU291cmNlTmV0d29ya0lEChBTb2NpYWxTb3VyY2VQYWdlCgVUaXRsZQoOVHJhZmljU291cmNlSUQKA1VSTAoNVVJMQ2F0ZWdvcnlJRAoHVVJMSGFzaAoLVVJMUmVnaW9uSUQKC1VUTUNhbXBhaWduCgpVVE1Db250ZW50CglVVE1NZWRpdW0KCVVUTVNvdXJjZQoHVVRNVGVybQoJVXNlckFnZW50Cg5Vc2VyQWdlbnRNYWpvcgoOVXNlckFnZW50TWlub3IKBlVzZXJJRAoHV2F0Y2hJRAoSV2luZG93Q2xpZW50SGVpZ2h0ChFXaW5kb3dDbGllbnRXaWR0aAoKV2luZG93TmFtZQoIV2l0aEhhc2gShAUKBBoCEAEKBBoCEAEKBGICEAEKBGICEAEKBCoCEAEKB4oCBAgDGAEKBCoCEAEKBBoCEAEKBCoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBCoCEAEKBBoCEAEKB4oCBAgDGAEKB4oCBAgDGAEKBDoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBGICEAEKBBoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBGICEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKB4oCBAgDGAEKBBoCEAEKBGICEAEKBBoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBBoCEAEKBGICEAEKBDoCEAEKBGICEAEKBGICEAEKBBoCEAEKBDoCEAEKBCoCEAEKBCoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBCoCEAEKBBoCEAEKBBoCEAEKBGICEAEKBCoCEAEKBBoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBBoCEAEKBGICEAEKBGICEAEKBBoCEAEKBGICEAEKBGICEAEKBBoCEAEKBGICEAEKBBoCEAEKBDoCEAEKBCoCEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBGICEAEKBBoCEAEKBBoCEAEKBGICEAEKBDoCEAEKBDoCEAEKBBoCEAEKBBoCEAEKBCoCEAEKBBoCEAEYAToGCgRoaXRzGiAaHggBGgQKAhABIgwaChIICgQSAghXIgAiBhoECgJiABoYGhYIAhoECgIQAiIMGgoSCAoEEgIIDCIAGgoSCAoEEgIIDCIAGhgaFggDGgQqAhABIgwaChIICgQSAghXIgAaCgoIEgYKAhIAIgAiHAoaCAQgAyoEOgIQATABOgwaChIICgQSAggBIgAiHAoaCAUgAyoEOgIQAjABOgwaChIICgQSAggBIgAiDgoMCAYgAyoEOgIQAjABGgoSCAoEEgIIASIAGgoSCAoEEgIIAiIAGgoSCAoEEgIIAiIAGggSBgoCEgAiABouGiwIBxoECgIQAiIMGgoSCAoEEgIIASIAIhQaEloQCgQ6AhACEgYKBCigjQYYAhoMCggSBgoCEgAiABAEGAAgGRoMCggSBgoCEgAiABAEGAAgkE4SBWxfc3VtEgdsX2NvdW50EgFjEglDb3VudGVySUQyEhBNKg5zdWJzdHJhaXQtamF2YUIvCAESK2V4dGVuc2lvbjppby5zdWJzdHJhaXQ6ZnVuY3Rpb25zX2NvbXBhcmlzb25CNggEEjJleHRlbnNpb246aW8uc3Vic3RyYWl0OmZ1bmN0aW9uc19hZ2dyZWdhdGVfZ2VuZXJpY0IvCAMSK2V4dGVuc2lvbjppby5zdWJzdHJhaXQ6ZnVuY3Rpb25zX2FyaXRobWV0aWNCKwgCEidleHRlbnNpb246aW8uc3Vic3RyYWl0OmZ1bmN0aW9uc19zdHJpbmc="}

0 commit comments

Comments
 (0)