From 4d7d4818492d8ef012932c268e98bdf1a1a2fc87 Mon Sep 17 00:00:00 2001 From: deegan Date: Wed, 26 Jun 2024 11:12:11 +0200 Subject: [PATCH] next --- .github/workflows/build_nix.yml | 6 +- .github/workflows/build_osx.yml | 8 +- .github/workflows/build_win.yml | 6 +- .gitignore | 2 + .sublime-project.sublime-workspace | 2775 +--------------------------- mkn.yaml | 10 +- mod.cpp => test.cpp | 1 - 7 files changed, 18 insertions(+), 2790 deletions(-) rename mod.cpp => test.cpp (99%) diff --git a/.github/workflows/build_nix.yml b/.github/workflows/build_nix.yml index 2a1816c..ccfba02 100644 --- a/.github/workflows/build_nix.yml +++ b/.github/workflows/build_nix.yml @@ -10,12 +10,12 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - name: "Build/Test" # contains slash so use quotes otherwise UB + - name: "Build/Test" run: | python3 -V curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_nix chmod +x mkn - KLOG=3 ./mkn clean build -p mod -dtOa "-std=c++17 -fPIC" + KLOG=3 ./mkn clean build -p test -dtOa "-std=c++17 -fPIC" python3 py.py diff --git a/.github/workflows/build_osx.yml b/.github/workflows/build_osx.yml index 78571f7..69457c5 100644 --- a/.github/workflows/build_osx.yml +++ b/.github/workflows/build_osx.yml @@ -10,12 +10,12 @@ jobs: build: runs-on: macos-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - name: "Build/Test" # contains slash so use quotes otherwise UB + - name: "Build/Test" run: | python3 -V - curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_osx + curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_arm_osx chmod +x mkn - KLOG=3 ./mkn clean build -p mod -dtOa "-std=c++17 -fPIC" + KLOG=3 ./mkn clean build -p test -dtOa "-std=c++17 -fPIC" python3 py.py diff --git a/.github/workflows/build_win.yml b/.github/workflows/build_win.yml index 86ce3f8..87c56ea 100644 --- a/.github/workflows/build_win.yml +++ b/.github/workflows/build_win.yml @@ -10,13 +10,13 @@ jobs: build: runs-on: windows-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: ilammy/msvc-dev-cmd@v1 with: arch: amd64 - - name: "Build/Test" # contains slash so use quotes otherwise UB + - name: "Build/Test" shell: cmd env: MKN_CL_PREFERRED: 1 @@ -24,5 +24,5 @@ jobs: bash -c "rm /bin/link" bash -c "python3 -V" bash -c "curl -Lo mkn.exe https://github.com/mkn/mkn/releases/download/latest/mkn.exe" - bash -c "KLOG=3 ./mkn clean build -p mod -dtOa "-std:c++17 -EHsc" + bash -c "KLOG=3 ./mkn clean build -p test -dtOa "-std:c++17 -EHsc" bash -c "python3 py.py" diff --git a/.gitignore b/.gitignore index 1ab8592..651e6a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ b bin share +.mkn +my_ext* diff --git a/.sublime-project.sublime-workspace b/.sublime-project.sublime-workspace index b43706b..5a07207 100644 --- a/.sublime-project.sublime-workspace +++ b/.sublime-project.sublime-workspace @@ -1,2776 +1,3 @@ { - "auto_complete": - { - "selected_items": - [ - [ - "srs", - "srcs" - ], - [ - "com", - "components_" - ], - [ - "fie", - "field_names" - ], - [ - "Fiel", - "UserField_t" - ], - [ - "P", - "ParticleArray_t" - ], - [ - "py", - "python_version_from" - ], - [ - "p", - "python_version_from" - ], - [ - "chec", - "check_build_config_is_runtime_compatible" - ], - [ - "bui", - "build_config" - ], - [ - "electrons_", - "electrons_N" - ], - [ - "ele", - "electromag" - ], - [ - "Ion", - "IonUpdater_t" - ], - [ - "V", - "View_t" - ], - [ - "Fara", - "FaradayTransformer" - ], - [ - "par", - "particles_" - ], - [ - "Par", - "Particle_t" - ], - [ - "dec", - "decltype" - ], - [ - "em", - "emplace_back" - ], - [ - "path", - "path_key" - ], - [ - "cma", - "cmake_version_from" - ], - [ - "densit", - "densityName" - ], - [ - "addModel", - "addModelView_" - ], - [ - "add", - "addModel_" - ], - [ - "elec", - "electromag" - ], - [ - "i", - "ions_" - ], - [ - "e", - "electrons" - ], - [ - "PHARE", - "PHARE_LOG_LINE_STR" - ], - [ - "VecF", - "VecFieldND" - ], - [ - "stati", - "static_assert" - ], - [ - "Da", - "DataWrangler" - ], - [ - "n", - "n_parts" - ], - [ - "Ty", - "Type" - ], - [ - "cons", - "constexpr" - ], - [ - "H", - "HybridModelView" - ], - [ - "model_", - "model_views_" - ], - [ - "AMR", - "AMR_Types" - ], - [ - "make_", - "make_shared" - ], - [ - "ph", - "physical_models" - ], - [ - "co", - "conditional_t" - ], - [ - "Particle", - "Particle_t" - ], - [ - "Elec", - "Electromag" - ], - [ - "Pat", - "PatchView_t" - ], - [ - "Hybrid", - "HybridModel_t" - ], - [ - "de", - "density" - ], - [ - "ABO", - "ABORT_IF_NOT" - ], - [ - "PH", - "PHARE_LOG_LINE_STR" - ], - [ - "EX", - "EXPECT_EQ" - ], - [ - "do", - "domain" - ], - [ - "er", - "erase_outside" - ], - [ - "PartI", - "PartIterator" - ], - [ - "PHA", - "PHARE_LOG_LINE_STR" - ], - [ - "is", - "is_in" - ], - [ - "dom", - "domainBox" - ], - [ - "tm", - "tmp_" - ], - [ - "ABORT", - "ABORT_IF_NOT" - ], - [ - "AB", - "ABORT_IF_NOT" - ], - [ - "const_", - "const_iterator" - ], - [ - "PHARE_L", - "PHARE_LOG_LINE_STR" - ], - [ - "dim", - "dimension" - ], - [ - "Con", - "ConstArray" - ], - [ - "PHARE_LOG_", - "PHARE_LOG_LINE_STR" - ], - [ - "his", - "histogram" - ], - [ - "gr", - "grow_for_ghost_box" - ], - [ - "Pa", - "Particle_t" - ], - [ - "ParticleA", - "ParticleArraySorterOperator" - ], - [ - "getCompo", - "getComponentName" - ], - [ - "set", - "setBuffer" - ], - [ - "Part", - "Particle_t" - ], - [ - "AM", - "AMRBox" - ], - [ - "El", - "Electromag" - ], - [ - "deca", - "decay_t" - ], - [ - "upda", - "update_from" - ], - [ - "Box", - "Box1D" - ], - [ - "l", - "load_balancer_name" - ], - [ - "build", - "build_elb_arn" - ], - [ - "ow", - "owner_id" - ], - [ - "wa", - "waf_client" - ], - [ - "re", - "region_name" - ], - [ - "res", - "resource_arn" - ], - [ - "web_", - "web_acl" - ], - [ - "reso", - "resource_id" - ], - [ - "assertGr", - "assertGreaterEqual" - ], - [ - "va", - "valid_keys" - ], - [ - "le", - "levels" - ], - [ - "Nd", - "NdArrayView" - ], - [ - "u", - "unique_ptr" - ], - [ - "time", - "timeStepNbr_" - ], - [ - "Gr", - "GridLayout" - ], - [ - "con", - "constexpr" - ], - [ - "Io", - "IonUpdater" - ], - [ - "make", - "make_unique" - ], - [ - "crea", - "create_data_set_per_mpi" - ], - [ - "for", - "forward_as_tuple" - ], - [ - "apl", - "b_amplitudes" - ], - [ - "test", - "test_dispersion" - ], - [ - "exi", - "exit_code" - ], - [ - "a", - "assertEqual" - ], - [ - "time_s", - "time_step_nbr" - ], - [ - "iC", - "iCell_" - ], - [ - "in", - "initializer" - ], - [ - "forw", - "forward_as_tuple" - ], - [ - "ce", - "cell_map_t" - ], - [ - "c", - "curr_pos" - ], - [ - "ParV", - "ParticleView_const" - ], - [ - "ParticleView", - "ParticleViewBase" - ], - [ - "at", - "atomic_ops" - ], - [ - "inter", - "interpOrder" - ], - [ - "Index", - "IndexWeights" - ], - [ - "flu", - "flux" - ], - [ - "paticles", - "particles" - ], - [ - "Cont", - "ContiguousParticles" - ], - [ - "Vec", - "Vector" - ], - [ - "cu", - "curr_pos" - ], - [ - "outer_", - "outer_type" - ], - [ - "C", - "ContiguousParticles" - ], - [ - "cur", - "curr_pos" - ], - [ - "abort", - "abort_if" - ], - [ - "iter", - "iterator" - ], - [ - "is_", - "is_same_v" - ], - [ - "A", - "AMRBox" - ], - [ - "th", - "thread_ranges_per_pop" - ], - [ - "view", - "views_per_patch" - ], - [ - "G", - "GridLayout" - ], - [ - "Grid", - "GridLayout" - ], - [ - "Ele", - "Electromag" - ], - [ - "n_", - "n_threads" - ], - [ - "S", - "SimulatorFixture" - ], - [ - "Const", - "ConstArray" - ] - ] - }, - "buffers": - [ - { - "file": "m/clang/llvm-mca/master/mod.cpp", - "settings": - { - "buffer_size": 3232, - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 774, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAA1wwAAAAAAADXDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICAvLyBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIC8vIG1rbjo6a3VsOjpGaWxlIHNzc3t0aGlzLT5tYWluXy5uYW1lKCl9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IGhhY2stPmhhY2tfbGluaygpOwogICAgS0xPRyhEQkcpIDw8IHA7CiAgICBwLnN0YXJ0KCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIQIAAAAAAAAhAgAAAAAAAAAAAAAAADwvw" - ], - [ - 778, - 1, - "toggle_comment", - { - "block": false - }, - "AgAAADULAAAAAAAANQsAAAAAAAADAAAALy8gBgsAAAAAAAAGCwAAAAAAAAMAAAAvLyA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEALAAAAAAAAEQsAAAAAAAAAAAAAAABeQA" - ], - [ - 794, - 1, - "paste", - null, - "AgAAAEULAAAAAAAAVgsAAAAAAAAAAAAAVgsAAAAAAABWCwAAAAAAABIAAAB0aGlzLT5tYWluXy5uYW1lKCk", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEULAAAAAAAAVwsAAAAAAAAAAAAAAADwvw" - ], - [ - 795, - 1, - "insert", - { - "characters": "," - }, - "AQAAAFYLAAAAAAAAVwsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFYLAAAAAAAAVgsAAAAAAAAAAAAAAADwvw" - ], - [ - 796, - 1, - "insert", - { - "characters": " tmo" - }, - "BAAAAFcLAAAAAAAAWAsAAAAAAAAAAAAAWAsAAAAAAABZCwAAAAAAAAAAAABZCwAAAAAAAFoLAAAAAAAAAAAAAFoLAAAAAAAAWwsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFcLAAAAAAAAVwsAAAAAAAAAAAAAAADwvw" - ], - [ - 797, - 1, - "left_delete", - null, - "AQAAAFoLAAAAAAAAWgsAAAAAAAABAAAAbw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFsLAAAAAAAAWwsAAAAAAAAAAAAAAADwvw" - ], - [ - 798, - 1, - "insert", - { - "characters": "p" - }, - "AQAAAFoLAAAAAAAAWwsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFoLAAAAAAAAWgsAAAAAAAAAAAAAAADwvw" - ], - [ - 814, - 1, - "insert", - { - "characters": "sss.mini()" - }, - "CwAAALQLAAAAAAAAtQsAAAAAAAAAAAAAtQsAAAAAAAC1CwAAAAAAABEAAABoYWNrLT5oYWNrX2xpbmsoKbULAAAAAAAAtgsAAAAAAAAAAAAAtgsAAAAAAAC3CwAAAAAAAAAAAAC3CwAAAAAAALgLAAAAAAAAAAAAALgLAAAAAAAAuQsAAAAAAAAAAAAAuQsAAAAAAAC6CwAAAAAAAAAAAAC6CwAAAAAAALsLAAAAAAAAAAAAALsLAAAAAAAAvAsAAAAAAAAAAAAAvAsAAAAAAAC9CwAAAAAAAAAAAAC9CwAAAAAAAL4LAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQLAAAAAAAAxQsAAAAAAAAAAAAAAADwvw" - ], - [ - 816, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAzgwAAAAAAADODAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIG1rbjo6a3VsOjpGaWxlIHNzc3toYWNrLT5oYWNrX2xpbmsoKSwgdG1wfTsKCiAgICBta246Omt1bDo6UHJvY2VzcyBweyJsbHZtLW1jYS0xNCJ9OwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgcCA8PCBzc3MubWluaSgpOwogICAgS0xPRyhEQkcpIDw8IHA7CiAgICBwLnN0YXJ0KCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL4LAAAAAAAAvgsAAAAAAAAAAAAAAADwvw" - ], - [ - 821, - 1, - "insert", - { - "characters": "\nL:" - }, - "BQAAAA8KAAAAAAAAEAoAAAAAAAAAAAAAEAoAAAAAAAAWCgAAAAAAAAAAAAAWCgAAAAAAABgKAAAAAAAAAAAAABgKAAAAAAAAGQoAAAAAAAAAAAAAGQoAAAAAAAAaCgAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAA8KAAAAAAAADwoAAAAAAAD////////vfw" - ], - [ - 822, - 2, - "left_delete", - null, - "AgAAABkKAAAAAAAAGQoAAAAAAAABAAAAOhgKAAAAAAAAGAoAAAAAAAABAAAATA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABoKAAAAAAAAGgoAAAAAAAAAAAAAAADwvw" - ], - [ - 823, - 1, - "insert", - { - "characters": "KLOG)" - }, - "BQAAABgKAAAAAAAAGQoAAAAAAAAAAAAAGQoAAAAAAAAaCgAAAAAAAAAAAAAaCgAAAAAAABsKAAAAAAAAAAAAABsKAAAAAAAAHAoAAAAAAAAAAAAAHAoAAAAAAAAdCgAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABgKAAAAAAAAGAoAAAAAAAAAAAAAAADwvw" - ], - [ - 824, - 1, - "left_delete", - null, - "AQAAABwKAAAAAAAAHAoAAAAAAAABAAAAKQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAB0KAAAAAAAAHQoAAAAAAAAAAAAAAADwvw" - ], - [ - 825, - 1, - "insert", - { - "characters": ")INF" - }, - "BAAAABwKAAAAAAAAHQoAAAAAAAAAAAAAHQoAAAAAAAAeCgAAAAAAAAAAAAAeCgAAAAAAAB8KAAAAAAAAAAAAAB8KAAAAAAAAIAoAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABwKAAAAAAAAHAoAAAAAAAAAAAAAAADwvw" - ], - [ - 826, - 4, - "left_delete", - null, - "BAAAAB8KAAAAAAAAHwoAAAAAAAABAAAARh4KAAAAAAAAHgoAAAAAAAABAAAATh0KAAAAAAAAHQoAAAAAAAABAAAASRwKAAAAAAAAHAoAAAAAAAABAAAAKQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACAKAAAAAAAAIAoAAAAAAAAAAAAAAADwvw" - ], - [ - 827, - 1, - "insert", - { - "characters": "(INF);" - }, - "BgAAABwKAAAAAAAAHQoAAAAAAAAAAAAAHQoAAAAAAAAeCgAAAAAAAAAAAAAeCgAAAAAAAB8KAAAAAAAAAAAAAB8KAAAAAAAAIAoAAAAAAAAAAAAAIAoAAAAAAAAhCgAAAAAAAAAAAAAhCgAAAAAAACIKAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABwKAAAAAAAAHAoAAAAAAAAAAAAAAADwvw" - ], - [ - 829, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAA3QwAAAAAAADhDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgICAgIEtMT0coSU5GKTsKICAgIHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSktPmhhY2soKTsKICB9CgogIHZvaWQgbGluayhtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIEFwcEhhY2sgKmhhY2sgPSByZWludGVycHJldF9jYXN0PEFwcEhhY2sgKj4oJmEpOwogICAgaWYgKCFoYWNrLT52YWxpZCgpKQogICAgICByZXR1cm47CgogICAgbWtuOjprdWw6OkRpciB0bXB7InRtcCIsIGEuYnVpbGREaXIoKX07CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIG1rbjo6a3VsOjpQcm9jZXNzQ2FwdHVyZSBwY3twfTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIEtMT0coREJHKSA8PCBwOwogICAgcC5zdGFydCgpOwogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACIKAAAAAAAAIgoAAAAAAAAAAAAAAADwvw" - ], - [ - 834, - 1, - "insert", - { - "characters": "\n" - }, - "AwAAALQKAAAAAAAAtQoAAAAAAAAAAAAAtQoAAAAAAAC7CgAAAAAAAAAAAAC7CgAAAAAAAL0KAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALQKAAAAAAAAtAoAAAAAAAD////////vfw" - ], - [ - 835, - 1, - "paste", - null, - "AQAAAL0KAAAAAAAAxwoAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAL0KAAAAAAAAvQoAAAAAAAAAAAAAAADwvw" - ], - [ - 837, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAA7AwAAAAAAADwDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgICAgIEtMT0coSU5GKTsKICAgIEFwcEhhY2sgKmhhY2sgPSByZWludGVycHJldF9jYXN0PEFwcEhhY2sgKj4oJmEpOwogICAgaWYgKCFoYWNrLT52YWxpZCgpKQogICAgICByZXR1cm47CgogICAgbWtuOjprdWw6OkRpciB0bXB7InRtcCIsIGEuYnVpbGREaXIoKX07CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIG1rbjo6a3VsOjpQcm9jZXNzQ2FwdHVyZSBwY3twfTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIEtMT0coREJHKSA8PCBwOwogICAgcC5zdGFydCgpOwogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMcKAAAAAAAAxwoAAAAAAAAAAAAAAADwvw" - ], - [ - 840, - 1, - "toggle_comment", - { - "block": false - }, - "BQAAAKYJAAAAAAAAqQkAAAAAAAAAAAAAcwkAAAAAAAB2CQAAAAAAAAAAAABZCQAAAAAAAFwJAAAAAAAAAAAAADEJAAAAAAAANAkAAAAAAAAAAAAA9QgAAAAAAAD4CAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKcJAAAAAAAAAQkAAAAAAAAAAAAAAABcQA" - ], - [ - 842, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAA+wwAAAAAAAD7DAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIG1rbjo6a3VsOjpGaWxlIHNzc3toYWNrLT5oYWNrX2xpbmsoKSwgdG1wfTsKCiAgICBta246Omt1bDo6UHJvY2VzcyBweyJsbHZtLW1jYS0xNCJ9OwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgcCA8PCBzc3MubWluaSgpOwogICAgS0xPRyhEQkcpIDw8IHA7CiAgICBwLnN0YXJ0KCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYJAAAAAAAABAkAAAAAAAAAAAAAAADwvw" - ], - [ - 847, - 1, - "swap_line_down", - null, - "AgAAAAgLAAAAAAAAFwsAAAAAAAAAAAAAxAoAAAAAAADECgAAAAAAAA8AAAAgICAgS0xPRyhJTkYpOwo", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANIKAAAAAAAA0goAAAAAAAAAAAAAAABcQA" - ], - [ - 860, - 1, - "insert", - { - "characters": " <<" - }, - "AwAAAAYLAAAAAAAABwsAAAAAAAAAAAAABwsAAAAAAAAICwAAAAAAAAAAAAAICwAAAAAAAAkLAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAYLAAAAAAAABgsAAAAAAAAAAAAAAADwvw" - ], - [ - 861, - 1, - "insert", - { - "characters": " " - }, - "AQAAAAkLAAAAAAAACgsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAkLAAAAAAAACQsAAAAAAAAAAAAAAADwvw" - ], - [ - 862, - 1, - "paste", - null, - "AQAAAAoLAAAAAAAAFwsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAAoLAAAAAAAACgsAAAAAAAAAAAAAAADwvw" - ], - [ - 864, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAADA0AAAAAAAAMDQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKERCRykgPDwgcDsKICAgIHAuc3RhcnQoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABcLAAAAAAAAFwsAAAAAAAAAAAAAAADwvw" - ], - [ - 871, - 1, - "reindent", - null, - "AQAAAD8LAAAAAAAAQwsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD8LAAAAAAAAPwsAAAAAAAAAAAAAAABvQA" - ], - [ - 872, - 1, - "paste", - null, - "AQAAAEMLAAAAAAAAXgsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEMLAAAAAAAAQwsAAAAAAAAAAAAAAADwvw" - ], - [ - 874, - 1, - "insert", - { - "characters": "\n" - }, - "BAAAAD4LAAAAAAAAPwsAAAAAAAAAAAAAPwsAAAAAAABFCwAAAAAAAAAAAAA/CwAAAAAAAD8LAAAAAAAABgAAACAgICAgID8LAAAAAAAAQwsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAD4LAAAAAAAAPgsAAAAAAAAAAAAAAABvQA" - ], - [ - 877, - 1, - "insert", - { - "characters": "\n" - }, - "AwAAAGMLAAAAAAAAZAsAAAAAAAAAAAAAZAsAAAAAAABoCwAAAAAAAAAAAAA/CwAAAAAAAD8LAAAAAAAABAAAACAgICA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGMLAAAAAAAAYwsAAAAAAAD////////vfw" - ], - [ - 878, - 1, - "trim_trailing_white_space", - null, - "AQAAAGALAAAAAAAAYAsAAAAAAAAEAAAAICAgIA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGQLAAAAAAAAZAsAAAAAAAAAAAAAAADwvw" - ], - [ - 879, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAALQ0AAAAAAAAtDQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKERCRykgPDwgcDsKICAgIHAuc3RhcnQoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGALAAAAAAAAYAsAAAAAAAAAAAAAAADwvw" - ], - [ - 886, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAIwLAAAAAAAAjQsAAAAAAAAAAAAAjQsAAAAAAACRCwAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwLAAAAAAAAjAsAAAAAAAD////////vfw" - ], - [ - 887, - 1, - "paste", - null, - "AQAAAJELAAAAAAAArAsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAJELAAAAAAAAkQsAAAAAAAAAAAAAAADwvw" - ], - [ - 890, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAANwLAAAAAAAA3QsAAAAAAAAAAAAA3QsAAAAAAADhCwAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANwLAAAAAAAA3AsAAAAAAAD////////vfw" - ], - [ - 891, - 1, - "paste", - null, - "AQAAAOELAAAAAAAA/AsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOELAAAAAAAA4QsAAAAAAAAAAAAAAADwvw" - ], - [ - 894, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAACUMAAAAAAAAJgwAAAAAAAAAAAAAJgwAAAAAAAAqDAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACUMAAAAAAAAJQwAAAAAAAD////////vfw" - ], - [ - 895, - 1, - "paste", - null, - "AQAAACoMAAAAAAAARQwAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACoMAAAAAAAAKgwAAAAAAAAAAAAAAADwvw" - ], - [ - 898, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAGkMAAAAAAAAagwAAAAAAAAAAAAAagwAAAAAAABuDAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGkMAAAAAAAAaQwAAAAAAAD////////vfw" - ], - [ - 899, - 1, - "paste", - null, - "AQAAAG4MAAAAAAAAiQwAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG4MAAAAAAAAbgwAAAAAAAAAAAAAAADwvw" - ], - [ - 905, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAMEMAAAAAAAAwgwAAAAAAAAAAAAAwgwAAAAAAADGDAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMEMAAAAAAAAwQwAAAAAAAD////////vfw" - ], - [ - 906, - 1, - "paste", - null, - "AQAAAMYMAAAAAAAA4QwAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMYMAAAAAAAAxgwAAAAAAAAAAAAAAADwvw" - ], - [ - 908, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAzQ0AAAAAAADNDQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKCiAgICBta246Omt1bDo6UHJvY2VzcyBweyJsbHZtLW1jYS0xNCJ9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIEtMT0coREJHKSA8PCBwOwogICAgcC5zdGFydCgpOwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOEMAAAAAAAA4QwAAAAAAAAAAAAAAADwvw" - ], - [ - 916, - 1, - "paste", - null, - "AgAAAKgMAAAAAAAAqwwAAAAAAAAAAAAAqwwAAAAAAACrDAAAAAAAAAMAAABEQkc", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKgMAAAAAAAAqwwAAAAAAAAAAAAAAADwvw" - ], - [ - 918, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAzQ0AAAAAAADNDQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKCiAgICBta246Omt1bDo6UHJvY2VzcyBweyJsbHZtLW1jYS0xNCJ9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIEtMT0coSU5GKSA8PCBwOwogICAgcC5zdGFydCgpOwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKsMAAAAAAAAqwwAAAAAAAAAAAAAAADwvw" - ], - [ - 928, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAF8LAAAAAAAAYAsAAAAAAAAAAAAAYAsAAAAAAABkCwAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF8LAAAAAAAAXwsAAAAAAAD////////vfw" - ], - [ - 929, - 1, - "paste", - null, - "AQAAAGQLAAAAAAAAiwsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGQLAAAAAAAAZAsAAAAAAAAAAAAAAADwvw" - ], - [ - 934, - 1, - "insert", - { - "characters": "res" - }, - "BAAAAHILAAAAAAAAcwsAAAAAAAAAAAAAcwsAAAAAAABzCwAAAAAAAAMAAAB0bXBzCwAAAAAAAHQLAAAAAAAAAAAAAHQLAAAAAAAAdQsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHILAAAAAAAAdQsAAAAAAAAAAAAAAADwvw" - ], - [ - 937, - 1, - "insert", - { - "characters": "res" - }, - "BAAAAHcLAAAAAAAAeAsAAAAAAAAAAAAAeAsAAAAAAAB4CwAAAAAAAAMAAAB0bXB4CwAAAAAAAHkLAAAAAAAAAAAAAHkLAAAAAAAAegsAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHcLAAAAAAAAegsAAAAAAAAAAAAAAADwvw" - ], - [ - 939, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAA+Q0AAAAAAAD5DQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CgogICAgbWtuOjprdWw6OkRpciB0bXB7InRtcCIsIGEuYnVpbGREaXIoKX07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIG1rbjo6a3VsOjpGaWxlIHNzc3toYWNrLT5oYWNrX2xpbmsoKSwgdG1wfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIG1rbjo6a3VsOjpQcm9jZXNzQ2FwdHVyZSBwY3twfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgcCA8PCBzc3MubWluaSgpOwogICAgS0xPRyhJTkYpIDw8IHA7CiAgICBwLnN0YXJ0KCk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHoLAAAAAAAAegsAAAAAAAAAAAAAAADwvw" - ], - [ - 941, - 1, - "insert", - { - "characters": "\nres.mk();" - }, - "CwAAAIsLAAAAAAAAjAsAAAAAAAAAAAAAjAsAAAAAAACQCwAAAAAAAAAAAACQCwAAAAAAAJELAAAAAAAAAAAAAJELAAAAAAAAkgsAAAAAAAAAAAAAkgsAAAAAAACTCwAAAAAAAAAAAACTCwAAAAAAAJQLAAAAAAAAAAAAAJQLAAAAAAAAlQsAAAAAAAAAAAAAlQsAAAAAAACWCwAAAAAAAAAAAACWCwAAAAAAAJcLAAAAAAAAAAAAAJcLAAAAAAAAmAsAAAAAAAAAAAAAmAsAAAAAAACZCwAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIsLAAAAAAAAiwsAAAAAAAD////////vfw" - ], - [ - 944, - 1, - "insert", - { - "characters": "\n\nmkn" - }, - "CAAAABsNAAAAAAAAHA0AAAAAAAAAAAAAHA0AAAAAAAAgDQAAAAAAAAAAAAAgDQAAAAAAACENAAAAAAAAAAAAACENAAAAAAAAJQ0AAAAAAAAAAAAAHA0AAAAAAAAcDQAAAAAAAAQAAAAgICAgIQ0AAAAAAAAiDQAAAAAAAAAAAAAiDQAAAAAAACMNAAAAAAAAAAAAACMNAAAAAAAAJA0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABsNAAAAAAAAGw0AAAAAAAAAAAAAAADwvw" - ], - [ - 945, - 1, - "insert", - { - "characters": "::kuLL" - }, - "BgAAACQNAAAAAAAAJQ0AAAAAAAAAAAAAJQ0AAAAAAAAmDQAAAAAAAAAAAAAmDQAAAAAAACcNAAAAAAAAAAAAACcNAAAAAAAAKA0AAAAAAAAAAAAAKA0AAAAAAAApDQAAAAAAAAAAAAApDQAAAAAAACoNAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACQNAAAAAAAAJA0AAAAAAAAAAAAAAADwvw" - ], - [ - 946, - 2, - "left_delete", - null, - "AgAAACkNAAAAAAAAKQ0AAAAAAAABAAAATCgNAAAAAAAAKA0AAAAAAAABAAAATA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACoNAAAAAAAAKg0AAAAAAAAAAAAAAADwvw" - ], - [ - 947, - 1, - "insert", - { - "characters": "l::io::Writ" - }, - "CwAAACgNAAAAAAAAKQ0AAAAAAAAAAAAAKQ0AAAAAAAAqDQAAAAAAAAAAAAAqDQAAAAAAACsNAAAAAAAAAAAAACsNAAAAAAAALA0AAAAAAAAAAAAALA0AAAAAAAAtDQAAAAAAAAAAAAAtDQAAAAAAAC4NAAAAAAAAAAAAAC4NAAAAAAAALw0AAAAAAAAAAAAALw0AAAAAAAAwDQAAAAAAAAAAAAAwDQAAAAAAADENAAAAAAAAAAAAADENAAAAAAAAMg0AAAAAAAAAAAAAMg0AAAAAAAAzDQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACgNAAAAAAAAKA0AAAAAAAAAAAAAAADwvw" - ], - [ - 948, - 1, - "insert", - { - "characters": "er()" - }, - "BAAAADMNAAAAAAAANA0AAAAAAAAAAAAANA0AAAAAAAA1DQAAAAAAAAAAAAA1DQAAAAAAADYNAAAAAAAAAAAAADYNAAAAAAAANw0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADMNAAAAAAAAMw0AAAAAAAAAAAAAAADwvw" - ], - [ - 951, - 1, - "reindent", - null, - "AQAAABwNAAAAAAAAIA0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABwNAAAAAAAAHA0AAAAAAAAAAAAAAABpQA" - ], - [ - 952, - 1, - "insert", - { - "characters": "\n" - }, - "AwAAACANAAAAAAAAIQ0AAAAAAAAAAAAAIQ0AAAAAAAAlDQAAAAAAAAAAAAAcDQAAAAAAABwNAAAAAAAABAAAACAgICA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACANAAAAAAAAIA0AAAAAAAAAAAAAAADwvw" - ], - [ - 960, - 1, - "paste", - null, - "AQAAACENAAAAAAAAQA0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAACENAAAAAAAAIQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 962, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAARg4AAAAAAABHDgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVyKCkKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEANAAAAAAAAQA0AAAAAAAAAAAAAAADwvw" - ], - [ - 967, - 1, - "insert", - { - "characters": "outfile" - }, - "CAAAADANAAAAAAAAMQ0AAAAAAAAAAAAAMQ0AAAAAAAAxDQAAAAAAAAQAAABmaWxlMQ0AAAAAAAAyDQAAAAAAAAAAAAAyDQAAAAAAADMNAAAAAAAAAAAAADMNAAAAAAAANA0AAAAAAAAAAAAANA0AAAAAAAA1DQAAAAAAAAAAAAA1DQAAAAAAADYNAAAAAAAAAAAAADYNAAAAAAAANw0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADANAAAAAAAANA0AAAAAAAAAAAAAAADwvw" - ], - [ - 987, - 1, - "insert", - { - "characters": "!\"" - }, - "AwAAADgNAAAAAAAAOQ0AAAAAAAAAAAAAOQ0AAAAAAAA5DQAAAAAAAAgAAABmaWxlbmFtZTkNAAAAAAAAOg0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADgNAAAAAAAAQA0AAAAAAAAAAAAAAADwvw" - ], - [ - 989, - 1, - "right_delete", - null, - "AQAAADgNAAAAAAAAOA0AAAAAAAABAAAAIQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADgNAAAAAAAAOA0AAAAAAAAAAAAAAADwvw" - ], - [ - 991, - 1, - "paste", - null, - "AQAAADkNAAAAAAAAQQ0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAADkNAAAAAAAAOQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 992, - 1, - "insert", - { - "characters": "\"" - }, - "AQAAAEENAAAAAAAAQg0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEENAAAAAAAAQQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 994, - 1, - "insert", - { - "characters": ".txt\"" - }, - "BQAAAEENAAAAAAAAQg0AAAAAAAAAAAAAQg0AAAAAAABDDQAAAAAAAAAAAABDDQAAAAAAAEQNAAAAAAAAAAAAAEQNAAAAAAAARQ0AAAAAAAAAAAAARQ0AAAAAAABGDQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEENAAAAAAAAQQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 995, - 1, - "left_delete", - null, - "AQAAAEUNAAAAAAAARQ0AAAAAAAABAAAAIg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEYNAAAAAAAARg0AAAAAAAAAAAAAAADwvw" - ], - [ - 997, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAATw4AAAAAAABPDgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpGaWxlIG91dGZpbGV7Imxsdm0tbWNhLnR4dCJ9OwogICAgbWtuOjprdWw6OmlvOjpXcml0ZXIoKQogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEUNAAAAAAAARQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 1002, - 1, - "insert", - { - "characters": "," - }, - "AQAAAEYNAAAAAAAARw0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEYNAAAAAAAARg0AAAAAAAAAAAAAAADwvw" - ], - [ - 1003, - 1, - "insert", - { - "characters": " res" - }, - "BAAAAEcNAAAAAAAASA0AAAAAAAAAAAAASA0AAAAAAABJDQAAAAAAAAAAAABJDQAAAAAAAEoNAAAAAAAAAAAAAEoNAAAAAAAASw0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEcNAAAAAAAARw0AAAAAAAAAAAAAAADwvw" - ], - [ - 1008, - 1, - "insert", - { - "characters": " writer" - }, - "BwAAAGYNAAAAAAAAZw0AAAAAAAAAAAAAZw0AAAAAAABoDQAAAAAAAAAAAABoDQAAAAAAAGkNAAAAAAAAAAAAAGkNAAAAAAAAag0AAAAAAAAAAAAAag0AAAAAAABrDQAAAAAAAAAAAABrDQAAAAAAAGwNAAAAAAAAAAAAAGwNAAAAAAAAbQ0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYNAAAAAAAAZg0AAAAAAAAAAAAAAADwvw" - ], - [ - 1010, - 1, - "insert", - { - "characters": "ot" - }, - "AgAAAG4NAAAAAAAAbw0AAAAAAAAAAAAAbw0AAAAAAABwDQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG4NAAAAAAAAbg0AAAAAAAAAAAAAAADwvw" - ], - [ - 1011, - 1, - "left_delete", - null, - "AQAAAG8NAAAAAAAAbw0AAAAAAAABAAAAdA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHANAAAAAAAAcA0AAAAAAAAAAAAAAADwvw" - ], - [ - 1012, - 1, - "insert", - { - "characters": "utfile" - }, - "BgAAAG8NAAAAAAAAcA0AAAAAAAAAAAAAcA0AAAAAAABxDQAAAAAAAAAAAABxDQAAAAAAAHINAAAAAAAAAAAAAHINAAAAAAAAcw0AAAAAAAAAAAAAcw0AAAAAAAB0DQAAAAAAAAAAAAB0DQAAAAAAAHUNAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8NAAAAAAAAbw0AAAAAAAAAAAAAAADwvw" - ], - [ - 1014, - 1, - "insert", - { - "characters": ";" - }, - "AQAAAHYNAAAAAAAAdw0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHYNAAAAAAAAdg0AAAAAAAD////////vfw" - ], - [ - 1015, - 1, - "insert", - { - "characters": "\nwriter" - }, - "CAAAAHcNAAAAAAAAeA0AAAAAAAAAAAAAeA0AAAAAAAB8DQAAAAAAAAAAAAB8DQAAAAAAAH0NAAAAAAAAAAAAAH0NAAAAAAAAfg0AAAAAAAAAAAAAfg0AAAAAAAB/DQAAAAAAAAAAAAB/DQAAAAAAAIANAAAAAAAAAAAAAIANAAAAAAAAgQ0AAAAAAAAAAAAAgQ0AAAAAAACCDQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHcNAAAAAAAAdw0AAAAAAAAAAAAAAADwvw" - ], - [ - 1016, - 1, - "insert", - { - "characters": " <<" - }, - "AwAAAIINAAAAAAAAgw0AAAAAAAAAAAAAgw0AAAAAAACEDQAAAAAAAAAAAACEDQAAAAAAAIUNAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIINAAAAAAAAgg0AAAAAAAAAAAAAAADwvw" - ], - [ - 1017, - 1, - "insert", - { - "characters": " ;" - }, - "AgAAAIUNAAAAAAAAhg0AAAAAAAAAAAAAhg0AAAAAAACHDQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIUNAAAAAAAAhQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 1019, - 1, - "insert", - { - "characters": "p.out()_" - }, - "CAAAAIYNAAAAAAAAhw0AAAAAAAAAAAAAhw0AAAAAAACIDQAAAAAAAAAAAACIDQAAAAAAAIkNAAAAAAAAAAAAAIkNAAAAAAAAig0AAAAAAAAAAAAAig0AAAAAAACLDQAAAAAAAAAAAACLDQAAAAAAAIwNAAAAAAAAAAAAAIwNAAAAAAAAjQ0AAAAAAAAAAAAAjQ0AAAAAAACODQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIYNAAAAAAAAhg0AAAAAAAAAAAAAAADwvw" - ], - [ - 1020, - 1, - "left_delete", - null, - "AQAAAI0NAAAAAAAAjQ0AAAAAAAABAAAAXw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI4NAAAAAAAAjg0AAAAAAAAAAAAAAADwvw" - ], - [ - 1022, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAeg4AAAAAAAB6DgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpGaWxlIG91dGZpbGV7Imxsdm0tbWNhLnR4dCIsIHJlc307CiAgICBta246Omt1bDo6aW86OldyaXRlciB3cml0ZXIob3V0ZmlsZSk7CiAgICB3cml0ZXIgPDwgcC5vdXQoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0NAAAAAAAAjQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 1025, - 1, - "insert", - { - "characters": "c" - }, - "AQAAAIcNAAAAAAAAiA0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIcNAAAAAAAAhw0AAAAAAAAAAAAAAADwvw" - ], - [ - 1027, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAew4AAAAAAAB7DgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpGaWxlIG91dGZpbGV7Imxsdm0tbWNhLnR4dCIsIHJlc307CiAgICBta246Omt1bDo6aW86OldyaXRlciB3cml0ZXIob3V0ZmlsZSk7CiAgICB3cml0ZXIgPDwgcGMub3V0KCk7CiAgfQp9OwoKfSAvLyBuYW1lc3BhY2UgbWtuOjpjbGFuZwoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCBtYWlrZW46Ok1vZHVsZSAqbWFpa2VuX21vZHVsZV9jb25zdHJ1Y3QoKSB7CiAgcmV0dXJuIG5ldyBta24gOjpjbGFuZyA6OkxMVk1fTUNBX01vZHVsZTsKfQoKZXh0ZXJuICJDIiBLVUxfUFVCTElTSCB2b2lkIG1haWtlbl9tb2R1bGVfZGVzdHJ1Y3QobWFpa2VuOjpNb2R1bGUgKnApIHsKICBkZWxldGUgcDsKfQo", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIgNAAAAAAAAiA0AAAAAAAAAAAAAAADwvw" - ], - [ - 1029, - 1, - "insert", - { - "characters": "s" - }, - "AQAAAIwNAAAAAAAAjQ0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIwNAAAAAAAAjA0AAAAAAAAAAAAAAADwvw" - ], - [ - 1031, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAfA4AAAAAAAB8DgAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBLTE9HKElORikgPDwgaGFjay0+dmFsaWQoKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkRpciByZXN7InJlcyIsIGEuYnVpbGREaXIoKX07CiAgICByZXMubWsoKTsKCiAgICBta246Omt1bDo6RGlyIHRtcHsidG1wIiwgYS5idWlsZERpcigpfTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwogICAgbWtuOjprdWw6OlByb2Nlc3NDYXB0dXJlIHBje3B9OwogICAgS0xPRyhJTkYpIDw8IGhhY2stPnZhbGlkKCk7CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBLTE9HKElORikgPDwgcDsKICAgIHAuc3RhcnQoKTsKICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOwoKICAgIG1rbjo6a3VsOjpGaWxlIG91dGZpbGV7Imxsdm0tbWNhLnR4dCIsIHJlc307CiAgICBta246Omt1bDo6aW86OldyaXRlciB3cml0ZXIob3V0ZmlsZSk7CiAgICB3cml0ZXIgPDwgcGMub3V0cygpOwogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAI0NAAAAAAAAjQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 1036, - 1, - "right_delete", - null, - "AQAAAGYNAAAAAAAAZg0AAAAAAAAHAAAAIHdyaXRlcg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYNAAAAAAAAbQ0AAAAAAAAAAAAAAADwvw" - ], - [ - 1038, - 1, - "insert", - { - "characters": "{}" - }, - "AwAAAGYNAAAAAAAAZw0AAAAAAAAAAAAAZw0AAAAAAABnDQAAAAAAAAEAAAAoZw0AAAAAAABoDQAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGYNAAAAAAAAZw0AAAAAAAAAAAAAAADwvw" - ], - [ - 1040, - 1, - "cut", - null, - "AQAAAGgNAAAAAAAAaA0AAAAAAAAHAAAAb3V0ZmlsZQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGgNAAAAAAAAbw0AAAAAAAAAAAAAAADwvw" - ], - [ - 1041, - 1, - "right_delete", - null, - "AQAAAGgNAAAAAAAAaA0AAAAAAAABAAAAKQ", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGgNAAAAAAAAaA0AAAAAAAAAAAAAAADwvw" - ], - [ - 1043, - 1, - "paste", - null, - "AQAAAGcNAAAAAAAAbg0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGcNAAAAAAAAZw0AAAAAAAAAAAAAAADwvw" - ], - [ - 1050, - 1, - "cut", - null, - "AQAAAHwNAAAAAAAAfA0AAAAAAAAMAAAAPDwgcGMub3V0cygp", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHwNAAAAAAAAiA0AAAAAAAAAAAAAAADwvw" - ], - [ - 1053, - 1, - "left_delete", - null, - "AQAAAG8NAAAAAAAAbw0AAAAAAAABAAAAOw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHANAAAAAAAAcA0AAAAAAAD////////vfw" - ], - [ - 1054, - 1, - "insert", - { - "characters": " " - }, - "AQAAAG8NAAAAAAAAcA0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAG8NAAAAAAAAbw0AAAAAAAAAAAAAAADwvw" - ], - [ - 1055, - 1, - "paste", - null, - "AQAAAHANAAAAAAAAfA0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHANAAAAAAAAcA0AAAAAAAAAAAAAAADwvw" - ], - [ - 1059, - 1, - "insert", - { - "characters": ";" - }, - "AQAAAHwNAAAAAAAAfQ0AAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAHwNAAAAAAAAfA0AAAAAAAD////////vfw" - ], - [ - 1062, - 2, - "right_delete", - null, - "AgAAAH4NAAAAAAAAfg0AAAAAAAAMAAAAICAgIHdyaXRlciA7fg0AAAAAAAB+DQAAAAAAAAEAAAAK", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAIoNAAAAAAAAfg0AAAAAAAAAAAAAAAAAAA" - ], - [ - 1065, - 1, - "cut", - null, - "AQAAAPwMAAAAAAAA/AwAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPwMAAAAAAAAGw0AAAAAAAD////////vfw" - ], - [ - 1066, - 1, - "right_delete", - null, - "AQAAAPwMAAAAAAAA/AwAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPwMAAAAAAAA/AwAAAAAAAAAAAAAAADwvw" - ], - [ - 1069, - 1, - "cut", - null, - "AQAAANkMAAAAAAAA2QwAAAAAAAATAAAAICAgIEtMT0coSU5GKSA8PCBwOw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANkMAAAAAAAA7AwAAAAAAAD////////vfw" - ], - [ - 1070, - 1, - "right_delete", - null, - "AQAAANkMAAAAAAAA2QwAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAANkMAAAAAAAA2QwAAAAAAAAAAAAAAADwvw" - ], - [ - 1073, - 1, - "cut", - null, - "AQAAAKQMAAAAAAAApAwAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKQMAAAAAAAAwwwAAAAAAAD////////vfw" - ], - [ - 1074, - 1, - "right_delete", - null, - "AQAAAKQMAAAAAAAApAwAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAKQMAAAAAAAApAwAAAAAAAAAAAAAAADwvw" - ], - [ - 1078, - 2, - "right_delete", - null, - "AgAAAGAMAAAAAAAAYAwAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpO2AMAAAAAAAAYAwAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGAMAAAAAAAAfwwAAAAAAAD////////vfw" - ], - [ - 1081, - 1, - "cut", - null, - "AQAAABcMAAAAAAAAFwwAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABcMAAAAAAAANgwAAAAAAAD////////vfw" - ], - [ - 1082, - 1, - "right_delete", - null, - "AQAAABcMAAAAAAAAFwwAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAABcMAAAAAAAAFwwAAAAAAAAAAAAAAADwvw" - ], - [ - 1085, - 1, - "cut", - null, - "AQAAAMcLAAAAAAAAxwsAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMcLAAAAAAAA5gsAAAAAAAD////////vfw" - ], - [ - 1086, - 1, - "right_delete", - null, - "AQAAAMcLAAAAAAAAxwsAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAMcLAAAAAAAAxwsAAAAAAAAAAAAAAADwvw" - ], - [ - 1089, - 1, - "cut", - null, - "AQAAAEALAAAAAAAAQAsAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEALAAAAAAAAXwsAAAAAAAD////////vfw" - ], - [ - 1090, - 1, - "right_delete", - null, - "AQAAAEALAAAAAAAAQAsAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAEALAAAAAAAAQAsAAAAAAAAAAAAAAADwvw" - ], - [ - 1093, - 1, - "cut", - null, - "AQAAAPkKAAAAAAAA+QoAAAAAAAAfAAAAICAgIEtMT0coSU5GKSA8PCBoYWNrLT52YWxpZCgpOw", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPkKAAAAAAAAGAsAAAAAAAD////////vfw" - ], - [ - 1094, - 1, - "right_delete", - null, - "AQAAAPkKAAAAAAAA+QoAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPkKAAAAAAAA+QoAAAAAAAAAAAAAAADwvw" - ], - [ - 1096, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAdQ0AAAAAAAB1DQAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgogIC8vIHZvaWQgaW5pdChtYWlrZW46OkFwcGxpY2F0aW9uICZhLCBZQU1MOjpOb2RlIGNvbnN0ICZub2RlKQogIC8vICAgICBLVEhST1coc3RkOjpleGNlcHRpb24pIG92ZXJyaWRlIHsKICAvLyAgIC8vIGEuYnVpbGREaXIoKS5taygpOwogIC8vICAgLy8gLy8gbWtuOjprdWw6OkRpcnsicmVzIiwgYS5idWlsZERpcigpfS5taygpOwogIC8vIH0KCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPkKAAAAAAAA+QoAAAAAAAAAAAAAAADwvw" - ], - [ - 1099, - 1, - "cut", - null, - "AQAAAPMIAAAAAAAA8wgAAAAAAADDAAAAICAvLyB2b2lkIGluaXQobWFpa2VuOjpBcHBsaWNhdGlvbiAmYSwgWUFNTDo6Tm9kZSBjb25zdCAmbm9kZSkKICAvLyAgICAgS1RIUk9XKHN0ZDo6ZXhjZXB0aW9uKSBvdmVycmlkZSB7CiAgLy8gICAvLyBhLmJ1aWxkRGlyKCkubWsoKTsKICAvLyAgIC8vIC8vIG1rbjo6a3VsOjpEaXJ7InJlcyIsIGEuYnVpbGREaXIoKX0ubWsoKTsKICAvLyB9", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAALYJAAAAAAAA8wgAAAAAAAAAAAAAAADwvw" - ], - [ - 1101, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAsAwAAAAAAACyDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKcHVibGljOgoKCiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAPMIAAAAAAAA8wgAAAAAAAAAAAAAAADwvw" - ], - [ - 1103, - 1, - "right_delete", - null, - "AQAAAOoIAAAAAAAA6ggAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAABIQA" - ], - [ - 1105, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAArwwAAAAAAACvDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewpwdWJsaWM6CiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAADwvw" - ], - [ - 1106, - 1, - "insert", - { - "characters": "\n\n" - }, - "AgAAAOoIAAAAAAAA6wgAAAAAAAAAAAAA6wgAAAAAAADsCAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAADwvw" - ], - [ - 1108, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAsAwAAAAAAACxDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewoKCnB1YmxpYzoKICB2b2lkIGNvbXBpbGUobWFpa2VuOjpBcHBsaWNhdGlvbiAmYSwgWUFNTDo6Tm9kZSBjb25zdCAmbm9kZSkKICAgICAgS1RIUk9XKHN0ZDo6ZXhjZXB0aW9uKSBvdmVycmlkZSB7CiAgICBLTE9HKElORik7CiAgICByZWludGVycHJldF9jYXN0PEFwcEhhY2sgKj4oJmEpLT5oYWNrKCk7CiAgfQoKICB2b2lkIGxpbmsobWFpa2VuOjpBcHBsaWNhdGlvbiAmYSwgWUFNTDo6Tm9kZSBjb25zdCAmbm9kZSkKICAgICAgS1RIUk9XKHN0ZDo6ZXhjZXB0aW9uKSBvdmVycmlkZSB7CiAgICBBcHBIYWNrICpoYWNrID0gcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKTsKICAgIGlmICghaGFjay0+dmFsaWQoKSkKICAgICAgcmV0dXJuOwoKICAgIG1rbjo6a3VsOjpEaXIgcmVzeyJyZXMiLCBhLmJ1aWxkRGlyKCl9OwogICAgcmVzLm1rKCk7CgogICAgbWtuOjprdWw6OkRpciB0bXB7InRtcCIsIGEuYnVpbGREaXIoKX07CiAgICBta246Omt1bDo6RmlsZSBzc3N7aGFjay0+aGFja19saW5rKCksIHRtcH07CgogICAgbWtuOjprdWw6OlByb2Nlc3MgcHsibGx2bS1tY2EtMTQifTsKICAgIG1rbjo6a3VsOjpQcm9jZXNzQ2FwdHVyZSBwY3twfTsKICAgIHAgPDwgc3NzLm1pbmkoKTsKICAgIHAuc3RhcnQoKTsKCiAgICBta246Omt1bDo6RmlsZSBvdXRmaWxleyJsbHZtLW1jYS50eHQiLCByZXN9OwogICAgbWtuOjprdWw6OmlvOjpXcml0ZXJ7b3V0ZmlsZX0gPDwgcGMub3V0cygpOwogIH0KfTsKCn0gLy8gbmFtZXNwYWNlIG1rbjo6Y2xhbmcKCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggbWFpa2VuOjpNb2R1bGUgKm1haWtlbl9tb2R1bGVfY29uc3RydWN0KCkgewogIHJldHVybiBuZXcgbWtuIDo6Y2xhbmcgOjpMTFZNX01DQV9Nb2R1bGU7Cn0KCmV4dGVybiAiQyIgS1VMX1BVQkxJU0ggdm9pZCBtYWlrZW5fbW9kdWxlX2Rlc3RydWN0KG1haWtlbjo6TW9kdWxlICpwKSB7CiAgZGVsZXRlIHA7Cn0K", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOwIAAAAAAAA7AgAAAAAAAAAAAAAAADwvw" - ], - [ - 1110, - 1, - "right_delete", - null, - "AQAAAOoIAAAAAAAA6ggAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAAAAAA" - ], - [ - 1112, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAArwwAAAAAAACvDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewpwdWJsaWM6CiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgS0xPRyhJTkYpOwogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAOoIAAAAAAAA6ggAAAAAAAAAAAAAAADwvw" - ], - [ - 1117, - 1, - "cut", - null, - "AQAAAFkJAAAAAAAAWQkAAAAAAAAOAAAAICAgIEtMT0coSU5GKTs", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAGcJAAAAAAAAWQkAAAAAAAAAAAAAAAAAAA" - ], - [ - 1118, - 1, - "right_delete", - null, - "AQAAAFkJAAAAAAAAWQkAAAAAAAABAAAACg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkJAAAAAAAAWQkAAAAAAAAAAAAAAADwvw" - ], - [ - 1120, - 1, - "clang_format", - { - "whole_buffer": true - }, - "AQAAAAAAAAAAAAAAoAwAAAAAAACgDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewpwdWJsaWM6CiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9Cg", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAFkJAAAAAAAAWQkAAAAAAAAAAAAAAADwvw" - ], - [ - 1129, - 1, - "revert", - null, - "BAAAAAAAAAAAAAAAAAAAAAAAAACgDAAALyoqCkNvcHlyaWdodCAoYykgMjAyNCwgUGhpbGlwIERlZWdhbi4KQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCm1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQpjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCmluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKZGlzdHJpYnV0aW9uLgogICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIFBoaWxpcCBEZWVnYW4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCkEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCk9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLApTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCkxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KI2luY2x1ZGUgPHN0cmluZ192aWV3PgojaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KCiNpbmNsdWRlICJtYWlrZW4vbW9kdWxlL2luaXQuaHBwIgoKbmFtZXNwYWNlIG1rbjo6Y2xhbmcgewoKY2xhc3MgQXBwSGFjayA6IHB1YmxpYyBtYWlrZW46OkFwcGxpY2F0aW9uIHsKICBzdGQ6OnN0cmluZ192aWV3IGNvbnN0ZXhwciBzdGF0aWMgYmFzZTAgPSAiIC1zYXZlLXRlbXBzPW9iaiI7CgogIGF1dG8gc3RhdGljIGRyb3BfZmlsZV90eXBlKHN0ZDo6c3RyaW5nIGZpbGVuYW1lKSB7CiAgICBta246Omt1bDo6RmlsZSBmaWxle2ZpbGVuYW1lfTsKICAgIGZpbGVuYW1lID0gZmlsZS5uYW1lKCk7CiAgICByZXR1cm4gZmlsZW5hbWUuc3Vic3RyKDAsIGZpbGVuYW1lLnJmaW5kKCIuIikpOwogIH0KCnB1YmxpYzoKICBhdXRvIHVwZGF0ZShtYWlrZW46OlNvdXJjZSBjb25zdCAmcykgewogICAgc3RkOjpzdHJpbmcgYXJnID0gcy5hcmdzKCkgKyBzdGQ6OnN0cmluZ3tiYXNlMH07CiAgICByZXR1cm4gbWFpa2VuOjpTb3VyY2V7cy5pbigpLCBhcmd9OwogIH0KICB2b2lkIGhhY2soKSB7CiAgICBpZiAodGhpcy0+bWFpbl8pCiAgICAgIHRoaXMtPm1haW5fID0gdXBkYXRlKCp0aGlzLT5tYWluXyk7CiAgfQoKICBhdXRvIGhhY2tfbGluaygpIHsgcmV0dXJuIGRyb3BfZmlsZV90eXBlKHRoaXMtPm1haW5fLT5pbigpKSArICIucyI7IH0KCiAgYm9vbCB2YWxpZCgpIHsgcmV0dXJuIGJvb2x7dGhpcy0+bWFpbl99OyB9Cn07CgpjbGFzcyBMTFZNX01DQV9Nb2R1bGUgOiBwdWJsaWMgbWFpa2VuOjpNb2R1bGUgewpwdWJsaWM6CiAgdm9pZCBjb21waWxlKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgcmVpbnRlcnByZXRfY2FzdDxBcHBIYWNrICo+KCZhKS0+aGFjaygpOwogIH0KCiAgdm9pZCBsaW5rKG1haWtlbjo6QXBwbGljYXRpb24gJmEsIFlBTUw6Ok5vZGUgY29uc3QgJm5vZGUpCiAgICAgIEtUSFJPVyhzdGQ6OmV4Y2VwdGlvbikgb3ZlcnJpZGUgewogICAgQXBwSGFjayAqaGFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXBwSGFjayAqPigmYSk7CiAgICBpZiAoIWhhY2stPnZhbGlkKCkpCiAgICAgIHJldHVybjsKCiAgICBta246Omt1bDo6RGlyIHJlc3sicmVzIiwgYS5idWlsZERpcigpfTsKICAgIHJlcy5taygpOwoKICAgIG1rbjo6a3VsOjpEaXIgdG1weyJ0bXAiLCBhLmJ1aWxkRGlyKCl9OwogICAgbWtuOjprdWw6OkZpbGUgc3Nze2hhY2stPmhhY2tfbGluaygpLCB0bXB9OwoKICAgIG1rbjo6a3VsOjpQcm9jZXNzIHB7Imxsdm0tbWNhLTE0In07CiAgICBta246Omt1bDo6UHJvY2Vzc0NhcHR1cmUgcGN7cH07CiAgICBwIDw8IHNzcy5taW5pKCk7CiAgICBwLnN0YXJ0KCk7CgogICAgbWtuOjprdWw6OkZpbGUgb3V0ZmlsZXsibGx2bS1tY2EudHh0IiwgcmVzfTsKICAgIG1rbjo6a3VsOjppbzo6V3JpdGVye291dGZpbGV9IDw8IHBjLm91dHMoKTsKICB9Cn07Cgp9IC8vIG5hbWVzcGFjZSBta246OmNsYW5nCgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIG1haWtlbjo6TW9kdWxlICptYWlrZW5fbW9kdWxlX2NvbnN0cnVjdCgpIHsKICByZXR1cm4gbmV3IG1rbiA6OmNsYW5nIDo6TExWTV9NQ0FfTW9kdWxlOwp9CgpleHRlcm4gIkMiIEtVTF9QVUJMSVNIIHZvaWQgbWFpa2VuX21vZHVsZV9kZXN0cnVjdChtYWlrZW46Ok1vZHVsZSAqcCkgewogIGRlbGV0ZSBwOwp9CgAAAAAAAAAAoAwAAAAAAAAAAAAAAAAAAAAAAACgDAAAAAAAAAAAAAAAAAAAAAAAAKAMAAAAAAAAAAAAAA", - "AwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8AAAAAAQAAAF0KAAAAAAAAYAoAAAAAAAAAAAAAAADwvw" - ] - ] - }, - { - "contents": "#!/usr/bin/env python3\n\nimport pyphare.pharein as ph\nfrom pyphare.simulator.simulator import Simulator, startMPI\n\nimport numpy as np\n\nimport matplotlib as mpl\n\nmpl.use(\"Agg\")\n\nfrom pyphare.cpp import cpp_lib\n\ncpp = cpp_lib()\nstartMPI()\n\ntimestamps = np.arange(10, 160, 10)\n\ndef config():\n L = 0.5\n sim = ph.Simulation(\n time_step=0.005,\n final_time=150.0,\n # boundary_types=\"periodic\",\n cells=(800, 800),\n dl=(0.40, 0.40),\n refinement=\"tagging\",\n max_nbr_levels=3,\n nesting_buffer=1,\n clustering=\"tile\",\n tag_buffer=\"10\",\n hyper_resistivity=0.002,\n resistivity=0.001,\n diag_options={\n \"format\": \"phareh5\",\n \"options\": {\"dir\": \"diags/harris_rebal\", \"mode\": \"overwrite\"},\n },\n restart_options={\n \"dir\": \"checkpoints\",\n \"mode\": \"overwrite\",\n \"timestamps\": timestamps,\n # \"restart_time\": 60.0,\n },\n advanced={\n \"integrator/rebalance_coarsest\": 1,\n \"integrator/rebalance_coarsest_every\": 5000,\n \"integrator/rebalance_coarsest_on_init\": 0,\n \"integrator/flexible_load_tolerance\": 0.05,\n },\n )\n\n def density(x, y):\n Ly = sim.simulation_domain()[1]\n return (\n 0.4\n + 1.0 / np.cosh((y - Ly * 0.3) / L) ** 2\n + 1.0 / np.cosh((y - Ly * 0.7) / L) ** 2\n )\n\n def S(y, y0, l):\n return 0.5 * (1.0 + np.tanh((y - y0) / l))\n\n def by(x, y):\n Lx = sim.simulation_domain()[0]\n Ly = sim.simulation_domain()[1]\n sigma = 1.0\n dB = 0.1\n\n x0 = x - 0.5 * Lx\n y1 = y - 0.3 * Ly\n y2 = y - 0.7 * Ly\n\n dBy1 = 2 * dB * x0 * np.exp(-(x0**2 + y1**2) / (sigma) ** 2)\n dBy2 = -2 * dB * x0 * np.exp(-(x0**2 + y2**2) / (sigma) ** 2)\n\n return dBy1 + dBy2\n\n def bx(x, y):\n Lx = sim.simulation_domain()[0]\n Ly = sim.simulation_domain()[1]\n sigma = 1.0\n dB = 0.1\n\n x0 = x - 0.5 * Lx\n y1 = y - 0.3 * Ly\n y2 = y - 0.7 * Ly\n\n dBx1 = -2 * dB * y1 * np.exp(-(x0**2 + y1**2) / (sigma) ** 2)\n dBx2 = 2 * dB * y2 * np.exp(-(x0**2 + y2**2) / (sigma) ** 2)\n\n v1 = -1\n v2 = 1.0\n return v1 + (v2 - v1) * (S(y, Ly * 0.3, L) - S(y, Ly * 0.7, L)) + dBx1 + dBx2\n\n def bz(x, y):\n return 0.0\n\n def b2(x, y):\n return bx(x, y) ** 2 + by(x, y) ** 2 + bz(x, y) ** 2\n\n def T(x, y):\n K = 0.7\n temp = 1.0 / density(x, y) * (K - b2(x, y) * 0.5)\n assert np.all(temp > 0)\n return temp\n\n def vx(x, y):\n return 0.0\n\n def vy(x, y):\n return 0.0\n\n def vz(x, y):\n return 0.0\n\n def vthx(x, y):\n return np.sqrt(T(x, y))\n\n def vthy(x, y):\n return np.sqrt(T(x, y))\n\n def vthz(x, y):\n return np.sqrt(T(x, y))\n\n vvv = {\n \"vbulkx\": vx,\n \"vbulky\": vy,\n \"vbulkz\": vz,\n \"vthx\": vthx,\n \"vthy\": vthy,\n \"vthz\": vthz,\n \"nbr_part_per_cell\": 100,\n }\n\n ph.MaxwellianFluidModel(\n bx=bx,\n by=by,\n bz=bz,\n protons={\n \"charge\": 1,\n \"density\": density,\n **vvv,\n }, # , \"init\":{\"seed\":cpp.mpi_rank()+int(sys.argv[1])}}\n )\n\n ph.ElectronModel(closure=\"isothermal\", Te=0.0)\n \n #sim = ph.global_vars.sim\n #dt = 100.0 * sim.time_step\n #start_time = 0.0\n #nt = (sim.final_time - start_time) / dt + 1\n #timestamps = start_time + dt * np.arange(nt)\n print(timestamps)\n\n for quantity in [\"E\", \"B\"]:\n ph.ElectromagDiagnostics(\n quantity=quantity,\n write_timestamps=timestamps,\n compute_timestamps=timestamps,\n )\n\n for quantity in [\"density\", \"bulkVelocity\"]:\n ph.FluidDiagnostics(\n quantity=quantity,\n write_timestamps=timestamps,\n compute_timestamps=timestamps,\n )\n\n return sim\n\n\ndef main():\n Simulator(config()).run()\n\n\nif __name__ == \"__main__\":\n main()\n", - "settings": - { - "buffer_size": 4093, - "line_ending": "Unix" - }, - "undo_stack": - [ - [ - 2, - 1, - "", - null, - "AQAAAAAAAAAAAAAAzwQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8L8" - ], - [ - 4, - 1, - "", - null, - "AQAAAM8EAAAAAAAAaAkAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADPBAAAAAAAAM8EAAAAAAAAAAAAAAAA8L8" - ], - [ - 8, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAAM4EAAAAAAAAzwQAAAAAAAAAAAAAzwQAAAAAAADTBAAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADOBAAAAAAAAM4EAAAAAAAAAAAAAAAATEA" - ], - [ - 11, - 1, - "insert", - { - "characters": "\t" - }, - "AgAAANQEAAAAAAAA2AQAAAAAAAAAAAAAzwQAAAAAAADPBAAAAAAAAAQAAAAgICAg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAADUBAAAAAAAANQEAAAAAAAAAAAAAAAAAAA" - ], - [ - 14, - 1, - "reindent", - null, - "AQAAAG0JAAAAAAAAdQkAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAABtCQAAAAAAAG0JAAAAAAAAAAAAAAAA8L8" - ], - [ - 15, - 1, - "insert", - { - "characters": "\n" - }, - "AwAAAHUJAAAAAAAAdgkAAAAAAAAAAAAAdgkAAAAAAAB+CQAAAAAAAAAAAABtCQAAAAAAAG0JAAAAAAAACAAAACAgICAgICAg", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB1CQAAAAAAAHUJAAAAAAAAAAAAAAAA8L8" - ], - [ - 16, - 1, - "left_delete", - null, - "AQAAAHIJAAAAAAAAcgkAAAAAAAAEAAAAICAgIA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAB2CQAAAAAAAHYJAAAAAAAAAAAAAAAA8L8" - ], - [ - 18, - 1, - "", - null, - "AQAAAHIJAAAAAAAAOw0AAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAByCQAAAAAAAHIJAAAAAAAAAAAAAAAA8L8" - ], - [ - 19, - 1, - "reindent", - null, - "AQAAADsNAAAAAAAAPw0AAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA7DQAAAAAAADsNAAAAAAAAAAAAAAAA8L8" - ], - [ - 21, - 1, - "", - null, - "AQAAAD8NAAAAAAAA+A8AAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA/DQAAAAAAAD8NAAAAAAAAAAAAAAAA8L8" - ], - [ - 24, - 1, - "insert", - { - "characters": "\n" - }, - "AgAAADoNAAAAAAAAOw0AAAAAAAAAAAAAOw0AAAAAAAA/DQAAAAAAAAAAAAA", - "AgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPC/AAAAAAEAAAA6DQAAAAAAADoNAAAAAAAAAAAAAAAA8L8" - ] - ] - }, - { - "file": "m/clang/llvm-mca/master/bin/test/res/llvm-mca.txt", - "settings": - { - "buffer_size": 1458003, - "line_ending": "Unix" - } - }, - { - "file": "r/mkn/kul/master/inc/mkn/kul/os.hpp", - "settings": - { - "buffer_size": 11092, - "line_ending": "Unix" - } - } - ], - "build_system": "", - "build_system_choices": - [ - ], - "build_varint": "", - "command_palette": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - [ - "remove", - "Package Control: Remove Package" - ], - [ - "inst", - "Package Control: Install Package" - ], - [ - "Package Control: li", - "Package Control: List Packages" - ], - [ - "Package Control: inst", - "Package Control: Install Package" - ], - [ - "Package Control: isntall", - "Package Control: Install Package" - ], - [ - "Package Control: instal", - "Package Control: Install Package" - ], - [ - "Package Control: install", - "Package Control: Install Package" - ] - ], - "width": 0.0 - }, - "console": - { - "height": 413.0, - "history": - [ - ] - }, - "distraction_free": - { - "menu_visible": true, - "show_minimap": false, - "show_open_files": false, - "show_tabs": false, - "side_bar_visible": false, - "status_bar_visible": false - }, - "expanded_folders": - [ - "/mkn", - "/mkn/m", - "/mkn/m/clang", - "/mkn/m/clang/llvm-mca", - "/mkn/m/clang/llvm-mca/master", - "/mkn/m/clang/llvm-mca/master/bin", - "/mkn/m/clang/llvm-mca/master/bin/test", - "/mkn/m/clang/llvm-mca/master/bin/test/res", - "/mkn/m/clang/llvm-mca/master/bin/test/tmp", - "/mkn/m/clang/llvm-optrec", - "/mkn/m/clang/llvm-optrec/master", - "/mkn/m/clang/llvm-optrec/master/.github", - "/mkn/m/clang/llvm-optrec/master/.github/workflows", - "/mkn/m/lang", - "/mkn/m/lang/pybind11", - "/mkn/m/lang/pybind11/master", - "/mkn/m/lang/python3", - "/mkn/m/lang/python3/master", - "/mkn/m/lang/swig", - "/mkn/m/lang/swig/master" - ], - "file_history": - [ - "/mkn/r/mkn/kul/master/inc/mkn/kul/proc.hpp", - "/mkn/m/clang/llvm-mca/master/bin/build/obj/mod.s", - "/mkn/m/clang/llvm-mca/master/bin/test/res/180b2d7fa83bda1f_test.cpp.s", - "/mkn/m/clang/llvm-mca/master/test.cpp", - "/mkn/m/clang/llvm-optrec/master/test.cpp", - "/mkn/m/clang/llvm-optrec/master/.github/workflows/build_nix.yml", - "/mkn/m/clang/llvm-optrec/master/.gitignore", - "/mkn/m/clang/llvm-mca/master/mkn.yml", - "/mkn/m/clang/llvm-optrec/master/mkn.yml", - "/mkn/m/clang/llvm-optrec/master/mod.cpp", - "/mkn/r/mkn/kul/master/inc/mkn/kul/os.hpp", - "/mkn/m/clang/llvm-mca/master/test.s.txt", - "/mkn/m/lang/pybind11/master/test.cpp", - "/mkn/m/clang/llvm-mca/master/mod.cpp", - "/mkn/m/clang/llvm-optrec/test.cpp", - "/home/p/git/phare/master/tools/bench/core/numerics/pusher/CMakeLists.txt", - "/home/p/git/phare/master/tools/bench/core/numerics/pusher/pusher.cpp", - "/home/p/git/phare/master/src/core/def/phare_mpi.hpp", - "/home/p/git/phare/master/src/core/utilities/cellmap.hpp", - "/home/p/git/phare/master/tools/bench/core/numerics/pusher/push_raw_use.cpp", - "/home/p/git/phare/master/tools/bench/core/numerics/pusher/push_raw_gen.cpp", - "/home/p/git/phare/master/tools/mkn/bench.sh", - "/home/p/git/phare/master/tools/cmake.sh", - "/home/p/git/phare/master/src/simulator/simulator.hpp", - "/home/p/git/phare/master/src/core/utilities/types.hpp", - "/home/p/git/phare/master/src/hdf5/detail/h5/h5_file.hpp", - "/home/p/git/phare/master/src/diagnostic/detail/h5typewriter.hpp", - "/home/p/git/phare/master/src/core/utilities/mpi_utils.hpp", - "/home/p/git/phare/master/subprojects/cppdict/include/dict.hpp", - "/home/p/git/phare/master/src/core/numerics/interpolator/interpolator.hpp", - "/home/p/git/phare/master/src/amr/resources_manager/resources_manager.hpp", - "/home/p/git/phare/master/build/tests/diagnostic/job_1d.py", - "/home/p/git/phare/master/tests/amr/messengers/test_messengers.cpp", - "/home/p/git/phare/master/src/amr/physical_models/physical_model.hpp", - "/home/p/git/phare/master/src/amr/level_initializer/hybrid_level_initializer.hpp", - "/home/p/git/phare/master/src/amr/physical_models/mhd_model.hpp", - "/home/p/git/phare/master/src/phare_core.hpp", - "/home/p/git/phare/master/src/phare_solver.hpp", - "/home/p/git/phare/master/src/amr/messengers/mhd_hybrid_messenger_strategy.hpp", - "/home/p/git/phare/master/src/core/numerics/faraday/faraday.hpp", - "/home/p/git/phare/master/src/core/numerics/ohm/ohm.hpp", - "/home/p/git/phare/master/src/core/numerics/ampere/ampere.hpp", - "/home/p/git/phare/master/src/core/data/grid/grid.hpp", - "/home/p/git/phare/master/src/core/data/ndarray/ndarray_vector.hpp", - "/home/p/git/phare/master/src/amr/solvers/solver_ppc_model_view.hpp", - "/home/p/git/phare/master/src/amr/messengers/mhd_messenger.hpp", - "/home/p/git/phare/master/src/amr/solvers/solver_ppc.hpp", - "/home/p/git/phare/master/src/amr/solvers/solver_mhd.hpp", - "/home/p/git/phare/master/src/amr/physical_models/hybrid_model.hpp", - "/home/p/git/phare/master/src/amr/messengers/hybrid_hybrid_messenger_strategy.hpp", - "/home/p/git/phare/master/src/amr/resources_manager/particle_resource.hpp", - "/home/p/git/phare/master/src/amr/resources_manager/field_resource.hpp", - "/home/p/git/phare/master/src/amr/tagging/hybrid_tagger.hpp", - "/home/p/git/phare/master/.cmake.sh.out", - "/home/p/git/phare/master/src/core/data/electrons/electrons.hpp", - "/home/p/git/phare/master/src/core/data/field/field.hpp", - "/home/p/git/phare/master/src/core/data/vecfield/vecfield.hpp", - "/home/p/git/phare/master/tests/core/data/vecfield/test_main.cpp", - "/home/p/git/phare/master/src/amr/level_initializer/level_initializer.hpp", - "/home/p/git/phare/master/tests/core/data/ions/test_ions.cpp", - "/home/p/git/phare/master/tests/core/numerics/faraday/test_main.cpp", - "/home/p/git/phare/master/tests/core/data/electrons/test_electrons.cpp", - "/home/p/git/phare/master/tests/amr/data/field/time_interpolate/test_field_data_time_interpolate.cpp", - "/home/p/git/phare/master/tests/core/data/field/test_field.hpp", - "/home/p/git/phare/master/tests/core/numerics/interpolator/test_main.cpp", - "/home/p/git/phare/master/res/cmake/options.cmake", - "/home/p/git/phare/master/tests/amr/resources_manager/test_resources_manager.hpp", - "/home/p/git/phare/master/.phlop/build/tests/core/data/vecfield.stdout", - "/home/p/git/phare/master/tests/amr/models/test_models.cpp", - "/home/p/git/phare/master/tests/amr/resources_manager/test_resources_manager.cpp", - "/home/p/git/phare/master/src/amr/data/field/time_interpolate/field_linear_time_interpolate.hpp", - "/home/p/git/phare/master/src/core/data/ions/ions.hpp", - "/home/p/git/phare/master/tests/core/numerics/ion_updater/test_updater.cpp", - "/home/p/git/phare/master/tests/core/numerics/ampere/test_main.cpp", - "/home/p/git/phare/master/tests/core/numerics/ohm/test_main.cpp", - "/home/p/git/phare/master/src/core/data/ions/ion_population/ion_population.hpp", - "/home/p/git/phare/master/.coderabbit.yaml", - "/home/p/git/phare/master/src/amr/data/field/field_data.hpp", - "/home/p/git/phare/master/src/amr/data/particles/particles_variable.hpp", - "/home/p/git/phare/master/src/core/data/particles/particle_array.hpp", - "/home/p/git/phare/master/src/diagnostic/detail/types/particle.hpp", - "/home/p/.conkyrc", - "/home/p/git/phare/master/src/core/data/particles/particle.hpp", - "/home/p/git/phare/master/res/cmake_pgo_go.sh", - "/home/p/git/phare/master/tests/simulator/config.py", - "/home/p/git/phare/master/tools/bench/core/bench.hpp", - "/home/p/git/phare/master/res/cmake/def.cmake", - "/home/p/git/phare/master/tests/functional/harris/harris_2d_2.py", - "/home/p/git/phare/master/pyphare/pyphare/pharein/maxwellian_fluid_model.py", - "/home/p/git/phare/master/pyphare/pyphare/core/phare_utilities.py", - "/home/p/git/phare/master/tests/functional/harris/harris_2d_2_small.py", - "/home/p/git/phare/master/tests/functional/harris/harris_2d_2.py.no", - "/media/p/2TB/sort/cake.txt", - "/media/p/2TB/sort/rocm.gpg.key", - "/home/p/.cache/.fr-Y80SF2/aptoide/aptoide.py", - "/media/p/2TB/sort/aa29d2065d955a75d198e83fedf52b7ec4664e09_build.log", - "/media/p/2TB/sort/dekken_play_32.log", - "/media/p/2TB/sort/CMakeLists.txt", - "/media/p/2TB/sort/message.txt", - "/media/p/2TB/sort/glog", - "/media/p/2TB/sort/py3_diagnostics", - "/media/p/2TB/sort/recovery-key.txt", - "/media/p/2TB/sort/test-shock", - "/media/p/2TB/sort/uptime-source-ips.txt", - "/media/p/2TB/sort/PhilipDeegan_scoring (1).txt", - "/home/p/git/phare/master/.github/workflows/codeql.yml", - "/home/p/git/phare/master/tools/bench/core/numerics/pusher/push_bench.hpp", - "/home/p/git/phare/master/src/core/CMakeLists.txt", - "/home/p/git/phare/master/.github/workflows/cmake_ubuntu.yml", - "/home/p/git/phare/master/CMakeLists.txt", - "/home/p/git/phare/master/tools/bench/core/numerics/ion_updater/CMakeLists.txt", - "/home/p/git/phare/master/tools/bench/core/numerics/interpolator/CMakeLists.txt", - "/home/p/git/phare/master/tools/bench/hi5/write_particles.cpp", - "/home/p/git/phare/master/src/core/utilities/point/point.hpp", - "/home/p/git/phare/master/src/amr/utilities/box/amr_box.hpp", - "/home/p/git/phare/master/tools/bench/amr/data/particles/copy_data.cpp", - "/home/p/git/phare/master/tools/bench/core/data/particles/interop.cpp", - "/home/p/git/phare/master/res/cmake/dep/highfive.cmake", - "/home/p/git/phare/master/res/cmake/dep.cmake", - "/home/p/git/phare/master/res/cmake/dep/samrai.cmake", - "/home/p/git/phare/master/res/cmake/bench.cmake", - "/home/p/git/phare/master/src/simulator/CMakeLists.txt", - "/home/p/git/phare/master/src/core/utilities/box/box.hpp", - "/home/p/git/phare/master/tools/bench/core/numerics/pusher/pusher_instructions.cpp", - "/home/p/git/phare/master/build/CMakeCache.txt", - "/home/p/git/phare/master/src/hdf5/detail/hdf5_utils.hpp", - "/home/p/git/phare/master/tools/bench/core/numerics/interpolator/bench_main.cpp", - "/home/p/git/phare/master/tools/bench/core/numerics/ion_updater/bench_ion_updater.cpp" - ], - "find": - { - "height": 28.0 - }, - "find_in_files": - { - "height": 104.0, - "where_history": - [ - ] - }, - "find_state": - { - "case_sensitive": true, - "find_history": - [ - "LLVM_OptRec_Module", - "run" - ], - "highlight": true, - "in_selection": false, - "preserve_case": false, - "regex": false, - "replace_history": - [ - "LLVM_MCA_Module" - ], - "reverse": false, - "scrollbar_highlights": true, - "show_context": false, - "use_buffer2": true, - "use_gitignore": false, - "whole_word": false, - "wrap": true - }, - "groups": - [ - { - "sheets": - [ - { - "buffer": 0, - "file": "m/clang/llvm-mca/master/mod.cpp", - "semi_transient": false, - "settings": - { - "buffer_size": 3232, - "regions": - { - }, - "selection": - [ - [ - 2653, - 2656 - ] - ], - "settings": - { - "syntax": "Packages/C++/C++.sublime-syntax", - "tab_size": 2, - "tabs_extra_last_activated": 1707127740.01, - "tabs_extra_last_activated_sheet_index": 0, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 531.0, - "zoom_level": 1.0 - }, - "stack_index": 1, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 1, - "selected": true, - "semi_transient": false, - "settings": - { - "buffer_size": 4093, - "regions": - { - }, - "selection": - [ - [ - 0, - 4093 - ] - ], - "settings": - { - "syntax": "Packages/Python/Python.sublime-syntax", - "tab_size": 4, - "tabs_extra_last_activated": 1707128158.41, - "tabs_extra_last_activated_sheet_index": 1, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 0, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 2, - "file": "m/clang/llvm-mca/master/bin/test/res/llvm-mca.txt", - "semi_transient": true, - "settings": - { - "buffer_size": 1458003, - "regions": - { - }, - "selection": - [ - [ - 0, - 0 - ] - ], - "settings": - { - "syntax": "Packages/Text/Plain text.tmLanguage", - "tabs_extra_last_activated": 1707078432.53, - "tabs_extra_last_activated_sheet_index": 1 - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 2, - "stack_multiselect": false, - "type": "text" - }, - { - "buffer": 3, - "file": "r/mkn/kul/master/inc/mkn/kul/os.hpp", - "semi_transient": false, - "settings": - { - "buffer_size": 11092, - "regions": - { - }, - "selection": - [ - [ - 10207, - 10207 - ] - ], - "settings": - { - "syntax": "Packages/C++/C++.sublime-syntax", - "tab_size": 2, - "tabs_extra_last_activated": 1707076371.39, - "tabs_extra_last_activated_sheet_index": 1, - "translate_tabs_to_spaces": true - }, - "translation.x": 0.0, - "translation.y": 5538.0, - "zoom_level": 1.0 - }, - "stack_index": 3, - "stack_multiselect": false, - "type": "text" - } - ] - } - ], - "incremental_find": - { - "height": 28.0 - }, - "input": - { - "height": 40.0 - }, - "layout": - { - "cells": - [ - [ - 0, - 0, - 1, - 1 - ] - ], - "cols": - [ - 0.0, - 1.0 - ], - "rows": - [ - 0.0, - 1.0 - ] - }, - "menu_visible": true, - "output.find_results": - { - "height": 0.0 - }, - "pinned_build_system": "", - "project": ".sublime-project", - "replace": - { - "height": 52.0 - }, - "save_all_on_build": true, - "select_file": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - [ - "proc.hpp", - "r/mkn/kul/master/inc/mkn/kul/proc.hpp" - ], - [ - "os.hpp", - "r/mkn/kul/master/inc/mkn/kul/os.hpp" - ], - [ - "tools/bench/core/numerics/pusher", - "master/tools/bench/core/numerics/pusher/CMakeLists.txt" - ], - [ - "src/hdf5/detail/h5/h5_file.hpp", - "master/src/hdf5/detail/h5/h5_file.hpp" - ], - [ - "sim", - "master/src/simulator/simulator.hpp" - ], - [ - "src/diagnostic/detail/h5typewriter.hpp", - "master/src/diagnostic/detail/h5typewriter.hpp" - ], - [ - "src/core/utilities/mpi_utils.hpp", - "master/src/core/utilities/mpi_utils.hpp" - ], - [ - "dict.h", - "master/subprojects/cppdict/include/dict.hpp" - ], - [ - "cma", - "master/tools/cmake.sh" - ], - [ - "inter", - "master/src/core/numerics/interpolator/interpolator.hpp" - ], - [ - "ele", - "master/src/core/data/electrons/electrons.hpp" - ], - [ - "src/core/numerics/ampere/ampere.hpp", - "master/src/core/numerics/ampere/ampere.hpp" - ], - [ - "grid", - "master/src/core/data/grid/grid.hpp" - ], - [ - "src/core/data/ndarray/ndarray_vector.hpp", - "master/src/core/data/ndarray/ndarray_vector.hpp" - ], - [ - "src/amr/solvers/solver_ppc_model_view.hpp", - "master/src/amr/solvers/solver_ppc_model_view.hpp" - ], - [ - "hybmo", - "master/src/amr/physical_models/hybrid_model.hpp" - ], - [ - "cmake.s", - "master/tools/cmake.sh" - ], - [ - "cmake", - "master/tools/cmake.sh" - ], - [ - "solvermo", - "master/src/amr/solvers/solver_ppc_model_view.hpp" - ], - [ - "hymo", - "master/src/amr/physical_models/hybrid_model.hpp" - ], - [ - "field", - "master/src/core/data/field/field.hpp" - ], - [ - "ve", - "master/src/core/data/vecfield/vecfield.hpp" - ], - [ - "core/data/vecfield/te", - "master/tests/core/data/vecfield/test_main.cpp" - ], - [ - "core/data/vecfield", - "master/.phlop/build/tests/core/data/vecfield.stdout" - ], - [ - "vec", - "master/src/core/data/vecfield/vecfield.hpp" - ], - [ - "res", - "master/src/amr/resources_manager/resources_manager.hpp" - ], - [ - "options.c", - "master/res/cmake/options.cmake" - ], - [ - "vecf", - "master/src/core/data/vecfield/vecfield.hpp" - ], - [ - "interpolator/test_main.cpp", - "master/tests/core/numerics/interpolator/test_main.cpp" - ], - [ - "test_field_data_time_interpolate.cpp", - "master/tests/amr/data/field/time_interpolate/test_field_data_time_interpolate.cpp" - ], - [ - "ions/test_ions.cpp", - "master/tests/core/data/ions/test_ions.cpp" - ], - [ - "ndar", - "master/src/core/data/ndarray/ndarray_vector.hpp" - ], - [ - "field_re", - "master/src/amr/resources_manager/field_resource.hpp" - ], - [ - "field.", - "master/src/core/data/field/field.hpp" - ], - [ - "field.hp", - "master/src/core/data/field/field.hpp" - ], - [ - "fied", - "master/src/amr/data/field/field_data.hpp" - ], - [ - "vecfield/test_main.cpp", - "master/tests/core/data/vecfield/test_main.cpp" - ], - [ - "grid.hpp", - "master/src/core/data/grid/grid.hpp" - ], - [ - "electrons", - "master/src/core/data/electrons/electrons.hpp" - ], - [ - "resou", - "master/src/amr/resources_manager/resources_manager.hpp" - ], - [ - "types", - "master/src/core/utilities/types.hpp" - ], - [ - "ion_", - "master/src/core/data/ions/ion_population/ion_population.hpp" - ], - [ - "field_data", - "master/src/amr/data/field/field_data.hpp" - ], - [ - "particles_variable", - "master/src/amr/data/particles/particles_variable.hpp" - ], - [ - "reso", - "master/src/amr/resources_manager/resources_manager.hpp" - ], - [ - "par_ar", - "master/src/core/data/particles/particle_array.hpp" - ], - [ - "par.hpp", - "master/src/diagnostic/detail/types/particle.hpp" - ], - [ - "phare_utilities", - "master/pyphare/pyphare/core/phare_utilities.py" - ], - [ - "max", - "master/pyphare/pyphare/pharein/maxwellian_fluid_model.py" - ], - [ - "def.c", - "master/res/cmake/def.cmake" - ], - [ - "bench.hpp", - "master/tools/bench/core/bench.hpp" - ], - [ - "bench.cma", - "master/res/cmake/bench.cmake" - ], - [ - "tools/bench/core/numerics/pusher/CMakeLists.txt", - "master/tools/bench/core/numerics/pusher/CMakeLists.txt" - ], - [ - "src/core/CMakeLists.txt", - "master/src/core/CMakeLists.txt" - ], - [ - "point", - "master/src/core/utilities/point/point.hpp" - ], - [ - "amr_box.hpp", - "master/src/amr/utilities/box/amr_box.hpp" - ], - [ - "box.hpp", - "master/src/core/utilities/box/box.hpp" - ], - [ - "parti", - "master/src/core/data/particles/particle_array.hpp" - ], - [ - "h5_file", - "master/src/hdf5/detail/h5/h5_file.hpp" - ], - [ - "hdf5/detail/hdf5_utils.hpp", - "master/src/hdf5/detail/hdf5_utils.hpp" - ], - [ - "cmake.sh", - "master/tools/cmake.sh" - ], - [ - "tests/core/numerics/interpolator/test_main.cpp", - "master/tests/core/numerics/interpolator/test_main.cpp" - ], - [ - "tools/bench/core/bench.hpp", - "master/tools/bench/core/bench.hpp" - ], - [ - "src/core/data/particles/particle_array.hpp", - "master/src/core/data/particles/particle_array.hpp" - ], - [ - "ion_ion", - "master/tests/functional/ionIonBeam/ion_ion_beam1d.py" - ], - [ - "tagged", - "master/tests/functional/tdtagged/td1dtagged.py" - ], - [ - "op", - "master/res/cmake/options.cmake" - ], - [ - "maxwellian_fluid_model.py", - "master/pyphare/pyphare/pharein/maxwellian_fluid_model.py" - ], - [ - "harris_2d_2.py", - "master/tests/functional/harris/harris_2d_2.py" - ], - [ - "phare_ut", - "master/pyphare/pyphare/core/phare_utilities.py" - ], - [ - "config", - "master/tools/config/config.py" - ], - [ - "simu", - "master/pyphare/pyphare/pharein/simulation.py" - ], - [ - "updater", - "master/src/core/numerics/ion_updater/ion_updater.hpp" - ], - [ - "index.cpp", - "master/src/core/utilities/index/index.cpp" - ], - [ - "particlarr", - "master/src/core/data/particles/particle_array.hpp" - ], - [ - "particles/particle_packer.hpp", - "master/src/core/data/particles/particle_packer.hpp" - ], - [ - "def.cma", - "master/res/cmake/def.cmake" - ], - [ - "options", - "master/res/cmake/options.cmake" - ], - [ - "def", - "master/src/core/def.hpp" - ], - [ - "updat", - "master/src/core/numerics/ion_updater/ion_updater.hpp" - ], - [ - "bori", - "master/src/core/numerics/pusher/boris.hpp" - ], - [ - "bor", - "master/src/core/numerics/pusher/boris.hpp" - ], - [ - "elec", - "master/src/core/data/electrons/electrons.hpp" - ], - [ - "ohm", - "master/src/core/numerics/ohm/ohm.hpp" - ], - [ - "amper", - "master/src/core/numerics/ampere/ampere.hpp" - ], - [ - "solver", - "master/src/amr/solvers/solver_ppc_model_view.hpp" - ], - [ - "diag", - "master/pyphare/pyphare/pharein/diagnostics.py" - ], - [ - "field_da", - "master/src/amr/data/field/field_data.hpp" - ], - [ - "cell", - "master/src/core/utilities/cellmap.hpp" - ], - [ - "boris", - "master/src/core/numerics/pusher/boris.hpp" - ], - [ - "par", - "master/src/core/data/particles/particle_array.hpp" - ], - [ - "ions", - "master/src/core/data/ions/ions.hpp" - ], - [ - "ref", - "master/src/amr/messengers/refiner.hpp" - ], - [ - "hyh", - "master/src/amr/messengers/hybrid_hybrid_messenger_strategy.hpp" - ], - [ - "fara", - "master/src/core/numerics/faraday/faraday.hpp" - ], - [ - "ion_pop", - "master/src/core/data/ions/ion_population/ion_population.hpp" - ], - [ - "solvers/solver.hpp", - "master/src/amr/solvers/solver.hpp" - ], - [ - "state", - "master/src/core/models/hybrid_state.hpp" - ], - [ - "HybridModel", - "master/src/amr/physical_models/hybrid_model.hpp" - ], - [ - "hybrmo", - "master/src/amr/physical_models/hybrid_model.hpp" - ], - [ - "modelv", - "master/src/amr/solvers/solver_ppc_model_view.hpp" - ], - [ - "tests/simulator/test_restarts.py", - "master/tests/simulator/test_restarts.py" - ], - [ - "logg", - "master/src/core/logger.hpp" - ], - [ - "mu", - "master/src/amr/multiphysics_integrator.hpp" - ], - [ - "parar", - "master/src/core/data/particles/particle_array.hpp" - ], - [ - "range", - "master/src/core/utilities/range/range.hpp" - ], - [ - "range.", - "master/src/core/utilities/range/range.hpp" - ], - [ - "phare_co", - "master/src/phare_core.hpp" - ], - [ - "ion_up", - "master/src/core/numerics/ion_updater/ion_updater.hpp" - ], - [ - "cellma", - "master/src/core/utilities/cellmap.hpp" - ], - [ - "tools/bench/core/data/particles/mapping/bench.cpp", - "master/tools/bench/core/data/particles/mapping/bench.cpp" - ], - [ - "solvvermode", - "master/src/amr/solvers/solver_ppc_model_view.hpp" - ], - [ - "gen_sys", - "master/src/core/def/_gen_sys.hpp" - ], - [ - "", - "master/pyphare/pyphare/pharein/simulation.py" - ], - [ - "high", - "master/res/cmake/dep/highfive.cmake" - ], - [ - "highfi", - "master/build/subprojects/highfive/HighFiveConfig.cmake" - ], - [ - "src/core/def", - "master/src/core/def.hpp" - ], - [ - "mult", - "master/src/amr/multiphysics_integrator.hpp" - ], - [ - "ion", - "master/src/core/numerics/ion_updater/ion_updater.hpp" - ], - [ - "solver_pp", - "master/src/amr/solvers/solver_ppc.hpp" - ], - [ - "mul", - "master/src/amr/multiphysics_integrator.hpp" - ], - [ - "def.cm", - "master/res/cmake/def.cmake" - ], - [ - "/test_grid.hpp", - "master/tests/core/data/grid/test_grid.hpp" - ], - [ - "test_e", - "master/tests/core/data/electrons/test_electrons.cpp" - ], - [ - "test_ele", - "master/tests/core/data/electrons/test_electrons.cpp" - ], - [ - "src/core/data/electrons/electrons.hpp", - "master/src/core/data/electrons/electrons.hpp" - ], - [ - "Database", - "samrai/master/include/SAMRAI/tbox/Database.h" - ], - [ - "database.h", - "samrai/master/include/SAMRAI/tbox/Database.h" - ] - ], - "width": 0.0 - }, - "select_project": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - ], - "width": 0.0 - }, - "select_symbol": - { - "height": 344.0, - "last_filter": "", - "selected_items": - [ - ], - "width": 592.0 - }, - "selected_group": 0, - "settings": - { - }, - "show_minimap": true, - "show_open_files": false, - "show_tabs": true, - "side_bar_visible": true, - "side_bar_width": 362.0, - "status_bar_visible": true, - "template_settings": - { - } + "project": ".sublime-project" } diff --git a/mkn.yaml b/mkn.yaml index 304d900..273312d 100644 --- a/mkn.yaml +++ b/mkn.yaml @@ -1,4 +1,4 @@ -#! clean build -p mod -dO +#! clean build -p test -dO name: lang.nanobind parent: lib @@ -8,16 +8,16 @@ profile: inc: | b/include b/ext/robin_map/include, 0 - src: b/src + src: b/src/nb_combined.cpp mod: lang.python3 mode: static sub: nanobind&b(https://github.com/wjakob/nanobind) -- name: mod - src: mod.cpp +- name: test + src: test.cpp self: lib mode: none - mod: lang.python3 lang.pybind11 + mod: lang.python3 python3.module out: my_ext install: . env: | diff --git a/mod.cpp b/test.cpp similarity index 99% rename from mod.cpp rename to test.cpp index c3bd2a4..0696cdd 100644 --- a/mod.cpp +++ b/test.cpp @@ -5,4 +5,3 @@ int add(int a, int b) { return a + b; } NB_MODULE(my_ext, m) { m.def("add", &add); } -