Repository: qvacua/vimr Branch: master Commit: 371354a7e126 Files: 376 Total size: 5.6 MB Directory structure: gitextract_y2whn9_4/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ └── build-universal-neovim.yml ├── .gitignore ├── .gitmodules ├── .swiftformat ├── .swiftlint.yml ├── Brewfile ├── Commons/ │ ├── .gitignore │ ├── Package.swift │ ├── README.md │ ├── Sources/ │ │ ├── Commons/ │ │ │ ├── AppKitCommons.swift │ │ │ ├── ConditionVariable.swift │ │ │ ├── CoreCommons.swift │ │ │ ├── Defs.swift │ │ │ ├── FifoCache.swift │ │ │ ├── FileUtils.swift │ │ │ ├── FoundationCommons.swift │ │ │ ├── LoggerCommons.swift │ │ │ ├── ProcessUtils.swift │ │ │ └── SwiftCommons.swift │ │ └── CommonsObjC/ │ │ ├── NetUtils.m │ │ └── include/ │ │ └── NetUtils.h │ ├── Support/ │ │ ├── CommonsSupport.xcodeproj/ │ │ │ └── project.pbxproj │ │ └── EnvVarTest/ │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets/ │ │ │ ├── AccentColor.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj/ │ │ │ └── MainMenu.xib │ │ └── Info.plist │ └── Tests/ │ └── CommonsTests/ │ ├── ArrayCommonsTest.swift │ ├── DictionaryCommonsTest.swift │ ├── FifoCacheTest.swift │ ├── FileUtilsTest.swift │ ├── Resources/ │ │ ├── FileUtilsTest/ │ │ │ ├── a1/ │ │ │ │ ├── a1-file1 │ │ │ │ └── a2/ │ │ │ │ └── a1-a2-file1 │ │ │ └── b1/ │ │ │ └── b1-file1 │ │ └── UrlCommonsTest/ │ │ ├── .dot-hidden-file │ │ └── dummy.rtfd/ │ │ └── TXT.rtf │ ├── StringCommonsTest.swift │ ├── SwiftCommonsTest.swift │ └── UrlCommonsTest.swift ├── DEVELOP.md ├── Ignore/ │ ├── Package.swift │ ├── README.md │ ├── Sources/ │ │ └── Ignore/ │ │ ├── FileLineReader.swift │ │ ├── Filter.swift │ │ ├── GitUtils.swift │ │ └── Ignore.swift │ └── Tests/ │ └── IgnoreTests/ │ ├── FileLineReaderTest.swift │ ├── FilterTest.swift │ ├── IgnoreSplitTest.swift │ ├── IgnoreTest.swift │ └── Resources/ │ ├── FileLineReaderTest/ │ │ ├── dos-no-line-ending-at-the-end.txt │ │ ├── dos-only-new-lines.txt │ │ ├── dos-with-line-ending-at-the-end.txt │ │ ├── empty.txt │ │ ├── unix-no-line-ending-at-the-end.txt │ │ ├── unix-only-new-lines.txt │ │ └── unix-with-line-ending-at-the-end.txt │ └── IgnoreCollectionTest/ │ ├── .gitignore │ ├── .ignore │ ├── ignore-splitting-0 │ ├── ignore-splitting-1 │ ├── ignore-splitting-2 │ ├── ignore-splitting-3 │ └── ignore-splitting-4 ├── LICENSE ├── NvimApi/ │ ├── .gitignore │ ├── LICENSE │ ├── Package.swift │ ├── README.md │ ├── Sources/ │ │ └── NvimApi/ │ │ ├── Defs.swift │ │ ├── MsgpackRpc.swift │ │ ├── NvimApi.generated.swift │ │ ├── NvimApi.swift │ │ ├── NvimApiSync.generated.swift │ │ └── NvimApiSync.swift │ ├── Tests/ │ │ └── NvimApiTests/ │ │ ├── DictionaryExtensionTests.swift │ │ ├── MsgpackRpcNeovimExample.swift │ │ ├── NvimApiExample.swift │ │ └── NvimApiSyncTest.swift │ └── bin/ │ ├── api_generator_common.py │ ├── generate_async_api_methods.py │ ├── generate_sources.sh │ ├── generate_sync_api_methods.py │ └── requirements.txt ├── NvimView/ │ ├── .gitignore │ ├── Package.swift │ ├── README.md │ ├── Sources/ │ │ └── NvimView/ │ │ ├── AttributesRunDrawer.swift │ │ ├── CellAttributes.swift │ │ ├── CellAttributesCollection.swift │ │ ├── ColorUtils.swift │ │ ├── Defs.swift │ │ ├── FontUtils.swift │ │ ├── Geometry.swift │ │ ├── KeyUtils.swift │ │ ├── MessagePackCommons.swift │ │ ├── ModeInfo.swift │ │ ├── NvimAutoCommandEvent.generated.swift │ │ ├── NvimCursorModeShape.generated.swift │ │ ├── NvimProcess.swift │ │ ├── NvimView+Api.swift │ │ ├── NvimView+Debug.swift │ │ ├── NvimView+Dragging.swift │ │ ├── NvimView+Draw.swift │ │ ├── NvimView+Geometry.swift │ │ ├── NvimView+Key.swift │ │ ├── NvimView+MenuItems.swift │ │ ├── NvimView+Mouse.swift │ │ ├── NvimView+Objects.swift │ │ ├── NvimView+RemoteOptions.swift │ │ ├── NvimView+Resize.swift │ │ ├── NvimView+TouchBar.swift │ │ ├── NvimView+Types.swift │ │ ├── NvimView+UiBridge.swift │ │ ├── NvimView.swift │ │ ├── Resources/ │ │ │ └── com.qvacua.NvimView.vim │ │ ├── Runs.swift │ │ ├── Typesetter.swift │ │ └── UGrid.swift │ ├── Support/ │ │ ├── DrawerDev/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ └── MainMenu.xib │ │ │ ├── Info.plist │ │ │ ├── MyView.swift │ │ │ └── NvimView.swift │ │ ├── DrawerPerf/ │ │ │ ├── 0.json │ │ │ ├── 1.json │ │ │ ├── 2.json │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ └── MainMenu.xib │ │ │ ├── FontTrait.swift │ │ │ ├── Info.plist │ │ │ ├── NvimView.swift │ │ │ └── PerfTester.swift │ │ ├── MinimalNvimViewDemo/ │ │ │ ├── AppDelegate.swift │ │ │ ├── Assets.xcassets/ │ │ │ │ ├── AppIcon.appiconset/ │ │ │ │ │ └── Contents.json │ │ │ │ └── Contents.json │ │ │ ├── Base.lproj/ │ │ │ │ ├── Document.xib │ │ │ │ └── MainMenu.xib │ │ │ ├── Document.swift │ │ │ └── Info.plist │ │ └── NvimViewSupport.xcodeproj/ │ │ ├── project.pbxproj │ │ ├── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata/ │ │ └── xcschemes/ │ │ └── MinimalNvimViewDemo.xcscheme │ └── Tests/ │ └── NvimViewTests/ │ ├── CellAttributesCollectionTest.swift │ ├── NimbleCommons.swift │ ├── TypesetterTest.swift │ └── UGridTest.swift ├── README.md ├── Tabs/ │ ├── .gitignore │ ├── Package.swift │ ├── README.md │ ├── Sources/ │ │ └── Tabs/ │ │ ├── DraggingSingleRowStackView.swift │ │ ├── HorizontalOnlyScrollView.swift │ │ ├── Tab.swift │ │ ├── TabBar.swift │ │ └── Theme.swift │ └── Support/ │ ├── TabsSupport/ │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets/ │ │ │ ├── AccentColor.colorset/ │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset/ │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Base.lproj/ │ │ │ └── MainMenu.xib │ │ └── Info.plist │ └── TabsSupport.xcodeproj/ │ └── project.pbxproj ├── VimR/ │ ├── Dev.xcconfig │ ├── Release.xcconfig │ ├── VimR/ │ │ ├── AdvancedPrefReducer.swift │ │ ├── AdvencedPref.swift │ │ ├── AppDelegate.swift │ │ ├── AppDelegateReducer.swift │ │ ├── AppKitCommons.swift │ │ ├── AppearancePref.swift │ │ ├── AppearancePrefReducer.swift │ │ ├── Application.swift │ │ ├── Assets.xcassets/ │ │ │ └── AppIcon.appiconset/ │ │ │ └── Contents.json │ │ ├── Base.lproj/ │ │ │ ├── Credits.rtf │ │ │ ├── FileBrowserMenu.xib │ │ │ ├── MainMenu.xib │ │ │ ├── MainWindow.xib │ │ │ ├── OpenQuicklyWindow.xib │ │ │ └── PrefWindow.xib │ │ ├── Bridge.h │ │ ├── BufferList.swift │ │ ├── BufferListReducer.swift │ │ ├── Context.swift │ │ ├── CoreDataStack.swift │ │ ├── CssUtils.swift │ │ ├── DefaultShortcuts.swift │ │ ├── Defs.swift │ │ ├── FileBrowser.swift │ │ ├── FileBrowserReducer.swift │ │ ├── FileItem+CoreDataClass.h │ │ ├── FileItem+CoreDataClass.m │ │ ├── FileMonitor.swift │ │ ├── FileOutlineView.swift │ │ ├── FoundationCommons.swift │ │ ├── FuzzySearch.xcdatamodel/ │ │ │ └── contents │ │ ├── FuzzySearchService.swift │ │ ├── GeneralPref.swift │ │ ├── GeneralPrefReducer.swift │ │ ├── HtmlPreviewMiddleware.swift │ │ ├── HtmlPreviewTool.swift │ │ ├── HtmlPreviewToolReducer.swift │ │ ├── HttpServerMiddleware.swift │ │ ├── IgnoreService.swift │ │ ├── ImageAndTextTableCell.swift │ │ ├── Info.plist │ │ ├── KeysPref.swift │ │ ├── KeysPrefReducer.swift │ │ ├── MainWindow+Actions.swift │ │ ├── MainWindow+CustomTitle.swift │ │ ├── MainWindow+Delegates.swift │ │ ├── MainWindow+Types.swift │ │ ├── MainWindow.swift │ │ ├── MainWindowReducer.swift │ │ ├── MarkdownPreviewMiddleware.swift │ │ ├── MarkdownPreviewReducer.swift │ │ ├── MarkdownTool.swift │ │ ├── MarkdownToolReducer.swift │ │ ├── OpenQuicklyFileViewRow.swift │ │ ├── OpenQuicklyReducer.swift │ │ ├── OpenQuicklyWindow.swift │ │ ├── PrefMiddleware.swift │ │ ├── PrefPane.swift │ │ ├── PrefUtils.swift │ │ ├── PrefWindow.swift │ │ ├── PrefWindowReducer.swift │ │ ├── Redux.swift │ │ ├── Resources.swift │ │ ├── RpcAppearanceReducer.swift │ │ ├── RpcEvents.swift │ │ ├── ScoredUrl.h │ │ ├── ScoredUrl.m │ │ ├── ShortcutItem.swift │ │ ├── ShortcutService.swift │ │ ├── ShortcutsPref.swift │ │ ├── ShortcutsTableSubviews.swift │ │ ├── States.swift │ │ ├── Theme.swift │ │ ├── ThemedTableSubviews.swift │ │ ├── Throttler.swift │ │ ├── ToolsPref.swift │ │ ├── ToolsPrefReducer.swift │ │ ├── Types.swift │ │ ├── UiRoot.swift │ │ ├── UiRootReducer.swift │ │ ├── com.qvacua.VimR.vim │ │ ├── macvim-file-icons/ │ │ │ ├── MacVim-applescript.icns │ │ │ ├── MacVim-as.icns │ │ │ ├── MacVim-asp.icns │ │ │ ├── MacVim-bash.icns │ │ │ ├── MacVim-bib.icns │ │ │ ├── MacVim-bsh.icns │ │ │ ├── MacVim-c.icns │ │ │ ├── MacVim-cfg.icns │ │ │ ├── MacVim-cgi.icns │ │ │ ├── MacVim-cpp.icns │ │ │ ├── MacVim-cs.icns │ │ │ ├── MacVim-csfg.icns │ │ │ ├── MacVim-css.icns │ │ │ ├── MacVim-csv.icns │ │ │ ├── MacVim-dtd.icns │ │ │ ├── MacVim-dylan.icns │ │ │ ├── MacVim-erl.icns │ │ │ ├── MacVim-f.icns │ │ │ ├── MacVim-fscript.icns │ │ │ ├── MacVim-generic.icns │ │ │ ├── MacVim-gtd.icns │ │ │ ├── MacVim-h.icns │ │ │ ├── MacVim-hs.icns │ │ │ ├── MacVim-html.icns │ │ │ ├── MacVim-ics.icns │ │ │ ├── MacVim-inc.icns │ │ │ ├── MacVim-ini.icns │ │ │ ├── MacVim-io.icns │ │ │ ├── MacVim-java.icns │ │ │ ├── MacVim-js.icns │ │ │ ├── MacVim-jsp.icns │ │ │ ├── MacVim-lisp.icns │ │ │ ├── MacVim-log.icns │ │ │ ├── MacVim-m.icns │ │ │ ├── MacVim-markdown.icns │ │ │ ├── MacVim-mm.icns │ │ │ ├── MacVim-patch.icns │ │ │ ├── MacVim-perl.icns │ │ │ ├── MacVim-php.icns │ │ │ ├── MacVim-plist.icns │ │ │ ├── MacVim-properties.icns │ │ │ ├── MacVim-ps.icns │ │ │ ├── MacVim-py.icns │ │ │ ├── MacVim-rb.icns │ │ │ ├── MacVim-rst.icns │ │ │ ├── MacVim-sch.icns │ │ │ ├── MacVim-sql.icns │ │ │ ├── MacVim-tcl.icns │ │ │ ├── MacVim-tex.icns │ │ │ ├── MacVim-tsv.icns │ │ │ ├── MacVim-txt.icns │ │ │ ├── MacVim-vb.icns │ │ │ ├── MacVim-vba.icns │ │ │ ├── MacVim-vcf.icns │ │ │ ├── MacVim-vim.icns │ │ │ ├── MacVim-wiki.icns │ │ │ ├── MacVim-xml.icns │ │ │ ├── MacVim-xsl.icns │ │ │ └── MacVim-yaml.icns │ │ ├── markdown/ │ │ │ ├── color-overrides.css │ │ │ ├── github-markdown.css │ │ │ └── template.html │ │ ├── preview/ │ │ │ ├── base.css │ │ │ ├── empty.html │ │ │ ├── error.html │ │ │ ├── save-first.html │ │ │ └── select-first.html │ │ └── vimr │ ├── VimR.xcodeproj/ │ │ ├── project.pbxproj │ │ ├── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata/ │ │ │ └── IDEWorkspaceChecks.plist │ │ └── xcshareddata/ │ │ └── xcschemes/ │ │ └── VimR.xcscheme │ └── VimRTests/ │ ├── IgnoreServiceTest.swift │ ├── Info.plist │ └── Resources/ │ └── ignore-service-test/ │ ├── .gitignore │ └── a/ │ ├── .gitignore │ └── aa/ │ └── aaa/ │ └── .gitignore ├── VimR.xcworkspace/ │ ├── contents.xcworkspacedata │ └── xcshareddata/ │ ├── IDEWorkspaceChecks.plist │ └── WorkspaceSettings.xcsettings ├── Workspace/ │ ├── .gitignore │ ├── Package.swift │ ├── README.md │ └── Sources/ │ └── Workspace/ │ ├── InnterToolBar.swift │ ├── ProxyWorkspaceBar.swift │ ├── Workspace.swift │ ├── WorkspaceBar.swift │ ├── WorkspaceTool.swift │ └── WorkspaceToolButton.swift ├── appcast.xml ├── appcast_snapshot.xml ├── bin/ │ ├── .python-version │ ├── README.md │ ├── build_jenkins.sh │ ├── build_nightly_jenkins.sh │ ├── build_nvimserver.sh │ ├── build_release.sh │ ├── build_vimr.sh │ ├── generate_autocmds.py │ ├── generate_cursor_shape.py │ ├── generate_sources.sh │ ├── neovim/ │ │ ├── bin/ │ │ │ ├── .gitignore │ │ │ ├── build_neovim.sh │ │ │ ├── build_neovim_for_dev.sh │ │ │ └── build_universal_neovim.sh │ │ └── resources/ │ │ ├── NvimServer.entitlements │ │ └── buildInfo.json │ ├── notarize_vimr.sh │ ├── pre-commit.py │ ├── publish_release.sh │ ├── requirements.txt │ ├── set_appcast.py │ ├── set_new_versions.sh │ ├── setup_markdown_css.sh │ ├── shelly.py │ └── sign_vimr.sh ├── ci/ │ ├── README.md │ └── create_build_job.groovy ├── docs/ │ └── notes-on-cocoa-text-input.md └── resources/ ├── appcast_template.xml ├── autocmds.template.swift ├── cursor_shape.template.swift └── release-notes.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: [qvacua] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] ================================================ FILE: .github/workflows/build-universal-neovim.yml ================================================ name: 'Universal Neovim' on: push: tags: # example: neovim-v0.10.0-20240601.102525 - neovim-v[0-9]+.[0-9]+.[0-9]+-* jobs: build-x86: runs-on: macos-15-intel steps: - uses: actions/checkout@v4 with: fetch-depth: 0 submodules: true - run: brew bundle - run: clean=true ./bin/neovim/bin/build_neovim.sh - uses: actions/upload-artifact@v4 with: name: nvim-macos-x86_64 path: Neovim/build/nvim-macos-x86_64.tar.gz retention-days: 1 build-arm: runs-on: macos-15 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 submodules: true - run: brew bundle - run: clean=true ./bin/neovim/bin/build_neovim.sh - uses: actions/upload-artifact@v4 with: name: nvim-macos-arm64 path: Neovim/build/nvim-macos-arm64.tar.gz retention-days: 1 publish: needs: [build-x86, build-arm] runs-on: macos-15 permissions: contents: write steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions/download-artifact@v4 - run: brew bundle - run: | mv nvim-macos-*/* . rm -r nvim-macos-x86_64 nvim-macos-arm64 - run: ./bin/neovim/bin/build_universal_neovim.sh - run: | gh release create ${{ github.ref_name }} \ --prerelease \ --title "Universal ${{ github.ref_name }}" \ --notes "Neovim universal build with libintl, not signed." \ --target ${{ github.sha }} \ nvim-macos-x86_64.tar.gz nvim-macos-arm64.tar.gz nvim-macos-universal.tar.bz env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} ================================================ FILE: .gitignore ================================================ .DS_Store .idea/ *.ipr *.iws *.iml *.pbxuser xcuserdata DerivedData *.xcuserstate .vscode/ .swiftpm Package.resolved build/ .build/ .DerivedData/ ================================================ FILE: .gitmodules ================================================ [submodule "Neovim"] path = Neovim url = https://github.com/neovim/neovim.git ================================================ FILE: .swiftformat ================================================ --swiftversion 6.0 --exclude **/*.template.swift,.build,.swiftpm --indent 2 --maxwidth 100 --self insert --wraparguments before-first --ranges no-space --strip-unused-args unnamed-only --ifdef no-indent --import-grouping testable-bottom # sortedImports --trailing-commas always --rules sortImports --rules redundantSelf --rules indent --rules wraparguments --rules trailingCommas --rules typeSugar ================================================ FILE: .swiftlint.yml ================================================ disabled_rules: - trailing_comma - identifier_name - function_parameter_count - file_length - no_unchecked_sendable - opening_brace - statement_position - function_body_length - duplicate_enum_cases - closure_parameter_position - nesting - type_body_length - line_length - cyclomatic_complexity - large_tuple - trailing_whitespace - type_name excluded: - "**/build" - "**/.build" - "**/.swiftpm" indentation: 2 custom_rules: no_objcMembers: name: "@objcMembers" regex: "@objcMembers" message: "Explicitly use @objc on each member you want to expose to Objective-C" severity: error no_direct_standard_out_logs: name: "Writing log messages directly to standard out is disallowed" regex: "(\\bprint|\\bdebugPrint|\\bdump|Swift\\.print|Swift\\.debugPrint|Swift\\.dump|_printChanges)\\s*\\(" match_kinds: - identifier message: "Don't commit `print(…)`, `debugPrint(…)`, `dump(…)`, or `_printChanges()` as they write to standard out in release. Either log to a dedicated logging system or silence this warning in debug-only scenarios explicitly using `// swiftlint:disable:next no_direct_standard_out_logs`" severity: error no_file_literal: name: "#file is disallowed" regex: "(\\b#file\\b)" match_kinds: - identifier message: "Instead of #file, use #fileID" severity: error no_filepath_literal: name: "#filePath is disallowed" regex: "(\\b#filePath\\b)" match_kinds: - identifier message: "Instead of #filePath, use #fileID." severity: error no_unchecked_sendable: name: "`@unchecked Sendable` is discouraged." regex: "@unchecked Sendable" match_kinds: - attribute.builtin - typeidentifier message: "Instead of using `@unchecked Sendable`, consider a safe alternative like a standard `Sendable` conformance or using `@preconcurrency import`. If you really must use `@unchecked Sendable`, you can add a `// swiftlint:disable:next no_unchecked_sendable` annotation with an explanation for how we know the type is thread-safe, and why we have to use @unchecked Sendable instead of Sendable. More explanation and suggested safe alternatives are available at https://github.com/airbnb/swift#unchecked-sendable." severity: error ================================================ FILE: Brewfile ================================================ brew 'coreutils' brew 'gnu-sed' brew 'libtool' brew 'automake' brew 'cmake' brew 'pkg-config' brew 'gettext' brew 'ninja' brew 'coreutils' brew 'python3' ================================================ FILE: Commons/.gitignore ================================================ .DS_Store /.build /Packages /*.xcodeproj xcuserdata/ ================================================ FILE: Commons/Package.swift ================================================ // swift-tools-version: 6.0 import PackageDescription let package = Package( name: "Commons", platforms: [.macOS(.v14)], products: [ .library(name: "Commons", targets: ["Commons", "CommonsObjC"]), ], dependencies: [ .package(url: "https://github.com/Quick/Nimble", from: "14.0.0"), .package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "0.62.2"), ], targets: [ .target( name: "Commons", dependencies: [], plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")] ), .target(name: "CommonsObjC", dependencies: []), .testTarget( name: "CommonsTests", dependencies: ["Commons", "Nimble"], resources: [ .copy("Resources"), ] ), ] ) ================================================ FILE: Commons/README.md ================================================ # Commons A description of this package. ================================================ FILE: Commons/Sources/Commons/AppKitCommons.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import AppKit public extension NSAttributedString { func draw(at point: CGPoint, angle: CGFloat) { var translation = AffineTransform.identity var rotation = AffineTransform.identity translation.translate(x: point.x, y: point.y) rotation.rotate(byRadians: angle) (translation as NSAffineTransform).concat() (rotation as NSAffineTransform).concat() self.draw(at: CGPoint.zero) rotation.invert() translation.invert() (rotation as NSAffineTransform).concat() (translation as NSAffineTransform).concat() } var wholeRange: NSRange { NSRange(location: 0, length: self.length) } } public extension NSColor { static var random: NSColor { NSColor( calibratedRed: .random(in: 0...1), green: .random(in: 0...1), blue: .random(in: 0...1), alpha: 1.0 ) } var int: Int { if let color = self.usingColorSpace(.sRGB) { let a = Int(color.alphaComponent * 255) let r = Int(color.redComponent * 255) let g = Int(color.greenComponent * 255) let b = Int(color.blueComponent * 255) return a << 24 | r << 16 | g << 8 | b } else { return 0 } } var hex: String { String(String(format: "%06X", self.int).suffix(6)) } convenience init(rgb: Int) { // @formatter:off let red = ((rgb >> 16) & 0xFF).cgf / 255.0 let green = ((rgb >> 8) & 0xFF).cgf / 255.0 let blue = (rgb & 0xFF).cgf / 255.0 // @formatter:on self.init(srgbRed: red, green: green, blue: blue, alpha: 1.0) } convenience init?(hex: String) { guard hex.count == 6, let uint64 = Scanner(string: hex).scanUInt64(representation: .hexadecimal) else { return nil } let result = UInt32(uint64) let r = (result & 0xFF0000) >> 16 let g = (result & 0x00FF00) >> 8 let b = (result & 0x0000FF) self.init(srgbRed: r.cgf / 255, green: g.cgf / 255, blue: b.cgf / 255, alpha: 1) } func brightening(by factor: CGFloat) -> NSColor { guard let color = self.usingColorSpace(.sRGB) else { return self } let h = color.hueComponent let s = color.saturationComponent let b = color.brightnessComponent let a = color.alphaComponent return NSColor(hue: h, saturation: s, brightness: b * factor, alpha: a) } } public extension NSImage { func tinting(with color: NSColor) -> NSImage { // swiftlint:disable force_cast // Copy should be safe to force cast. let result = self.copy() as! NSImage // swiftlint:enable force_cast result.lockFocus() color.set() CGRect(origin: .zero, size: self.size).fill(using: .sourceAtop) result.unlockFocus() return result } } public extension NSButton { var boolState: Bool { get { self.state == .on ? true : false } set { self.state = newValue ? .on : .off } } } public extension NSMenuItem { var boolState: Bool { get { self.state == .on ? true : false } set { self.state = newValue ? .on : .off } } } public extension NSView { func removeAllSubviews() { self.subviews.forEach { $0.removeFromSuperview() } } func removeAllConstraints() { self.removeConstraints(self.constraints) } func beFirstResponder() { self.window?.makeFirstResponder(self) } /// - Returns: Rects currently being drawn /// - Warning: Call only in drawRect() func rectsBeingDrawn() -> [CGRect] { var rectsPtr: UnsafePointer? var count = 0 self.getRectsBeingDrawn(&rectsPtr, count: &count) return Array(UnsafeBufferPointer(start: rectsPtr, count: count)) } } public extension NSEvent.ModifierFlags { // Values are from // https://github.com/SFML/SFML/blob/master/src/SFML/Window/OSX/SFKeyboardModifiersHelper.mm static let rightShift = NSEvent.ModifierFlags(rawValue: 0x020004) static let leftShift = NSEvent.ModifierFlags(rawValue: 0x020002) static let rightCommand = NSEvent.ModifierFlags(rawValue: 0x100010) static let leftCommand = NSEvent.ModifierFlags(rawValue: 0x100008) static let rightOption = NSEvent.ModifierFlags(rawValue: 0x080040) static let leftOption = NSEvent.ModifierFlags(rawValue: 0x080020) static let rightControl = NSEvent.ModifierFlags(rawValue: 0x042000) static let leftControl = NSEvent.ModifierFlags(rawValue: 0x040001) } ================================================ FILE: Commons/Sources/Commons/ConditionVariable.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation public final class ConditionVariable: Sendable { private(set) nonisolated(unsafe) var posted: Bool public init(posted: Bool = false) { self.posted = posted } public func wait(for seconds: TimeInterval, then fn: (() -> Void)? = nil) { self.condition.lock() defer { self.condition.unlock() } while !self.posted { self.condition.wait(until: Date(timeIntervalSinceNow: seconds)) self.posted = true } fn?() } public func broadcast(then fn: (() -> Void)? = nil) { self.condition.lock() defer { self.condition.unlock() } self.posted = true self.condition.broadcast() fn?() } private let condition = NSCondition() } ================================================ FILE: Commons/Sources/Commons/CoreCommons.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation public extension CFRange { static let zero = CFRange(location: 0, length: 0) } public extension CGSize { func scaling(_ factor: CGFloat) -> CGSize { CGSize(width: self.width * factor, height: self.height * factor) } } ================================================ FILE: Commons/Sources/Commons/Defs.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation enum Defs { static let loggerSubsystem = "com.qvacua.Commons" enum LoggerCategory { static let general = "general" } } let dlog = DevLogger.shared ================================================ FILE: Commons/Sources/Commons/FifoCache.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import os public final class ThreadSafeFifoCache: @unchecked Sendable { public init(count: Int) { self.count = count self.keyWriteIndex = 0 self.keys = Array(repeating: nil, count: count) self.storage = Dictionary(minimumCapacity: count) } public func set(_ value: Value, forKey key: Key) { self.lock.lock() if let keyToDel = self.keys[self.keyWriteIndex] { self.storage.removeValue(forKey: keyToDel) } self.keys[self.keyWriteIndex] = key self.storage[key] = value self.keyWriteIndex = (self.keyWriteIndex + 1) % self.count self.lock.unlock() } public func valueForKey(_ key: Key) -> Value? { self.lock.lock() let value = self.storage[key] self.lock.unlock() return value } public func clear() { self.lock.lock() self.keys = Array(repeating: nil, count: self.count) self.storage.removeAll(keepingCapacity: true) self.lock.unlock() } private let count: Int private var keys: [Key?] private var keyWriteIndex: Int private var storage: [Key: Value] private let lock = OSAllocatedUnfairLock() } public final class FifoCache { public init(count: Int) { self.count = count self.keyWriteIndex = 0 self.keys = Array(repeating: nil, count: count) self.storage = Dictionary(minimumCapacity: count) } public func set(_ value: Value, forKey key: Key) { if let keyToDel = self.keys[self.keyWriteIndex] { self.storage.removeValue(forKey: keyToDel) } self.keys[self.keyWriteIndex] = key self.storage[key] = value self.keyWriteIndex = (self.keyWriteIndex + 1) % self.count } public func valueForKey(_ key: Key) -> Value? { self.storage[key] } public func clear() { self.keys = Array(repeating: nil, count: self.count) self.storage.removeAll(keepingCapacity: true) } private let count: Int private var keys: [Key?] private var keyWriteIndex: Int private var storage: [Key: Value] } ================================================ FILE: Commons/Sources/Commons/FileUtils.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import AppKit import Cocoa import UniformTypeIdentifiers // icon(forFile:) is thread-safe: https://developer.apple.com/documentation/appkit/nsworkspace/icon(forfile:) // icon(for:) probably is thread-safe private nonisolated(unsafe) let workspace = NSWorkspace.shared // NSCache is thread-safe: https://developer.apple.com/documentation/foundation/nscache#overview private nonisolated(unsafe) let iconsCache = NSCache() // FileManager is thread-safe: // https://developer.apple.com/documentation/foundation/filemanager#1651181 private nonisolated(unsafe) let fm = FileManager.default public final class FileUtils { private static let keysToGet: [URLResourceKey] = [ .isRegularFileKey, .isDirectoryKey, .isPackageKey, .isHiddenKey, ] private static let scanOptions: FileManager.DirectoryEnumerationOptions = [ .skipsSubdirectoryDescendants, .skipsPackageDescendants, ] public static let userHomeUrl = URL(fileURLWithPath: NSHomeDirectory(), isDirectory: true) public static func tempDir() -> URL { URL(fileURLWithPath: NSTemporaryDirectory(), isDirectory: true) } public static func directDescendants(of url: URL) -> [URL] { guard let childUrls = try? fm.contentsOfDirectory( at: url, includingPropertiesForKeys: self.keysToGet, options: self.scanOptions ) else { return [] } return childUrls } public static func fileExists(at url: URL) -> Bool { guard url.isFileURL else { return false } let path = url.path return fm.fileExists(atPath: path) } public static func commonParent(of urls: [URL]) -> URL { guard urls.count > 0 else { return URL(fileURLWithPath: "/", isDirectory: true) } let pathComps = urls.map { $0.deletingLastPathComponent().pathComponents } let min = pathComps.map(\.count).min()! let pathCompsOnlyMin = pathComps.map { $0[0.. 1 { idx - 1 } else { result } } let result = pathCompsOnlyMin[0] let possibleParent = NSURL.fileURL(withPathComponents: Array(result[0...commonIdx]))! return possibleParent.hasDirectoryPath ? possibleParent : possibleParent.parent } public static func icon(forType type: String) -> NSImage { workspace .icon(for: UTType(type) ?? UTType.text) } public static func icon(forUrl url: URL) -> NSImage? { if let cached = iconsCache.object(forKey: url as NSURL) { return cached } let path = url.path let icon = workspace.icon(forFile: path) icon.size = CGSize(width: 16, height: 16) iconsCache.setObject(icon, forKey: url as NSURL) return icon } } ================================================ FILE: Commons/Sources/Commons/FoundationCommons.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import os public extension Array where Element: Hashable { // From https://stackoverflow.com/a/46354989 func uniqued() -> [Element] { var seen = Set() return self.filter { seen.insert($0).inserted } } } public extension Array { func data() -> Data { self.withUnsafeBufferPointer(Data.init) } } public extension RandomAccessCollection where Index == Int { func groupedRanges(with marker: (Element) -> some Equatable) -> [ClosedRange] { guard !self.isEmpty else { return [] } var result = [ClosedRange]() result.reserveCapacity(self.count / 2) var start = self.startIndex var lastMarker = marker(self[start]) for i in self.indices.dropFirst() { let currentMarker = marker(self[i]) if lastMarker != currentMarker { result.append(start...i - 1) start = i lastMarker = currentMarker } } result.append(start...self.endIndex - 1) return result } } public extension NSRange { static let notFound = NSRange(location: NSNotFound, length: 0) var inclusiveEndIndex: Int { self.location + self.length - 1 } } public extension URL { func isParent(of url: URL) -> Bool { guard self.isFileURL, url.isFileURL else { return false } let myPathComps = self.pathComponents let targetPathComps = url.pathComponents guard targetPathComps.count == myPathComps.count + 1 else { return false } return Array(targetPathComps[0.. Bool { guard self.isFileURL, url.isFileURL else { return false } let myPathComps = self.pathComponents let targetPathComps = url.pathComponents guard targetPathComps.count > myPathComps.count else { return false } return Array(targetPathComps[0.. Bool { if parentUrl == self { return false } let pathComps = self.pathComponents let parentPathComps = parentUrl.pathComponents guard pathComps.count > parentPathComps.count else { return false } guard Array(pathComps[0.. some Any ) { let message = "[\((file as NSString).lastPathComponent) - \(function):\(line)] \(msg())" self.log(level: .error, "\(message)") } func fault( file: String = #file, function: String = #function, line: Int = #line, _ msg: @autoclosure () -> some Any ) { let message = "[\((file as NSString).lastPathComponent) - \(function):\(line)] \(msg())" self.log(level: .fault, "\(message)") } } public struct DevLogger: Sendable { public static let shared = DevLogger(mode: .file) public enum Mode { case os case file case noop } private let appender: LogAppender public init(mode: Mode) { let subsystem = Bundle.main.bundleIdentifier ?? "app-\(UUID().uuidString)" let category = "development" #if DEBUG || TRACE switch mode { case .os: self.appender = OsAppender(subsystem: subsystem, category: category) case .file: self.appender = FileAppender(subsystem: subsystem, category: category) ?? OsAppender( subsystem: subsystem, category: category ) case .noop: self.appender = NoopAppender() } #else self.appender = NoopAppender() #endif } public func debug( file: String = #file, function: String = #function, line: Int = #line ) { #if DEBUG self.appender.debug(file: file, function: function, line: line, "MARK") #endif } public func debug( file: String = #file, function: String = #function, line: Int = #line, _ msg: @autoclosure () -> some Any ) { #if DEBUG self.appender.debug(file: file, function: function, line: line, "\(msg())") #endif } public func trace( file: String = #file, function: String = #function, line: Int = #line, _ msg: @autoclosure () -> some Any ) { #if TRACE self.appender.trace(file: file, function: function, line: line, "\(msg())") #endif } protocol LogAppender: Sendable { func debug(file: String, function: String, line: Int, _ msg: String) func trace(file: String, function: String, line: Int, _ msg: String) } struct NoopAppender: LogAppender { func debug(file: String, function: String, line: Int, _: String) {} func trace(file: String, function: String, line: Int, _: String) {} } // We sync using a DispatchQueue class FileAppender: LogAppender, @unchecked Sendable { static let fileSizeLimit = 1024 * 1024 * 10 // 10MB private let logger: Logger private let queue: DispatchQueue private let logDir: URL private let dateStr: String private var logFileNumber = 0 private var fileHandle: FileHandle private var estimatedFileSize = UInt64(0) private let timeFormatter = DateFormatter() init?(subsystem: String, category: String) { self.logger = Logger(subsystem: subsystem, category: "info") self.queue = DispatchQueue(label: "\(subsystem).\(category)-queue", qos: .utility) let formatter = DateFormatter() formatter.dateFormat = "yyyyMMdd.HHmmss" self.dateStr = formatter.string(from: Date()) self.timeFormatter.dateFormat = "HH:mm:ss.SSS" let tempDir = FileManager.default.temporaryDirectory self.logDir = tempDir.appendingPathComponent("\(subsystem).\(category)") do { try FileManager.default.createDirectory(at: self.logDir, withIntermediateDirectories: true) let logFile = self.logDir .appendingPathComponent("\(self.dateStr)-\(self.logFileNumber).log") if !FileManager.default.fileExists(atPath: logFile.path) { FileManager.default.createFile(atPath: logFile.path, contents: nil) } self.fileHandle = try FileHandle(forWritingTo: logFile) self.estimatedFileSize = try self.fileHandle.seekToEnd() self.logger.info("Logging to \(logFile)") } catch { self.logger.error("Error creating FileAppender!") return nil } } deinit { do { try self.fileHandle.close() } catch { self.logger.error("Could not close file handle: \(error)") } } // Only call when inside the queue private func checkFileSizeAndRotate() { guard self.estimatedFileSize >= Self.fileSizeLimit else { return } self.logFileNumber += 1 let logFile = self.logDir .appendingPathComponent("\(self.dateStr)-\(self.logFileNumber).log") if !FileManager.default.fileExists(atPath: logFile.path) { FileManager.default.createFile(atPath: logFile.path, contents: nil) } do { let newFileHandle = try FileHandle(forWritingTo: logFile) self.estimatedFileSize = try newFileHandle.seekToEnd() try self.fileHandle.close() self.fileHandle = newFileHandle self.logger.info("Rotated: logging to \(logFile)") } catch { self.logger .error(""" Rotation to \(logFile) failed: \(error). Logging to the current log file, maybe rotation will succeed when logging next. """) } } private func write( file f: String, function fn: String, line l: Int, prefix: String, _ msg: String ) { let now = Date() self.queue.async { let t = self.timeFormatter.string(from: now) let str = "\(t) [\(prefix)] [\((f as NSString).lastPathComponent) - \(fn):\(l)] \(msg)\n" let data = Data(str.utf8) do { try self.fileHandle.write(contentsOf: data) self.estimatedFileSize += UInt64(data.count) } catch { self.logger.error(""" Couldn't log to file: err: \(error) Msg: \(str.dropLast()) """) return } self.checkFileSizeAndRotate() } } func debug(file: String, function: String, line: Int, _ msg: String) { self.write(file: file, function: function, line: line, prefix: "DEBUG", msg) } func trace(file: String, function: String, line: Int, _ msg: String) { self.write(file: file, function: function, line: line, prefix: "TRACE", msg) } } struct OsAppender: LogAppender { private let logger: Logger init(subsystem: String, category: String) { self.logger = Logger(subsystem: subsystem, category: category) } func debug(file: String, function: String, line: Int, _ msg: String) { self.logger.log( level: .debug, "[DEBUG] [\((file as NSString).lastPathComponent) - \(function):\(line)] \(msg)" ) } func trace(file: String, function: String, line: Int, _ msg: String) { self.logger.log( level: .debug, "[TRACE] [\((file as NSString).lastPathComponent) - \(function):\(line)] \(msg)" ) } } } ================================================ FILE: Commons/Sources/Commons/ProcessUtils.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import os public enum ProcessUtils { public static func loginShell() -> URL { URL(fileURLWithPath: ProcessInfo.processInfo.environment["SHELL"] ?? "/bin/bash") } public static func execProcessViaLoginShell( cmd: String, cwd: URL, envs: [String: String], interactive: Bool, qos: QualityOfService ) -> Process? { let shellUrl = Self.loginShell() let shellName = shellUrl.lastPathComponent var shellArgs = [String]() if shellName != "tcsh" { shellArgs.append("-l") } if interactive { shellArgs.append("-i") } dlog.debug("Using \(shellUrl) with \(shellArgs)") let stdin = Pipe() let process = Process() process.environment = envs process.standardInput = stdin process.standardOutput = Pipe() process.standardError = Pipe() process.currentDirectoryPath = cwd.path process.launchPath = shellUrl.path process.arguments = shellArgs process.qualityOfService = qos dlog.debug("Launched shell") do { try process.run() } catch { return nil } dlog.debug("exec \(cmd)") let cmd = "exec \(cmd)" guard let cmdData = cmd.data(using: .utf8) else { return nil } let writeHandle = stdin.fileHandleForWriting writeHandle.write(cmdData) writeHandle.closeFile() return process } public static func envVars( of shellPath: URL, usingInteractiveMode: Bool ) -> [String: String] { let shellName = shellPath.lastPathComponent var shellArgs = [String]() if shellName != "tcsh" { shellArgs.append("-l") } if usingInteractiveMode { shellArgs.append("-i") } let marker = UUID().uuidString shellArgs.append(contentsOf: ["-c", "echo \(marker) && env"]) let outputPipe = Pipe() let errorPipe = Pipe() let process = Process() process.launchPath = shellPath.path process.arguments = shellArgs process.standardOutput = outputPipe process.standardError = errorPipe process.currentDirectoryPath = NSHomeDirectory() process.launch() let readHandle = outputPipe.fileHandleForReading guard let output = String( data: readHandle.readDataToEndOfFile(), encoding: .utf8 ) else { Self.logger.error("No output; returning empty ENVs.") return [:] } readHandle.closeFile() process.terminate() process.waitUntilExit() guard let range = output.range(of: marker) else { Self.logger.error("Marker not found; returning empty ENVs.") return [:] } return output[range.upperBound...] .trimmingCharacters(in: .whitespacesAndNewlines) .split(separator: "\n") .reduce(into: [:]) { result, entry in let split = entry .split(separator: "=", maxSplits: 1, omittingEmptySubsequences: false) .map { String($0) } guard split.count > 1 else { return } result[split[0]] = split[1] } } private static let logger = Logger( subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.general ) } ================================================ FILE: Commons/Sources/Commons/SwiftCommons.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation public func identity(_ input: T) -> T { input } public extension FixedWidthInteger { @inlinable @inline(__always) var cgf: CGFloat { CGFloat(self) } } public extension String { func without(prefix: String) -> String { guard self.hasPrefix(prefix) else { return self } let idx = self.index(self.startIndex, offsetBy: prefix.count) return String(self[idx.. [Element] { let elementsInArray = elements.filter { self.contains($0) } let indices = elementsInArray.compactMap { self.firstIndex(of: $0) } var result = self indices.enumerated().forEach { result[$0.1] = elementsInArray[$0.0] } return result } } public extension Array where Element: Hashable { func toDict(by mapper: @escaping (Element) -> V) -> [Element: V] { var result = [Element: V](minimumCapacity: self.count) self.forEach { result[$0] = mapper($0) } return result } // From https://stackoverflow.com/a/46354989 func uniqueing() -> [Element] { var seen = Set() return filter { seen.insert($0).inserted } } } func tuplesToDict(_ sequence: S) -> [K: V] where S.Iterator.Element == (K, V) { var result = [K: V](minimumCapacity: sequence.underestimatedCount) for (key, value) in sequence { result[key] = value } return result } public extension Dictionary { func mapToDict(_ transform: ((key: Key, value: Value)) throws -> (K, V)) rethrows -> [K: V] { let array = try self.map(transform) return tuplesToDict(array) } func flatMapToDict(_ transform: ((key: Key, value: Value)) throws -> (K, V)?) rethrows -> [K: V] { let array = try self.compactMap(transform) return tuplesToDict(array) } } // From https://stackoverflow.com/a/55560988 // We know that the regex is valid. // swiftlint:disable:next force_try private let shellEscapeRegex = try! NSRegularExpression( pattern: "([ !\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\,\\:\\;\\<\\=\\>\\?\\[\\]\\`\\{\\|\\}\\~])" ) ================================================ FILE: Commons/Sources/CommonsObjC/NetUtils.m ================================================ /** * Greg Omelaenko - http://omelaen.co * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ #import "NetUtils.h" #import #import #import static os_log_t logger = NULL; @implementation NetUtils + (void)initialize { if (self == [NetUtils class]) { logger = os_log_create("com.qvacua.VimR", "general"); } } // from https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/UsingSocketsandSocketStreams.html#//apple_ref/doc/uid/CH73-SW9 // and http://stackoverflow.com/a/20850182/6939513 // slightly modified + (in_port_t)openPort { const int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { os_log_error(logger, "Could not open socket"); return 0; } struct sockaddr_in sin = { .sin_len = sizeof(sin), .sin_family = AF_INET, .sin_port = htons(0), .sin_addr.s_addr = INADDR_ANY }; if (bind(sock, (struct sockaddr *) &sin, sizeof(sin)) < 0) { if (errno == EADDRINUSE) { os_log_error(logger, "the port is not available."); } else { os_log_error( logger, "could not bind to process (%{public}d) %{public}s", errno, strerror(errno) ); } close(sock); return 0; } socklen_t len = sizeof(sin); if (getsockname(sock, (struct sockaddr *) &sin, &len) == -1) { os_log_error(logger, "getsockname failed."); close(sock); return 0; } const in_port_t result = ntohs(sin.sin_port); if (close(sock) < 0) { os_log_error(logger, "socket did not close: %{public}s", strerror(errno)); return 0; } return result; } @end ================================================ FILE: Commons/Sources/CommonsObjC/include/NetUtils.h ================================================ /** * Greg Omelaenko - http://omelaen.co * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ #import @interface NetUtils : NSObject + (in_port_t)openPort; @end ================================================ FILE: Commons/Support/CommonsSupport.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 54; objects = { /* Begin PBXBuildFile section */ 4B7FBFFB24EC936C002D12A1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B7FBFFA24EC936C002D12A1 /* AppDelegate.swift */; }; 4B7FBFFD24EC936E002D12A1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B7FBFFC24EC936E002D12A1 /* Assets.xcassets */; }; 4B7FC00024EC936E002D12A1 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B7FBFFE24EC936E002D12A1 /* MainMenu.xib */; }; 4B7FC00824EC9425002D12A1 /* Commons in Frameworks */ = {isa = PBXBuildFile; productRef = 4B7FC00724EC9425002D12A1 /* Commons */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 4B7FBFF824EC936C002D12A1 /* EnvVarTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = EnvVarTest.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4B7FBFFA24EC936C002D12A1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4B7FBFFC24EC936E002D12A1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 4B7FBFFF24EC936E002D12A1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 4B7FC00124EC936E002D12A1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 4B7FBFF524EC936C002D12A1 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4B7FC00824EC9425002D12A1 /* Commons in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 4B7FBFDA24EC92F2002D12A1 = { isa = PBXGroup; children = ( 4B7FBFF924EC936C002D12A1 /* EnvVarTest */, 4B7FBFE424EC92F2002D12A1 /* Products */, ); sourceTree = ""; }; 4B7FBFE424EC92F2002D12A1 /* Products */ = { isa = PBXGroup; children = ( 4B7FBFF824EC936C002D12A1 /* EnvVarTest.app */, ); name = Products; sourceTree = ""; }; 4B7FBFF924EC936C002D12A1 /* EnvVarTest */ = { isa = PBXGroup; children = ( 4B7FBFFA24EC936C002D12A1 /* AppDelegate.swift */, 4B7FBFFC24EC936E002D12A1 /* Assets.xcassets */, 4B7FBFFE24EC936E002D12A1 /* MainMenu.xib */, 4B7FC00124EC936E002D12A1 /* Info.plist */, ); path = EnvVarTest; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 4B7FBFF724EC936C002D12A1 /* EnvVarTest */ = { isa = PBXNativeTarget; buildConfigurationList = 4B7FC00324EC936E002D12A1 /* Build configuration list for PBXNativeTarget "EnvVarTest" */; buildPhases = ( 4B7FBFF424EC936C002D12A1 /* Sources */, 4B7FBFF524EC936C002D12A1 /* Frameworks */, 4B7FBFF624EC936C002D12A1 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = EnvVarTest; packageProductDependencies = ( 4B7FC00724EC9425002D12A1 /* Commons */, ); productName = EnvVarTest; productReference = 4B7FBFF824EC936C002D12A1 /* EnvVarTest.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 4B7FBFDB24EC92F2002D12A1 /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 1200; LastUpgradeCheck = 1620; TargetAttributes = { 4B7FBFF724EC936C002D12A1 = { CreatedOnToolsVersion = 12.0; }; }; }; buildConfigurationList = 4B7FBFDE24EC92F2002D12A1 /* Build configuration list for PBXProject "CommonsSupport" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 4B7FBFDA24EC92F2002D12A1; productRefGroup = 4B7FBFE424EC92F2002D12A1 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 4B7FBFF724EC936C002D12A1 /* EnvVarTest */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 4B7FBFF624EC936C002D12A1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 4B7FBFFD24EC936E002D12A1 /* Assets.xcassets in Resources */, 4B7FC00024EC936E002D12A1 /* MainMenu.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 4B7FBFF424EC936C002D12A1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4B7FBFFB24EC936C002D12A1 /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 4B7FBFFE24EC936E002D12A1 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( 4B7FBFFF24EC936E002D12A1 /* Base */, ); name = MainMenu.xib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 4B7FBFEF24EC92F3002D12A1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 6.0; }; name = Debug; }; 4B7FBFF024EC92F3002D12A1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_STYLE = Manual; COPY_PHASE_STRIP = NO; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 6.0; }; name = Release; }; 4B7FC00424EC936E002D12A1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = EnvVarTest/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.EnvVarTest; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SWIFT_VERSION = 5.0; }; name = Debug; }; 4B7FC00524EC936E002D12A1 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = EnvVarTest/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.EnvVarTest; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; SWIFT_VERSION = 5.0; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 4B7FBFDE24EC92F2002D12A1 /* Build configuration list for PBXProject "CommonsSupport" */ = { isa = XCConfigurationList; buildConfigurations = ( 4B7FBFEF24EC92F3002D12A1 /* Debug */, 4B7FBFF024EC92F3002D12A1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4B7FC00324EC936E002D12A1 /* Build configuration list for PBXNativeTarget "EnvVarTest" */ = { isa = XCConfigurationList; buildConfigurations = ( 4B7FC00424EC936E002D12A1 /* Debug */, 4B7FC00524EC936E002D12A1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ /* Begin XCSwiftPackageProductDependency section */ 4B7FC00724EC9425002D12A1 /* Commons */ = { isa = XCSwiftPackageProductDependency; productName = Commons; }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 4B7FBFDB24EC92F2002D12A1 /* Project object */; } ================================================ FILE: Commons/Support/EnvVarTest/AppDelegate.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons @main class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet var window: NSWindow! @IBOutlet var textView: NSTextView! func applicationDidFinishLaunching(_: Notification) { let selfEnv = ProcessInfo.processInfo.environment let shellUrl = URL(fileURLWithPath: selfEnv["SHELL"] ?? "/bin/bash") let env = ProcessUtils.envVars(of: shellUrl, usingInteractiveMode: false) for (k, v) in env { let str = NSAttributedString(string: "\(k): \(v)\n") print(str) self.textView.textStorage?.append(str) } } } ================================================ FILE: Commons/Support/EnvVarTest/Assets.xcassets/AccentColor.colorset/Contents.json ================================================ { "colors" : [ { "idiom" : "universal" } ], "info" : { "author" : "xcode", "version" : 1 } } ================================================ FILE: Commons/Support/EnvVarTest/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "idiom" : "mac", "scale" : "1x", "size" : "16x16" }, { "idiom" : "mac", "scale" : "2x", "size" : "16x16" }, { "idiom" : "mac", "scale" : "1x", "size" : "32x32" }, { "idiom" : "mac", "scale" : "2x", "size" : "32x32" }, { "idiom" : "mac", "scale" : "1x", "size" : "128x128" }, { "idiom" : "mac", "scale" : "2x", "size" : "128x128" }, { "idiom" : "mac", "scale" : "1x", "size" : "256x256" }, { "idiom" : "mac", "scale" : "2x", "size" : "256x256" }, { "idiom" : "mac", "scale" : "1x", "size" : "512x512" }, { "idiom" : "mac", "scale" : "2x", "size" : "512x512" } ], "info" : { "author" : "xcode", "version" : 1 } } ================================================ FILE: Commons/Support/EnvVarTest/Assets.xcassets/Contents.json ================================================ { "info" : { "author" : "xcode", "version" : 1 } } ================================================ FILE: Commons/Support/EnvVarTest/Base.lproj/MainMenu.xib ================================================ Default Left to Right Right to Left Default Left to Right Right to Left ================================================ FILE: Commons/Support/EnvVarTest/Info.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString 1.0 CFBundleVersion 1 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSMainNibFile MainMenu NSPrincipalClass NSApplication ================================================ FILE: Commons/Tests/CommonsTests/ArrayCommonsTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Nimble import XCTest @testable import Commons private class DummyToken: Comparable { static func == (left: DummyToken, right: DummyToken) -> Bool { left.value == right.value } static func < (left: DummyToken, right: DummyToken) -> Bool { left.value < right.value } let value: String init(_ value: String) { self.value = value } } class ArrayCommonsTest: XCTestCase { func testTuplesToDict() { let tuples = [ (1, "1"), (2, "2"), (3, "3"), ] expect(tuplesToDict(tuples)).to(equal( [ 1: "1", 2: "2", 3: "3", ] )) } func testToDict() { let array = [1, 2, 3] expect(array.toDict { "\($0)" }) .to(equal( [ 1: "1", 2: "2", 3: "3", ] )) } func testSubstituting1() { let substitute = [ DummyToken("a0"), DummyToken("a1"), DummyToken("a2"), ] let array = [ DummyToken("b0"), DummyToken("b1"), DummyToken("a0"), DummyToken("a1"), DummyToken("b4"), DummyToken("a2"), ] let result = array.substituting(elements: substitute) expect(result[2]).to(beIdenticalTo(substitute[0])) expect(result[3]).to(beIdenticalTo(substitute[1])) expect(result[5]).to(beIdenticalTo(substitute[2])) expect(result).to(equal(array)) } func testSubstituting2() { let substitute = [ DummyToken("a0"), DummyToken("a1"), DummyToken("a2"), ] let array = [ DummyToken("a0"), DummyToken("b0"), DummyToken("a1"), DummyToken("b1"), DummyToken("a2"), DummyToken("b4"), ] let result = array.substituting(elements: substitute) expect(result[0]).to(beIdenticalTo(substitute[0])) expect(result[2]).to(beIdenticalTo(substitute[1])) expect(result[4]).to(beIdenticalTo(substitute[2])) expect(result).to(equal(array)) } func testSubstituting3() { let substitute = [ DummyToken("a0"), DummyToken("a1"), DummyToken("a2"), ] let array = [ DummyToken("b0"), DummyToken("b1"), DummyToken("b4"), DummyToken("a0"), DummyToken("a1"), DummyToken("a2"), ] let result = array.substituting(elements: substitute) expect(result[3]).to(beIdenticalTo(substitute[0])) expect(result[4]).to(beIdenticalTo(substitute[1])) expect(result[5]).to(beIdenticalTo(substitute[2])) expect(result).to(equal(array)) } func testSubstituting4() { let substitute = [ DummyToken("a0"), DummyToken("a1"), DummyToken("a2"), ] let array = [ DummyToken("a0"), DummyToken("a1"), DummyToken("a2"), DummyToken("b0"), DummyToken("b1"), DummyToken("b4"), ] let result = array.substituting(elements: substitute) expect(result[0]).to(beIdenticalTo(substitute[0])) expect(result[1]).to(beIdenticalTo(substitute[1])) expect(result[2]).to(beIdenticalTo(substitute[2])) expect(result).to(equal(array)) } func testSubstituting5() { let substitute = [ DummyToken("a0"), DummyToken("something else"), DummyToken("a1"), DummyToken("a2"), ] let array = [ DummyToken("a0"), DummyToken("b0"), DummyToken("a1"), DummyToken("b1"), DummyToken("a2"), DummyToken("b4"), ] let result = array.substituting(elements: substitute) expect(result[0]).to(beIdenticalTo(substitute[0])) expect(result[2]).to(beIdenticalTo(substitute[2])) expect(result[4]).to(beIdenticalTo(substitute[3])) expect(result).to(equal(array)) } } ================================================ FILE: Commons/Tests/CommonsTests/DictionaryCommonsTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Nimble import XCTest class DictionaryCommonsTest: XCTestCase { func testMapToDict() { let dict = [ 1: "a", 2: "b", 3: "c", ] expect(dict.mapToDict { k, v in (v, "\(k)-\(v)") }).to(equal( [ "a": "1-a", "b": "2-b", "c": "3-c", ] )) } func testFlatMapToDict() { let dict = [ 1: "a", 2: "b", 3: "c", ] expect(dict.flatMapToDict { k, v in if k == 2 { return nil } return (v, "\(k)-\(v)") }).to(equal( [ "a": "1-a", "c": "3-c", ] )) } } ================================================ FILE: Commons/Tests/CommonsTests/FifoCacheTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Nimble import XCTest @testable import Commons class FifoCacheTest: XCTestCase { var fifo: FifoCache! override func setUp() { super.setUp() self.fifo = FifoCache(count: 10) } func testSimpleGet() { for i in 0...5 { self.fifo.set(i, forKey: i) } for i in 0...5 { expect(self.fifo.valueForKey(i)).to(equal(i)) } for i in 6..<10 { expect(self.fifo.valueForKey(i)).to(beNil()) } } func testGet() { for i in 0..<(10 * 3) { self.fifo.set(i, forKey: i) } for i in 20..<30 { expect(self.fifo.valueForKey(i)).to(equal(i)) } expect(self.fifo.valueForKey(19)).to(beNil()) expect(self.fifo.valueForKey(30)).to(beNil()) } } ================================================ FILE: Commons/Tests/CommonsTests/FileUtilsTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Nimble import XCTest @testable import Commons class FileUtilsTest: XCTestCase { var fileUtilsRsrcUrl = URL(fileURLWithPath: "/") var a1Dir = URL(fileURLWithPath: "/") override func setUp() { self.fileUtilsRsrcUrl = Bundle.module.url( forResource: "FileUtilsTest", withExtension: "", subdirectory: "Resources" )! self.a1Dir = self.fileUtilsRsrcUrl.appendingPathComponent("a1") } func testCommonParentOneDirUrl() { let urls = [ fileUtilsRsrcUrl.appendingPathComponent("a1"), ] expect(FileUtils.commonParent(of: urls)).to(equal(self.fileUtilsRsrcUrl)) } func testCommonParentOneFileUrl() { let urls = [ fileUtilsRsrcUrl.appendingPathComponent("a1/a1-file1"), ] expect(FileUtils.commonParent(of: urls)).to(equal(self.a1Dir)) } func testCommonParentEmptyParams() { expect(FileUtils.commonParent(of: []) as URL) .to(equal(URL(fileURLWithPath: "/", isDirectory: true))) } func testCommonParent1() { let urls = [ fileUtilsRsrcUrl.appendingPathComponent("a1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a1-file1"), ] expect(FileUtils.commonParent(of: urls)).to(equal(self.fileUtilsRsrcUrl)) } func testCommonParent2() { let urls = [ fileUtilsRsrcUrl.appendingPathComponent("a1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a1-file1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a2/a1-a2-file1"), ] expect(FileUtils.commonParent(of: urls)).to(equal(self.fileUtilsRsrcUrl)) } func testBug1() { let paths = [ fileUtilsRsrcUrl.appendingPathComponent("Downloads/test2/some/nginx.config"), self.fileUtilsRsrcUrl.appendingPathComponent(".Trash/nginx.config"), ] expect(FileUtils.commonParent(of: paths)).to(equal(self.fileUtilsRsrcUrl)) } func testBug2() { let paths = [ fileUtilsRsrcUrl.appendingPathComponent("Downloads/test2/some/nginx.config"), self.fileUtilsRsrcUrl.appendingPathComponent(".Trash/nginx.config/de/nginx.config"), ] expect(FileUtils.commonParent(of: paths)).to(equal(self.fileUtilsRsrcUrl)) } func testCommonParent3() { let urls = [ fileUtilsRsrcUrl.appendingPathComponent("a1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a1-file1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a2/a1-a2-file1"), self.fileUtilsRsrcUrl.appendingPathComponent("b1/b1-file1"), ] expect(FileUtils.commonParent(of: urls)).to(equal(self.fileUtilsRsrcUrl)) } func testCommonParent4() { let urls = [ fileUtilsRsrcUrl.appendingPathComponent("a1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a1-file1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a2/a1-a2-file1"), self.fileUtilsRsrcUrl.appendingPathComponent("b1"), ] expect(FileUtils.commonParent(of: urls)).to(equal(self.fileUtilsRsrcUrl)) } func testCommonParent5() { let urls = [ fileUtilsRsrcUrl.appendingPathComponent("a1/a1-file1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a2/a1-a2-file1"), self.fileUtilsRsrcUrl.appendingPathComponent("a1/a2"), ] expect(FileUtils.commonParent(of: urls)).to(equal(self.a1Dir)) } } ================================================ FILE: Commons/Tests/CommonsTests/Resources/FileUtilsTest/a1/a1-file1 ================================================ ================================================ FILE: Commons/Tests/CommonsTests/Resources/FileUtilsTest/a1/a2/a1-a2-file1 ================================================ ================================================ FILE: Commons/Tests/CommonsTests/Resources/FileUtilsTest/b1/b1-file1 ================================================ ================================================ FILE: Commons/Tests/CommonsTests/Resources/UrlCommonsTest/.dot-hidden-file ================================================ ================================================ FILE: Commons/Tests/CommonsTests/Resources/UrlCommonsTest/dummy.rtfd/TXT.rtf ================================================ {\rtf1\ansi\ansicpg1252\cocoartf1504\cocoasubrtf820 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} \paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 \f0\fs24 \cf0 Dummy RTFD} ================================================ FILE: Commons/Tests/CommonsTests/StringCommonsTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Nimble import XCTest class StringCommonsTest: XCTestCase { func testWithoutPrefix() { expect("prefixAbc".without(prefix: "prefix")).to(equal("Abc")) expect("prefix".without(prefix: "prefix")).to(equal("")) expect("Abcprefix".without(prefix: "prefix")).to(equal("Abcprefix")) } } ================================================ FILE: Commons/Tests/CommonsTests/SwiftCommonsTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Nimble import XCTest @testable import Commons struct Dummy { var value: Int var marker: Bool } class ArraySliceTest: XCTestCase { func testArraySliceGroup1() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 0, marker: true), Dummy(value: 1, marker: false), Dummy(value: 2, marker: false), Dummy(value: 3, marker: false), ][1...3].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 1...1, 2...3, ] )) } func testArraySliceGroup2() { let grouped = [ Dummy(value: 0, marker: false), Dummy(value: 1, marker: false), Dummy(value: 2, marker: false), Dummy(value: 3, marker: true), Dummy(value: 3, marker: true), ][1...3].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 1...2, 3...3, ] )) } func testArraySliceGroup3() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 1, marker: true), Dummy(value: 2, marker: true), Dummy(value: 3, marker: true), ][1...2].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 1...2, ] )) } func testArraySliceGroup4() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 0, marker: true), Dummy(value: 1, marker: true), Dummy(value: 1, marker: false), Dummy(value: 1, marker: true), Dummy(value: 1, marker: true), Dummy(value: 1, marker: true), ][1...5].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 1...2, 3...3, 4...5, ] )) } func testArraySliceGroup5() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 0, marker: true), Dummy(value: 1, marker: true), Dummy(value: 1, marker: true), Dummy(value: 1, marker: false), Dummy(value: 1, marker: true), Dummy(value: 1, marker: true), ][1...5].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 1...3, 4...4, 5...5, ] )) } func testArraySliceGroup6() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 0, marker: true), Dummy(value: 0, marker: true), ][1...1].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 1...1, ] )) } func testArraySliceGroup7() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 0, marker: true), Dummy(value: 0, marker: false), Dummy(value: 0, marker: true), ][1...2].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 1...1, 2...2, ] )) } } class SwiftCommonsTest: XCTestCase { func testArrayGroup1() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 1, marker: false), Dummy(value: 2, marker: false), Dummy(value: 3, marker: false), ].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 0...0, 1...3, ] )) } func testArrayGroup2() { let grouped = [ Dummy(value: 0, marker: false), Dummy(value: 1, marker: false), Dummy(value: 2, marker: false), Dummy(value: 3, marker: true), ].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 0...2, 3...3, ] )) } func testArrayGroup3() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 1, marker: true), ].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 0...1, ] )) } func testArrayGroup4() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 1, marker: true), Dummy(value: 1, marker: false), Dummy(value: 1, marker: true), Dummy(value: 1, marker: true), ].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 0...1, 2...2, 3...4, ] )) } func testArrayGroup5() { let grouped = [ Dummy(value: 0, marker: true), Dummy(value: 1, marker: true), Dummy(value: 1, marker: true), Dummy(value: 1, marker: false), Dummy(value: 1, marker: true), ].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 0...2, 3...3, 4...4, ] )) } func testArrayGroup6() { let grouped = [ Dummy(value: 0, marker: true), ].groupedRanges { element in element.marker } expect(grouped).to(equal( [ 0...0, ] )) } } ================================================ FILE: Commons/Tests/CommonsTests/UrlCommonsTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Nimble import XCTest class UrlCommonsTest: XCTestCase { func testIsDirectParent() { let parent = URL(fileURLWithPath: "/some/path") let child = URL(fileURLWithPath: "/some/path/text.txt") let noChild1 = URL(fileURLWithPath: "/some/where/else/text.txt") let noChild2 = URL(fileURLWithPath: "/some/text.txt") expect(parent.isParent(of: child)).to(beTrue()) expect(parent.isParent(of: noChild1)).to(beFalse()) expect(parent.isParent(of: noChild2)).to(beFalse()) } func testIsParent() { let parent = URL(fileURLWithPath: "/some/path") let child1 = URL(fileURLWithPath: "/some/path/text.txt") let child2 = URL(fileURLWithPath: "/some/path/deep/text.txt") let noChild1 = URL(fileURLWithPath: "/some/where/else/text.txt") let noChild2 = URL(fileURLWithPath: "/some/text.txt") expect(parent.isAncestor(of: child1)).to(beTrue()) expect(parent.isAncestor(of: child2)).to(beTrue()) expect(parent.isAncestor(of: noChild1)).to(beFalse()) expect(parent.isAncestor(of: noChild2)).to(beFalse()) } func testIsContained() { let parent = URL(fileURLWithPath: "/some/path") let child1 = URL(fileURLWithPath: "/some/path/text.txt") let child2 = URL(fileURLWithPath: "/some/path/deep/text.txt") let noChild1 = URL(fileURLWithPath: "/some/where/else/text.txt") let noChild2 = URL(fileURLWithPath: "/some/text.txt") expect(child1.isContained(in: parent)).to(beTrue()) expect(child2.isContained(in: parent)).to(beTrue()) expect(noChild1.isContained(in: parent)).to(beFalse()) expect(noChild2.isContained(in: parent)).to(beFalse()) } func testParent() { expect(URL(fileURLWithPath: "/some/path/").parent).to(equal(URL(fileURLWithPath: "/some/"))) expect(URL(fileURLWithPath: "/some/path/text.txt").parent) .to(equal(URL(fileURLWithPath: "/some/path/"))) expect(URL(fileURLWithPath: "/").parent).to(equal(URL(fileURLWithPath: "/"))) } func testIsHidden() { let resourceUrl = Bundle.module.url( forResource: "UrlCommonsTest", withExtension: "", subdirectory: "Resources" )! let hidden = resourceUrl.appendingPathComponent(".dot-hidden-file") expect(hidden.isHidden).to(beTrue()) expect(resourceUrl.isHidden).to(beFalse()) } func testIsPackage() { let resourceUrl = Bundle.module.url( forResource: "UrlCommonsTest", withExtension: "", subdirectory: "Resources" )! let package = resourceUrl.appendingPathComponent("dummy.rtfd") expect(package.isPackage).to(beTrue()) expect(resourceUrl.isPackage).to(beFalse()) } } ================================================ FILE: DEVELOP.md ================================================ ## How to develop VimR includes a stock Neovim. From Neovim `v0.10.0`, we provide pre-built universal Neovim, see for instance . In most cases, you can use the pre-built Neovim. Run the following ```bash clean=true for_dev=false ./bin/build_nvimserver.sh ``` to download and place the files in the appropriate places. Now, you can just *run* VimR target in Xcode. If you want to build Neovim locally, you can use ```bash clean=true for_dev=true ./bin/build_nvimserver.sh ``` Afterwards, you can run VimR target in Xcode. (This is used when generating source since we need some generated header files.) ### How to enable the Debug menu in Release build ```bash defaults write com.qvacua.VimR enable-debug-menu 1 ``` ## How to release ### Neovim * Update Neovim and generate sources: ```bash clean=true use_committed_nvim=true ./bin/generate_sources.sh ``` Use `use_committed=false` if you want to use modified local Neovim submodule. * Commit and push. * Tag and push with the following ```bash version=neovim-vX.Y.Z-$(date "+%Y%m%d.%H%M%S"); git tag -a "${version}" -m "${version}"; git push origin "${version}" ``` * Github action will build universal binary + runtime and package it. * Update the version of Neovim in `/bin/neovim/resources/buildInfo.json` ### VimR * Set a new version of VimR via ```bash is_snapshot=true ./bin/set_new_versions.sh # for snapshot or is_snapshot=false marketing_version=0.38.3 ./bin/set_new_versions.sh # for release ``` and commit. This will create a `${bundle_version}-snapshot/release.sh` file to be used with `build_release.sh` and `release-notes.temp.md` for release notes. * Tag with the name - Snapshot: `snapshot/yyyymmdd.HHMMSS` - Release: `vX.Y.Z-yyyymmdd.HHMMSS` * Push * Add release notes to `release-notes.temp.md`. * Build the release via ```bash release_spec_file=....sh \ ./bin/build_release.sh ``` * Publish to GitHub and update appcast via ```bash create_gh_release=true upload=true update_appcast=true \ release_spec_file=....sh \ ./bin/publish_release.sh ``` * The `appcast{-snapshot}.xml` file is modified. Check and push. ================================================ FILE: Ignore/Package.swift ================================================ // swift-tools-version: 6.0 import PackageDescription let package = Package( name: "Ignore", platforms: [.macOS(.v14)], products: [ .library(name: "Ignore", targets: ["Ignore"]), ], dependencies: [ .package(url: "https://github.com/qvacua/misc.swift", exact: "0.4.0"), .package(url: "https://github.com/Quick/Nimble", from: "14.0.0"), .package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "0.62.2"), ], targets: [ .target( name: "Ignore", dependencies: [.product(name: "WildmatchC", package: "misc.swift")], plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")] ), .testTarget( name: "IgnoreTests", dependencies: ["Ignore", "Nimble"], resources: [.copy("Resources")] ), ] ) ================================================ FILE: Ignore/README.md ================================================ # Ignore A description of this package. ================================================ FILE: Ignore/Sources/Ignore/FileLineReader.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation /// Reads the file at the given ``URL`` line by line. /// The Unix line ending `LF` is used to determine lines. /// Thus, it supports `LF` and `CRLF` files. It does not support the legacy Mac line ending `CR`. public final class FileLineReader: Sequence { public static let defaultLineBufferCount = 1024 public let url: URL public var lineBufferCount: Int public var encoding: String.Encoding /// - Parameters: /// - url: URL of the file. /// - encoding: Encoding of the file. It's mutable. /// After mutating, the next iterator will use the new value. /// - lineBufferCount: The initial size of the buffer for reading lines. It's mutable. /// After mutating, the next iterator will use the new value. /// The default is ``FileLineReader/defaultLineBufferCount``. public init(url: URL, encoding: String.Encoding, lineBufferCount: Int = defaultLineBufferCount) { self.lineBufferCount = lineBufferCount self.url = url self.encoding = encoding } public func makeIterator() -> AnyIterator { guard let file = fopen(url.path, "r") else { return AnyIterator { nil } } let iterator = LfLineIterator( file: file, encoding: self.encoding, lineBufferCount: self.lineBufferCount ) return AnyIterator { iterator.next() } } } private class LfLineIterator: IteratorProtocol { init( file: UnsafeMutablePointer, encoding: String.Encoding, lineBufferCount: Int ) { self.file = file self.encoding = encoding self.buffer = Array(repeating: 0, count: lineBufferCount) } deinit { fclose(self.file) } func next() -> String? { var readCharCount = 0 while true { let nextChar = getc(self.file) if nextChar == EOF { if readCharCount == 0 { return nil } return String( data: Data( bytesNoCopy: self.buffer[0..= self.buffer.count { // Array.append() // https://developer.apple.com/documentation/swift/array/3126937-append // "Complexity: O(1) on average, over many calls to append(_:) on the same array." self.buffer.append(UInt8(nextChar)) } else { self.buffer[readCharCount] = UInt8(nextChar) } readCharCount += 1 if nextChar == Self.unixLineEnding { return String( data: Data( bytesNoCopy: self.buffer[0.. private static let unixLineEnding = "\n".utf8.first! } private extension ArraySlice { @inline(__always) var unsafeMutableRawPointer: UnsafeMutableRawPointer { UnsafeMutableRawPointer(mutating: self.withUnsafeBytes { $0.baseAddress! }) } } ================================================ FILE: Ignore/Sources/Ignore/Filter.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation import WildmatchC public struct Filter: CustomStringConvertible { public let base: URL public let pattern: String public let isAllow: Bool public let isOnlyForDirectories: Bool public let isRelativeToBase: Bool public init(base: URL, pattern: String) { self.base = base var effectivePattern: String self.isAllow = pattern.first == "!" effectivePattern = self.isAllow ? String(pattern.dropFirst()) : pattern self.isOnlyForDirectories = effectivePattern.last == "/" effectivePattern = self.isOnlyForDirectories ? String(effectivePattern.dropLast(1)) : effectivePattern self.isRelativeToBase = effectivePattern.contains("/") if self.isRelativeToBase { effectivePattern = base.path + (effectivePattern.first == "/" ? effectivePattern : "/" + effectivePattern) } self.pattern = effectivePattern self.patternCstr = Array(self.pattern.utf8CString) } public func disallows(_ url: URL) -> Bool { if self.isOnlyForDirectories { guard url.hasDirectoryPath else { return false } } if self.isRelativeToBase { let matches = self.matches(url.path) if self.isAllow { return !matches } else { return matches } } let matches = self.matches(url.lastPathComponent) if self.isAllow { return false } else { return matches } } public func explicitlyAllows(_ url: URL) -> Bool { if self.isOnlyForDirectories { guard url.hasDirectoryPath else { return false } } if self.isRelativeToBase { if self.isAllow { return self.matches(url.path) } return false } if self.isAllow { return self.matches(url.lastPathComponent) } else { return false } } /// Ignores whether the pattern is only applicable for directories. public func disallows(_ string: String) -> Bool { if self.isAllow { false } else { self.matches(string) } } /// Ignores whether the pattern is only applicable for directories. public func explicitlyAllows(_ string: String) -> Bool { if self.isAllow { return self.matches(string) } return false } public func matches(_ url: URL) -> Bool { if self.isOnlyForDirectories { guard url.hasDirectoryPath else { return false } } if self.isRelativeToBase { return url.path.withCString { stringCstr in wildmatch(self.patternCstr, stringCstr, WM_WILDSTAR) == WM_MATCH } } return url.lastPathComponent.withCString { stringCstr in wildmatch(self.patternCstr, stringCstr, WM_WILDSTAR) == WM_MATCH } } /// Ignores whether the pattern is only applicable for directories. public func matches(_ string: String) -> Bool { string.withCString { stringCstr in wildmatch(self.patternCstr, stringCstr, WM_WILDSTAR) == WM_MATCH } } public var description: String { "Ignore(isAllow: \(self.isAllow), isOnlyDirectory: \(self.isOnlyForDirectories), " + "isAbsolute: \(self.isRelativeToBase), pattern: \(self.pattern), baseUrl: \(self.base))" } private let patternCstr: [CChar] } ================================================ FILE: Ignore/Sources/Ignore/GitUtils.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation public enum GitUtils { static func globalGitignoreFileUrl() -> URL? { guard let path = shellCommandOutput( "git config --get core.excludesFile", workingDirectory: fm.homeDirectoryForCurrentUser ), FileManager.default.fileExists(atPath: path) else { return nil } return URL(fileURLWithPath: path) } static func gitDirInfoExcludeUrl(base: URL, gitRoot: URL? = nil) -> URL? { guard let gitRoot = gitRoot == nil ? gitRootUrl(base: base) : gitRoot, let gitDirName = shellCommandOutput("git rev-parse --git-dir", workingDirectory: gitRoot) else { return nil } let url = gitRoot.appendingPathComponent("\(gitDirName)/info/exclude") guard fm.fileExists(atPath: url.path) else { return nil } return url } static func gitRootUrl(base: URL) -> URL? { guard let path = shellCommandOutput("git rev-parse --show-toplevel", workingDirectory: base) else { return nil } return URL(fileURLWithPath: path, isDirectory: true) } private static func shellCommandOutput(_ command: String, workingDirectory: URL) -> String? { let task = Process() let pipe = Pipe() task.currentDirectoryURL = workingDirectory task.standardInput = nil task.standardOutput = pipe task.standardError = nil task.executableURL = URL(fileURLWithPath: "/bin/sh") task.arguments = ["-c", command] do { try task.run() task.waitUntilExit() } catch { return nil } guard task.terminationStatus == 0 else { return nil } guard let output = String( data: pipe.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8 ) else { return nil } let result = output.trimmingCharacters(in: .whitespacesAndNewlines) if result.isEmpty { return nil } else { return result } } } // FileManager is thread-safe: // https://developer.apple.com/documentation/foundation/filemanager#1651181 private nonisolated(unsafe) let fm = FileManager.default ================================================ FILE: Ignore/Sources/Ignore/Ignore.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation public final class Ignore { public static let defaultIgnoreFileNames = [".ignore", ".gitignore"] public static let vcsFolderPattern = [".svn/", ".hg/", ".git/"] public static func globalGitignore(base: URL) -> Ignore? { let gitRoot = GitUtils.gitRootUrl(base: base) let urls = [ GitUtils.gitDirInfoExcludeUrl(base: base, gitRoot: gitRoot), GitUtils.globalGitignoreFileUrl(), ].compactMap(\.self) if urls.isEmpty { return nil } if let gitRoot { let vcsFolderFilters = self.vcsFolderPattern.map { Filter(base: gitRoot, pattern: $0) } return Ignore(base: gitRoot, parent: nil, ignoreFileUrls: urls, prepend: vcsFolderFilters) } let vcsFolderFilters = self.vcsFolderPattern.map { Filter(base: base, pattern: $0) } return Ignore(base: base, parent: nil, ignoreFileUrls: urls, prepend: vcsFolderFilters) } public static func parentOrIgnore( for base: URL, withParent parent: Ignore?, ignoreFileNames: [String] = defaultIgnoreFileNames ) -> Ignore? { let urls = ignoreFileNames .map { base.appendingPathComponent($0) } .filter { fm.fileExists(atPath: $0.path) } .reversed() if urls.isEmpty { return parent } return Ignore(base: base, parent: parent, ignoreFileUrls: Array(urls)) } public let filters: [Filter] /// `ignoreFileUrls[n]` overrides `ignoreFileUrls[n + 1]`. /// `Ignore`s of `parent` are overridden, if applicable, by the `Ignore`s found in `base`. public init?( base: URL, parent: Ignore?, ignoreFileUrls: [URL], prepend: [Filter] = [], append: [Filter] = [] ) { if ignoreFileUrls.isEmpty { return nil } let urls = ignoreFileUrls.filter { fm.fileExists(atPath: $0.path) }.reversed() self.filters = (parent?.filters ?? []) + prepend.reversed() + urls.flatMap { FileLineReader(url: $0, encoding: .utf8) .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) } .filter { !$0.isEmpty && !$0.starts(with: "#") } .map { Filter(base: base, pattern: $0) } } + append.reversed() if self.filters.isEmpty { return nil } if let lastAllowIndex = self.filters .enumerated() .filter({ _, ignore in ignore.isAllow }) .map(\.offset) .max() { self.mixedIgnores = self.filters[0...lastAllowIndex] self.remainingDisallowIgnores = self.filters[(lastAllowIndex + 1)...] } else { self.mixedIgnores = ArraySlice() self.remainingDisallowIgnores = self.filters[0...] } } /// `ignoreFileNames[n]` overrides `ignoreFileNames[n + 1]`. /// `Ignore`s of `parent` are overridden, if applicable, by the `Ignore`s found in `base`. public convenience init?( base: URL, parent: Ignore?, ignoreFileNames: [String] = defaultIgnoreFileNames ) { self.init( base: base, parent: parent, ignoreFileUrls: ignoreFileNames.map { base.appendingPathComponent($0) } ) } public func excludes(_ url: URL) -> Bool { var isExcluded = false for ignore in self.mixedIgnores { if ignore.isAllow { if ignore.matches(url) { isExcluded = false } } else { if ignore.matches(url) { isExcluded = true } } } if isExcluded { return true } if self.remainingDisallowIgnores.contains(where: { $0.matches(url) }) { return true } return false } let mixedIgnores: ArraySlice let remainingDisallowIgnores: ArraySlice } // FileManager is thread-safe: // https://developer.apple.com/documentation/foundation/filemanager#1651181 private nonisolated(unsafe) let fm = FileManager.default ================================================ FILE: Ignore/Tests/IgnoreTests/FileLineReaderTest.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Nimble import XCTest @testable import Ignore private struct TestSpec { var fileName: String var result: [String] } private let specs = [ TestSpec(fileName: "empty", result: []), TestSpec(fileName: "unix-only-new-lines", result: ["\n", "\n", "\n"]), TestSpec(fileName: "unix-no-line-ending-at-the-end", result: ["0123\n", "하태원\n", "abcde"]), TestSpec(fileName: "unix-with-line-ending-at-the-end", result: ["0123\n", "하태원\n", "abcde\n"]), TestSpec(fileName: "dos-only-new-lines", result: ["\r\n", "\r\n", "\r\n"]), TestSpec(fileName: "dos-no-line-ending-at-the-end", result: ["0123\r\n", "하태원\r\n", "abcde"]), TestSpec( fileName: "dos-with-line-ending-at-the-end", result: ["0123\r\n", "하태원\r\n", "abcde\r\n"] ), ] final class FileLineReaderTest: XCTestCase { func testSpecsDefaultBuffer() { for spec in specs { let url = Bundle.module.url( forResource: spec.fileName, withExtension: "txt", subdirectory: "Resources/FileLineReaderTest" )! let lineReader = FileLineReader(url: url, encoding: .utf8) let lines = Array(lineReader) expect(lines).to(equal(spec.result)) } } func testSpecsSmallBuffer() { for spec in specs { let url = Bundle.module.url( forResource: spec.fileName, withExtension: "txt", subdirectory: "Resources/FileLineReaderTest" )! let lineReader = FileLineReader(url: url, encoding: .utf8, lineBufferCount: 5) let lines = Array(lineReader) expect(lines).to(equal(spec.result)) } } func testSpecsBigBuffer() { for spec in specs { let url = Bundle.module.url( forResource: spec.fileName, withExtension: "txt", subdirectory: "Resources/FileLineReaderTest" )! let lineReader = FileLineReader(url: url, encoding: .utf8, lineBufferCount: 2048) let lines = Array(lineReader) expect(lines).to(equal(spec.result)) } } } ================================================ FILE: Ignore/Tests/IgnoreTests/FilterTest.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Nimble import XCTest @testable import Ignore final class FilterTest: XCTestCase { let root = Bundle.module.url(forResource: "Resources", withExtension: nil)! func testProperties() { var ignore = Filter(base: root, pattern: "/a") expect(ignore.isAllow).to(beFalse()) expect(ignore.isRelativeToBase).to(beTrue()) expect(ignore.isOnlyForDirectories).to(beFalse()) ignore = Filter(base: self.root, pattern: "a/b") expect(ignore.isAllow).to(beFalse()) expect(ignore.isRelativeToBase).to(beTrue()) expect(ignore.isOnlyForDirectories).to(beFalse()) ignore = Filter(base: self.root, pattern: "a/b/") expect(ignore.isAllow).to(beFalse()) expect(ignore.isRelativeToBase).to(beTrue()) expect(ignore.isOnlyForDirectories).to(beTrue()) ignore = Filter(base: self.root, pattern: "a/") expect(ignore.isAllow).to(beFalse()) expect(ignore.isRelativeToBase).to(beFalse()) expect(ignore.isOnlyForDirectories).to(beTrue()) ignore = Filter(base: self.root, pattern: "!a/") expect(ignore.isAllow).to(beTrue()) expect(ignore.isRelativeToBase).to(beFalse()) expect(ignore.isOnlyForDirectories).to(beTrue()) } func testNonRelativeIgnores() { var ignore = Filter(base: root, pattern: "ab\\ ") expect(ignore.disallows("ab ")).to(beTrue()) expect(ignore.disallows("ab")).to(beFalse()) ignore = Filter(base: self.root, pattern: "!include") expect(ignore.explicitlyAllows("include")).to(beTrue()) expect(ignore.disallows("include")).to(beFalse()) expect(ignore.explicitlyAllows("no-include")).to(beFalse()) expect(ignore.disallows("no-include")).to(beFalse()) ignore = Filter(base: self.root, pattern: "a") expect(ignore.disallows("a")).to(beTrue()) ignore = Filter(base: self.root, pattern: "*.png") expect(ignore.disallows("a.png")).to(beTrue()) expect(ignore.disallows("b.png")).to(beTrue()) } func testNonRelativeIgnoresUrl() { var ignore = Filter(base: root, pattern: "ab\\ ") expect(ignore.disallows(self.root.appendingPathComponent("ab "))).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("ab"))).to(beFalse()) expect(ignore.disallows(self.root.appendingPathComponent("foo/bar/ab "))).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("foo/bar/ab"))) .to(beFalse()) ignore = Filter(base: self.root, pattern: "!include") expect(ignore.explicitlyAllows(self.root.appendingPathComponent("include"))).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("no-include"))).to(beFalse()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("foo/bar/include"))) .to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("foo/bar/no-include"))) .to(beFalse()) ignore = Filter(base: self.root, pattern: "a") expect(ignore.disallows(self.root.appendingPathComponent("a"))).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("b"))).to(beFalse()) expect(ignore.disallows(self.root.appendingPathComponent("foo/bar/a"))).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("foo/bar/b"))) .to(beFalse()) ignore = Filter(base: self.root, pattern: "*.png") expect(ignore.disallows(self.root.appendingPathComponent("a.png"))).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("b.png"))).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("c.jpg"))).to(beFalse()) expect(ignore.disallows(self.root.appendingPathComponent("foo/bar/a.png"))).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("foo/bar/b.png"))).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("foo/bar/c.jpg"))) .to(beFalse()) } func testRelativeIgnores() { var ignore = Filter(base: root, pattern: "**/foo") expect(ignore.disallows(self.root.appendingPathComponent("foo").path)).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("a/b/foo").path)).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("a").path)).to(beFalse()) ignore = Filter(base: self.root, pattern: "abc/**") expect(ignore.disallows(self.root.appendingPathComponent("abc/foo").path)).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("abc/def/foo").path)) .to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("a/b/c").path)) .to(beFalse()) ignore = Filter(base: self.root, pattern: "a/**/b") expect(ignore.disallows(self.root.appendingPathComponent("a/b").path)).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("a/x/b").path)).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("a/x/y/b").path)).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("a/x/y/c").path)) .to(beFalse()) } func testRelativeIgnoresUrl() { var ignore = Filter(base: root, pattern: "**/foo") expect(ignore.disallows(self.root.appendingPathComponent("foo"))).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("a/b/foo"))).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("a"))).to(beFalse()) ignore = Filter(base: self.root, pattern: "abc/**") expect(ignore.disallows(self.root.appendingPathComponent("abc/foo"))).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("abc/def/foo"))) .to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("a/b/c"))).to(beFalse()) ignore = Filter(base: self.root, pattern: "a/**/b") expect(ignore.disallows(self.root.appendingPathComponent("a/b"))).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("a/x/b"))).to(beTrue()) expect(ignore.disallows(self.root.appendingPathComponent("a/x/y/b"))).to(beTrue()) expect(ignore.explicitlyAllows(self.root.appendingPathComponent("a/x/y/c"))).to(beFalse()) } } ================================================ FILE: Ignore/Tests/IgnoreTests/IgnoreSplitTest.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Nimble import XCTest @testable import Ignore private struct IgnoreSplittingTestSpec { var fileName: String var mixed: [String] var disallow: [String] } private let ignoreSplittingTestSpecs = [ IgnoreSplittingTestSpec( fileName: "ignore-splitting-0", mixed: [], disallow: ["*.a", "*.b", "*.c", "*.d"] ), IgnoreSplittingTestSpec( fileName: "ignore-splitting-1", mixed: ["*.a"], disallow: ["*.b", "*.c", "*.d"] ), IgnoreSplittingTestSpec( fileName: "ignore-splitting-2", mixed: ["*.a", "*.b"], disallow: ["*.c", "*.d"] ), IgnoreSplittingTestSpec( fileName: "ignore-splitting-3", mixed: ["*.a", "*.b", "*.c"], disallow: ["*.d"] ), IgnoreSplittingTestSpec( fileName: "ignore-splitting-4", mixed: ["*.a", "*.b", "*.c", "*.d"], disallow: [] ), ] final class IgnoreSplitTest: XCTestCase { func testIgnoreSplitting() { for spec in ignoreSplittingTestSpecs { let url = Bundle.module.url( forResource: "IgnoreCollectionTest", withExtension: nil, subdirectory: "Resources" )! let ignoreFile = Ignore(base: url, parent: nil, ignoreFileNames: [spec.fileName])! expect(ignoreFile.mixedIgnores.map(\.pattern)).to(equal(spec.mixed)) expect(ignoreFile.remainingDisallowIgnores.map(\.pattern)).to(equal(spec.disallow)) } } } ================================================ FILE: Ignore/Tests/IgnoreTests/IgnoreTest.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Nimble import XCTest @testable import Ignore final class IgnoreTest: XCTestCase { func testIgnoreSplitting() { let root = Bundle.module.url( forResource: "IgnoreCollectionTest", withExtension: nil, subdirectory: "Resources" )! let c = Ignore(base: root, parent: nil)! expect(c.excludes(self.url("out", base: root, isDir: true))).to(beTrue()) expect(c.excludes(self.url("out", base: root, isDir: false))).to(beFalse()) expect(c.excludes(self.url("logs", base: root, isDir: true))).to(beTrue()) expect(c.excludes(self.url("logs", base: root, isDir: false))).to(beFalse()) expect(c.excludes(self.url("a.png", base: root))).to(beTrue()) expect(c.excludes(self.url("include-me", base: root))).to(beFalse()) expect(c.excludes(self.url("a/b/include-me", base: root))).to(beFalse()) expect(c.excludes(self.url("ignore-me", base: root))).to(beTrue()) expect(c.excludes(self.url("a/b/ignore-me", base: root))).to(beTrue()) } private func url(_ path: String, base: URL, isDir: Bool = false) -> URL { URL(fileURLWithPath: path, isDirectory: isDir, relativeTo: base) } } ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/FileLineReaderTest/dos-no-line-ending-at-the-end.txt ================================================ 0123 하태원 abcde ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/FileLineReaderTest/dos-only-new-lines.txt ================================================ ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/FileLineReaderTest/dos-with-line-ending-at-the-end.txt ================================================ 0123 하태원 abcde ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/FileLineReaderTest/empty.txt ================================================ ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/FileLineReaderTest/unix-no-line-ending-at-the-end.txt ================================================ 0123 하태원 abcde ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/FileLineReaderTest/unix-only-new-lines.txt ================================================ ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/FileLineReaderTest/unix-with-line-ending-at-the-end.txt ================================================ 0123 하태원 abcde ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/IgnoreCollectionTest/.gitignore ================================================ *.png # will be included below include-me vendor/ **/ignore-me ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/IgnoreCollectionTest/.ignore ================================================ # include include-me file !include-me /logs/ /out/ ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/IgnoreCollectionTest/ignore-splitting-0 ================================================ *.a *.b *.c *.d ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/IgnoreCollectionTest/ignore-splitting-1 ================================================ !*.a *.b *.c *.d ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/IgnoreCollectionTest/ignore-splitting-2 ================================================ *.a !*.b *.c *.d ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/IgnoreCollectionTest/ignore-splitting-3 ================================================ !*.a *.b !*.c *.d ================================================ FILE: Ignore/Tests/IgnoreTests/Resources/IgnoreCollectionTest/ignore-splitting-4 ================================================ *.a *.b *.c !*.d ================================================ FILE: LICENSE ================================================ The MIT License (MIT) Copyright (c) 2025 Tae Won Ha Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: NvimApi/.gitignore ================================================ .DS_Store /.build /Packages xcuserdata/ DerivedData/ .swiftpm/configuration/registries.json .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc ================================================ FILE: NvimApi/LICENSE ================================================ The MIT License (MIT) Copyright (c) 2024 Tae Won Ha Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: NvimApi/Package.swift ================================================ // swift-tools-version: 6.0 import PackageDescription let package = Package( name: "NvimApi", platforms: [.macOS(.v14)], products: [ .library(name: "NvimApi", targets: ["NvimApi"]), ], dependencies: [ .package(url: "https://github.com/qvacua/MessagePack.swift", .upToNextMinor(from: "4.1.0")), .package(url: "https://github.com/Kitura/BlueSocket", .upToNextMinor(from: "2.0.2")), .package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "0.62.2"), .package(name: "Commons", path: "../Commons"), ], targets: [ .target( name: "NvimApi", dependencies: [ .product(name: "MessagePack", package: "MessagePack.swift"), .product(name: "Socket", package: "BlueSocket"), "Commons", ], plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")] ), .testTarget( name: "NvimApiTests", dependencies: [ "NvimApi", ] ), ] ) ================================================ FILE: NvimApi/README.md ================================================ To generate the API Swift file, first checkout the correct ref, e.g., develop or update-neovim. Then, ```bash ./bin/generate_sources.sh ``` ================================================ FILE: NvimApi/Sources/NvimApi/Defs.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Commons let dlog = DevLogger.shared ================================================ FILE: NvimApi/Sources/NvimApi/MsgpackRpc.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation import MessagePack import os // Inspired by https://stackoverflow.com/a/76941591 extension Pipe { private struct DataReader { fileprivate let dataStream: AsyncStream init(pipe: Pipe) { let (stream, cont) = AsyncStream.makeStream() self.dataStream = stream cont.onTermination = { [weak pipe] _ in pipe?.fileHandleForReading.readabilityHandler = nil } pipe.fileHandleForReading.readabilityHandler = { handle in let data = handle.availableData if data.isEmpty { cont.finish() return } else { cont.yield(data) } } } } var asyncData: AsyncStream { DataReader(pipe: self).dataStream } } public actor MsgpackRpc { public typealias Value = MessagePackValue public enum MessageType: UInt64 { case request = 0 case response = 1 case notification = 2 } public enum Message: Sendable { case response(msgid: UInt32, error: Value, result: Value) case notification(method: String, params: [Value]) case error(value: Value, msg: String) case request(msgid: UInt32, method: String, params: [Value]) } public struct Response: Sendable { public static func nilResponse(_ msgid: UInt32) -> Self { .init(msgid: msgid, error: .nil, result: .nil) } public let msgid: UInt32 public let error: Value public let result: Value public var isSuccess: Bool { self.error.isNil } public var isError: Bool { !self.isSuccess } } public struct Error: Swift.Error { var msg: String var cause: Swift.Error? init(msg: String, cause: Swift.Error? = nil) { self.msg = msg self.cause = cause } } public let messagesStream: AsyncStream public init() { (self.messagesStream, self.streamContinuation) = AsyncStream.makeStream() } public func run(inPipe: Pipe, outPipe: Pipe, errorPipe: Pipe) async throws { self.inPipe = inPipe self.outPipe = outPipe self.errorPipe = errorPipe try await self.startReading() } public func stop() { dlog.debug("Stopping") self.cleanUp() } public func response(msgid: UInt32, error: Value, result: Value) throws { if self.closed { dlog.debug("Not sending response because closed") return } let packed = pack( [ .uint(MessageType.response.rawValue), .uint(UInt64(msgid)), error, result, ] ) try self.inPipe?.fileHandleForWriting.write(contentsOf: packed) } public func request( method: String, params: [Value], expectsReturnValue: Bool ) async throws -> Response { if self.closed { dlog.debug("Not sending request because closed") return .nilResponse(0) } let msgid = self.nextMsgid self.nextMsgid += 1 let packed = pack( [ .uint(MessageType.request.rawValue), .uint(UInt64(msgid)), .string(method), .array(params), ] ) try self.inPipe?.fileHandleForWriting.write(contentsOf: packed) if !expectsReturnValue { return .nilResponse(msgid) } return await withCheckedContinuation { continuation in self.pendingRequests[msgid] = continuation } } // MARK: Private private let logger = Logger(subsystem: "com.qvacua.NvimApi", category: "rpc") private var closed = false private let streamContinuation: AsyncStream.Continuation private var inPipe: Pipe? private var outPipe: Pipe? private var errorPipe: Pipe? private var readingTask: Task? private var nextMsgid: UInt32 = 1 private var pendingRequests = [UInt32: CheckedContinuation]() private func startReading() async throws { self.readingTask = Task.detached(priority: .high) { dlog.debug("Start reading") guard let dataStream = await self.outPipe?.asyncData else { throw Error(msg: "Could not get the async data stream") } var buffer = Data() for await data in dataStream { do { buffer.append(data) let (values, remainder) = try self.unpackAllWithRemainder(buffer) if let remainder { buffer = remainder } else { buffer.removeAll(keepingCapacity: true) } // Do we have to check closed here before processing the msgs? for value in values { await self.processMessage(value) } } } dlog.debug("End reading") await self.cleanUp() } } private func cleanUp() { if self.closed { dlog.debug("MsgpackRpc already closed") return } dlog.debug("Cleaning up") self.closed = true self.readingTask?.cancel() self.readingTask = nil self.inPipe?.fileHandleForReading.readabilityHandler = nil self.inPipe?.fileHandleForWriting.closeFile() self.outPipe?.fileHandleForReading.closeFile() self.errorPipe?.fileHandleForReading.closeFile() self.inPipe = nil self.outPipe = nil self.errorPipe = nil self.streamContinuation.finish() for (msgid, continuation) in self.pendingRequests { continuation.resume(returning: .nilResponse(msgid)) } self.pendingRequests.removeAll() dlog.debug("MsgpackRpc closed") } private func processMessage(_ unpacked: Value) { guard let array = unpacked.arrayValue else { self.streamContinuation.yield(with: .success(.error( value: unpacked, msg: "Could not get the array from the message" ))) return } guard let rawType = array[0].uint64Value, let type = MessageType(rawValue: rawType) else { self.streamContinuation.yield(with: .success(.error( value: unpacked, msg: "Could not get the type of the message" ))) return } switch type { case .response: guard array.count == 4 else { self.streamContinuation.yield(with: .success(.error( value: unpacked, msg: "Got an array of length \(array.count) for a message type response" ))) return } guard let msgid64 = array[1].uint64Value else { self.streamContinuation.yield(with: .success(.error( value: unpacked, msg: "Could not get the msgid" ))) return } self.processResponse(msgid: UInt32(msgid64), error: array[2], result: array[3]) case .notification: guard array.count == 3 else { self.streamContinuation.yield(with: .success(.error( value: unpacked, msg: "Got an array of length \(array.count) for a message type notification" ))) return } guard let method = array[1].stringValue, let params = array[2].arrayValue else { self.streamContinuation.yield(with: .success(.error( value: unpacked, msg: "Could not get the method and params" ))) return } self.streamContinuation.yield(with: .success(.notification( method: method, params: params ))) case .request: guard let msgid = array[1].uint32Value, let method = array[2].stringValue, let params = array[3].arrayValue else { return } self.streamContinuation.yield(with: .success(.request( msgid: msgid, method: method, params: params ))) return } } private func processResponse(msgid: UInt32, error: Value, result: Value) { guard let continuation = self.pendingRequests.removeValue(forKey: msgid) else { return } continuation.resume(returning: Response(msgid: msgid, error: error, result: result)) } private nonisolated func unpackAllWithRemainder(_ data: Data) throws -> (values: [Value], remainder: Data?) { var values = [Value]() var remainderData: Data? var subdata = Subdata(data: data) while !subdata.isEmpty { let value: Value do { (value, subdata) = try unpack(subdata, compatibility: false) values.append(consume value) } catch MessagePackError.insufficientData { remainderData = subdata.data break } } return (values, remainderData) } } ================================================ FILE: NvimApi/Sources/NvimApi/NvimApi.generated.swift ================================================ // Auto generated for nvim version 0.11.5. // See bin/generate_api_methods.py import Foundation import MessagePack extension NvimApi { public enum Error: Swift.Error, Sendable { public static let exceptionRawValue = UInt64(0) public static let validationRawValue = UInt64(1) case exception(message: String) case validation(message: String) case blocked case conversion(type: Any.Type) case other(cause: Swift.Error) case other(description: String) case unknown init(_ value: NvimApi.Value?) { let array = value?.arrayValue guard array?.count == 2 else { self = .unknown return } guard let rawValue = array?[0].uint64Value, let message = array?[1].stringValue else { self = .unknown return } switch rawValue { case Error.exceptionRawValue: self = .exception(message: message) case Error.validationRawValue: self = .validation(message: message) default: self = .unknown } } } } public extension NvimApi { func nvimGetAutocmds( opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_autocmds", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateAutocmd( event: NvimApi.Value, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ event, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_create_autocmd", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelAutocmd( id: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(id)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_del_autocmd", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimClearAutocmds( opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_clear_autocmds", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateAugroup( name: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_create_augroup", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelAugroupById( id: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(id)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_del_augroup_by_id", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelAugroupByName( name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_del_augroup_by_name", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimExecAutocmds( event: NvimApi.Value, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ event, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_exec_autocmds", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufLineCount( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_line_count", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufAttach( buffer: NvimApi.Buffer, send_buffer: Bool, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .bool(send_buffer), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_attach", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDetach( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_detach", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetLines( buffer: NvimApi.Buffer, start: Int, end: Int, strict_indexing: Bool, errWhenBlocked: Bool = true ) async -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(strict_indexing), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_lines", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetLines( buffer: NvimApi.Buffer, start: Int, end: Int, strict_indexing: Bool, replacement: [String], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(strict_indexing), .array(replacement.map { .string($0) }), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_lines", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetText( buffer: NvimApi.Buffer, start_row: Int, start_col: Int, end_row: Int, end_col: Int, replacement: [String], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start_row)), .int(Int64(start_col)), .int(Int64(end_row)), .int(Int64(end_col)), .array(replacement.map { .string($0) }), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_text", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetText( buffer: NvimApi.Buffer, start_row: Int, start_col: Int, end_row: Int, end_col: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start_row)), .int(Int64(start_col)), .int(Int64(end_row)), .int(Int64(end_col)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_text", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetOffset( buffer: NvimApi.Buffer, index: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(index)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_offset", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetVar( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetChangedtick( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_changedtick", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetKeymap( buffer: NvimApi.Buffer, mode: String, errWhenBlocked: Bool = true ) async -> Result<[[String: NvimApi.Value]], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(mode), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [[String: NvimApi.Value]] { guard let result = (msgPackArrayDictToSwift(value.arrayValue)) else { throw NvimApi.Error.conversion(type: [[String: NvimApi.Value]].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_keymap", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [[String: NvimApi.Value]] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetKeymap( buffer: NvimApi.Buffer, mode: String, lhs: String, rhs: String, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(mode), .string(lhs), .string(rhs), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_keymap", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelKeymap( buffer: NvimApi.Buffer, mode: String, lhs: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(mode), .string(lhs), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_del_keymap", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetVar( buffer: NvimApi.Buffer, name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelVar( buffer: NvimApi.Buffer, name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_del_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetName( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetName( buffer: NvimApi.Buffer, name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_name", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufIsLoaded( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_is_loaded", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelete( buffer: NvimApi.Buffer, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_delete", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufIsValid( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelMark( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_del_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetMark( buffer: NvimApi.Buffer, name: String, line: Int, col: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), .int(Int64(line)), .int(Int64(col)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetMark( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) async -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufCall( buffer: NvimApi.Buffer, fun: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), fun, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_call", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimParseCmd( str: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(str), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_parse_cmd", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCmd( cmd: [String: NvimApi.Value], opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .map(cmd.mapToDict({ (NvimApi.Value.string($0), $1) })), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_cmd", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateUserCommand( name: String, command: NvimApi.Value, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), command, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_create_user_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelUserCommand( name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_del_user_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufCreateUserCommand( buffer: NvimApi.Buffer, name: String, command: NvimApi.Value, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), command, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_create_user_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelUserCommand( buffer: NvimApi.Buffer, name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_del_user_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCommands( opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_commands", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetCommands( buffer: NvimApi.Buffer, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_commands", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimExec( src: String, output: Bool, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(src), .bool(output), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_exec", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimCommandOutput( command: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(command), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_command_output", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimExecuteLua( code: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(code), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_execute_lua", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufGetNumber( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_number", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufClearHighlight( buffer: NvimApi.Buffer, ns_id: Int, line_start: Int, line_end: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(line_start)), .int(Int64(line_end)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_clear_highlight", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufAddHighlight( buffer: NvimApi.Buffer, ns_id: Int, hl_group: String, line: Int, col_start: Int, col_end: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .string(hl_group), .int(Int64(line)), .int(Int64(col_start)), .int(Int64(col_end)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_add_highlight", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufSetVirtualText( buffer: NvimApi.Buffer, src_id: Int, line: Int, chunks: NvimApi.Value, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(src_id)), .int(Int64(line)), chunks, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_virtual_text", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimGetHlById( hl_id: Int, rgb: Bool, errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(hl_id)), .bool(rgb), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_hl_by_id", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimGetHlByName( name: String, rgb: Bool, errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(name), .bool(rgb), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_hl_by_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferInsert( buffer: NvimApi.Buffer, lnum: Int, lines: [String], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(lnum)), .array(lines.map { .string($0) }), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_insert", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetLine( buffer: NvimApi.Buffer, index: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(index)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_get_line", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetLine( buffer: NvimApi.Buffer, index: Int, line: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(index)), .string(line), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_set_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferDelLine( buffer: NvimApi.Buffer, index: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(index)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_del_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetLineSlice( buffer: NvimApi.Buffer, start: Int, end: Int, include_start: Bool, include_end: Bool, errWhenBlocked: Bool = true ) async -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(include_start), .bool(include_end), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_get_line_slice", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetLineSlice( buffer: NvimApi.Buffer, start: Int, end: Int, include_start: Bool, include_end: Bool, replacement: [String], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(include_start), .bool(include_end), .array(replacement.map { .string($0) }), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_set_line_slice", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetVar( buffer: NvimApi.Buffer, name: String, value: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), value, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_set_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferDelVar( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_del_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetVar( window: NvimApi.Window, name: String, value: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), value, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_set_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowDelVar( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_del_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageSetVar( tabpage: NvimApi.Tabpage, name: String, value: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), value, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "tabpage_set_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageDelVar( tabpage: NvimApi.Tabpage, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "tabpage_del_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetVar( name: String, value: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_set_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimDelVar( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_del_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimGetOptionInfo( name: String, errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_option_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimSetOption( name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimGetOption( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufGetOption( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufSetOption( buffer: NvimApi.Buffer, name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimWinGetOption( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimWinSetOption( window: NvimApi.Window, name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimCallAtomic( calls: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ calls, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_call_atomic", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimSubscribe( event: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(event), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_subscribe", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimUnsubscribe( event: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(event), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_unsubscribe", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimOutWrite( str: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(str), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_out_write", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimErrWrite( str: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(str), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_err_write", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimErrWriteln( str: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(str), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_err_writeln", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimNotify( msg: String, log_level: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(msg), .int(Int64(log_level)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_notify", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateNamespace( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_create_namespace", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetNamespaces( errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_namespaces", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetExtmarkById( buffer: NvimApi.Buffer, ns_id: Int, id: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(id)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_extmark_by_id", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetExtmarks( buffer: NvimApi.Buffer, ns_id: Int, start: NvimApi.Value, end: NvimApi.Value, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), start, end, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_get_extmarks", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetExtmark( buffer: NvimApi.Buffer, ns_id: Int, line: Int, col: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(line)), .int(Int64(col)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_set_extmark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelExtmark( buffer: NvimApi.Buffer, ns_id: Int, id: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(id)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_del_extmark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufClearNamespace( buffer: NvimApi.Buffer, ns_id: Int, line_start: Int, line_end: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(line_start)), .int(Int64(line_end)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_buf_clear_namespace", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetDecorationProvider( ns_id: Int, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_decoration_provider", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetOptionValue( name: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_option_value", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetOptionValue( name: String, value: NvimApi.Value, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), value, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_option_value", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetAllOptionsInfo( errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_all_options_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetOptionInfo2( name: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(name), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_option_info2", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageListWins( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) async -> Result<[NvimApi.Window], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Window] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Window(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Window].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_tabpage_list_wins", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Window] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageGetVar( tabpage: NvimApi.Tabpage, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_tabpage_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageSetVar( tabpage: NvimApi.Tabpage, name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_tabpage_set_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageDelVar( tabpage: NvimApi.Tabpage, name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_tabpage_del_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageGetWin( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_tabpage_get_win", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageSetWin( tabpage: NvimApi.Tabpage, win: NvimApi.Window, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .int(Int64(win.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_tabpage_set_win", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageGetNumber( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_tabpage_get_number", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageIsValid( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_tabpage_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiAttach( width: Int, height: Int, options: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(width)), .int(Int64(height)), .map(options.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_attach", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func uiAttach( width: Int, height: Int, enable_rgb: Bool, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(width)), .int(Int64(height)), .bool(enable_rgb), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "ui_attach", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiSetFocus( gained: Bool, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .bool(gained), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_set_focus", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiDetach( expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_detach", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiTryResize( width: Int, height: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(width)), .int(Int64(height)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_try_resize", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiSetOption( name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiTryResizeGrid( grid: Int, width: Int, height: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(grid)), .int(Int64(width)), .int(Int64(height)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_try_resize_grid", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiPumSetHeight( height: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(height)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_pum_set_height", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiPumSetBounds( width: Float, height: Float, row: Float, col: Float, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .float(width), .float(height), .float(row), .float(col), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_pum_set_bounds", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiTermEvent( event: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(event), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_ui_term_event", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetHlIdByName( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_hl_id_by_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetHl( ns_id: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_hl", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetHl( ns_id: Int, name: String, val: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), .string(name), .map(val.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_hl", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetHlNs( opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_hl_ns", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetHlNs( ns_id: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_hl_ns", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetHlNsFast( ns_id: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_hl_ns_fast", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimFeedkeys( keys: String, mode: String, escape_ks: Bool, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(keys), .string(mode), .bool(escape_ks), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_feedkeys", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimInput( keys: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(keys), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_input", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimInputMouse( button: String, action: String, modifier: String, grid: Int, row: Int, col: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(button), .string(action), .string(modifier), .int(Int64(grid)), .int(Int64(row)), .int(Int64(col)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_input_mouse", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimReplaceTermcodes( str: String, from_part: Bool, do_lt: Bool, special: Bool, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(str), .bool(from_part), .bool(do_lt), .bool(special), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_replace_termcodes", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimExecLua( code: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(code), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_exec_lua", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimStrwidth( text: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(text), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_strwidth", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimListRuntimePaths( errWhenBlocked: Bool = true ) async -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_list_runtime_paths", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetRuntimeFile( name: String, all: Bool, errWhenBlocked: Bool = true ) async -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(name), .bool(all), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_runtime_file", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentDir( dir: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(dir), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_current_dir", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCurrentLine( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_current_line", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentLine( line: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(line), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_current_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelCurrentLine( expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_del_current_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetVar( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetVar( name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelVar( name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_del_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetVvar( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_vvar", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetVvar( name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_vvar", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimEcho( chunks: NvimApi.Value, history: Bool, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ chunks, .bool(history), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_echo", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimListBufs( errWhenBlocked: Bool = true ) async -> Result<[NvimApi.Buffer], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Buffer] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Buffer(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Buffer].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_list_bufs", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Buffer] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCurrentBuf( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_current_buf", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentBuf( buffer: NvimApi.Buffer, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_current_buf", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimListWins( errWhenBlocked: Bool = true ) async -> Result<[NvimApi.Window], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Window] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Window(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Window].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_list_wins", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Window] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCurrentWin( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_current_win", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentWin( window: NvimApi.Window, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_current_win", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateBuf( listed: Bool, scratch: Bool, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .bool(listed), .bool(scratch), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_create_buf", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimOpenTerm( buffer: NvimApi.Buffer, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_open_term", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimChanSend( chan: Int, data: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(chan)), .string(data), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_chan_send", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimListTabpages( errWhenBlocked: Bool = true ) async -> Result<[NvimApi.Tabpage], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Tabpage] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Tabpage(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Tabpage].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_list_tabpages", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Tabpage] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCurrentTabpage( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Tabpage { guard let result = (NvimApi.Tabpage(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Tabpage.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_current_tabpage", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Tabpage in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentTabpage( tabpage: NvimApi.Tabpage, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_current_tabpage", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimPaste( data: String, crlf: Bool, phase: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(data), .bool(crlf), .int(Int64(phase)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_paste", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimPut( lines: [String], type: String, after: Bool, follow: Bool, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .array(lines.map { .string($0) }), .string(type), .bool(after), .bool(follow), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_put", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetColorByName( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_color_by_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetColorMap( errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_color_map", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetContext( opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_context", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimLoadContext( dict: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .map(dict.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_load_context", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetMode( ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] let reqResult = await self.sendRequest(method: "nvim_get_mode", params: params) switch reqResult { case let .success(value): guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { return .failure(Error.conversion(type: [String: NvimApi.Value].self)) } return .success(result) case let .failure(error): return .failure(error) } } func nvimGetKeymap( mode: String, errWhenBlocked: Bool = true ) async -> Result<[[String: NvimApi.Value]], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(mode), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [[String: NvimApi.Value]] { guard let result = (msgPackArrayDictToSwift(value.arrayValue)) else { throw NvimApi.Error.conversion(type: [[String: NvimApi.Value]].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_keymap", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [[String: NvimApi.Value]] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetKeymap( mode: String, lhs: String, rhs: String, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(mode), .string(lhs), .string(rhs), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_keymap", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelKeymap( mode: String, lhs: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(mode), .string(lhs), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_del_keymap", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetApiInfo( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_api_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetClientInfo( name: String, version: [String: NvimApi.Value], type: String, methods: [String: NvimApi.Value], attributes: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), .map(version.mapToDict({ (NvimApi.Value.string($0), $1) })), .string(type), .map(methods.mapToDict({ (NvimApi.Value.string($0), $1) })), .map(attributes.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_set_client_info", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetChanInfo( chan: Int, errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(chan)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_chan_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimListChans( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_list_chans", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimListUis( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_list_uis", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetProcChildren( pid: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(pid)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_proc_children", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetProc( pid: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(pid)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_proc", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSelectPopupmenuItem( item: Int, insert: Bool, finish: Bool, opts: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(item)), .bool(insert), .bool(finish), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_select_popupmenu_item", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelMark( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_del_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetMark( name: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_get_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimEvalStatusline( str: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(str), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_eval_statusline", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimExec2( src: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(src), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_exec2", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCommand( command: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(command), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimEval( expr: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(expr), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_eval", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCallFunction( fn: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(fn), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_call_function", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCallDictFunction( dict: NvimApi.Value, fn: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ dict, .string(fn), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_call_dict_function", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimParseExpression( expr: String, flags: String, highlight: Bool, errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(expr), .string(flags), .bool(highlight), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_parse_expression", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimOpenWin( buffer: NvimApi.Buffer, enter: Bool, config: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .bool(enter), .map(config.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_open_win", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetConfig( window: NvimApi.Window, config: [String: NvimApi.Value], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .map(config.mapToDict({ (NvimApi.Value.string($0), $1) })), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_set_config", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetConfig( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_config", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetBuf( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_buf", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetBuf( window: NvimApi.Window, buffer: NvimApi.Buffer, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(buffer.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_set_buf", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetCursor( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_cursor", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetCursor( window: NvimApi.Window, pos: [Int], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .array(pos.map { .int(Int64($0)) }), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_set_cursor", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetHeight( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_height", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetHeight( window: NvimApi.Window, height: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(height)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_set_height", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetWidth( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_width", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetWidth( window: NvimApi.Window, width: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(width)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_set_width", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetVar( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetVar( window: NvimApi.Window, name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_set_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinDelVar( window: NvimApi.Window, name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_del_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetPosition( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_position", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetTabpage( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Tabpage { guard let result = (NvimApi.Tabpage(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Tabpage.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_tabpage", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Tabpage in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetNumber( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_get_number", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinIsValid( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinHide( window: NvimApi.Window, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_hide", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinClose( window: NvimApi.Window, force: Bool, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .bool(force), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_close", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinCall( window: NvimApi.Window, fun: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), fun, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_call", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetHlNs( window: NvimApi.Window, ns_id: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(ns_id)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_set_hl_ns", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinTextHeight( window: NvimApi.Window, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "nvim_win_text_height", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferLineCount( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_line_count", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetLines( buffer: NvimApi.Buffer, start: Int, end: Int, strict_indexing: Bool, errWhenBlocked: Bool = true ) async -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(strict_indexing), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_get_lines", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetLines( buffer: NvimApi.Buffer, start: Int, end: Int, strict_indexing: Bool, replacement: [String], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(strict_indexing), .array(replacement.map { .string($0) }), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_set_lines", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetVar( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetName( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_get_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetName( buffer: NvimApi.Buffer, name: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_set_name", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferIsValid( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetMark( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) async -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_get_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimCommandOutput( command: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(command), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_command_output", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetNumber( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_get_number", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferClearHighlight( buffer: NvimApi.Buffer, ns_id: Int, line_start: Int, line_end: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(line_start)), .int(Int64(line_end)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_clear_highlight", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferAddHighlight( buffer: NvimApi.Buffer, ns_id: Int, hl_group: String, line: Int, col_start: Int, col_end: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .string(hl_group), .int(Int64(line)), .int(Int64(col_start)), .int(Int64(col_end)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_add_highlight", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetOption( name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetOption( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetOption( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetOption( buffer: NvimApi.Buffer, name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "buffer_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetOption( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetOption( window: NvimApi.Window, name: String, value: NvimApi.Value, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), value, ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSubscribe( event: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(event), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_subscribe", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimUnsubscribe( event: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(event), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_unsubscribe", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimOutWrite( str: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(str), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_out_write", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimErrWrite( str: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(str), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_err_write", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimReportError( str: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(str), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_report_error", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageGetWindows( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) async -> Result<[NvimApi.Window], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Window] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Window(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Window].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "tabpage_get_windows", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Window] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageGetVar( tabpage: NvimApi.Tabpage, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "tabpage_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageGetWindow( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "tabpage_get_window", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageIsValid( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "tabpage_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func uiDetach( expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "ui_detach", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func uiTryResize( width: Int, height: Int, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(width)), .int(Int64(height)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "ui_try_resize", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimFeedkeys( keys: String, mode: String, escape_ks: Bool, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(keys), .string(mode), .bool(escape_ks), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_feedkeys", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimInput( keys: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(keys), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_input", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimReplaceTermcodes( str: String, from_part: Bool, do_lt: Bool, special: Bool, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(str), .bool(from_part), .bool(do_lt), .bool(special), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_replace_termcodes", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimStrwidth( text: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(text), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_strwidth", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimListRuntimePaths( errWhenBlocked: Bool = true ) async -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_list_runtime_paths", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimChangeDirectory( dir: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(dir), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_change_directory", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetCurrentLine( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_current_line", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetCurrentLine( line: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(line), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_set_current_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimDelCurrentLine( expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_del_current_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetVar( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetVvar( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_vvar", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetBuffers( errWhenBlocked: Bool = true ) async -> Result<[NvimApi.Buffer], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Buffer] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Buffer(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Buffer].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_buffers", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Buffer] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetCurrentBuffer( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_current_buffer", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetCurrentBuffer( buffer: NvimApi.Buffer, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_set_current_buffer", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetWindows( errWhenBlocked: Bool = true ) async -> Result<[NvimApi.Window], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Window] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Window(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Window].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_windows", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Window] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetCurrentWindow( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_current_window", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetCurrentWindow( window: NvimApi.Window, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_set_current_window", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetTabpages( errWhenBlocked: Bool = true ) async -> Result<[NvimApi.Tabpage], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Tabpage] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Tabpage(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Tabpage].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_tabpages", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Tabpage] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetCurrentTabpage( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Tabpage { guard let result = (NvimApi.Tabpage(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Tabpage.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_current_tabpage", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Tabpage in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetCurrentTabpage( tabpage: NvimApi.Tabpage, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_set_current_tabpage", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimNameToColor( name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_name_to_color", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetColorMap( errWhenBlocked: Bool = true ) async -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_color_map", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetApiInfo( errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_get_api_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimCommand( command: String, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .string(command), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimEval( expr: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(expr), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_eval", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimCallFunction( fn: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .string(fn), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "vim_call_function", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetBuffer( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_get_buffer", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetCursor( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_get_cursor", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetCursor( window: NvimApi.Window, pos: [Int], expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .array(pos.map { .int(Int64($0)) }), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_set_cursor", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetHeight( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_get_height", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetHeight( window: NvimApi.Window, height: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(height)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_set_height", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetWidth( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_get_width", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetWidth( window: NvimApi.Window, width: Int, expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(width)), ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_set_width", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetVar( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetPosition( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_get_position", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetTabpage( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Tabpage { guard let result = (NvimApi.Tabpage(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Tabpage.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_get_tabpage", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Tabpage in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowIsValid( window: NvimApi.Window, errWhenBlocked: Bool = true ) async -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "window_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } } extension NvimApi.Buffer { public init?(_ value: NvimApi.Value) { guard let (type, data) = value.extendedValue else { return nil } guard type == 0 else { return nil } guard let handle = (try? unpack(data))?.value.int64Value else { return nil } self.handle = Int(handle) } } extension NvimApi.Window { public init?(_ value: NvimApi.Value) { guard let (type, data) = value.extendedValue else { return nil } guard type == 1 else { return nil } guard let handle = (try? unpack(data))?.value.int64Value else { return nil } self.handle = Int(handle) } } extension NvimApi.Tabpage { public init?(_ value: NvimApi.Value) { guard let (type, data) = value.extendedValue else { return nil } guard type == 2 else { return nil } guard let handle = (try? unpack(data))?.value.int64Value else { return nil } self.handle = Int(handle) } } ================================================ FILE: NvimApi/Sources/NvimApi/NvimApi.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation import MessagePack public actor NvimApi { public enum Event { case error(msg: String) } public struct Buffer: Equatable, Hashable, Sendable { public let handle: Int public init(_ handle: Int) { self.handle = handle } } public struct Window: Equatable, Hashable, Sendable { public let handle: Int public init(_ handle: Int) { self.handle = handle } } public struct Tabpage: Equatable, Hashable, Sendable { public let handle: Int public init(_ handle: Int) { self.handle = handle } } public typealias Value = MsgpackRpc.Value public var msgpackRawStream: AsyncStream { self.msgpackRpc.messagesStream } public func run(inPipe: Pipe, outPipe: Pipe, errorPipe: Pipe) async throws { try await self.msgpackRpc.run(inPipe: inPipe, outPipe: outPipe, errorPipe: errorPipe) } public func stop() async { await self.msgpackRpc.stop() } public func isBlocked() async -> Result { let modeResult = await self.nvimGetMode() switch modeResult { case let .success(dict): guard let value = dict["blocking"]?.boolValue else { return .failure(.conversion(type: Bool.self)) } return .success(value) case let .failure(error): return .failure(error) } } public func sendRequest( method: String, params: [NvimApi.Value] ) async -> Result { do { let reqResponse = try await self.msgpackRpc.request( method: method, params: params, expectsReturnValue: true ) if reqResponse.isSuccess { return .success(reqResponse.result) } else { return .failure(.init(reqResponse.error)) } } catch { return .failure(.other(cause: error)) } } public func sendResponse( _ response: MsgpackRpc.Response ) async -> Result { do { return try await .success( self.msgpackRpc.response( msgid: response.msgid, error: response.error, result: response.result ) ) } catch { return .failure(.other(cause: error)) } } public init() {} func blockedError() async -> NvimApi.Error? { let blockedResult = await self.isBlocked() switch blockedResult { case let .success(blocked): if blocked { return .blocked } case let .failure(error): return .other(cause: error) } return nil } private let msgpackRpc = MsgpackRpc() } func msgPackDictToSwift(_ dict: [NvimApi.Value: NvimApi.Value]?) -> [String: NvimApi.Value]? { dict?.compactMapToDict { k, v in guard let strKey = k.stringValue else { return nil } return (strKey, v) } } func msgPackArrayDictToSwift(_ array: [NvimApi.Value]?) -> [[String: NvimApi.Value]]? { array? .compactMap { v in v.dictionaryValue } .compactMap { d in msgPackDictToSwift(d) } } typealias Transform = ((key: Key, value: Value)) throws -> (K, V) typealias TransformOptional = ((key: Key, value: Value)) throws -> (K, V)? extension Dictionary { func mapToDict(_ transform: Transform) rethrows -> [K: V] { var result = [K: V](minimumCapacity: self.count) for (key, value) in self { let (nk, nv) = try transform((key: key, value: value)) result[nk] = nv } return result } func compactMapToDict(_ transform: TransformOptional) rethrows -> [K: V] { var result = [K: V](minimumCapacity: self.count) for (key, value) in self { if let (nk, nv) = try transform((key: key, value: value)) { result[nk] = nv } } return result } } extension MessagePackValue { var intValue: Int? { if let i64 = int64Value { Int(i64) } else { nil } } } ================================================ FILE: NvimApi/Sources/NvimApi/NvimApiSync.generated.swift ================================================ // Auto generated for nvim version 0.11.5. // See bin/generate_api_methods.py import Foundation import MessagePack public extension NvimApiSync { func nvimGetAutocmds( opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_autocmds", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateAutocmd( event: NvimApi.Value, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ event, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_create_autocmd", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelAutocmd( id: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(id)), ] let reqResult = self.sendRequest(method: "nvim_del_autocmd", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimClearAutocmds( opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_clear_autocmds", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateAugroup( name: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_create_augroup", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelAugroupById( id: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(id)), ] let reqResult = self.sendRequest(method: "nvim_del_augroup_by_id", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelAugroupByName( name: String ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] let reqResult = self.sendRequest(method: "nvim_del_augroup_by_name", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimExecAutocmds( event: NvimApi.Value, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ event, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_exec_autocmds", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufLineCount( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_line_count", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufAttach( buffer: NvimApi.Buffer, send_buffer: Bool, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .bool(send_buffer), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_attach", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDetach( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_detach", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetLines( buffer: NvimApi.Buffer, start: Int, end: Int, strict_indexing: Bool, errWhenBlocked: Bool = true ) -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(strict_indexing), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_lines", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetLines( buffer: NvimApi.Buffer, start: Int, end: Int, strict_indexing: Bool, replacement: [String] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(strict_indexing), .array(replacement.map { .string($0) }), ] let reqResult = self.sendRequest(method: "nvim_buf_set_lines", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetText( buffer: NvimApi.Buffer, start_row: Int, start_col: Int, end_row: Int, end_col: Int, replacement: [String] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start_row)), .int(Int64(start_col)), .int(Int64(end_row)), .int(Int64(end_col)), .array(replacement.map { .string($0) }), ] let reqResult = self.sendRequest(method: "nvim_buf_set_text", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetText( buffer: NvimApi.Buffer, start_row: Int, start_col: Int, end_row: Int, end_col: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start_row)), .int(Int64(start_col)), .int(Int64(end_row)), .int(Int64(end_col)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_text", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetOffset( buffer: NvimApi.Buffer, index: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(index)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_offset", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetVar( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetChangedtick( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_changedtick", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetKeymap( buffer: NvimApi.Buffer, mode: String, errWhenBlocked: Bool = true ) -> Result<[[String: NvimApi.Value]], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(mode), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [[String: NvimApi.Value]] { guard let result = (msgPackArrayDictToSwift(value.arrayValue)) else { throw NvimApi.Error.conversion(type: [[String: NvimApi.Value]].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_keymap", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [[String: NvimApi.Value]] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetKeymap( buffer: NvimApi.Buffer, mode: String, lhs: String, rhs: String, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(mode), .string(lhs), .string(rhs), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_buf_set_keymap", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelKeymap( buffer: NvimApi.Buffer, mode: String, lhs: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(mode), .string(lhs), ] let reqResult = self.sendRequest(method: "nvim_buf_del_keymap", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetVar( buffer: NvimApi.Buffer, name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_buf_set_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelVar( buffer: NvimApi.Buffer, name: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] let reqResult = self.sendRequest(method: "nvim_buf_del_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetName( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetName( buffer: NvimApi.Buffer, name: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] let reqResult = self.sendRequest(method: "nvim_buf_set_name", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufIsLoaded( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_is_loaded", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelete( buffer: NvimApi.Buffer, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_buf_delete", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufIsValid( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelMark( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_del_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetMark( buffer: NvimApi.Buffer, name: String, line: Int, col: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), .int(Int64(line)), .int(Int64(col)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_set_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetMark( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufCall( buffer: NvimApi.Buffer, fun: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), fun, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_call", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimParseCmd( str: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(str), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_parse_cmd", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCmd( cmd: [String: NvimApi.Value], opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .map(cmd.mapToDict({ (NvimApi.Value.string($0), $1) })), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_cmd", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateUserCommand( name: String, command: NvimApi.Value, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .string(name), command, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_create_user_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelUserCommand( name: String ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] let reqResult = self.sendRequest(method: "nvim_del_user_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufCreateUserCommand( buffer: NvimApi.Buffer, name: String, command: NvimApi.Value, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), command, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_buf_create_user_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelUserCommand( buffer: NvimApi.Buffer, name: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] let reqResult = self.sendRequest(method: "nvim_buf_del_user_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCommands( opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_commands", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetCommands( buffer: NvimApi.Buffer, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_commands", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimExec( src: String, output: Bool, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(src), .bool(output), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_exec", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimCommandOutput( command: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(command), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_command_output", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimExecuteLua( code: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(code), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_execute_lua", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufGetNumber( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_number", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufClearHighlight( buffer: NvimApi.Buffer, ns_id: Int, line_start: Int, line_end: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(line_start)), .int(Int64(line_end)), ] let reqResult = self.sendRequest(method: "nvim_buf_clear_highlight", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufAddHighlight( buffer: NvimApi.Buffer, ns_id: Int, hl_group: String, line: Int, col_start: Int, col_end: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .string(hl_group), .int(Int64(line)), .int(Int64(col_start)), .int(Int64(col_end)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_add_highlight", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufSetVirtualText( buffer: NvimApi.Buffer, src_id: Int, line: Int, chunks: NvimApi.Value, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(src_id)), .int(Int64(line)), chunks, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_set_virtual_text", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimGetHlById( hl_id: Int, rgb: Bool, errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(hl_id)), .bool(rgb), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_hl_by_id", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimGetHlByName( name: String, rgb: Bool, errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(name), .bool(rgb), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_hl_by_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferInsert( buffer: NvimApi.Buffer, lnum: Int, lines: [String] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(lnum)), .array(lines.map { .string($0) }), ] let reqResult = self.sendRequest(method: "buffer_insert", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetLine( buffer: NvimApi.Buffer, index: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(index)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_get_line", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetLine( buffer: NvimApi.Buffer, index: Int, line: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(index)), .string(line), ] let reqResult = self.sendRequest(method: "buffer_set_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferDelLine( buffer: NvimApi.Buffer, index: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(index)), ] let reqResult = self.sendRequest(method: "buffer_del_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetLineSlice( buffer: NvimApi.Buffer, start: Int, end: Int, include_start: Bool, include_end: Bool, errWhenBlocked: Bool = true ) -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(include_start), .bool(include_end), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_get_line_slice", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetLineSlice( buffer: NvimApi.Buffer, start: Int, end: Int, include_start: Bool, include_end: Bool, replacement: [String] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(include_start), .bool(include_end), .array(replacement.map { .string($0) }), ] let reqResult = self.sendRequest(method: "buffer_set_line_slice", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetVar( buffer: NvimApi.Buffer, name: String, value: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), value, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_set_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferDelVar( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_del_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetVar( window: NvimApi.Window, name: String, value: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), value, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_set_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowDelVar( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_del_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageSetVar( tabpage: NvimApi.Tabpage, name: String, value: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), value, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "tabpage_set_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageDelVar( tabpage: NvimApi.Tabpage, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "tabpage_del_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetVar( name: String, value: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_set_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimDelVar( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_del_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimGetOptionInfo( name: String, errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_option_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimSetOption( name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimGetOption( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufGetOption( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimBufSetOption( buffer: NvimApi.Buffer, name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_buf_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimWinGetOption( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimWinSetOption( window: NvimApi.Window, name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_win_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimCallAtomic( calls: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ calls, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_call_atomic", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimSubscribe( event: String ) -> Result { let params: [NvimApi.Value] = [ .string(event), ] let reqResult = self.sendRequest(method: "nvim_subscribe", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimUnsubscribe( event: String ) -> Result { let params: [NvimApi.Value] = [ .string(event), ] let reqResult = self.sendRequest(method: "nvim_unsubscribe", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimOutWrite( str: String ) -> Result { let params: [NvimApi.Value] = [ .string(str), ] let reqResult = self.sendRequest(method: "nvim_out_write", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimErrWrite( str: String ) -> Result { let params: [NvimApi.Value] = [ .string(str), ] let reqResult = self.sendRequest(method: "nvim_err_write", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimErrWriteln( str: String ) -> Result { let params: [NvimApi.Value] = [ .string(str), ] let reqResult = self.sendRequest(method: "nvim_err_writeln", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func nvimNotify( msg: String, log_level: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(msg), .int(Int64(log_level)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_notify", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateNamespace( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_create_namespace", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetNamespaces( errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_namespaces", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetExtmarkById( buffer: NvimApi.Buffer, ns_id: Int, id: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(id)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_extmark_by_id", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufGetExtmarks( buffer: NvimApi.Buffer, ns_id: Int, start: NvimApi.Value, end: NvimApi.Value, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), start, end, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_get_extmarks", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufSetExtmark( buffer: NvimApi.Buffer, ns_id: Int, line: Int, col: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(line)), .int(Int64(col)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_set_extmark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufDelExtmark( buffer: NvimApi.Buffer, ns_id: Int, id: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(id)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_buf_del_extmark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimBufClearNamespace( buffer: NvimApi.Buffer, ns_id: Int, line_start: Int, line_end: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(line_start)), .int(Int64(line_end)), ] let reqResult = self.sendRequest(method: "nvim_buf_clear_namespace", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetDecorationProvider( ns_id: Int, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_set_decoration_provider", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetOptionValue( name: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_option_value", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetOptionValue( name: String, value: NvimApi.Value, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .string(name), value, .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_set_option_value", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetAllOptionsInfo( errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_all_options_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetOptionInfo2( name: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(name), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_option_info2", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageListWins( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) -> Result<[NvimApi.Window], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Window] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Window(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Window].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_tabpage_list_wins", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Window] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageGetVar( tabpage: NvimApi.Tabpage, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_tabpage_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageSetVar( tabpage: NvimApi.Tabpage, name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_tabpage_set_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageDelVar( tabpage: NvimApi.Tabpage, name: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), ] let reqResult = self.sendRequest(method: "nvim_tabpage_del_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageGetWin( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_tabpage_get_win", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageSetWin( tabpage: NvimApi.Tabpage, win: NvimApi.Window ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .int(Int64(win.handle)), ] let reqResult = self.sendRequest(method: "nvim_tabpage_set_win", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageGetNumber( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_tabpage_get_number", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimTabpageIsValid( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_tabpage_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiAttach( width: Int, height: Int, options: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(width)), .int(Int64(height)), .map(options.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_ui_attach", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func uiAttach( width: Int, height: Int, enable_rgb: Bool ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(width)), .int(Int64(height)), .bool(enable_rgb), ] let reqResult = self.sendRequest(method: "ui_attach", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiSetFocus( gained: Bool ) -> Result { let params: [NvimApi.Value] = [ .bool(gained), ] let reqResult = self.sendRequest(method: "nvim_ui_set_focus", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiDetach( ) -> Result { let params: [NvimApi.Value] = [ ] let reqResult = self.sendRequest(method: "nvim_ui_detach", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiTryResize( width: Int, height: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(width)), .int(Int64(height)), ] let reqResult = self.sendRequest(method: "nvim_ui_try_resize", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiSetOption( name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_ui_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiTryResizeGrid( grid: Int, width: Int, height: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(grid)), .int(Int64(width)), .int(Int64(height)), ] let reqResult = self.sendRequest(method: "nvim_ui_try_resize_grid", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiPumSetHeight( height: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(height)), ] let reqResult = self.sendRequest(method: "nvim_ui_pum_set_height", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiPumSetBounds( width: Float, height: Float, row: Float, col: Float ) -> Result { let params: [NvimApi.Value] = [ .float(width), .float(height), .float(row), .float(col), ] let reqResult = self.sendRequest(method: "nvim_ui_pum_set_bounds", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimUiTermEvent( event: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .string(event), value, ] let reqResult = self.sendRequest(method: "nvim_ui_term_event", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetHlIdByName( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_hl_id_by_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetHl( ns_id: Int, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_hl", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetHl( ns_id: Int, name: String, val: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), .string(name), .map(val.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_set_hl", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetHlNs( opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_hl_ns", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetHlNs( ns_id: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), ] let reqResult = self.sendRequest(method: "nvim_set_hl_ns", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetHlNsFast( ns_id: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(ns_id)), ] let reqResult = self.sendRequest(method: "nvim_set_hl_ns_fast", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimFeedkeys( keys: String, mode: String, escape_ks: Bool ) -> Result { let params: [NvimApi.Value] = [ .string(keys), .string(mode), .bool(escape_ks), ] let reqResult = self.sendRequest(method: "nvim_feedkeys", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimInput( keys: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(keys), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_input", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimInputMouse( button: String, action: String, modifier: String, grid: Int, row: Int, col: Int ) -> Result { let params: [NvimApi.Value] = [ .string(button), .string(action), .string(modifier), .int(Int64(grid)), .int(Int64(row)), .int(Int64(col)), ] let reqResult = self.sendRequest(method: "nvim_input_mouse", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimReplaceTermcodes( str: String, from_part: Bool, do_lt: Bool, special: Bool, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(str), .bool(from_part), .bool(do_lt), .bool(special), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_replace_termcodes", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimExecLua( code: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(code), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_exec_lua", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimStrwidth( text: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(text), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_strwidth", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimListRuntimePaths( errWhenBlocked: Bool = true ) -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_list_runtime_paths", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetRuntimeFile( name: String, all: Bool, errWhenBlocked: Bool = true ) -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(name), .bool(all), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_runtime_file", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentDir( dir: String ) -> Result { let params: [NvimApi.Value] = [ .string(dir), ] let reqResult = self.sendRequest(method: "nvim_set_current_dir", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCurrentLine( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_current_line", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentLine( line: String ) -> Result { let params: [NvimApi.Value] = [ .string(line), ] let reqResult = self.sendRequest(method: "nvim_set_current_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelCurrentLine( ) -> Result { let params: [NvimApi.Value] = [ ] let reqResult = self.sendRequest(method: "nvim_del_current_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetVar( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetVar( name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_set_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelVar( name: String ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] let reqResult = self.sendRequest(method: "nvim_del_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetVvar( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_vvar", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetVvar( name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_set_vvar", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimEcho( chunks: NvimApi.Value, history: Bool, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ chunks, .bool(history), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_echo", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimListBufs( errWhenBlocked: Bool = true ) -> Result<[NvimApi.Buffer], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Buffer] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Buffer(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Buffer].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_list_bufs", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Buffer] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCurrentBuf( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_current_buf", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentBuf( buffer: NvimApi.Buffer ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] let reqResult = self.sendRequest(method: "nvim_set_current_buf", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimListWins( errWhenBlocked: Bool = true ) -> Result<[NvimApi.Window], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Window] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Window(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Window].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_list_wins", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Window] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCurrentWin( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_current_win", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentWin( window: NvimApi.Window ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] let reqResult = self.sendRequest(method: "nvim_set_current_win", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimCreateBuf( listed: Bool, scratch: Bool, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .bool(listed), .bool(scratch), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_create_buf", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimOpenTerm( buffer: NvimApi.Buffer, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_open_term", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimChanSend( chan: Int, data: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(chan)), .string(data), ] let reqResult = self.sendRequest(method: "nvim_chan_send", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimListTabpages( errWhenBlocked: Bool = true ) -> Result<[NvimApi.Tabpage], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Tabpage] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Tabpage(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Tabpage].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_list_tabpages", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Tabpage] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetCurrentTabpage( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Tabpage { guard let result = (NvimApi.Tabpage(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Tabpage.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_current_tabpage", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Tabpage in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetCurrentTabpage( tabpage: NvimApi.Tabpage ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] let reqResult = self.sendRequest(method: "nvim_set_current_tabpage", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimPaste( data: String, crlf: Bool, phase: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(data), .bool(crlf), .int(Int64(phase)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_paste", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimPut( lines: [String], type: String, after: Bool, follow: Bool ) -> Result { let params: [NvimApi.Value] = [ .array(lines.map { .string($0) }), .string(type), .bool(after), .bool(follow), ] let reqResult = self.sendRequest(method: "nvim_put", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetColorByName( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_color_by_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetColorMap( errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_color_map", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetContext( opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_context", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimLoadContext( dict: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .map(dict.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_load_context", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetMode( ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] let reqResult = self.sendRequest(method: "nvim_get_mode", params: params) switch reqResult { case let .success(value): guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { return .failure(NvimApi.Error.conversion(type: [String: NvimApi.Value].self)) } return .success(result) case let .failure(error): return .failure(error) } } func nvimGetKeymap( mode: String, errWhenBlocked: Bool = true ) -> Result<[[String: NvimApi.Value]], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(mode), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [[String: NvimApi.Value]] { guard let result = (msgPackArrayDictToSwift(value.arrayValue)) else { throw NvimApi.Error.conversion(type: [[String: NvimApi.Value]].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_keymap", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [[String: NvimApi.Value]] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetKeymap( mode: String, lhs: String, rhs: String, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .string(mode), .string(lhs), .string(rhs), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_set_keymap", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelKeymap( mode: String, lhs: String ) -> Result { let params: [NvimApi.Value] = [ .string(mode), .string(lhs), ] let reqResult = self.sendRequest(method: "nvim_del_keymap", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetApiInfo( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_api_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSetClientInfo( name: String, version: [String: NvimApi.Value], type: String, methods: [String: NvimApi.Value], attributes: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .string(name), .map(version.mapToDict({ (NvimApi.Value.string($0), $1) })), .string(type), .map(methods.mapToDict({ (NvimApi.Value.string($0), $1) })), .map(attributes.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_set_client_info", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetChanInfo( chan: Int, errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(chan)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_chan_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimListChans( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_list_chans", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimListUis( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_list_uis", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetProcChildren( pid: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(pid)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_proc_children", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetProc( pid: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(pid)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_proc", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimSelectPopupmenuItem( item: Int, insert: Bool, finish: Bool, opts: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(item)), .bool(insert), .bool(finish), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_select_popupmenu_item", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimDelMark( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_del_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimGetMark( name: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_get_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimEvalStatusline( str: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(str), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_eval_statusline", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimExec2( src: String, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(src), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_exec2", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCommand( command: String ) -> Result { let params: [NvimApi.Value] = [ .string(command), ] let reqResult = self.sendRequest(method: "nvim_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimEval( expr: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(expr), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_eval", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCallFunction( fn: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(fn), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_call_function", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimCallDictFunction( dict: NvimApi.Value, fn: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ dict, .string(fn), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_call_dict_function", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimParseExpression( expr: String, flags: String, highlight: Bool, errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .string(expr), .string(flags), .bool(highlight), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_parse_expression", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimOpenWin( buffer: NvimApi.Buffer, enter: Bool, config: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .bool(enter), .map(config.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_open_win", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetConfig( window: NvimApi.Window, config: [String: NvimApi.Value] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .map(config.mapToDict({ (NvimApi.Value.string($0), $1) })), ] let reqResult = self.sendRequest(method: "nvim_win_set_config", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetConfig( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_config", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetBuf( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_buf", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetBuf( window: NvimApi.Window, buffer: NvimApi.Buffer ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(buffer.handle)), ] let reqResult = self.sendRequest(method: "nvim_win_set_buf", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetCursor( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_cursor", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetCursor( window: NvimApi.Window, pos: [Int] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .array(pos.map { .int(Int64($0)) }), ] let reqResult = self.sendRequest(method: "nvim_win_set_cursor", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetHeight( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_height", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetHeight( window: NvimApi.Window, height: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(height)), ] let reqResult = self.sendRequest(method: "nvim_win_set_height", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetWidth( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_width", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetWidth( window: NvimApi.Window, width: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(width)), ] let reqResult = self.sendRequest(method: "nvim_win_set_width", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetVar( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetVar( window: NvimApi.Window, name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), value, ] let reqResult = self.sendRequest(method: "nvim_win_set_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinDelVar( window: NvimApi.Window, name: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] let reqResult = self.sendRequest(method: "nvim_win_del_var", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetPosition( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_position", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetTabpage( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Tabpage { guard let result = (NvimApi.Tabpage(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Tabpage.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_tabpage", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Tabpage in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinGetNumber( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_get_number", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinIsValid( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinHide( window: NvimApi.Window ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] let reqResult = self.sendRequest(method: "nvim_win_hide", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinClose( window: NvimApi.Window, force: Bool ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .bool(force), ] let reqResult = self.sendRequest(method: "nvim_win_close", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinCall( window: NvimApi.Window, fun: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), fun, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_call", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinSetHlNs( window: NvimApi.Window, ns_id: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(ns_id)), ] let reqResult = self.sendRequest(method: "nvim_win_set_hl_ns", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } func nvimWinTextHeight( window: NvimApi.Window, opts: [String: NvimApi.Value], errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .map(opts.mapToDict({ (NvimApi.Value.string($0), $1) })), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "nvim_win_text_height", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferLineCount( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_line_count", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetLines( buffer: NvimApi.Buffer, start: Int, end: Int, strict_indexing: Bool, errWhenBlocked: Bool = true ) -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(strict_indexing), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_get_lines", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetLines( buffer: NvimApi.Buffer, start: Int, end: Int, strict_indexing: Bool, replacement: [String] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(start)), .int(Int64(end)), .bool(strict_indexing), .array(replacement.map { .string($0) }), ] let reqResult = self.sendRequest(method: "buffer_set_lines", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetVar( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetName( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_get_name", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetName( buffer: NvimApi.Buffer, name: String ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] let reqResult = self.sendRequest(method: "buffer_set_name", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferIsValid( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetMark( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_get_mark", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimCommandOutput( command: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(command), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_command_output", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetNumber( buffer: NvimApi.Buffer, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_get_number", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferClearHighlight( buffer: NvimApi.Buffer, ns_id: Int, line_start: Int, line_end: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .int(Int64(line_start)), .int(Int64(line_end)), ] let reqResult = self.sendRequest(method: "buffer_clear_highlight", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferAddHighlight( buffer: NvimApi.Buffer, ns_id: Int, hl_group: String, line: Int, col_start: Int, col_end: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .int(Int64(ns_id)), .string(hl_group), .int(Int64(line)), .int(Int64(col_start)), .int(Int64(col_end)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_add_highlight", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetOption( name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .string(name), value, ] let reqResult = self.sendRequest(method: "vim_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetOption( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferGetOption( buffer: NvimApi.Buffer, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "buffer_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func bufferSetOption( buffer: NvimApi.Buffer, name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), .string(name), value, ] let reqResult = self.sendRequest(method: "buffer_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetOption( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_get_option", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetOption( window: NvimApi.Window, name: String, value: NvimApi.Value ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), value, ] let reqResult = self.sendRequest(method: "window_set_option", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSubscribe( event: String ) -> Result { let params: [NvimApi.Value] = [ .string(event), ] let reqResult = self.sendRequest(method: "vim_subscribe", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimUnsubscribe( event: String ) -> Result { let params: [NvimApi.Value] = [ .string(event), ] let reqResult = self.sendRequest(method: "vim_unsubscribe", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimOutWrite( str: String ) -> Result { let params: [NvimApi.Value] = [ .string(str), ] let reqResult = self.sendRequest(method: "vim_out_write", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimErrWrite( str: String ) -> Result { let params: [NvimApi.Value] = [ .string(str), ] let reqResult = self.sendRequest(method: "vim_err_write", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimReportError( str: String ) -> Result { let params: [NvimApi.Value] = [ .string(str), ] let reqResult = self.sendRequest(method: "vim_report_error", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageGetWindows( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) -> Result<[NvimApi.Window], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Window] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Window(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Window].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "tabpage_get_windows", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Window] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageGetVar( tabpage: NvimApi.Tabpage, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "tabpage_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageGetWindow( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "tabpage_get_window", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func tabpageIsValid( tabpage: NvimApi.Tabpage, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "tabpage_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func uiDetach( ) -> Result { let params: [NvimApi.Value] = [ ] let reqResult = self.sendRequest(method: "ui_detach", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func uiTryResize( width: Int, height: Int, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(width)), .int(Int64(height)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "ui_try_resize", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimFeedkeys( keys: String, mode: String, escape_ks: Bool ) -> Result { let params: [NvimApi.Value] = [ .string(keys), .string(mode), .bool(escape_ks), ] let reqResult = self.sendRequest(method: "vim_feedkeys", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimInput( keys: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(keys), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_input", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimReplaceTermcodes( str: String, from_part: Bool, do_lt: Bool, special: Bool, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(str), .bool(from_part), .bool(do_lt), .bool(special), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_replace_termcodes", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimStrwidth( text: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(text), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_strwidth", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimListRuntimePaths( errWhenBlocked: Bool = true ) -> Result<[String], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String] { guard let result = (value.arrayValue?.compactMap({ v in v.stringValue })) else { throw NvimApi.Error.conversion(type: [String].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_list_runtime_paths", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimChangeDirectory( dir: String ) -> Result { let params: [NvimApi.Value] = [ .string(dir), ] let reqResult = self.sendRequest(method: "vim_change_directory", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetCurrentLine( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> String { guard let result = (value.stringValue) else { throw NvimApi.Error.conversion(type: String.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_current_line", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> String in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetCurrentLine( line: String ) -> Result { let params: [NvimApi.Value] = [ .string(line), ] let reqResult = self.sendRequest(method: "vim_set_current_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimDelCurrentLine( ) -> Result { let params: [NvimApi.Value] = [ ] let reqResult = self.sendRequest(method: "vim_del_current_line", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetVar( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetVvar( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_vvar", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetBuffers( errWhenBlocked: Bool = true ) -> Result<[NvimApi.Buffer], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Buffer] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Buffer(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Buffer].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_buffers", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Buffer] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetCurrentBuffer( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_current_buffer", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetCurrentBuffer( buffer: NvimApi.Buffer ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(buffer.handle)), ] let reqResult = self.sendRequest(method: "vim_set_current_buffer", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetWindows( errWhenBlocked: Bool = true ) -> Result<[NvimApi.Window], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Window] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Window(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Window].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_windows", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Window] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetCurrentWindow( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Window { guard let result = (NvimApi.Window(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Window.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_current_window", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Window in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetCurrentWindow( window: NvimApi.Window ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] let reqResult = self.sendRequest(method: "vim_set_current_window", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetTabpages( errWhenBlocked: Bool = true ) -> Result<[NvimApi.Tabpage], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [NvimApi.Tabpage] { guard let result = (value.arrayValue?.compactMap({ v in NvimApi.Tabpage(v) })) else { throw NvimApi.Error.conversion(type: [NvimApi.Tabpage].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_tabpages", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [NvimApi.Tabpage] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetCurrentTabpage( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Tabpage { guard let result = (NvimApi.Tabpage(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Tabpage.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_current_tabpage", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Tabpage in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimSetCurrentTabpage( tabpage: NvimApi.Tabpage ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(tabpage.handle)), ] let reqResult = self.sendRequest(method: "vim_set_current_tabpage", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimNameToColor( name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_name_to_color", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetColorMap( errWhenBlocked: Bool = true ) -> Result<[String: NvimApi.Value], NvimApi.Error> { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [String: NvimApi.Value] { guard let result = (msgPackDictToSwift(value.dictionaryValue)) else { throw NvimApi.Error.conversion(type: [String: NvimApi.Value].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_color_map", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [String: NvimApi.Value] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimGetApiInfo( errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_get_api_info", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimCommand( command: String ) -> Result { let params: [NvimApi.Value] = [ .string(command), ] let reqResult = self.sendRequest(method: "vim_command", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimEval( expr: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(expr), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_eval", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func vimCallFunction( fn: String, args: NvimApi.Value, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .string(fn), args, ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "vim_call_function", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetBuffer( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Buffer { guard let result = (NvimApi.Buffer(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Buffer.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_get_buffer", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Buffer in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetCursor( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_get_cursor", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetCursor( window: NvimApi.Window, pos: [Int] ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .array(pos.map { .int(Int64($0)) }), ] let reqResult = self.sendRequest(method: "window_set_cursor", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetHeight( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_get_height", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetHeight( window: NvimApi.Window, height: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(height)), ] let reqResult = self.sendRequest(method: "window_set_height", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetWidth( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Int { guard let result = (value.intValue) else { throw NvimApi.Error.conversion(type: Int.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_get_width", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Int in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowSetWidth( window: NvimApi.Window, width: Int ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .int(Int64(width)), ] let reqResult = self.sendRequest(method: "window_set_width", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetVar( window: NvimApi.Window, name: String, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), .string(name), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Value { guard let result = (Optional(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Value.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_get_var", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Value in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetPosition( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result<[Int], NvimApi.Error> { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> [Int] { guard let result = (value.arrayValue?.compactMap({ v in v.intValue })) else { throw NvimApi.Error.conversion(type: [Int].self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_get_position", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> [Int] in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowGetTabpage( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> NvimApi.Tabpage { guard let result = (NvimApi.Tabpage(value)) else { throw NvimApi.Error.conversion(type: NvimApi.Tabpage.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_get_tabpage", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> NvimApi.Tabpage in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } @available(*, deprecated, message: "This method has been deprecated.") func windowIsValid( window: NvimApi.Window, errWhenBlocked: Bool = true ) -> Result { let params: [NvimApi.Value] = [ .int(Int64(window.handle)), ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> Bool { guard let result = (value.boolValue) else { throw NvimApi.Error.conversion(type: Bool.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "window_is_valid", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> Bool in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } } ================================================ FILE: NvimApi/Sources/NvimApi/NvimApiSync.swift ================================================ import Foundation import MessagePack import os import Socket /// Only supports requests public class NvimApiSync: @unchecked Sendable { public init() { // We know it will succeed // swiftlint:disable:next force_try self.socket = try! Socket.create(family: .unix, proto: .unix) } public func run(socketPath: String) throws { try self.socket.connect(to: socketPath) } public func stop() { self.lock.lock() defer { lock.unlock() } self.socket.close() } public func sendRequest( method: String, params: [MsgpackRpc.Value] ) -> Result { self.lock.lock() defer { lock.unlock() } self.msgId += 1 let request: [MessagePackValue] = [ .uint(MsgpackRpc.MessageType.request.rawValue), .uint(UInt64(self.msgId)), .string(method), .array(params), ] let data = MessagePack.pack(.array(request)) do { try self.socket.write(from: data) var response = Data() _ = try self.socket.read(into: &response) let decoded = try MessagePack.unpack(response) guard case let .array(unpacked) = decoded.value, unpacked.count == 4, case .uint(MsgpackRpc.MessageType.response.rawValue) = unpacked[0] else { return .failure(.exception(message: "Invalid response")) } // Check for errors guard unpacked[2].isNil else { return .failure(.other(cause: NvimApi.Error(unpacked[2]))) } return .success(unpacked[3]) } catch { return .failure(.other(cause: error)) } } public func isBlocked() -> Result { let modeResult = self.nvimGetMode() switch modeResult { case let .success(dict): guard let value = dict["blocking"]?.boolValue else { return .failure(.conversion(type: Bool.self)) } return .success(value) case let .failure(error): return .failure(error) } } func blockedError() -> NvimApi.Error? { let blockedResult = self.isBlocked() switch blockedResult { case let .success(blocked): if blocked { return .blocked } case let .failure(error): return .other(cause: error) } return nil } private let socket: Socket private var msgId: UInt32 = 0 private let lock = OSAllocatedUnfairLock() } ================================================ FILE: NvimApi/Tests/NvimApiTests/DictionaryExtensionTests.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation import Testing @testable import NvimApi struct DictionaryExtensionTests { @Test func testMapToDict() { let input = ["a": 1, "b": 2, "c": 3] let result = input.mapToDict { key, value in (key.uppercased(), value * 2) } #expect(result == ["A": 2, "B": 4, "C": 6]) } @Test func testMapToDictWithTypeConversion() { let input = [1: "one", 2: "two", 3: "three"] let result = input.mapToDict { key, value in (value, key) } #expect(result == ["one": 1, "two": 2, "three": 3]) } @Test func testMapToDictEmpty() { let input: [String: Int] = [:] let result = input.mapToDict { key, value in (key, value) } #expect(result.isEmpty) } @Test func testCompactMapToDict() { let input = ["a": 1, "b": 2, "c": 3, "d": 4] let result = input.compactMapToDict { key, value -> (String, Int)? in guard value % 2 == 0 else { return nil } return (key.uppercased(), value * 2) } #expect(result == ["B": 4, "D": 8]) } @Test func testCompactMapToDictAllNil() { let input = ["a": 1, "b": 3, "c": 5] let result = input.compactMapToDict { key, value -> (String, Int)? in return nil } #expect(result.isEmpty) } @Test func testCompactMapToDictTypeConversion() { let input = ["1": "one", "2": "two", "invalid": "three"] let result = input.compactMapToDict { key, value -> (Int, String)? in guard let intKey = Int(key) else { return nil } return (intKey, value) } #expect(result == [1: "one", 2: "two"]) } @Test func testCompactMapToDictEmpty() { let input: [String: Int] = [:] let result = input.compactMapToDict { key, value -> (String, Int)? in (key, value) } #expect(result.isEmpty) } } ================================================ FILE: NvimApi/Tests/NvimApiTests/MsgpackRpcNeovimExample.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation import NvimApi import Testing /// No real test, just a sample code to see that it works with Neovim class MsgpackRpcNeovimExample { let rpc = MsgpackRpc() let proc: Process init() async throws { self.proc = neovimProcess() let inPipe = self.proc.standardInput as! Pipe let outPipe = self.proc.standardOutput as! Pipe let errorPipe = self.proc.standardError as! Pipe try self.proc.run() let stream = await self.rpc.messagesStream try await self.rpc.run(inPipe: inPipe, outPipe: outPipe, errorPipe: errorPipe) Task.detached { for await msg in stream { switch msg { case let .notification(method, params): Swift.print("NOTIFICATION: \(method): array of \(params.count) elements") case let .error(value, msg): Swift.print("ERROR: \(msg) with \(value)") case let .response(msgid, error, result): Swift.print("RESPONSE: \(msgid), \(error), \(result)") default: Issue.record("Unknown msg type from rpc") } } } } func cleanUp() async throws { _ = try await self.rpc.request( method: "nvim_command", params: [.string("q!")], expectsReturnValue: false ) await self.rpc.stop() self.proc.waitUntilExit() } @Test func testExample() async throws { _ = try await self.rpc.request( method: "nvim_ui_attach", params: [80, 24, [:]], expectsReturnValue: false ) let formatter = DateFormatter() formatter.dateFormat = "mm:ss.SSS" for i in 0...100 { let date = Date() let response = try await self.rpc .request( method: "nvim_exec2", params: [.string("echo '\(i) \(formatter.string(from: date))'"), ["output": true]], expectsReturnValue: true ) Swift.print(response) } let testFileUrl: URL = FileManager.default .homeDirectoryForCurrentUser.appending(components: "test/big.swift") guard FileManager.default.fileExists(atPath: testFileUrl.path) else { try await self.cleanUp() return } _ = try await self.rpc.request( method: "nvim_command", params: [.string("e \(testFileUrl.path)")], expectsReturnValue: false ) let lineCount = try await self.rpc.request( method: "nvim_buf_line_count", params: [.int(0)], expectsReturnValue: true ) Swift.print("Line count of \(testFileUrl): \(lineCount)") let repeatCount = 10 for _ in 0...repeatCount { _ = try await self.rpc .request(method: "nvim_input", params: [""], expectsReturnValue: false) } for _ in 0...repeatCount { _ = try await self.rpc .request(method: "nvim_input", params: [""], expectsReturnValue: false) } _ = try await self.rpc.request( method: "nvim_ui_detach", params: [], expectsReturnValue: false ) try await self.cleanUp() } } private func neovimProcess() -> Process { let inPipe = Pipe() let outPipe = Pipe() let errorPipe = Pipe() let process = Process() process.executableURL = URL(fileURLWithPath: "/opt/homebrew/bin/nvim") process.standardInput = inPipe process.standardError = errorPipe process.standardOutput = outPipe process.arguments = ["--embed"] return process } private let nanoSecondsPerSecond: UInt64 = 1_000_000_000 ================================================ FILE: NvimApi/Tests/NvimApiTests/NvimApiExample.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation import NvimApi import Testing /// No real test, just a sample code to see that it works with Neovim class NvimApiExample { let api = NvimApi() var proc: Process init() async throws { self.proc = neovimProcess() let inPipe = self.proc.standardInput as! Pipe let outPipe = self.proc.standardOutput as! Pipe let errorPipe = self.proc.standardError as! Pipe try self.proc.run() let stream = await self.api.msgpackRawStream try await self.api.run(inPipe: inPipe, outPipe: outPipe, errorPipe: errorPipe) Task.detached { for await msg in stream { switch msg { case let .notification(method, params): print("NOTIFICATION: \(method): array of \(params.count) elements") case let .error(value, msg): print("ERROR: \(msg) with \(value)") case let .response(msgid, error, result): print("RESPONSE: \(msgid), \(error), \(result)") default: Issue.record("Unknown msg type from rpc") } } } } func cleanUp() async throws { try await self.api.nvimCommand(command: "q!").get() self.proc.waitUntilExit() } @Test func testExample() async throws { try await self.api.nvimUiAttach(width: 80, height: 24, options: [:]).get() let formatter = DateFormatter() formatter.dateFormat = "mm:ss.SSS" for i in 0...100 { let date = Date() let response = try await self.api.nvimExec2( src: "echo '\(i) \(formatter.string(from: date))'", opts: ["output": true] ).get() Swift.print(response) } let testFileUrl: URL = FileManager.default .homeDirectoryForCurrentUser.appending(components: "test/big.swift") guard FileManager.default.fileExists(atPath: testFileUrl.path) else { try await self.api.nvimUiDetach().get() return } try await self.api.nvimCommand(command: "e \(testFileUrl.path)").get() let lineCount = try await self.api.nvimBufLineCount(buffer: .init(0)).get() Swift.print("Line count of \(testFileUrl): \(lineCount)") let repeatCount = 10 for _ in 0...repeatCount { _ = try await self.api.nvimInput(keys: "").get() } for _ in 0...repeatCount { _ = try await self.api.nvimInput(keys: "").get() } try await self.api.nvimUiDetach().get() try await self.cleanUp() } } private func neovimProcess() -> Process { let inPipe = Pipe() let outPipe = Pipe() let errorPipe = Pipe() let process = Process() process.executableURL = URL(fileURLWithPath: "/opt/homebrew/bin/nvim") process.standardInput = inPipe process.standardError = errorPipe process.standardOutput = outPipe process.arguments = ["--embed"] return process } private let nanoSecondsPerSecond: UInt64 = 1_000_000_000 ================================================ FILE: NvimApi/Tests/NvimApiTests/NvimApiSyncTest.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Foundation import NvimApi import Testing class NvimApiSyncTest { var api: NvimApiSync! let proc: Process init() throws { self.proc = neovimProcess() try self.proc.run() self.api = NvimApiSync() try self.api.run(socketPath: "/tmp/nvim-api-sync-test.socket") } @Test func testSyncApi() throws { print(self.api.nvimCommand(command: "e ~/test/big.swift")) print(self.api.nvimGetVvar(name: "servername")) try print(self.api.nvimBufLineCount(buffer: self.api.nvimGetCurrentBuf().get())) self.api.stop() } } private func neovimProcess() -> Process { let inPipe = Pipe() let outPipe = Pipe() let errorPipe = Pipe() let process = Process() process.executableURL = URL(fileURLWithPath: "/opt/homebrew/bin/nvim") process.standardInput = inPipe process.standardError = errorPipe process.standardOutput = outPipe process.arguments = "--listen /tmp/nvim-api-sync-test.socket" .split(separator: " ") .map(String.init) return process } ================================================ FILE: NvimApi/bin/api_generator_common.py ================================================ #!/usr/bin/env python3 import re import textwrap def snake_to_camel(snake_str): components = snake_str.split("_") return components[0] + "".join(x.title() for x in components[1:]) def nvim_type_to_swift(nvim_type): if nvim_type == "Boolean": return "Bool" if nvim_type == "Integer": return "Int" if nvim_type == "Float": return nvim_type if nvim_type == "void": return "Void" if nvim_type == "String": return "String" if nvim_type == "Array": return "NvimApi.Value" if nvim_type == "Dict": return "Dictionary" if nvim_type == "Buffer": return "NvimApi.Buffer" if nvim_type == "Window": return "NvimApi.Window" if nvim_type == "Tabpage": return "NvimApi.Tabpage" if nvim_type == "Object": return "NvimApi.Value" if nvim_type.startswith("ArrayOf("): match = re.match(r"ArrayOf\((.*?)(?:, \d+)*\)", nvim_type) return "[{}]".format(nvim_type_to_swift(match.group(1))) print(f"{nvim_type} not known; defaulting to MessagePackValue") return "NvimApi.Value" def msgpack_to_swift(msgpack_value_name, type): if type == "Bool": return f"{msgpack_value_name}.boolValue" if type == "Int": return f"{msgpack_value_name}.intValue" if type == "Float": return f"{msgpack_value_name}.floatValue" if type == "Void": return f"()" if type == "String": return f"{msgpack_value_name}.stringValue" if type == "NvimApi.Value": return f"Optional({msgpack_value_name})" if type in "NvimApi.Buffer": return f"NvimApi.Buffer({msgpack_value_name})" if type in "NvimApi.Window": return f"NvimApi.Window({msgpack_value_name})" if type in "NvimApi.Tabpage": return f"NvimApi.Tabpage({msgpack_value_name})" if type.startswith("Dictionary<"): return f"msgPackDictToSwift({msgpack_value_name}.dictionaryValue)" if type.startswith("[Dictionary<"): return f"msgPackArrayDictToSwift({msgpack_value_name}.arrayValue)" if type.startswith("["): element_type = re.match(r"\[(.*)\]", type).group(1) return f'{msgpack_value_name}.arrayValue?.compactMap({{ v in {msgpack_to_swift("v", element_type)} }})' return "NvimApi.Value" def swift_to_msgpack_value(name, type): if type == "Bool": return f".bool({name})" if type == "Int": return f".int(Int64({name}))" if type == "Float": return f".float({name})" if type == "Void": return f".nil()" if type == "String": return f".string({name})" if type == "Dictionary": return f".map({name}.mapToDict({{ (NvimApi.Value.string($0), $1) }}))" if type == "NvimApi.Value": return name if type in ["NvimApi.Buffer", "NvimApi.Window", "NvimApi.Tabpage"]: return f".int(Int64({name}.handle))" if type.startswith("["): match = re.match(r"\[(.*)\]", type) test = "$0" return f".array({name}.map {{ {swift_to_msgpack_value(test, match.group(1))} }})" def parse_args(raw_params): types = [nvim_type_to_swift(p[0]) for p in raw_params] names = [p[1] for p in raw_params] params = dict(zip(names, types)) result = "\n".join([n + ": " + t + "," for n, t in params.items()]) if not result: return "" return "\n" + textwrap.indent(result, " ") def parse_params(raw_params): types = [nvim_type_to_swift(p[0]) for p in raw_params] names = [p[1] for p in raw_params] params = dict(zip(names, types)) result = "\n".join([swift_to_msgpack_value(n, t) + "," for n, t in params.items()]) return textwrap.indent(result, " ").strip() def parse_version(version): return ".".join([str(v) for v in [version["major"], version["minor"], version["patch"]]]) def parse_error_types(error_types): return textwrap.indent( "\n".join( [ f'public static let {t.lower()}RawValue = UInt64({v["id"]})' for t, v in error_types.items() ] ), " ", ).lstrip() def parse_error_cases(error_types): return textwrap.indent( "\n".join( [ f"case Error.{t.lower()}RawValue: self = .{t.lower()}(message: message)" for t, v in error_types.items() ] ), " ", ).lstrip() ================================================ FILE: NvimApi/bin/generate_async_api_methods.py ================================================ #!/usr/bin/env python3 import io import os import subprocess from string import Template import msgpack from api_generator_common import ( msgpack_to_swift, nvim_type_to_swift, parse_args, parse_error_cases, parse_error_types, parse_params, parse_version, snake_to_camel, ) void_func_template = Template( """\ func ${func_name}(${args} expectsReturnValue: Bool = false ) async -> Result { let params: [NvimApi.Value] = [ ${params} ] if expectsReturnValue, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "${nvim_func_name}", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } """ ) get_mode_func_template = Template( """\ func ${func_name}(${args} ) async -> Result<${result_type}, NvimApi.Error> { let params: [NvimApi.Value] = [ ${params} ] let reqResult = await self.sendRequest(method: "${nvim_func_name}", params: params) switch reqResult { case let .success(value): guard let result = (${return_value}) else { return .failure(Error.conversion(type: ${result_type}.self)) } return .success(result) case let .failure(error): return .failure(error) } } """ ) func_template = Template( """\ func ${func_name}(${args} errWhenBlocked: Bool = true ) async -> Result<${result_type}, NvimApi.Error> { let params: [NvimApi.Value] = [ ${params} ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> ${result_type} { guard let result = (${return_value}) else { throw NvimApi.Error.conversion(type: ${result_type}.self) } return result } if errWhenBlocked, let error = await self.blockedError() { return .failure(error) } let reqResult = await self.sendRequest(method: "${nvim_func_name}", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> ${result_type} in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } """ ) extension_template = Template( """\ // Auto generated for nvim version ${version}. // See bin/generate_api_methods.py import Foundation import MessagePack extension NvimApi { public enum Error: Swift.Error, Sendable { ${error_types} case exception(message: String) case validation(message: String) case blocked case conversion(type: Any.Type) case other(cause: Swift.Error) case other(description: String) case unknown init(_ value: NvimApi.Value?) { let array = value?.arrayValue guard array?.count == 2 else { self = .unknown return } guard let rawValue = array?[0].uint64Value, let message = array?[1].stringValue else { self = .unknown return } switch rawValue { ${error_cases} default: self = .unknown } } } } public extension NvimApi { $body } extension NvimApi.Buffer { public init?(_ value: NvimApi.Value) { guard let (type, data) = value.extendedValue else { return nil } guard type == ${buffer_type} else { return nil } guard let handle = (try? unpack(data))?.value.int64Value else { return nil } self.handle = Int(handle) } } extension NvimApi.Window { public init?(_ value: NvimApi.Value) { guard let (type, data) = value.extendedValue else { return nil } guard type == ${window_type} else { return nil } guard let handle = (try? unpack(data))?.value.int64Value else { return nil } self.handle = Int(handle) } } extension NvimApi.Tabpage { public init?(_ value: NvimApi.Value) { guard let (type, data) = value.extendedValue else { return nil } guard type == ${tabpage_type} else { return nil } guard let handle = (try? unpack(data))?.value.int64Value else { return nil } self.handle = Int(handle) } } """ ) def parse_function(f): args = parse_args(f["parameters"]) template = void_func_template if f["return_type"] == "void" else func_template nvim_func_name = f["name"] template = get_mode_func_template if nvim_func_name == "nvim_get_mode" else template result = template.substitute( func_name=snake_to_camel(nvim_func_name), nvim_func_name=nvim_func_name, args=args, params=parse_params(f["parameters"]), result_type=nvim_type_to_swift(f["return_type"]), return_value=msgpack_to_swift("value", nvim_type_to_swift(f["return_type"])), ) if "deprecated_since" in f: result = ( ' @available(*, deprecated, message: "This method has been deprecated.")\n' + result ) return result if __name__ == "__main__": result_file_path = "./Sources/NvimApi/NvimApi.generated.swift" nvim_path = os.environ["NVIM_PATH"] if "NVIM_PATH" in os.environ else "nvim" nvim_output = subprocess.run([nvim_path, "--api-info"], stdout=subprocess.PIPE) api = msgpack.unpackb(nvim_output.stdout, raw=False) version = parse_version(api["version"]) functions = api["functions"] body = "\n".join([parse_function(f) for f in functions]) result = extension_template.substitute( body=body, version=version, error_types=parse_error_types(api["error_types"]), error_cases=parse_error_cases(api["error_types"]), buffer_type=api["types"]["Buffer"]["id"], window_type=api["types"]["Window"]["id"], tabpage_type=api["types"]["Tabpage"]["id"], ) with io.open(result_file_path, "w") as api_methods_file: api_methods_file.write(result) ================================================ FILE: NvimApi/bin/generate_sources.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly clean=${clean:?"true or false"} readonly NVIM_PATH="../Neovim/build/bin/nvim" build_nvimserver_bin() { ./bin/neovim/bin/build_neovim_for_dev.sh } main() { pushd "$(dirname "${BASH_SOURCE[0]}")/../.." >/dev/null echo "Make sure you have the correct ref checked out; develop or update-neovim." build_nvimserver_bin pushd NvimApi >/dev/null ./bin/generate_async_api_methods.py ./bin/generate_sync_api_methods.py swiftformat ./Sources/NvimApi/NvimApi.generated.swift \ ./Sources/NvimApi/NvimApiSync.generated.swift popd >/dev/null popd >/dev/null } main ================================================ FILE: NvimApi/bin/generate_sync_api_methods.py ================================================ #!/usr/bin/env python3 import io import os import subprocess from string import Template import msgpack from api_generator_common import ( msgpack_to_swift, nvim_type_to_swift, parse_args, parse_params, parse_version, snake_to_camel, ) void_func_template = Template( """\ func ${func_name}(${args} ) -> Result { let params: [NvimApi.Value] = [ ${params} ] let reqResult = self.sendRequest(method: "${nvim_func_name}", params: params) switch reqResult { case .success: return .success(()) case let .failure(error): return .failure(.other(cause: error)) } } """ ) get_mode_func_template = Template( """\ func ${func_name}(${args} ) -> Result<${result_type}, NvimApi.Error> { let params: [NvimApi.Value] = [ ${params} ] let reqResult = self.sendRequest(method: "${nvim_func_name}", params: params) switch reqResult { case let .success(value): guard let result = (${return_value}) else { return .failure(NvimApi.Error.conversion(type: ${result_type}.self)) } return .success(result) case let .failure(error): return .failure(error) } } """ ) func_template = Template( """\ func ${func_name}(${args} errWhenBlocked: Bool = true ) -> Result<${result_type}, NvimApi.Error> { let params: [NvimApi.Value] = [ ${params} ] func transform(_ value: NvimApi.Value) throws(NvimApi.Error) -> ${result_type} { guard let result = (${return_value}) else { throw NvimApi.Error.conversion(type: ${result_type}.self) } return result } if errWhenBlocked, let error = self.blockedError() { return .failure(error) } let reqResult = self.sendRequest(method: "${nvim_func_name}", params: params) switch reqResult { case let .success(value): return Result { () throws(NvimApi.Error) -> ${result_type} in try transform(value) } case let .failure(error): return .failure(.other(cause: error)) } } """ ) extension_template = Template( """\ // Auto generated for nvim version ${version}. // See bin/generate_api_methods.py import Foundation import MessagePack public extension NvimApiSync { $body } """ ) def parse_function(f): is_void_func = f["return_type"] == "void" args = parse_args(f["parameters"]) if is_void_func: args = args[:-1] if args else args template = void_func_template if is_void_func else func_template nvim_func_name = f["name"] template = get_mode_func_template if nvim_func_name == "nvim_get_mode" else template result = template.substitute( func_name=snake_to_camel(nvim_func_name), nvim_func_name=nvim_func_name, args=args, params=parse_params(f["parameters"]), result_type=nvim_type_to_swift(f["return_type"]), return_value=msgpack_to_swift("value", nvim_type_to_swift(f["return_type"])), ) if "deprecated_since" in f: result = ( ' @available(*, deprecated, message: "This method has been deprecated.")\n' + result ) return result if __name__ == "__main__": result_file_path = "./Sources/NvimApi/NvimApiSync.generated.swift" nvim_path = os.environ["NVIM_PATH"] if "NVIM_PATH" in os.environ else "nvim" nvim_output = subprocess.run([nvim_path, "--api-info"], stdout=subprocess.PIPE) api = msgpack.unpackb(nvim_output.stdout, raw=False) version = parse_version(api["version"]) functions = api["functions"] body = "\n".join([parse_function(f) for f in functions]) result = extension_template.substitute(body=body, version=version) with io.open(result_file_path, "w") as api_methods_file: api_methods_file.write(result) ================================================ FILE: NvimApi/bin/requirements.txt ================================================ msgpack ================================================ FILE: NvimView/.gitignore ================================================ .DS_Store /.build /Packages /*.xcodeproj xcuserdata/ Sources/NvimView/Resources/runtime Sources/NvimView/Resources/NvimServer ================================================ FILE: NvimView/Package.swift ================================================ // swift-tools-version: 6.0 import PackageDescription let package = Package( name: "NvimView", platforms: [.macOS(.v14)], products: [ .library(name: "NvimView", targets: ["NvimView"]), ], dependencies: [ .package(url: "https://github.com/qvacua/MessagePack.swift", from: "4.1.0"), .package(url: "https://github.com/Quick/Nimble", from: "14.0.0"), .package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "0.62.2"), .package(name: "Commons", path: "../Commons"), .package(name: "Tabs", path: "../Tabs"), .package(name: "NvimApi", path: "../NvimApi"), ], targets: [ .target( name: "NvimView", dependencies: [ "Tabs", .product(name: "MessagePack", package: "MessagePack.swift"), "Commons", "NvimApi", ], // com.qvacua.NvimView.vim is copied by the build NvimServer script. exclude: ["Resources/com.qvacua.NvimView.vim"], resources: [ .copy("Resources/runtime"), .copy("Resources/NvimServer"), ], plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")] ), .testTarget( name: "NvimViewTests", dependencies: ["NvimView", "Nimble"] ), ] ) ================================================ FILE: NvimView/README.md ================================================ # NvimView A description of this package. ================================================ FILE: NvimView/Sources/NvimView/AttributesRunDrawer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa final class AttributesRunDrawer { var font: NSFont { didSet { self.updateFontMetrics() } } var linespacing: CGFloat { didSet { self.updateFontMetrics() } } var characterspacing: CGFloat { didSet { self.updateFontMetrics() } } var usesLigatures: Bool { didSet { self.typesetter.clearCache() } } private(set) var cellSize: CGSize = .zero private(set) var baselineOffset: CGFloat = 0 private(set) var descent: CGFloat = 0 private(set) var underlinePosition: CGFloat = 0 private(set) var underlineThickness: CGFloat = 0 init(baseFont: NSFont, linespacing: CGFloat, characterspacing: CGFloat, usesLigatures: Bool) { self.font = baseFont self.linespacing = linespacing self.characterspacing = characterspacing self.usesLigatures = usesLigatures self.updateFontMetrics() } func draw( _ attrsRuns: [AttributesRun], defaultAttributes: CellAttributes, offset: CGPoint, in context: CGContext ) { let runs = attrsRuns.map { self.fontGlyphRuns(from: $0, offset: offset) } for i in 0.. [FontGlyphRun] { // We do the check here despite the fact FontUtils.font(adding:to:) does it // since empty trait is the most frequent case let font = if attrsRun.attrs.fontTrait.isEmpty { self.font } else { FontUtils.font(adding: attrsRun.attrs.fontTrait, to: self.font) } if self.usesLigatures { return self.typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: attrsRun.cells.map(\.utf16chars), startColumn: attrsRun.cells.startIndex, offset: CGPoint(x: offset.x, y: attrsRun.location.y + self.baselineOffset), font: font, cellWidth: self.cellSize.width ) } else { return self.typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: attrsRun.cells.map(\.utf16chars), startColumn: attrsRun.cells.startIndex, offset: CGPoint(x: offset.x, y: attrsRun.location.y + self.baselineOffset), font: font, cellWidth: self.cellSize.width ) } } private func updateFontMetrics() { self.cellSize = FontUtils.cellSize( of: self.font, linespacing: self.linespacing, characterspacing: self.characterspacing ) self .baselineOffset = (self.cellSize.height + FontUtils.fontHeight(of: self.font)) / 2 - CTFontGetAscent(self.font) self.descent = CTFontGetDescent(self.font) self.underlinePosition = CTFontGetUnderlinePosition(self.font) self.underlineThickness = CTFontGetUnderlineThickness(self.font) self.typesetter.clearCache() } } ================================================ FILE: NvimView/Sources/NvimView/CellAttributes.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import MessagePack public struct CellAttributes: CustomStringConvertible, Equatable { public static func == (left: CellAttributes, right: CellAttributes) -> Bool { if left.foreground != right.foreground { return false } if left.background != right.background { return false } if left.special != right.special { return false } if left.fontTrait != right.fontTrait { return false } if left.reverse != right.reverse { return false } return true } public var fontTrait: FontTrait public var foreground: Int public var background: Int public var special: Int public var reverse: Bool public init(fontTrait: FontTrait, foreground: Int, background: Int, special: Int, reverse: Bool) { self.fontTrait = fontTrait self.foreground = foreground self.background = background self.special = special self.reverse = reverse } public init( withDict dict: [String: MessagePackValue], with defaultAttributes: CellAttributes ) { var fontTrait: FontTrait = [] if dict["bold"]?.boolValue == true { fontTrait = fontTrait.union(.bold) } if dict["italic"]?.boolValue == true { fontTrait = fontTrait.union(.italic) } if dict["underline"]?.boolValue == true { fontTrait = fontTrait.union(.underline) } if dict["undercurl"]?.boolValue == true { fontTrait = fontTrait.union(.undercurl) } self.fontTrait = fontTrait self.foreground = dict["foreground"]?.intValue ?? defaultAttributes.foreground self.background = dict["background"]?.intValue ?? defaultAttributes.background self.special = dict["special"]?.intValue ?? defaultAttributes.special self.reverse = dict["reverse"]?.boolValue ?? false } public var effectiveForeground: Int { self.reverse ? self.background : self.foreground } public var effectiveBackground: Int { self.reverse ? self.foreground : self.background } public var description: String { "CellAttributes<" + "trait: \(String(self.fontTrait.rawValue, radix: 2)), " + "fg: \(ColorUtils.colorIgnoringAlpha(self.foreground).hex), " + "bg: \(ColorUtils.colorIgnoringAlpha(self.background).hex), " + "sp: \(ColorUtils.colorIgnoringAlpha(self.special).hex), " + "reverse: \(self.reverse)" + ">" } public var reversed: CellAttributes { var result = self result.reverse = !self.reverse return result } public func replacingDefaults(with defaultAttributes: CellAttributes) -> CellAttributes { var result = self if self.foreground == -1 { result.foreground = defaultAttributes.effectiveForeground } if self.background == -1 { result.background = defaultAttributes.effectiveBackground } if self.special == -1 { result.special = defaultAttributes.special } return result } } ================================================ FILE: NvimView/Sources/NvimView/CellAttributesCollection.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class CellAttributesCollection { static let defaultAttributesId = 0 static let reversedDefaultAttributesId = Int.max static let markedAttributesId = Int.max - 1 private(set) var defaultAttributes = CellAttributes( fontTrait: [], foreground: 0, background: 0xFFFFFF, special: 0xFF0000, reverse: false ) init() { self.attributes[CellAttributesCollection.defaultAttributesId] = self.defaultAttributes } func attributes(of id: Int) -> CellAttributes? { self.attributes(of: id, withDefaults: self.defaultAttributes) } func attributes(of id: Int, withDefaults defaults: CellAttributes) -> CellAttributes? { if id == Self.markedAttributesId { var attr = self.defaultAttributes attr.fontTrait.formUnion(.underline) return attr } if id == Self.reversedDefaultAttributesId { return self.defaultAttributes.reversed } let absId = abs(id) guard let attrs = self.attributes[absId] else { return nil } if id < 0 { return attrs.replacingDefaults(with: self.defaultAttributes).reversed } return attrs.replacingDefaults(with: defaults) } func set(attributes: CellAttributes, for id: Int) { self.attributes[id] = attributes if id == CellAttributesCollection.defaultAttributesId { self.defaultAttributes = attributes } } private var attributes: [Int: CellAttributes] = [:] } ================================================ FILE: NvimView/Sources/NvimView/ColorUtils.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons final class ColorUtils { /// ARGB static func cgColorIgnoringAlpha(_ rgb: Int) -> CGColor { if let color = cgColorCache.valueForKey(rgb) { return color } let color = self.colorIgnoringAlpha(rgb).cgColor cgColorCache.set(color, forKey: rgb) return color } static func cgColorIgnoringAlpha(_ rgb: Int32) -> CGColor { if let color = cgColorCache.valueForKey(Int(rgb)) { return color } let color = self.colorIgnoringAlpha(Int(rgb)).cgColor cgColorCache.set(color, forKey: Int(rgb)) return color } /// ARGB static func colorIgnoringAlpha(_ rgb: Int) -> NSColor { if let color = colorCache.valueForKey(rgb) { return color } // @formatter:off let red = ((rgb >> 16) & 0xFF).cgf / 255.0 let green = ((rgb >> 8) & 0xFF).cgf / 255.0 let blue = (rgb & 0xFF).cgf / 255.0 // @formatter:on let color = NSColor(srgbRed: red, green: green, blue: blue, alpha: 1.0) colorCache.set(color, forKey: rgb) return color } } private let colorCache = ThreadSafeFifoCache(count: 500) private let cgColorCache = ThreadSafeFifoCache(count: 500) ================================================ FILE: NvimView/Sources/NvimView/Defs.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Commons import Foundation enum Defs { static let loggerSubsystem = "com.qvacua.NvimView" enum LoggerCategory { static let bridge = "bridge" static let view = "view" } } let dlog = DevLogger.shared ================================================ FILE: NvimView/Sources/NvimView/FontUtils.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons private struct SizedFontTrait: Hashable { static func == (lhs: SizedFontTrait, rhs: SizedFontTrait) -> Bool { if lhs.trait != rhs.trait { return false } if lhs.size != rhs.size { return false } return true } fileprivate var trait: FontTrait fileprivate var size: CGFloat } extension FontTrait: Hashable {} enum FontUtils { static func fontHeight(of font: NSFont) -> CGFloat { if let cached = fontHeightCache.valueForKey(font) { return cached } let ascent = CTFontGetAscent(font) let descent = CTFontGetDescent(font) let leading = CTFontGetLeading(font) let height = ceil(ascent + descent + leading) fontHeightCache.set(height, forKey: font) return height } static func fontWidth(of font: NSFont) -> CGFloat { let capitalM = [UniChar(0x004D)] var glyph = [CGGlyph(0)] var advancement = CGSize.zero CTFontGetGlyphsForCharacters(font, capitalM, &glyph, 1) CTFontGetAdvancesForGlyphs(font, .horizontal, glyph, &advancement, 1) return advancement.width } static func cellSize( of font: NSFont, linespacing: CGFloat, characterspacing: CGFloat ) -> CGSize { if let cached = cellSizeWithDefaultLinespacingCache.valueForKey(font) { return CGSize( width: characterspacing * cached.width, height: ceil(linespacing * cached.height) ) } let cellSizeToCache = CGSize(width: fontWidth(of: font), height: fontHeight(of: font)) cellSizeWithDefaultLinespacingCache.set(cellSizeToCache, forKey: font) let cellSize = CGSize( width: characterspacing * cellSizeToCache.width, height: ceil(linespacing * cellSizeToCache.height) ) return cellSize } static func font(adding trait: FontTrait, to font: NSFont) -> NSFont { if trait.isEmpty { return font } let sizedFontTrait = SizedFontTrait(trait: trait, size: font.pointSize) if let cachedFont = fontCache.valueForKey(sizedFontTrait) { return cachedFont } if nilFontCache.valueForKey(sizedFontTrait) != nil { return font } var ctFontTrait: CTFontSymbolicTraits = [] if trait.contains(.bold) { ctFontTrait.insert(.boldTrait) } if trait.contains(.italic) { ctFontTrait.insert(.italicTrait) } guard let ctFont = CTFontCreateCopyWithSymbolicTraits(font, 0, nil, ctFontTrait, ctFontTrait) else { nilFontCache.set(0, forKey: sizedFontTrait) return font } fontCache.set(ctFont, forKey: sizedFontTrait) return ctFont } /// We use @MainActor here because /// - NvimView.defaultFont/minFontSize/maxFontSize cannot be accessed despite the fact that /// they are static sendable constants /// - One could set those properties as nonisolated(unsafe), but then, the compiler warns that /// nonisolated is not necessary /// - This function is only called from @MainActor @MainActor static func font(fromVimFontSpec fontSpec: String) -> NSFont? { let fontParams = fontSpec.components(separatedBy: ":") guard fontParams.count == 2 else { return nil } let fontName = fontParams[0].components(separatedBy: "_").joined(separator: " ") var fontSize = NvimView.defaultFont.pointSize // use a sane fallback if fontParams[1].hasPrefix("h"), fontParams[1].count >= 2 { let sizeSpec = fontParams[1].dropFirst() if let parsed = Float(sizeSpec)?.rounded() { fontSize = CGFloat(parsed) if fontSize < NvimView.minFontSize || fontSize > NvimView.maxFontSize { fontSize = NvimView.defaultFont.pointSize } } } return NSFont(name: fontName, size: CGFloat(fontSize)) } static func vimFontSpec(forFont font: NSFont) -> String { if let escapedName = font.displayName?.components(separatedBy: " ").joined(separator: "_") { return "\(escapedName):h\(Int(font.pointSize))" } // fontName always returns a valid result and works for font(name:, size:) as well return "\(font.fontName):h\(Int(font.pointSize))" } } private let fontCache = ThreadSafeFifoCache(count: 50) private let nilFontCache = ThreadSafeFifoCache(count: 50) private let fontHeightCache = ThreadSafeFifoCache(count: 100) private let cellSizeWithDefaultLinespacingCache = ThreadSafeFifoCache(count: 100) ================================================ FILE: NvimView/Sources/NvimView/Geometry.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa public struct Position: CustomStringConvertible, Equatable, Sendable { public static let zero = Position(row: 0, column: 0) public static let null = Position(row: -1, column: -1) // FIXME: GH-666: Delete public static let beginning = Position(row: 1, column: 1) public static func == (left: Position, right: Position) -> Bool { if left.row != right.row { return false } if left.column != right.column { return false } return true } public var row: Int public var column: Int public init(row: Int, column: Int) { self.row = row self.column = column } public var description: String { "Position<\(self.row):\(self.column)>" } public func advancing(row dy: Int, column dx: Int) -> Position { Position(row: self.row + dy, column: self.column + dx) } } struct Size: CustomStringConvertible, Equatable { static let zero = Size(width: 0, height: 0) static func == (left: Size, right: Size) -> Bool { left.width == right.width && left.height == right.height } var width: Int var height: Int var description: String { "Size<\(self.width):\(self.height)>" } } struct Region: CustomStringConvertible { static let zero = Region(top: 0, bottom: 0, left: 0, right: 0) var top: Int var bottom: Int var left: Int var right: Int var description: String { "Region<\(self.top)...\(self.bottom):\(self.left)...\(self.right)>" } var rowRange: ClosedRange { self.top...self.bottom } var columnRange: ClosedRange { self.left...self.right } } ================================================ FILE: NvimView/Sources/NvimView/KeyUtils.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa enum KeyUtils { static func isControlCode(key: String, modifiers: NSEvent.ModifierFlags) -> Bool { guard !modifiers.contains(.control) else { return false } guard key.count == 1 else { return false } guard let firstChar = key.utf16.first else { return false } return firstChar < 32 && firstChar > 0 } static func isSpecial(key: String) -> Bool { guard key.count == 1 else { return false } if let firstChar = key.utf16.first { return specialKeys.keys.contains(Int(firstChar)) } return false } static func namedKey(from key: String) -> String { if let firstChar = key.utf16.first, let special = specialKeys[Int(firstChar)] { return special } return key } static func isHalfWidth(char: Character) -> Bool { // https://stackoverflow.com/questions/13505075/analyzing-full-width-or-half-width-character-in-java?noredirect=1&lq=1 // // swiftlint:disable:this all switch char { case "\u{00}"..."\u{FF}", "\u{FF61}"..."\u{FFDC}", "\u{FFE8}"..."\u{FFEE}": true default: false } } } private let specialKeys = [ NSUpArrowFunctionKey: "Up", NSDownArrowFunctionKey: "Down", NSLeftArrowFunctionKey: "Left", NSRightArrowFunctionKey: "Right", NSInsertFunctionKey: "Insert", 0x7F: "BS", // "delete"-key NSDeleteFunctionKey: "Del", // "Fn+delete"-key NSHomeFunctionKey: "Home", NSBeginFunctionKey: "Begin", NSEndFunctionKey: "End", NSPageUpFunctionKey: "PageUp", NSPageDownFunctionKey: "PageDown", NSHelpFunctionKey: "Help", NSF1FunctionKey: "F1", NSF2FunctionKey: "F2", NSF3FunctionKey: "F3", NSF4FunctionKey: "F4", NSF5FunctionKey: "F5", NSF6FunctionKey: "F6", NSF7FunctionKey: "F7", NSF8FunctionKey: "F8", NSF9FunctionKey: "F9", NSF10FunctionKey: "F10", NSF11FunctionKey: "F11", NSF12FunctionKey: "F12", NSF13FunctionKey: "F13", NSF14FunctionKey: "F14", NSF15FunctionKey: "F15", NSF16FunctionKey: "F16", NSF17FunctionKey: "F17", NSF18FunctionKey: "F18", NSF19FunctionKey: "F19", NSF20FunctionKey: "F20", NSF21FunctionKey: "F21", NSF22FunctionKey: "F22", NSF23FunctionKey: "F23", NSF24FunctionKey: "F24", NSF25FunctionKey: "F25", NSF26FunctionKey: "F26", NSF27FunctionKey: "F27", NSF28FunctionKey: "F28", NSF29FunctionKey: "F29", NSF30FunctionKey: "F30", NSF31FunctionKey: "F31", NSF32FunctionKey: "F32", NSF33FunctionKey: "F33", NSF34FunctionKey: "F34", NSF35FunctionKey: "F35", 0x09: "Tab", 0x19: "Tab", 0xD: "CR", 0x20: "Space", ] ================================================ FILE: NvimView/Sources/NvimView/MessagePackCommons.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import MessagePack extension MessagePackValue { var intValue: Int? { guard let i64 = self.int64Value else { return nil } return Int(i64) } } enum MessagePackUtils { static func array( from value: MessagePackValue, ofSize size: Int, conversion: (MessagePackValue) -> T? ) -> [T]? { guard let array = value.arrayValue else { return nil } guard array.count == size else { return nil } return array.compactMap(conversion) } } ================================================ FILE: NvimView/Sources/NvimView/ModeInfo.swift ================================================ /** * Johann Rudloff - @cypheon * See LICENSE */ import MessagePack public enum CursorShape: Equatable { case block case horizontal(cellPercentage: Int) case vertical(cellPercentage: Int) static func of(shape: String, cellPercentage: Int?) -> CursorShape? { switch shape { case "block": block case "horizontal": cellPercentage.map(horizontal(cellPercentage:)) case "vertical": cellPercentage.map(vertical(cellPercentage:)) default: nil } } } public struct ModeInfo: CustomStringConvertible { public let attrId: Int? public let cursorShape: CursorShape public let shortName: String public let name: String public init( withMsgPackDict dict: MessagePackValue ) { self.attrId = dict["attr_id"]?.intValue if let shapeName = dict["cursor_shape"]?.stringValue, let cursorShape = CursorShape.of( shape: shapeName, cellPercentage: dict["cell_percentage"]?.intValue ) { self.cursorShape = cursorShape } else { self.cursorShape = .block } self.shortName = dict["short_name"]?.stringValue ?? "?" self.name = dict["name"]?.stringValue ?? (dict["short_name"]?.stringValue ?? "???") } public var description: String { "ModeInfo<\(self.name) (\(self.shortName)) shape: \(self.cursorShape)" + "attr_id:\(String(describing: self.attrId))>" } } ================================================ FILE: NvimView/Sources/NvimView/NvimAutoCommandEvent.generated.swift ================================================ // Auto generated for nvim v0.11.6 // See bin/generate_autocmds.py enum NvimAutoCommandEvent: String { case bufadd case bufcreate case bufdelete case bufenter case buffilepost case buffilepre case bufhidden case bufleave case bufmodifiedset case bufnew case bufnewfile case bufread case bufreadcmd case bufreadpost case bufreadpre case bufunload case bufwinenter case bufwinleave case bufwipeout case bufwrite case bufwritecmd case bufwritepost case bufwritepre case chaninfo case chanopen case cmdlinechanged case cmdlineenter case cmdlineleave case cmdundefined case cmdwinenter case cmdwinleave case colorscheme case colorschemepre case completechanged case completedone case completedonepre case cursorhold case cursorholdi case cursormoved case cursormovedc case cursormovedi case diagnosticchanged case diffupdated case dirchanged case dirchangedpre case encodingchanged case exitpre case fileappendcmd case fileappendpost case fileappendpre case filechangedro case filechangedshell case filechangedshellpost case fileencoding case filereadcmd case filereadpost case filereadpre case filetype case filewritecmd case filewritepost case filewritepre case filterreadpost case filterreadpre case filterwritepost case filterwritepre case focusgained case focuslost case funcundefined case guienter case guifailed case insertchange case insertcharpre case insertenter case insertleave case insertleavepre case lspattach case lspdetach case lspnotify case lspprogress case lsprequest case lsptokenupdate case menupopup case modechanged case optionset case quickfixcmdpost case quickfixcmdpre case quitpre case recordingenter case recordingleave case remotereply case safestate case searchwrapped case sessionloadpost case sessionwritepost case shellcmdpost case shellfilterpost case signal case sourcecmd case sourcepost case sourcepre case spellfilemissing case stdinreadpost case stdinreadpre case swapexists case syntax case tabclosed case tabenter case tableave case tabnew case tabnewentered case termchanged case termclose case termenter case termleave case termopen case termrequest case termresponse case textchanged case textchangedi case textchangedp case textchangedt case textyankpost case uienter case uileave case user case vimenter case vimleave case vimleavepre case vimresized case vimresume case vimsuspend case winclosed case winenter case winleave case winnew case winresized case winscrolled } ================================================ FILE: NvimView/Sources/NvimView/NvimCursorModeShape.generated.swift ================================================ // Auto generated for nvim v0.11.6 // See bin/generate_cursor_shape.py public enum CursorModeShape: String { case normal case visual case insert case replace case cmdlineNormal case cmdlineInsert case cmdlineReplace case operatorPending case visualExclusive case onCmdline case onStatusLine case draggingStatusLine case onVerticalSepLine case draggingVerticalSepLine case more case moreLastLine case showingMatchingParen case terminalMode case count } ================================================ FILE: NvimView/Sources/NvimView/NvimProcess.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Commons import Foundation import MessagePack import NvimApi import os let kMinMajorVersion = 0 let kMinMinorVersion = 10 let kMinPatchVersion = 0 final class NvimProcess { var pipeUrl: URL { let temp = FileManager.default.temporaryDirectory return temp.appending(path: "\(self.uuid).pipe") } init(uuid: UUID, config: NvimView.Config) { self.uuid = uuid self.usesInteractiveZsh = config.useInteractiveZsh self.nvimBinary = config.nvimBinary self.nvimArgs = config.nvimArgs ?? [] self.cwd = config.cwd let selfEnv = ProcessInfo.processInfo.environment let shellUrl = URL(fileURLWithPath: selfEnv["SHELL"] ?? "/bin/bash") dlog.debug("Using SHELL: \(shellUrl)") let interactiveMode = shellUrl.lastPathComponent == "zsh" && !config .useInteractiveZsh ? false : true self.envDict = ProcessUtils.envVars(of: shellUrl, usingInteractiveMode: interactiveMode) .merging(config.additionalEnvs) { _, new in new } dlog.debug("Using ENVs from login shell: \(self.envDict)") } func runLocalServerAndNvim(width _: Int, height _: Int) throws -> (Pipe, Pipe, Pipe) { try self.launchNvimUsingLoginShellEnv() } func quit() { self.nvimServerProc?.waitUntilExit() dlog.debug("NvimServer \(self.uuid) exited successfully.") } func forceQuit() { self.logger.fault("Force-exiting NvimServer \(self.uuid).") self.forceExitNvimServer() self.logger.fault("NvimServer \(self.uuid) was forcefully exited.") } private func forceExitNvimServer() { self.nvimServerProc?.interrupt() self.nvimServerProc?.terminate() } private func launchNvimUsingLoginShellEnv() throws -> (Pipe, Pipe, Pipe) { var env = self.envDict let inPipe = Pipe() let outPipe = Pipe() let errorPipe = Pipe() let process = Process() process.standardInput = inPipe process.standardError = errorPipe process.standardOutput = outPipe process.currentDirectoryPath = self.cwd.path process.qualityOfService = .userInteractive if self.nvimBinary != "", FileManager.default.fileExists(atPath: self.nvimBinary) { process.launchPath = self.nvimBinary } else { // We know that NvimServer is there. env["VIMRUNTIME"] = Bundle.module.url(forResource: "runtime", withExtension: nil)!.path let launchPath = Bundle.module.url(forResource: "NvimServer", withExtension: nil)!.path process.launchPath = launchPath } process.environment = env process.arguments = ["--embed", "--listen", self.pipeUrl.path] + self.nvimArgs dlog.debug("Servername: \(self.pipeUrl.path)") dlog.debug( "Launching NvimServer \(String(describing: process.launchPath)) with args: \(String(describing: process.arguments))" ) do { try process.run() } catch { throw NvimApi.Error.exception(message: "Could not run neovim process.") } self.nvimServerProc = process return (inPipe, outPipe, errorPipe) } private func interactive(for shell: URL) -> Bool { if shell.lastPathComponent == "zsh" { return self.usesInteractiveZsh } return true } private let logger = Logger(subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.bridge) private let uuid: UUID private let usesInteractiveZsh: Bool private let cwd: URL private let nvimArgs: [String] private let envDict: [String: String] private let nvimBinary: String private var nvimServerProc: Process? } private let timeout = 5 ================================================ FILE: NvimView/Sources/NvimView/NvimView+Api.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MessagePack import NvimApi import PureLayout import SpriteKit extension Collection where Element: Sendable { func asyncCompactMap( _ transform: @Sendable (Element) async throws -> T? ) async rethrows -> [T] { var values = [T]() values.reserveCapacity(self.count) for element in self { if let result = try await transform(element) { values.append(result) } } return values } } public extension NvimView { func stop() async { if self.stopped { dlog.debug("Bridge already stopped.") return } self.stopped = true self.nvimProc.quit() self.apiSync.stop() await self.api.stop() self.delegate?.nextEvent(.neoVimStopped) dlog.debug("Successfully stopped the bridge.") } func toggleFramerateView() { // Framerate measurement; from https://stackoverflow.com/a/34039775 if self.framerateView == nil { let sk = SKView(forAutoLayout: ()) sk.showsFPS = true self.framerateView = sk self.addSubview(sk) sk.autoPinEdge(toSuperviewEdge: .top, withInset: 10) sk.autoPinEdge(toSuperviewEdge: .right, withInset: 10) sk.autoSetDimensions(to: CGSize(width: 60, height: 15)) return } self.framerateView?.removeAllConstraints() self.framerateView?.removeFromSuperview() self.framerateView = nil } func isBlocked() async -> Bool { guard case let .success(value) = await self.api.nvimGetMode(), let result = value["blocking"]?.boolValue else { return false } return result } func hasDirtyBuffers() async -> Bool { // FIXME: Proper error handling guard case let .success(result) = await self.api .nvimExecLua(code: """ local buffers = vim.fn.getbufinfo({bufmodified = true}) return #buffers > 0 """, args: []), let bool = result.boolValue else { return false } return bool } func enterResizeMode() { self.currentlyResizing = true self.markForRenderWholeView() } func exitResizeMode() { self.currentlyResizing = false self.markForRenderWholeView() self.resizeNeoVimUi(to: self.bounds.size) } func neoVimBufferSync( for buf: NvimApi.Buffer, currentBuffer: NvimApi.Buffer? ) -> NvimView.Buffer? { let result = self.apiSync.nvimExecLua(code: """ local info = vim.fn.getbufinfo(...)[1] local result = {} result.name = info.name result.changed = info.changed result.listed = info.listed result.buftype = vim.api.nvim_get_option_value("buftype", {buf=info.bufnr}) return result """, args: [MessagePackValue(buf.handle)]) guard case let .success(value) = result, let raw_info = value.dictionaryValue else { return nil } let info: [String: MessagePackValue] = .init( uniqueKeysWithValues: raw_info.map { (key: MessagePackValue, value: MessagePackValue) in (key.stringValue!, value) } ) let current = buf == currentBuffer guard let path = info["name"]?.stringValue, let dirty = info["changed"]?.intValue, let buftype = info["buftype"]?.stringValue, let listed = info["listed"]?.intValue else { return nil } let url = path == "" || buftype != "" ? nil : URL(fileURLWithPath: path) return NvimView.Buffer( apiBuffer: buf, url: url, type: buftype, isDirty: dirty != 0, isCurrent: current, isListed: listed != 0 ) } func neoVimBuffer( for buf: NvimApi.Buffer, currentBuffer: NvimApi.Buffer? ) async -> NvimView.Buffer? { let result = await self.api.nvimExecLua(code: """ local info = vim.fn.getbufinfo(...)[1] local result = {} result.name = info.name result.changed = info.changed result.listed = info.listed result.buftype = vim.api.nvim_get_option_value("buftype", {buf=info.bufnr}) return result """, args: [MessagePackValue(buf.handle)]) guard case let .success(value) = result, let raw_info = value.dictionaryValue else { return nil } let info: [String: MessagePackValue] = .init( uniqueKeysWithValues: raw_info.map { (key: MessagePackValue, value: MessagePackValue) in (key.stringValue!, value) } ) let current = buf == currentBuffer guard let path = info["name"]?.stringValue, let dirty = info["changed"]?.intValue, let buftype = info["buftype"]?.stringValue, let listed = info["listed"]?.intValue else { return nil } let url = path == "" || buftype != "" ? nil : URL(fileURLWithPath: path) return NvimView.Buffer( apiBuffer: buf, url: url, type: buftype, isDirty: dirty != 0, isCurrent: current, isListed: listed != 0 ) } func currentBufferSync() -> NvimView.Buffer? { guard case let .success(value) = self.apiSync.nvimGetCurrentBuf(), let buffer = self.neoVimBufferSync(for: value, currentBuffer: value) else { return nil } return buffer } func currentBuffer() async -> NvimView.Buffer? { guard case let .success(value) = await self.api.nvimGetCurrentBuf(), let buffer = await self.neoVimBuffer(for: value, currentBuffer: value) else { return nil } return buffer } func allBuffers() async -> [NvimView.Buffer]? { let (curBuf, bufs) = await ( try? self.api.nvimGetCurrentBuf().get(), try? self.api.nvimListBufs().get() ) guard let curBuf, let bufs else { return nil } return await bufs.asyncCompactMap { buf in await self.neoVimBuffer(for: buf, currentBuffer: curBuf) } } func isCurrentBufferDirty() async -> Bool { await self.currentBuffer()?.isDirty ?? false } func allTabs() async -> [NvimView.Tabpage]? { guard let curBuf = try? await self.api.nvimGetCurrentBuf().get(), let curTab = try? await self.api.nvimGetCurrentTabpage().get(), let tabs = try? await self.api.nvimListTabpages().get() else { return nil } return await tabs.asyncCompactMap { tab in await self.neoVimTab(for: tab, currentTabpage: curTab, currentBuffer: curBuf) } } func newTab() async { await self.api.nvimCommand(command: "tabe").cauterize() } func open(urls: [URL]) async { guard let tabs = await self.allTabs() else { return } let buffers = tabs.map(\.windows).flatMap(\.self).map(\.buffer) let currentBufferIsTransient = buffers.first { $0.isCurrent }?.isTransient ?? false for url in urls { let bufExists = buffers.contains { $0.url == url } let wins = tabs.map(\.windows).flatMap(\.self) if let win = bufExists ? wins.first(where: { win in win.buffer.url == url }) : nil { await self.api.nvimSetCurrentWin(window: .init(win.handle)).cauterize() } if currentBufferIsTransient { await self.open(url, cmd: "e") } else { await self.open(url, cmd: "tabe") } } } func openInNewTab(urls: [URL]) async { for url in urls { await self.open(url, cmd: "tabe") } } func openInCurrentTab(url: URL) async { await self.open(url, cmd: "e") } func openInHorizontalSplit(urls: [URL]) async { for url in urls { await self.open(url, cmd: "sp") } } func openInVerticalSplit(urls: [URL]) async { for url in urls { await self.open(url, cmd: "vsp") } } func select(buffer: NvimView.Buffer) async { guard let tabs = await self.allTabs() else { return } let allWins = tabs.map(\.windows).flatMap(\.self) if let win = allWins.first(where: { $0.buffer == buffer }) { return await self.api.nvimSetCurrentWin(window: .init(win.handle)).cauterize() } await self.api.nvimCommand(command: "tab sb \(buffer.handle)").cauterize() } func goTo(line: Int) async { await self.api.nvimCommand(command: "\(line)").cauterize() } /// Closes the current window. func closeCurrentTab() async { await self.api.nvimCommand(command: "q").cauterize() } func saveCurrentTab() async { await self.api.nvimCommand(command: "w").cauterize() } func saveCurrentTab(url: URL) async { await self.api.nvimCommand(command: "w \(url.shellEscapedPath)").cauterize() } func closeCurrentTabWithoutSaving() async { await self.api.nvimCommand(command: "q!").cauterize() } func quitNeoVimWithoutSaving() async { await self.api.nvimCommand(command: "qa!").cauterize() } func vimOutput(of command: String) async -> String? { guard case let .success(retval) = await self.api.nvimExec2( src: command, opts: ["output": true] ), let output_value = retval["output"] ?? retval["output"], let output = output_value.stringValue else { return nil } return output } func cursorGo(to position: Position) async { guard let curWin = try? await self.api.nvimGetCurrentWin().get() else { return } await self.api.nvimWinSetCursor( window: curWin, pos: [position.row, position.column], expectsReturnValue: false ).cauterize() } func didBecomeMain() async { await self.focusGained(true) } func didResignMain() async { await self.focusGained(false) } private func neoVimWindow( for window: NvimApi.Window, currentWindow: NvimApi.Window?, currentBuffer: NvimApi.Buffer? ) async -> NvimView.Window? { guard case let .success(value) = await self.api.nvimWinGetBuf(window: window), let result = await self.neoVimBuffer(for: value, currentBuffer: currentBuffer) else { return nil } return .init(apiWindow: window, buffer: result, isCurrentInTab: window == currentWindow) } private func neoVimTab( for tabpage: NvimApi.Tabpage, currentTabpage: NvimApi.Tabpage?, currentBuffer: NvimApi.Buffer? ) async -> NvimView.Tabpage? { guard let curWin = try? await self.api.nvimTabpageGetWin(tabpage: tabpage).get(), let wins = try? await self.api.nvimTabpageListWins(tabpage: tabpage).get() else { return nil } let ws = await wins.asyncCompactMap { win in await self.neoVimWindow(for: win, currentWindow: curWin, currentBuffer: currentBuffer) } return .init(apiTabpage: tabpage, windows: ws, isCurrent: tabpage == currentTabpage) } private func open(_ url: URL, cmd: String) async { await self.api.nvimCommand(command: "\(cmd) \(url.shellEscapedPath)").cauterize() } } ================================================ FILE: NvimView/Sources/NvimView/NvimView+Debug.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa public extension NvimView { @IBAction func debug1(_: Any?) { do { try self.ugrid.dumpToJson() self.logger.debug("dumped ugrid") } catch { self.logger.error("Could not dump UGrid: \(error)") } } @IBAction func debug2(_: Any?) { self.logger.error("nothing yet") } #if DEBUG func draw(cellGridIn context: CGContext) { context.saveGState() defer { context.restoreGState() } let color = NSColor.magenta.cgColor context.setFillColor(color) let discreteSize = self.discreteSize(size: self.bounds.size) var lines = [ CGRect(x: 0 + self.offset.x, y: 0, width: 1, height: self.bounds.height), CGRect( x: self.bounds.width - 1 + self.offset.x, y: 0, width: 1, height: self.bounds.height ), CGRect( x: 0, y: self.bounds.height - 1 - self.offset.y, width: self.bounds.width, height: 1 ), CGRect( x: 0, y: self.bounds.height - 1 - self.offset.y - discreteSize.height.cgf * self.self.cellSize.height, width: self.bounds.width, height: 1 ), ] for row in 0...discreteSize.height { for col in 0...discreteSize.width { lines.append(contentsOf: [ CGRect( x: col.cgf * self.cellSize.width + self.offset.x - 1, y: 0, width: 1, height: self.bounds.height ), CGRect( x: 0, y: self.bounds.height - 1 - self.offset.y - row.cgf * self.self.cellSize.height, width: self.bounds.width, height: 1 ), ]) } } context.fill(lines) } #endif } ================================================ FILE: NvimView/Sources/NvimView/NvimView+Dragging.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa public extension NvimView { override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation { self.isFile(sender: sender) ? .copy : NSDragOperation() } override func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation { self.isFile(sender: sender) ? .copy : NSDragOperation() } override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { guard self.isFile(sender: sender) else { return false } guard let urls = sender.draggingPasteboard .readObjects(forClasses: [NSURL.self]) as? [URL] else { return false } Task { await self.open(urls: urls) } return true } private func isFile(sender: NSDraggingInfo) -> Bool { (sender.draggingPasteboard.types?.contains(NSPasteboard.PasteboardType.fileURL)) ?? false } } ================================================ FILE: NvimView/Sources/NvimView/NvimView+Draw.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import os extension NvimView { override public func viewDidMoveToWindow() { self.window?.colorSpace = colorSpace } override public func draw(_: NSRect) { guard self.ugrid.hasData else { return } guard let context = NSGraphicsContext.current?.cgContext else { return } context.saveGState() defer { context.restoreGState() } if self.isCurrentlyPinching { self.drawPinchImage(in: context) return } // See chapter 11 from "Programming with Quartz". switch self.fontSmoothing { case .noAntiAliasing: context.setShouldAntialias(false) context.setShouldSmoothFonts(false) case .noFontSmoothing: context.setShouldAntialias(true) context.setShouldSmoothFonts(false) case .withFontSmoothing: context.setShouldAntialias(true) context.setShouldSmoothFonts(true) case .systemSetting: break } context.setTextDrawingMode(.fill) let dirtyRects = self.rectsBeingDrawn() self.draw(cellsIntersectingRects: dirtyRects, in: context) self.draw(cursorIn: context) #if DEBUG // self.draw(cellGridIn: context) #endif } private func draw(cellsIntersectingRects dirtyRects: [CGRect], in context: CGContext) { self.drawer.draw( self.runs(intersecting: dirtyRects), defaultAttributes: self.cellAttributesCollection.defaultAttributes, offset: self.offset, in: context ) } private func draw(cursorIn context: CGContext) { let cursorPosition = self.ugrid.cursorPositionWithMarkedInfo() let defaultAttrs = self.cellAttributesCollection.defaultAttributes let cursorRegion = self.cursorRegion(for: cursorPosition) if cursorRegion.top < 0 || cursorRegion.bottom > self.ugrid.size.height - 1 || cursorRegion.left < 0 || cursorRegion.right > self.ugrid.size.width - 1 { self.logger.error("\(cursorRegion) vs. \(self.ugrid.size)") return } guard let cellAtCursorAttrs = self.cellAttributesCollection.attributes( of: self.ugrid.cells[cursorPosition.row][cursorPosition.column].attrId ) else { self.logger.error("Could not get the attributes at cursor: \(cursorPosition)") return } guard let modeInfo = modeInfos[self.mode.rawValue] else { self.logger.error("Could not get modeInfo for mode index \(self.mode.rawValue)") return } guard let cursorAttrId = modeInfo.attrId, let cursorShapeAttrs = self.cellAttributesCollection.attributes( of: cursorAttrId, withDefaults: cellAtCursorAttrs ) else { self.logger.error("Could not get the attributes for cursor in mode: \(mode) \(modeInfo)") return } // will be used for clipping var cursorRect: CGRect let cursorTextColor: Int switch modeInfo.cursorShape { case .block: cursorRect = self.rect(for: cursorRegion) cursorTextColor = cursorShapeAttrs.effectiveForeground case let .horizontal(cellPercentage): cursorRect = self.rect(for: cursorRegion) cursorRect.size.height = (cursorRect.size.height * CGFloat(cellPercentage)) / 100 cursorTextColor = cellAtCursorAttrs.effectiveForeground case let .vertical(cellPercentage): cursorRect = self.rect(forRow: cursorPosition.row, column: cursorPosition.column) cursorRect.size.width = (cursorRect.size.width * CGFloat(cellPercentage)) / 100 cursorTextColor = cellAtCursorAttrs.effectiveForeground } let cursorAttrs = CellAttributes( fontTrait: cellAtCursorAttrs.fontTrait, foreground: cursorTextColor, background: cursorShapeAttrs.effectiveBackground, special: cellAtCursorAttrs.special, reverse: !cellAtCursorAttrs.reverse ) context.saveGState() // clip to cursor rect to support shapes like "ver25" and "hor50" context.clip(to: cursorRect) let attrsRun = AttributesRun( location: self.pointInView(forRow: cursorPosition.row, column: cursorPosition.column), cells: self.ugrid.cells[cursorPosition.row][cursorRegion.columnRange], attrs: cursorAttrs ) self.drawer.draw([attrsRun], defaultAttributes: defaultAttrs, offset: self.offset, in: context) context.restoreGState() } private func drawPinchImage(in context: CGContext) { context.interpolationQuality = .none let boundsSize = self.bounds.size let targetSize = CGSize( width: boundsSize.width * self.pinchTargetScale, height: boundsSize.height * self.pinchTargetScale ) self.pinchBitmap?.draw( in: CGRect(origin: self.bounds.origin, size: targetSize), from: CGRect.zero, operation: .sourceOver, fraction: 1, respectFlipped: true, hints: nil ) } private func runs(intersecting rects: [CGRect]) -> [AttributesRun] { rects.flatMap { rect in let region = self.region(for: rect) return self.runs(forRowRange: region.rowRange, columnRange: region.columnRange) } } private func runs( forRowRange rowRange: ClosedRange, columnRange: ClosedRange ) -> [AttributesRun] { var result = [AttributesRun]() // Estimate the capacity, median value from scrolling through a big Swift file result.reserveCapacity(rowRange.count * 3) // We use for-loops instead of flatMap and compactMap because, normal for-loops seem to be // faster. Average duration of the function using signpost in Instruments indicates 45% win. for row in rowRange { let ranges = groupedRanges(of: self.ugrid.cells[row][columnRange]) for range in ranges { guard let attrs = self.cellAttributesCollection.attributes( of: self.ugrid.cells[row][range.lowerBound].attrId ) else { self.logger.error( "row: \(row), range: \(range): Could not get CellAttributes with ID " + "\(self.ugrid.cells[row][range.lowerBound].attrId)" ) continue } result.append(AttributesRun( location: self.pointInView(forRow: row, column: range.lowerBound), cells: self.ugrid.cells[row][range], attrs: attrs )) } } return result } func updateFontMetaData(_ newFont: NSFont) { self.drawer.font = newFont self.drawer.linespacing = self.linespacing self.drawer.characterspacing = self.characterspacing self.cellSize = self.drawer.cellSize self.baselineOffset = self.drawer.baselineOffset self.resizeNeoVimUi(to: self.bounds.size) } } private let colorSpace = NSColorSpace.sRGB /// When we use the following private function instead of the public extension function in /// Commons.FoundationCommons.swift.groupedRanges(with:), then, according to Instruments /// the percentage of the function is reduced from ~ 15% to 0%. /// Keep the logic in sync with Commons.FoundationCommons.swift.groupedRanges(with:). Tests are /// present in Commons lib. private func groupedRanges(of cells: ArraySlice) -> [ClosedRange] { if cells.isEmpty { return [] } var result = [ClosedRange]() result.reserveCapacity(cells.count / 2) var startIndex = cells.startIndex var lastMarker = cells[startIndex].attrId for i in cells.indices.dropFirst() { let currentMarker = cells[i].attrId if currentMarker != lastMarker { result.append(startIndex...(i - 1)) startIndex = i lastMarker = currentMarker } } result.append(startIndex...(cells.endIndex - 1)) return result } ================================================ FILE: NvimView/Sources/NvimView/NvimView+Geometry.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa extension NvimView { func cursorRegion(for cursorPosition: Position) -> Region { var cursorRegion = Region( top: cursorPosition.row, bottom: cursorPosition.row, left: cursorPosition.column, right: cursorPosition.column ) if self.ugrid.isNextCellEmpty(cursorPosition) { cursorRegion.right += 1 } return cursorRegion } func regionForRow(at: Position) -> Region { Region(top: at.row, bottom: at.row, left: at.column, right: ugrid.size.width) } func region(for rect: CGRect) -> Region { let cellWidth = self.cellSize.width let cellHeight = self.cellSize.height let rowStart = max( 0, Int( floor( (self.bounds.height - self.offset.y - (rect.origin.y + rect.size.height)) / cellHeight ) ) ) let rowEnd = min( self.ugrid.size.height - 1, Int(ceil((self.bounds.height - self.offset.y - rect.origin.y) / cellHeight)) - 1 ) let columnStart = max(0, Int(floor((rect.origin.x - self.offset.x) / cellWidth))) let columnEnd = min( self.ugrid.size.width - 1, Int(ceil((rect.origin.x - self.offset.x + rect.size.width) / cellWidth)) - 1 ) return Region( top: rowStart, bottom: rowEnd, left: columnStart, right: columnEnd ) } func pointInView(forRow row: Int, column: Int) -> CGPoint { CGPoint( x: self.offset.x + column.cgf * self.cellSize.width, y: self.bounds.size.height - self.offset.y - row.cgf * self.cellSize.height - self.cellSize.height ) } func rect(forRow row: Int, column: Int) -> CGRect { CGRect(origin: self.pointInView(forRow: row, column: column), size: self.cellSize) } func rect(for region: Region) -> CGRect { let top = region.top.cgf let bottom = region.bottom.cgf let left = region.left.cgf let right = region.right.cgf let width = right - left + 1 let height = bottom - top + 1 let cellWidth = self.cellSize.width let cellHeight = self.cellSize.height return CGRect( x: self.offset.x + left * cellWidth, y: self.bounds.size.height - self.offset.y - top * cellHeight - height * cellHeight, width: width * cellWidth, height: height * cellHeight ) } } ================================================ FILE: NvimView/Sources/NvimView/NvimView+Key.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MessagePack public extension NvimView { private func isMeta(_ event: NSEvent) -> Bool { let modifierFlags = event.modifierFlags if (self.isLeftOptionMeta && modifierFlags.contains(.leftOption)) || (self.isRightOptionMeta && modifierFlags.contains(.rightOption)) { return true } if modifierFlags.contains(.control) || modifierFlags.contains(.command) { return true } if event.specialKey != nil, !self.hasMarkedText() { return true } return false } override func keyDown(with event: NSEvent) { self.keyDownDone = false NSCursor.setHiddenUntilMouseMoves(true) let modifierFlags = event.modifierFlags if !self.isMeta(event) { let cocoaHandledEvent = NSTextInputContext.current?.handleEvent(event) ?? false if self.hasMarkedText() { // mark state ignore Down,Up,Left,Right,=,- etc keys self.keyDownDone = true } if self.keyDownDone, cocoaHandledEvent { return } } let capslock = modifierFlags.contains(.capsLock) let shift = modifierFlags.contains(.shift) let chars = event.characters! let charsIgnoringModifiers = shift || capslock ? event.charactersIgnoringModifiers!.lowercased() : event.charactersIgnoringModifiers! let flags = self.vimModifierFlags(modifierFlags) ?? "" let isNamedKey = KeyUtils.isSpecial(key: charsIgnoringModifiers) let isControlCode = KeyUtils.isControlCode(key: chars, modifiers: modifierFlags) && !isNamedKey let isPlain = flags.isEmpty && !isNamedKey let isWrapNeeded = !isControlCode && !isPlain let namedChars = KeyUtils.namedKey(from: charsIgnoringModifiers) let finalInput = isWrapNeeded ? self.wrapNamedKeys(flags + namedChars) : self.vimPlainString(chars) self.apiSync.nvimInput(keys: finalInput, errWhenBlocked: false).cauterize() self.keyDownDone = true } func insertText(_ object: Any, replacementRange: NSRange) { dlog.debug("\(object) with \(replacementRange)") let text: String switch object { case let string as String: text = string case let attributedString as NSAttributedString: text = attributedString.string default: return } self.apiSync.nvimInput(keys: self.vimPlainString(text), errWhenBlocked: false).cauterize() if self.hasMarkedText() { self._unmarkText() } self.keyDownDone = true } override func doCommand(by aSelector: Selector) { if self.responds(to: aSelector) { dlog.debug("calling \(aSelector)") self.perform(aSelector, with: self) self.keyDownDone = true return } dlog.debug("\(aSelector) not implemented, forwarding input to neovim") self.keyDownDone = false } override func performKeyEquivalent(with event: NSEvent) -> Bool { if event.type != .keyDown { return false } // Cocoa first calls this method to ask whether a subview implements the key equivalent // in question. For example, if we have ⌘-. as shortcut for a menu item, which is the case // for "Tools -> Focus Neovim View" by default, at some point in the event processing chain // this method will be called. If we want to forward the event to Neovim because the user // could have set it for some action, that menu item shortcut will not work. To work around // this, we ask NvimViewDelegate whether the event is a shortcut of a menu item. The delegate // has to be implemented by the user of NvimView. if self.delegate?.isMenuItemKeyEquivalent(event) == true { return false } let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask) // Emoji menu: Cmd-Ctrl-Space if flags.contains([.command, .control]), event.keyCode == spaceKeyChar { return false } // & do not trigger keyDown events. // Catch the key event here and pass it to keyDown. // By rogual in NeoVim dot app: // https://github.com/rogual/neovim-dot-app/pull/248/files if flags.contains(.control), event.keyCode == 48 { self.keyDown(with: event) return true } // Space key (especially in combination with modifiers) can result in // unexpected chars (e.g. ctrl-space = \0), so catch the event early and // pass it to keyDown. if event.keyCode == spaceKeyChar { self.keyDown(with: event) return true } // do not trigger keyDown event. if flags.contains(.command), event.keyCode == 47 { self.keyDown(with: event) return true } guard let chars = event.characters else { return false } // Control code \0 causes rpc parsing problems. // So we escape as early as possible if chars == "\0" { self.apiSync .nvimInput(keys: self.wrapNamedKeys("Nul"), errWhenBlocked: false) .cauterize() return true } // For the following two conditions: // See special cases in vim/os_win32.c from vim sources // Also mentioned in MacVim's KeyBindings.plist if flags == .control, chars == "6" { self.apiSync .nvimInput(keys: "\u{1e}", errWhenBlocked: false) // AKA ^^ .cauterize() return true } if flags == .control, chars == "2" { // should generate \0, escaping as above self.apiSync .nvimInput(keys: self.wrapNamedKeys("Nul"), errWhenBlocked: false) .cauterize() return true } // NSEvent already sets \u{1f} for && return false } func setMarkedText(_ object: Any, selectedRange: NSRange, replacementRange: NSRange) { dlog.debug( "object: \(object), selectedRange: \(selectedRange), replacementRange: \(replacementRange)" ) defer { self.keyDownDone = true } switch object { case let string as String: self.markedText = string case let attributedString as NSAttributedString: self.markedText = attributedString.string default: self.markedText = String(describing: object) // should not occur } if replacementRange != .notFound { guard self.ugrid.firstPosition(fromFlatCharIndex: replacementRange.location) != nil else { return } // FIXME: here not validate location, only delete by length. // after delete, cusor should be the location } // FIXME: We should be careful here re. timing if replacementRange.length > 0 { let text = String(repeating: "", count: replacementRange.length) self.apiSync.nvimFeedkeys(keys: text, mode: "i", escape_ks: false).cauterize() } // delay to wait async gui update handled. // this avoid insert and then delete flicker // the markedPosition is not needed since marked Text should always following cursor.. // Do we need Task { @MainActor } here? Task { guard let mt = markedText else { return } ugrid.updateMark(markedText: mt, selectedRange: selectedRange) markForRender(region: regionForRow(at: ugrid.cursorPosition)) } } func unmarkText() { self._unmarkText() self.keyDownDone = true } func _unmarkText() { guard self.hasMarkedText() else { return } // wait inserted text gui update event, so hanji in korean get right previous string and can // popup candidate window Task { if let markedInfo = self.ugrid.markedInfo { self.ugrid.markedInfo = nil self.markForRender(region: regionForRow(at: markedInfo.position)) } } self.markedText = nil } /** Return the current selection or the position of the cursor with empty-length range. For example when you enter "Cmd-Ctrl-Return" you'll get the Emoji-popup at the rect by firstRectForCharacterRange(actualRange:) where the first range is the result of this method. */ func selectedRange() -> NSRange { // When the app starts and the Hangul input method is selected, // this method gets called very early... guard self.ugrid.hasData else { dlog.debug("No data in UGrid!") return .notFound } let result: NSRange result = NSRange( location: self.ugrid.flatCharIndex( forPosition: self.ugrid.cursorPositionWithMarkedInfo(allowOverflow: true) ), length: 0 ) dlog.debug("Returning \(result)") return result } func markedRange() -> NSRange { guard let marked = self.markedText else { dlog.debug("No marked text, returning not found") return .notFound } let result = NSRange( location: self.ugrid.flatCharIndex(forPosition: self.ugrid.cursorPosition), length: marked.count ) dlog.debug("Returning \(result)") return result } func hasMarkedText() -> Bool { self.markedText != nil } func attributedSubstring( forProposedRange aRange: NSRange, actualRange _: NSRangePointer? ) -> NSAttributedString? { dlog.debug("\(aRange)") if aRange.location == NSNotFound { return nil } guard let position = self.ugrid.firstPosition(fromFlatCharIndex: aRange.location), let inclusiveEndPosition = self.ugrid.lastPosition( fromFlatCharIndex: aRange.location + aRange.length - 1 ) else { return nil } dlog.debug("\(position) ... \(inclusiveEndPosition)") let string = self.ugrid.cells[position.row...inclusiveEndPosition.row] .map { row in row.filter { cell in aRange.location <= cell.flatCharIndex && cell.flatCharIndex <= aRange.inclusiveEndIndex } } .flatMap(\.self) .map(\.string) .joined() let delta = aRange.length - string.utf16.count if delta != 0 { dlog.debug("delta = \(delta)!") } dlog.debug("returning '\(string)'") return NSAttributedString(string: string) } func validAttributesForMarkedText() -> [NSAttributedString.Key] { [] } func firstRect(forCharacterRange aRange: NSRange, actualRange _: NSRangePointer?) -> NSRect { guard let position = self.ugrid.firstPosition(fromFlatCharIndex: aRange.location) else { return CGRect.zero } dlog.debug("\(aRange)-> \(position.row):\(position.column)") let resultInSelf = self.rect(forRow: position.row, column: position.column) let result = self.window?.convertToScreen(self.convert(resultInSelf, to: nil)) return result! } func characterIndex(for aPoint: NSPoint) -> Int { let position = self.position(at: aPoint) let result = self.ugrid.flatCharIndex(forPosition: position) dlog.debug("\(aPoint) -> \(position) -> \(result)") return result } internal func vimModifierFlags(_ modifierFlags: NSEvent.ModifierFlags) -> String? { var result = "" let control = modifierFlags.contains(.control) let option = modifierFlags.contains(.option) let command = modifierFlags.contains(.command) let shift = modifierFlags.contains(.shift) if control { result += "C-" } if option { result += "M-" } if command { result += "D-" } if shift { result += "S-" } if result.count > 0 { return result } return nil } internal func wrapNamedKeys(_ string: String) -> String { "<\(string)>" } internal func vimPlainString(_ string: String) -> String { string.replacingOccurrences(of: "<", with: self.wrapNamedKeys("lt")) } } private let spaceKeyChar = 49 ================================================ FILE: NvimView/Sources/NvimView/NvimView+MenuItems.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import NvimApi // MARK: - NSUserInterfaceValidationsProtocol public extension NvimView { func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool { let canUndoOrRedo = self.mode == .insert || self.mode == .replace || self.mode == .normal || self.mode == .visual let canCopyOrCut = self.mode == .normal || self.mode == .visual let canPaste = NSPasteboard.general.string(forType: .string) != nil let canDelete = self.mode == .visual || self.mode == .normal let canSelectAll = self.mode == .insert || self.mode == .replace || self.mode == .normal || self.mode == .visual guard let action = item.action else { return true } switch action { case #selector(undo(_:)), #selector(redo(_:)): return canUndoOrRedo case #selector(copy(_:)), #selector(cut(_:)): return canCopyOrCut case #selector(paste(_:)): return canPaste case #selector(delete(_:)): return canDelete case #selector(selectAll(_:)): return canSelectAll default: return true } } } // MARK: - Edit Menu Items extension NvimView { @IBAction func undo(_: Any?) { Task { switch self.mode { case .insert, .replace: await self.api.nvimInput(keys: "ui").cauterize() case .normal, .visual: await self.api.nvimInput(keys: "u").cauterize() default: return } } } @IBAction func redo(_: Any?) { Task { switch self.mode { case .insert, .replace: await self.api.nvimInput(keys: "i").cauterize() case .normal, .visual: await self.api.nvimInput(keys: "").cauterize() default: return } } } @IBAction func cut(_: Any?) { Task { switch self.mode { case .visual, .normal: await self.api.nvimInput(keys: "\"+d").cauterize() default: return } } } @IBAction func copy(_: Any?) { Task { switch self.mode { case .visual, .normal: await self.api.nvimInput(keys: "\"+y").cauterize() default: return } } } @IBAction func paste(_: Any?) { Task { guard let content = NSPasteboard.general.string(forType: .string) else { return } // phase == 1 means paste in a single call await self.api.nvimPaste(data: content, crlf: false, phase: -1).cauterize() } } @IBAction func delete(_: Any?) { Task { switch self.mode { case .normal, .visual: await self.api.nvimInput(keys: "x").cauterize() default: return } } } @IBAction override public func selectAll(_: Any?) { Task { switch self.mode { case .insert, .visual: await self.api.nvimInput(keys: "ggVG").cauterize() default: await self.api.nvimInput(keys: "ggVG").cauterize() } } } } // MARK: - Font Menu Items extension NvimView { @IBAction func resetFontSize(_: Any?) { self.font = self._font } @IBAction func makeFontBigger(_: Any?) { let curFont = self.drawer.font let font = NSFontManager.shared .convert(curFont, toSize: min(curFont.pointSize + 1, NvimView.maxFontSize)) self.updateFontMetaData(font) } @IBAction func makeFontSmaller(_: Any?) { let curFont = self.drawer.font let font = NSFontManager.shared .convert(curFont, toSize: max(curFont.pointSize - 1, NvimView.minFontSize)) self.updateFontMetaData(font) } } ================================================ FILE: NvimView/Sources/NvimView/NvimView+Mouse.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MessagePack import NvimApi public extension NvimView { override func mouseDown(with event: NSEvent) { self.mouse(event: event, vimName: "LeftMouse") } override func mouseUp(with event: NSEvent) { self.mouse(event: event, vimName: "LeftRelease") } override func mouseDragged(with event: NSEvent) { self.mouse(event: event, vimName: "LeftDrag") } override func rightMouseDown(with event: NSEvent) { self.mouse(event: event, vimName: "RightMouse") } override func rightMouseUp(with event: NSEvent) { self.mouse(event: event, vimName: "RightRelease") } override func rightMouseDragged(with event: NSEvent) { self.mouse(event: event, vimName: "RightDrag") } override func otherMouseUp(with event: NSEvent) { self.mouse(event: event, vimName: "MiddleMouse") } override func otherMouseDown(with event: NSEvent) { self.mouse(event: event, vimName: "MiddleRelease") } override func otherMouseDragged(with event: NSEvent) { self.mouse(event: event, vimName: "MiddleDrag") } override func scrollWheel(with event: NSEvent) { let (deltaX, deltaY) = self.scrollDelta(forEvent: event) if deltaX == 0, deltaY == 0 { return } let vimInput = self.vimScrollInput(forEvent: event) let mousescroll: String if event.hasPreciseScrollingDeltas { // trackpad let (absDeltaX, absDeltaY) = (abs(deltaX), abs(deltaY)) mousescroll = "ver:\(absDeltaY),hor:\(absDeltaX)" } else { mousescroll = "" } Task { await self.api.nvimExecLua( code: """ local arg = {...} if vim.g.vimr_save_mousescroll == nil then vim.g.vimr_save_mousescroll = vim.o.mousescroll end if arg[1] ~= "" then vim.o.mousescroll = arg[1] end vim.api.nvim_input(arg[2]) -- nvim_input() only queues input, schedule resetting -- mousescroll to after the input hase been processed vim.schedule(function() vim.o.mousescroll = vim.g.vimr_save_mousescroll vim.g.vimr_save_mousescroll = nil end) """, args: [NvimApi.Value(mousescroll), NvimApi.Value(vimInput)] ) } } internal func scrollDelta(forEvent event: NSEvent) -> (Int, Int) { let isTrackpad = event.hasPreciseScrollingDeltas if !isTrackpad { return (Int(event.scrollingDeltaX), Int(event.scrollingDeltaY)) } if event.phase == .began { self.trackpadScrollDeltaX = 0 self.trackpadScrollDeltaY = 0 } self.trackpadScrollDeltaX += event.scrollingDeltaX self.trackpadScrollDeltaY += event.scrollingDeltaY let (deltaCellX, deltaCellY) = ( (self.trackpadScrollDeltaX / self.cellSize.width).rounded(.toNearestOrEven), (self.trackpadScrollDeltaY / self.cellSize.height).rounded(.toNearestOrEven) ) self.trackpadScrollDeltaX.formRemainder(dividingBy: self.cellSize.width) self.trackpadScrollDeltaY.formRemainder(dividingBy: self.cellSize.height) let (deltaX, deltaY) = ( min(Int(deltaCellX), maxScrollDeltaX), min(Int(deltaCellY), maxScrollDeltaY) ) return (deltaX, deltaY) } override func magnify(with event: NSEvent) { let factor = 1 + event.magnification let pinchTargetScale = self.pinchTargetScale * factor let resultingFontSize = round(pinchTargetScale * self.font.pointSize) if resultingFontSize >= NvimView.minFontSize, resultingFontSize <= NvimView.maxFontSize { self.pinchTargetScale = pinchTargetScale } switch event.phase { case .began: let pinchImageRep = self.bitmapImageRepForCachingDisplay(in: self.bounds)! self.cacheDisplay(in: self.bounds, to: pinchImageRep) self.pinchBitmap = pinchImageRep self.isCurrentlyPinching = true case .ended, .cancelled: self.isCurrentlyPinching = false self.updateFontMetaData(NSFontManager.shared.convert(self.font, toSize: resultingFontSize)) self.pinchTargetScale = 1 default: break } self.markForRenderWholeView() } internal func position(at location: CGPoint) -> Position { let row = Int((self.bounds.size.height - location.y - self.offset.y) / self.cellSize.height) let column = Int((location.x - self.offset.x) / self.cellSize.width) let position = Position( row: min(max(0, row), self.ugrid.size.height - 1), column: min(max(0, column), self.ugrid.size.width - 1) ) return position } private func cellPosition(forEvent event: NSEvent) -> Position { let location = self.convert(event.locationInWindow, from: nil) return self.position(at: location) } private func mouse(event: NSEvent, vimName: String) { let cellPosition = self.cellPosition(forEvent: event) guard self.shouldFireVimInputFor(event: event, newCellPosition: cellPosition) else { return } let vimMouseLocation = self.wrapNamedKeys("\(cellPosition.column),\(cellPosition.row)") let vimClickCount = self.vimClickCountFrom(event: event) let result: String = if let vimModifiers = self.vimModifierFlags(event.modifierFlags) { self.wrapNamedKeys("\(vimModifiers)\(vimClickCount)\(vimName)") + vimMouseLocation } else { self.wrapNamedKeys("\(vimClickCount)\(vimName)") + vimMouseLocation } Task { await self.api.nvimInput(keys: result).cauterize() } } private func shouldFireVimInputFor(event: NSEvent, newCellPosition: Position) -> Bool { let type = event.type guard type == .leftMouseDragged || type == .rightMouseDragged || type == .otherMouseDragged else { self.lastClickedCellPosition = newCellPosition return true } if self.lastClickedCellPosition == newCellPosition { return false } self.lastClickedCellPosition = newCellPosition return true } private func vimClickCountFrom(event: NSEvent) -> String { let clickCount = event.clickCount guard clickCount >= 2, clickCount <= 4 else { return "" } switch event.type { case .leftMouseDown, .leftMouseUp, .rightMouseDown, .rightMouseUp: return "\(clickCount)-" default: return "" } } private func vimScrollInput(forEvent event: NSEvent) -> String { let cellPosition = self.cellPosition(forEvent: event) let vimMouseLocation = self.wrapNamedKeys("\(cellPosition.column),\(cellPosition.row)") let vimModifiers = self.vimModifierFlags(event.modifierFlags) ?? "" let (deltaX, deltaY) = (event.scrollingDeltaX, event.scrollingDeltaY) let resultX: String if deltaX == 0 { resultX = "" } else { let wheel = (deltaX < 0) ? "ScrollWheelRight" : "ScrollWheelLeft" resultX = self.wrapNamedKeys("\(vimModifiers)\(wheel)") + vimMouseLocation } let resultY: String if deltaY == 0 { resultY = "" } else { let wheel = (deltaY < 0) ? "ScrollWheelDown" : "ScrollWheelUp" resultY = self.wrapNamedKeys("\(vimModifiers)\(wheel)") + vimMouseLocation } return "\(resultX)\(resultY)" } } private let maxScrollDeltaX = 15 private let maxScrollDeltaY = 15 ================================================ FILE: NvimView/Sources/NvimView/NvimView+Objects.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import NvimApi public extension NvimView { struct Buffer: Equatable, Sendable { public static func == (lhs: Buffer, rhs: Buffer) -> Bool { guard lhs.handle == rhs.handle else { return false } // Transient buffer active -> open a file -> the resulting buffer has the same handle, // but different URL return lhs.url == rhs.url } public let apiBuffer: NvimApi.Buffer public let url: URL? public let type: String public let isDirty: Bool public let isCurrent: Bool public let isListed: Bool public var isTransient: Bool { if self.isDirty { return false } if self.url != nil { return false } return true } public var name: String? { if self.type == "quickfix" { return "Quickfix" } return self.url?.lastPathComponent } public var handle: Int { self.apiBuffer.handle } } struct Window: Sendable { public let apiWindow: NvimApi.Window public let buffer: Buffer public let isCurrentInTab: Bool public var handle: Int { self.apiWindow.handle } } struct Tabpage: Sendable { public let apiTabpage: NvimApi.Tabpage public let windows: [Window] public let isCurrent: Bool public var currentWindow: Window? { self.windows.first { $0.isCurrentInTab } } public var handle: Int { self.apiTabpage.handle } } } ================================================ FILE: NvimView/Sources/NvimView/NvimView+RemoteOptions.swift ================================================ /** * Renee Koecher - @shirk * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MessagePack import NvimApi extension NvimView { enum RemoteOption { // list of currently handled remote options case guifont(fontSpec: String) case guifontWide(fontSpec: String) static func fromValuePair(_ option: (key: MessagePackValue, value: MessagePackValue)) -> RemoteOption? { guard let key = option.key.stringValue, let val = option.value.stringValue else { return nil } switch key { case "guifont": return RemoteOption.guifont(fontSpec: val) case "guifontwide": return RemoteOption.guifontWide(fontSpec: val) default: return nil } } // convenience methods static func fromFont(_ font: NSFont, forWideFont isWide: Bool = false) -> RemoteOption { let fontSpec = FontUtils.vimFontSpec(forFont: font) if isWide { return RemoteOption.guifontWide(fontSpec: fontSpec) } return RemoteOption.guifont(fontSpec: fontSpec) } } final func handleRemoteOptions(_ options: [MessagePackValue: MessagePackValue]) { for kvPair in options { guard let option = RemoteOption.fromValuePair(kvPair) else { self.logger.error("Could not handle RemoteOption \(kvPair)") continue } switch option { // FIXME: currently this treats gft and gfw the as the same case let .guifont(fontSpec): self.handleGuifontSet(fontSpec) case let .guifontWide(fontSpec): self.handleGuifontSet(fontSpec, forWideFont: true) } } } final func signalRemoteOptionChange(_ option: RemoteOption) { Task { switch option { case let .guifont(fontSpec): await self.api.nvimSetOptionValue( name: "guifont", value: .string(fontSpec), opts: ["scope": .string("global")] ).cauterize() case let .guifontWide(fontSpec): await self.api.nvimSetOptionValue( name: "guifontwide", value: .string(fontSpec), opts: ["scope": .string("global")] ).cauterize() } } } public final func signalError(code: Int, message: String) { Task { await self.api.nvimErrWriteln(str: "E\(code): \(message)").cauterize() } } private func handleGuifontSet(_ fontSpec: String, forWideFont wideFlag: Bool = false) { if fontSpec.isEmpty { // this happens on connect - signal the current value self.signalRemoteOptionChange(RemoteOption.fromFont(self.font, forWideFont: wideFlag)) return } // stop if we would set the same font again let currentSpec = FontUtils.vimFontSpec(forFont: font) if currentSpec == fontSpec.components(separatedBy: " ").joined(separator: "_") { return } guard let newFont = FontUtils.font(fromVimFontSpec: fontSpec) else { self.logger.error("Invalid specification for guifont '\(fontSpec)'") self.signalError(code: 596, message: "Invalid font(s): guifont=\(fontSpec)") self.signalRemoteOptionChange(RemoteOption.fromFont(self.font, forWideFont: wideFlag)) return } self.font = newFont // Cell size likely changed, do a resize. self.resizeNeoVimUi(to: self.frame.size) self.markForRenderWholeView() self.delegate?.nextEvent(.guifontChanged(newFont)) } } private let gui = DispatchQueue.main ================================================ FILE: NvimView/Sources/NvimView/NvimView+Resize.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MessagePack import NvimApi extension NvimView { override public func setFrameSize(_ newSize: NSSize) { dlog.debug("setFrameSize: \(newSize)") super.setFrameSize(newSize) self.resizeNeoVimUi(to: newSize) } override public func viewDidEndLiveResize() { super.viewDidEndLiveResize() self.resizeNeoVimUi(to: self.bounds.size) } func discreteSize(size: CGSize) -> Size { Size( width: Int(floor(size.width / self.cellSize.width)), height: Int(floor(size.height / self.cellSize.height)) ) } func resizeNeoVimUi(to size: CGSize) { let discreteSize = self.discreteSize(size: size) if discreteSize == self.ugrid.size { self.markForRenderWholeView() return } self.offset.x = floor((size.width - self.cellSize.width * discreteSize.width.cgf) / 2) self.offset.y = floor((size.height - self.cellSize.height * discreteSize.height.cgf) / 2) Task { await self.api .nvimUiTryResize(width: discreteSize.width, height: discreteSize.height) .cauterize() } } } ================================================ FILE: NvimView/Sources/NvimView/NvimView+TouchBar.swift ================================================ /** * Greg Omelaenko - http://omelaen.co * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import NvimApi extension NvimView: NSTouchBarDelegate, NSScrubberDataSource, NSScrubberDelegate { override public func makeTouchBar() -> NSTouchBar? { let bar = NSTouchBar() bar.delegate = self bar.customizationIdentifier = touchBarIdentifier bar.defaultItemIdentifiers = [touchBarTabSwitcherIdentifier] bar.customizationRequiredItemIdentifiers = [touchBarTabSwitcherIdentifier] return bar } public func touchBar( _: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItem.Identifier ) -> NSTouchBarItem? { switch identifier { case touchBarTabSwitcherIdentifier: let item = NSCustomTouchBarItem(identifier: identifier) item.customizationLabel = "Tab Switcher" let tabsControl = NSScrubber() tabsControl.register( NSScrubberTextItemView.self, forItemIdentifier: NSUserInterfaceItemIdentifier(touchBarTabSwitcherItem) ) tabsControl.mode = .fixed tabsControl.dataSource = self tabsControl.delegate = self tabsControl.selectionOverlayStyle = .outlineOverlay tabsControl.selectedIndex = self.selectedTabIndex() let layout = NSScrubberProportionalLayout() layout.numberOfVisibleItems = 1 tabsControl.scrubberLayout = layout item.view = tabsControl return item default: return nil } } private func selectedTabIndex() -> Int { tabsCache.firstIndex { $0.isCurrent } ?? -1 } private func getTabsControl() -> NSScrubber? { let item = self .touchBar? .item(forIdentifier: touchBarTabSwitcherIdentifier) as? NSCustomTouchBarItem return item?.view as? NSScrubber } func updateTouchBarCurrentBuffer() async { guard let allTabs = await self.allTabs() else { return } self.tabsCache = allTabs guard let tabsControl = self.getTabsControl() else { return } tabsControl.reloadData() // swiftlint:disable:next force_cast let scrubberProportionalLayout = tabsControl.scrubberLayout as! NSScrubberProportionalLayout scrubberProportionalLayout.numberOfVisibleItems = tabsControl .numberOfItems > 0 ? tabsControl.numberOfItems : 1 tabsControl.selectedIndex = self.selectedTabIndex() } func updateTouchBarTab() async { guard let allTabs = await self.allTabs() else { return } self.tabsCache = allTabs guard let tabsControl = self.getTabsControl() else { return } tabsControl.reloadData() tabsControl.selectedIndex = self.selectedTabIndex() } public func numberOfItems(for _: NSScrubber) -> Int { tabsCache.count } public func scrubber(_ scrubber: NSScrubber, viewForItemAt index: Int) -> NSScrubberItemView { let item = scrubber.makeItem( withIdentifier: NSUserInterfaceItemIdentifier(touchBarTabSwitcherItem), owner: nil ) guard let itemView = item as? NSScrubberTextItemView else { return NSScrubberTextItemView() } guard tabsCache.count > index else { return itemView } let tab = self.tabsCache[index] itemView.title = tab.currentWindow?.buffer.name ?? "[No Name]" return itemView } public func scrubber(_: NSScrubber, didSelectItemAt selectedIndex: Int) { let tab = self.tabsCache[selectedIndex] guard tab.windows.count > 0 else { return } let window = tab.currentWindow ?? tab.windows[0] Task { await self.api.nvimSetCurrentWin(window: .init(window.handle)).cauterize() } } } private let touchBarIdentifier = NSTouchBar .CustomizationIdentifier("com.qvacua.VimR.NvimView.touchBar") private let touchBarTabSwitcherIdentifier = NSTouchBarItem .Identifier("com.qvacua.VimR.NvimView.touchBar.tabSwitcher") private let touchBarTabSwitcherItem = "com.qvacua.VimR.NvimView.touchBar.tabSwitcher.item" ================================================ FILE: NvimView/Sources/NvimView/NvimView+Types.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MessagePack import NvimApi import PureLayout import Tabs public extension NvimView { struct TabEntry: Hashable, TabRepresentative { public static func == (lhs: TabEntry, rhs: TabEntry) -> Bool { lhs.tabpage == rhs.tabpage } public var title: String public var isSelected = false public var tabpage: NvimApi.Tabpage } struct Config { var usesCustomTabBar: Bool var useInteractiveZsh: Bool var cwd: URL var nvimBinary: String var nvimArgs: [String]? var additionalEnvs: [String: String] var sourceFiles: [URL] public init( usesCustomTabBar: Bool, useInteractiveZsh: Bool, cwd: URL, nvimBinary: String, nvimArgs: [String]?, additionalEnvs: [String: String], sourceFiles: [URL] ) { self.usesCustomTabBar = usesCustomTabBar self.useInteractiveZsh = useInteractiveZsh self.cwd = cwd self.nvimBinary = nvimBinary self.nvimArgs = nvimArgs self.additionalEnvs = additionalEnvs self.sourceFiles = sourceFiles } } enum Warning { case cannotCloseLastTab case noWriteSinceLastChange } enum Event { case nvimReady case neoVimStopped case setTitle(String) case setDirtyStatus(Bool) case cwdChanged case bufferListChanged case tabChanged case newCurrentBuffer(NvimView.Buffer) case bufferWritten(NvimView.Buffer) case colorschemeChanged(NvimView.Theme) case guifontChanged(NSFont) case ipcBecameInvalid(String) case scroll case cursor(Position) case rpcEvent([MessagePack.MessagePackValue]) case rpcEventSubscribed case warning(Warning) case initVimError // FIXME: maybe do onError()? case apiError(msg: String, cause: Swift.Error) } enum Error: Swift.Error { case nvimLaunch(msg: String, cause: Swift.Error) case ipc(msg: String, cause: Swift.Error) } struct Theme: CustomStringConvertible, Sendable { public static let `default` = Theme() public var foreground = NSColor.textColor public var background = NSColor.textBackgroundColor public var visualForeground: NSColor = .init(named: NSColor.Name("controlAccentColor")) ?? .selectedMenuItemTextColor // NSColor.selectedMenuItemTextColor // NSColor.selectedMenuItemColor is deprecated. The doc says that // NSVisualEffectView.Material.selection should be used instead, but I don't know how to get // an NSColor from it. public var visualBackground = NSColor.selectedContentBackgroundColor public var directoryForeground = NSColor.textColor public var tabForeground = NSColor.controlColor public var tabBackground = NSColor.controlBackgroundColor public var tabBarForeground = NSColor.textColor public var tabBarBackground = NSColor.windowBackgroundColor public var selectedTabForeground = NSColor.selectedTextColor public var selectedTabBackground = NSColor.selectedTextBackgroundColor public init() {} public init(_ values: [Int]) { if values.count < 11 { preconditionFailure("We need 11 colors!") } let color = ColorUtils.colorIgnoringAlpha self.foreground = values[0] < 0 ? Theme.default.foreground : color(values[0]) self.background = values[1] < 0 ? Theme.default.background : color(values[1]) self.visualForeground = values[2] < 0 ? Theme.default.visualForeground : color(values[2]) self.visualBackground = values[3] < 0 ? Theme.default.visualBackground : color(values[3]) self.directoryForeground = values[4] < 0 ? Theme.default.directoryForeground : color(values[4]) self.tabBarBackground = values[5] < 0 ? Theme.default.tabBarBackground : color(values[5]) self.tabBarForeground = values[6] < 0 ? Theme.default.tabBarForeground : color(values[6]) self.tabBackground = values[7] < 0 ? Theme.default.tabBackground : color(values[7]) self.tabForeground = values[8] < 0 ? Theme.default.tabForeground : color(values[8]) self.selectedTabBackground = values[9] < 0 ? Theme.default .selectedTabBackground : color(values[9]) self.selectedTabForeground = values[10] < 0 ? Theme.default .selectedTabForeground : color(values[10]) } public var description: String { "NVV.Theme<" + "fg: \(self.foreground.hex), bg: \(self.background.hex), " + "visual-fg: \(self.visualForeground.hex), visual-bg: \(self.visualBackground.hex)" + "tab-fg: \(self.tabForeground.hex), tab-bg: \(self.tabBackground.hex)" + "tabfill-fg: \(self.tabBarForeground.hex), tabfill-bg: \(self.tabBarBackground.hex)" + "tabsel-fg: \(self.selectedTabForeground.hex), tabsel-bg: \(self.selectedTabBackground.hex)" + ">" } } } ================================================ FILE: NvimView/Sources/NvimView/NvimView+UiBridge.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Carbon import Cocoa import Foundation import MessagePack import NvimApi import os extension NvimView { final func markForRenderWholeView() { dlog.debug() self.needsDisplay = true } final func markForRender(region: Region) { dlog.debug(region) self.setNeedsDisplay(self.rect(for: region)) } final func renderData(_ renderData: [MessagePackValue]) { dlog.trace("# of render data: \(renderData.count)") var (recompute, rowStart) = (false, Int.max) for value in renderData { guard let renderEntry = value.arrayValue else { continue } guard renderEntry.count >= 2 else { continue } guard let rawType = renderEntry[0].stringValue, let innerArray = renderEntry[1].arrayValue else { self.logger.error("Could not convert \(value)") continue } switch rawType { case "mode_change": self.modeChange(renderEntry[1]) case "grid_line": for index in 1.. 0, let aucmd = array[0].stringValue?.lowercased(), let event = NvimAutoCommandEvent(rawValue: aucmd) else { self.logger.error("Could not convert \(array)") return } dlog.debug("\(event): \(array)") // vimenter is handled in NvimView.swift if event == .vimleave { await self.stop() return } if event == .dirchanged { guard array.count > 1, array[1].stringValue != nil else { self.logger.error("Could not convert \(array)") return } self.cwdChanged(array[1]) return } if event == .colorscheme { self.colorSchemeChanged(MessagePackValue(Array(array[1.. 1, let bufferHandle = array[1].intValue else { self.logger.error("Nothing we handle here: \(array)") return } if event == .bufmodifiedset { guard array.count > 2 else { self.logger.error("Could not convert \(array)") return } self.setDirty(with: array[2]) } if event == .bufwinenter || event == .bufwinleave { await self.bufferListChanged() } if event == .tabenter { self.delegate?.nextEvent(.tabChanged) } if event == .bufwritepost { await self.bufferWritten(bufferHandle) } if event == .bufenter { await self.newCurrentBuffer(bufferHandle) } } } // MARK: Private extension NvimView { private func resize(_ value: MessagePackValue) { guard let array = value.arrayValue else { self.logger.error("Could not convert \(value)") return } guard array.count == 3 else { self.logger.error("Could not convert; wrong count: \(array)") return } guard array[0].intValue != nil, // grid let width = array[1].intValue, let height = array[2].intValue else { self.logger.error("Could not convert; wrong count: \(array)") return } self.ugrid.resize(Size(width: width, height: height)) self.markForRenderWholeView() } private func optionSet(_ values: [MessagePackValue]) { var options: [MessagePackValue: MessagePackValue] = [:] for index in 1.. \(self.mode)") self.handleInputMethodSource() } private func modeInfoSet(_ value: MessagePackValue) { // value[0] = cursorStyleEnabled: Bool // value[1] = modeInfoList: [ModeInfo]] dlog.trace("modeInfoSet: \(value)") if let mainTuple = value.arrayValue, mainTuple.count == 2, let modeInfoArray = mainTuple[1].arrayValue?.map({ let modeInfo = ModeInfo(withMsgPackDict: $0) return (modeInfo.name, modeInfo) }) { self.modeInfos = Dictionary( uniqueKeysWithValues: modeInfoArray ) } } private func setTitle(with value: MessagePackValue) { guard let title = value.stringValue else { self.logger.error("Could not convert \(value)") return } dlog.debug(title) self.delegate?.nextEvent(.setTitle(title)) } private func ipcBecameInvalid(_ error: Swift.Error) async { self.logger.fault("Bridge became invalid: \(error)") self.delegate?.nextEvent(.ipcBecameInvalid(error.localizedDescription)) self.logger.fault("Force-closing due to IPC error.") await self.api.stop() self.nvimProc.forceQuit() self.logger.fault("Successfully force-closed the bridge.") } private func flush() { for region in self.regionsToFlush { self.markForRender(region: region) } self.regionsToFlush.removeAll(keepingCapacity: true) } private func doRawLineNu(data: [MessagePackValue]) -> Int { guard data.count == 5 else { self.logger.error("Could not convert; wrong count: \(data)") return Int.max } guard data[0].intValue != nil, // grid let row = data[1].intValue, let startCol = data[2].intValue, let chunk = data[3].arrayValue?.compactMap({ arg -> UUpdate? in guard let argArray = arg.arrayValue else { return nil } var uupdate = UUpdate(string: "", attrId: nil, repeats: nil) if argArray.count > 0, let str = argArray[0].stringValue { uupdate.string = str uupdate.utf16chars = Array(str.utf16) } if argArray.count > 1 { uupdate.attrId = argArray[1].intValue } if argArray.count > 2 { uupdate.repeats = argArray[2].intValue } return uupdate }), // wrap is informational, not required for correct functionality data[4].boolValue != nil // wrap else { self.logger.error("Could not convert \(data)") return Int.max } let endCol = self.ugrid.updateNu(row: row, startCol: startCol, chunk: chunk) dlog.trace("row: \(row), startCol: \(startCol), endCol: \(endCol), chunk: \(chunk)") if chunk.count > 0 { if row == self.ugrid.markedInfo?.position.row { self.regionsToFlush.append(Region( top: row, bottom: row, left: startCol, right: self.ugrid.size.width )) } else if self.usesLigatures { let leftBoundary = self.ugrid.leftBoundaryOfWord( at: Position(row: row, column: startCol) ) let rightBoundary = self.ugrid.rightBoundaryOfWord( at: Position(row: row, column: max(0, endCol - 1)) ) self.regionsToFlush.append(Region( top: row, bottom: row, left: leftBoundary, right: rightBoundary )) } else { self.regionsToFlush.append(Region( top: row, bottom: row, left: startCol, right: max(0, endCol - 1) )) } } return row } private func doGoto(position: Position, textPosition: Position) -> Int? { dlog.debug(position) var rowStart: Int? if var markedInfo = self.ugrid.popMarkedInfo() { rowStart = min(markedInfo.position.row, position.row) self.markForRender( region: self.regionForRow(at: self.ugrid.cursorPosition) ) self.ugrid.goto(position) markedInfo.position = position self.ugrid.updateMarkedInfo(newValue: markedInfo) self.markForRender( region: self.regionForRow(at: self.ugrid.cursorPosition) ) } else { // Re-render the old cursor position. self.markForRender( region: self.cursorRegion(for: self.ugrid.cursorPosition) ) self.ugrid.goto(position) self.markForRender( region: self.cursorRegion(for: self.ugrid.cursorPosition) ) } self.delegate?.nextEvent(.cursor(textPosition)) return rowStart } private func doScrollNu(_ array: [Int]) -> Int { dlog.trace("[grid, top, bot, left, right, rows, cols] = \(array)") let (_ /* grid */, top, bottom, left, right, rows, cols) = (array[0], array[1], array[2] - 1, array[3], array[4] - 1, array[5], array[6]) let scrollRegion = Region( top: top, bottom: bottom, left: left, right: right ) self.ugrid.scroll(region: scrollRegion, rows: rows, cols: cols) self.regionsToFlush.append(scrollRegion) self.delegate?.nextEvent(.scroll) return min(0, top) } private func handleInputMethodSource() { // Exit from Insert mode, save ime used in Insert mode. if case self.lastMode = CursorModeShape.insert, case self.mode = CursorModeShape.normal { self.lastImSource = TISCopyCurrentKeyboardInputSource().takeRetainedValue() dlog.debug("lastImSource id: \(lastImSource.id), source: \(lastImSource)") if self.activateAsciiImInNormalMode { TISSelectInputSource(self.asciiImSource) } return } // Enter into Insert mode, set ime to last used ime in Insert mode. // Visual -> Insert // Normal -> Insert // avoid insert -> insert if case self.mode = CursorModeShape.insert, self.lastMode != self.mode, self.activateAsciiImInNormalMode { TISSelectInputSource(self.lastImSource) } } private func bell() { dlog.debug() NSSound.beep() } private func cwdChanged(_ value: MessagePackValue) { guard let cwd = value.stringValue else { self.logger.error("Could not convert \(value)") return } dlog.debug(cwd) self._cwd = URL(fileURLWithPath: cwd) Task { self.tabBar?.cwd = cwd } self.delegate?.nextEvent(.cwdChanged) } private func colorSchemeChanged(_ value: MessagePackValue) { dlog.debug("color scheme changed before: \(value)") guard let values = MessagePackUtils.array( from: value, ofSize: 11, conversion: { $0.intValue } ) else { self.logger.error("Could not convert theme from \(value)") return } dlog.debug("color scheme changed: \(values)") let theme = Theme(values) dlog.debug(theme) self.theme = theme self.delegate?.nextEvent(.colorschemeChanged(theme)) } private func setDirty(with value: MessagePackValue) { guard let dirty = value.intValue else { self.logger.error("Could not convert \(value)") return } dlog.debug(dirty) self.delegate?.nextEvent(.setDirtyStatus(dirty == 1)) } private func setAttr(with value: MessagePackValue) { guard let array = value.arrayValue else { self.logger.error("Could not convert \(value)") return } guard array.count == 4 else { self.logger.error("Could not convert; wrong count \(value)") return } guard let id = array[0].intValue, let rgb_dict = array[1].dictionaryValue, array[2].dictionaryValue != nil, // cterm_dict array[3].arrayValue != nil // info else { self.logger.error("Could not get highlight attributes from \(value)") return } let mapped_rgb_dict = rgb_dict.map { (key: MessagePackValue, value: MessagePackValue) in (key.stringValue!, value) } let rgb_attr = [String: MessagePackValue]( uniqueKeysWithValues: mapped_rgb_dict ) let attrs = CellAttributes( withDict: rgb_attr, with: CellAttributes( fontTrait: FontTrait(), foreground: -1, background: -1, special: -1, reverse: false ) // self.cellAttributesCollection.defaultAttributes ) dlog.debug("AttrId: \(id): \(attrs)") // FIXME: seems to not work well unless not async self.cellAttributesCollection.set(attributes: attrs, for: id) } private func defaultColors(with value: MessagePackValue) { guard let array = value.arrayValue else { self.logger.error("Could not convert \(value)") return } guard array.count == 5 else { self.logger.error("Could not convert; wrong count \(value)") return } guard let rgb_fg = array[0].intValue, let rgb_bg = array[1].intValue, let rgb_sp = array[2].intValue, array[3].intValue != nil, // cterm_fg array[4].intValue != nil // cterm_bg else { self.logger.error("Could not get default colors from \(value)") return } let attrs = CellAttributes( fontTrait: FontTrait(), foreground: rgb_fg, background: rgb_bg, special: rgb_sp, reverse: false ) self.cellAttributesCollection.set( attributes: attrs, for: CellAttributesCollection.defaultAttributesId ) self.updateLayerBackgroundColor() } private func updateMenu() { dlog.debug() } private func busyStart() { dlog.debug() } private func busyStop() { dlog.debug() } private func mouseOn() { dlog.debug() } private func mouseOff() { dlog.debug() } private func visualBell() { dlog.debug() } private func suspend() { dlog.debug() } private func tablineUpdate(_ args: [MessagePackValue]) { guard args.count >= 2, let curTab = NvimApi.Tabpage(args[0]), let tabsValue = args[1].arrayValue else { return } self.tabEntries = tabsValue.compactMap { dictValue in guard let dict = dictValue.dictionaryValue, let name = dict[.string("name")]?.stringValue, let tabpageValue = dict[.string("tab")], let tabpage = NvimApi.Tabpage(tabpageValue) else { return nil } return TabEntry(title: name, isSelected: tabpage == curTab, tabpage: tabpage) } self.tabBar?.update(tabRepresentatives: self.tabEntries) } private func winViewportUpdate(_: [MessagePackValue]) { // FIXME: /* guard let array = value.arrayValue, array.count == 8 else { self.bridgeLogger.error("Could not convert \(value)") return } guard let grid = array[0].intValue, let top = array[2].intValue, let bot = array[3].intValue, let curline = array[4].intValue, let curcol = array[5].intValue, let linecount = array[6].intValue, let scroll_delta = array[6].intValue else { self.bridgeLogger.error("Could not convert \(value)") return } // [top, bot, left, right, rows, cols] // FIXMEL self.doScroll([]) */ } private func bufferWritten(_ handle: Int) async { let curBuf = await self.currentBuffer() guard let buf = await self.neoVimBuffer(for: .init(handle), currentBuffer: curBuf?.apiBuffer) else { return } self.delegate?.nextEvent(.bufferWritten(buf)) await self.updateTouchBarTab() } private func newCurrentBuffer(_ handle: Int) async { guard let curBuf = await self.currentBuffer(), curBuf.apiBuffer.handle == handle else { return } await self.updateTouchBarTab() self.delegate?.nextEvent(.newCurrentBuffer(curBuf)) } private func bufferListChanged() async { self.delegate?.nextEvent(.bufferListChanged) await self.updateTouchBarCurrentBuffer() } func focusGained(_ gained: Bool) async { await self.api.nvimUiSetFocus(gained: gained).cauterize() } } extension TISInputSource { enum Category { static var keyboardInputSource: String { kTISCategoryKeyboardInputSource as String } } private func getProperty(_ key: CFString) -> AnyObject? { let cfType = TISGetInputSourceProperty(self, key) if cfType != nil { return Unmanaged.fromOpaque(cfType!).takeUnretainedValue() } else { return nil } } // swiftlint:disable force_cast var id: String { self.getProperty(kTISPropertyInputSourceID) as! String } var name: String { self.getProperty(kTISPropertyLocalizedName) as! String } var category: String { self.getProperty(kTISPropertyInputSourceCategory) as! String } var isSelectable: Bool { self.getProperty(kTISPropertyInputSourceIsSelectCapable) as! Bool } var sourceLanguages: [String] { self.getProperty(kTISPropertyInputSourceLanguages) as! [String] } // swiftlint:enable force_cast } ================================================ FILE: NvimView/Sources/NvimView/NvimView.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Carbon import Cocoa import Commons import MessagePack import NvimApi import os import SpriteKit import Tabs import UniformTypeIdentifiers import UserNotifications extension Result { var isSuccess: Bool { if case .success = self { true } else { false } } var isFailure: Bool { !self.isSuccess } func cauterize() {} } public struct FontTrait: OptionSet, Sendable { public let rawValue: UInt public init(rawValue: UInt) { self.rawValue = rawValue } static let italic = FontTrait(rawValue: 1 << 0) static let bold = FontTrait(rawValue: 1 << 1) static let underline = FontTrait(rawValue: 1 << 2) static let undercurl = FontTrait(rawValue: 1 << 3) } public enum FontSmoothing: String, Codable, CaseIterable, Sendable { case systemSetting case withFontSmoothing case noFontSmoothing case noAntiAliasing } @MainActor public protocol NvimViewDelegate: AnyObject, Sendable { func isMenuItemKeyEquivalent(_: NSEvent) -> Bool func nextEvent(_: NvimView.Event) } @MainActor public final class NvimView: NSView, NSUserInterfaceValidations, @preconcurrency NSTextInputClient { // MARK: - Public public static let rpcEventName = "com.qvacua.NvimView" public static let minFontSize = 4.0 public static let maxFontSize = 128.0 // NSFont seems to be immutable public nonisolated(unsafe) static let defaultFont = NSFont.userFixedPitchFont(ofSize: 12)! public static let defaultLinespacing = 1.0 public static let defaultCharacterspacing = 1.0 public static let minLinespacing = 0.5 public static let maxLinespacing = 8.0 public weak var delegate: NvimViewDelegate? public let usesCustomTabBar: Bool public let tabBar: TabBar? public var isLeftOptionMeta = false public var isRightOptionMeta = false public var activateAsciiImInNormalMode = true public let uuid = UUID() public let api = NvimApi() public let apiSync = NvimApiSync() public internal(set) var fatalErrorOccurred = false public internal(set) var mode: CursorModeShape = .normal public internal(set) var modeInfos = [String: ModeInfo]() public internal(set) var theme = Theme.default public var usesLigatures = false { didSet { self.drawer.usesLigatures = self.usesLigatures self.markForRenderWholeView() } } public var fontSmoothing = FontSmoothing.systemSetting { didSet { self.markForRenderWholeView() } } public var linespacing: CGFloat { get { self._linespacing } set { guard newValue >= NvimView.minLinespacing, newValue <= NvimView.maxLinespacing else { return } self._linespacing = newValue self.updateFontMetaData(self._font) } } public var characterspacing: CGFloat { get { self._characterspacing } set { guard newValue >= 0.0 else { return } self._characterspacing = newValue self.updateFontMetaData(self._font) } } public var font: NSFont { get { self._font } set { // FIXME: // if !newValue.fontDescriptor.symbolicTraits.contains(.monoSpace) { // self.log.info("\(newValue) is not monospaced.") // } let size = newValue.pointSize guard size >= NvimView.minFontSize, size <= NvimView.maxFontSize else { return } self._font = newValue self.updateFontMetaData(newValue) self.signalRemoteOptionChange(RemoteOption.fromFont(newValue)) } } public var cwd: URL { get { self._cwd } set { self.apiSync.nvimSetCurrentDir(dir: newValue.path).cauterize() } } public var defaultCellAttributes: CellAttributes { self.cellAttributesCollection.defaultAttributes } override public var acceptsFirstResponder: Bool { true } public internal(set) var currentPosition = Position.beginning public init(frame: NSRect, config: Config) { self.drawer = AttributesRunDrawer( baseFont: self._font, linespacing: self._linespacing, characterspacing: self._characterspacing, usesLigatures: self.usesLigatures ) self.nvimProc = NvimProcess(uuid: self.uuid, config: config) self.sourceFileUrls = config.sourceFiles self.usesCustomTabBar = config.usesCustomTabBar if self.usesCustomTabBar { self.tabBar = TabBar(withTheme: .default) } else { self.tabBar = nil } self.asciiImSource = TISCopyCurrentASCIICapableKeyboardInputSource().takeRetainedValue() self.lastImSource = TISCopyCurrentKeyboardInputSource().takeRetainedValue() super.init(frame: frame) self.registerForDraggedTypes([NSPasteboard.PasteboardType.fileURL]) self.wantsLayer = true self.cellSize = FontUtils.cellSize( of: self.font, linespacing: self.linespacing, characterspacing: self.characterspacing ) self.runBridge() self.tabBar?.closeHandler = { [weak self] index, _, _ in self?.apiSync.nvimCommand(command: "tabclose \(index + 1)").cauterize() } self.tabBar?.selectHandler = { [weak self] _, tabEntry, _ in self?.apiSync.nvimSetCurrentTabpage(tabpage: tabEntry.tabpage).cauterize() } self.tabBar?.reorderHandler = { [weak self] index, _, entries in // I don't know why, but `tabm ${last_index}` does not always work. let command = (index == entries.count - 1) ? "tabm" : "tabm \(index)" self?.apiSync.nvimCommand(command: command).cauterize() } } override public convenience init(frame rect: NSRect) { self.init( frame: rect, config: Config( usesCustomTabBar: true, useInteractiveZsh: false, cwd: URL(fileURLWithPath: NSHomeDirectory()), nvimBinary: "", nvimArgs: nil, additionalEnvs: [:], sourceFiles: [] ) ) } @available(*, unavailable) public required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } // MARK: - Internal let logger = Logger(subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.view) let queue = DispatchQueue( label: String(reflecting: NvimView.self), qos: .userInteractive, target: .global(qos: .userInteractive) ) let nvimProc: NvimProcess let ugrid = UGrid() let cellAttributesCollection = CellAttributesCollection() let drawer: AttributesRunDrawer var baselineOffset = 0.0 /// We store the last marked text because Cocoa's text input system does the following: /// 하 -> hanja popup -> insertText(하) -> attributedSubstring...() -> setMarkedText(下) -> ... /// We want to return "하" in attributedSubstring...() var lastMarkedText: String? var keyDownDone = true var lastClickedCellPosition = Position.null var offset = CGPoint.zero var cellSize = CGSize.zero var scrollGuardCounterX = 5 var scrollGuardCounterY = 5 var trackpadScrollDeltaX = 0.0 var trackpadScrollDeltaY = 0.0 var isCurrentlyPinching = false var pinchTargetScale = 1.0 var pinchBitmap: NSBitmapImageRep? var currentlyResizing = false var _font = NvimView.defaultFont var _cwd = URL(fileURLWithPath: NSHomeDirectory()) // FIXME: Use self.tabEntries // cache the tabs for Touch Bar use var tabsCache = [NvimView.Tabpage]() var markedText: String? let sourceFileUrls: [URL] var tabEntries = [TabEntry]() var asciiImSource: TISInputSource var lastImSource: TISInputSource var lastMode = CursorModeShape.normal var regionsToFlush = [Region]() var framerateView: SKView? var stopped = false func dieWithFatalError(description: String) { self.logger.fault("Fatal error occurred: \(description)") self.fatalErrorOccurred = true self.delegate?.nextEvent(.ipcBecameInvalid(description)) } func updateLayerBackgroundColor() { self.layer?.backgroundColor = ColorUtils.cgColorIgnoringAlpha( self.cellAttributesCollection.defaultAttributes.background ) } // MARK: - Private private var _linespacing = NvimView.defaultLinespacing private var _characterspacing = NvimView.defaultCharacterspacing private func runBridge() { Task(priority: .high) { await self.launchNvim(self.discreteSize(size: frame.size)) let stream = await self.api.msgpackRawStream for await msg in stream { switch msg { case let .request(msgid, method, _): // See https://neovim.io/doc/user/ui.html#ui-startup // "vimenter" RPC request will be sent to us // which is the result of // nvim_command("autocmd VimEnter * call rpcrequest(1, 'vimenter')") in // NvimView+Resize.swift // This is the only request sent from Neovim to the UI, afaics. guard method == NvimAutoCommandEvent.vimenter.rawValue else { break } dlog.debug("Processing blocking vimenter request") await self.doSetupForVimenterAndSendResponse(forMsgid: msgid) let serverName = self.nvimProc.pipeUrl.path do { try self.apiSync.run(socketPath: serverName) dlog.debug("Sync API running on \(serverName)") } catch { self.dieWithFatalError(description: "Could not run sync Nvim API: \(error)") return } self.delegate?.nextEvent(.nvimReady) self.setFrameSize(self.bounds.size) case let .notification(method, params): if method == NvimView.rpcEventName { self.delegate?.nextEvent(.rpcEvent(params)) } if method == "redraw" { self.renderData(params) } else if method == "autocommand" { await self.autoCommandEvent(params) } else { self.logger.error("MSG ERROR: \(msg)") } case let .error(_, msg): self.logger.error("MSG ERROR: \(msg)") case let .response(_, error, _): guard let array = error.arrayValue, array.count >= 2, array[0].uint64Value == NvimApi.Error.exceptionRawValue, let errorMsg = array[1].stringValue else { return } // FIXME: if errorMsg.contains("Vim(tabclose):E784") { self.delegate?.nextEvent(.warning(.cannotCloseLastTab)) } if errorMsg.starts(with: "Vim(tabclose):E37") { self.delegate?.nextEvent(.warning(.noWriteSinceLastChange)) } } } await self.stop() } } private func doSetupForVimenterAndSendResponse(forMsgid msgid: UInt32) async { do { let apiInfoValue = try await self.api.nvimGetApiInfo(errWhenBlocked: false).get() guard let apiInfo = apiInfoValue.arrayValue, apiInfo.count == 2, let channel = apiInfo[0].int32Value else { throw NvimApi.Error.exception(message: "Error matching API version") } // swiftformat:disable all _ = try await self.api.nvimExec2(src: """ autocmd BufWinEnter * call rpcnotify(\(channel), 'autocommand', 'bufwinenter', str2nr(expand(''))) autocmd BufWinLeave * call rpcnotify(\(channel), 'autocommand', 'bufwinleave', str2nr(expand(''))) autocmd TabEnter * call rpcnotify(\(channel), 'autocommand', 'tabenter', str2nr(expand(''))) autocmd BufWritePost * call rpcnotify(\(channel), 'autocommand', 'bufwritepost', str2nr(expand(''))) autocmd BufEnter * call rpcnotify(\(channel), 'autocommand', 'bufenter', str2nr(expand(''))) autocmd DirChanged * call rpcnotify(\( channel), 'autocommand', 'dirchanged', expand('')) autocmd BufModifiedSet * call rpcnotify(\(channel), 'autocommand', 'bufmodifiedset', str2nr(expand('')), getbufinfo(str2nr(expand('')))[0].changed) """, opts: [:], errWhenBlocked: false).get() // swiftformat:enable all _ = try await self.api .nvimSubscribe(event: NvimView.rpcEventName, expectsReturnValue: false).get() for url in self.sourceFileUrls { _ = try await self.api .nvimExec2( src: "source \(url.shellEscapedPath)", opts: [:], errWhenBlocked: false ).get() } _ = try await self.api.sendResponse(.nilResponse(msgid)).get() let ginitPath = FileManager.default .homeDirectoryForCurrentUser .appendingPathComponent(".config/nvim/ginit.vim").path if FileManager.default.fileExists(atPath: ginitPath) { dlog.debug("Source'ing ginit.vim") _ = try await self.api.nvimCommand(command: "source \(ginitPath.shellEscapedPath)").get() } } catch { self.dieWithFatalError(description: "Could not set up vimenter event: \(error)") } } private func launchNvim(_ size: Size) async { dlog.debug("Starting Nvim") let inPipe: Pipe, outPipe: Pipe, errorPipe: Pipe do { (inPipe, outPipe, errorPipe) = try self.nvimProc.runLocalServerAndNvim( width: size.width, height: size.height ) } catch { self.dieWithFatalError(description: "Could not launch Nvim: \(error)") return } do { // See https://neovim.io/doc/user/ui.html#ui-startup for startup sequence // When we call nvim_command("autocmd VimEnter * call rpcrequest(1, 'vimenter')") // Neovim will send us a vimenter request and enter a blocking state. // We do some autocmd setup and send a response to exit the blocking state in // NvimView.swift try await self.api.run(inPipe: inPipe, outPipe: outPipe, errorPipe: errorPipe) let apiInfoValue = try await self.api.nvimGetApiInfo(errWhenBlocked: false).get() guard let apiInfo = apiInfoValue.arrayValue, apiInfo.count == 2, let channel = apiInfo[0].int32Value, let dict = apiInfo[1].dictionaryValue, let version = dict["version"]?.dictionaryValue, let major = version["major"]?.intValue, let minor = version["minor"]?.intValue, major > kMinMajorVersion || (major == kMinMajorVersion && minor >= kMinMinorVersion) else { throw NvimApi.Error.exception(message: "Error matching API version") } dlog.debug("Version fine") // swiftformat:disable all let vimscript = """ function! GetHiColor(hlID, component) let color = synIDattr(synIDtrans(hlID(a:hlID)), a:component) if empty(color) return -1 else return str2nr(color[1:], 16) endif endfunction let g:gui_vimr = 1 autocmd VimLeave * call rpcnotify(\(channel), 'autocommand', 'vimleave') autocmd VimEnter * call rpcnotify(\(channel), 'autocommand', 'vimenter') autocmd ColorScheme * call rpcnotify(\(channel), 'autocommand', 'colorscheme', GetHiColor('Normal', 'fg'), GetHiColor('Normal', 'bg'), GetHiColor('Visual', 'fg'), GetHiColor('Visual', 'bg'), GetHiColor('Directory', 'fg'), GetHiColor('TablineFill', 'bg'), GetHiColor('TablineFill', 'fg'), GetHiColor('Tabline', 'bg'), GetHiColor('Tabline', 'fg'), GetHiColor('TablineSel', 'bg'), GetHiColor('TablineSel', 'fg')) autocmd VimEnter * call rpcrequest(\(channel), 'vimenter') """ // swiftformat:enable all _ = try await self.api.nvimExec2(src: vimscript, opts: [:], errWhenBlocked: false).get() dlog.debug("Initial script exec'ed") _ = try await self.api .nvimUiAttach(width: size.width, height: size.height, options: [ "ext_linegrid": true, "ext_multigrid": false, "ext_tabline": MessagePackValue(self.usesCustomTabBar), "rgb": true, ]).get() dlog.debug("UI attached") } catch { self.dieWithFatalError( description: "Could not attach UI and exec initial setup script: \(error)" ) return } dlog.debug("Launched Nvim") } } ================================================ FILE: NvimView/Sources/NvimView/Resources/com.qvacua.NvimView.vim ================================================ set mouse=a set title autocmd VimEnter,ColorScheme * :highlight default VimrDefaultCursor gui=reverse guibg=NONE guifg=NONE set guicursor=a:block-VimrDefaultCursor autocmd VimEnter,ColorScheme * :highlight default VimrInsertCursor guibg=fg set guicursor=i:ver25-VimrInsertCursor ================================================ FILE: NvimView/Sources/NvimView/Runs.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa struct AttributesRun { var location: CGPoint var cells: ArraySlice var attrs: CellAttributes } struct FontGlyphRun { var font: NSFont var glyphs: [CGGlyph] var positions: [CGPoint] } ================================================ FILE: NvimView/Sources/NvimView/Typesetter.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import os final class Typesetter { func clearCache() { self.ctRunsCache.clear() } func fontGlyphRunsWithLigatures( nvimUtf16Cells: [[Unicode.UTF16.CodeUnit]], startColumn: Int, offset: CGPoint, font: NSFont, cellWidth: CGFloat ) -> [FontGlyphRun] { let utf16Chars = self.utf16Chars(from: nvimUtf16Cells) let cellIndices = self.cellIndices(from: nvimUtf16Cells, utf16CharsCount: utf16Chars.count) let ctRuns = self.ctRuns(from: utf16Chars, font: font) return ctRuns.withUnsafeBufferPointer { pointer -> [FontGlyphRun] in // Tried to use Array(unsafeUninitializedCapacity, initializingWith:) for result, // but I get EXC_BAD_ACCESS, I don't know why. var result: [FontGlyphRun] = [] result.reserveCapacity(pointer.count) for k in 0...fromOpaque( CFDictionaryGetValue(attrs, Unmanaged.passUnretained(kCTFontAttributeName).toOpaque()) ).takeUnretainedValue() result.append(FontGlyphRun(font: font, glyphs: glyphs, positions: positions)) } return result } } func fontGlyphRunsWithoutLigatures( nvimUtf16Cells: [[Unicode.UTF16.CodeUnit]], startColumn: Int, offset: CGPoint, font: NSFont, cellWidth: CGFloat ) -> [FontGlyphRun] { let nvimUtf16CellsRuns = self.groupSimpleAndNonSimpleChars( nvimUtf16Cells: nvimUtf16Cells, font: font ) let runs: [[FontGlyphRun]] = nvimUtf16CellsRuns.map { run in guard run.isSimple else { return self.fontGlyphRunsWithLigatures( nvimUtf16Cells: run.nvimUtf16Cells, startColumn: startColumn + run.startColumn, offset: offset, font: font, cellWidth: cellWidth ) } let unichars = self.utf16Chars(from: run.nvimUtf16Cells) var glyphs = [CGGlyph](repeating: CGGlyph(), count: unichars.count) let gotAllGlyphs = CTFontGetGlyphsForCharacters(font, unichars, &glyphs, unichars.count) if gotAllGlyphs { let startColumnForPositions = startColumn + run.startColumn let endColumn = startColumnForPositions + glyphs.count let positions = (startColumnForPositions.. [CTRun] { let str = String(utf16CodeUnits: utf16Chars, count: utf16Chars.count) if let ctRunsAndFont = self.ctRunsCache.valueForKey(str) { return ctRunsAndFont } let attrStr = NSAttributedString( string: str, attributes: [.font: font, .ligature: ligatureOption] ) let ctLine = CTLineCreateWithAttributedString(attrStr) guard let ctRuns = CTLineGetGlyphRuns(ctLine) as? [CTRun] else { return [] } self.ctRunsCache.set(ctRuns, forKey: str) return ctRuns } private func groupSimpleAndNonSimpleChars( nvimUtf16Cells: [[Unicode.UTF16.CodeUnit]], font _: NSFont ) -> [NvimUtf16CellsRun] { if nvimUtf16Cells.isEmpty { return [] } let hasMoreThanTwoCells = nvimUtf16Cells.count >= 2 let firstCharHasSingleUnichar = nvimUtf16Cells[0].count == 1 let firstCharHasDoubleWidth = hasMoreThanTwoCells && nvimUtf16Cells[1].isEmpty var result = [NvimUtf16CellsRun]() result.reserveCapacity(nvimUtf16Cells.count) let inclusiveEndIndex = nvimUtf16Cells.endIndex - 1 var previousWasSimple = firstCharHasSingleUnichar && !firstCharHasDoubleWidth var lastStartIndex = 0 var lastEndIndex = 0 for (i, utf16Cell) in nvimUtf16Cells.enumerated() { defer { lastEndIndex = i } if utf16Cell.isEmpty { if i == inclusiveEndIndex { result.append(NvimUtf16CellsRun( startColumn: lastStartIndex, nvimUtf16Cells: Array(nvimUtf16Cells[lastStartIndex...i]), isSimple: false )) } continue } let hasSingleUnichar = utf16Cell.count == 1 let hasDoubleWidth = i + 1 < nvimUtf16Cells.count && nvimUtf16Cells[i + 1].isEmpty let isSimple = hasSingleUnichar && !hasDoubleWidth if previousWasSimple == isSimple { if i == inclusiveEndIndex { result.append(NvimUtf16CellsRun( startColumn: lastStartIndex, nvimUtf16Cells: Array(nvimUtf16Cells[lastStartIndex...i]), isSimple: previousWasSimple )) } } else { result.append(NvimUtf16CellsRun( startColumn: lastStartIndex, nvimUtf16Cells: Array(nvimUtf16Cells[lastStartIndex...lastEndIndex]), isSimple: previousWasSimple )) lastStartIndex = i previousWasSimple = isSimple if i == inclusiveEndIndex { result.append(NvimUtf16CellsRun( startColumn: i, nvimUtf16Cells: Array(nvimUtf16Cells[i...i]), isSimple: isSimple )) } } } return result } // We could combine cellIndices and utf16Chars into one function such that // we have only one pass through nvimUtf16Cells. // According to Instruments, no real benefit, it seems to take even more time: 3% vs. 5% private func cellIndices( from nvimUtf16Cells: [[Unicode.UTF16.CodeUnit]], utf16CharsCount: Int ) -> [Int] { nvimUtf16Cells.withUnsafeBufferPointer { pointer in Array(unsafeUninitializedCapacity: utf16CharsCount) { buffer, count in var i = 0 for cellIndex in 0.. [UInt16] { // nvimUtf16Cells.flatMap { $0 } gets the job done, but is slower according to Instruments: // 4% vs. 1.5% when scrolling 10K lines nvimUtf16Cells.withUnsafeBufferPointer { pointer -> [UInt16] in let count = pointer.reduce(0) { acc, elem in acc + elem.count } return [Unicode.UTF16.CodeUnit](unsafeUninitializedCapacity: count) { resultPtr, initCount in var i = 0 for k in 0..(count: 5000) private struct NvimUtf16CellsRun { var startColumn: Int var nvimUtf16Cells: [[Unicode.UTF16.CodeUnit]] var isSimple: Bool } } private let ligatureOption: NSNumber = 1 ================================================ FILE: NvimView/Sources/NvimView/UGrid.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import os struct UUpdate: Codable { var string: String var attrId: Int? var repeats: Int? var utf16chars: [Unicode.UTF16.CodeUnit] init(string: String, attrId: Int? = nil, repeats: Int? = nil) { self.string = string self.attrId = attrId self.repeats = repeats self.utf16chars = Array(string.utf16) } } struct UCell: Codable { var string: String var attrId: Int // When computing FontGlueRun, we have to convert the UCell.string to array of UTF16 chars. // The conversion takes almost half of AttributesRunDrawer.fontGlyphRuns(). // So, we cache it in the cell to compute it only once when scrolling. var utf16chars: [Unicode.UTF16.CodeUnit] var flatCharIndex: Int init(string: String, attrId: Int, flatCharIndex: Int = 0) { self.string = string self.attrId = attrId self.utf16chars = Array(string.utf16) self.flatCharIndex = flatCharIndex } } final class UGrid: CustomStringConvertible, Codable { private(set) var cursorPosition = Position.zero private(set) var size = Size.zero private(set) var cells: [[UCell]] = [] enum CodingKeys: String, CodingKey { case width case height case cells } init() {} init(from decoder: Decoder) throws { let values = try decoder.container(keyedBy: CodingKeys.self) let width = try values.decode(Int.self, forKey: .width) let height = try values.decode(Int.self, forKey: .height) self.size = Size(width: width, height: height) self.cells = try values.decode([[UCell]].self, forKey: .cells) } func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(self.size.width, forKey: .width) try container.encode(self.size.height, forKey: .height) try container.encode(self.cells, forKey: .cells) } var description: String { let result = "UGrid.flatCharIndex:\n" + self.cells.reduce("") { result, row in result + "(\(row[0].flatCharIndex...row[self.size.width - 1].flatCharIndex)), " } return result } var hasData: Bool { !self.cells.isEmpty } func flatCharIndex(forPosition position: Position) -> Int { self.cells[position.row][position.column].flatCharIndex } func firstPosition(fromFlatCharIndex index: Int) -> Position? { for (rowIndex, row) in self.cells.enumerated() { if let column = row.firstIndex(where: { $0.flatCharIndex == index }) { return Position(row: rowIndex, column: column) } } return nil } func lastPosition(fromFlatCharIndex index: Int) -> Position? { for (rowIndex, row) in self.cells.enumerated() { if let column = row.lastIndex(where: { $0.flatCharIndex == index }) { return Position(row: rowIndex, column: column) } } return nil } func leftBoundaryOfWord(at position: Position) -> Int { let column = position.column let row = self.cells[position.row] if row[column].string == wordSeparator { return column } if let i = (0.. Int { let column = position.column let row = self.cells[position.row] if row[column].string == wordSeparator { return column } if column + 1 == self.size.width { return column } if let i = ((column + 1).. 0 { start = region.top stop = region.bottom - rows + 1 step = 1 } else { start = region.bottom stop = region.top - rows - 1 step = -1 } var oldMarkedInfo: MarkedInfo? if let row = self.markedInfo?.position.row, region.top <= row, row <= region.bottom { oldMarkedInfo = self.popMarkedInfo() } defer { // keep markedInfo position not changed. markedInfo only following cursor position change if let oldMarkedInfo { updateMarkedInfo(newValue: oldMarkedInfo) } } // copy cell data let rangeWithinRow = region.left...region.right for i in stride(from: start, to: stop, by: step) { self.cells[i].replaceSubrange(rangeWithinRow, with: self.cells[i + rows][rangeWithinRow]) } // clear cells in the emptied region, var clearTop, clearBottom: Int if rows > 0 { clearTop = stop clearBottom = stop + rows - 1 } else { clearBottom = stop clearTop = stop + rows + 1 } self.clear(region: Region( top: clearTop, bottom: clearBottom, left: region.left, right: region.right )) } func isNextCellEmpty(_ position: Position) -> Bool { guard self.isSane(position) else { return false } guard position.column + 1 < self.size.width else { return false } guard !self.cells[position.row][position.column].string.isEmpty else { return false } if self.cells[position.row][position.column + 1].string.isEmpty { return true } return false } func isSane(_ position: Position) -> Bool { if position.column < 0 || position.column >= self.size.width || position.row < 0 || position.row >= self.size.height { return false } return true } func clear() { let emptyRow = Array( repeating: UCell(string: clearString, attrId: CellAttributesCollection.defaultAttributesId), count: self.size.width ) self.updateMarkedInfo(newValue: nil) // everything need to be reset self.cells = Array(repeating: emptyRow, count: self.size.height) } func clear(region: Region) { // FIXME: sometimes clearRegion gets called without first resizing the Grid. // Should we handle this? guard self.hasData else { return } let clearedCell = UCell(string: " ", attrId: CellAttributesCollection.defaultAttributesId) let clearedRow = Array(repeating: clearedCell, count: region.right - region.left + 1) for i in region.top...region.bottom { self.cells[i].replaceSubrange(region.left...region.right, with: clearedRow) } } func resize(_ size: Size) { dlog.debug(size) self.size = size self.cursorPosition = .zero self.clear() } /// endCol and clearCol are past last index /// This does not recompute the flat char indices. For performance it's done /// in NvimView.flush() func update( row: Int, startCol: Int, endCol: Int, clearCol: Int, clearAttr: Int, chunk: [String], attrIds: [Int] ) { // remove marked patch and recover after modified from vim var oldMarkedInfo: MarkedInfo? if row == self.markedInfo?.position.row { oldMarkedInfo = self.popMarkedInfo() } defer { if let oldMarkedInfo { updateMarkedInfo(newValue: oldMarkedInfo) } } for column in startCol.. endCol { self.cells[row].replaceSubrange( endCol.. Int { // remove marked patch and recover after modified from vim var oldMarkedInfo: MarkedInfo? if row == self.markedInfo?.position.row { oldMarkedInfo = self.popMarkedInfo() } defer { if let oldMarkedInfo { updateMarkedInfo(newValue: oldMarkedInfo) } } var lastAttrId = 0 var column = startCol for cindex in 0.. MarkedInfo? { if let markedInfo = _markedInfo { // true clear or just popup self.updateMarkedInfo(newValue: nil) return markedInfo } return nil } // return changedRowStart. Int.max if no change @discardableResult func updateMarkedInfo(newValue: MarkedInfo?) -> Int { assert(Thread.isMainThread, "should occur on main thread!") var changedRowStart = Int.max if let old = _markedInfo { self.cells[old.position.row] .removeSubrange(old.position.column..<(old.position.column + old.markedCell.count)) changedRowStart = old.position.row } self._markedInfo = newValue if let new = newValue { self.cells[new.position.row].insert(contentsOf: new.markedCell, at: new.position.column) changedRowStart = min(changedRowStart, new.position.row) } return changedRowStart } var markedInfo: MarkedInfo? { get { self._markedInfo } set { let changedRowStart = self.updateMarkedInfo(newValue: newValue) if changedRowStart < self.size.height { self.recomputeFlatIndices(rowStart: changedRowStart) } } } func cursorPositionWithMarkedInfo(allowOverflow: Bool = false) -> Position { var position: Position = self.cursorPosition if let markedInfo { position.column += markedInfo.selectedRange.location } if !allowOverflow, position.column >= self.size.width { position.column = self.size.width - 1 } return position } // marked text insert into cell directly // marked text always following cursor position func updateMark(markedText: String, selectedRange: NSRange) { assert(Thread.isMainThread) var selectedRangeByCell = selectedRange let markedTextArray: [String] = markedText.enumerated().reduce(into: []) { array, pair in array.append(String(pair.element)) if !KeyUtils.isHalfWidth(char: pair.element) { array.append("") if pair.offset < selectedRange.location { selectedRangeByCell.location += 1 } else { selectedRangeByCell.length += 1 } } } let cells = markedTextArray.map { UCell(string: $0, attrId: CellAttributesCollection.markedAttributesId) } self.markedInfo = MarkedInfo( position: self.cursorPosition, markedCell: cells, selectedRange: selectedRangeByCell ) } func recomputeFlatIndices(rowStart: Int) { dlog.debug("Recomputing flat indices from row \(rowStart)") var counter = 0 if rowStart > 0 { counter = self.cells[rowStart - 1].last!.flatCharIndex + 1 } // should update following char too since previous line is change for row in rowStart...(self.size.height - 1) { // marked text may overflow size, counter it too for column in self.cells[row].indices { if self.cells[row][column].string.isEmpty { counter -= 1 } self.cells[row][column].flatCharIndex = counter counter += 1 } } } } extension UGrid { func dumpToJson() throws { #if DEBUG let encoder = JSONEncoder() encoder.outputFormatting = .prettyPrinted let data = try encoder.encode(self) try data.write(to: URL(fileURLWithPath: "/tmp/ugrid.dump.json")) #endif } } private let clearString = " " private let wordSeparator = " " ================================================ FILE: NvimView/Support/DrawerDev/AppDelegate.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa @main class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet var window: NSWindow! func applicationDidFinishLaunching(_: Notification) { // Insert code here to initialize your application } func applicationWillTerminate(_: Notification) { // Insert code here to tear down your application } } ================================================ FILE: NvimView/Support/DrawerDev/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "idiom" : "mac", "size" : "16x16", "scale" : "1x" }, { "idiom" : "mac", "size" : "16x16", "scale" : "2x" }, { "idiom" : "mac", "size" : "32x32", "scale" : "1x" }, { "idiom" : "mac", "size" : "32x32", "scale" : "2x" }, { "idiom" : "mac", "size" : "128x128", "scale" : "1x" }, { "idiom" : "mac", "size" : "128x128", "scale" : "2x" }, { "idiom" : "mac", "size" : "256x256", "scale" : "1x" }, { "idiom" : "mac", "size" : "256x256", "scale" : "2x" }, { "idiom" : "mac", "size" : "512x512", "scale" : "1x" }, { "idiom" : "mac", "size" : "512x512", "scale" : "2x" } ], "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: NvimView/Support/DrawerDev/Assets.xcassets/Contents.json ================================================ { "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: NvimView/Support/DrawerDev/Base.lproj/MainMenu.xib ================================================ Default Left to Right Right to Left Default Left to Right Right to Left ================================================ FILE: NvimView/Support/DrawerDev/Info.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString SNAPSHOT-357 CFBundleVersion 357 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright Copyright © 2018 Tae Won Ha. All rights reserved. NSMainNibFile MainMenu NSPrincipalClass NSApplication ================================================ FILE: NvimView/Support/DrawerDev/MyView.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa // let cells = ["👨‍👨‍👧‍👧", "", "a"] // let cells = ["👶🏽", "", "a"] // let cells = ["ü", "a͆", "a̪"] // let cells = ["a", "b" , "c"] // let cells = ["<", "-", "-", "\u{1F600}", "", " ", "b", "c"] class MyView: NSView { required init?(coder decoder: NSCoder) { super.init(coder: decoder) self.setupUgrid() } override func draw(_: NSRect) { guard let context = NSGraphicsContext.current?.cgContext else { return } let cellSize = FontUtils.cellSize(of: fira, linespacing: 1, characterspacing: 1) /* let string = "a\u{034B}" let attrStr = NSAttributedString(string: string, attributes: [.font: fira]) let ctLine = CTLineCreateWithAttributedString(attrStr) let ctRun = (CTLineGetGlyphRuns(ctLine) as! Array)[0] let glyphCount = CTRunGetGlyphCount(ctRun) var glyphs = Array(repeating: CGGlyph(), count: glyphCount) var positions = Array(repeating: CGPoint(), count: glyphCount) var advances = Array(repeating: CGSize(), count: glyphCount) CTRunGetGlyphs(ctRun, .zero, &glyphs) CTRunGetPositions(ctRun, .zero, &positions) CTRunGetAdvances(ctRun, .zero, &advances) let attrs = CTRunGetAttributes(ctRun) as! [NSAttributedStringKey: Any] let font = attrs[NSAttributedStringKey.font] as! NSFont for i in (0..", "=", " ", "-", "-", ">", " ", "<", "=", ">"], attrIds: Array(repeating: 0, count: 10) ) self.ugrid.update( row: 1, startCol: 0, endCol: 10, clearCol: 10, clearAttr: 0, chunk: ["ἐ", "τ", "έ", "ἔ", "-", ">", " ", "<", "=", ">"], attrIds: Array(repeating: 0, count: 10) ) self.ugrid.update( row: 3, startCol: 0, endCol: 10, clearCol: 10, clearAttr: 0, chunk: (0..<10).compactMap { String($0) }, attrIds: Array(repeating: 0, count: 10) ) self.ugrid.update( row: 4, startCol: 0, endCol: 8, clearCol: 8, clearAttr: 0, chunk: ["क", "ख", "ग", "घ", "ड़", "-", ">", "ड़"], attrIds: Array(repeating: 0, count: 8) ) } } private let fira = NSFont(name: "FiraCodeRoman-Regular", size: 36)! ================================================ FILE: NvimView/Support/DrawerDev/NvimView.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa // Dummy NvimView class for FontUtils. class NvimView { static let defaultFont = NSFont.userFixedPitchFont(ofSize: 12)! static let minFontSize = CGFloat(9) static let maxFontSize = CGFloat(128) } extension NSColor: @retroactive @unchecked Sendable {} extension NSFont: @retroactive @unchecked Sendable {} extension NSImage: @retroactive @unchecked Sendable {} ================================================ FILE: NvimView/Support/DrawerPerf/0.json ================================================ { "width" : 153, "cells" : [ [ { "string" : "2", "attrId" : 74, "flatCharIndex" : 0 }, { "string" : "7", "attrId" : 74, "flatCharIndex" : 1 }, { "string" : "4", "attrId" : 74, "flatCharIndex" : 2 }, { "string" : " ", "attrId" : 74, "flatCharIndex" : 3 }, { "string" : "\\", "attrId" : 164, "flatCharIndex" : 4 }, { "string" : "b", "attrId" : 164, "flatCharIndex" : 5 }, { "string" : "e", "attrId" : 164, "flatCharIndex" : 6 }, { "string" : "g", "attrId" : 164, "flatCharIndex" : 7 }, { "string" : "i", "attrId" : 164, "flatCharIndex" : 8 }, { "string" : "n", "attrId" : 164, "flatCharIndex" : 9 }, { "string" : "{", "attrId" : 70, "flatCharIndex" : 10 }, { "string" : "f", "attrId" : 70, "flatCharIndex" : 11 }, { "string" : "r", "attrId" : 70, "flatCharIndex" : 12 }, { "string" : "a", "attrId" : 70, "flatCharIndex" : 13 }, { "string" : "m", "attrId" : 70, "flatCharIndex" : 14 }, { "string" : "e", "attrId" : 70, "flatCharIndex" : 15 }, { "string" : "}", "attrId" : 70, "flatCharIndex" : 16 }, { "string" : "[", "attrId" : 159, "flatCharIndex" : 17 }, { "string" : "f", "attrId" : 73, "flatCharIndex" : 18 }, { "string" : "r", "attrId" : 73, "flatCharIndex" : 19 }, { "string" : "a", "attrId" : 73, "flatCharIndex" : 20 }, { "string" : "g", "attrId" : 73, "flatCharIndex" : 21 }, { "string" : "i", "attrId" : 73, "flatCharIndex" : 22 }, { "string" : "l", "attrId" : 73, "flatCharIndex" : 23 }, { "string" : "e", "attrId" : 73, "flatCharIndex" : 24 }, { "string" : "]", "attrId" : 159, "flatCharIndex" : 25 }, { "string" : "{", "attrId" : 159, "flatCharIndex" : 26 }, { "string" : "글", "attrId" : 73, "flatCharIndex" : 27 }, { "string" : "", "attrId" : 73, "flatCharIndex" : 27 }, { "string" : "꼴", "attrId" : 73, "flatCharIndex" : 28 }, { "string" : "", "attrId" : 73, "flatCharIndex" : 28 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 29 }, { "string" : "조", "attrId" : 73, "flatCharIndex" : 30 }, { "string" : "", "attrId" : 73, "flatCharIndex" : 30 }, { "string" : "정", "attrId" : 73, "flatCharIndex" : 31 }, { "string" : "", "attrId" : 73, "flatCharIndex" : 31 }, { "string" : "}", "attrId" : 159, "flatCharIndex" : 32 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 33 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 34 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 35 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 36 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 37 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 38 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 39 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 40 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 41 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 42 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 43 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 44 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 45 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 46 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 47 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 48 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 49 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 50 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 51 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 52 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 53 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 54 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 55 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 56 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 57 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 58 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 59 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 60 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 61 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 62 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 63 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 64 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 65 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 66 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 67 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 68 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 69 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 70 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 71 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 72 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 73 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 74 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 75 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 76 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 77 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 78 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 79 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 80 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 81 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 82 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 83 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 84 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 85 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 86 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 87 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 88 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 89 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 90 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 91 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 92 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 93 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 94 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 95 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 96 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 97 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 98 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 99 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 100 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 101 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 102 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 103 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 104 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 105 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 106 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 107 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 108 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 109 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 110 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 111 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 112 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 113 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 114 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 115 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 116 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 117 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 118 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 119 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 120 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 121 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 122 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 123 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 124 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 125 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 126 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 127 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 128 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 129 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 130 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 131 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 132 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 133 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 134 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 135 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 136 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 137 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 138 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 139 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 140 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 141 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 142 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 143 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 144 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 145 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 146 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 147 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 148 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 149 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 150 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 151 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 154 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 155 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 156 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 157 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 158 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 159 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 160 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 161 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 162 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 163 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 164 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 165 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 166 }, { "string" : "z", "attrId" : 96, "flatCharIndex" : 167 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 168 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 231 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 251 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 271 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 301 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 302 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 303 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 304 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 309 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 310 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 311 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 312 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 313 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 315 }, { "string" : "\\", "attrId" : 99, "flatCharIndex" : 316 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 317 }, { "string" : "e", "attrId" : 99, "flatCharIndex" : 318 }, { "string" : "x", "attrId" : 99, "flatCharIndex" : 319 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 320 }, { "string" : "b", "attrId" : 99, "flatCharIndex" : 321 }, { "string" : "f", "attrId" : 99, "flatCharIndex" : 322 }, { "string" : "{", "attrId" : 99, "flatCharIndex" : 323 }, { "string" : "굵", "attrId" : 6, "flatCharIndex" : 324 }, { "string" : "", "attrId" : 6, "flatCharIndex" : 324 }, { "string" : "게", "attrId" : 6, "flatCharIndex" : 325 }, { "string" : "", "attrId" : 6, "flatCharIndex" : 325 }, { "string" : "}", "attrId" : 99, "flatCharIndex" : 326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 327 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 329 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 330 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 331 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 332 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 333 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 334 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 335 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 336 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 337 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 338 }, { "string" : "x", "attrId" : 96, "flatCharIndex" : 339 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 340 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 341 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 342 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 343 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 344 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 345 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 346 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 347 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 348 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 349 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 382 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 402 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 422 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 452 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 453 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 454 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 455 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 460 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 461 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 462 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 463 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 464 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 466 }, { "string" : "\\", "attrId" : 99, "flatCharIndex" : 467 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 468 }, { "string" : "e", "attrId" : 99, "flatCharIndex" : 469 }, { "string" : "x", "attrId" : 99, "flatCharIndex" : 470 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 471 }, { "string" : "i", "attrId" : 99, "flatCharIndex" : 472 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 473 }, { "string" : "{", "attrId" : 99, "flatCharIndex" : 474 }, { "string" : "이", "attrId" : 156, "flatCharIndex" : 475 }, { "string" : "", "attrId" : 156, "flatCharIndex" : 475 }, { "string" : "탤", "attrId" : 156, "flatCharIndex" : 476 }, { "string" : "", "attrId" : 156, "flatCharIndex" : 476 }, { "string" : "릭", "attrId" : 156, "flatCharIndex" : 477 }, { "string" : "", "attrId" : 156, "flatCharIndex" : 477 }, { "string" : "}", "attrId" : 99, "flatCharIndex" : 478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 479 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 481 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 482 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 483 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 484 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 485 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 486 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 487 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 488 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 489 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 490 }, { "string" : "x", "attrId" : 96, "flatCharIndex" : 491 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 492 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 493 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 494 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 495 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 496 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 497 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 498 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 499 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 500 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 501 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 532 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 552 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 572 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 602 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 603 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 604 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 605 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 610 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 611 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 612 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 613 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 614 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 616 }, { "string" : "\\", "attrId" : 99, "flatCharIndex" : 617 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 618 }, { "string" : "e", "attrId" : 99, "flatCharIndex" : 619 }, { "string" : "x", "attrId" : 99, "flatCharIndex" : 620 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 621 }, { "string" : "s", "attrId" : 99, "flatCharIndex" : 622 }, { "string" : "f", "attrId" : 99, "flatCharIndex" : 623 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 624 }, { "string" : "산", "attrId" : 0, "flatCharIndex" : 625 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 625 }, { "string" : "세", "attrId" : 0, "flatCharIndex" : 626 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 626 }, { "string" : "리", "attrId" : 0, "flatCharIndex" : 627 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 627 }, { "string" : "프", "attrId" : 0, "flatCharIndex" : 628 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 628 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 629 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 630 }, { "string" : "f", "attrId" : 93, "flatCharIndex" : 631 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 632 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 633 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 634 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 635 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 636 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 637 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 638 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 639 }, { "string" : "본", "attrId" : 0, "flatCharIndex" : 640 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 641 }, { "string" : "문", "attrId" : 0, "flatCharIndex" : 642 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 642 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 643 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 643 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 644 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 645 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 646 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 647 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 648 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 649 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 650 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 652 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 653 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 654 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 655 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 656 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 658 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 659 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 659 }, { "string" : " ", "attrId" : 135, "flatCharIndex" : 660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 676 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 696 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 716 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 746 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 747 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 748 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 749 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 754 }, { "string" : "사", "attrId" : 0, "flatCharIndex" : 755 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 755 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 756 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 756 }, { "string" : "하", "attrId" : 0, "flatCharIndex" : 757 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 757 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 758 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 759 }, { "string" : "때", "attrId" : 0, "flatCharIndex" : 760 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 760 }, { "string" : "문", "attrId" : 0, "flatCharIndex" : 761 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 761 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 762 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 763 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 764 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 764 }, { "string" : "본", "attrId" : 0, "flatCharIndex" : 765 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 766 }, { "string" : "폰", "attrId" : 0, "flatCharIndex" : 767 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 767 }, { "string" : "트", "attrId" : 0, "flatCharIndex" : 768 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 768 }, { "string" : "가", "attrId" : 0, "flatCharIndex" : 769 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 770 }, { "string" : "산", "attrId" : 0, "flatCharIndex" : 771 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 771 }, { "string" : "세", "attrId" : 0, "flatCharIndex" : 772 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 772 }, { "string" : "리", "attrId" : 0, "flatCharIndex" : 773 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 773 }, { "string" : "프", "attrId" : 0, "flatCharIndex" : 774 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 774 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 775 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 775 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 776 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 776 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 778 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 779 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 779 }, { "string" : "글", "attrId" : 0, "flatCharIndex" : 780 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 780 }, { "string" : "의", "attrId" : 0, "flatCharIndex" : 781 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 782 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 783 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 783 }, { "string" : "우", "attrId" : 0, "flatCharIndex" : 784 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 784 }, { "string" : " ", "attrId" : 135, "flatCharIndex" : 785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 806 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 826 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 846 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 876 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 877 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 878 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 879 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 884 }, { "string" : "나", "attrId" : 0, "flatCharIndex" : 885 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 885 }, { "string" : "눔", "attrId" : 0, "flatCharIndex" : 886 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 886 }, { "string" : "고", "attrId" : 0, "flatCharIndex" : 887 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 887 }, { "string" : "딕", "attrId" : 0, "flatCharIndex" : 888 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 888 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 889 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 891 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 893 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 894 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 895 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 896 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 897 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 898 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 899 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 900 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 901 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 902 }, { "string" : "x", "attrId" : 96, "flatCharIndex" : 903 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 904 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 905 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 906 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 907 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 908 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 909 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 910 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 911 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 912 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 913 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 955 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 975 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 995 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1025 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 1026 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 1027 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 1028 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1033 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1034 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1035 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1036 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1037 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 1038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1039 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1040 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1041 }, { "string" : "c", "attrId" : 93, "flatCharIndex" : 1042 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 1043 }, { "string" : "l", "attrId" : 93, "flatCharIndex" : 1044 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 1045 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1046 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1047 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 1048 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1049 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1050 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1051 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1053 }, { "string" : "색", "attrId" : 0, "flatCharIndex" : 1054 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1054 }, { "string" : "상", "attrId" : 0, "flatCharIndex" : 1055 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1055 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1057 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 1058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1059 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1060 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1061 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1062 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1063 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1065 }, { "string" : "패", "attrId" : 0, "flatCharIndex" : 1066 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1066 }, { "string" : "키", "attrId" : 0, "flatCharIndex" : 1067 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1067 }, { "string" : "지", "attrId" : 0, "flatCharIndex" : 1068 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1068 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 1069 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1070 }, { "string" : "사", "attrId" : 0, "flatCharIndex" : 1071 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1071 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 1072 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1072 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1100 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1120 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1140 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1170 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 1171 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 1172 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 1173 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1178 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 1179 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 1180 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 1181 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 1182 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 1183 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 1184 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1185 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 1186 }, { "string" : "c", "attrId" : 96, "flatCharIndex" : 1187 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 1188 }, { "string" : "l", "attrId" : 96, "flatCharIndex" : 1189 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 1190 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 1191 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1192 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 1193 }, { "string" : "l", "attrId" : 96, "flatCharIndex" : 1194 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 1195 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 1196 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1197 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 1198 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 1199 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 1200 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 1201 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 1202 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1203 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 1204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1253 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1273 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1293 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1323 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 1324 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 1325 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 1326 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1329 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1330 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1331 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 1332 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 1333 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1334 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 1335 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 1336 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 1337 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 1338 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 1339 }, { "string" : "z", "attrId" : 96, "flatCharIndex" : 1340 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 1341 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1406 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1426 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1446 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1476 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 1477 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 1478 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 1479 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1482 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 1483 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1484 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1485 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1486 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 1487 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1488 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1489 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 1490 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1492 }, { "string" : "2", "attrId" : 0, "flatCharIndex" : 1493 }, { "string" : "0", "attrId" : 0, "flatCharIndex" : 1494 }, { "string" : "1", "attrId" : 0, "flatCharIndex" : 1495 }, { "string" : "3", "attrId" : 0, "flatCharIndex" : 1496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1497 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 1498 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1498 }, { "string" : "준", "attrId" : 0, "flatCharIndex" : 1499 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1499 }, { "string" : "으", "attrId" : 0, "flatCharIndex" : 1500 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1500 }, { "string" : "로", "attrId" : 0, "flatCharIndex" : 1501 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1501 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1503 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1504 }, { "string" : "T", "attrId" : 93, "flatCharIndex" : 1505 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1506 }, { "string" : "X", "attrId" : 93, "flatCharIndex" : 1507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1508 }, { "string" : "의", "attrId" : 0, "flatCharIndex" : 1509 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1510 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 1511 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1511 }, { "string" : "본", "attrId" : 0, "flatCharIndex" : 1512 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1513 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 1514 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1514 }, { "string" : "글", "attrId" : 0, "flatCharIndex" : 1515 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1515 }, { "string" : "글", "attrId" : 0, "flatCharIndex" : 1516 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1516 }, { "string" : "꼴", "attrId" : 0, "flatCharIndex" : 1517 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1517 }, { "string" : "은", "attrId" : 0, "flatCharIndex" : 1518 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1519 }, { "string" : "네", "attrId" : 0, "flatCharIndex" : 1520 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1520 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 1521 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1521 }, { "string" : "버", "attrId" : 0, "flatCharIndex" : 1522 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1522 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 1523 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1523 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 1524 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1525 }, { "string" : "배", "attrId" : 0, "flatCharIndex" : 1526 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1526 }, { "string" : "포", "attrId" : 0, "flatCharIndex" : 1527 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1527 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 1528 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1529 }, { "string" : "나", "attrId" : 0, "flatCharIndex" : 1530 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1530 }, { "string" : "눔", "attrId" : 0, "flatCharIndex" : 1531 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1531 }, { "string" : "명", "attrId" : 0, "flatCharIndex" : 1532 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1532 }, { "string" : "조", "attrId" : 0, "flatCharIndex" : 1533 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1534 }, { "string" : "및", "attrId" : 0, "flatCharIndex" : 1535 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1536 }, { "string" : "나", "attrId" : 0, "flatCharIndex" : 1537 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1537 }, { "string" : "눔", "attrId" : 0, "flatCharIndex" : 1538 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1538 }, { "string" : "고", "attrId" : 0, "flatCharIndex" : 1539 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1539 }, { "string" : "딕", "attrId" : 0, "flatCharIndex" : 1540 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1540 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 1541 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1541 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 1542 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1542 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 1543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1544 }, { "string" : "영", "attrId" : 0, "flatCharIndex" : 1545 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1545 }, { "string" : "어", "attrId" : 0, "flatCharIndex" : 1546 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1546 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1547 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 1548 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1548 }, { "string" : "본", "attrId" : 0, "flatCharIndex" : 1549 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1550 }, { "string" : "글", "attrId" : 0, "flatCharIndex" : 1551 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1551 }, { "string" : "꼴", "attrId" : 0, "flatCharIndex" : 1552 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1552 }, { "string" : "은", "attrId" : 0, "flatCharIndex" : 1553 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1554 }, { "string" : "`", "attrId" : 0, "flatCharIndex" : 1555 }, { "string" : "C", "attrId" : 0, "flatCharIndex" : 1556 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1557 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1558 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1559 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1560 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1561 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 1562 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1564 }, { "string" : "M", "attrId" : 0, "flatCharIndex" : 1565 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1566 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 1567 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1568 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1569 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1570 }, { "string" : "'", "attrId" : 0, "flatCharIndex" : 1571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1572 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 1573 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1573 }, { "string" : "고", "attrId" : 0, "flatCharIndex" : 1574 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1574 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1576 }, { "string" : "필", "attrId" : 0, "flatCharIndex" : 1577 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1577 }, { "string" : "요", "attrId" : 0, "flatCharIndex" : 1578 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1578 }, { "string" : "할", "attrId" : 0, "flatCharIndex" : 1579 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1580 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 1581 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1581 }, { "string" : "우", "attrId" : 0, "flatCharIndex" : 1582 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1583 }, { "string" : ">", "attrId" : 53, "flatCharIndex" : 1584 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 1585 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1586 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1587 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1588 }, { "string" : "해", "attrId" : 0, "flatCharIndex" : 1589 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1589 }, { "string" : "당", "attrId" : 0, "flatCharIndex" : 1590 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1591 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1592 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1593 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1594 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 1595 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1596 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1597 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1599 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 1600 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1601 }, { "string" : "사", "attrId" : 0, "flatCharIndex" : 1602 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1602 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 1603 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1603 }, { "string" : "하", "attrId" : 0, "flatCharIndex" : 1604 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1604 }, { "string" : "여", "attrId" : 0, "flatCharIndex" : 1605 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1606 }, { "string" : "T", "attrId" : 0, "flatCharIndex" : 1607 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1608 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1609 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1610 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1612 }, { "string" : "N", "attrId" : 0, "flatCharIndex" : 1613 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1614 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 1615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1616 }, { "string" : "R", "attrId" : 0, "flatCharIndex" : 1617 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1618 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1619 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1620 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1622 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 1623 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1624 }, { "string" : "사", "attrId" : 0, "flatCharIndex" : 1625 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1625 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 1626 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1626 }, { "string" : "할", "attrId" : 0, "flatCharIndex" : 1627 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1628 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 1629 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1630 }, { "string" : "있", "attrId" : 0, "flatCharIndex" : 1631 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1631 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 1632 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1632 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 1633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1634 }, { "string" : "사", "attrId" : 0, "flatCharIndex" : 1635 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1635 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 1636 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1636 }, { "string" : "방", "attrId" : 0, "flatCharIndex" : 1637 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1637 }, { "string" : "법", "attrId" : 0, "flatCharIndex" : 1638 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1639 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 1640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1641 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1642 }, { "string" : "f", "attrId" : 93, "flatCharIndex" : 1643 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 1644 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 1645 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1646 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 1647 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 1648 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1649 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1650 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1651 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1652 }, { "string" : "u", "attrId" : 93, "flatCharIndex" : 1653 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1654 }, { "string" : "l", "attrId" : 93, "flatCharIndex" : 1655 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1656 }, { "string" : "h", "attrId" : 92, "flatCharIndex" : 1657 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 1658 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 1659 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 1660 }, { "string" : ":", "attrId" : 92, "flatCharIndex" : 1661 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 1662 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 1663 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 1664 }, { "string" : "a", "attrId" : 92, "flatCharIndex" : 1665 }, { "string" : "s", "attrId" : 92, "flatCharIndex" : 1666 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 1667 }, { "string" : "e", "attrId" : 92, "flatCharIndex" : 1668 }, { "string" : "b", "attrId" : 92, "flatCharIndex" : 1669 }, { "string" : "i", "attrId" : 92, "flatCharIndex" : 1670 }, { "string" : "n", "attrId" : 92, "flatCharIndex" : 1671 }, { "string" : ".", "attrId" : 92, "flatCharIndex" : 1672 }, { "string" : "c", "attrId" : 92, "flatCharIndex" : 1673 }, { "string" : "o", "attrId" : 92, "flatCharIndex" : 1674 }, { "string" : "m", "attrId" : 92, "flatCharIndex" : 1675 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 1676 }, { "string" : "f", "attrId" : 92, "flatCharIndex" : 1677 }, { "string" : "Z", "attrId" : 92, "flatCharIndex" : 1678 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 1679 }, { "string" : "h", "attrId" : 92, "flatCharIndex" : 1680 }, { "string" : "i", "attrId" : 92, "flatCharIndex" : 1681 }, { "string" : "X", "attrId" : 92, "flatCharIndex" : 1682 }, { "string" : "G", "attrId" : 92, "flatCharIndex" : 1683 }, { "string" : "T", "attrId" : 92, "flatCharIndex" : 1684 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1685 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1719 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 1720 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 1721 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 1722 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1723 }, { "string" : "\\", "attrId" : 164, "flatCharIndex" : 1724 }, { "string" : "e", "attrId" : 164, "flatCharIndex" : 1725 }, { "string" : "n", "attrId" : 164, "flatCharIndex" : 1726 }, { "string" : "d", "attrId" : 164, "flatCharIndex" : 1727 }, { "string" : "{", "attrId" : 70, "flatCharIndex" : 1728 }, { "string" : "f", "attrId" : 70, "flatCharIndex" : 1729 }, { "string" : "r", "attrId" : 70, "flatCharIndex" : 1730 }, { "string" : "a", "attrId" : 70, "flatCharIndex" : 1731 }, { "string" : "m", "attrId" : 70, "flatCharIndex" : 1732 }, { "string" : "e", "attrId" : 70, "flatCharIndex" : 1733 }, { "string" : "}", "attrId" : 70, "flatCharIndex" : 1734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1802 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1822 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1842 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1872 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 1873 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 1874 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1875 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1876 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 1877 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 1878 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 1879 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 1880 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 1881 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 1882 }, { "string" : "c", "attrId" : 96, "flatCharIndex" : 1883 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 1884 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 1885 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 1886 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 1887 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1888 }, { "string" : "열", "attrId" : 0, "flatCharIndex" : 1889 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1889 }, { "string" : "거", "attrId" : 0, "flatCharIndex" : 1890 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1891 }, { "string" : "환", "attrId" : 0, "flatCharIndex" : 1892 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1892 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 1893 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 1893 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1951 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1971 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1991 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2021 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 2022 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 2023 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 2024 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2025 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2026 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 2027 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2028 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2029 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2030 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2031 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2032 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 2033 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 2034 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 2035 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 2036 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 2037 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2038 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2039 }, { "string" : "열", "attrId" : 0, "flatCharIndex" : 2040 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2040 }, { "string" : "거", "attrId" : 0, "flatCharIndex" : 2041 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2042 }, { "string" : "환", "attrId" : 0, "flatCharIndex" : 2043 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2043 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 2044 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2045 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 2046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2047 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2048 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2049 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2050 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 2051 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2052 }, { "string" : "z", "attrId" : 0, "flatCharIndex" : 2053 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2055 }, { "string" : "\/", "attrId" : 0, "flatCharIndex" : 2056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2057 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2058 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2059 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2060 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 2061 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2062 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2063 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2064 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2065 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2066 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2100 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2120 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2140 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2170 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 2171 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 2172 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 2173 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2176 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 2177 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2177 }, { "string" : "례", "attrId" : 0, "flatCharIndex" : 2178 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2179 }, { "string" : "및", "attrId" : 0, "flatCharIndex" : 2180 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2181 }, { "string" : "코", "attrId" : 0, "flatCharIndex" : 2182 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2182 }, { "string" : "드", "attrId" : 0, "flatCharIndex" : 2183 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2184 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 2185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2186 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2187 }, { "string" : "f", "attrId" : 93, "flatCharIndex" : 2188 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 2189 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 2190 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2191 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2192 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 2193 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2194 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2195 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2196 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2197 }, { "string" : "u", "attrId" : 93, "flatCharIndex" : 2198 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2199 }, { "string" : "l", "attrId" : 93, "flatCharIndex" : 2200 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2201 }, { "string" : "h", "attrId" : 92, "flatCharIndex" : 2202 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 2203 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 2204 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 2205 }, { "string" : ":", "attrId" : 92, "flatCharIndex" : 2206 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 2207 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 2208 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 2209 }, { "string" : "a", "attrId" : 92, "flatCharIndex" : 2210 }, { "string" : "s", "attrId" : 92, "flatCharIndex" : 2211 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 2212 }, { "string" : "e", "attrId" : 92, "flatCharIndex" : 2213 }, { "string" : "b", "attrId" : 92, "flatCharIndex" : 2214 }, { "string" : "i", "attrId" : 92, "flatCharIndex" : 2215 }, { "string" : "n", "attrId" : 92, "flatCharIndex" : 2216 }, { "string" : ".", "attrId" : 92, "flatCharIndex" : 2217 }, { "string" : "c", "attrId" : 92, "flatCharIndex" : 2218 }, { "string" : "o", "attrId" : 92, "flatCharIndex" : 2219 }, { "string" : "m", "attrId" : 92, "flatCharIndex" : 2220 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 2221 }, { "string" : "Q", "attrId" : 92, "flatCharIndex" : 2222 }, { "string" : "9", "attrId" : 92, "flatCharIndex" : 2223 }, { "string" : "S", "attrId" : 92, "flatCharIndex" : 2224 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 2225 }, { "string" : "m", "attrId" : 92, "flatCharIndex" : 2226 }, { "string" : "C", "attrId" : 92, "flatCharIndex" : 2227 }, { "string" : "g", "attrId" : 92, "flatCharIndex" : 2228 }, { "string" : "J", "attrId" : 92, "flatCharIndex" : 2229 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2230 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2248 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2268 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2288 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2318 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 2319 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 2320 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 2321 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2324 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2325 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 2326 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2327 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2328 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2329 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2330 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2331 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 2332 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 2333 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 2334 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 2335 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 2336 }, { "string" : "z", "attrId" : 96, "flatCharIndex" : 2337 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 2338 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2401 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2421 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2441 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2471 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 2472 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 2473 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 2474 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2479 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2480 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2481 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2482 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2483 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2485 }, { "string" : "본", "attrId" : 0, "flatCharIndex" : 2486 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2486 }, { "string" : "관", "attrId" : 0, "flatCharIndex" : 2487 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2487 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 2488 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2488 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 2489 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2489 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 2490 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2491 }, { "string" : "주", "attrId" : 0, "flatCharIndex" : 2492 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2492 }, { "string" : "로", "attrId" : 0, "flatCharIndex" : 2493 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2494 }, { "string" : "국", "attrId" : 0, "flatCharIndex" : 2495 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2495 }, { "string" : "어", "attrId" : 0, "flatCharIndex" : 2496 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2496 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2498 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 2499 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2499 }, { "string" : "학", "attrId" : 0, "flatCharIndex" : 2500 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2500 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2502 }, { "string" : "영", "attrId" : 0, "flatCharIndex" : 2503 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2503 }, { "string" : "어", "attrId" : 0, "flatCharIndex" : 2504 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2505 }, { "string" : "과", "attrId" : 0, "flatCharIndex" : 2506 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2506 }, { "string" : "목", "attrId" : 0, "flatCharIndex" : 2507 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2507 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 2508 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2509 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 2510 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2510 }, { "string" : "강", "attrId" : 0, "flatCharIndex" : 2511 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2511 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 2512 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2512 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 2513 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2513 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 2514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2534 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2554 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2574 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2604 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 2605 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 2606 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 2607 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2612 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2613 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2614 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2615 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2616 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2618 }, { "string" : "S", "attrId" : 0, "flatCharIndex" : 2619 }, { "string" : "R", "attrId" : 0, "flatCharIndex" : 2620 }, { "string" : "C", "attrId" : 0, "flatCharIndex" : 2621 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 2622 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2622 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 2623 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2623 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 2624 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2625 }, { "string" : "물", "attrId" : 0, "flatCharIndex" : 2626 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2626 }, { "string" : "리", "attrId" : 0, "flatCharIndex" : 2627 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2627 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 2628 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2629 }, { "string" : "비", "attrId" : 0, "flatCharIndex" : 2630 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2630 }, { "string" : "롯", "attrId" : 0, "flatCharIndex" : 2631 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2631 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 2632 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2633 }, { "string" : "과", "attrId" : 0, "flatCharIndex" : 2634 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2634 }, { "string" : "학", "attrId" : 0, "flatCharIndex" : 2635 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2636 }, { "string" : "과", "attrId" : 0, "flatCharIndex" : 2637 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2637 }, { "string" : "목", "attrId" : 0, "flatCharIndex" : 2638 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2638 }, { "string" : "들", "attrId" : 0, "flatCharIndex" : 2639 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2639 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 2640 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2641 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 2642 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2642 }, { "string" : "강", "attrId" : 0, "flatCharIndex" : 2643 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2643 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 2644 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2644 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 2645 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2645 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 2646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2668 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2688 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2708 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2738 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 2739 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 2740 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 2741 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2746 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2747 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2748 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2749 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2750 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2752 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 2753 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2753 }, { "string" : "숙", "attrId" : 0, "flatCharIndex" : 2754 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2754 }, { "string" : "사", "attrId" : 0, "flatCharIndex" : 2755 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2755 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 2756 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2756 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 2757 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2757 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 2758 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2759 }, { "string" : "잠", "attrId" : 0, "flatCharIndex" : 2760 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2760 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 2761 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2762 }, { "string" : "잘", "attrId" : 0, "flatCharIndex" : 2763 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2764 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 2765 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2766 }, { "string" : "있", "attrId" : 0, "flatCharIndex" : 2767 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2767 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 2768 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 2768 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 2769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2809 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2829 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2849 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2879 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 2880 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 2881 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 2882 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2885 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2886 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2887 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2888 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 2889 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2890 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 2891 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 2892 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 2893 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 2894 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 2895 }, { "string" : "z", "attrId" : 96, "flatCharIndex" : 2896 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 2897 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2962 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2982 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3002 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3032 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 3033 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 3034 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 3035 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3038 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3039 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 3040 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3041 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3042 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3043 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 3044 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3045 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 3046 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 3047 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 3048 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 3049 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 3050 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 3051 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 3052 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 3053 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 3054 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3115 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3135 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3155 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3185 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 3186 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 3187 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 3188 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3193 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3194 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3195 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3196 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3197 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3199 }, { "string" : "측", "attrId" : 0, "flatCharIndex" : 3200 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3200 }, { "string" : "정", "attrId" : 0, "flatCharIndex" : 3201 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3201 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 3202 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3203 }, { "string" : "개", "attrId" : 0, "flatCharIndex" : 3204 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3204 }, { "string" : "시", "attrId" : 0, "flatCharIndex" : 3205 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3205 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 3206 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3206 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 3207 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3207 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 3208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3261 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3281 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3301 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3331 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 3332 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 3333 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 3334 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3339 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3340 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3341 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3342 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3343 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3345 }, { "string" : "일", "attrId" : 0, "flatCharIndex" : 3346 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3346 }, { "string" : "정", "attrId" : 0, "flatCharIndex" : 3347 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3347 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 3348 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3349 }, { "string" : "전", "attrId" : 0, "flatCharIndex" : 3350 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3350 }, { "string" : "압", "attrId" : 0, "flatCharIndex" : 3351 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3351 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 3352 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3353 }, { "string" : "가", "attrId" : 0, "flatCharIndex" : 3354 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3354 }, { "string" : "하", "attrId" : 0, "flatCharIndex" : 3355 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3355 }, { "string" : "고", "attrId" : 0, "flatCharIndex" : 3356 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3357 }, { "string" : "온", "attrId" : 0, "flatCharIndex" : 3358 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3358 }, { "string" : "도", "attrId" : 0, "flatCharIndex" : 3359 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3359 }, { "string" : "가", "attrId" : 0, "flatCharIndex" : 3360 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3361 }, { "string" : "평", "attrId" : 0, "flatCharIndex" : 3362 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3362 }, { "string" : "형", "attrId" : 0, "flatCharIndex" : 3363 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3363 }, { "string" : "상", "attrId" : 0, "flatCharIndex" : 3364 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3364 }, { "string" : "태", "attrId" : 0, "flatCharIndex" : 3365 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3365 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 3366 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3367 }, { "string" : "도", "attrId" : 0, "flatCharIndex" : 3368 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3368 }, { "string" : "달", "attrId" : 0, "flatCharIndex" : 3369 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3369 }, { "string" : "할", "attrId" : 0, "flatCharIndex" : 3370 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3371 }, { "string" : "때", "attrId" : 0, "flatCharIndex" : 3372 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3372 }, { "string" : "까", "attrId" : 0, "flatCharIndex" : 3373 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3373 }, { "string" : "지", "attrId" : 0, "flatCharIndex" : 3374 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3375 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 3376 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3376 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 3377 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3377 }, { "string" : "린", "attrId" : 0, "flatCharIndex" : 3378 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3378 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 3379 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3379 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 3380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3387 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3407 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3427 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3457 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 3458 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 3459 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 3460 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3465 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3466 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3467 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3468 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3469 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3471 }, { "string" : "전", "attrId" : 0, "flatCharIndex" : 3472 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3472 }, { "string" : "원", "attrId" : 0, "flatCharIndex" : 3473 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3474 }, { "string" : "공", "attrId" : 0, "flatCharIndex" : 3475 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3475 }, { "string" : "급", "attrId" : 0, "flatCharIndex" : 3476 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3476 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 3477 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3478 }, { "string" : "끊", "attrId" : 0, "flatCharIndex" : 3479 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3479 }, { "string" : "고", "attrId" : 0, "flatCharIndex" : 3480 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3480 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3482 }, { "string" : "측", "attrId" : 0, "flatCharIndex" : 3483 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3483 }, { "string" : "정", "attrId" : 0, "flatCharIndex" : 3484 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3484 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 3485 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3486 }, { "string" : "종", "attrId" : 0, "flatCharIndex" : 3487 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3487 }, { "string" : "료", "attrId" : 0, "flatCharIndex" : 3488 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3488 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 3489 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3489 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 3490 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3490 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 3491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3526 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3546 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3566 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3596 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 3597 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 3598 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 3599 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3602 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3603 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3604 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 3605 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 3606 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3607 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 3608 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 3609 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 3610 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 3611 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 3612 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 3613 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 3614 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 3615 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 3616 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3679 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3699 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3719 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3749 } ], [ { "string" : "2", "attrId" : 54, "flatCharIndex" : 3750 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 3751 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 3752 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3753 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3754 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3755 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 3756 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 3757 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3758 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 3759 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 3760 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 3761 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 3762 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 3763 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3832 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3852 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3872 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3902 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 3903 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 3904 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 3905 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3906 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 3907 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 3908 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 3909 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 3910 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 3911 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 3912 }, { "string" : "c", "attrId" : 96, "flatCharIndex" : 3913 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 3914 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 3915 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 3916 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 3917 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3918 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 3919 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3919 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 3920 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3921 }, { "string" : "입", "attrId" : 0, "flatCharIndex" : 3922 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3922 }, { "string" : "력", "attrId" : 0, "flatCharIndex" : 3923 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 3923 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3981 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4001 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4021 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4051 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 4052 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 4053 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 4054 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4055 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4056 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 4057 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4058 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4059 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4060 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 4061 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4062 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 4063 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 4064 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 4065 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 4066 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 4067 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4068 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 4069 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4070 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4071 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4072 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 4073 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4074 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4075 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4076 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4077 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4078 }, { "string" : "`", "attrId" : 0, "flatCharIndex" : 4079 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4080 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4081 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4082 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 4083 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4084 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4085 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4086 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4087 }, { "string" : "'", "attrId" : 0, "flatCharIndex" : 4088 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4134 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4154 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4174 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4204 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 4205 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 4206 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 4207 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4210 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 4211 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4211 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 4212 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4213 }, { "string" : "입", "attrId" : 0, "flatCharIndex" : 4214 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4214 }, { "string" : "력", "attrId" : 0, "flatCharIndex" : 4215 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4215 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 4216 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4217 }, { "string" : "위", "attrId" : 0, "flatCharIndex" : 4218 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4218 }, { "string" : "해", "attrId" : 0, "flatCharIndex" : 4219 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4219 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 4220 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4220 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 4221 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4222 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4223 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4224 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4225 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4226 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4227 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4228 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 4229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4230 }, { "string" : "패", "attrId" : 0, "flatCharIndex" : 4231 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4231 }, { "string" : "키", "attrId" : 0, "flatCharIndex" : 4232 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4232 }, { "string" : "지", "attrId" : 0, "flatCharIndex" : 4233 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4233 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 4234 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4235 }, { "string" : "불", "attrId" : 0, "flatCharIndex" : 4236 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4236 }, { "string" : "러", "attrId" : 0, "flatCharIndex" : 4237 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4237 }, { "string" : "야", "attrId" : 0, "flatCharIndex" : 4238 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4239 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 4240 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4240 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 4241 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4241 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 4242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4269 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4289 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4309 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4339 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 4340 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 4341 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 4342 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4345 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4346 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 4347 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4348 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4349 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4350 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 4351 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4352 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 4353 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 4354 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 4355 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 4356 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 4357 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 4358 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 4359 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 4360 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 4361 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4422 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4442 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4462 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4492 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 4493 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 4494 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 4495 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4500 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4501 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4502 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4503 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4504 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4506 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4507 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 4508 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 4509 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 4510 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 4511 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 4512 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4513 }, { "string" : "(", "attrId" : 96, "flatCharIndex" : 4514 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 4515 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 4516 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 4517 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 4518 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 4519 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4520 }, { "string" : ")", "attrId" : 96, "flatCharIndex" : 4521 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 4522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4523 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 4524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4525 }, { "string" : "행", "attrId" : 0, "flatCharIndex" : 4526 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4527 }, { "string" : "내", "attrId" : 0, "flatCharIndex" : 4528 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4529 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 4530 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4530 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 4531 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4532 }, { "string" : "\\", "attrId" : 92, "flatCharIndex" : 4533 }, { "string" : "\\", "attrId" : 92, "flatCharIndex" : 4534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4571 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4591 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4611 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4641 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 4642 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 4643 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 4644 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4649 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4650 }, { "string" : "(", "attrId" : 96, "flatCharIndex" : 4651 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 4652 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 4653 }, { "string" : "^", "attrId" : 96, "flatCharIndex" : 4654 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4655 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4656 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4657 }, { "string" : "p", "attrId" : 93, "flatCharIndex" : 4658 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4659 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4660 }, { "string" : "+", "attrId" : 103, "flatCharIndex" : 4661 }, { "string" : "1", "attrId" : 103, "flatCharIndex" : 4662 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 4663 }, { "string" : "0", "attrId" : 103, "flatCharIndex" : 4664 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 4665 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4666 }, { "string" : ")", "attrId" : 96, "flatCharIndex" : 4667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4724 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4744 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4764 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4794 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 4795 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 4796 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 4797 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4802 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4803 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4804 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4805 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4806 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4808 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4809 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 4810 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 4811 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 4812 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 4813 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 4814 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4815 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 4816 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 4817 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 4818 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 4819 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 4820 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 4821 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4822 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4823 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 4824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4825 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 4826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4827 }, { "string" : "번", "attrId" : 0, "flatCharIndex" : 4828 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4828 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 4829 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4830 }, { "string" : "없", "attrId" : 0, "flatCharIndex" : 4831 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4831 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 4832 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4833 }, { "string" : "표", "attrId" : 0, "flatCharIndex" : 4834 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4834 }, { "string" : "시", "attrId" : 0, "flatCharIndex" : 4835 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4835 }, { "string" : "형", "attrId" : 0, "flatCharIndex" : 4836 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4837 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 4838 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4838 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 4839 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 4839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4868 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4888 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4908 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4938 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 4939 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 4940 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 4941 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4946 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4947 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 4948 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 4949 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 4950 }, { "string" : "^", "attrId" : 96, "flatCharIndex" : 4951 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4952 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4953 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4954 }, { "string" : "p", "attrId" : 93, "flatCharIndex" : 4955 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4956 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4957 }, { "string" : "+", "attrId" : 103, "flatCharIndex" : 4958 }, { "string" : "1", "attrId" : 103, "flatCharIndex" : 4959 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 4960 }, { "string" : "0", "attrId" : 103, "flatCharIndex" : 4961 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 4962 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 4963 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5021 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5041 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5061 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5091 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 5092 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 5093 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 5094 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5099 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5100 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5101 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5102 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5103 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 5104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5105 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 5106 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 5107 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 5108 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 5109 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 5110 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 5111 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 5112 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 5113 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 5114 }, { "string" : "g", "attrId" : 96, "flatCharIndex" : 5115 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 5116 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 5117 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5118 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 5119 }, { "string" : "q", "attrId" : 96, "flatCharIndex" : 5120 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 5121 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 5122 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 5123 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 5124 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 5125 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 5126 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5127 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 5128 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 5129 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 5130 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 5131 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 5132 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 5133 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 5134 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 5135 }, { "string" : "d", "attrId" : 96, "flatCharIndex" : 5136 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5137 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 5138 }, { "string" : "q", "attrId" : 96, "flatCharIndex" : 5139 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 5140 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 5141 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 5142 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 5143 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 5144 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 5145 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5146 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 5147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5174 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5194 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5214 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5244 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 5245 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 5246 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 5247 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5252 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 5253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5254 }, { "string" : "번", "attrId" : 0, "flatCharIndex" : 5255 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5255 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 5256 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5257 }, { "string" : "있", "attrId" : 0, "flatCharIndex" : 5258 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5258 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 5259 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5260 }, { "string" : "표", "attrId" : 0, "flatCharIndex" : 5261 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5261 }, { "string" : "시", "attrId" : 0, "flatCharIndex" : 5262 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5262 }, { "string" : "형", "attrId" : 0, "flatCharIndex" : 5263 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5264 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 5265 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5265 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 5266 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5318 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5338 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5358 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5388 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 5389 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5390 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 5391 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5396 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5397 }, { "string" : "f", "attrId" : 93, "flatCharIndex" : 5398 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 5399 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 5400 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5401 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 5402 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 5403 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5404 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5405 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5406 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5407 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 5408 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5409 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5410 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5411 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5412 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5413 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 5414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5415 }, { "string" : "환", "attrId" : 0, "flatCharIndex" : 5416 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5416 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 5417 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5418 }, { "string" : "외", "attrId" : 0, "flatCharIndex" : 5419 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5419 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 5420 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5420 }, { "string" : "도", "attrId" : 0, "flatCharIndex" : 5421 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5422 }, { "string" : "여", "attrId" : 0, "flatCharIndex" : 5423 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5423 }, { "string" : "럿", "attrId" : 0, "flatCharIndex" : 5424 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5425 }, { "string" : "있", "attrId" : 0, "flatCharIndex" : 5426 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5426 }, { "string" : "음", "attrId" : 0, "flatCharIndex" : 5427 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5427 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 5428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5429 }, { "string" : "부", "attrId" : 0, "flatCharIndex" : 5430 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5430 }, { "string" : "록", "attrId" : 0, "flatCharIndex" : 5431 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5432 }, { "string" : "참", "attrId" : 0, "flatCharIndex" : 5433 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5433 }, { "string" : "조", "attrId" : 0, "flatCharIndex" : 5434 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5435 }, { "string" : "바", "attrId" : 0, "flatCharIndex" : 5436 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5436 }, { "string" : "람", "attrId" : 0, "flatCharIndex" : 5437 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 5437 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 5438 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5456 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5476 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5496 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5526 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 5527 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5528 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5529 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5534 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5535 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 5536 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5537 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 5538 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5539 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 5540 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5541 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 5542 }, { "string" : "q", "attrId" : 103, "flatCharIndex" : 5543 }, { "string" : "u", "attrId" : 103, "flatCharIndex" : 5544 }, { "string" : "a", "attrId" : 103, "flatCharIndex" : 5545 }, { "string" : "t", "attrId" : 103, "flatCharIndex" : 5546 }, { "string" : "i", "attrId" : 103, "flatCharIndex" : 5547 }, { "string" : "o", "attrId" : 103, "flatCharIndex" : 5548 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 5549 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5609 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5629 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5649 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5679 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 5680 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5681 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 5682 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5683 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 5684 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 5685 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 5686 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 5687 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 5688 }, { "string" : "^", "attrId" : 96, "flatCharIndex" : 5689 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5690 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5691 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5692 }, { "string" : "p", "attrId" : 93, "flatCharIndex" : 5693 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5694 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5695 }, { "string" : "+", "attrId" : 103, "flatCharIndex" : 5696 }, { "string" : "1", "attrId" : 103, "flatCharIndex" : 5697 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 5698 }, { "string" : "0", "attrId" : 103, "flatCharIndex" : 5699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5762 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5782 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5802 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5832 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 5833 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5834 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 5835 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5836 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 5837 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 5838 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 5839 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 5840 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5841 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5842 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 5843 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 5844 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5845 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 5846 }, { "string" : "q", "attrId" : 103, "flatCharIndex" : 5847 }, { "string" : "u", "attrId" : 103, "flatCharIndex" : 5848 }, { "string" : "a", "attrId" : 103, "flatCharIndex" : 5849 }, { "string" : "t", "attrId" : 103, "flatCharIndex" : 5850 }, { "string" : "i", "attrId" : 103, "flatCharIndex" : 5851 }, { "string" : "o", "attrId" : 103, "flatCharIndex" : 5852 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 5853 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5915 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5935 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5955 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5985 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 5986 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5987 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 5988 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5991 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5992 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5993 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 5994 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 5995 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5996 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 5997 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 5998 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 5999 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 6000 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 6001 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 6002 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 6003 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 6004 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 6005 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6068 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6088 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6108 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6138 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 6139 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6140 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 6141 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6144 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 6145 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6145 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 6146 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6146 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 6147 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6148 }, { "string" : "붙", "attrId" : 0, "flatCharIndex" : 6149 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6149 }, { "string" : "은", "attrId" : 0, "flatCharIndex" : 6150 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6151 }, { "string" : "번", "attrId" : 0, "flatCharIndex" : 6152 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6152 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 6153 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6153 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 6154 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6155 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6156 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6157 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6158 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6159 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6160 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6161 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6162 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 6163 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6164 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6165 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 6166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6167 }, { "string" : "할", "attrId" : 0, "flatCharIndex" : 6168 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6169 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 6170 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6171 }, { "string" : "있", "attrId" : 0, "flatCharIndex" : 6172 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6172 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 6173 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6173 }, { "string" : "데", "attrId" : 0, "flatCharIndex" : 6174 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6174 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6176 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 6177 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6177 }, { "string" : "건", "attrId" : 0, "flatCharIndex" : 6178 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6179 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 6180 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6180 }, { "string" : "음", "attrId" : 0, "flatCharIndex" : 6181 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6182 }, { "string" : "시", "attrId" : 0, "flatCharIndex" : 6183 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6183 }, { "string" : "간", "attrId" : 0, "flatCharIndex" : 6184 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6184 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 6185 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6185 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 6186 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 6187 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 6188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6201 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6221 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6241 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6271 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 6272 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6273 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 6274 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6275 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6276 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6277 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 6278 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 6279 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6280 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 6281 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 6282 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 6283 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 6284 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 6285 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6354 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6374 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6394 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6424 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 6425 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6426 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 6427 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6428 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6429 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 6430 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6431 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6432 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6433 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 6434 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6435 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 6436 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 6437 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 6438 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 6439 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 6440 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6441 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 6442 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6443 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6444 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6445 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 6446 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6447 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 6448 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6449 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 6450 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6451 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 6452 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6452 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 6453 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6454 }, { "string" : "문", "attrId" : 0, "flatCharIndex" : 6455 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6455 }, { "string" : "법", "attrId" : 0, "flatCharIndex" : 6456 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6456 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6503 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6523 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6543 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6573 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 6574 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6575 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 6576 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6579 }, { "string" : "T", "attrId" : 0, "flatCharIndex" : 6580 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6581 }, { "string" : "X", "attrId" : 0, "flatCharIndex" : 6582 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6583 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6584 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 6585 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6586 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6587 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6588 }, { "string" : "의", "attrId" : 0, "flatCharIndex" : 6589 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6590 }, { "string" : "왼", "attrId" : 0, "flatCharIndex" : 6591 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6591 }, { "string" : "쪽", "attrId" : 0, "flatCharIndex" : 6592 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6593 }, { "string" : "바", "attrId" : 0, "flatCharIndex" : 6594 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6594 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 6595 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6595 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 6596 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6597 }, { "string" : "전", "attrId" : 0, "flatCharIndex" : 6598 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6598 }, { "string" : "부", "attrId" : 0, "flatCharIndex" : 6599 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6600 }, { "string" : "찾", "attrId" : 0, "flatCharIndex" : 6601 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6601 }, { "string" : "아", "attrId" : 0, "flatCharIndex" : 6602 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6602 }, { "string" : "볼", "attrId" : 0, "flatCharIndex" : 6603 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6604 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 6605 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6606 }, { "string" : "있", "attrId" : 0, "flatCharIndex" : 6607 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6607 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 6608 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 6608 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 6609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6642 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6662 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6682 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6712 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 6713 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6714 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 6715 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6718 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6719 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 6720 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6721 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6722 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6723 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 6724 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6725 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 6726 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 6727 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 6728 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 6729 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 6730 }, { "string" : "z", "attrId" : 96, "flatCharIndex" : 6731 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 6732 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6795 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6815 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6835 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6865 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 6866 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 6867 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 6868 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6873 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6874 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6875 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6876 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6877 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 6878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6879 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 6880 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 6881 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 6882 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 6883 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 6884 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 6885 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 6886 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 6887 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 6888 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 6889 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6890 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 6891 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 6892 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 6893 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 6894 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 6895 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6896 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 6897 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6899 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 6900 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 6901 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 6902 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 6903 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 6904 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 6905 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 6906 }, { "string" : "l", "attrId" : 96, "flatCharIndex" : 6907 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 6908 }, { "string" : "g", "attrId" : 96, "flatCharIndex" : 6909 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6910 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 6911 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 6912 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 6913 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 6914 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 6915 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6916 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 6917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6948 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6968 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6988 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7018 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 7019 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7020 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 7021 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7026 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 7027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7028 }, { "string" : "삼", "attrId" : 0, "flatCharIndex" : 7029 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7029 }, { "string" : "각", "attrId" : 0, "flatCharIndex" : 7030 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7030 }, { "string" : "함", "attrId" : 0, "flatCharIndex" : 7031 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7031 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 7032 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7032 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7034 }, { "string" : "로", "attrId" : 0, "flatCharIndex" : 7035 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7035 }, { "string" : "그", "attrId" : 0, "flatCharIndex" : 7036 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7036 }, { "string" : "함", "attrId" : 0, "flatCharIndex" : 7037 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7037 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 7038 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7038 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 7039 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7040 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 7041 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7041 }, { "string" : "울", "attrId" : 0, "flatCharIndex" : 7042 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7042 }, { "string" : "여", "attrId" : 0, "flatCharIndex" : 7043 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7044 }, { "string" : "쓰", "attrId" : 0, "flatCharIndex" : 7045 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7045 }, { "string" : "면", "attrId" : 0, "flatCharIndex" : 7046 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7047 }, { "string" : "안", "attrId" : 0, "flatCharIndex" : 7048 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7048 }, { "string" : "되", "attrId" : 0, "flatCharIndex" : 7049 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7049 }, { "string" : "므", "attrId" : 0, "flatCharIndex" : 7050 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7050 }, { "string" : "로", "attrId" : 0, "flatCharIndex" : 7051 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7052 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 7053 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7053 }, { "string" : "렇", "attrId" : 0, "flatCharIndex" : 7054 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7054 }, { "string" : "게", "attrId" : 0, "flatCharIndex" : 7055 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7056 }, { "string" : "써", "attrId" : 0, "flatCharIndex" : 7057 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7057 }, { "string" : "야", "attrId" : 0, "flatCharIndex" : 7058 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7059 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 7060 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7060 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 7061 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7061 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 7062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7076 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7096 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7116 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7146 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 7147 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7148 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7149 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7154 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7155 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7156 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7157 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7158 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7160 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 7161 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 7162 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 7163 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 7164 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 7165 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 7166 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 7167 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 7168 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 7169 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 7170 }, { "string" : "c", "attrId" : 96, "flatCharIndex" : 7171 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7172 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 7173 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 7174 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 7175 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7176 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7177 }, { "string" : "d", "attrId" : 96, "flatCharIndex" : 7178 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 7179 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 7180 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7181 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 7182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7229 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7249 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7269 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7299 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 7300 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7301 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 7302 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7307 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 7308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7309 }, { "string" : "분", "attrId" : 0, "flatCharIndex" : 7310 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7310 }, { "string" : "자", "attrId" : 0, "flatCharIndex" : 7311 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7312 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7313 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7314 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 7315 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7317 }, { "string" : "분", "attrId" : 0, "flatCharIndex" : 7318 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7318 }, { "string" : "모", "attrId" : 0, "flatCharIndex" : 7319 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7320 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7321 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7322 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7323 }, { "string" : "인", "attrId" : 0, "flatCharIndex" : 7324 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7325 }, { "string" : "분", "attrId" : 0, "flatCharIndex" : 7326 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7326 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 7327 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7375 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7395 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7415 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7445 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 7446 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7447 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 7448 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7453 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7454 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7455 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7456 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7457 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7459 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 7460 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 7461 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 7462 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 7463 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 7464 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 7465 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 7466 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 7467 }, { "string" : "q", "attrId" : 96, "flatCharIndex" : 7468 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 7469 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 7470 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 7471 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 7472 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 7473 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7474 }, { "string" : "x", "attrId" : 96, "flatCharIndex" : 7475 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7476 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 7477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7528 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7548 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7568 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7598 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 7599 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7600 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 7601 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7606 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 7607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7608 }, { "string" : "$", "attrId" : 96, "flatCharIndex" : 7609 }, { "string" : "x", "attrId" : 103, "flatCharIndex" : 7610 }, { "string" : "$", "attrId" : 96, "flatCharIndex" : 7611 }, { "string" : "의", "attrId" : 0, "flatCharIndex" : 7612 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7613 }, { "string" : "$", "attrId" : 96, "flatCharIndex" : 7614 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 7615 }, { "string" : "$", "attrId" : 96, "flatCharIndex" : 7616 }, { "string" : "제", "attrId" : 0, "flatCharIndex" : 7617 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7617 }, { "string" : "곱", "attrId" : 0, "flatCharIndex" : 7618 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7618 }, { "string" : "근", "attrId" : 0, "flatCharIndex" : 7619 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7677 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7697 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7717 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7747 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 7748 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7749 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 7750 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7755 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7756 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7757 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7758 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7759 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7761 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 7762 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 7763 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 7764 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 7765 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 7766 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 7767 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 7768 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 7769 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 7770 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 7771 }, { "string" : "_", "attrId" : 96, "flatCharIndex" : 7772 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7773 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 7774 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 7775 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 7776 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 7777 }, { "string" : "1", "attrId" : 96, "flatCharIndex" : 7778 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7779 }, { "string" : "^", "attrId" : 96, "flatCharIndex" : 7780 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7781 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 7782 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7783 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7784 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 7785 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 7786 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 7787 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 7788 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 7789 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7790 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 7791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7830 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7850 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7870 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7900 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 7901 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7902 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 7903 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7908 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 7909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7910 }, { "string" : "시", "attrId" : 0, "flatCharIndex" : 7911 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7911 }, { "string" : "그", "attrId" : 0, "flatCharIndex" : 7912 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7912 }, { "string" : "마", "attrId" : 0, "flatCharIndex" : 7913 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7914 }, { "string" : "합", "attrId" : 0, "flatCharIndex" : 7915 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7916 }, { "string" : "표", "attrId" : 0, "flatCharIndex" : 7917 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7917 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 7918 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7918 }, { "string" : "법", "attrId" : 0, "flatCharIndex" : 7919 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 7919 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 7920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7976 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7996 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8016 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8046 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 8047 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 8048 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 8049 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8054 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8055 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 8056 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8057 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8058 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 8059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8060 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 8061 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 8062 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8063 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 8064 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 8065 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 8066 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 8067 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 8068 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8069 }, { "string" : "g", "attrId" : 96, "flatCharIndex" : 8070 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 8071 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 8072 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8073 }, { "string" : "c", "attrId" : 96, "flatCharIndex" : 8074 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 8075 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 8076 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8077 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 8078 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8079 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 8080 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 8081 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 8082 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 8083 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 8084 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 8085 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8086 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 8087 }, { "string" : "d", "attrId" : 96, "flatCharIndex" : 8088 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8089 }, { "string" : "c", "attrId" : 96, "flatCharIndex" : 8090 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 8091 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 8092 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8093 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 8094 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8095 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 8096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8129 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8149 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8169 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8199 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 8200 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 8201 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 8202 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8207 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 8208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8209 }, { "string" : "중", "attrId" : 0, "flatCharIndex" : 8210 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8210 }, { "string" : "괄", "attrId" : 0, "flatCharIndex" : 8211 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8211 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 8212 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8212 }, { "string" : "로", "attrId" : 0, "flatCharIndex" : 8213 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8214 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 8215 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8215 }, { "string" : "우", "attrId" : 0, "flatCharIndex" : 8216 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8217 }, { "string" : "나", "attrId" : 0, "flatCharIndex" : 8218 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8218 }, { "string" : "누", "attrId" : 0, "flatCharIndex" : 8219 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8219 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 8220 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8273 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8293 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8313 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8343 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 8344 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 8345 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 8346 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8349 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8350 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8351 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 8352 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 8353 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8354 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 8355 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 8356 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8357 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 8358 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 8359 }, { "string" : "z", "attrId" : 96, "flatCharIndex" : 8360 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8361 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8426 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8446 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8466 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8496 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 8497 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 8498 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 8499 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8502 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 8503 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8503 }, { "string" : "례", "attrId" : 0, "flatCharIndex" : 8504 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8504 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 8505 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8506 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 8507 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8507 }, { "string" : "음", "attrId" : 0, "flatCharIndex" : 8508 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8509 }, { "string" : "페", "attrId" : 0, "flatCharIndex" : 8510 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8510 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 8511 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8511 }, { "string" : "지", "attrId" : 0, "flatCharIndex" : 8512 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8513 }, { "string" : "참", "attrId" : 0, "flatCharIndex" : 8514 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8514 }, { "string" : "조", "attrId" : 0, "flatCharIndex" : 8515 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8515 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 8516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8517 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8518 }, { "string" : "\\", "attrId" : 99, "flatCharIndex" : 8519 }, { "string" : "f", "attrId" : 99, "flatCharIndex" : 8520 }, { "string" : "o", "attrId" : 99, "flatCharIndex" : 8521 }, { "string" : "o", "attrId" : 99, "flatCharIndex" : 8522 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 8523 }, { "string" : "n", "attrId" : 99, "flatCharIndex" : 8524 }, { "string" : "o", "attrId" : 99, "flatCharIndex" : 8525 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 8526 }, { "string" : "e", "attrId" : 99, "flatCharIndex" : 8527 }, { "string" : "s", "attrId" : 99, "flatCharIndex" : 8528 }, { "string" : "i", "attrId" : 99, "flatCharIndex" : 8529 }, { "string" : "z", "attrId" : 99, "flatCharIndex" : 8530 }, { "string" : "e", "attrId" : 99, "flatCharIndex" : 8531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8532 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 8533 }, { "string" : "대", "attrId" : 0, "flatCharIndex" : 8534 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8534 }, { "string" : "괄", "attrId" : 0, "flatCharIndex" : 8535 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8535 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 8536 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8536 }, { "string" : "와", "attrId" : 0, "flatCharIndex" : 8537 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8538 }, { "string" : "중", "attrId" : 0, "flatCharIndex" : 8539 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8539 }, { "string" : "괄", "attrId" : 0, "flatCharIndex" : 8540 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8540 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 8541 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8542 }, { "string" : "구", "attrId" : 0, "flatCharIndex" : 8543 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8543 }, { "string" : "분", "attrId" : 0, "flatCharIndex" : 8544 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8544 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 8545 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8546 }, { "string" : "유", "attrId" : 0, "flatCharIndex" : 8547 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8547 }, { "string" : "의", "attrId" : 0, "flatCharIndex" : 8548 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8548 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 8549 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 8550 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8557 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8577 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8597 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8627 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 8628 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 8629 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 8630 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8631 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8632 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8633 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 8634 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 8635 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8636 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 8637 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 8638 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 8639 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 8640 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8641 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8710 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8730 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8750 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8780 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 8781 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 8782 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 8783 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8784 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8785 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 8786 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8787 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 8788 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 8789 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 8790 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8791 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 8792 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 8793 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 8794 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 8795 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 8796 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8797 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8798 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 8799 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8799 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 8800 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8801 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 8802 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8802 }, { "string" : "례", "attrId" : 0, "flatCharIndex" : 8803 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8803 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8859 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8879 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8899 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8929 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 8930 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 8931 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 8932 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8935 }, { "string" : "코", "attrId" : 0, "flatCharIndex" : 8936 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8936 }, { "string" : "드", "attrId" : 0, "flatCharIndex" : 8937 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 8937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8938 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 8939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8940 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8941 }, { "string" : "f", "attrId" : 93, "flatCharIndex" : 8942 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 8943 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 8944 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8945 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 8946 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 8947 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8948 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8949 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8950 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8951 }, { "string" : "u", "attrId" : 93, "flatCharIndex" : 8952 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 8953 }, { "string" : "l", "attrId" : 93, "flatCharIndex" : 8954 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8955 }, { "string" : "h", "attrId" : 92, "flatCharIndex" : 8956 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 8957 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 8958 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 8959 }, { "string" : ":", "attrId" : 92, "flatCharIndex" : 8960 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 8961 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 8962 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 8963 }, { "string" : "a", "attrId" : 92, "flatCharIndex" : 8964 }, { "string" : "s", "attrId" : 92, "flatCharIndex" : 8965 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 8966 }, { "string" : "e", "attrId" : 92, "flatCharIndex" : 8967 }, { "string" : "b", "attrId" : 92, "flatCharIndex" : 8968 }, { "string" : "i", "attrId" : 92, "flatCharIndex" : 8969 }, { "string" : "n", "attrId" : 92, "flatCharIndex" : 8970 }, { "string" : ".", "attrId" : 92, "flatCharIndex" : 8971 }, { "string" : "c", "attrId" : 92, "flatCharIndex" : 8972 }, { "string" : "o", "attrId" : 92, "flatCharIndex" : 8973 }, { "string" : "m", "attrId" : 92, "flatCharIndex" : 8974 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 8975 }, { "string" : "i", "attrId" : 92, "flatCharIndex" : 8976 }, { "string" : "J", "attrId" : 92, "flatCharIndex" : 8977 }, { "string" : "8", "attrId" : 92, "flatCharIndex" : 8978 }, { "string" : "A", "attrId" : 92, "flatCharIndex" : 8979 }, { "string" : "J", "attrId" : 92, "flatCharIndex" : 8980 }, { "string" : "8", "attrId" : 92, "flatCharIndex" : 8981 }, { "string" : "L", "attrId" : 92, "flatCharIndex" : 8982 }, { "string" : "1", "attrId" : 92, "flatCharIndex" : 8983 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8984 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9010 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9030 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9050 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9080 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 9081 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 9082 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 9083 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9086 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9087 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9088 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9089 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9090 }, { "string" : "s", "attrId" : 93, "flatCharIndex" : 9091 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9092 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9093 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9094 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9095 }, { "string" : "p", "attrId" : 93, "flatCharIndex" : 9096 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9097 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9098 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9099 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 9100 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9101 }, { "string" : "0", "attrId" : 103, "flatCharIndex" : 9102 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9103 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9104 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9163 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9183 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9203 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9233 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 9234 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 9235 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 9236 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9239 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9240 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9241 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9242 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9243 }, { "string" : "l", "attrId" : 93, "flatCharIndex" : 9244 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 9245 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9246 }, { "string" : "_", "attrId" : 96, "flatCharIndex" : 9247 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9248 }, { "string" : "2", "attrId" : 93, "flatCharIndex" : 9249 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9250 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9251 }, { "string" : "8", "attrId" : 103, "flatCharIndex" : 9252 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9253 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9254 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 9255 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9256 }, { "string" : "3", "attrId" : 103, "flatCharIndex" : 9257 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9258 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9259 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9316 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9336 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9356 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9386 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 9387 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 9388 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 9389 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9392 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9393 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9394 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9395 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9396 }, { "string" : "f", "attrId" : 93, "flatCharIndex" : 9397 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9398 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 9399 }, { "string" : "c", "attrId" : 93, "flatCharIndex" : 9400 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9401 }, { "string" : "6", "attrId" : 103, "flatCharIndex" : 9402 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9403 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9404 }, { "string" : "3", "attrId" : 103, "flatCharIndex" : 9405 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9406 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9407 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 9408 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9409 }, { "string" : "2", "attrId" : 103, "flatCharIndex" : 9410 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9411 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9412 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9469 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9489 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9509 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9539 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 9540 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 9541 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 9542 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9545 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9546 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9547 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9548 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9549 }, { "string" : "s", "attrId" : 93, "flatCharIndex" : 9550 }, { "string" : "q", "attrId" : 93, "flatCharIndex" : 9551 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9552 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9553 }, { "string" : "[", "attrId" : 103, "flatCharIndex" : 9554 }, { "string" : "3", "attrId" : 103, "flatCharIndex" : 9555 }, { "string" : "]", "attrId" : 103, "flatCharIndex" : 9556 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9557 }, { "string" : "8", "attrId" : 103, "flatCharIndex" : 9558 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9559 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9560 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 9561 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9562 }, { "string" : "2", "attrId" : 103, "flatCharIndex" : 9563 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9564 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9565 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9622 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9642 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9662 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9692 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 9693 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 9694 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 9695 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9698 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9699 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9700 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9701 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9702 }, { "string" : "s", "attrId" : 93, "flatCharIndex" : 9703 }, { "string" : "u", "attrId" : 93, "flatCharIndex" : 9704 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9705 }, { "string" : "_", "attrId" : 96, "flatCharIndex" : 9706 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9707 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9708 }, { "string" : "=", "attrId" : 93, "flatCharIndex" : 9709 }, { "string" : "1", "attrId" : 93, "flatCharIndex" : 9710 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9711 }, { "string" : "^", "attrId" : 96, "flatCharIndex" : 9712 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9713 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9714 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9715 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9716 }, { "string" : "1", "attrId" : 103, "flatCharIndex" : 9717 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9718 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9719 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 9720 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9721 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 9722 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 9723 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 9724 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9775 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9795 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9815 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9845 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 9846 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 9847 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 9848 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9851 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9852 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 9853 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9854 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9855 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9856 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9857 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9858 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 9859 }, { "string" : "q", "attrId" : 103, "flatCharIndex" : 9860 }, { "string" : "u", "attrId" : 103, "flatCharIndex" : 9861 }, { "string" : "a", "attrId" : 103, "flatCharIndex" : 9862 }, { "string" : "t", "attrId" : 103, "flatCharIndex" : 9863 }, { "string" : "i", "attrId" : 103, "flatCharIndex" : 9864 }, { "string" : "o", "attrId" : 103, "flatCharIndex" : 9865 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 9866 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9928 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9948 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9968 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9998 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 9999 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 10000 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 10001 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10002 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10003 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10004 }, { "string" : "f", "attrId" : 103, "flatCharIndex" : 10005 }, { "string" : "(", "attrId" : 103, "flatCharIndex" : 10006 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 10007 }, { "string" : ")", "attrId" : 103, "flatCharIndex" : 10008 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10009 }, { "string" : "=", "attrId" : 96, "flatCharIndex" : 10010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10081 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10101 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10121 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10151 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 10152 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 10153 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 10154 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10155 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10156 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10157 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10158 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 10159 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10160 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10161 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10162 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 10163 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10164 }, { "string" : "c", "attrId" : 103, "flatCharIndex" : 10165 }, { "string" : "a", "attrId" : 103, "flatCharIndex" : 10166 }, { "string" : "s", "attrId" : 103, "flatCharIndex" : 10167 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 10168 }, { "string" : "s", "attrId" : 103, "flatCharIndex" : 10169 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10234 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10254 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10274 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10304 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 10305 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 10306 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 10307 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10308 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10309 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10310 }, { "string" : "0", "attrId" : 103, "flatCharIndex" : 10311 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10312 }, { "string" : "&", "attrId" : 96, "flatCharIndex" : 10313 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10314 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10315 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10316 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10317 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 10318 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10319 }, { "string" : "{", "attrId" : 93, "flatCharIndex" : 10320 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10321 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 10322 }, { "string" : "}", "attrId" : 93, "flatCharIndex" : 10323 }, { "string" : "\\", "attrId" : 103, "flatCharIndex" : 10324 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10325 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 10326 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10327 }, { "string" : "<", "attrId" : 103, "flatCharIndex" : 10328 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10329 }, { "string" : "0", "attrId" : 103, "flatCharIndex" : 10330 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10331 }, { "string" : "\\", "attrId" : 92, "flatCharIndex" : 10332 }, { "string" : "\\", "attrId" : 92, "flatCharIndex" : 10333 }, { "string" : " ", "attrId" : 165, "flatCharIndex" : 10334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10387 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10407 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10427 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10457 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 10458 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 10459 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 10460 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10461 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10462 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10463 }, { "string" : "1", "attrId" : 103, "flatCharIndex" : 10464 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10465 }, { "string" : "&", "attrId" : 96, "flatCharIndex" : 10466 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10467 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10468 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10469 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10470 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 10471 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10472 }, { "string" : "{", "attrId" : 93, "flatCharIndex" : 10473 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10474 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 10475 }, { "string" : "}", "attrId" : 93, "flatCharIndex" : 10476 }, { "string" : "\\", "attrId" : 103, "flatCharIndex" : 10477 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10478 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 10479 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10480 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10481 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10482 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10483 }, { "string" : "q", "attrId" : 93, "flatCharIndex" : 10484 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10485 }, { "string" : "1", "attrId" : 103, "flatCharIndex" : 10486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10540 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10560 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10580 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10610 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 10611 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 10612 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 10613 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10614 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10615 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10616 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10617 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10618 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 10619 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 10620 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10621 }, { "string" : "c", "attrId" : 103, "flatCharIndex" : 10622 }, { "string" : "a", "attrId" : 103, "flatCharIndex" : 10623 }, { "string" : "s", "attrId" : 103, "flatCharIndex" : 10624 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 10625 }, { "string" : "s", "attrId" : 103, "flatCharIndex" : 10626 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10693 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10713 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10733 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10763 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 10764 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 10765 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 10766 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10767 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10768 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 10769 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10770 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10771 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 10772 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 10773 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10774 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 10775 }, { "string" : "q", "attrId" : 103, "flatCharIndex" : 10776 }, { "string" : "u", "attrId" : 103, "flatCharIndex" : 10777 }, { "string" : "a", "attrId" : 103, "flatCharIndex" : 10778 }, { "string" : "t", "attrId" : 103, "flatCharIndex" : 10779 }, { "string" : "i", "attrId" : 103, "flatCharIndex" : 10780 }, { "string" : "o", "attrId" : 103, "flatCharIndex" : 10781 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 10782 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10846 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10866 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10886 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10916 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 10917 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 10918 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 10919 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10920 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10921 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10922 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 10923 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 10924 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10925 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 10926 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 10927 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 10928 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 10929 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 10930 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10999 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11019 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11039 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11069 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 11070 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 11071 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 11072 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11073 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 11074 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 11075 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 11076 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 11077 }, { "string" : "s", "attrId" : 96, "flatCharIndex" : 11078 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 11079 }, { "string" : "c", "attrId" : 96, "flatCharIndex" : 11080 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 11081 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 11082 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 11083 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 11084 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11085 }, { "string" : "여", "attrId" : 0, "flatCharIndex" : 11086 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11086 }, { "string" : "러", "attrId" : 0, "flatCharIndex" : 11087 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11088 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 11089 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11089 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 11090 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11091 }, { "string" : "환", "attrId" : 0, "flatCharIndex" : 11092 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11092 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 11093 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11093 }, { "string" : "들", "attrId" : 0, "flatCharIndex" : 11094 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11094 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11145 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11165 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11185 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11215 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 11216 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 11217 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 11218 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11219 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11220 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 11221 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11222 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11223 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11224 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 11225 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11226 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 11227 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 11228 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 11229 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 11230 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 11231 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11232 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11233 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 11234 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11235 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11236 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 11237 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11238 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11239 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11240 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11241 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11242 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11243 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 11244 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11245 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11246 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11247 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11248 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11249 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11251 }, { "string" : "\/", "attrId" : 0, "flatCharIndex" : 11252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11253 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11254 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 11255 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11256 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11257 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11258 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11259 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11260 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11261 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 11262 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11298 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11318 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11338 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11368 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 11369 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 11370 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 11371 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11374 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11375 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 11376 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11377 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11378 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11379 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11380 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11381 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11383 }, { "string" : "환", "attrId" : 0, "flatCharIndex" : 11384 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11384 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 11385 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11385 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 11386 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11387 }, { "string" : "쓰", "attrId" : 0, "flatCharIndex" : 11388 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11388 }, { "string" : "되", "attrId" : 0, "flatCharIndex" : 11389 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11389 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11391 }, { "string" : "번", "attrId" : 0, "flatCharIndex" : 11392 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11392 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 11393 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11393 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 11394 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11395 }, { "string" : "매", "attrId" : 0, "flatCharIndex" : 11396 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11396 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 11397 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11397 }, { "string" : "고", "attrId" : 0, "flatCharIndex" : 11398 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11399 }, { "string" : "싶", "attrId" : 0, "flatCharIndex" : 11400 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11400 }, { "string" : "지", "attrId" : 0, "flatCharIndex" : 11401 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11402 }, { "string" : "않", "attrId" : 0, "flatCharIndex" : 11403 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11403 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 11404 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11405 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 11406 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11406 }, { "string" : "우", "attrId" : 0, "flatCharIndex" : 11407 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11408 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11409 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 11410 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11411 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11412 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11413 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11414 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11415 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11416 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 11417 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 11418 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11418 }, { "string" : " ", "attrId" : 135, "flatCharIndex" : 11419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11433 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11453 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11473 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11503 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 11504 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 11505 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 11506 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11509 }, { "string" : "사", "attrId" : 0, "flatCharIndex" : 11510 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11510 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 11511 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11511 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 11512 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11512 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 11513 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11513 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 11514 }, { "string" : " ", "attrId" : 135, "flatCharIndex" : 11515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11582 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11602 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11622 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11652 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 11653 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 11654 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11655 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11658 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 11659 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11660 }, { "string" : "방", "attrId" : 0, "flatCharIndex" : 11661 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11661 }, { "string" : "법", "attrId" : 0, "flatCharIndex" : 11662 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11663 }, { "string" : "외", "attrId" : 0, "flatCharIndex" : 11664 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11664 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 11665 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11665 }, { "string" : "도", "attrId" : 0, "flatCharIndex" : 11666 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11666 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11668 }, { "string" : "그", "attrId" : 0, "flatCharIndex" : 11669 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11669 }, { "string" : "냥", "attrId" : 0, "flatCharIndex" : 11670 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11671 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 11672 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 11673 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 11674 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 11675 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 11676 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 11677 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 11678 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11679 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 11680 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 11681 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 11682 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 11683 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 11684 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 11685 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11686 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 11687 }, { "string" : "을", "attrId" : 0, "flatCharIndex" : 11688 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11689 }, { "string" : "사", "attrId" : 0, "flatCharIndex" : 11690 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11690 }, { "string" : "용", "attrId" : 0, "flatCharIndex" : 11691 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11691 }, { "string" : "하", "attrId" : 0, "flatCharIndex" : 11692 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11692 }, { "string" : "거", "attrId" : 0, "flatCharIndex" : 11693 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11693 }, { "string" : "나", "attrId" : 0, "flatCharIndex" : 11694 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11694 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11721 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11741 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11761 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11791 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 11792 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 11793 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 11794 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11797 }, { "string" : "등", "attrId" : 0, "flatCharIndex" : 11798 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11798 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 11799 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11800 }, { "string" : "맨", "attrId" : 0, "flatCharIndex" : 11801 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11802 }, { "string" : "뒤", "attrId" : 0, "flatCharIndex" : 11803 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11803 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 11804 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11805 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 11806 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 11807 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 11808 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 11809 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 11810 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 11811 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 11812 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 11813 }, { "string" : "o", "attrId" : 96, "flatCharIndex" : 11814 }, { "string" : "n", "attrId" : 96, "flatCharIndex" : 11815 }, { "string" : "u", "attrId" : 96, "flatCharIndex" : 11816 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 11817 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 11818 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 11819 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 11820 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 11821 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 11822 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11823 }, { "string" : "붙", "attrId" : 0, "flatCharIndex" : 11824 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11824 }, { "string" : "여", "attrId" : 0, "flatCharIndex" : 11825 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11825 }, { "string" : "도", "attrId" : 0, "flatCharIndex" : 11826 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11827 }, { "string" : "된", "attrId" : 0, "flatCharIndex" : 11828 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11828 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 11829 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11829 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 11830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11831 }, { "string" : "코", "attrId" : 0, "flatCharIndex" : 11832 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11832 }, { "string" : "드", "attrId" : 0, "flatCharIndex" : 11833 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 11833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11834 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 11835 }, { "string" : " ", "attrId" : 135, "flatCharIndex" : 11836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11861 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11881 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11901 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11931 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 11932 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 11933 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 11934 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11937 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11938 }, { "string" : "f", "attrId" : 93, "flatCharIndex" : 11939 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 11940 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 11941 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11942 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 11943 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 11944 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11945 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11946 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11947 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11948 }, { "string" : "u", "attrId" : 93, "flatCharIndex" : 11949 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11950 }, { "string" : "l", "attrId" : 93, "flatCharIndex" : 11951 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11952 }, { "string" : "h", "attrId" : 92, "flatCharIndex" : 11953 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 11954 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 11955 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 11956 }, { "string" : ":", "attrId" : 92, "flatCharIndex" : 11957 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 11958 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 11959 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 11960 }, { "string" : "a", "attrId" : 92, "flatCharIndex" : 11961 }, { "string" : "s", "attrId" : 92, "flatCharIndex" : 11962 }, { "string" : "t", "attrId" : 92, "flatCharIndex" : 11963 }, { "string" : "e", "attrId" : 92, "flatCharIndex" : 11964 }, { "string" : "b", "attrId" : 92, "flatCharIndex" : 11965 }, { "string" : "i", "attrId" : 92, "flatCharIndex" : 11966 }, { "string" : "n", "attrId" : 92, "flatCharIndex" : 11967 }, { "string" : ".", "attrId" : 92, "flatCharIndex" : 11968 }, { "string" : "c", "attrId" : 92, "flatCharIndex" : 11969 }, { "string" : "o", "attrId" : 92, "flatCharIndex" : 11970 }, { "string" : "m", "attrId" : 92, "flatCharIndex" : 11971 }, { "string" : "\/", "attrId" : 92, "flatCharIndex" : 11972 }, { "string" : "Y", "attrId" : 92, "flatCharIndex" : 11973 }, { "string" : "w", "attrId" : 92, "flatCharIndex" : 11974 }, { "string" : "a", "attrId" : 92, "flatCharIndex" : 11975 }, { "string" : "z", "attrId" : 92, "flatCharIndex" : 11976 }, { "string" : "4", "attrId" : 92, "flatCharIndex" : 11977 }, { "string" : "p", "attrId" : 92, "flatCharIndex" : 11978 }, { "string" : "A", "attrId" : 92, "flatCharIndex" : 11979 }, { "string" : "7", "attrId" : 92, "flatCharIndex" : 11980 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11981 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12014 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12034 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12054 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12084 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 12085 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 12086 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 12087 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12090 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12091 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 12092 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12093 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12094 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12095 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 12096 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12097 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 12098 }, { "string" : "q", "attrId" : 103, "flatCharIndex" : 12099 }, { "string" : "u", "attrId" : 103, "flatCharIndex" : 12100 }, { "string" : "a", "attrId" : 103, "flatCharIndex" : 12101 }, { "string" : "t", "attrId" : 103, "flatCharIndex" : 12102 }, { "string" : "i", "attrId" : 103, "flatCharIndex" : 12103 }, { "string" : "o", "attrId" : 103, "flatCharIndex" : 12104 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 12105 }, { "string" : "*", "attrId" : 103, "flatCharIndex" : 12106 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12167 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12187 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12207 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12237 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 12238 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 12239 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 12240 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12241 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 12242 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 12243 }, { "string" : "\\", "attrId" : 99, "flatCharIndex" : 12244 }, { "string" : "m", "attrId" : 99, "flatCharIndex" : 12245 }, { "string" : "a", "attrId" : 99, "flatCharIndex" : 12246 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 12247 }, { "string" : "h", "attrId" : 99, "flatCharIndex" : 12248 }, { "string" : "c", "attrId" : 99, "flatCharIndex" : 12249 }, { "string" : "a", "attrId" : 99, "flatCharIndex" : 12250 }, { "string" : "l", "attrId" : 99, "flatCharIndex" : 12251 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12252 }, { "string" : "L", "attrId" : 103, "flatCharIndex" : 12253 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12254 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 12255 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12256 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12257 }, { "string" : "q", "attrId" : 93, "flatCharIndex" : 12258 }, { "string" : "u", "attrId" : 93, "flatCharIndex" : 12259 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12260 }, { "string" : "v", "attrId" : 93, "flatCharIndex" : 12261 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 12262 }, { "string" : "T", "attrId" : 103, "flatCharIndex" : 12263 }, { "string" : "-", "attrId" : 103, "flatCharIndex" : 12264 }, { "string" : "V", "attrId" : 103, "flatCharIndex" : 12265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12320 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12340 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12360 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12390 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 12391 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 12392 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 12393 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12394 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 12395 }, { "string" : " ", "attrId" : 103, "flatCharIndex" : 12396 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12397 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12398 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 12399 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 12400 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12401 }, { "string" : "e", "attrId" : 103, "flatCharIndex" : 12402 }, { "string" : "q", "attrId" : 103, "flatCharIndex" : 12403 }, { "string" : "u", "attrId" : 103, "flatCharIndex" : 12404 }, { "string" : "a", "attrId" : 103, "flatCharIndex" : 12405 }, { "string" : "t", "attrId" : 103, "flatCharIndex" : 12406 }, { "string" : "i", "attrId" : 103, "flatCharIndex" : 12407 }, { "string" : "o", "attrId" : 103, "flatCharIndex" : 12408 }, { "string" : "n", "attrId" : 103, "flatCharIndex" : 12409 }, { "string" : "*", "attrId" : 103, "flatCharIndex" : 12410 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12473 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12493 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12513 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12543 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 12544 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 12545 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 12546 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12549 }, { "string" : "통", "attrId" : 0, "flatCharIndex" : 12550 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12550 }, { "string" : "상", "attrId" : 0, "flatCharIndex" : 12551 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12551 }, { "string" : "적", "attrId" : 0, "flatCharIndex" : 12552 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12552 }, { "string" : "으", "attrId" : 0, "flatCharIndex" : 12553 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12553 }, { "string" : "로", "attrId" : 0, "flatCharIndex" : 12554 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12555 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12556 }, { "string" : "T", "attrId" : 93, "flatCharIndex" : 12557 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12558 }, { "string" : "X", "attrId" : 93, "flatCharIndex" : 12559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12560 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 12561 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12561 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 12562 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12562 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 12563 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12564 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12565 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 12566 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 12567 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12568 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12569 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12570 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12571 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12572 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 12573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12574 }, { "string" : "외", "attrId" : 0, "flatCharIndex" : 12575 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12575 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 12576 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12576 }, { "string" : "도", "attrId" : 0, "flatCharIndex" : 12577 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12578 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 12579 }, { "string" : "를", "attrId" : 0, "flatCharIndex" : 12580 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12581 }, { "string" : "붙", "attrId" : 0, "flatCharIndex" : 12582 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12582 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 12583 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12583 }, { "string" : "면", "attrId" : 0, "flatCharIndex" : 12584 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12585 }, { "string" : "번", "attrId" : 0, "flatCharIndex" : 12586 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12586 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 12587 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12587 }, { "string" : "가", "attrId" : 0, "flatCharIndex" : 12588 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12589 }, { "string" : "매", "attrId" : 0, "flatCharIndex" : 12590 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12590 }, { "string" : "겨", "attrId" : 0, "flatCharIndex" : 12591 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12591 }, { "string" : "지", "attrId" : 0, "flatCharIndex" : 12592 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12592 }, { "string" : "지", "attrId" : 0, "flatCharIndex" : 12593 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12594 }, { "string" : "않", "attrId" : 0, "flatCharIndex" : 12595 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12595 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 12596 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12596 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 12597 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12597 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 12598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12599 }, { "string" : "뒤", "attrId" : 0, "flatCharIndex" : 12600 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12600 }, { "string" : "에", "attrId" : 79, "flatCharIndex" : 12601 }, { "string" : "", "attrId" : 79, "flatCharIndex" : 12601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12602 }, { "string" : "설", "attrId" : 0, "flatCharIndex" : 12603 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12603 }, { "string" : "명", "attrId" : 0, "flatCharIndex" : 12604 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12604 }, { "string" : "할", "attrId" : 0, "flatCharIndex" : 12605 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12606 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12607 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12608 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12609 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 12610 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12611 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12613 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 12614 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12615 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12616 }, { "string" : "h", "attrId" : 79, "flatCharIndex" : 12617 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12618 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12620 }, { "string" : "등", "attrId" : 0, "flatCharIndex" : 12621 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12621 }, { "string" : "도", "attrId" : 0, "flatCharIndex" : 12622 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12623 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12624 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12625 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12626 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 12627 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12628 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 12629 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12631 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 12632 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12633 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12634 }, { "string" : "h", "attrId" : 79, "flatCharIndex" : 12635 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12636 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12637 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 12638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12639 }, { "string" : "환", "attrId" : 0, "flatCharIndex" : 12640 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12640 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 12641 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12641 }, { "string" : "이", "attrId" : 0, "flatCharIndex" : 12642 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12643 }, { "string" : "존", "attrId" : 0, "flatCharIndex" : 12644 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12644 }, { "string" : "재", "attrId" : 0, "flatCharIndex" : 12645 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12645 }, { "string" : "하", "attrId" : 0, "flatCharIndex" : 12646 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12646 }, { "string" : "며", "attrId" : 0, "flatCharIndex" : 12647 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12647 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12649 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 12650 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12651 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 12652 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12653 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12654 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12655 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12657 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 12658 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12659 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12660 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12661 }, { "string" : "과", "attrId" : 0, "flatCharIndex" : 12662 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12663 }, { "string" : "같", "attrId" : 0, "flatCharIndex" : 12664 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12664 }, { "string" : "은", "attrId" : 0, "flatCharIndex" : 12665 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12666 }, { "string" : "것", "attrId" : 0, "flatCharIndex" : 12667 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12667 }, { "string" : "도", "attrId" : 0, "flatCharIndex" : 12668 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12669 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 12670 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12671 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 12672 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12673 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12674 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12675 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12676 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 12677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12678 }, { "string" : "가", "attrId" : 0, "flatCharIndex" : 12679 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12680 }, { "string" : "존", "attrId" : 0, "flatCharIndex" : 12681 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12681 }, { "string" : "재", "attrId" : 0, "flatCharIndex" : 12682 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12682 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 12683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12802 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 12803 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 12804 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 12805 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12806 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12807 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12808 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 12809 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 12810 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12811 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 12812 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 12813 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 12814 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 12815 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 12816 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12885 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12905 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12925 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12955 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 12956 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 12957 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 12958 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12959 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12960 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 12961 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12962 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12963 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12964 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 12965 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12966 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 12967 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 12968 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 12969 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 12970 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 12971 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12972 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 12973 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 12974 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12975 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12976 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 12977 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12978 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12979 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12980 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 12981 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12982 }, { "string" : "검", "attrId" : 0, "flatCharIndex" : 12983 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12983 }, { "string" : "색", "attrId" : 0, "flatCharIndex" : 12984 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12984 }, { "string" : "하", "attrId" : 0, "flatCharIndex" : 12985 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12985 }, { "string" : "면", "attrId" : 0, "flatCharIndex" : 12986 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12987 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 12988 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12989 }, { "string" : "나", "attrId" : 0, "flatCharIndex" : 12990 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12990 }, { "string" : "온", "attrId" : 0, "flatCharIndex" : 12991 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12991 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 12992 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 12992 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 12993 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13030 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13050 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13070 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13100 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 13101 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 13102 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 13103 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13106 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13107 }, { "string" : "b", "attrId" : 93, "flatCharIndex" : 13108 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13109 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 13110 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13111 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 13112 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13113 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 13114 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 13115 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 13116 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 13117 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 13118 }, { "string" : "z", "attrId" : 96, "flatCharIndex" : 13119 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 13120 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13183 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13203 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13223 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13253 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 13254 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 13255 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 13256 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13261 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13262 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13263 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13264 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13265 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13267 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13268 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13269 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13270 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 13271 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13272 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13274 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13275 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13276 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13277 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 13278 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13279 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13280 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 13281 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13283 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 13284 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13285 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13286 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 13287 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13288 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13289 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13291 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 13292 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 13293 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 13294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13295 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 13296 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13296 }, { "string" : "양", "attrId" : 0, "flatCharIndex" : 13297 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13297 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 13298 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13299 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 13300 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13300 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 13301 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13302 }, { "string" : "환", "attrId" : 0, "flatCharIndex" : 13303 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13303 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 13304 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13329 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13349 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13369 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13399 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 13400 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 13401 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 13402 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13407 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13408 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13409 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13410 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13411 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13413 }, { "string" : "괄", "attrId" : 0, "flatCharIndex" : 13414 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13414 }, { "string" : "호", "attrId" : 0, "flatCharIndex" : 13415 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13416 }, { "string" : "크", "attrId" : 0, "flatCharIndex" : 13417 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13417 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 13418 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13419 }, { "string" : "자", "attrId" : 0, "flatCharIndex" : 13420 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13420 }, { "string" : "동", "attrId" : 0, "flatCharIndex" : 13421 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13421 }, { "string" : "조", "attrId" : 0, "flatCharIndex" : 13422 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13422 }, { "string" : "정", "attrId" : 0, "flatCharIndex" : 13423 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13424 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 13425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13426 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 13427 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 13428 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 13429 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 13430 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 13431 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 13432 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 13433 }, { "string" : "l", "attrId" : 96, "flatCharIndex" : 13434 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 13435 }, { "string" : "f", "attrId" : 96, "flatCharIndex" : 13436 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 13437 }, { "string" : "(", "attrId" : 96, "flatCharIndex" : 13438 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 13439 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 13440 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 13441 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 13442 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 13443 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 13444 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 13445 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 13446 }, { "string" : "g", "attrId" : 96, "flatCharIndex" : 13447 }, { "string" : "h", "attrId" : 96, "flatCharIndex" : 13448 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 13449 }, { "string" : ")", "attrId" : 96, "flatCharIndex" : 13450 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 13451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13474 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13494 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13514 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13544 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 13545 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 13546 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 13547 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13552 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13553 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13554 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13555 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13556 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13558 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 13559 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13559 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 13560 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13560 }, { "string" : "의", "attrId" : 0, "flatCharIndex" : 13561 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13562 }, { "string" : "태", "attrId" : 0, "flatCharIndex" : 13563 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13563 }, { "string" : "그", "attrId" : 0, "flatCharIndex" : 13564 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13565 }, { "string" : "임", "attrId" : 0, "flatCharIndex" : 13566 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13566 }, { "string" : "의", "attrId" : 0, "flatCharIndex" : 13567 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13567 }, { "string" : "로", "attrId" : 0, "flatCharIndex" : 13568 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13569 }, { "string" : "변", "attrId" : 0, "flatCharIndex" : 13570 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13570 }, { "string" : "경", "attrId" : 0, "flatCharIndex" : 13571 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13571 }, { "string" : "하", "attrId" : 0, "flatCharIndex" : 13572 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13572 }, { "string" : "기", "attrId" : 0, "flatCharIndex" : 13573 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13574 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 13575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13576 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 13577 }, { "string" : "v", "attrId" : 96, "flatCharIndex" : 13578 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 13579 }, { "string" : "r", "attrId" : 96, "flatCharIndex" : 13580 }, { "string" : "b", "attrId" : 96, "flatCharIndex" : 13581 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 13582 }, { "string" : "\\", "attrId" : 96, "flatCharIndex" : 13583 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 13584 }, { "string" : "a", "attrId" : 96, "flatCharIndex" : 13585 }, { "string" : "g", "attrId" : 96, "flatCharIndex" : 13586 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13587 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 13588 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 13589 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 13590 }, { "string" : ".", "attrId" : 96, "flatCharIndex" : 13591 }, { "string" : " ", "attrId" : 96, "flatCharIndex" : 13592 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13593 }, { "string" : "|", "attrId" : 96, "flatCharIndex" : 13594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13615 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13635 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13655 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13685 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 13686 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 13687 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 13688 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13691 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13692 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13693 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 13694 }, { "string" : "d", "attrId" : 93, "flatCharIndex" : 13695 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13696 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 13697 }, { "string" : "t", "attrId" : 96, "flatCharIndex" : 13698 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 13699 }, { "string" : "m", "attrId" : 96, "flatCharIndex" : 13700 }, { "string" : "i", "attrId" : 96, "flatCharIndex" : 13701 }, { "string" : "z", "attrId" : 96, "flatCharIndex" : 13702 }, { "string" : "e", "attrId" : 96, "flatCharIndex" : 13703 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13768 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13788 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13808 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13838 } ], [ { "string" : "3", "attrId" : 54, "flatCharIndex" : 13839 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 13840 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 13841 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13844 }, { "string" : "T", "attrId" : 0, "flatCharIndex" : 13845 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13846 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13848 }, { "string" : ":", "attrId" : 0, "flatCharIndex" : 13849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13850 }, { "string" : "품", "attrId" : 0, "flatCharIndex" : 13851 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13851 }, { "string" : "위", "attrId" : 0, "flatCharIndex" : 13852 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13852 }, { "string" : "있", "attrId" : 0, "flatCharIndex" : 13853 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13853 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 13854 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13854 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 13855 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 13856 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 13857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13858 }, { "string" : "논", "attrId" : 0, "flatCharIndex" : 13859 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13859 }, { "string" : "문", "attrId" : 0, "flatCharIndex" : 13860 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13860 }, { "string" : "에", "attrId" : 0, "flatCharIndex" : 13861 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13861 }, { "string" : "서", "attrId" : 0, "flatCharIndex" : 13862 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13862 }, { "string" : "는", "attrId" : 0, "flatCharIndex" : 13863 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13863 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13865 }, { "string" : "중", "attrId" : 0, "flatCharIndex" : 13866 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13866 }, { "string" : "요", "attrId" : 0, "flatCharIndex" : 13867 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13867 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 13868 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13869 }, { "string" : "수", "attrId" : 0, "flatCharIndex" : 13870 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13870 }, { "string" : "식", "attrId" : 0, "flatCharIndex" : 13871 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13871 }, { "string" : "들", "attrId" : 0, "flatCharIndex" : 13872 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13872 }, { "string" : "은", "attrId" : 0, "flatCharIndex" : 13873 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13874 }, { "string" : "모", "attrId" : 0, "flatCharIndex" : 13875 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13875 }, { "string" : "두", "attrId" : 0, "flatCharIndex" : 13876 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13877 }, { "string" : "온", "attrId" : 0, "flatCharIndex" : 13878 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13878 }, { "string" : "점", "attrId" : 0, "flatCharIndex" : 13879 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13879 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 13880 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 13881 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 13882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13883 }, { "string" : "으", "attrId" : 0, "flatCharIndex" : 13884 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13884 }, { "string" : "로", "attrId" : 0, "flatCharIndex" : 13885 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13886 }, { "string" : "마", "attrId" : 0, "flatCharIndex" : 13887 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13887 }, { "string" : "무", "attrId" : 0, "flatCharIndex" : 13888 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13888 }, { "string" : "리", "attrId" : 0, "flatCharIndex" : 13889 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13889 }, { "string" : "한", "attrId" : 0, "flatCharIndex" : 13890 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13890 }, { "string" : "다", "attrId" : 0, "flatCharIndex" : 13891 }, { "string" : "", "attrId" : 0, "flatCharIndex" : 13891 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 13892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13894 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13914 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13934 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13964 } ], [ { "string" : " ", "attrId" : 136, "flatCharIndex" : 13965 }, { "string" : "N", "attrId" : 136, "flatCharIndex" : 13966 }, { "string" : "O", "attrId" : 136, "flatCharIndex" : 13967 }, { "string" : "R", "attrId" : 136, "flatCharIndex" : 13968 }, { "string" : "M", "attrId" : 136, "flatCharIndex" : 13969 }, { "string" : "A", "attrId" : 136, "flatCharIndex" : 13970 }, { "string" : "L", "attrId" : 136, "flatCharIndex" : 13971 }, { "string" : " ", "attrId" : 136, "flatCharIndex" : 13972 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 13973 }, { "string" : "G", "attrId" : 139, "flatCharIndex" : 13974 }, { "string" : "S", "attrId" : 139, "flatCharIndex" : 13975 }, { "string" : "H", "attrId" : 139, "flatCharIndex" : 13976 }, { "string" : "S", "attrId" : 139, "flatCharIndex" : 13977 }, { "string" : "L", "attrId" : 139, "flatCharIndex" : 13978 }, { "string" : "a", "attrId" : 139, "flatCharIndex" : 13979 }, { "string" : "T", "attrId" : 139, "flatCharIndex" : 13980 }, { "string" : "e", "attrId" : 139, "flatCharIndex" : 13981 }, { "string" : "X", "attrId" : 139, "flatCharIndex" : 13982 }, { "string" : "I", "attrId" : 139, "flatCharIndex" : 13983 }, { "string" : "n", "attrId" : 139, "flatCharIndex" : 13984 }, { "string" : "t", "attrId" : 139, "flatCharIndex" : 13985 }, { "string" : "r", "attrId" : 139, "flatCharIndex" : 13986 }, { "string" : "o", "attrId" : 139, "flatCharIndex" : 13987 }, { "string" : "_", "attrId" : 139, "flatCharIndex" : 13988 }, { "string" : "D", "attrId" : 139, "flatCharIndex" : 13989 }, { "string" : "a", "attrId" : 139, "flatCharIndex" : 13990 }, { "string" : "y", "attrId" : 139, "flatCharIndex" : 13991 }, { "string" : "1", "attrId" : 139, "flatCharIndex" : 13992 }, { "string" : ".", "attrId" : 139, "flatCharIndex" : 13993 }, { "string" : "t", "attrId" : 139, "flatCharIndex" : 13994 }, { "string" : "e", "attrId" : 139, "flatCharIndex" : 13995 }, { "string" : "x", "attrId" : 139, "flatCharIndex" : 13996 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 13997 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 13998 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 13999 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14000 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14001 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14002 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14003 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14004 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14005 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14006 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14007 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14008 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14009 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14010 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14011 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14012 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14013 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14014 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14015 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14016 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14017 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14018 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14019 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14020 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14021 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14022 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14023 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14024 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14025 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14026 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14027 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14028 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14029 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14030 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14031 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14032 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14033 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14034 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14035 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14036 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14037 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14038 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14039 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14040 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14041 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14042 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14043 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14044 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14045 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14046 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14047 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14048 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14049 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14050 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14051 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14052 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14053 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14054 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14055 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14056 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14057 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14058 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14059 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14060 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14061 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14062 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14063 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14064 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14065 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14066 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14067 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14068 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14069 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14070 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14071 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14072 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14073 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14074 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14075 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14076 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14077 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14078 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14079 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14080 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14081 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14082 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14083 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14084 }, { "string" : "u", "attrId" : 151, "flatCharIndex" : 14085 }, { "string" : "n", "attrId" : 151, "flatCharIndex" : 14086 }, { "string" : "i", "attrId" : 151, "flatCharIndex" : 14087 }, { "string" : "x", "attrId" : 151, "flatCharIndex" : 14088 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14089 }, { "string" : "|", "attrId" : 151, "flatCharIndex" : 14090 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14091 }, { "string" : "u", "attrId" : 151, "flatCharIndex" : 14092 }, { "string" : "t", "attrId" : 151, "flatCharIndex" : 14093 }, { "string" : "f", "attrId" : 151, "flatCharIndex" : 14094 }, { "string" : "-", "attrId" : 151, "flatCharIndex" : 14095 }, { "string" : "8", "attrId" : 151, "flatCharIndex" : 14096 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14097 }, { "string" : "|", "attrId" : 151, "flatCharIndex" : 14098 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14099 }, { "string" : "t", "attrId" : 151, "flatCharIndex" : 14100 }, { "string" : "e", "attrId" : 151, "flatCharIndex" : 14101 }, { "string" : "x", "attrId" : 151, "flatCharIndex" : 14102 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14103 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 14104 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 14105 }, { "string" : "4", "attrId" : 150, "flatCharIndex" : 14106 }, { "string" : "5", "attrId" : 150, "flatCharIndex" : 14107 }, { "string" : "%", "attrId" : 150, "flatCharIndex" : 14108 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 14109 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 14110 }, { "string" : "2", "attrId" : 147, "flatCharIndex" : 14111 }, { "string" : "7", "attrId" : 147, "flatCharIndex" : 14112 }, { "string" : "4", "attrId" : 147, "flatCharIndex" : 14113 }, { "string" : ":", "attrId" : 147, "flatCharIndex" : 14114 }, { "string" : "1", "attrId" : 147, "flatCharIndex" : 14115 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 14116 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 14117 } ], [ { "string" : " ", "attrId" : 0, "flatCharIndex" : 14118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14270 } ] ], "height" : 97 } ================================================ FILE: NvimView/Support/DrawerPerf/1.json ================================================ { "width" : 153, "cells" : [ [ { "string" : " ", "attrId" : 74, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 74, "flatCharIndex" : 1 }, { "string" : "5", "attrId" : 74, "flatCharIndex" : 2 }, { "string" : "5", "attrId" : 74, "flatCharIndex" : 3 }, { "string" : " ", "attrId" : 74, "flatCharIndex" : 4 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 5 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 6 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 7 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 8 }, { "string" : "\\", "attrId" : 177, "flatCharIndex" : 9 }, { "string" : "i", "attrId" : 177, "flatCharIndex" : 10 }, { "string" : "t", "attrId" : 177, "flatCharIndex" : 11 }, { "string" : "e", "attrId" : 177, "flatCharIndex" : 12 }, { "string" : "m", "attrId" : 177, "flatCharIndex" : 13 }, { "string" : "[", "attrId" : 184, "flatCharIndex" : 14 }, { "string" : "\\", "attrId" : 177, "flatCharIndex" : 15 }, { "string" : "t", "attrId" : 177, "flatCharIndex" : 16 }, { "string" : "e", "attrId" : 177, "flatCharIndex" : 17 }, { "string" : "x", "attrId" : 177, "flatCharIndex" : 18 }, { "string" : "t", "attrId" : 177, "flatCharIndex" : 19 }, { "string" : "g", "attrId" : 177, "flatCharIndex" : 20 }, { "string" : "r", "attrId" : 177, "flatCharIndex" : 21 }, { "string" : "e", "attrId" : 177, "flatCharIndex" : 22 }, { "string" : "e", "attrId" : 177, "flatCharIndex" : 23 }, { "string" : "k", "attrId" : 177, "flatCharIndex" : 24 }, { "string" : "{", "attrId" : 184, "flatCharIndex" : 25 }, { "string" : "ἀ", "attrId" : 73, "flatCharIndex" : 26 }, { "string" : "ν", "attrId" : 73, "flatCharIndex" : 27 }, { "string" : "δ", "attrId" : 73, "flatCharIndex" : 28 }, { "string" : "ρ", "attrId" : 73, "flatCharIndex" : 29 }, { "string" : "ι", "attrId" : 73, "flatCharIndex" : 30 }, { "string" : "α", "attrId" : 73, "flatCharIndex" : 31 }, { "string" : "ν", "attrId" : 73, "flatCharIndex" : 32 }, { "string" : "τ", "attrId" : 73, "flatCharIndex" : 33 }, { "string" : "ο", "attrId" : 73, "flatCharIndex" : 34 }, { "string" : "π", "attrId" : 73, "flatCharIndex" : 35 }, { "string" : "ο", "attrId" : 73, "flatCharIndex" : 36 }, { "string" : "ι", "attrId" : 73, "flatCharIndex" : 37 }, { "string" : "ό", "attrId" : 73, "flatCharIndex" : 38 }, { "string" : "ς", "attrId" : 73, "flatCharIndex" : 39 }, { "string" : "}", "attrId" : 184, "flatCharIndex" : 40 }, { "string" : "]", "attrId" : 184, "flatCharIndex" : 41 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 42 }, { "string" : "a", "attrId" : 73, "flatCharIndex" : 43 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 44 }, { "string" : "s", "attrId" : 73, "flatCharIndex" : 45 }, { "string" : "t", "attrId" : 73, "flatCharIndex" : 46 }, { "string" : "a", "attrId" : 73, "flatCharIndex" : 47 }, { "string" : "t", "attrId" : 73, "flatCharIndex" : 48 }, { "string" : "u", "attrId" : 73, "flatCharIndex" : 49 }, { "string" : "e", "attrId" : 73, "flatCharIndex" : 50 }, { "string" : "-", "attrId" : 73, "flatCharIndex" : 51 }, { "string" : "m", "attrId" : 73, "flatCharIndex" : 52 }, { "string" : "a", "attrId" : 73, "flatCharIndex" : 53 }, { "string" : "k", "attrId" : 73, "flatCharIndex" : 54 }, { "string" : "e", "attrId" : 73, "flatCharIndex" : 55 }, { "string" : "r", "attrId" : 73, "flatCharIndex" : 56 }, { "string" : ",", "attrId" : 73, "flatCharIndex" : 57 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 58 }, { "string" : "s", "attrId" : 73, "flatCharIndex" : 59 }, { "string" : "t", "attrId" : 73, "flatCharIndex" : 60 }, { "string" : "a", "attrId" : 73, "flatCharIndex" : 61 }, { "string" : "t", "attrId" : 73, "flatCharIndex" : 62 }, { "string" : "u", "attrId" : 73, "flatCharIndex" : 63 }, { "string" : "a", "attrId" : 73, "flatCharIndex" : 64 }, { "string" : "r", "attrId" : 73, "flatCharIndex" : 65 }, { "string" : "y", "attrId" : 73, "flatCharIndex" : 66 }, { "string" : ",", "attrId" : 73, "flatCharIndex" : 67 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 68 }, { "string" : "s", "attrId" : 73, "flatCharIndex" : 69 }, { "string" : "c", "attrId" : 73, "flatCharIndex" : 70 }, { "string" : "u", "attrId" : 73, "flatCharIndex" : 71 }, { "string" : "l", "attrId" : 73, "flatCharIndex" : 72 }, { "string" : "p", "attrId" : 73, "flatCharIndex" : 73 }, { "string" : "t", "attrId" : 73, "flatCharIndex" : 74 }, { "string" : "o", "attrId" : 73, "flatCharIndex" : 75 }, { "string" : "r", "attrId" : 73, "flatCharIndex" : 76 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 77 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 78 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 79 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 80 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 81 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 82 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 83 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 84 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 85 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 86 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 87 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 88 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 89 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 90 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 91 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 92 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 93 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 94 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 95 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 96 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 97 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 98 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 99 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 100 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 101 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 102 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 103 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 104 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 105 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 106 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 107 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 108 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 109 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 110 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 111 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 112 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 113 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 114 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 115 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 116 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 117 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 118 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 119 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 120 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 121 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 122 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 123 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 124 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 125 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 126 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 127 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 128 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 129 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 130 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 131 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 132 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 133 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 134 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 135 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 136 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 137 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 138 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 139 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 140 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 141 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 142 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 143 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 144 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 145 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 146 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 147 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 148 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 149 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 150 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 151 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 152 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 153 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 154 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 155 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 156 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 161 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 162 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 163 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 164 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 165 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 166 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 167 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 168 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 169 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 170 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 171 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 172 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 173 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 174 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 175 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 176 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 177 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 178 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 179 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 180 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 181 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 182 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 183 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 184 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 185 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 186 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 188 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 189 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 190 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 191 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 192 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 193 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 194 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 195 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 197 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 198 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 199 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 200 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 201 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 202 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 203 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 204 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 205 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 206 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 208 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 209 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 211 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 212 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 214 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 215 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 216 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 218 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 220 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 221 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 222 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 223 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 225 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 226 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 227 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 228 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 229 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 230 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 231 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 232 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 233 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 234 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 236 }, { "string" : "m", "attrId" : 79, "flatCharIndex" : 237 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 238 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 239 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 240 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 241 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 243 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 244 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 245 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 246 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 256 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 276 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 305 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 306 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 307 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 308 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 309 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 314 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 315 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 316 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 317 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 318 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 319 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 320 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 321 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 322 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 323 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 324 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 325 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 326 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 327 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 328 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 329 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 330 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 331 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 332 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 333 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 334 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 335 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 336 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 337 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 338 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 339 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 340 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 342 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 343 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 344 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 345 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 346 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 347 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 348 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 350 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 351 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 352 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 354 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 355 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 356 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 357 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 358 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 359 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 360 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 361 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 389 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 409 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 429 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 458 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 459 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 460 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 461 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 462 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 467 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 468 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 469 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 470 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 471 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 472 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 473 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 474 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 475 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 476 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 477 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 478 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 479 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 480 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 481 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 482 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 483 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 484 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 485 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 486 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 487 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 488 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 489 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 490 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 491 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 492 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 493 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 495 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 496 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 497 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 499 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 500 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 502 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 503 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 504 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 505 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 506 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 507 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 508 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 510 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 511 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 512 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 514 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 515 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 516 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 517 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 518 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 519 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 520 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 521 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 542 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 562 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 582 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 611 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 612 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 613 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 614 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 615 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 620 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 621 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 622 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 623 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 624 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 625 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 626 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 627 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 628 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 629 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 630 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 631 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 632 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 633 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 634 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 635 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 636 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 637 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 638 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 639 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 640 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 641 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 642 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 644 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 645 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 646 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 647 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 648 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 649 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 650 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 651 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 652 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 653 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 654 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 655 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 656 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 657 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 658 }, { "string" : "\\", "attrId" : 99, "flatCharIndex" : 659 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 660 }, { "string" : "e", "attrId" : 99, "flatCharIndex" : 661 }, { "string" : "x", "attrId" : 99, "flatCharIndex" : 662 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 663 }, { "string" : "i", "attrId" : 99, "flatCharIndex" : 664 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 665 }, { "string" : "{", "attrId" : 99, "flatCharIndex" : 666 }, { "string" : "p", "attrId" : 179, "flatCharIndex" : 667 }, { "string" : "r", "attrId" : 179, "flatCharIndex" : 668 }, { "string" : "e", "attrId" : 179, "flatCharIndex" : 669 }, { "string" : "p", "attrId" : 179, "flatCharIndex" : 670 }, { "string" : "o", "attrId" : 179, "flatCharIndex" : 671 }, { "string" : "s", "attrId" : 179, "flatCharIndex" : 672 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 673 }, { "string" : "t", "attrId" : 179, "flatCharIndex" : 674 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 675 }, { "string" : "o", "attrId" : 179, "flatCharIndex" : 676 }, { "string" : "n", "attrId" : 179, "flatCharIndex" : 677 }, { "string" : " ", "attrId" : 179, "flatCharIndex" : 678 }, { "string" : "w", "attrId" : 179, "flatCharIndex" : 679 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 680 }, { "string" : "t", "attrId" : 179, "flatCharIndex" : 681 }, { "string" : "h", "attrId" : 179, "flatCharIndex" : 682 }, { "string" : " ", "attrId" : 179, "flatCharIndex" : 683 }, { "string" : "g", "attrId" : 179, "flatCharIndex" : 684 }, { "string" : "e", "attrId" : 179, "flatCharIndex" : 685 }, { "string" : "n", "attrId" : 179, "flatCharIndex" : 686 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 687 }, { "string" : "t", "attrId" : 179, "flatCharIndex" : 688 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 689 }, { "string" : "v", "attrId" : 179, "flatCharIndex" : 690 }, { "string" : "e", "attrId" : 179, "flatCharIndex" : 691 }, { "string" : "}", "attrId" : 99, "flatCharIndex" : 692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 693 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 694 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 695 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 696 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 697 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 698 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 699 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 700 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 702 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 703 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 704 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 705 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 706 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 708 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 709 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 710 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 711 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 712 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 714 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 715 }, { "string" : "a", "attrId" : 79, "flatCharIndex" : 716 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 718 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 719 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 720 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 721 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 722 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 724 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 725 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 726 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 727 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 728 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 729 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 730 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 732 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 733 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 734 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 735 }, { "string" : "d", "attrId" : 79, "flatCharIndex" : 736 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 738 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 739 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 740 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 741 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 764 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 765 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 766 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 767 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 768 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 773 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 774 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 775 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 776 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 777 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 778 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 779 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 780 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 781 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 782 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 783 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 784 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 785 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 786 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 787 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 788 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 789 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 790 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 791 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 792 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 793 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 794 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 795 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 796 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 797 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 798 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 799 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 801 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 802 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 803 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 804 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 805 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 806 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 807 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 808 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 809 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 811 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 812 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 813 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 814 }, { "string" : "ῦ", "attrId" : 0, "flatCharIndex" : 815 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 816 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 817 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 818 }, { "string" : "\/", "attrId" : 0, "flatCharIndex" : 819 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 820 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 821 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 822 }, { "string" : "ῦ", "attrId" : 0, "flatCharIndex" : 823 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 824 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 825 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 826 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 827 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 829 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 830 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 831 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 832 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 833 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 835 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 836 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 837 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 838 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 839 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 840 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 841 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 842 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 843 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 845 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 846 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 847 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 848 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 849 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 850 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 851 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 852 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 853 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 855 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 856 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 857 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 858 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 859 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 860 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 868 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 888 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 917 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 918 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 919 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 920 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 921 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 926 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 927 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 928 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 929 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 930 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 931 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 932 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 933 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 934 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 935 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 936 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 937 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 938 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 939 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 940 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 941 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 942 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 943 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 944 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 945 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 946 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 947 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 949 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 950 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 951 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 952 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 953 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 954 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 955 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 957 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 958 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 959 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 961 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 962 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 963 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 964 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 965 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 966 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 967 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 968 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 969 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 970 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 971 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 972 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 973 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 974 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 975 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 977 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 978 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 979 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 980 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 982 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 983 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 984 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 985 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 986 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 987 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 988 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1001 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1021 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1041 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1070 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 1071 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 1072 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1073 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 1074 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1079 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1080 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1081 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1082 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1083 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 1084 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 1085 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1086 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1087 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1088 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 1089 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1090 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 1091 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1092 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1093 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1094 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 1095 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1096 }, { "string" : "Ἀ", "attrId" : 0, "flatCharIndex" : 1097 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1098 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 1099 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 1100 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 1101 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 1102 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 1103 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1104 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1106 }, { "string" : "Ἀ", "attrId" : 0, "flatCharIndex" : 1107 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1108 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 1109 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 1110 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 1111 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 1112 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 1113 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1114 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 1115 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 1116 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1118 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 1119 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1120 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 1121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1122 }, { "string" : "A", "attrId" : 0, "flatCharIndex" : 1123 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1124 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1125 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 1126 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1127 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1128 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1129 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1130 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1132 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 1133 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1135 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1136 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1137 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1138 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1140 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1141 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1142 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1143 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1144 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 1145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1154 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1174 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1194 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1223 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 1224 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 1225 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1226 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 1227 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1232 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1233 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1234 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1235 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1236 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 1237 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 1238 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1239 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1240 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1241 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 1242 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1243 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 1244 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1245 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1246 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1247 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 1248 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1249 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 1250 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1251 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 1252 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 1253 }, { "string" : "ώ", "attrId" : 0, "flatCharIndex" : 1254 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 1255 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 1256 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1257 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 1258 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 1259 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1260 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 1261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1262 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1263 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 1264 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1266 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 1267 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1268 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1269 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1271 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1272 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1274 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 1275 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1276 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1277 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1278 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1279 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1280 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1281 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1282 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1284 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1285 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1287 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1289 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1290 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1291 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1292 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1293 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1294 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1295 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 1296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1297 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 1298 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1299 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1300 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1301 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1307 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1327 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1347 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1376 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 1377 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 1378 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1379 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 1380 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1385 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1386 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1387 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1388 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1389 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 1390 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 1391 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1392 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1393 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1394 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 1395 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1396 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 1397 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1398 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1399 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1400 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 1401 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1402 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 1403 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1404 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 1405 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 1406 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 1407 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 1408 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 1409 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 1410 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1412 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 1413 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1414 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 1415 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 1416 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 1417 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 1418 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 1419 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 1420 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1422 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 1423 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1424 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 1425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1426 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1427 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 1428 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 1429 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1430 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 1431 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1432 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 1433 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 1434 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 1435 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1436 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1437 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1438 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 1439 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1440 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 1441 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1442 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1443 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1444 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1446 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 1447 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1448 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1449 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1450 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1451 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1453 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1454 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1455 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1456 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1457 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1458 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1460 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1480 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1500 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1529 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 1530 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 1531 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1532 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 1533 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1538 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1539 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1540 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1541 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1542 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 1543 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 1544 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1545 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1546 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1547 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 1548 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1549 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 1550 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1551 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1552 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1553 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 1554 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1555 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 1556 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1557 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 1558 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 1559 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 1560 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1562 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 1563 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1564 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 1565 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 1566 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 1567 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 1568 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1570 }, { "string" : "ἡ", "attrId" : 0, "flatCharIndex" : 1571 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1572 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 1573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1574 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1575 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1576 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1577 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 1578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1579 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1580 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 1581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1582 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1583 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1584 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1585 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1586 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1587 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1588 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1590 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1591 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1592 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1593 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1594 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1595 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 1596 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1597 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1598 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 1599 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 1600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1601 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1602 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 1603 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1604 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1605 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1606 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 1607 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1608 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1609 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1610 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1611 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1612 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1613 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 1614 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1615 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1616 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1618 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1619 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1620 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1621 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 1622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1623 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1624 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 1625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1626 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1627 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1628 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1629 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1630 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1631 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 1632 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1633 }, { "string" : "r", "attrId" : 79, "flatCharIndex" : 1634 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1635 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1636 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1637 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1638 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1639 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 1640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1641 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1642 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1643 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 1644 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1645 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1646 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1647 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1648 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1650 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 1651 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1652 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1653 }, { "string" : "y", "attrId" : 79, "flatCharIndex" : 1654 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1656 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1657 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1658 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1659 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1682 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 1683 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 1684 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1685 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1686 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1691 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1692 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1693 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1694 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1695 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 1696 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 1697 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1698 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1699 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1700 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 1701 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1702 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 1703 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1704 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1705 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1706 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 1707 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1708 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 1709 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1710 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 1711 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 1712 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 1713 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 1714 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 1715 }, { "string" : "ζ", "attrId" : 0, "flatCharIndex" : 1716 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 1717 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1719 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 1720 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1721 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 1722 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 1723 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 1724 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 1725 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 1726 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 1727 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 1728 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 1729 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 1730 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 1731 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1733 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 1734 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1735 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 1736 }, { "string" : "ῄ", "attrId" : 0, "flatCharIndex" : 1737 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 1738 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 1739 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 1740 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 1741 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1742 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 1743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1744 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1745 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1746 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1747 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1748 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1749 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1750 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1752 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1753 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1755 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1756 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1757 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1758 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1759 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1760 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1766 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1786 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1806 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 1807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1835 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 1836 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 1837 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1838 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 1839 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1844 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1845 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1846 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1847 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1848 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 1849 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 1850 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1851 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1852 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1853 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 1854 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 1855 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 1856 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 1857 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1858 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 1859 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 1860 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 1861 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 1862 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 1863 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 1864 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 1865 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 1866 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 1867 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 1868 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 1869 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 1870 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 1871 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 1872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1873 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 1874 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1876 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1877 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1879 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1880 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 1881 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1882 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 1883 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1884 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1885 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1886 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1887 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1889 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1890 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1891 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1892 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1893 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1894 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1895 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 1896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1897 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1898 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1899 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1900 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1901 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1902 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1903 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1904 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1905 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1906 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1907 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1908 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 1909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1910 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1911 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1912 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1913 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1914 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 1915 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1917 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 1918 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 1919 }, { "string" : "o", "attrId" : 79, "flatCharIndex" : 1920 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1922 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1923 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 1924 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1925 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1926 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1927 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 1928 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1929 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1930 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1931 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 1932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1933 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1934 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1935 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1936 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1937 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1938 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1939 }, { "string" : ",", "attrId" : 79, "flatCharIndex" : 1940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1941 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1942 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1943 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1944 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1945 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1946 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 1947 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1948 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 1949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1950 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 1951 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 1952 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1953 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 1954 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 1955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1956 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 1957 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1958 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 1959 }, { "string" : "i", "attrId" : 79, "flatCharIndex" : 1960 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 1961 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1962 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 1963 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 1964 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 1965 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 1966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1967 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 1968 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 1969 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 1970 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 1971 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 1972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1988 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 1989 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 1990 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 1991 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 1992 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 1993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 1997 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 1998 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 1999 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2000 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2001 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2002 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 2003 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2004 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2005 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2006 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 2007 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2008 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2009 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2010 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2011 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2012 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 2013 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2014 }, { "string" : "Ἄ", "attrId" : 0, "flatCharIndex" : 2015 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 2016 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 2017 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 2018 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 2019 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 2020 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2022 }, { "string" : "Ἀ", "attrId" : 0, "flatCharIndex" : 2023 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 2024 }, { "string" : "ύ", "attrId" : 0, "flatCharIndex" : 2025 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 2026 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 2027 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 2028 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2030 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 2031 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2032 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 2033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2034 }, { "string" : "A", "attrId" : 0, "flatCharIndex" : 2035 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2036 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 2037 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2038 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2039 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2040 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2042 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2043 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2045 }, { "string" : "A", "attrId" : 0, "flatCharIndex" : 2046 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2047 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2048 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2049 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2050 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2051 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2052 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2054 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2055 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2056 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 2057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2058 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2059 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2060 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2062 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2063 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 2064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2065 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2066 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2067 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2069 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2070 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2071 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2072 }, { "string" : "u", "attrId" : 79, "flatCharIndex" : 2073 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2074 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2075 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2076 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2078 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2079 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 2080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2081 }, { "string" : "S", "attrId" : 0, "flatCharIndex" : 2082 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2083 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2084 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2085 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2086 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2087 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2088 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2090 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2091 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2092 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2093 }, { "string" : "3", "attrId" : 0, "flatCharIndex" : 2094 }, { "string" : "9", "attrId" : 0, "flatCharIndex" : 2095 }, { "string" : "9", "attrId" : 0, "flatCharIndex" : 2096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2097 }, { "string" : "B", "attrId" : 0, "flatCharIndex" : 2098 }, { "string" : "C", "attrId" : 0, "flatCharIndex" : 2099 }, { "string" : "E", "attrId" : 0, "flatCharIndex" : 2100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2112 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2141 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 2142 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 2143 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 2144 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 2145 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2150 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2151 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2152 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2153 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2154 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2155 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 2156 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2157 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2158 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2159 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 2160 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2161 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2162 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2163 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2164 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2165 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 2166 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2167 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 2168 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 2169 }, { "string" : "ύ", "attrId" : 0, "flatCharIndex" : 2170 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 2171 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2172 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 2173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2174 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2175 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 2176 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 2177 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2178 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2179 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2180 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2182 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2183 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2184 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2185 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2186 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2187 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 2188 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2189 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2191 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2192 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2193 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2194 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2195 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 2196 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2197 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2198 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2199 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2200 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2201 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2203 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2204 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2205 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 2206 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2207 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2208 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2209 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2210 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2225 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2245 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2265 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2294 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 2295 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 2296 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 2297 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 2298 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2303 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2304 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2305 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2306 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2307 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2308 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 2309 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2310 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2311 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2312 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 2313 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2314 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2315 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2316 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2317 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2318 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 2319 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2320 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 2321 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 2322 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 2323 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2324 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 2325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2326 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2327 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2328 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 2329 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2330 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2331 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2332 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2333 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2334 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 2335 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2336 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2337 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2338 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 2339 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2340 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2341 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2342 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2344 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2345 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2346 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2347 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 2348 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2349 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2351 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2352 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2353 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 2354 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2355 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2356 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 2357 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 2358 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2359 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 2360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2378 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2398 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2418 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2447 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 2448 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 2449 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 2450 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 2451 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2456 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2457 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2458 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2459 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2460 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2461 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 2462 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2463 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2464 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2465 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 2466 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2467 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2468 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2469 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2470 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2471 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 2472 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2473 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 2474 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2475 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 2476 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 2477 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 2478 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2480 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 2481 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2482 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 2483 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 2484 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2486 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 2487 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2488 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 2489 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 2490 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 2491 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2492 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 2493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2494 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2495 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2496 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 2497 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2498 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2499 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2500 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2501 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2502 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 2503 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2504 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2505 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2506 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 2507 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2508 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 2509 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2510 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2511 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 2512 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2513 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2514 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2515 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 2516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2517 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2518 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2520 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 2521 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2522 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2523 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2524 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2526 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2527 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 2528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2529 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2530 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2531 }, { "string" : "k", "attrId" : 79, "flatCharIndex" : 2532 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2534 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 2535 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2536 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2537 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2538 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2539 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2541 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 2542 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2543 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2544 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2545 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2547 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2548 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2550 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 2551 }, { "string" : "u", "attrId" : 79, "flatCharIndex" : 2552 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2553 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2555 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2556 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2571 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 2572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2600 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 2601 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 2602 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 2603 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 2604 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2609 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2610 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2611 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2612 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2613 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2614 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 2615 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2616 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2617 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2618 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 2619 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2620 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2621 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2622 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2623 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2624 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 2625 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2626 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 2627 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2628 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 2629 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 2630 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 2631 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2633 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 2634 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2635 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 2636 }, { "string" : "ώ", "attrId" : 0, "flatCharIndex" : 2637 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 2638 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 2639 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2641 }, { "string" : "ἠ", "attrId" : 0, "flatCharIndex" : 2642 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2643 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 2644 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 2645 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 2646 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 2647 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2649 }, { "string" : "ἠ", "attrId" : 0, "flatCharIndex" : 2650 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2651 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 2652 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 2653 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 2654 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 2655 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2657 }, { "string" : "ἠ", "attrId" : 0, "flatCharIndex" : 2658 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2659 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 2660 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 2661 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 2662 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 2663 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 2664 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2666 }, { "string" : "ἠ", "attrId" : 0, "flatCharIndex" : 2667 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 2668 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 2669 }, { "string" : "ώ", "attrId" : 0, "flatCharIndex" : 2670 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 2671 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 2672 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 2673 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2674 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 2675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2676 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2677 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2678 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 2679 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2680 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2681 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2682 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2683 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 2684 }, { "string" : "o", "attrId" : 175, "flatCharIndex" : 2685 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2686 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2687 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2688 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 2689 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2690 }, { "string" : "j", "attrId" : 0, "flatCharIndex" : 2691 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2692 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 2693 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 2694 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2696 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 2697 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2698 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2699 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2700 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2701 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 2702 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2704 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 2705 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2706 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2707 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2708 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 2709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2710 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 2711 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2712 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2713 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2714 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2715 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 2716 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2717 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2718 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 2719 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 2720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2721 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2722 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2723 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2724 }, { "string" : "r", "attrId" : 79, "flatCharIndex" : 2725 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2726 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2727 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2728 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2729 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2731 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2732 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 2733 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2734 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2735 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2736 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2737 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2738 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2739 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2741 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 2742 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2743 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2744 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2745 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2746 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 2747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2748 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2749 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2750 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2751 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2752 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2753 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 2754 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2755 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2756 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2757 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2758 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 2759 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2760 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2762 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2763 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2764 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2765 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2766 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2767 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2768 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2769 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2770 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2771 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2772 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2773 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2775 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 2776 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2777 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2778 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2779 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2781 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2782 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2784 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 2785 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2786 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2787 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2788 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2789 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 2790 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2791 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2792 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 2793 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 2794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2795 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2796 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2797 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 2798 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2799 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2800 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2801 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2802 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2804 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2805 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2806 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2807 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2808 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 2809 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2811 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2812 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2813 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 2814 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2815 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2816 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2817 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2906 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 2907 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 2908 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 2909 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 2910 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 2911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2915 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2916 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 2917 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2918 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2919 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 2920 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 2921 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 2922 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2923 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2924 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 2925 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 2926 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 2927 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 2928 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2929 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 2930 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 2931 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 2932 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 2933 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 2934 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 2935 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 2936 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 2937 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 2938 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 2939 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 2940 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 2941 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 2942 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 2943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2944 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2945 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2946 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2947 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2948 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2949 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2950 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2952 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2953 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2954 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2955 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2956 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 2957 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2958 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2959 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2960 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 2961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2962 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2963 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2964 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2965 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2966 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2967 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 2968 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2969 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2971 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2972 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 2973 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 2974 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2975 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2976 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2977 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 2978 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2980 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 2981 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2982 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 2983 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2984 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2985 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2986 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 2987 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 2988 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 2989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 2990 }, { "string" : "p", "attrId" : 79, "flatCharIndex" : 2991 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 2992 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 2993 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 2994 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 2995 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 2996 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 2997 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 2998 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 2999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3000 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3001 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3002 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3003 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3004 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3005 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3006 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 3007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3008 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3009 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3010 }, { "string" : "d", "attrId" : 79, "flatCharIndex" : 3011 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3012 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3030 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3059 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 3060 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 3061 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 3062 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 3063 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3068 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3069 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3070 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3071 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3072 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3073 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 3074 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3075 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3076 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3077 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 3078 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3079 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3080 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 3081 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3082 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3083 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 3084 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3085 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 3086 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3087 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 3088 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 3089 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 3090 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3091 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 3092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3093 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3094 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3095 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3096 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 3097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3098 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3099 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 3100 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3101 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 3102 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3104 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3105 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3106 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3107 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3108 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 3109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3110 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3111 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 3112 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 3113 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 3114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3115 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 3116 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3117 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 3118 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3120 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 3121 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3122 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 3123 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3124 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3125 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3127 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3128 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3129 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 3130 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3131 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3132 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3134 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3135 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 3136 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 3137 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 3138 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3139 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3140 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3142 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3143 }, { "string" : "r", "attrId" : 79, "flatCharIndex" : 3144 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3145 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3146 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3147 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3163 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3183 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3212 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 3213 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 3214 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 3215 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 3216 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3221 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3222 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3223 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3224 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3225 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3226 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 3227 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3228 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3229 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3230 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 3231 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3232 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3233 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 3234 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3235 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3236 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 3237 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3238 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 3239 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3240 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 3241 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 3242 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 3243 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3245 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 3246 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3247 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 3248 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 3249 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 3250 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 3251 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 3252 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3253 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 3254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3255 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3256 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 3257 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3258 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3259 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 3260 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3261 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3262 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3263 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3264 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3266 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 3267 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3268 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3269 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 3270 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3271 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 3272 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3274 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3275 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 3276 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3277 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3278 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 3279 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3280 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3281 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3296 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3316 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3336 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3365 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 3366 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 3367 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 3368 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 3369 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3374 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3375 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3376 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3377 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3378 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3379 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 3380 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3381 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3382 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3383 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 3384 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3385 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3386 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 3387 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3388 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3389 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 3390 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3391 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 3392 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3393 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 3394 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 3395 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 3396 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 3397 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 3398 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 3399 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 3400 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3401 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 3402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3403 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3404 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3405 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3407 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 3408 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3409 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3410 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3411 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3413 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3414 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3415 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3416 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3417 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3418 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3419 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3420 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3422 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 3423 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3424 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3425 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3426 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 3427 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3428 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3429 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 3430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3431 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3432 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3433 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3434 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 3435 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3437 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3438 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 3439 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 3440 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3442 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 3443 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 3444 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3445 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3446 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3448 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3449 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 3450 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3451 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3452 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3454 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 3455 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 3456 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3457 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3458 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 3459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3460 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3462 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 3463 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3464 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3465 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3466 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3467 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3468 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 3469 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 3470 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 3471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3489 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3518 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 3519 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 3520 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 3521 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 3522 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3527 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3528 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3529 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3530 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3531 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3532 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 3533 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3534 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3535 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3536 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 3537 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3538 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3539 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 3540 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3541 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3542 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 3543 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3544 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 3545 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3546 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 3547 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 3548 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3549 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 3550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3551 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3552 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3553 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3554 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3555 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3557 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3558 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3559 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3560 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3562 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3563 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3564 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3565 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 3566 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3568 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3569 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3570 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 3571 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3573 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 3574 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3575 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 3576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3577 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3578 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3579 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3602 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3622 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3642 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3671 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 3672 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 3673 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 3674 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 3675 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3680 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3681 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3682 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3683 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3684 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3685 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 3686 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3687 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3688 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3689 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 3690 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3691 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3692 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 3693 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3694 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3695 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 3696 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3697 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 3698 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3699 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 3700 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 3701 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3703 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 3704 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3705 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 3706 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 3707 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 3708 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3710 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 3711 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3712 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 3713 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 3714 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3715 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 3716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3717 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3718 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3719 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 3720 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 3721 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3722 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3723 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 3724 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 3725 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 3726 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3727 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3728 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3729 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 3730 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3731 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 3732 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 3733 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3734 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3735 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3737 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3738 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3739 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3740 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3742 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3743 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 3744 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3746 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 3747 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 3748 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 3749 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 3750 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3755 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3775 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3795 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3824 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 3825 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 3826 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 3827 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 3828 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3833 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3834 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3835 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3836 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3837 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3838 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 3839 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3840 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3841 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3842 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 3843 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3844 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3845 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 3846 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3847 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3848 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 3849 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 3850 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 3851 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 3852 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 3853 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 3854 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 3855 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 3856 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 3857 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 3858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3859 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 3860 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3862 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3863 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 3864 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3865 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 3866 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 3867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3868 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 3869 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3871 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 3872 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 3873 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3874 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3875 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3876 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 3877 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 3878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3879 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 3880 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 3881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3882 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 3883 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3884 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3885 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 3886 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 3887 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 3888 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 3889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3908 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3928 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3948 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 3949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3977 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 3978 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 3979 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 3980 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 3981 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 3982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 3986 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3987 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 3988 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3989 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3990 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 3991 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 3992 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 3993 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3994 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 3995 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 3996 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 3997 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 3998 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 3999 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4000 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4001 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 4002 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4003 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 4004 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 4005 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 4006 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 4007 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 4008 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 4009 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4010 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4012 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 4013 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4015 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4016 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4017 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4018 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4019 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4021 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4022 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4023 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 4024 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4025 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4026 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4027 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4029 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4030 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4031 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4032 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4033 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4034 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4035 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4036 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4038 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 4039 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4040 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4041 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4043 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4044 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4045 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4046 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4047 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4049 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4050 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4051 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4052 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4054 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 4055 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4056 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4057 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4058 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4059 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4061 }, { "string" : "f", "attrId" : 79, "flatCharIndex" : 4062 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4063 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4064 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4081 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4101 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4130 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 4131 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 4132 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 4133 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 4134 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4139 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4140 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4141 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4142 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4143 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4144 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 4145 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4146 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4147 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4148 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 4149 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4150 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4151 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 4152 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4153 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4154 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 4155 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4156 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 4157 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 4158 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 4159 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 4160 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 4161 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 4162 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 4163 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4165 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 4166 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 4167 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 4168 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 4169 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 4170 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 4171 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 4172 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4173 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4175 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4176 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4177 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4178 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 4179 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 4180 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4181 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4182 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4183 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4184 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4185 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 4186 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4187 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4188 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4190 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4191 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4192 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4193 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4194 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4195 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4196 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4197 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4199 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4200 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4201 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4202 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 4203 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 4204 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4205 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4206 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4207 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4208 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4209 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4210 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4211 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4213 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4214 }, { "string" : "i", "attrId" : 79, "flatCharIndex" : 4215 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4216 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 4217 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4218 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4219 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4221 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 4222 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4223 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4224 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4225 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4226 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4227 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4228 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 4229 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4231 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 4232 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4233 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4234 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 4235 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4236 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4238 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4239 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4240 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4241 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4242 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4243 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4244 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4245 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4247 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 4248 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4250 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4252 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 4253 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4254 }, { "string" : "n", "attrId" : 79, "flatCharIndex" : 4255 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4256 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4257 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4258 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 4259 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4260 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 4261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4283 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 4284 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 4285 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 4286 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 4287 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4292 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4293 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4294 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4295 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4296 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4297 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 4298 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4299 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4300 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4301 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 4302 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4303 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4304 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 4305 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4306 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4307 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 4308 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4309 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 4310 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 4311 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 4312 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 4313 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 4314 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 4315 }, { "string" : "ζ", "attrId" : 0, "flatCharIndex" : 4316 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 4317 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 4318 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 4319 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 4320 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4321 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4323 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4324 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4325 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4326 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4327 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4328 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 4329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4330 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4331 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4332 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4333 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4335 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4336 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4337 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4338 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4340 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4341 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4342 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4344 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 4345 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4346 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4347 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 4348 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4349 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4350 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4351 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4367 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4387 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4407 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4436 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 4437 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 4438 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 4439 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 4440 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4445 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4446 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4447 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4448 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4449 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4450 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 4451 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4452 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4453 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4454 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 4455 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4456 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4457 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 4458 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4459 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4460 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 4461 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4462 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 4463 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 4464 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 4465 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 4466 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 4467 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 4468 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 4469 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4470 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4472 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4473 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4474 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4475 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 4476 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4477 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4478 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4480 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4481 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4482 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4483 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4484 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4485 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4487 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4488 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4489 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4491 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 4492 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4493 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4494 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4495 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4496 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 4497 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4499 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 4500 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4501 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4502 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4503 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4504 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4506 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4507 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4508 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4509 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 4510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4511 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4512 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4513 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4514 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4515 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 4516 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4517 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 4518 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4520 }, { "string" : "b", "attrId" : 79, "flatCharIndex" : 4521 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4523 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4524 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4525 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 4526 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4527 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4528 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4529 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4530 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4531 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4532 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4533 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4534 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4536 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4537 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4538 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4540 }, { "string" : "b", "attrId" : 79, "flatCharIndex" : 4541 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4542 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4543 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4544 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4545 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 4546 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4547 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4549 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 4550 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4551 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4552 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4553 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 4554 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4555 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4560 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4578 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4589 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 4590 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 4591 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 4592 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 4593 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4598 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4599 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4600 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4601 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4602 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4603 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 4604 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4605 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4606 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4607 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 4608 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4609 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4610 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 4611 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4612 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4613 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 4614 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4615 }, { "string" : "ἁ", "attrId" : 0, "flatCharIndex" : 4616 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 4617 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 4618 }, { "string" : "ῶ", "attrId" : 0, "flatCharIndex" : 4619 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 4620 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4621 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4623 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4624 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4625 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 4626 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 4627 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4628 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4629 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 4630 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 4631 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 4632 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4633 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4634 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4635 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 4636 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4637 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4638 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4639 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4640 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 4641 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4642 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4643 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4645 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4646 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4647 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4648 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 4649 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4650 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4651 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4653 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4654 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4656 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4657 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4658 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4660 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4661 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4662 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4673 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4693 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4713 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 4714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4742 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 4743 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 4744 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 4745 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 4746 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4751 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4752 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4753 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4754 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4755 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4756 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 4757 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4758 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4759 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4760 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 4761 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4762 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4763 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 4764 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4765 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4766 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 4767 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4768 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 4769 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 4770 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 4771 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4772 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 4773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4774 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 4775 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 4776 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 4777 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 4778 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 4779 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 4780 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 4781 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 4782 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 4783 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 4784 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 4785 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 4786 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 4787 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 4788 }, { "string" : "\\", "attrId" : 99, "flatCharIndex" : 4789 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 4790 }, { "string" : "e", "attrId" : 99, "flatCharIndex" : 4791 }, { "string" : "x", "attrId" : 99, "flatCharIndex" : 4792 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 4793 }, { "string" : "i", "attrId" : 99, "flatCharIndex" : 4794 }, { "string" : "t", "attrId" : 99, "flatCharIndex" : 4795 }, { "string" : "{", "attrId" : 99, "flatCharIndex" : 4796 }, { "string" : "p", "attrId" : 179, "flatCharIndex" : 4797 }, { "string" : "r", "attrId" : 179, "flatCharIndex" : 4798 }, { "string" : "e", "attrId" : 179, "flatCharIndex" : 4799 }, { "string" : "p", "attrId" : 179, "flatCharIndex" : 4800 }, { "string" : "o", "attrId" : 179, "flatCharIndex" : 4801 }, { "string" : "s", "attrId" : 179, "flatCharIndex" : 4802 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 4803 }, { "string" : "t", "attrId" : 179, "flatCharIndex" : 4804 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 4805 }, { "string" : "o", "attrId" : 179, "flatCharIndex" : 4806 }, { "string" : "n", "attrId" : 179, "flatCharIndex" : 4807 }, { "string" : " ", "attrId" : 179, "flatCharIndex" : 4808 }, { "string" : "w", "attrId" : 179, "flatCharIndex" : 4809 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 4810 }, { "string" : "t", "attrId" : 179, "flatCharIndex" : 4811 }, { "string" : "h", "attrId" : 179, "flatCharIndex" : 4812 }, { "string" : " ", "attrId" : 179, "flatCharIndex" : 4813 }, { "string" : "g", "attrId" : 179, "flatCharIndex" : 4814 }, { "string" : "e", "attrId" : 179, "flatCharIndex" : 4815 }, { "string" : "n", "attrId" : 179, "flatCharIndex" : 4816 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 4817 }, { "string" : "t", "attrId" : 179, "flatCharIndex" : 4818 }, { "string" : "i", "attrId" : 179, "flatCharIndex" : 4819 }, { "string" : "v", "attrId" : 179, "flatCharIndex" : 4820 }, { "string" : "e", "attrId" : 179, "flatCharIndex" : 4821 }, { "string" : "}", "attrId" : 99, "flatCharIndex" : 4822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4823 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4824 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4825 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4826 }, { "string" : "m", "attrId" : 79, "flatCharIndex" : 4827 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4829 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4830 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4831 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4832 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4834 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4835 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4836 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4837 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4838 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4840 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 4841 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4842 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4844 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4845 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4846 }, { "string" : "m", "attrId" : 79, "flatCharIndex" : 4847 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4848 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 4849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4850 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4851 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4852 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4853 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4854 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4855 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4857 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4858 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4859 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4860 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4861 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4863 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 4864 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 4865 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4866 }, { "string" : "h", "attrId" : 79, "flatCharIndex" : 4867 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4869 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4870 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 4871 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4872 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4873 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4874 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 4875 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 4876 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4878 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 4879 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4881 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 4882 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4883 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4884 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 4885 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4887 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4888 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4889 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 4890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4891 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 4892 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 4893 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 4894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4895 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 4896 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4897 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4898 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4899 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 4900 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4901 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4903 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 4904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4905 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 4906 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 4907 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 4908 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 4909 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 4910 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 4911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4912 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 4913 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 4914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 4999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5048 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 5049 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5050 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 5051 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 5052 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5057 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5058 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5059 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5060 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5061 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 5062 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 5063 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5064 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5065 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5066 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 5067 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5068 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 5069 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 5070 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5071 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5072 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 5073 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5074 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 5075 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 5076 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 5077 }, { "string" : "β", "attrId" : 0, "flatCharIndex" : 5078 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 5079 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 5080 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 5081 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 5082 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5083 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 5084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5085 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5086 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 5087 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5088 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5089 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5091 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5092 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5093 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5094 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 5095 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5097 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5098 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5099 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5100 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5101 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 5102 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5104 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5105 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 5106 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5107 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 5108 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5109 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5110 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5111 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 5112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5113 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5114 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5115 }, { "string" : "j", "attrId" : 0, "flatCharIndex" : 5116 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5117 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5118 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5119 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5121 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5122 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5123 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 5124 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5125 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5126 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5127 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5129 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 5130 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5131 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 5132 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5133 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5134 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5135 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5136 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5138 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5139 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5141 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5142 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5143 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 5144 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5145 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 5146 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5147 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 5148 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5149 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 5150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5152 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5172 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5201 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 5202 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5203 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 5204 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 5205 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5210 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5211 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5212 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5213 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5214 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 5215 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 5216 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5217 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5218 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5219 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 5220 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5221 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 5222 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 5223 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5224 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5225 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 5226 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5227 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 5228 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 5229 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 5230 }, { "string" : "β", "attrId" : 0, "flatCharIndex" : 5231 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 5232 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 5233 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 5234 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 5235 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5236 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 5237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5238 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 5239 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5240 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5241 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 5242 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5244 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5245 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5246 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 5247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5248 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5249 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5250 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5251 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5252 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 5253 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5254 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5255 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5256 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 5257 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5259 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5260 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5261 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 5262 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 5263 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5264 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5265 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5266 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5267 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 5268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5269 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5270 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5271 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5272 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5273 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 5274 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5276 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5277 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5278 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 5279 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5280 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5281 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5285 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5305 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5325 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5354 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 5355 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5356 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 5357 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 5358 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5363 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5364 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5365 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5366 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5367 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 5368 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 5369 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5370 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5371 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5372 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 5373 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5374 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 5375 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 5376 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5377 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5378 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 5379 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5380 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 5381 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 5382 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 5383 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 5384 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 5385 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 5386 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 5387 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 5388 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 5389 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 5390 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5391 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 5392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5393 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5394 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5395 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5396 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5397 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5398 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5399 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5400 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5402 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5403 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5404 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5405 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5406 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5407 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5408 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 5409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5410 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5411 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5412 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5413 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5414 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5415 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5416 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5418 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 5419 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5420 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5421 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5422 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5423 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5424 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 5425 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 5426 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 5427 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5429 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5430 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5431 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5432 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5433 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5434 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5435 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5436 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5438 }, { "string" : "a", "attrId" : 79, "flatCharIndex" : 5439 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5440 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 5441 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5442 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5458 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5478 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5507 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 5508 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5509 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 5510 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 5511 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5516 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5517 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5518 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5519 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5520 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 5521 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 5522 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5523 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5524 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5525 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 5526 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5527 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 5528 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 5529 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5530 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5531 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 5532 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5533 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 5534 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 5535 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 5536 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 5537 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 5538 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 5539 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 5540 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 5541 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5542 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 5543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5544 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 5545 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5547 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5548 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5549 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5550 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 5551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5552 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 5553 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5554 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5555 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 5556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5557 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 5558 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5559 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 5560 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5561 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5563 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 5564 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5566 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5567 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 5568 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5569 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5570 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5571 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5572 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5574 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5575 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5576 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5577 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5578 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5579 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 5580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5581 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5582 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5583 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5584 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 5585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5586 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 5587 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5588 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5589 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 5590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5591 }, { "string" : "h", "attrId" : 79, "flatCharIndex" : 5592 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5593 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 5594 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5611 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5631 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5660 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 5661 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5662 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 5663 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 5664 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5669 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5670 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5671 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5672 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5673 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 5674 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 5675 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5676 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5677 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5678 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 5679 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5680 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 5681 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 5682 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5683 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5684 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 5685 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5686 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 5687 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 5688 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 5689 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 5690 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 5691 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 5692 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 5693 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 5694 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 5695 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 5696 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 5697 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5698 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 5699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5700 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5701 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5702 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 5703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5704 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5705 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5706 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5707 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 5708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5709 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5710 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5712 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5713 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 5714 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 5715 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5717 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5718 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 5719 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5720 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5721 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5722 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5744 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5764 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5784 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 5785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5813 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 5814 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5815 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 5816 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 5817 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5822 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5823 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 5824 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5825 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5826 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 5827 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 5828 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 5829 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5830 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5831 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 5832 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 5833 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 5834 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 5835 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5836 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 5837 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 5838 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 5839 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 5840 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 5841 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 5842 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 5843 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 5844 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 5845 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 5846 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 5847 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 5848 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 5849 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 5850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5851 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 5852 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5853 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5854 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5856 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5857 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5858 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5860 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 5861 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5862 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5863 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5865 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 5866 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5867 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5868 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 5869 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5871 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5872 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5873 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 5874 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5875 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5876 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5877 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5878 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5880 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5881 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5882 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5883 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5884 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5885 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 5886 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 5887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5888 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 5889 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5890 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5891 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5893 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 5894 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5895 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 5896 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5897 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 5898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5899 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5900 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 5901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5902 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5903 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5904 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5905 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5907 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5908 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5910 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 5911 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5912 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5913 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 5914 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5916 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5917 }, { "string" : "a", "attrId" : 79, "flatCharIndex" : 5918 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 5919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5920 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 5921 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 5922 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5923 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 5924 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 5925 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 5926 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 5927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5928 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 5929 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5930 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 5931 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 5932 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5933 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 5934 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 5935 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 5936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5937 }, { "string" : "c", "attrId" : 79, "flatCharIndex" : 5938 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5939 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5940 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5941 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 5942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5943 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5944 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 5945 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 5946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5947 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 5948 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5949 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 5950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5951 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 5952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5953 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 5954 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5955 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5956 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 5957 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 5958 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 5959 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 5960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5961 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5962 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 5963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5964 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 5965 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 5966 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 5967 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5968 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5969 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5970 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 5971 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 5972 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 5973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 5999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6119 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 6120 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6121 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 6122 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 6123 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6128 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6129 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6130 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6131 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6132 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 6133 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 6134 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6135 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6136 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6137 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 6138 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6139 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6140 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 6141 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6142 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6143 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 6144 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6145 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6146 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6147 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6148 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 6149 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6150 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 6151 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 6152 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6153 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 6154 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6156 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6157 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6158 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6159 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 6160 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 6161 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6162 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6163 }, { "string" : "ῦ", "attrId" : 0, "flatCharIndex" : 6164 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 6165 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 6166 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 6167 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6169 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6170 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6171 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 6172 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 6173 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 6174 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6175 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6176 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6177 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6179 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6180 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6181 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6182 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 6183 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 6184 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 6185 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6186 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 6187 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6188 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 6189 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6191 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6192 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6193 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6194 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6196 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6197 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6198 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6199 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6200 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 6201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6202 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6203 }, { "string" : "m", "attrId" : 175, "flatCharIndex" : 6204 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 6205 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 6206 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6207 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6208 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 6209 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 6210 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 6211 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6212 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6213 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6214 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 6215 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6216 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6217 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6218 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6220 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6221 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6222 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6223 }, { "string" : ",", "attrId" : 79, "flatCharIndex" : 6224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6225 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6226 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6227 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6243 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6272 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 6273 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6274 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 6275 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 6276 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6281 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6282 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6283 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6284 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6285 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 6286 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 6287 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6288 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6289 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6290 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 6291 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6292 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6293 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 6294 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6295 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6296 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 6297 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6298 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6299 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6300 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6301 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6302 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 6303 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 6304 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6305 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 6306 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6307 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 6308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6309 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6310 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6311 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6312 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6313 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6314 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6315 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6317 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6318 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6319 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6320 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6321 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 6322 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6323 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 6324 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6325 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6327 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 6328 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6329 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6330 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 6331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6332 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 6333 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6334 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6335 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6336 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 6337 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6339 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 6340 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6341 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 6342 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6343 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 6344 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6346 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6347 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6348 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6349 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 6350 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6351 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 6352 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6353 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6354 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 6355 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6356 }, { "string" : "d", "attrId" : 79, "flatCharIndex" : 6357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6376 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6396 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6425 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 6426 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6427 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 6428 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 6429 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6434 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6435 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6436 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6437 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6438 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 6439 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 6440 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6441 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6442 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6443 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 6444 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6445 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6446 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 6447 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6448 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6449 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 6450 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6451 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6452 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6453 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6454 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6455 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 6456 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 6457 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6458 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 6459 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6461 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6462 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6463 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6464 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6465 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 6466 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 6467 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6468 }, { "string" : "ῶ", "attrId" : 0, "flatCharIndex" : 6469 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6471 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6472 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6473 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 6474 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6475 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 6476 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 6477 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6478 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 6479 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6481 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6482 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6483 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 6484 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6486 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6487 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6488 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6489 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6490 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 6491 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6492 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 6493 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 6494 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 6495 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 6496 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 6497 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6499 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6500 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6501 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 6502 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6503 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 6504 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 6505 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 6506 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 6507 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 6508 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6509 }, { "string" : "]", "attrId" : 185, "flatCharIndex" : 6510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6511 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6512 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 6513 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 6514 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 6515 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6516 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6517 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 6518 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 6519 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 6520 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6521 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6522 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6523 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 6524 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6525 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6526 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6527 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6528 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6529 }, { "string" : "r", "attrId" : 79, "flatCharIndex" : 6530 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6531 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6532 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6533 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6535 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6536 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6537 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 6538 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6539 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6540 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6541 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6543 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6544 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6545 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6546 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6547 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6548 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6549 }, { "string" : "g", "attrId" : 79, "flatCharIndex" : 6550 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 6551 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6552 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6553 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 6554 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6556 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 6557 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 6558 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6559 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6560 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6561 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6562 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6564 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 6565 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 6566 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6567 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6568 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6569 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 6570 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6572 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6573 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6574 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6576 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6577 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6578 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 6579 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6580 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6581 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6582 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6583 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6584 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6585 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6586 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6588 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6589 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6590 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6591 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6592 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6593 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 6594 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6595 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 6596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6597 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6598 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6599 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6600 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6601 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6602 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6603 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6604 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6606 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6607 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6608 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 6609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6610 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6611 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6613 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6614 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6615 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6616 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6617 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6618 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6619 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6620 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6621 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6623 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6624 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6625 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6626 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6627 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6628 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6629 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6631 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6632 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6634 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6635 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6636 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6637 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6638 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6639 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6640 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6641 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6643 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6644 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6645 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6646 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6647 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6648 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6650 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6651 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6652 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6653 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6654 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6655 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 6656 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6731 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 6732 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6733 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 6734 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 6735 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6740 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6741 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6742 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6743 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6744 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 6745 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 6746 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6747 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6748 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6749 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 6750 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6751 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6752 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 6753 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6754 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6755 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 6756 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6757 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6758 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6759 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 6760 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6761 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 6762 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 6763 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 6764 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 6765 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 6766 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6768 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6769 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6770 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6771 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 6772 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 6773 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 6774 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 6775 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 6776 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 6777 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 6778 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6780 }, { "string" : "ἡ", "attrId" : 0, "flatCharIndex" : 6781 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6782 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 6783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6784 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6785 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6786 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6787 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6788 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6789 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6790 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6791 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6792 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6793 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6794 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6796 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6797 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6798 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6799 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6800 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6801 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6802 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 6803 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6804 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6805 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6806 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6807 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6809 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6810 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6811 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6812 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6813 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6814 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6815 }, { "string" : "s", "attrId" : 79, "flatCharIndex" : 6816 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6817 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6819 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6820 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6821 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6822 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 6823 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 6824 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6826 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6827 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6828 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6829 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 6830 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6831 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6832 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6834 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6835 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 6836 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 6837 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6838 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6839 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6840 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6841 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6842 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6844 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6845 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6846 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6847 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6848 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6849 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6850 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6851 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 6852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6853 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6854 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 6855 }, { "string" : "b", "attrId" : 79, "flatCharIndex" : 6856 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6857 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6858 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6859 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 6860 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6862 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6863 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6864 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 6865 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6866 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 6867 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6868 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 6869 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6870 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6871 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6884 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 6885 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 6886 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 6887 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 6888 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 6889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6893 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6894 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 6895 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6896 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6897 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 6898 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 6899 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 6900 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6901 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6902 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 6903 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 6904 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 6905 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 6906 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6907 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 6908 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 6909 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 6910 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 6911 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 6912 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 6913 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 6914 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 6915 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 6916 }, { "string" : "β", "attrId" : 0, "flatCharIndex" : 6917 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 6918 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 6919 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 6920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6921 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 6922 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 6923 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6925 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 6926 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6927 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6928 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6930 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6931 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6932 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 6933 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 6934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6935 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6936 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6938 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 6939 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6940 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 6941 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 6942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6943 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6945 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 6946 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6947 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 6948 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 6949 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 6950 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 6951 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 6952 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 6953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6968 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6988 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 6989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 6999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7008 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7037 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 7038 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 7039 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 7040 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 7041 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7046 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7047 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7048 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7049 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7050 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7051 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 7052 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7053 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7054 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7055 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 7056 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7057 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 7058 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 7059 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7060 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7061 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 7062 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7063 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7064 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7065 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 7066 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7067 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 7068 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 7069 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7070 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 7071 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7072 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 7073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7074 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7075 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7076 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7077 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 7078 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7080 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7081 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 7082 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7083 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7084 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7086 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7087 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7088 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7089 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 7090 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7092 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 7093 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7094 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 7095 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7096 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7097 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7121 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7141 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7161 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7190 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 7191 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 7192 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 7193 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 7194 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7199 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7200 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7201 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7202 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7203 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7204 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 7205 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7206 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7207 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7208 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 7209 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7210 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 7211 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 7212 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7213 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7214 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 7215 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7216 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7217 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7218 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 7219 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7220 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7221 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 7222 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 7223 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 7224 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7226 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7227 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7228 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 7229 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7230 }, { "string" : "ῶ", "attrId" : 0, "flatCharIndex" : 7231 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7233 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7234 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7235 }, { "string" : "ώ", "attrId" : 0, "flatCharIndex" : 7236 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7237 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 7238 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 7239 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 7240 }, { "string" : "\/", "attrId" : 0, "flatCharIndex" : 7241 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7242 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7243 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 7244 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7245 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 7246 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 7247 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 7248 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 7249 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7251 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7252 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7253 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 7254 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7255 }, { "string" : "ώ", "attrId" : 0, "flatCharIndex" : 7256 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7257 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 7258 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 7259 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 7260 }, { "string" : "\/", "attrId" : 0, "flatCharIndex" : 7261 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7262 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7263 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 7264 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7265 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 7266 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7267 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 7268 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7270 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 7271 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 7272 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 7273 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7274 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7275 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 7276 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 7277 }, { "string" : "–", "attrId" : 0, "flatCharIndex" : 7278 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7279 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 7280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7281 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7282 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7283 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 7284 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 7285 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 7286 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7287 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 7288 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 7289 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 7290 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7291 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7292 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7293 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 7294 }, { "string" : "}", "attrId" : 185, "flatCharIndex" : 7295 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7296 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7297 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7298 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7299 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7300 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7301 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 7302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7303 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7304 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7305 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7306 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7307 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7308 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7309 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 7310 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7312 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 7313 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7314 }, { "string" : "l", "attrId" : 79, "flatCharIndex" : 7315 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7316 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7318 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7319 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7320 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7321 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 7322 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 7323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7324 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 7325 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 7326 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7327 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7328 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7329 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7330 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7331 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 7332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7333 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 7334 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7335 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7336 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7337 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7338 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 7339 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7341 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7342 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7343 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 7344 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7345 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7346 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7347 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7348 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7496 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 7497 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 7498 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 7499 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 7500 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7505 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7506 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7507 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7508 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7509 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7510 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 7511 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7512 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7513 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7514 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 7515 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7516 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 7517 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 7518 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7519 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7520 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 7521 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7522 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7523 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7524 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 7525 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 7526 }, { "string" : "ύ", "attrId" : 0, "flatCharIndex" : 7527 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 7528 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7529 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 7530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7531 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7532 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7533 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7534 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7535 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7536 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7537 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7539 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7540 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7541 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 7542 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7543 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7544 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7545 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 7546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7547 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7548 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 7549 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 7550 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7551 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7552 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7553 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7555 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7556 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7557 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7559 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 7560 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7561 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7562 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7563 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7565 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7566 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 7567 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7568 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7569 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7570 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 7571 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7572 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 7573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7574 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7575 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7576 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7578 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 7579 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7580 }, { "string" : ",", "attrId" : 79, "flatCharIndex" : 7581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7582 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7583 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7584 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7585 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7586 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7587 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7588 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7589 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 7590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7591 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7592 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7593 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 7594 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7595 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7596 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7597 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7598 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7599 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7600 }, { "string" : ",", "attrId" : 79, "flatCharIndex" : 7601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7602 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7603 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7604 }, { "string" : "j", "attrId" : 0, "flatCharIndex" : 7605 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7606 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 7607 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7620 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7649 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 7650 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7651 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 7652 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 7653 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7658 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7659 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7660 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7661 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7662 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7663 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 7664 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7665 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7666 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7667 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 7668 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7669 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 7670 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 7671 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7672 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7673 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 7674 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7675 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7676 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7677 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 7678 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7679 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 7680 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 7681 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7682 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 7683 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7684 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 7685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7686 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7687 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7688 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7689 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7691 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7692 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 7693 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 7694 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7696 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7697 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7698 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7699 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7701 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7702 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 7703 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7704 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 7705 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7707 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7708 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7709 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7710 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 7711 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7712 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7713 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7714 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 7715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7716 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7717 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7718 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7719 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7721 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 7722 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7723 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 7724 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 7725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7733 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7753 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7773 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7802 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 7803 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7804 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 7805 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 7806 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7811 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7812 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7813 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7814 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7815 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7816 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 7817 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7818 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7819 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7820 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 7821 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7822 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 7823 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 7824 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7825 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7826 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 7827 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7828 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7829 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7830 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 7831 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 7832 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 7833 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 7834 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 7835 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 7836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7837 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 7838 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7840 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 7841 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7842 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7843 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 7844 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7845 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7846 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7848 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 7849 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7850 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7851 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7852 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7854 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7855 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7857 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7858 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7859 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7860 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7861 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7862 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7863 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 7864 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7865 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 7866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7867 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 7868 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7870 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7871 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7873 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7875 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 7876 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7877 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7878 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7879 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7881 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 7882 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7884 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7885 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7886 }, { "string" : "c", "attrId" : 79, "flatCharIndex" : 7887 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7888 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 7889 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7890 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 7891 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 7892 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7893 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7895 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7896 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7897 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 7898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7899 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 7900 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7901 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7902 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 7903 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7905 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 7906 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 7907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7908 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 7909 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 7910 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 7911 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 7912 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 7913 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 7914 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 7915 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 7916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7926 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 7927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7955 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 7956 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7957 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 7958 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 7959 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 7960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7964 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7965 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 7966 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7967 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7968 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 7969 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 7970 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 7971 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7972 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7973 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 7974 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 7975 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 7976 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 7977 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7978 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 7979 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 7980 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 7981 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7982 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7983 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 7984 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 7985 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 7986 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 7987 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7989 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 7990 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 7991 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 7992 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 7993 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 7994 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 7995 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 7996 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 7997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 7998 }, { "string" : "ἡ", "attrId" : 0, "flatCharIndex" : 7999 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8000 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 8001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8002 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 8003 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8004 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8005 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8006 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8007 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 8008 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8009 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8010 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8011 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 8012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8013 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8014 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8016 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 8017 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8018 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8019 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8020 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8021 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8022 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 8023 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8025 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 8026 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8027 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8028 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8029 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8030 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 8031 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8032 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8033 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8034 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 8035 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8037 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8038 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8039 }, { "string" : "s", "attrId" : 79, "flatCharIndex" : 8040 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8041 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8042 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8043 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8044 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8045 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8046 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8047 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8049 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 8050 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8051 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8052 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 8053 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8054 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8055 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 8056 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8057 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8058 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 8059 }, { "string" : ",", "attrId" : 79, "flatCharIndex" : 8060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8061 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8062 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8063 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8064 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 8065 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8066 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8067 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8068 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8069 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 8070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8071 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8072 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8074 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8075 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8076 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8077 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 8078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8079 }, { "string" : "o", "attrId" : 79, "flatCharIndex" : 8080 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8081 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8083 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8084 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8086 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8087 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8088 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8089 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 8090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8091 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8092 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8093 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8094 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8095 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8096 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 8097 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8099 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8101 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 8102 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8103 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8104 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 8105 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8106 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8107 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 8108 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 8109 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8110 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8111 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8112 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8114 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8115 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8117 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 8118 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8119 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8120 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8121 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8122 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8123 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8124 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8125 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8127 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8128 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8129 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8131 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8132 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8133 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8134 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8135 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8137 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8138 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8140 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 8141 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8142 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8143 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8144 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 8145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8146 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8147 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8149 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8151 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8152 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8153 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8154 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8156 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8157 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8158 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8160 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8161 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8162 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8163 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8165 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8166 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8168 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8169 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8170 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8171 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8172 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 8173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8174 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8175 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8177 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8178 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8179 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8181 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8182 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8184 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8185 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8186 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8187 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 8188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8189 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8190 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8192 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8193 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8194 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8195 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8196 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8197 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8261 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 8262 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 8263 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 8264 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 8265 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8270 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8271 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 8272 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8273 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8274 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 8275 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 8276 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8277 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8278 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8279 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 8280 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8281 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 8282 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 8283 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8284 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8285 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 8286 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8287 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 8288 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 8289 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 8290 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 8291 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 8292 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 8293 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 8294 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8296 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 8297 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 8298 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 8299 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 8300 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 8301 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 8302 }, { "string" : "ῆ", "attrId" : 0, "flatCharIndex" : 8303 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 8304 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8306 }, { "string" : "ἡ", "attrId" : 0, "flatCharIndex" : 8307 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8308 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 8309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8310 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8311 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8312 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8313 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8314 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8315 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8316 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8317 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8319 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8320 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8321 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8322 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8323 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8325 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8326 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8327 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8328 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8329 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8330 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8331 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8332 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8333 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8335 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8336 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 8337 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8338 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8339 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8340 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8341 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8342 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8343 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8344 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8345 }, { "string" : ",", "attrId" : 79, "flatCharIndex" : 8346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8347 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8348 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 8349 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8350 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8351 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8352 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8353 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8354 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8355 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8365 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8385 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8414 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 8415 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 8416 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 8417 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 8418 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8423 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8424 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 8425 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8426 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8427 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 8428 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 8429 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8430 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8431 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8432 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 8433 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8434 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 8435 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 8436 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8437 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8438 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 8439 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8440 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 8441 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 8442 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 8443 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 8444 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 8445 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 8446 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 8447 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 8448 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8449 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 8450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8451 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 8452 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8453 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8455 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8456 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8457 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8458 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8460 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8461 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8462 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 8463 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8464 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8485 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8498 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8518 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8538 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8558 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8567 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 8568 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 8569 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 8570 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 8571 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8576 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8577 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 8578 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8579 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8580 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 8581 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 8582 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8583 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8584 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8585 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 8586 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8587 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 8588 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 8589 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8590 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8591 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 8592 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8593 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 8594 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 8595 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 8596 }, { "string" : "φ", "attrId" : 0, "flatCharIndex" : 8597 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 8598 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 8599 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 8600 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 8601 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8602 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 8603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8604 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8605 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8606 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8607 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8608 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8610 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8611 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8612 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 8613 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8614 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 8615 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8616 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8617 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8618 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8620 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 8621 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8622 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 8623 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8625 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 8626 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8627 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8628 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8629 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8630 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8632 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 8633 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8634 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 8635 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 8636 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8637 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8638 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8639 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8640 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8641 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8642 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 8643 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 8644 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8645 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8646 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8647 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8649 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8650 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8651 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8652 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8653 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 8654 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8655 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8656 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8657 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8658 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8659 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8661 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 8662 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8663 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 8664 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8665 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8666 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8667 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8668 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8669 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8670 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8671 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 8672 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8674 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 8675 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8676 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8677 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 8678 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8691 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8720 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 8721 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 8722 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 8723 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 8724 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8729 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8730 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 8731 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8732 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8733 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 8734 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 8735 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8736 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8737 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8738 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 8739 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8740 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 8741 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 8742 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8743 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8744 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 8745 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8746 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 8747 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 8748 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 8749 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 8750 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8751 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 8752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8753 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8754 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8755 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8756 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8757 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8758 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 8759 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8760 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8762 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8763 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8764 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8765 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8767 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 8768 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8769 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8770 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 8771 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8773 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8774 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8775 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8777 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8778 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8780 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8781 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8782 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8783 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8784 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8786 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8787 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8788 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8789 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8790 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 8791 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8792 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8794 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 8795 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8796 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8797 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8798 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 8799 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8801 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8802 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8803 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 8804 }, { "string" : "c", "attrId" : 79, "flatCharIndex" : 8805 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8824 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8844 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8873 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 8874 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 8875 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 8876 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 8877 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 8878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8882 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8883 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 8884 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8885 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8886 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 8887 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 8888 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8889 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8890 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8891 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 8892 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8893 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 8894 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 8895 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8896 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8897 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 8898 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8899 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 8900 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 8901 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 8902 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8903 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 8904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8905 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 8906 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 8907 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 8908 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 8909 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 8910 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 8911 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 8912 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 8913 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 8914 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 8915 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 8916 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 8917 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 8918 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 8919 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8920 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8921 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8922 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8924 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8925 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8926 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 8927 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8928 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8930 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8931 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8932 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8933 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8934 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8936 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 8937 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8939 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8940 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8941 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8942 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8943 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 8944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8945 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8946 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 8947 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8948 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8949 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8950 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8951 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 8952 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8953 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8954 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 8955 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8956 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 8957 }, { "string" : "h", "attrId" : 79, "flatCharIndex" : 8958 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8959 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8961 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 8962 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 8963 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 8964 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8965 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 8966 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8967 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8968 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 8969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8970 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 8971 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8973 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 8974 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8975 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 8976 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8977 }, { "string" : "r", "attrId" : 79, "flatCharIndex" : 8978 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8979 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 8980 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 8981 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 8982 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 8983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8997 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 8998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 8999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9026 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 9027 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 9028 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 9029 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 9030 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9035 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9036 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9037 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9038 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9039 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9040 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9041 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9042 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9043 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9044 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 9045 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9046 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9047 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9048 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9049 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9050 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 9051 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9052 }, { "string" : "ἆ", "attrId" : 0, "flatCharIndex" : 9053 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9054 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 9055 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9056 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9058 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9059 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9060 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 9061 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9062 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9063 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9064 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9065 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9066 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 9067 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9068 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9069 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9070 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 9071 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9072 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 9073 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 9074 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9075 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9076 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9077 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9078 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9079 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9080 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9082 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9083 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9084 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9085 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9086 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9087 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 9088 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9089 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9090 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9091 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9092 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 9093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9094 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9096 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 9097 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9098 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9099 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9100 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9101 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9102 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9103 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9104 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 9105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9108 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9110 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9128 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9130 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9150 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9159 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9179 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 9180 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 9181 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 9182 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 9183 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9188 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9189 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9190 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9191 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9192 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9193 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9194 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9195 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9196 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9197 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 9198 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9199 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9200 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9201 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9202 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9203 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 9204 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9205 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 9206 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9207 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 9208 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 9209 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 9210 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9212 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 9213 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9214 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 9215 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 9216 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 9217 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9218 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9220 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9221 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9222 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9223 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9224 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9225 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9226 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 9227 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9228 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9230 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9231 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 9232 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9233 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9234 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9236 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9237 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9238 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9239 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 9240 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 9241 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9242 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9243 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 9244 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9246 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9247 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9248 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9249 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9250 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9251 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9252 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9253 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9254 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 9255 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9257 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9258 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9259 }, { "string" : "z", "attrId" : 0, "flatCharIndex" : 9260 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 9261 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 9262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9263 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 9264 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 9265 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9266 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9268 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 9269 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9270 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9272 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9273 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9275 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9276 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9277 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9278 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9279 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9280 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 9281 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9282 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9283 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9284 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9285 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9286 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9287 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9288 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9289 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9290 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9292 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 9293 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9294 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 9295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9296 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9297 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 9298 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9299 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9300 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 9301 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9302 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 9303 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9323 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9332 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 9333 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 9334 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 9335 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 9336 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9341 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9342 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9343 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9344 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9345 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9346 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9347 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9348 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9349 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9350 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 9351 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9352 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9353 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9354 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9355 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9356 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 9357 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9358 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 9359 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9360 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 9361 }, { "string" : "ύ", "attrId" : 0, "flatCharIndex" : 9362 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9363 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 9364 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 9365 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 9366 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9368 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 9369 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9370 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 9371 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 9372 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9373 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 9374 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 9375 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 9376 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9378 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 9379 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 9380 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9381 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9383 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9384 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9385 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 9386 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9387 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9388 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9389 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9390 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9391 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 9392 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9393 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9394 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9395 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 9396 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9397 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9399 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 9400 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9401 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9402 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9403 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9405 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9406 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 9407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9408 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9409 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9410 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9411 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 9412 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9413 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9414 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9416 }, { "string" : "a", "attrId" : 79, "flatCharIndex" : 9417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9418 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9419 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9420 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9421 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 9422 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9423 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9425 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9426 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9427 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9428 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9436 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9456 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9465 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9485 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 9486 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 9487 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 9488 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 9489 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9494 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9495 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9496 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9497 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9498 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9499 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9500 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9501 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9502 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9503 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 9504 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9505 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9506 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9507 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9508 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9509 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 9510 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9511 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 9512 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9513 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 9514 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 9515 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 9516 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 9517 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9518 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9520 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9521 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9522 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9523 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9524 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9525 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 9526 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 9527 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9529 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 9530 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9531 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9532 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9533 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9534 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9535 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9537 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 9538 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9540 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 9541 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9542 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9543 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9544 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9545 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9546 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9547 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 9548 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 9549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9550 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 9551 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9552 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 9553 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 9554 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9555 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9556 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9557 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9558 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9559 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9560 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9561 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 9562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9563 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 9564 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9566 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 9567 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9568 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9569 }, { "string" : "i", "attrId" : 79, "flatCharIndex" : 9570 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 9571 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9572 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 9573 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9575 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 9576 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9578 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9579 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9580 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9581 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9582 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 9583 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9584 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9585 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9586 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 9587 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9588 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 9589 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9609 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9638 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 9639 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 9640 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 9641 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 9642 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9647 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9648 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9649 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9650 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9651 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9652 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9653 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9654 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9655 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9656 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 9657 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9658 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9659 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9660 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9661 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9662 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 9663 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9664 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 9665 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9666 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 9667 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 9668 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 9669 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9671 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 9672 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9673 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 9674 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 9675 }, { "string" : "ῆ", "attrId" : 0, "flatCharIndex" : 9676 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 9677 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9679 }, { "string" : "ἡ", "attrId" : 0, "flatCharIndex" : 9680 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9681 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9683 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9684 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9685 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 9686 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9687 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9688 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9689 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9690 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 9691 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 9692 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9693 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9694 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9695 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 9696 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9697 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 9698 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9699 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9700 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 9701 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9702 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9703 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9704 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 9705 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9707 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9708 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 9709 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9710 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9711 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9712 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9713 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9714 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9715 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9716 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9717 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 9718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9719 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 9720 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9721 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9722 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 9723 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9724 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9725 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 9726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9727 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9728 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9729 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9730 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9731 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9732 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 9733 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9734 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9736 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 9737 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9738 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9739 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 9740 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9741 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9742 }, { "string" : "y", "attrId" : 79, "flatCharIndex" : 9743 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9745 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 9746 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9747 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9748 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9749 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9751 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 9752 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 9753 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9755 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 9756 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 9757 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9758 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9759 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 9760 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9761 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 9762 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9791 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 9792 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 9793 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 9794 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 9795 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9800 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9801 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9802 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9803 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9804 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9805 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9806 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9807 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9808 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9809 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 9810 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9811 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9812 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9813 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9814 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9815 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 9816 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9817 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 9818 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9819 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 9820 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 9821 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 9822 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 9823 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 9824 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9825 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9827 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9828 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9829 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 9830 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 9831 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9832 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9833 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9835 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9836 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9837 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9838 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9839 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 9840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9841 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9842 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9844 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 9845 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 9846 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 9847 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 9848 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 9849 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 9850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9851 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 9852 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 9853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9864 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9875 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9895 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9915 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 9916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9933 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9934 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9935 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9936 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9937 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9944 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 9945 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 9946 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 9947 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 9948 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 9949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9953 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9954 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 9955 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9956 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9957 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 9958 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 9959 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 9960 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9961 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9962 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 9963 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 9964 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 9965 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 9966 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9967 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 9968 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 9969 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 9970 }, { "string" : "Ἀ", "attrId" : 0, "flatCharIndex" : 9971 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9972 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 9973 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 9974 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 9975 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 9976 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 9977 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 9978 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 9979 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 9980 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9982 }, { "string" : "Ἀ", "attrId" : 0, "flatCharIndex" : 9983 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 9984 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 9985 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 9986 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 9987 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 9988 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 9989 }, { "string" : "δ", "attrId" : 0, "flatCharIndex" : 9990 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 9991 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 9992 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 9993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9994 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 9995 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 9996 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 9997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 9998 }, { "string" : "A", "attrId" : 0, "flatCharIndex" : 9999 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10000 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10001 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10002 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10003 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10004 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10005 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 10006 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10007 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10009 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 10010 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10012 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10013 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10014 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 10015 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10017 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10018 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10019 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10020 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10021 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 10022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10028 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10048 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10068 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10088 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10097 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 10098 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 10099 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 10100 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 10101 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10106 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10107 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10108 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10109 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10110 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 10111 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 10112 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10113 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10114 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10115 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 10116 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10117 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10118 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 10119 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10120 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10121 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 10122 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10123 }, { "string" : "Ἀ", "attrId" : 0, "flatCharIndex" : 10124 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10125 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 10126 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 10127 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 10128 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 10129 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 10130 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 10131 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 10132 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 10133 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10135 }, { "string" : "Ἀ", "attrId" : 0, "flatCharIndex" : 10136 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10137 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 10138 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 10139 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 10140 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 10141 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 10142 }, { "string" : "π", "attrId" : 0, "flatCharIndex" : 10143 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 10144 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 10145 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10147 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 10148 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10149 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 10150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10151 }, { "string" : "A", "attrId" : 0, "flatCharIndex" : 10152 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10153 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10154 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10155 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10156 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10157 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 10158 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 10159 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 10160 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10162 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 10163 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10165 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10166 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10167 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 10168 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10170 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10171 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10172 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10173 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10174 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 10175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10179 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10181 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10199 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10201 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10221 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10250 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 10251 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 10252 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 10253 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 10254 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10259 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10260 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10261 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10262 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10263 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 10264 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 10265 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10266 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10267 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10268 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 10269 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10270 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10271 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 10272 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10273 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10274 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 10275 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10276 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 10277 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10278 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 10279 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 10280 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 10281 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 10282 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 10283 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10285 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 10286 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10287 }, { "string" : "ί", "attrId" : 0, "flatCharIndex" : 10288 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 10289 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 10290 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 10291 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10293 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 10294 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10295 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 10296 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 10297 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 10298 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 10299 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 10300 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10301 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 10302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10303 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10304 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 10305 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 10306 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 10307 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10308 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10309 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 10310 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 10311 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 10312 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10313 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10314 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10315 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 10316 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10317 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 10318 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10319 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10320 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10321 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10323 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10324 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10325 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 10326 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 10327 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10328 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10329 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10334 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10354 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10374 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10403 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 10404 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 10405 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 10406 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 10407 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10412 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10413 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10414 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10415 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10416 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 10417 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 10418 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10419 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10420 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10421 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 10422 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10423 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10424 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 10425 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10426 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10427 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 10428 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10429 }, { "string" : "ἁ", "attrId" : 0, "flatCharIndex" : 10430 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10431 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 10432 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 10433 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 10434 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 10435 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 10436 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10437 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 10438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10439 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 10440 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10441 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10443 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10444 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10445 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 10446 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10447 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10448 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 10449 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10450 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10451 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10453 }, { "string" : "j", "attrId" : 0, "flatCharIndex" : 10454 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10455 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10456 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10457 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 10458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10459 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 10460 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10461 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10462 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10464 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10465 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 10466 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10467 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10468 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10470 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 10471 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10473 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10474 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 10475 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10476 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 10477 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10478 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10479 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 10480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10481 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 10482 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10483 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10484 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 10485 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10487 }, { "string" : "b", "attrId" : 79, "flatCharIndex" : 10488 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10490 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 10491 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10492 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10494 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 10495 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 10496 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10497 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10498 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 10499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10500 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 10501 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 10502 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 10503 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 10504 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10505 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10506 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 10507 }, { "string" : "a", "attrId" : 79, "flatCharIndex" : 10508 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10509 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10510 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 10511 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10512 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 10513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10527 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10535 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10536 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10556 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 10557 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 10558 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 10559 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 10560 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10565 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10566 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10567 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10568 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10569 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 10570 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 10571 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10572 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10573 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10574 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 10575 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10576 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10577 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 10578 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10579 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10580 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 10581 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10582 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 10583 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10584 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 10585 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 10586 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 10587 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10589 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 10590 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10591 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 10592 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 10593 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 10594 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10595 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 10596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10597 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10598 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10599 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 10600 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10627 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10628 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10629 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10630 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10631 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10636 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10637 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10639 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10640 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10641 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10642 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10643 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10645 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10647 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10648 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10649 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10660 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10680 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10709 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 10710 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 10711 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 10712 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 10713 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10718 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10719 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10720 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10721 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10722 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 10723 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 10724 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10725 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10726 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10727 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 10728 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10729 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10730 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 10731 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10732 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10733 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 10734 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10735 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 10736 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10737 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 10738 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 10739 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10740 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 10741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10742 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 10743 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10744 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 10745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10746 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10747 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 10748 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10750 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 10751 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10752 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10753 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10754 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10755 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10756 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10757 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 10758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10759 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10760 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10761 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 10762 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 10763 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10765 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10766 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10767 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 10768 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10770 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10771 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10773 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10774 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 10775 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10776 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10778 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10779 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10780 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10781 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10782 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10783 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10784 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 10785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10786 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 10787 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10788 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 10789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10790 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10791 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 10792 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10793 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10794 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 10795 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10796 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10797 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10798 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 10799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10800 }, { "string" : "j", "attrId" : 0, "flatCharIndex" : 10801 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 10802 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10803 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10805 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10806 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10807 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 10808 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10810 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10811 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10812 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 10813 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 10814 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10815 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 10816 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 10817 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 10818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10833 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10862 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 10863 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 10864 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 10865 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 10866 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 10867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10871 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10872 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10873 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10874 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10875 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 10876 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 10877 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10878 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10879 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10880 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 10881 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10882 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10883 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 10884 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10885 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10886 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 10887 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10888 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 10889 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10890 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 10891 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 10892 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10894 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 10895 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 10896 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 10897 }, { "string" : "ῆ", "attrId" : 0, "flatCharIndex" : 10898 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 10899 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10901 }, { "string" : "ἡ", "attrId" : 0, "flatCharIndex" : 10902 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10903 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 10904 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10905 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 10906 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 10907 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 10908 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 10909 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 10910 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 10911 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 10912 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 10913 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 10914 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 10915 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 10916 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 10917 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 10918 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 10919 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10921 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 10922 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10923 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 10924 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10925 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10926 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10927 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10928 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10929 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 10930 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10932 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 10933 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10934 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10935 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 10936 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10937 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 10938 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 10939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10940 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10941 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 10942 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 10943 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10944 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10946 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 10947 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10948 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 10949 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10950 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10951 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10952 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 10953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10954 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10955 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 10956 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10957 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 10958 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10959 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 10960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10961 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 10962 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10963 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 10964 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 10965 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 10966 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 10967 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 10968 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 10969 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 10970 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 10971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10986 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 10987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 10999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11015 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 11016 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11017 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11018 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 11019 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11024 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11025 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11026 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11027 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11028 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 11029 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11030 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11031 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11032 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11033 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 11034 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11035 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11036 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11037 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11038 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11039 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 11040 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11041 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 11042 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11043 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 11044 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 11045 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11047 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 11048 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11049 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 11050 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 11051 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11053 }, { "string" : "ἦ", "attrId" : 0, "flatCharIndex" : 11054 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11055 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 11056 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 11057 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11059 }, { "string" : "ἦ", "attrId" : 0, "flatCharIndex" : 11060 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11061 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 11062 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 11063 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11065 }, { "string" : "ἦ", "attrId" : 0, "flatCharIndex" : 11066 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11067 }, { "string" : "γ", "attrId" : 0, "flatCharIndex" : 11068 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 11069 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 11070 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 11071 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11073 }, { "string" : "ἤ", "attrId" : 0, "flatCharIndex" : 11074 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11075 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 11076 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 11077 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 11078 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 11079 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11080 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11082 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11083 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 11084 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 11085 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11086 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11087 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11088 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 11089 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 11090 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 11091 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11092 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11093 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11094 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 11095 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11096 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11097 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11098 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11099 }, { "string" : "d", "attrId" : 79, "flatCharIndex" : 11100 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11102 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11103 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11104 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11105 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11106 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11108 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 11109 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11110 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 11111 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11112 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11113 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11115 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 11116 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 11117 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11118 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11119 }, { "string" : "s", "attrId" : 79, "flatCharIndex" : 11120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11121 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 11122 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11123 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11124 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11125 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11126 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11127 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 11128 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11129 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 11130 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 11131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11132 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 11133 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11134 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 11135 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11136 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11137 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11139 }, { "string" : "c", "attrId" : 79, "flatCharIndex" : 11140 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11141 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 11142 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 11143 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11144 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11145 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11146 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11148 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 11149 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 11150 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11151 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11152 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11154 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 11155 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11156 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11157 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11158 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11159 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11160 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 11161 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11162 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 11163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11168 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 11169 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11170 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11171 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11172 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11177 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11178 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11179 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11180 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11181 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 11182 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11183 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11184 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11185 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11186 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 11187 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11188 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11189 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11190 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11191 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11192 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 11193 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11194 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 11195 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11196 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 11197 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 11198 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 11199 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11201 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 11202 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11203 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 11204 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 11205 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 11206 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11207 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 11208 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 11209 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11211 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 11212 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11213 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11215 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11217 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11218 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11219 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11220 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11221 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11222 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11224 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11225 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11226 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 11227 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 11228 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11229 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11230 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 11231 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11232 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11233 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11235 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11236 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 11237 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11238 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11239 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 11240 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11241 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11242 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11243 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11244 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 11245 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11246 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11247 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11248 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11252 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11272 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11281 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11292 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11321 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 11322 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11323 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11324 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 11325 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11330 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11331 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11332 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11333 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11334 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 11335 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11336 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11337 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11338 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11339 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 11340 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11341 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11342 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11343 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11344 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11345 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 11346 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11347 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 11348 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 11349 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 11350 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 11351 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11352 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 11353 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 11354 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11356 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 11357 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 11358 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 11359 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 11360 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11361 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 11362 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11364 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 11365 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 11366 }, { "string" : "κ", "attrId" : 0, "flatCharIndex" : 11367 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 11368 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11369 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 11370 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 11371 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11372 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11374 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11375 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 11376 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11377 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11378 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11379 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11380 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 11381 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11383 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 11384 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11385 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11386 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11387 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11388 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11389 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 11390 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11391 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11392 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11393 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 11394 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11395 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 11396 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11397 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 11398 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11399 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 11400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11401 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11402 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11403 }, { "string" : "q", "attrId" : 0, "flatCharIndex" : 11404 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11405 }, { "string" : "i", "attrId" : 79, "flatCharIndex" : 11406 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11407 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11408 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 11409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11410 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 11411 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 11412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11413 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 11414 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11415 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11416 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11417 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11418 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11419 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11420 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11421 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 11422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11423 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 11424 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11425 }, { "string" : "f", "attrId" : 79, "flatCharIndex" : 11426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11427 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11429 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 11430 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11431 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11432 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11433 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11434 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11435 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 11436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11437 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 11438 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11439 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11440 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11441 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11442 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11443 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11444 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11445 }, { "string" : "d", "attrId" : 79, "flatCharIndex" : 11446 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11448 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11449 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11450 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11451 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11452 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11453 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11454 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 11455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11456 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 11457 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11458 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11460 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11461 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11462 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 11463 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11464 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11465 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 11466 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11467 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11468 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 11469 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 11470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11474 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 11475 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11476 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11477 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 11478 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11483 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11484 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11485 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11486 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11487 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 11488 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11489 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11490 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11491 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11492 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 11493 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11494 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11495 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11496 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11497 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11498 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 11499 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11500 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 11501 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 11502 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11503 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 11504 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 11505 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11507 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 11508 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 11509 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11510 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 11511 }, { "string" : "ῦ", "attrId" : 0, "flatCharIndex" : 11512 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11514 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 11515 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11516 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11518 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11520 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11521 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11522 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 11523 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11524 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11525 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 11526 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11527 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11528 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11530 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11531 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11532 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11533 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11534 }, { "string" : "z", "attrId" : 0, "flatCharIndex" : 11535 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11536 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11545 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11546 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11547 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11548 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11549 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11554 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11555 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11556 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11557 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11558 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11559 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11560 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11562 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11563 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11564 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11565 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11566 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11567 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11568 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11569 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11570 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11571 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11572 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11574 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11575 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11578 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11579 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11580 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11581 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11582 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11587 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11598 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11616 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11617 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11618 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11619 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11625 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11626 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11627 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 11628 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11629 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11630 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 11631 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11632 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11633 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11634 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11635 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11636 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11637 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11638 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11639 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11640 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 11641 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11642 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11643 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11644 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11645 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 11646 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11647 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11648 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11649 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11650 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11651 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 11652 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11653 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 11654 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11655 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 11656 }, { "string" : "ρ", "attrId" : 0, "flatCharIndex" : 11657 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11658 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11660 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 11661 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11662 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11663 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11665 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 11666 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11667 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11669 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11711 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11731 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11751 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11780 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 11781 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11782 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11783 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 11784 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11789 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11790 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11791 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11792 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11793 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 11794 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11795 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11796 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11797 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11798 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 11799 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11800 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11801 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11802 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11803 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11804 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 11805 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11806 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 11807 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11808 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 11809 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11810 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11812 }, { "string" : "j", "attrId" : 0, "flatCharIndex" : 11813 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11814 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11815 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 11816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11817 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11818 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11819 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11821 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11822 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 11823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11824 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 11825 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11851 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11853 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11854 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11855 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11860 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11861 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11862 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11863 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11864 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11865 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11866 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11868 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11869 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11870 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11872 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11873 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11874 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11875 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11876 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11877 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11878 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11879 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11880 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11881 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11882 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11884 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11885 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11886 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11887 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11888 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11889 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11890 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11891 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11892 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11893 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11894 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11895 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11896 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11897 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11898 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11900 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11901 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11902 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11904 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 11905 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11906 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11907 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11910 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11912 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11913 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11914 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11917 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11918 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11919 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11920 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11922 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11923 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11924 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11925 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11926 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11928 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11930 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11931 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11933 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 11934 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11935 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 11936 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 11937 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 11938 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11939 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11942 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11943 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 11944 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11945 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11946 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 11947 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 11948 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 11949 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11950 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11951 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 11952 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 11953 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 11954 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 11955 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11956 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 11957 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 11958 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 11959 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 11960 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11961 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 11962 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 11963 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 11964 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 11965 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 11966 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11968 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 11969 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 11970 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 11971 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 11972 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 11973 }, { "string" : "έ", "attrId" : 0, "flatCharIndex" : 11974 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 11975 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 11976 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 11977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11978 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11979 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11980 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11981 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 11982 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 11983 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11984 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 11985 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11986 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11987 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11988 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 11989 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 11990 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 11991 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 11992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 11993 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 11994 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 11995 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 11996 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 11997 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 11998 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 11999 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12000 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12001 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 12002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12017 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12037 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12057 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12086 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 12087 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12088 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12089 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 12090 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12095 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12096 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12097 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12098 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12099 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 12100 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 12101 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12102 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12103 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12104 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12105 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12106 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12107 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12108 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12109 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12110 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12111 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12112 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 12113 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12114 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 12115 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 12116 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 12117 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 12118 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 12119 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12121 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 12122 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12123 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 12124 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 12125 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 12126 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 12127 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 12128 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12129 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 12130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12131 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 12132 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12133 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 12134 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 12135 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12136 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12137 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12138 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12139 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 12140 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12142 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12143 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12144 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 12145 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12146 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 12147 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 12148 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12149 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12150 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12151 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12152 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12153 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12155 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12156 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12157 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12158 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 12159 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12160 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12162 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12163 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12164 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12165 }, { "string" : "x", "attrId" : 0, "flatCharIndex" : 12166 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 12167 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12168 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12169 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12170 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 12171 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12172 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 12173 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12174 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 12175 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 12176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12177 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 12178 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12179 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 12180 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12181 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12182 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 12183 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12184 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12185 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 12186 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12188 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12189 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12190 }, { "string" : "u", "attrId" : 79, "flatCharIndex" : 12191 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 12192 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12194 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 12195 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12196 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 12197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12198 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12199 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12200 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12201 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12202 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 12203 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 12204 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 12205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12210 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12239 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 12240 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12241 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12242 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 12243 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12248 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12249 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12250 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12251 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12252 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 12253 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 12254 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12255 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12256 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12257 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12258 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12259 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12260 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12261 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12262 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12263 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12264 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12265 }, { "string" : "ἀ", "attrId" : 0, "flatCharIndex" : 12266 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12267 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 12268 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 12269 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 12270 }, { "string" : "ῶ", "attrId" : 0, "flatCharIndex" : 12271 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 12272 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12273 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 12274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12275 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 12276 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12277 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 12278 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 12279 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12280 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 12281 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12283 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12284 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12285 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 12286 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12287 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 12288 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12290 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12291 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 12292 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 12293 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12294 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12295 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 12296 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12297 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12298 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12299 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 12300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12311 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12312 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12313 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12314 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12319 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12320 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12321 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12322 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12323 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12324 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12325 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12326 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12327 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12328 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12329 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12332 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12343 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12352 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12363 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12392 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 12393 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12394 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 12395 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 12396 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12401 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12402 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12403 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12404 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12405 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 12406 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 12407 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12408 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12409 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12410 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12411 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12412 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12413 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12414 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12415 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12416 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12417 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12418 }, { "string" : "ἄ", "attrId" : 0, "flatCharIndex" : 12419 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12420 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12421 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 12422 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12423 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 12424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12425 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12426 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12428 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12429 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12430 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12431 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12432 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12433 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12434 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12435 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12436 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12437 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 12438 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12440 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 12441 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12442 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12444 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12445 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12446 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12447 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12448 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12449 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12450 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12451 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12452 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12453 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12454 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12455 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 12456 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12457 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12458 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 12459 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12460 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12462 }, { "string" : "w", "attrId" : 0, "flatCharIndex" : 12463 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12464 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12465 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 12466 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12468 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12469 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 12470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12471 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12472 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12473 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 12474 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12475 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12476 }, { "string" : "f", "attrId" : 79, "flatCharIndex" : 12477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12478 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12479 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12481 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12482 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12483 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12484 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12485 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12486 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12487 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12488 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12489 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12490 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 12491 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12493 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 12494 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12495 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12496 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12497 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12498 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12499 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12500 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12501 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12502 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12503 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12504 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12505 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12506 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12507 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12508 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 12509 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12510 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 12511 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 12512 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 12513 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12514 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 12515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12516 }, { "string" : "s", "attrId" : 79, "flatCharIndex" : 12517 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12518 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12520 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12521 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12522 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12523 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12524 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12525 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12526 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12527 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12528 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12529 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12530 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12531 }, { "string" : "ὅ", "attrId" : 0, "flatCharIndex" : 12532 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 12533 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12534 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 12535 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 12536 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12537 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12538 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12539 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12540 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12541 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12542 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12543 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12544 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12545 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 12546 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12547 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 12548 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 12549 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12550 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12551 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12552 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12553 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12554 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12555 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12556 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12557 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12558 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 12559 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 12560 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12561 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12562 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12563 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12564 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12565 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12566 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12567 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12568 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12569 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12570 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12571 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 12572 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12573 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12574 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 12575 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12576 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 12577 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12578 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12579 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 12580 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12581 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12582 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12583 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12584 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12585 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12586 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12587 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 12588 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12590 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 12591 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12592 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12593 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 12594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12595 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12596 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 12597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12598 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12599 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12600 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12601 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12602 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12603 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12604 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12605 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12606 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12607 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12608 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12609 }, { "string" : "ἅ", "attrId" : 0, "flatCharIndex" : 12610 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12611 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 12612 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 12613 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 12614 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12616 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 12617 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12618 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12619 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 12620 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12621 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12622 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12623 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12624 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12625 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12626 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12627 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12628 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12629 }, { "string" : "e", "attrId" : 175, "flatCharIndex" : 12630 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12631 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12632 }, { "string" : "ὅ", "attrId" : 0, "flatCharIndex" : 12633 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 12634 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12635 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 12636 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 12637 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12638 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12639 }, { "string" : "ἥ", "attrId" : 0, "flatCharIndex" : 12640 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12641 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 12642 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 12643 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 12644 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12645 }, { "string" : "ὅ", "attrId" : 0, "flatCharIndex" : 12646 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12647 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 12648 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 12649 }, { "string" : "}", "attrId" : 185, "flatCharIndex" : 12650 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12651 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12653 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12654 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12655 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12656 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12657 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12658 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12659 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12660 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12661 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12662 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12664 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12665 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12666 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12667 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12669 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12670 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12671 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12672 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12673 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12674 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12675 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12677 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12678 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12679 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12680 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12681 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12682 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12683 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12684 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12685 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12687 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12698 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 12699 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12700 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 12701 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12702 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12707 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12708 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12709 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12710 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12711 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 12712 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 12713 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12714 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12715 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12716 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12717 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12718 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12719 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12720 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12721 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12722 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12723 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12724 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 12725 }, { "string" : "ὖ", "attrId" : 0, "flatCharIndex" : 12726 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12727 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 12728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12729 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12730 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 12731 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 12732 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12733 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12734 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12735 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 12736 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 12737 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 12738 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12739 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12740 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12741 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 12742 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12743 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 12744 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12745 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12746 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12747 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12748 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 12749 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12750 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12751 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 12752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12753 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12754 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12756 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12757 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12758 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12760 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12761 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12762 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12763 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12764 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12766 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12767 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12768 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12769 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 12770 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 12771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12772 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 12773 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12774 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 12775 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 12776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12777 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 12778 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12779 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 12780 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12781 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12782 }, { "string" : "n", "attrId" : 79, "flatCharIndex" : 12783 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 12784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12802 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12822 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12840 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12841 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12843 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12844 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12845 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12846 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12847 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12848 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12849 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12850 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12851 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 12852 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 12853 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 12854 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 12855 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 12856 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12857 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12859 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12860 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12861 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12862 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12863 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12864 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 12865 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 12866 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12867 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12868 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12869 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 12870 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12871 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12872 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12873 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12874 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12875 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 12876 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12877 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 12878 }, { "string" : "ὖ", "attrId" : 0, "flatCharIndex" : 12879 }, { "string" : "θ", "attrId" : 0, "flatCharIndex" : 12880 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 12881 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 12882 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12883 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 12884 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12885 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 12886 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 12887 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 12888 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 12889 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 12890 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 12891 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 12892 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 12893 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 12894 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 12895 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 12896 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 12897 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 12898 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 12899 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 12900 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12901 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12902 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12903 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12904 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 12905 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12906 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12907 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 12908 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12909 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12910 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12911 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12912 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12913 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12914 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12915 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12916 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 12917 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 12918 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12919 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 12920 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 12921 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12922 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 12923 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12924 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12925 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 12926 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 12927 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12928 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 12929 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12930 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 12931 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 12932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12933 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 12934 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12935 }, { "string" : "g", "attrId" : 79, "flatCharIndex" : 12936 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 12937 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 12938 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 12939 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 12940 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12941 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12942 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12944 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12945 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12946 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12947 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12949 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12950 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12952 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12953 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12954 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12955 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12956 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12957 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12958 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12959 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12960 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12961 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12962 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12963 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12965 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12966 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12967 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12969 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12970 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12971 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12972 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12973 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12974 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12975 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 12976 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12977 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12978 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12979 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12980 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12981 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12982 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12983 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12985 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12986 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12987 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12988 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12990 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12991 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12992 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12993 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12995 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12996 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12997 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 12999 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13000 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13001 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13002 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13004 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 13005 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 13006 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 13007 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 13008 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13013 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13014 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13015 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13016 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13017 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13018 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 13019 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13020 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13021 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13022 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 13023 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13024 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 13025 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 13026 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13027 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13028 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 13029 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13030 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13031 }, { "string" : "ὔ", "attrId" : 0, "flatCharIndex" : 13032 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 13033 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 13034 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 13035 }, { "string" : "ι", "attrId" : 0, "flatCharIndex" : 13036 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 13037 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13039 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13040 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13041 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 13042 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 13043 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 13044 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 13045 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 13046 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 13047 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13049 }, { "string" : "ἡ", "attrId" : 0, "flatCharIndex" : 13050 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13051 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 13052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13053 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 13054 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13055 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13056 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13057 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13058 }, { "string" : "-", "attrId" : 0, "flatCharIndex" : 13059 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13060 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13061 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13062 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 13063 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13064 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13065 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 13066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13075 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13076 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13077 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13078 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13079 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13084 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13085 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13086 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13087 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13088 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13089 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13090 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13091 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13092 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13093 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13094 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13095 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13096 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13097 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13098 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13099 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13100 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13101 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13102 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13103 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13104 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13105 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13106 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13107 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13108 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13110 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13111 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13112 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13113 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13115 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13116 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13117 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13118 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13119 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13120 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13122 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13123 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13124 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13125 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13126 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13128 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13129 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13130 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13131 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13132 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13134 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13135 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13136 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13138 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13139 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13140 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13141 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13142 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13143 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13144 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13157 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 13158 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 13159 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 13160 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 13161 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13166 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13167 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13168 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13169 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13170 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13171 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 13172 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13173 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13174 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13175 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 13176 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13177 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 13178 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 13179 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13180 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13181 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 13182 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13183 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13184 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13185 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 13186 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 13187 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13188 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 13189 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 13190 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13192 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13193 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13194 }, { "string" : "λ", "attrId" : 0, "flatCharIndex" : 13195 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 13196 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13197 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 13198 }, { "string" : "ῦ", "attrId" : 0, "flatCharIndex" : 13199 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13201 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 13202 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13203 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 13204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13205 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13207 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 13208 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13209 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13210 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13211 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13212 }, { "string" : "-", "attrId" : 0, "flatCharIndex" : 13213 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13214 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13215 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13216 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 13217 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13218 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13228 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13229 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13230 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13231 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13232 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13237 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13238 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13239 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13240 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13241 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13242 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13243 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13244 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13245 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13246 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13247 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13248 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13249 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13250 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13251 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13252 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13253 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13254 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13255 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13256 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13257 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13258 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13259 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13260 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13261 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13262 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13263 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13265 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13266 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13267 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13269 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13270 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13271 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13272 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13274 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13275 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13276 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13277 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13278 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13279 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13281 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13282 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13283 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13284 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13286 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13287 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13288 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13289 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13290 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13291 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13293 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13294 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13295 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13296 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13297 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13299 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13300 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13302 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13303 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13304 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13306 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13307 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13308 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13309 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13310 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 13311 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 13312 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 13313 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 13314 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13315 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13316 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13317 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13319 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13320 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13321 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13322 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13323 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13324 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 13325 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13326 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13327 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13328 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 13329 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13330 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 13331 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 13332 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13333 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13334 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 13335 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13336 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13337 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13338 }, { "string" : "ξ", "attrId" : 0, "flatCharIndex" : 13339 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 13340 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 13341 }, { "string" : "ω", "attrId" : 0, "flatCharIndex" : 13342 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13343 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 13344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13345 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 13346 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13347 }, { "string" : "k", "attrId" : 0, "flatCharIndex" : 13348 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13350 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13351 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13352 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13353 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 13354 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13355 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13357 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13358 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13359 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13360 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13361 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13362 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13363 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13364 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13365 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13367 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13368 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13369 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 13370 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 13371 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13372 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13373 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13381 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13382 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13383 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13384 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13385 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13390 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13391 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13392 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13393 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13394 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13395 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13396 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13397 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13398 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13399 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13400 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13401 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13402 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13403 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13404 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13405 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13406 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13407 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13408 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13409 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13410 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13411 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13412 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13413 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13414 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13415 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13416 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13417 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13418 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13419 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13420 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13421 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13423 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13424 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13425 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13427 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13428 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13429 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13430 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13431 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13432 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13433 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13434 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13463 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 13464 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 13465 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 13466 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 13467 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13472 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13473 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13474 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13475 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13476 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13477 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 13478 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13479 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13480 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13481 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 13482 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13483 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 13484 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 13485 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13486 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13487 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 13488 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13489 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13490 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13491 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13492 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 13493 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 13494 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13495 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13496 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 13497 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 13498 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13500 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 13501 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13502 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13503 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13504 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 13505 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 13506 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 13507 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13508 }, { "string" : "η", "attrId" : 0, "flatCharIndex" : 13509 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13510 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 13511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13512 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13513 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13514 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13515 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 13516 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 13517 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13518 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13519 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 13520 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 13521 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13522 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 13523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13524 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13525 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13526 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13527 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13528 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 13529 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13530 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13531 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13532 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13533 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 13534 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13535 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13536 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13537 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13538 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13539 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13540 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13541 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13542 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13543 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13544 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13545 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13546 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13547 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13548 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13549 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13550 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13551 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13552 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13553 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13554 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13555 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 13556 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13557 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13558 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13559 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 13560 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 13561 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13562 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13563 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13564 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13565 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13566 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 13567 }, { "string" : "e", "attrId" : 79, "flatCharIndex" : 13568 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13569 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13570 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13571 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13572 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13573 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13574 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 13575 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 13576 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13577 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13578 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 13579 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13580 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13581 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13582 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13583 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13584 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13585 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13586 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13587 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13588 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13589 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13590 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13591 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13592 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13593 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13594 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13595 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13596 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13597 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13598 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13599 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13600 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13601 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13602 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13603 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13604 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13605 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13606 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13607 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13608 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13609 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13610 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13611 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13612 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13613 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13614 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13615 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13616 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 13617 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 13618 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 13619 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 13620 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13621 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13622 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13623 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13624 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13625 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13626 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13627 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13628 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13629 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13630 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 13631 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13632 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13633 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13634 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 13635 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13636 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 13637 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 13638 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13639 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13640 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 13641 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13642 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13643 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13644 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13645 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 13646 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 13647 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13648 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13649 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 13650 }, { "string" : "ν", "attrId" : 0, "flatCharIndex" : 13651 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13652 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13653 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13654 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13655 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13656 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 13657 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 13658 }, { "string" : "ά", "attrId" : 0, "flatCharIndex" : 13659 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13660 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 13661 }, { "string" : "υ", "attrId" : 0, "flatCharIndex" : 13662 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13663 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13664 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13665 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 13666 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13667 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 13668 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13669 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13670 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 13671 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13672 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13673 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13674 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13675 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13676 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13677 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13678 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13679 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13680 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13681 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 13682 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13683 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13684 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13685 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13686 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13687 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 13688 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13689 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13690 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13691 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13692 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13693 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13694 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13695 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13696 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13697 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13698 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13700 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13720 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13740 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13769 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 13770 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 13771 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 13772 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 13773 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13778 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13779 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13780 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13781 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13782 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13783 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 13784 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13785 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13786 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13787 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 13788 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13789 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 13790 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 13791 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13792 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13793 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 13794 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13795 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13796 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13797 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13798 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 13799 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 13800 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13802 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13803 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13804 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13805 }, { "string" : "ή", "attrId" : 0, "flatCharIndex" : 13806 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13808 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 13809 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 13810 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 13811 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 13812 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13813 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 13814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13815 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 13816 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 13817 }, { "string" : "a", "attrId" : 93, "flatCharIndex" : 13818 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 13819 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 13820 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 13821 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 13822 }, { "string" : "n", "attrId" : 93, "flatCharIndex" : 13823 }, { "string" : "o", "attrId" : 93, "flatCharIndex" : 13824 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 13825 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 13826 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 13827 }, { "string" : "*", "attrId" : 0, "flatCharIndex" : 13828 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 13829 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 13830 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13831 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13833 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13834 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13835 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13836 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 13837 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13838 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13839 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13840 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13841 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13842 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13843 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13844 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13845 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13846 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13847 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13848 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13849 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13850 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13851 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 13852 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13853 }, { "string" : "s", "attrId" : 79, "flatCharIndex" : 13854 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13855 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13856 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 13857 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13858 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13859 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13860 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13861 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13862 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13863 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13864 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13865 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 13866 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 13867 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13868 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 13869 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13870 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13871 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13872 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13873 }, { "string" : "t", "attrId" : 79, "flatCharIndex" : 13874 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13875 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13876 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13877 }, { "string" : "b", "attrId" : 0, "flatCharIndex" : 13878 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13879 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13880 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13881 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 13882 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13883 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13884 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13885 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13886 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13887 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13888 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13889 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13890 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13891 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13892 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 13893 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 13894 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13895 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13896 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 13897 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13898 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13899 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13900 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13901 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 13902 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13903 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13904 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13905 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13906 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 13907 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13908 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 13909 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13910 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 13911 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13912 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 13913 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13914 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13915 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13916 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13917 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13918 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13919 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13920 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13921 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13922 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 13923 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13924 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13925 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13926 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 13927 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 13928 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13929 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13930 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13931 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 13932 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13933 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13934 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13935 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 13936 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13937 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13938 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13939 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13940 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13941 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 13942 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13943 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13944 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13945 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13946 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13947 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 13948 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13949 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13950 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13951 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13952 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13953 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13954 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13955 }, { "string" : "-", "attrId" : 0, "flatCharIndex" : 13956 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13957 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 13958 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13959 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 13960 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 13961 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13962 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13963 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 13964 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13965 }, { "string" : "3", "attrId" : 0, "flatCharIndex" : 13966 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13967 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 13968 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13969 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13970 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13971 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13972 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 13973 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13974 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13975 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13976 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 13977 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13978 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13979 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13980 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 13981 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 13982 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 13983 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 13984 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13985 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 13986 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13987 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 13988 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13989 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13990 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 13991 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 13992 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 13993 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13994 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13995 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 13996 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 13997 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 13998 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 13999 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14000 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14001 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14002 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 14003 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14004 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14005 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14006 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14007 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14008 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14009 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14010 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14011 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14012 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14013 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14014 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14015 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14016 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14017 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14018 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14019 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14020 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14021 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14022 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14023 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14024 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14025 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14026 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14027 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14028 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14029 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14030 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14031 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14032 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14033 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14034 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14035 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14036 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14037 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14038 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14039 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14040 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14041 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14042 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14043 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14044 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14045 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14046 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14047 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14048 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14049 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14050 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14051 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14052 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14053 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14054 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14055 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14056 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14057 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14058 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14059 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14060 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14061 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14062 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14063 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14064 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14065 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14066 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14067 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14068 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14069 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14070 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14071 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14072 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14073 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14074 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14075 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 14076 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 14077 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 14078 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 14079 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 14080 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14081 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14082 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14083 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14084 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 14085 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 14086 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14087 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14088 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 14089 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 14090 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 14091 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14092 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14093 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 14094 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14095 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 14096 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 14097 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14098 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14099 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 14100 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 14101 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 14102 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 14103 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 14104 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 14105 }, { "string" : "σ", "attrId" : 0, "flatCharIndex" : 14106 }, { "string" : "ε", "attrId" : 0, "flatCharIndex" : 14107 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 14108 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 14109 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14110 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 14111 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14112 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 14113 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 14114 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14115 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14116 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14117 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14118 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 14119 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14120 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 14121 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14122 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 14123 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 14124 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 14125 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14126 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14127 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14128 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14129 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14130 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14131 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 14132 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14133 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14134 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 14135 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 14136 }, { "string" : "f", "attrId" : 0, "flatCharIndex" : 14137 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14138 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 14139 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 14140 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14141 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 14142 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 14143 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 14144 }, { "string" : ")", "attrId" : 0, "flatCharIndex" : 14145 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14146 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14147 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14148 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14149 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14150 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14151 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14152 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14153 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14154 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14155 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14156 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14157 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14158 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14159 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 14160 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14161 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14162 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14163 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14164 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14165 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14166 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14167 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14168 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14169 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14170 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14171 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14172 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14173 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14174 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14175 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14176 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14177 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14178 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14179 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 14180 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14181 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14182 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14183 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14184 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14185 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14186 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14187 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14188 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14189 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14190 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14191 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14192 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14193 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14194 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14195 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14196 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14197 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14198 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14199 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 14200 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14201 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14202 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14203 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14204 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14205 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14206 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14207 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14208 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14209 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14210 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14211 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14212 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14213 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14214 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14215 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14216 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14217 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14218 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14219 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14220 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14221 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14222 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14223 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14224 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14225 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14226 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14227 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14228 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 14229 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 14230 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 14231 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 14232 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 14233 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14234 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14235 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14236 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14237 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 14238 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 14239 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14240 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14241 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 14242 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 14243 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 14244 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14245 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14246 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 14247 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14248 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 14249 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 14250 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14251 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14252 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 14253 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 14254 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 14255 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 14256 }, { "string" : "τ", "attrId" : 0, "flatCharIndex" : 14257 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 14258 }, { "string" : "ῦ", "attrId" : 0, "flatCharIndex" : 14259 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 14260 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 14261 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14262 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 14263 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 14264 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14265 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14266 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14267 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14268 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14269 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 14270 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 14271 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 14272 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14273 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14274 }, { "string" : "p", "attrId" : 0, "flatCharIndex" : 14275 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 14276 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 14277 }, { "string" : "c", "attrId" : 0, "flatCharIndex" : 14278 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14279 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 14280 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14281 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 14282 }, { "string" : "v", "attrId" : 0, "flatCharIndex" : 14283 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14284 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 14285 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14286 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14287 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14288 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14289 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 14290 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14291 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 14292 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14293 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14294 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14295 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 14296 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14297 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 14298 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14299 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 14300 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 14301 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14302 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14303 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14304 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14305 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14306 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 14307 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 14308 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 14309 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14310 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14311 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 14312 }, { "string" : "o", "attrId" : 79, "flatCharIndex" : 14313 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 14314 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14315 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 14316 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14317 }, { "string" : ";", "attrId" : 0, "flatCharIndex" : 14318 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14319 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 14320 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 14321 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 14322 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14323 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 14324 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 14325 }, { "string" : "a", "attrId" : 0, "flatCharIndex" : 14326 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14327 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 14328 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 14329 }, { "string" : "y", "attrId" : 0, "flatCharIndex" : 14330 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14331 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14332 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 14333 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14334 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14335 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14336 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14337 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14338 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14339 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14340 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14341 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14342 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14343 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14344 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14345 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14346 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14347 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14348 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14349 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14350 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14351 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14352 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 14353 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14354 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14355 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14356 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14357 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14358 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14359 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14360 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14361 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14362 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14363 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14364 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14365 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14366 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14367 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14368 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14369 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14370 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14371 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14372 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14373 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14374 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14375 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14376 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14377 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14378 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14379 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14380 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14381 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 14382 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 14383 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 14384 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 14385 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 14386 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14387 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14388 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14389 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14390 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 14391 }, { "string" : "i", "attrId" : 93, "flatCharIndex" : 14392 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14393 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14394 }, { "string" : "m", "attrId" : 93, "flatCharIndex" : 14395 }, { "string" : "[", "attrId" : 96, "flatCharIndex" : 14396 }, { "string" : "\\", "attrId" : 93, "flatCharIndex" : 14397 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14398 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14399 }, { "string" : "x", "attrId" : 93, "flatCharIndex" : 14400 }, { "string" : "t", "attrId" : 93, "flatCharIndex" : 14401 }, { "string" : "g", "attrId" : 93, "flatCharIndex" : 14402 }, { "string" : "r", "attrId" : 93, "flatCharIndex" : 14403 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14404 }, { "string" : "e", "attrId" : 93, "flatCharIndex" : 14405 }, { "string" : "k", "attrId" : 93, "flatCharIndex" : 14406 }, { "string" : "{", "attrId" : 96, "flatCharIndex" : 14407 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 14408 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 14409 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 14410 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 14411 }, { "string" : "ό", "attrId" : 0, "flatCharIndex" : 14412 }, { "string" : "ς", "attrId" : 0, "flatCharIndex" : 14413 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 14414 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14415 }, { "string" : "α", "attrId" : 0, "flatCharIndex" : 14416 }, { "string" : "ὐ", "attrId" : 0, "flatCharIndex" : 14417 }, { "string" : "χ", "attrId" : 0, "flatCharIndex" : 14418 }, { "string" : "μ", "attrId" : 0, "flatCharIndex" : 14419 }, { "string" : "ο", "attrId" : 0, "flatCharIndex" : 14420 }, { "string" : "ῦ", "attrId" : 0, "flatCharIndex" : 14421 }, { "string" : ",", "attrId" : 0, "flatCharIndex" : 14422 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14423 }, { "string" : "ὁ", "attrId" : 0, "flatCharIndex" : 14424 }, { "string" : "}", "attrId" : 96, "flatCharIndex" : 14425 }, { "string" : "]", "attrId" : 96, "flatCharIndex" : 14426 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14427 }, { "string" : "d", "attrId" : 0, "flatCharIndex" : 14428 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 14429 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 14430 }, { "string" : "u", "attrId" : 0, "flatCharIndex" : 14431 }, { "string" : "g", "attrId" : 0, "flatCharIndex" : 14432 }, { "string" : "h", "attrId" : 0, "flatCharIndex" : 14433 }, { "string" : "t", "attrId" : 0, "flatCharIndex" : 14434 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14435 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14436 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14437 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14438 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14439 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14440 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14441 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14442 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14443 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14444 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14445 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14446 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14447 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14448 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14449 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14450 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14451 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14452 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14453 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14454 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14455 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14456 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14457 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14458 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14459 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14460 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14461 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14462 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14463 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14464 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14465 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 14466 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14467 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14468 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14469 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14470 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14471 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14472 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14473 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14474 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14475 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14476 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14477 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14478 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14479 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14480 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14481 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14482 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14483 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14484 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14485 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 14486 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14487 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14488 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14489 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14490 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14491 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14492 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14493 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14494 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14495 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14496 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14497 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14498 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14499 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14500 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14501 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14502 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14503 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14504 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14505 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 14506 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14507 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14508 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14509 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14510 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14511 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14512 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14513 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14514 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14515 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14516 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14517 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14518 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14519 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14520 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14521 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14522 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14523 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14524 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14525 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14526 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14527 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14528 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14529 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14530 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14531 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14532 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14533 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14534 } ], [ { "string" : " ", "attrId" : 136, "flatCharIndex" : 14535 }, { "string" : "N", "attrId" : 136, "flatCharIndex" : 14536 }, { "string" : "O", "attrId" : 136, "flatCharIndex" : 14537 }, { "string" : "R", "attrId" : 136, "flatCharIndex" : 14538 }, { "string" : "M", "attrId" : 136, "flatCharIndex" : 14539 }, { "string" : "A", "attrId" : 136, "flatCharIndex" : 14540 }, { "string" : "L", "attrId" : 136, "flatCharIndex" : 14541 }, { "string" : " ", "attrId" : 136, "flatCharIndex" : 14542 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 14543 }, { "string" : "m", "attrId" : 139, "flatCharIndex" : 14544 }, { "string" : "e", "attrId" : 139, "flatCharIndex" : 14545 }, { "string" : "n", "attrId" : 139, "flatCharIndex" : 14546 }, { "string" : "o", "attrId" : 139, "flatCharIndex" : 14547 }, { "string" : "-", "attrId" : 139, "flatCharIndex" : 14548 }, { "string" : "v", "attrId" : 139, "flatCharIndex" : 14549 }, { "string" : "o", "attrId" : 139, "flatCharIndex" : 14550 }, { "string" : "c", "attrId" : 139, "flatCharIndex" : 14551 }, { "string" : "a", "attrId" : 139, "flatCharIndex" : 14552 }, { "string" : "b", "attrId" : 139, "flatCharIndex" : 14553 }, { "string" : "u", "attrId" : 139, "flatCharIndex" : 14554 }, { "string" : "l", "attrId" : 139, "flatCharIndex" : 14555 }, { "string" : "a", "attrId" : 139, "flatCharIndex" : 14556 }, { "string" : "r", "attrId" : 139, "flatCharIndex" : 14557 }, { "string" : "y", "attrId" : 139, "flatCharIndex" : 14558 }, { "string" : ".", "attrId" : 139, "flatCharIndex" : 14559 }, { "string" : "t", "attrId" : 139, "flatCharIndex" : 14560 }, { "string" : "e", "attrId" : 139, "flatCharIndex" : 14561 }, { "string" : "x", "attrId" : 139, "flatCharIndex" : 14562 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 14563 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14564 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14565 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14566 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14567 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14568 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14569 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14570 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14571 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14572 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14573 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14574 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14575 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14576 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14577 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14578 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14579 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14580 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14581 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14582 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14583 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14584 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14585 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14586 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14587 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14588 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14589 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14590 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14591 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14592 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14593 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14594 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14595 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14596 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14597 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14598 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14599 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14600 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14601 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14602 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14603 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14604 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14605 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14606 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14607 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14608 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14609 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14610 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14611 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14612 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14613 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14614 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14615 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14616 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14617 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14618 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14619 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14620 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14621 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14622 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14623 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14624 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14625 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14626 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14627 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14628 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14629 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14630 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14631 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14632 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14633 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14634 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14635 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14636 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14637 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14638 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14639 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14640 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14641 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14642 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14643 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14644 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14645 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14646 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14647 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14648 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14649 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14650 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14651 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14652 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 14653 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14654 }, { "string" : "u", "attrId" : 151, "flatCharIndex" : 14655 }, { "string" : "n", "attrId" : 151, "flatCharIndex" : 14656 }, { "string" : "i", "attrId" : 151, "flatCharIndex" : 14657 }, { "string" : "x", "attrId" : 151, "flatCharIndex" : 14658 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14659 }, { "string" : "|", "attrId" : 151, "flatCharIndex" : 14660 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14661 }, { "string" : "u", "attrId" : 151, "flatCharIndex" : 14662 }, { "string" : "t", "attrId" : 151, "flatCharIndex" : 14663 }, { "string" : "f", "attrId" : 151, "flatCharIndex" : 14664 }, { "string" : "-", "attrId" : 151, "flatCharIndex" : 14665 }, { "string" : "8", "attrId" : 151, "flatCharIndex" : 14666 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14667 }, { "string" : "|", "attrId" : 151, "flatCharIndex" : 14668 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14669 }, { "string" : "t", "attrId" : 151, "flatCharIndex" : 14670 }, { "string" : "e", "attrId" : 151, "flatCharIndex" : 14671 }, { "string" : "x", "attrId" : 151, "flatCharIndex" : 14672 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 14673 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 14674 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 14675 }, { "string" : "1", "attrId" : 150, "flatCharIndex" : 14676 }, { "string" : "4", "attrId" : 150, "flatCharIndex" : 14677 }, { "string" : "%", "attrId" : 150, "flatCharIndex" : 14678 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 14679 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 14680 }, { "string" : "1", "attrId" : 147, "flatCharIndex" : 14681 }, { "string" : "5", "attrId" : 147, "flatCharIndex" : 14682 }, { "string" : "5", "attrId" : 147, "flatCharIndex" : 14683 }, { "string" : ":", "attrId" : 147, "flatCharIndex" : 14684 }, { "string" : "1", "attrId" : 147, "flatCharIndex" : 14685 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 14686 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 14687 } ], [ { "string" : " ", "attrId" : 0, "flatCharIndex" : 14688 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14689 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14690 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14691 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14692 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14693 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14694 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14695 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14696 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14697 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14698 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14699 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14700 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14701 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14702 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14703 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14704 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14705 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14706 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14707 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14708 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14709 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14710 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14711 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14712 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14713 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14714 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14715 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14716 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14717 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14718 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14719 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14720 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14721 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14722 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14723 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14724 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14725 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14726 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14727 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14728 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14729 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14730 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14731 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14732 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14733 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14734 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14735 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14736 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14737 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14738 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14739 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14740 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14741 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14742 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14743 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14744 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14745 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14746 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14747 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14748 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14749 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14750 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14751 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14752 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14753 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14754 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14755 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14756 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14757 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14758 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14759 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14760 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14761 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14762 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14763 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14764 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14765 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14766 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14767 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14768 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14769 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14770 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14771 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14772 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14773 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14774 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14775 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14776 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14777 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14778 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14779 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14780 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14781 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14782 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14783 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14784 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14785 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14786 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14787 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14788 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14789 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14790 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14791 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14792 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14793 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14794 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14795 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14796 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14797 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14798 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14799 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14800 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14801 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14802 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14803 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14804 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14805 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14806 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14807 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14808 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14809 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14810 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14811 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14812 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14813 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14814 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14815 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14816 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14817 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14818 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14819 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14820 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14821 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14822 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14823 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14824 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14825 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14826 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14827 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14828 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14829 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14830 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14831 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14832 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14833 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14834 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14835 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14836 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14837 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14838 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14839 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 14840 } ] ], "height" : 97 } ================================================ FILE: NvimView/Support/DrawerPerf/2.json ================================================ { "width" : 153, "cells" : [ [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ञा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ञा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वै", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "छ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "४", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "५", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "०", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "४", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "५", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "०", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बें", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "लू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "घ्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "छ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "डा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "में", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "टृ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ञा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बें", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "डा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "में", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "टृ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ञा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थि", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "छ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वै", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बें", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "२", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "४", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ऎ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ही", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हिं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "वं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हिं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "टि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वै", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शि", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जै", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "इ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "णि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ऎ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बें", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "४", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "५", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "०", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कै", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "है", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "इ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "७", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "०", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "है", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "छ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "डा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "४", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "५", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "०", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ई", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हिं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वै", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "घ्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 74, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 74, "flatCharIndex" : 0 }, { "string" : "0", "attrId" : 74, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 74, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 73, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ञा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ञा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वै", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "छ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "४", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "५", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "०", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "४", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "५", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "०", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बें", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "लू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "घ्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "छ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "डा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "में", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "टृ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "2", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "3", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "फ़्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ञा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बें", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "डा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "में", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "टृ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ञा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "7", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ती", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थि", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "चे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "से", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "(", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "8", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "9", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रां", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "था", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ले", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रौ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "गि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "को", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "!", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "ने", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ज", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सं", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "व", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ति", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "पे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रु", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "की", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "0", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "6", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ल", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शे", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "शा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "आ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "कु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "छ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ढा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ट", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "थ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ता", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "च", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "।", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "री", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "के", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ला", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ना", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "रा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "अ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वै", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "श्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 79, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ए", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ये", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "दि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "औ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ह", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "हि", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 54, "flatCharIndex" : 0 }, { "string" : "त", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "उ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "द्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "यो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "या", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बें", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "लू", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ष", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : ".", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "२", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "४", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ऎ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "जी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ग", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "मु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सु", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "वि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "नि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "प", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ही", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "क", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "म", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ख", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ण्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ड", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बी", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "स", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ब", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ते", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "बो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ध", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "का", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "र्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "य", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "सि", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "धा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "न्", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "तो", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "भा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "षा", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "ओ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "?", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ], [ { "string" : " ", "attrId" : 136, "flatCharIndex" : 0 }, { "string" : "N", "attrId" : 136, "flatCharIndex" : 0 }, { "string" : "O", "attrId" : 136, "flatCharIndex" : 0 }, { "string" : "R", "attrId" : 136, "flatCharIndex" : 0 }, { "string" : "M", "attrId" : 136, "flatCharIndex" : 0 }, { "string" : "A", "attrId" : 136, "flatCharIndex" : 0 }, { "string" : "L", "attrId" : 136, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 136, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "[", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "N", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "o", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "N", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "a", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "m", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "e", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "]", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "|", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : "+", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 139, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 155, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "u", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "n", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "i", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "x", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "|", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "u", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "t", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "f", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "-", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "8", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "|", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "n", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "o", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "f", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : "t", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 151, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 0 }, { "string" : "5", "attrId" : 150, "flatCharIndex" : 0 }, { "string" : "0", "attrId" : 150, "flatCharIndex" : 0 }, { "string" : "%", "attrId" : 150, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 150, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 0 }, { "string" : "4", "attrId" : 147, "flatCharIndex" : 0 }, { "string" : "0", "attrId" : 147, "flatCharIndex" : 0 }, { "string" : ":", "attrId" : 147, "flatCharIndex" : 0 }, { "string" : "1", "attrId" : 147, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 147, "flatCharIndex" : 0 } ], [ { "string" : "3", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "8", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "m", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "o", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "r", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "l", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "i", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "n", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "e", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : "s", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 }, { "string" : " ", "attrId" : 0, "flatCharIndex" : 0 } ] ], "height" : 97 } ================================================ FILE: NvimView/Support/DrawerPerf/AppDelegate.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import GameKit import os @main class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet var window: NSWindow! var result = [[[FontGlyphRun]]](repeating: [], count: count) func applicationDidFinishLaunching(_: Notification) { var results = [CFTimeInterval]() let repeatCount = 5 for _ in 0.. Void) -> CFTimeInterval { let start = CFAbsoluteTimeGetCurrent() body() return CFAbsoluteTimeGetCurrent() - start } } private let count = 500 ================================================ FILE: NvimView/Support/DrawerPerf/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images": [ { "idiom": "mac", "size": "16x16", "scale": "1x" }, { "idiom": "mac", "size": "16x16", "scale": "2x" }, { "idiom": "mac", "size": "32x32", "scale": "1x" }, { "idiom": "mac", "size": "32x32", "scale": "2x" }, { "idiom": "mac", "size": "128x128", "scale": "1x" }, { "idiom": "mac", "size": "128x128", "scale": "2x" }, { "idiom": "mac", "size": "256x256", "scale": "1x" }, { "idiom": "mac", "size": "256x256", "scale": "2x" }, { "idiom": "mac", "size": "512x512", "scale": "1x" }, { "idiom": "mac", "size": "512x512", "scale": "2x" } ], "info": { "version": 1, "author": "xcode" } } ================================================ FILE: NvimView/Support/DrawerPerf/Assets.xcassets/Contents.json ================================================ { "info": { "version": 1, "author": "xcode" } } ================================================ FILE: NvimView/Support/DrawerPerf/Base.lproj/MainMenu.xib ================================================ Default Left to Right Right to Left Default Left to Right Right to Left ================================================ FILE: NvimView/Support/DrawerPerf/FontTrait.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation public struct FontTrait: OptionSet { public let rawValue: UInt public init(rawValue: UInt) { self.rawValue = rawValue } static let italic = FontTrait(rawValue: 1 << 0) static let bold = FontTrait(rawValue: 1 << 1) static let underline = FontTrait(rawValue: 1 << 2) static let undercurl = FontTrait(rawValue: 1 << 3) } ================================================ FILE: NvimView/Support/DrawerPerf/Info.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString SNAPSHOT-357 CFBundleVersion 357 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright Copyright © 2019 Tae Won Ha. All rights reserved. NSMainNibFile MainMenu NSPrincipalClass NSApplication ================================================ FILE: NvimView/Support/DrawerPerf/NvimView.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa // Dummy NvimView class for FontUtils. class NvimView { static let defaultFont = NSFont.userFixedPitchFont(ofSize: 12)! static let minFontSize = CGFloat(9) static let maxFontSize = CGFloat(128) } ================================================ FILE: NvimView/Support/DrawerPerf/PerfTester.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE * * 0.json from: https://github.com/gshslatexintro/An-Introduction-to-LaTeX * 1.json from @telemachus * 2.json from http://generator.lorem-ipsum.info */ import Cocoa import GameKit import os class PerfTester { init() { self.cellSize = FontUtils.cellSize(of: self.font, linespacing: 1.25, characterspacing: 1) for name in ["0", "1", "2"] { guard let fileUrl = Bundle(for: PerfTester.self) .url(forResource: name, withExtension: "json") else { preconditionFailure("Could not find \(name).json") } let decoder = JSONDecoder() do { let data = try Data(contentsOf: fileUrl) try self.ugrids.append(decoder.decode(UGrid.self, from: data)) } catch { preconditionFailure("Couldn't decode UGrid from \(name).json: \(error)") } } self.initAttrs() } func render(_ index: Int) -> [[FontGlyphRun]] { precondition((0...2).contains(index), "Wrong index!") let ugrid = self.ugrids[index] let runs = self.runs( index, forRowRange: 0...ugrid.size.height - 1, columnRange: 0...ugrid.size.width - 1 ) return runs.map { run in let font = FontUtils.font( adding: run.attrs.fontTrait, to: self.font ) return self.typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: run.cells.map { Array($0.string.utf16) }, startColumn: run.cells.startIndex, offset: .zero, font: font, cellWidth: 20 ) } } private var ugrids = [UGrid]() private let cellAttrsCollection = CellAttributesCollection() private let typesetter = Typesetter() private let font = NSFont.userFixedPitchFont(ofSize: 13)! private let cellSize: CGSize private func runs( _ index: Int, forRowRange rowRange: ClosedRange, columnRange: ClosedRange ) -> [AttributesRun] { precondition(index >= 0 && index <= 2, "Wrong index!") let ugrid = self.ugrids[index] return rowRange.map { row in ugrid.cells[row][columnRange] .groupedRanges(with: { cell in cell.attrId }) .compactMap { range in let cells = ugrid.cells[row][range] guard let firstCell = cells.first, let attrs = self.cellAttrsCollection.attributes( of: firstCell.attrId ) else { // GH-666: FIXME: correct error handling self.log.error( "row: \(row), range: \(range): " + "Could not get CellAttributes with ID " + "\(String(describing: cells.first?.attrId))" ) return nil } return AttributesRun( location: CGPoint.zero, cells: ugrid.cells[row][range], attrs: attrs ) } } .flatMap { $0 } } private let fontTraitRd = GKRandomDistribution( randomSource: randomSource, lowestValue: 0, highestValue: 6 ) private let intColorRd = GKRandomDistribution( randomSource: randomSource, lowestValue: 0, highestValue: 16_777_215 ) private let attrsRunRd = GKRandomDistribution( randomSource: randomSource, lowestValue: 0, highestValue: 10 ) private let log = Logger( subsystem: "com.qvacua.DrawerPerf", category: "perf-tester" ) private func initAttrs() { for i in 1..<200 { self.cellAttrsCollection.set(attributes: self.randomCellAttrs(), for: i) } } private func randomCellAttrs() -> CellAttributes { CellAttributes( fontTrait: self.randomFontTrait(), foreground: self.intColorRd.nextInt(), background: self.intColorRd.nextInt(), special: self.intColorRd.nextInt(), reverse: false ) } private func randomFontTrait() -> FontTrait { switch self.fontTraitRd.nextInt() { case 0: [] case 1: [.italic] case 2: [.bold] case 3: [.underline] case 4: [.undercurl] case 5: [.italic, .bold] case 6: [.bold, .underline] default: [] } } } private let randomSource = GKMersenneTwisterRandomSource(seed: 95_749_272_934) ================================================ FILE: NvimView/Support/MinimalNvimViewDemo/AppDelegate.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa // Hack extension Document: @unchecked Sendable {} @main class AppDelegate: NSObject, NSApplicationDelegate { func applicationDidFinishLaunching(_: Notification) {} func applicationOpenUntitledFile(_: NSApplication) -> Bool { if openNewWindowWhenLaunching { false } else { true } } func applicationShouldHandleReopen(_: NSApplication, hasVisibleWindows _: Bool) -> Bool { false } func applicationShouldTerminate(_: NSApplication) -> NSApplication.TerminateReply { let docs = NSDocumentController.shared.documents.compactMap { $0 as? Document } Task { for d in docs { await d.quitWithoutSaving() } // Quit the app for real NSApplication.shared.reply(toApplicationShouldTerminate: true) } return .terminateLater } } private let openNewWindowWhenLaunching = true ================================================ FILE: NvimView/Support/MinimalNvimViewDemo/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "idiom" : "mac", "size" : "16x16", "scale" : "1x" }, { "idiom" : "mac", "size" : "16x16", "scale" : "2x" }, { "idiom" : "mac", "size" : "32x32", "scale" : "1x" }, { "idiom" : "mac", "size" : "32x32", "scale" : "2x" }, { "idiom" : "mac", "size" : "128x128", "scale" : "1x" }, { "idiom" : "mac", "size" : "128x128", "scale" : "2x" }, { "idiom" : "mac", "size" : "256x256", "scale" : "1x" }, { "idiom" : "mac", "size" : "256x256", "scale" : "2x" }, { "idiom" : "mac", "size" : "512x512", "scale" : "1x" }, { "idiom" : "mac", "size" : "512x512", "scale" : "2x" } ], "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: NvimView/Support/MinimalNvimViewDemo/Assets.xcassets/Contents.json ================================================ { "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: NvimView/Support/MinimalNvimViewDemo/Base.lproj/Document.xib ================================================ ================================================ FILE: NvimView/Support/MinimalNvimViewDemo/Base.lproj/MainMenu.xib ================================================ Default Left to Right Right to Left Default Left to Right Right to Left ================================================ FILE: NvimView/Support/MinimalNvimViewDemo/Document.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import NvimView import PureLayout import Tabs @MainActor final class ViewDelegate: NvimViewDelegate, Sendable { weak var doc: Document? func isMenuItemKeyEquivalent(_: NSEvent) -> Bool { false } func nextEvent(_ event: NvimView.Event) { switch event { case .neoVimStopped: self.doc?.close() default: break } } } class Document: NSDocument, NSWindowDelegate { private let nvimView = NvimView(frame: CGRect(x: 0, y: 0, width: 640, height: 480)) private let viewDelegate = ViewDelegate() override init() { super.init() self.nvimView.translatesAutoresizingMaskIntoConstraints = false self.viewDelegate.doc = self self.nvimView.delegate = self.viewDelegate self.nvimView.font = NSFont(name: "FiraCode Nerd Font Mono", size: 13) ?? NSFont.userFixedPitchFont(ofSize: 13)! self.nvimView.usesLigatures = true } func quitWithoutSaving() async { await self.nvimView.quitNeoVimWithoutSaving() await self.nvimView.stop() } func windowShouldClose(_: NSWindow) -> Bool { Task { await self.quitWithoutSaving() await self.nvimView.stop() } self.close() return true } override func windowControllerDidLoadNib(_ windowController: NSWindowController) { super.windowControllerDidLoadNib(windowController) let window = windowController.window! window.delegate = self let view = window.contentView! let nvimView = self.nvimView // We know that we use custom tabs. let tabBar = nvimView.tabBar! // FIXME: Find out why we have to add tabBar after adding ws, otherwise tabBar is not visible // With deployment target 10_15, adding first tabBar worked fine. view.addSubview(nvimView) view.addSubview(tabBar) tabBar.autoPinEdge(toSuperviewEdge: .left) tabBar.autoPinEdge(toSuperviewEdge: .top) tabBar.autoPinEdge(toSuperviewEdge: .right) tabBar.autoSetDimension(.height, toSize: Tabs.Theme().tabBarHeight) nvimView.autoPinEdge(.top, to: .bottom, of: tabBar) nvimView.autoPinEdge(toSuperviewEdge: .left) nvimView.autoPinEdge(toSuperviewEdge: .right) nvimView.autoPinEdge(toSuperviewEdge: .bottom) } override var windowNibName: NSNib.Name? { NSNib.Name("Document") } override func data(ofType _: String) throws -> Data { throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil) } override func read(from _: Data, ofType _: String) throws { throw NSError(domain: NSOSStatusErrorDomain, code: unimpErr, userInfo: nil) } } extension Document { @IBAction public func debug3(_: Any?) { self.nvimView.toggleFramerateView() } } ================================================ FILE: NvimView/Support/MinimalNvimViewDemo/Info.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDocumentTypes CFBundleTypeExtensions mydoc CFBundleTypeIconFile CFBundleTypeName DocumentType CFBundleTypeOSTypes ???? CFBundleTypeRole Editor NSDocumentClass $(PRODUCT_MODULE_NAME).Document CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString SNAPSHOT-357 CFBundleVersion 357 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSHumanReadableCopyright Copyright © 2019 Tae Won Ha. All rights reserved. NSMainNibFile MainMenu NSPrincipalClass NSApplication ================================================ FILE: NvimView/Support/NvimViewSupport.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 60; objects = { /* Begin PBXBuildFile section */ 1929B11F4306BF8AA97E080F /* Geometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B78E7E39A629E6F562E0 /* Geometry.swift */; }; 1929B2DB631E6EB5C3452B68 /* MyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BAF033A398BFBC2A7890 /* MyView.swift */; }; 1929B2F38470E1DC39215987 /* CellAttributesCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BEA272F8FBB77C464EB9 /* CellAttributesCollection.swift */; }; 1929B45811AAE477DFA4C107 /* FontUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B9AC87B65FDA23239EA7 /* FontUtils.swift */; }; 1929B9F7DD2EB3277A133EAF /* Runs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BC404D40D77F35EA10BB /* Runs.swift */; }; 1929BAA738326459033CADAE /* Typesetter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B92EC70C40EE6647886E /* Typesetter.swift */; }; 1929BC29B7858F8E963FD9BE /* AttributesRunDrawer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B8E30EBB02E9CF99E5E3 /* AttributesRunDrawer.swift */; }; 1929BCC8C561F0DE73B67D90 /* CellAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BDFF7AC6A198BDC64B14 /* CellAttributes.swift */; }; 1929BD694DE393302A1AF42E /* ColorUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B51A7E7A07A38C8497FF /* ColorUtils.swift */; }; 1929BE00E22B5E472B89C7AA /* Defs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B201A097751F817A23B1 /* Defs.swift */; }; 1929BE88F4A892215227D0AB /* UGrid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BEB34345F348237FE0E4 /* UGrid.swift */; }; 4B015A882D2DBDBB00C7E03A /* Commons in Frameworks */ = {isa = PBXBuildFile; productRef = 4B015A872D2DBDBB00C7E03A /* Commons */; }; 4B0225F3224AAE260052362B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0225F2224AAE260052362B /* AppDelegate.swift */; }; 4B0225F5224AAE260052362B /* Document.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0225F4224AAE260052362B /* Document.swift */; }; 4B0225F8224AAE260052362B /* Document.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B0225F6224AAE260052362B /* Document.xib */; }; 4B0225FA224AAE270052362B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4B0225F9224AAE270052362B /* Assets.xcassets */; }; 4B0225FD224AAE270052362B /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B0225FB224AAE270052362B /* MainMenu.xib */; }; 4B0B364F25953BEB00B06899 /* NvimView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0B364E25953BEB00B06899 /* NvimView.swift */; }; 4B0B365725953CDE00B06899 /* NvimView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0B365625953CDE00B06899 /* NvimView.swift */; }; 4B0B365D25953D3D00B06899 /* NvimView in Frameworks */ = {isa = PBXBuildFile; productRef = 4B0B365C25953D3D00B06899 /* NvimView */; }; 4B117B5D2B03FF91000DBFB4 /* FontTrait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD67CB124ED03B000147C51 /* FontTrait.swift */; }; 4B90B6842775F0F400ACF552 /* KeyUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90B6832775F0F400ACF552 /* KeyUtils.swift */; }; 4B90B6852775F0F400ACF552 /* KeyUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B90B6832775F0F400ACF552 /* KeyUtils.swift */; }; 4BD67C9924ECF53E00147C51 /* Commons in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD67C7C24ECF35300147C51 /* Commons */; }; 4BD67CA524ED037000147C51 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD67CA424ED037000147C51 /* AppDelegate.swift */; }; 4BD67CA724ED037100147C51 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4BD67CA624ED037100147C51 /* Assets.xcassets */; }; 4BD67CAA24ED037100147C51 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BD67CA824ED037100147C51 /* MainMenu.xib */; }; 4BD67CB524ED03B000147C51 /* 0.json in Resources */ = {isa = PBXBuildFile; fileRef = 4BD67CB024ED03B000147C51 /* 0.json */; }; 4BD67CB624ED03B000147C51 /* FontTrait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD67CB124ED03B000147C51 /* FontTrait.swift */; }; 4BD67CB724ED03B000147C51 /* PerfTester.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BD67CB224ED03B000147C51 /* PerfTester.swift */; }; 4BD67CB824ED03B000147C51 /* 2.json in Resources */ = {isa = PBXBuildFile; fileRef = 4BD67CB324ED03B000147C51 /* 2.json */; }; 4BD67CB924ED03B000147C51 /* 1.json in Resources */ = {isa = PBXBuildFile; fileRef = 4BD67CB424ED03B000147C51 /* 1.json */; }; 4BD67CBB24ED03BF00147C51 /* Commons in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD67CBA24ED03BF00147C51 /* Commons */; }; 4BD67CBE24ED03ED00147C51 /* Typesetter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B92EC70C40EE6647886E /* Typesetter.swift */; }; 4BD67CBF24ED03F800147C51 /* Runs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BC404D40D77F35EA10BB /* Runs.swift */; }; 4BD67CC024ED03F800147C51 /* UGrid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BEB34345F348237FE0E4 /* UGrid.swift */; }; 4BD67CC124ED040100147C51 /* CellAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BDFF7AC6A198BDC64B14 /* CellAttributes.swift */; }; 4BD67CC424ED040E00147C51 /* ColorUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B51A7E7A07A38C8497FF /* ColorUtils.swift */; }; 4BD67CC524ED041400147C51 /* CellAttributesCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BEA272F8FBB77C464EB9 /* CellAttributesCollection.swift */; }; 4BD67CC624ED041A00147C51 /* FontUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B9AC87B65FDA23239EA7 /* FontUtils.swift */; }; 4BD67CC724ED042000147C51 /* Geometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B78E7E39A629E6F562E0 /* Geometry.swift */; }; 4BD67CC824ED042600147C51 /* Defs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B201A097751F817A23B1 /* Defs.swift */; }; 4BD67CCC24ED089800147C51 /* Commons in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD67CCB24ED089800147C51 /* Commons */; }; 4BD67CD124ED08D400147C51 /* PureLayout in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD67CD024ED08D400147C51 /* PureLayout */; }; 4BF1852321313EE400954FE7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BF1852221313EE400954FE7 /* AppDelegate.swift */; }; 4BF1852521313EE500954FE7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4BF1852421313EE500954FE7 /* Assets.xcassets */; }; 4BF1852821313EE500954FE7 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BF1852621313EE500954FE7 /* MainMenu.xib */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ 4B022619224AAEA80052362B /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 1929B201A097751F817A23B1 /* Defs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Defs.swift; path = ../Sources/NvimView/Defs.swift; sourceTree = ""; }; 1929B51A7E7A07A38C8497FF /* ColorUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ColorUtils.swift; path = ../Sources/NvimView/ColorUtils.swift; sourceTree = ""; }; 1929B78E7E39A629E6F562E0 /* Geometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Geometry.swift; path = ../Sources/NvimView/Geometry.swift; sourceTree = ""; }; 1929B8E30EBB02E9CF99E5E3 /* AttributesRunDrawer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AttributesRunDrawer.swift; path = ../Sources/NvimView/AttributesRunDrawer.swift; sourceTree = ""; }; 1929B92EC70C40EE6647886E /* Typesetter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Typesetter.swift; path = ../Sources/NvimView/Typesetter.swift; sourceTree = ""; }; 1929B9AC87B65FDA23239EA7 /* FontUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FontUtils.swift; path = ../Sources/NvimView/FontUtils.swift; sourceTree = ""; }; 1929BAF033A398BFBC2A7890 /* MyView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyView.swift; sourceTree = ""; }; 1929BC404D40D77F35EA10BB /* Runs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Runs.swift; path = ../Sources/NvimView/Runs.swift; sourceTree = ""; }; 1929BDFF7AC6A198BDC64B14 /* CellAttributes.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CellAttributes.swift; path = ../Sources/NvimView/CellAttributes.swift; sourceTree = ""; }; 1929BEA272F8FBB77C464EB9 /* CellAttributesCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CellAttributesCollection.swift; path = ../Sources/NvimView/CellAttributesCollection.swift; sourceTree = ""; }; 1929BEB34345F348237FE0E4 /* UGrid.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = UGrid.swift; path = ../Sources/NvimView/UGrid.swift; sourceTree = ""; }; 4B0225F0224AAE260052362B /* MinimalNvimViewDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MinimalNvimViewDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4B0225F2224AAE260052362B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4B0225F4224AAE260052362B /* Document.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Document.swift; sourceTree = ""; }; 4B0225F7224AAE260052362B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Document.xib; sourceTree = ""; }; 4B0225F9224AAE270052362B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 4B0225FC224AAE270052362B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 4B0225FE224AAE270052362B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4B0B364E25953BEB00B06899 /* NvimView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NvimView.swift; sourceTree = ""; }; 4B0B365625953CDE00B06899 /* NvimView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NvimView.swift; sourceTree = ""; }; 4B90B6832775F0F400ACF552 /* KeyUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = KeyUtils.swift; path = ../Sources/NvimView/KeyUtils.swift; sourceTree = ""; }; 4BD67CA224ED037000147C51 /* DrawerPerf.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DrawerPerf.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BD67CA424ED037000147C51 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4BD67CA624ED037100147C51 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 4BD67CA924ED037100147C51 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 4BD67CAB24ED037100147C51 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4BD67CB024ED03B000147C51 /* 0.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = 0.json; sourceTree = ""; }; 4BD67CB124ED03B000147C51 /* FontTrait.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FontTrait.swift; sourceTree = ""; }; 4BD67CB224ED03B000147C51 /* PerfTester.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PerfTester.swift; sourceTree = ""; }; 4BD67CB324ED03B000147C51 /* 2.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = 2.json; sourceTree = ""; }; 4BD67CB424ED03B000147C51 /* 1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = 1.json; sourceTree = ""; }; 4BF1852021313EE300954FE7 /* DrawerDev.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DrawerDev.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BF1852221313EE400954FE7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4BF1852421313EE500954FE7 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 4BF1852721313EE500954FE7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 4BF1852921313EE500954FE7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 4B0225ED224AAE260052362B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4BD67CD124ED08D400147C51 /* PureLayout in Frameworks */, 4B0B365D25953D3D00B06899 /* NvimView in Frameworks */, 4BD67CCC24ED089800147C51 /* Commons in Frameworks */, 4B015A882D2DBDBB00C7E03A /* Commons in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BD67C9F24ED037000147C51 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4BD67CBB24ED03BF00147C51 /* Commons in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BF1851D21313EE300954FE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4BD67C9924ECF53E00147C51 /* Commons in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 1929B38C5A0A59172A3402B2 /* NvimView Sources */ = { isa = PBXGroup; children = ( 4B90B6832775F0F400ACF552 /* KeyUtils.swift */, 1929B8E30EBB02E9CF99E5E3 /* AttributesRunDrawer.swift */, 1929BDFF7AC6A198BDC64B14 /* CellAttributes.swift */, 1929BEA272F8FBB77C464EB9 /* CellAttributesCollection.swift */, 1929B51A7E7A07A38C8497FF /* ColorUtils.swift */, 1929B201A097751F817A23B1 /* Defs.swift */, 1929B9AC87B65FDA23239EA7 /* FontUtils.swift */, 1929B78E7E39A629E6F562E0 /* Geometry.swift */, 1929BC404D40D77F35EA10BB /* Runs.swift */, 1929B92EC70C40EE6647886E /* Typesetter.swift */, 1929BEB34345F348237FE0E4 /* UGrid.swift */, ); name = "NvimView Sources"; sourceTree = ""; }; 4B0225F1224AAE260052362B /* MinimalNvimViewDemo */ = { isa = PBXGroup; children = ( 4B0225F2224AAE260052362B /* AppDelegate.swift */, 4B0225F4224AAE260052362B /* Document.swift */, 4B0225F6224AAE260052362B /* Document.xib */, 4B0225F9224AAE270052362B /* Assets.xcassets */, 4B0225FB224AAE270052362B /* MainMenu.xib */, 4B0225FE224AAE270052362B /* Info.plist */, ); path = MinimalNvimViewDemo; sourceTree = ""; }; 4B0B363425953AC000B06899 /* Frameworks */ = { isa = PBXGroup; children = ( ); name = Frameworks; sourceTree = ""; }; 4B90EFFA1FD2AF59008A39E0 = { isa = PBXGroup; children = ( 1929B38C5A0A59172A3402B2 /* NvimView Sources */, 4BD67CA324ED037000147C51 /* DrawerPerf */, 4BF1852121313EE400954FE7 /* DrawerDev */, 4B0225F1224AAE260052362B /* MinimalNvimViewDemo */, 4B90F0051FD2AF59008A39E0 /* Products */, 4B0B363425953AC000B06899 /* Frameworks */, ); sourceTree = ""; }; 4B90F0051FD2AF59008A39E0 /* Products */ = { isa = PBXGroup; children = ( 4BF1852021313EE300954FE7 /* DrawerDev.app */, 4B0225F0224AAE260052362B /* MinimalNvimViewDemo.app */, 4BD67CA224ED037000147C51 /* DrawerPerf.app */, ); name = Products; sourceTree = ""; }; 4BD67CA324ED037000147C51 /* DrawerPerf */ = { isa = PBXGroup; children = ( 4B0B365625953CDE00B06899 /* NvimView.swift */, 4BD67CA424ED037000147C51 /* AppDelegate.swift */, 4BD67CB124ED03B000147C51 /* FontTrait.swift */, 4BD67CB224ED03B000147C51 /* PerfTester.swift */, 4BD67CA624ED037100147C51 /* Assets.xcassets */, 4BD67CA824ED037100147C51 /* MainMenu.xib */, 4BD67CAB24ED037100147C51 /* Info.plist */, 4BD67CB024ED03B000147C51 /* 0.json */, 4BD67CB424ED03B000147C51 /* 1.json */, 4BD67CB324ED03B000147C51 /* 2.json */, ); path = DrawerPerf; sourceTree = ""; }; 4BF1852121313EE400954FE7 /* DrawerDev */ = { isa = PBXGroup; children = ( 4BF1852221313EE400954FE7 /* AppDelegate.swift */, 4BF1852421313EE500954FE7 /* Assets.xcassets */, 4BF1852621313EE500954FE7 /* MainMenu.xib */, 4BF1852921313EE500954FE7 /* Info.plist */, 1929BAF033A398BFBC2A7890 /* MyView.swift */, 4B0B364E25953BEB00B06899 /* NvimView.swift */, ); path = DrawerDev; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 4B0225EF224AAE260052362B /* MinimalNvimViewDemo */ = { isa = PBXNativeTarget; buildConfigurationList = 4B022602224AAE270052362B /* Build configuration list for PBXNativeTarget "MinimalNvimViewDemo" */; buildPhases = ( 4B0225EC224AAE260052362B /* Sources */, 4B0225ED224AAE260052362B /* Frameworks */, 4B0225EE224AAE260052362B /* Resources */, 4B022619224AAEA80052362B /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( ); name = MinimalNvimViewDemo; packageProductDependencies = ( 4BD67CCB24ED089800147C51 /* Commons */, 4BD67CD024ED08D400147C51 /* PureLayout */, 4B0B365C25953D3D00B06899 /* NvimView */, 4B015A872D2DBDBB00C7E03A /* Commons */, ); productName = MinimalNvimViewDemo; productReference = 4B0225F0224AAE260052362B /* MinimalNvimViewDemo.app */; productType = "com.apple.product-type.application"; }; 4BD67CA124ED037000147C51 /* DrawerPerf */ = { isa = PBXNativeTarget; buildConfigurationList = 4BD67CAD24ED037100147C51 /* Build configuration list for PBXNativeTarget "DrawerPerf" */; buildPhases = ( 4BD67C9E24ED037000147C51 /* Sources */, 4BD67C9F24ED037000147C51 /* Frameworks */, 4BD67CA024ED037000147C51 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = DrawerPerf; packageProductDependencies = ( 4BD67CBA24ED03BF00147C51 /* Commons */, ); productName = DrawerPerf; productReference = 4BD67CA224ED037000147C51 /* DrawerPerf.app */; productType = "com.apple.product-type.application"; }; 4BF1851F21313EE300954FE7 /* DrawerDev */ = { isa = PBXNativeTarget; buildConfigurationList = 4BF1852D21313EE500954FE7 /* Build configuration list for PBXNativeTarget "DrawerDev" */; buildPhases = ( 4BF1851C21313EE300954FE7 /* Sources */, 4BF1851D21313EE300954FE7 /* Frameworks */, 4BF1851E21313EE300954FE7 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = DrawerDev; packageProductDependencies = ( 4BD67C7C24ECF35300147C51 /* Commons */, ); productName = DrawerDev; productReference = 4BF1852021313EE300954FE7 /* DrawerDev.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 4B90EFFB1FD2AF59008A39E0 /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 1620; LastUpgradeCheck = 2620; ORGANIZATIONNAME = "Tae Won Ha"; TargetAttributes = { 4B0225EF224AAE260052362B = { CreatedOnToolsVersion = 10.2; ProvisioningStyle = Manual; }; 4BD67CA124ED037000147C51 = { CreatedOnToolsVersion = 12.0; }; 4BF1851F21313EE300954FE7 = { CreatedOnToolsVersion = 9.4.1; ProvisioningStyle = Manual; }; }; }; buildConfigurationList = 4B90EFFE1FD2AF59008A39E0 /* Build configuration list for PBXProject "NvimViewSupport" */; compatibilityVersion = "Xcode 8.0"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 4B90EFFA1FD2AF59008A39E0; packageReferences = ( 4BD67CCF24ED08CB00147C51 /* XCRemoteSwiftPackageReference "PureLayout" */, 4B015AC32D2EE86200C7E03A /* XCLocalSwiftPackageReference "../../NvimView" */, ); productRefGroup = 4B90F0051FD2AF59008A39E0 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 4BF1851F21313EE300954FE7 /* DrawerDev */, 4B0225EF224AAE260052362B /* MinimalNvimViewDemo */, 4BD67CA124ED037000147C51 /* DrawerPerf */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 4B0225EE224AAE260052362B /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 4B0225FA224AAE270052362B /* Assets.xcassets in Resources */, 4B0225F8224AAE260052362B /* Document.xib in Resources */, 4B0225FD224AAE270052362B /* MainMenu.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BD67CA024ED037000147C51 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BD67CB924ED03B000147C51 /* 1.json in Resources */, 4BD67CB824ED03B000147C51 /* 2.json in Resources */, 4BD67CB524ED03B000147C51 /* 0.json in Resources */, 4BD67CA724ED037100147C51 /* Assets.xcassets in Resources */, 4BD67CAA24ED037100147C51 /* MainMenu.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BF1851E21313EE300954FE7 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BF1852521313EE500954FE7 /* Assets.xcassets in Resources */, 4BF1852821313EE500954FE7 /* MainMenu.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 4B0225EC224AAE260052362B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4B0225F5224AAE260052362B /* Document.swift in Sources */, 4B0225F3224AAE260052362B /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BD67C9E24ED037000147C51 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BD67CC824ED042600147C51 /* Defs.swift in Sources */, 4BD67CC724ED042000147C51 /* Geometry.swift in Sources */, 4BD67CC624ED041A00147C51 /* FontUtils.swift in Sources */, 4BD67CC524ED041400147C51 /* CellAttributesCollection.swift in Sources */, 4BD67CC424ED040E00147C51 /* ColorUtils.swift in Sources */, 4BD67CC124ED040100147C51 /* CellAttributes.swift in Sources */, 4BD67CBF24ED03F800147C51 /* Runs.swift in Sources */, 4B90B6852775F0F400ACF552 /* KeyUtils.swift in Sources */, 4BD67CC024ED03F800147C51 /* UGrid.swift in Sources */, 4BD67CBE24ED03ED00147C51 /* Typesetter.swift in Sources */, 4B0B365725953CDE00B06899 /* NvimView.swift in Sources */, 4BD67CA524ED037000147C51 /* AppDelegate.swift in Sources */, 4BD67CB724ED03B000147C51 /* PerfTester.swift in Sources */, 4BD67CB624ED03B000147C51 /* FontTrait.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BF1851C21313EE300954FE7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4B117B5D2B03FF91000DBFB4 /* FontTrait.swift in Sources */, 4BF1852321313EE400954FE7 /* AppDelegate.swift in Sources */, 1929B2DB631E6EB5C3452B68 /* MyView.swift in Sources */, 1929BC29B7858F8E963FD9BE /* AttributesRunDrawer.swift in Sources */, 1929BCC8C561F0DE73B67D90 /* CellAttributes.swift in Sources */, 1929B2F38470E1DC39215987 /* CellAttributesCollection.swift in Sources */, 1929BD694DE393302A1AF42E /* ColorUtils.swift in Sources */, 1929BE00E22B5E472B89C7AA /* Defs.swift in Sources */, 4B90B6842775F0F400ACF552 /* KeyUtils.swift in Sources */, 1929B45811AAE477DFA4C107 /* FontUtils.swift in Sources */, 1929B11F4306BF8AA97E080F /* Geometry.swift in Sources */, 4B0B364F25953BEB00B06899 /* NvimView.swift in Sources */, 1929B9F7DD2EB3277A133EAF /* Runs.swift in Sources */, 1929BAA738326459033CADAE /* Typesetter.swift in Sources */, 1929BE88F4A892215227D0AB /* UGrid.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 4B0225F6224AAE260052362B /* Document.xib */ = { isa = PBXVariantGroup; children = ( 4B0225F7224AAE260052362B /* Base */, ); name = Document.xib; sourceTree = ""; }; 4B0225FB224AAE270052362B /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( 4B0225FC224AAE270052362B /* Base */, ); name = MainMenu.xib; sourceTree = ""; }; 4BD67CA824ED037100147C51 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( 4BD67CA924ED037100147C51 /* Base */, ); name = MainMenu.xib; sourceTree = ""; }; 4BF1852621313EE500954FE7 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( 4BF1852721313EE500954FE7 /* Base */, ); name = MainMenu.xib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 4B022600224AAE270052362B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = MinimalNvimViewDemo/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.MinimalNvimViewDemo; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; }; name = Debug; }; 4B022601224AAE270052362B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = MinimalNvimViewDemo/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.MinimalNvimViewDemo; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; }; name = Release; }; 4B90F00A1FD2AF59008A39E0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 357; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_DISABLE_SAFETY_CHECKS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 6.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; 4B90F00B1FD2AF59008A39E0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 357; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = fast; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = NO; STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_DISABLE_SAFETY_CHECKS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 6.0; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Release; }; 4BD67CAE24ED037100147C51 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = DrawerPerf/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.DrawerPerf; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; }; name = Debug; }; 4BD67CAF24ED037100147C51 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = DrawerPerf/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MTL_FAST_MATH = YES; PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.DrawerPerf; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; }; name = Release; }; 4BF1852B21313EE500954FE7 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = DrawerDev/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.DrawerDev; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; }; name = Debug; }; 4BF1852C21313EE500954FE7 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_OBJC_WEAK = YES; COMBINE_HIDPI_IMAGES = YES; DEAD_CODE_STRIPPING = YES; INFOPLIST_FILE = DrawerDev/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.DrawerDev; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = macosx; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 4B022602224AAE270052362B /* Build configuration list for PBXNativeTarget "MinimalNvimViewDemo" */ = { isa = XCConfigurationList; buildConfigurations = ( 4B022600224AAE270052362B /* Debug */, 4B022601224AAE270052362B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4B90EFFE1FD2AF59008A39E0 /* Build configuration list for PBXProject "NvimViewSupport" */ = { isa = XCConfigurationList; buildConfigurations = ( 4B90F00A1FD2AF59008A39E0 /* Debug */, 4B90F00B1FD2AF59008A39E0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4BD67CAD24ED037100147C51 /* Build configuration list for PBXNativeTarget "DrawerPerf" */ = { isa = XCConfigurationList; buildConfigurations = ( 4BD67CAE24ED037100147C51 /* Debug */, 4BD67CAF24ED037100147C51 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4BF1852D21313EE500954FE7 /* Build configuration list for PBXNativeTarget "DrawerDev" */ = { isa = XCConfigurationList; buildConfigurations = ( 4BF1852B21313EE500954FE7 /* Debug */, 4BF1852C21313EE500954FE7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ /* Begin XCLocalSwiftPackageReference section */ 4B015AC32D2EE86200C7E03A /* XCLocalSwiftPackageReference "../../NvimView" */ = { isa = XCLocalSwiftPackageReference; relativePath = ../../NvimView; }; /* End XCLocalSwiftPackageReference section */ /* Begin XCRemoteSwiftPackageReference section */ 4BD67CCF24ED08CB00147C51 /* XCRemoteSwiftPackageReference "PureLayout" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/PureLayout/PureLayout"; requirement = { kind = upToNextMajorVersion; minimumVersion = 3.1.9; }; }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ 4B015A872D2DBDBB00C7E03A /* Commons */ = { isa = XCSwiftPackageProductDependency; productName = Commons; }; 4B0B365C25953D3D00B06899 /* NvimView */ = { isa = XCSwiftPackageProductDependency; productName = NvimView; }; 4BD67C7C24ECF35300147C51 /* Commons */ = { isa = XCSwiftPackageProductDependency; productName = Commons; }; 4BD67CBA24ED03BF00147C51 /* Commons */ = { isa = XCSwiftPackageProductDependency; productName = Commons; }; 4BD67CCB24ED089800147C51 /* Commons */ = { isa = XCSwiftPackageProductDependency; productName = Commons; }; 4BD67CD024ED08D400147C51 /* PureLayout */ = { isa = XCSwiftPackageProductDependency; package = 4BD67CCF24ED08CB00147C51 /* XCRemoteSwiftPackageReference "PureLayout" */; productName = PureLayout; }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 4B90EFFB1FD2AF59008A39E0 /* Project object */; } ================================================ FILE: NvimView/Support/NvimViewSupport.xcodeproj/project.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: NvimView/Support/NvimViewSupport.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: NvimView/Support/NvimViewSupport.xcodeproj/xcshareddata/xcschemes/MinimalNvimViewDemo.xcscheme ================================================ ================================================ FILE: NvimView/Tests/NvimViewTests/CellAttributesCollectionTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Nimble import XCTest @testable import NvimView class CellAttributesCollectionTest: XCTestCase { func testSetDefaultAttributes() { let attrs = CellAttributes( fontTrait: [], foreground: 1, background: 2, special: 3, reverse: true ) self.cellAttributesCollection.set(attributes: attrs, for: 0) expect(self.cellAttributesCollection.defaultAttributes) .to(equal(attrs)) } func testSetAndGetAttributes() { let attrs = CellAttributes( fontTrait: [], foreground: 1, background: 2, special: 3, reverse: true ) self.cellAttributesCollection.set(attributes: attrs, for: 1) expect(self.cellAttributesCollection.attributes(of: 1)) .to(equal(attrs)) } func testSetAndGetAttributesWithDefaults() { let defaultAttrs = CellAttributes( fontTrait: [], foreground: 10, background: 20, special: 30, reverse: true ) self.cellAttributesCollection .set(attributes: defaultAttrs, for: CellAttributesCollection.defaultAttributesId) var attrs = CellAttributes( fontTrait: [], foreground: -1, background: 2, special: 3, reverse: true ) self.cellAttributesCollection.set(attributes: attrs, for: 1) expect(self.cellAttributesCollection.attributes(of: 1)) .to(equal(CellAttributes( fontTrait: [], foreground: 20, background: 2, special: 3, reverse: true ))) attrs = CellAttributes( fontTrait: [], foreground: 1, background: -1, special: 3, reverse: true ) self.cellAttributesCollection.set(attributes: attrs, for: 1) expect(self.cellAttributesCollection.attributes(of: 1)) .to(equal(CellAttributes( fontTrait: [], foreground: 1, background: 10, special: 3, reverse: true ))) attrs = CellAttributes( fontTrait: [], foreground: 1, background: -1, special: -1, reverse: true ) self.cellAttributesCollection.set(attributes: attrs, for: 1) expect(self.cellAttributesCollection.attributes(of: 1)) .to(equal(CellAttributes( fontTrait: [], foreground: 1, background: 10, special: 30, reverse: true ))) } private let cellAttributesCollection = CellAttributesCollection() } ================================================ FILE: NvimView/Tests/NvimViewTests/NimbleCommons.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Nimble // I don't know why the font returned by Typesetter is not equal to the font // it should be equal to. This is a workaround. func equalFont(_ expectedValue: NSFont?) -> Nimble.Matcher { Matcher { actualExpression in let msg = ExpectationMessage.expectedActualValueTo( "equal <\(String(describing: expectedValue))>" ) if let actualValue = try actualExpression.evaluate() { return MatcherResult( bool: NSFont( name: actualValue.fontName, size: actualValue.pointSize ) == expectedValue!, message: msg ) } else { return MatcherResult( status: .fail, message: msg.appendedBeNilHint() ) } } } ================================================ FILE: NvimView/Tests/NvimViewTests/TypesetterTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Nimble import XCTest @testable import NvimView class TypesetterWithoutLigaturesTest: XCTestCase { // GH-709 func testHindi() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: emojiMarked(["क", "ख", "ग", "घ", "ड़", "-", ">", "ड़"]), startColumn: 10, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(4)) var run = runs[0] expect(run.font).to(equalFont(kohinoorDevanagari)) expect(run.glyphs).to(equal([51, 52, 53, 54, 99])) expect(run.positions).to(equal( (10..<15).map { CGPoint(x: offset.x + CGFloat($0) * defaultWidth, y: offset.y) } )) run = runs[1] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(equal([16, 33])) expect(run.positions).to(equal( (15..<17).map { CGPoint(x: offset.x + CGFloat($0) * defaultWidth, y: offset.y) } )) run = runs[2] expect(run.font).to(equalFont(kohinoorDevanagari)) expect(run.glyphs).to(equal([99])) expect(run.positions).to(equal( (17..<18).map { CGPoint(x: offset.x + CGFloat($0) * defaultWidth, y: offset.y) } )) self.assertEmojiMarker( run: runs[3], xPosition: offset.x + 18 * defaultWidth ) } func testSimpleAsciiChars() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: emojiMarked(["a", "b", "c"]), startColumn: 10, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(3)) expect(run.positions).to(equal( (10..<13).map { CGPoint(x: offset.x + CGFloat($0) * defaultWidth, y: offset.y) } )) self.assertEmojiMarker( run: runs[1], xPosition: offset.x + 13 * defaultWidth ) } func testAccentedChars() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: emojiMarked(["ü", "î", "ñ"]), startColumn: 20, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(3)) expect(run.positions).to(equal( (20..<23).map { CGPoint(x: offset.x + CGFloat($0) * defaultWidth, y: offset.y) } )) self.assertEmojiMarker( run: runs[1], xPosition: offset.x + 23 * defaultWidth ) } func testCombiningChars() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: emojiMarked( ["a", "a\u{1DC1}", "a\u{032A}", "a\u{034B}", "b", "c"] ), startColumn: 10, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(6)) var run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(1)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 10 * defaultWidth, y: offset.y), ] )) run = runs[1] expect(run.font).to(equalFont(courierNew)) expect(run.glyphs).to(haveCount(2)) expect(run.positions[0]) .to(equal(CGPoint(x: offset.x + 11 * defaultWidth, y: offset.y))) expect(run.positions[1].x) .to(beCloseTo(offset.x + 11 * defaultWidth + 0.003, within: 0.001)) expect(run.positions[1].y).to(beCloseTo(offset.y + 0.305, within: 0.001)) run = runs[2] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(2)) expect(run.positions[0]) .to(equal(CGPoint(x: offset.x + 12 * defaultWidth, y: offset.y))) expect(run.positions[1].x) .to(beCloseTo(offset.x + 12 * defaultWidth, within: 0.001)) expect(run.positions[1].y).to(beCloseTo(offset.y - 0.279, within: 0.001)) run = runs[3] expect(run.font).to(equalFont(monaco)) expect(run.glyphs).to(haveCount(2)) expect(run.positions[0]) .to(equal(CGPoint(x: offset.x + 13 * defaultWidth, y: offset.y))) expect(run.positions[1].x) .to(beCloseTo(offset.x + 13 * defaultWidth + 7.804, within: 0.001)) expect(run.positions[1].y).to(beCloseTo(offset.y + 2.446, within: 0.001)) run = runs[4] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(2)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 14 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 15 * defaultWidth, y: offset.y), ] )) self.assertEmojiMarker( run: runs[5], xPosition: offset.x + 16 * defaultWidth ) } func testSimpleEmojis() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: asciiMarked(["a", "b", "\u{1F600}", "", "\u{1F377}", ""]), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(3)) var run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(2)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 2 * defaultWidth, y: offset.y), ] )) run = runs[1] expect(run.font).to(equalFont(emoji)) expect(run.glyphs).to(haveCount(2)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 3 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 5 * defaultWidth, y: offset.y), ] )) self.assertAsciiMarker(run: runs[2], xPosition: offset.x + 7 * defaultWidth) } func testEmojisWithFitzpatrickModifier() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: asciiMarked(["a", "\u{1F476}", "", "\u{1F3FD}", ""]), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(3)) var run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(1)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), ] )) run = runs[1] expect(run.font).to(equalFont(emoji)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 2 * defaultWidth, y: offset.y), ] )) self.assertAsciiMarker(run: runs[2], xPosition: offset.x + 6 * defaultWidth) } func testHangul() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: asciiMarked(["a", "b", "하", "", "태", "", "원", ""]), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(3)) var run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(2)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 2 * defaultWidth, y: offset.y), ] )) run = runs[1] expect(run.font).to(equalFont(gothic)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 3 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 5 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 7 * defaultWidth, y: offset.y), ] )) self.assertAsciiMarker(run: runs[2], xPosition: offset.x + 9 * defaultWidth) } func testHanja() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: asciiMarked(["a", "b", "河", "", "泰", "", "元", ""]), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(3)) var run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(2)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 2 * defaultWidth, y: offset.y), ] )) run = runs[1] expect(run.font).to(equalFont(gothic)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 3 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 5 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 7 * defaultWidth, y: offset.y), ] )) self.assertAsciiMarker(run: runs[2], xPosition: offset.x + 9 * defaultWidth) } func testOthers() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: emojiMarked(["a", "\u{10437}", "\u{1F14}"]), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(4)) var run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(1)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), ] )) run = runs[1] expect(run.font).to(equalFont(baskerville)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 2 * defaultWidth, y: offset.y), ] )) run = runs[2] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(1)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 3 * defaultWidth, y: offset.y), ] )) self.assertEmojiMarker(run: runs[3], xPosition: offset.x + 4 * defaultWidth) } func testSimpleLigatureChars() { let runs = typesetter.fontGlyphRunsWithoutLigatures( nvimUtf16Cells: emojiMarked(["a", "-", "-", ">", "a"]), startColumn: 1, offset: offset, font: fira, cellWidth: firaWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(fira)) expect(run.glyphs).to(equal([139, 1059, 1059, 1228, 139])) expect(run.positions).to(equal( (1..<6).map { CGPoint(x: offset.x + CGFloat($0) * firaWidth, y: offset.y) } )) self.assertEmojiMarker(run: runs[1], xPosition: offset.x + 6 * firaWidth) } private func assertAsciiMarker(run: FontGlyphRun, xPosition: CGFloat) { expect(run.font).to(equalFont(defaultFont)) expect(run.positions).to(equal([CGPoint(x: xPosition, y: offset.y)])) } private func assertEmojiMarker(run: FontGlyphRun, xPosition: CGFloat) { expect(run.font).to(equalFont(emoji)) expect(run.positions).to(equal([CGPoint(x: xPosition, y: offset.y)])) } } class TypesetterWithLigaturesTest: XCTestCase { func testSimpleAsciiChars() { let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: emojiMarked(Array(repeating: "a", count: 20)), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(20)) expect(run.positions).to(equal( (1..<21).map { CGPoint(x: offset.x + CGFloat($0) * defaultWidth, y: offset.y) } )) self.assertEmojiMarker( run: runs[1], xPosition: offset.x + 21 * defaultWidth ) } func testAccentedChars() { let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: emojiMarked(["ü", "î", "ñ"]), startColumn: 10, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(3)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 10 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 11 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 12 * defaultWidth, y: offset.y), ] )) self.assertEmojiMarker(run: runs[1], xPosition: offset.x + 13 * defaultWidth) } func testCombiningChars() { let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: emojiMarked(["a\u{1DC1}", "a\u{032A}", "a\u{034B}"]), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(4)) // newest xcode(13.1) will crash at the follwing code, by use var run, and call // expect(run.positions[0]). avoid crash do { // The positions of the combining characters are copied from print outputs // and they are visually checked by drawing them and inspecting them... let run = runs[0] expect(run.font).to(equalFont(courierNew)) expect(run.glyphs).to(haveCount(2)) expect(run.positions[0]) .to(equal(CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y))) expect(run.positions[1].x) .to(beCloseTo(offset.x + 1 * defaultWidth + 0.003, within: 0.001)) expect(run.positions[1].y).to(beCloseTo(offset.y + 0.305, within: 0.001)) } do { let run = runs[1] expect(run.font).to(equalFont(defaultFont)) expect(run.glyphs).to(haveCount(2)) expect(run.positions[0]) .to(equal(CGPoint(x: offset.x + 2 * defaultWidth, y: offset.y))) expect(run.positions[1].x) .to(beCloseTo(offset.x + 2 * defaultWidth, within: 0.001)) expect(run.positions[1].y).to(beCloseTo(offset.y - 0.279, within: 0.001)) } do { let run = runs[2] expect(run.font).to(equalFont(monaco)) expect(run.glyphs).to(haveCount(2)) expect(run.positions[0]) .to(equal(CGPoint(x: offset.x + 3 * defaultWidth, y: offset.y))) expect(run.positions[1].x) .to(beCloseTo(offset.x + 3 * defaultWidth + 7.804, within: 0.001)) expect(run.positions[1].y).to(beCloseTo(offset.y + 2.446, within: 0.001)) } self.assertEmojiMarker(run: runs[3], xPosition: offset.x + 4 * defaultWidth) } func testSimpleEmojis() { let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: asciiMarked(["\u{1F600}", "", "\u{1F377}", ""]), startColumn: 0, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(emoji)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 0, y: offset.y), CGPoint(x: offset.x + 2 * defaultWidth, y: offset.y), ] )) self.assertAsciiMarker(run: runs[1], xPosition: offset.x + 4 * defaultWidth) } func testEmojisWithFitzpatrickModifier() { let runs = typesetter.fontGlyphRunsWithLigatures( // Neovim does not yet seem to support the Fitzpatrick modifiers: // It sends the following instead of ["\u{1F476}\u{1F3FD}", ""]. // We render it together anyway and treat it as a 4-cell character. nvimUtf16Cells: asciiMarked(["\u{1F476}", "", "\u{1F3FD}", ""]), startColumn: 0, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(emoji)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 0, y: offset.y), ] )) self.assertAsciiMarker(run: runs[1], xPosition: offset.x + 4 * defaultWidth) } func testEmojisWithZeroWidthJoiner() { // Neovim does not yet seem to support Emojis composed by zero-width-joiner: // If it did, we'd render it correctly. let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: asciiMarked( [ "\u{1F468}\u{200D}\u{1F468}\u{200D}\u{1F467}\u{200D}\u{1F467}", "", ] ), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(emoji)) expect(run.glyphs).to(haveCount(1)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), ] )) self.assertAsciiMarker(run: runs[1], xPosition: offset.x + 3 * defaultWidth) } func testHangul() { let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: asciiMarked(["하", "", "태", "", "원", ""]), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(gothic)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 3 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 5 * defaultWidth, y: offset.y), ] )) self.assertAsciiMarker(run: runs[1], xPosition: offset.x + 7 * defaultWidth) } func testHanja() { let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: asciiMarked(["河", "", "泰", "", "元", ""]), startColumn: 1, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(gothic)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 3 * defaultWidth, y: offset.y), CGPoint(x: offset.x + 5 * defaultWidth, y: offset.y), ] )) self.assertAsciiMarker(run: runs[1], xPosition: offset.x + 7 * defaultWidth) } func testOthers() { let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: emojiMarked(["\u{10437}", "\u{1F14}"]), startColumn: 0, offset: offset, font: defaultFont, cellWidth: defaultWidth ) expect(runs).to(haveCount(3)) var run = runs[0] expect(run.font).to(equalFont(baskerville)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 0, y: offset.y), ] )) run = runs[1] expect(run.font).to(equalFont(defaultFont)) expect(run.positions).to(equal( [ CGPoint(x: offset.x + 1 * defaultWidth, y: offset.y), ] )) self.assertEmojiMarker(run: runs[2], xPosition: offset.x + 2 * defaultWidth) } func testSimpleLigatureChars() { let runs = typesetter.fontGlyphRunsWithLigatures( nvimUtf16Cells: emojiMarked(["-", "-", ">", "a"]), startColumn: 0, offset: offset, font: fira, cellWidth: firaWidth ) expect(runs).to(haveCount(2)) let run = runs[0] expect(run.font).to(equalFont(fira)) // Ligatures of popular monospace fonts like Fira Code seem to be composed // of multiple characters with the same advance as other normal characters. // The glyph codes may change from version to version of Fira Code. // Check using http://mathew-kurian.github.io/CharacterMap/. expect(run.glyphs).to(equal([1142, 1141, 1743, 139])) expect(run.positions).to(equal( (0..<4).map { CGPoint(x: offset.x + CGFloat($0) * firaWidth, y: offset.y) } )) self.assertEmojiMarker(run: runs[1], xPosition: offset.x + 4 * firaWidth) } private func assertAsciiMarker(run: FontGlyphRun, xPosition: CGFloat) { expect(run.font).to(equalFont(defaultFont)) expect(run.positions).to(equal( [ CGPoint(x: xPosition, y: offset.y), ] )) } private func assertEmojiMarker(run: FontGlyphRun, xPosition: CGFloat) { expect(run.font).to(equalFont(emoji)) expect(run.positions).to(equal( [ CGPoint(x: xPosition, y: offset.y), ] )) } } nonisolated(unsafe) private let defaultFont = NSFont(name: "Menlo", size: 13)! nonisolated(unsafe) private let fira = NSFont(name: "FiraCodeRoman-Regular", size: 13)! nonisolated(unsafe) private let courierNew = NSFont(name: "Courier New", size: 13)! nonisolated(unsafe) private let monaco = NSFont(name: "Monaco", size: 13)! nonisolated(unsafe) private let emoji = NSFont(name: "AppleColorEmoji", size: 13)! nonisolated(unsafe) private let gothic = NSFont(name: "Apple SD Gothic Neo", size: 13)! nonisolated(unsafe) private let baskerville = NSFont(name: "Baskerville", size: 13)! nonisolated(unsafe) private let kohinoorDevanagari = NSFont(name: "Kohinoor Devanagari", size: 13)! private let defaultWidth = FontUtils .cellSize(of: defaultFont, linespacing: 1, characterspacing: 1).width private let firaWidth = FontUtils.cellSize(of: fira, linespacing: 1, characterspacing: 1).width private let offset = CGPoint(x: 7, y: 8) nonisolated(unsafe) private let typesetter = Typesetter() private func asciiMarked(_ strings: [String]) -> [[Unicode.UTF16.CodeUnit]] { utf16Chars(strings + ["a"]) } private func emojiMarked(_ strings: [String]) -> [[Unicode.UTF16.CodeUnit]] { utf16Chars(strings + ["\u{1F600}"]) } private func utf16Chars(_ array: [String]) -> [[Unicode.UTF16.CodeUnit]] { array.map { Array($0.utf16) } } ================================================ FILE: NvimView/Tests/NvimViewTests/UGridTest.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Nimble import XCTest @testable import NvimView class UGridTest: XCTestCase { private let ugrid = UGrid() func testFlatCharIndex() { self.ugrid.resize(Size(width: 10, height: 3)) self.ugrid.update( row: 0, startCol: 0, endCol: 10, clearCol: 0, clearAttr: 0, chunk: ["0", "하", "", "3", "4", "태", "", "7", "8", "9"], attrIds: Array(repeating: 0, count: 10) ) self.ugrid.recomputeFlatIndices(rowStart: 0) expect(self.ugrid.cells.reduce(into: []) { result, row in result.append(contentsOf: row.reduce(into: []) { rowResult, cell in rowResult.append(cell.flatCharIndex) }) }).to(equal( [ 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, ] )) self.ugrid.update( row: 1, startCol: 5, endCol: 7, clearCol: 0, clearAttr: 0, chunk: ["하", ""], attrIds: Array(repeating: 0, count: 2) ) self.ugrid.recomputeFlatIndices(rowStart: 0) expect(self.ugrid.cells.reduce(into: []) { result, row in result.append(contentsOf: row.reduce(into: []) { rowResult, cell in rowResult.append(cell.flatCharIndex) }) }).to(equal( [ 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, ] )) self.ugrid.update( row: 2, startCol: 8, endCol: 10, clearCol: 0, clearAttr: 0, chunk: ["하", ""], attrIds: Array(repeating: 0, count: 2) ) self.ugrid.recomputeFlatIndices(rowStart: 0) expect(self.ugrid.cells.reduce(into: []) { result, row in result.append(contentsOf: row.reduce(into: []) { rowResult, cell in rowResult.append(cell.flatCharIndex) }) }).to(equal( [ 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 25, ] )) } func testLeftBoundaryOfWord() { self.ugrid.resize(Size(width: 10, height: 2)) self.ugrid.update( row: 0, startCol: 0, endCol: 10, clearCol: 10, clearAttr: 0, chunk: " 12 45678 ".compactMap { String($0) }, attrIds: [Int](repeating: 0, count: 10) ) expect(self.ugrid.leftBoundaryOfWord(at: Position(row: 0, column: 9))) .to(equal(9)) expect(self.ugrid.leftBoundaryOfWord(at: Position(row: 0, column: 8))) .to(equal(4)) expect(self.ugrid.leftBoundaryOfWord(at: Position(row: 0, column: 4))) .to(equal(4)) expect(self.ugrid.leftBoundaryOfWord(at: Position(row: 0, column: 3))) .to(equal(3)) expect(self.ugrid.leftBoundaryOfWord(at: Position(row: 0, column: 0))) .to(equal(0)) self.ugrid.update( row: 1, startCol: 0, endCol: 10, clearCol: 10, clearAttr: 0, chunk: "0123456789".compactMap { String($0) }, attrIds: [Int](repeating: 0, count: 10) ) expect(self.ugrid.leftBoundaryOfWord(at: Position(row: 1, column: 0))) .to(equal(0)) } func testRightBoundaryOfWord() { self.ugrid.resize(Size(width: 10, height: 2)) self.ugrid.update( row: 0, startCol: 0, endCol: 10, clearCol: 10, clearAttr: 0, chunk: " 12345 78 ".compactMap { String($0) }, attrIds: [Int](repeating: 0, count: 10) ) expect(self.ugrid.rightBoundaryOfWord(at: Position(row: 0, column: 9))) .to(equal(9)) expect(self.ugrid.rightBoundaryOfWord(at: Position(row: 0, column: 8))) .to(equal(8)) expect(self.ugrid.rightBoundaryOfWord(at: Position(row: 0, column: 7))) .to(equal(8)) expect(self.ugrid.rightBoundaryOfWord(at: Position(row: 0, column: 1))) .to(equal(5)) expect(self.ugrid.rightBoundaryOfWord(at: Position(row: 0, column: 0))) .to(equal(0)) self.ugrid.update( row: 1, startCol: 0, endCol: 10, clearCol: 10, clearAttr: 0, chunk: "0123456789".compactMap { String($0) }, attrIds: [Int](repeating: 0, count: 10) ) expect(self.ugrid.rightBoundaryOfWord(at: Position(row: 1, column: 9))) .to(equal(9)) } } ================================================ FILE: README.md ================================================ # VimR — Neovim GUI for macOS [Download](https://github.com/qvacua/vimr/releases) • [Documentation](https://github.com/qvacua/vimr/wiki) ![Screenshot 1](https://raw.githubusercontent.com/qvacua/vimr/develop/resources/screenshot1.png) ![Screenshot 2](https://raw.githubusercontent.com/qvacua/vimr/develop/resources/screenshot2.png) ## About VimR is a Neovim GUI for macOS written in Swift. The goal is to build an editor that uses Neovim inside with some of the convenient GUI features similar to those present in other editors. There are other Neovim GUIs for macOS, see the [list](https://github.com/neovim/neovim/wiki/Related-projects#gui), so why VimR? - Play around with [Neovim](https://github.com/qvacua/neovim), - Play around with the main idea of Redux architecture, and - (most importantly) have fun! If you feel chatty, there is a chat room: If you want to support VimR financially, use [Github's Sponsor](https://github.com/sponsors/qvacua). ## Download Pre-built Universal signed and notarized binaries can be found under [Releases](https://github.com/qvacua/vimr/releases). ## Requirements - macOS 13.0 or later - Development: Xcode 26 ## Reusable Components VimR is built with a modular architecture. The following Swift packages can be used independently: * [NvimView](https://github.com/qvacua/vimr/tree/master/NvimView): SwiftPM module containing an NSView which bundles everything needed to embed Neovim in a Cocoa app, including the Neovim binary and runtime files. * [NvimApi](https://github.com/qvacua/vimr/tree/master/NvimApi): Synchronous and asynchronous API for Neovim. * [Commons](https://github.com/qvacua/vimr/tree/master/Commons): Common utilities and helpers used across the project. * [Tabs](https://github.com/qvacua/vimr/tree/master/Tabs): Tab bar component. * [Workspace](https://github.com/qvacua/vimr/tree/master/Workspace): Workspace management component. * [Ignore](https://github.com/qvacua/vimr/tree/master/Ignore): Gitignore-style pattern matching using [wildmatch](https://github.com/davvid/wildmatch). ## Features * Markdown preview * Generic HTML preview (retains the scroll position when reloading) * Fuzzy file finder a la Xcode's "Open Quickly..." * Trackpad support: Pinching for zooming and two-finger scrolling. * Ligatures: Turned off by default. Turn it on in the Preferences. * Command line tool. * (Simple) File browser * Flexible workspace model a la JetBrain's IDEs ## How to Build Clone this repository. Install `homebrew`, then in the project root: ```bash git submodule update --init xcode-select --install # install the Xcode command line tools, if you haven't already brew bundle # install dependencies, e.g., build tools for Neovim clean=true notarize=false ./bin/build_vimr.sh ``` The built application will be located at `./build/Build/Products/Release/VimR.app`. ## Development See [DEVELOP.md](DEVELOP.md). ## License [MIT](https://github.com/qvacua/vimr/blob/master/LICENSE) ================================================ FILE: Tabs/.gitignore ================================================ .DS_Store /.build /Packages /*.xcodeproj xcuserdata/ ================================================ FILE: Tabs/Package.swift ================================================ // swift-tools-version: 6.0 import PackageDescription let package = Package( name: "Tabs", platforms: [.macOS(.v14)], products: [ .library(name: "Tabs", targets: ["Tabs"]), ], dependencies: [ .package(url: "https://github.com/qvacua/material-icons", from: "0.2.0"), .package(url: "https://github.com/PureLayout/PureLayout", from: "3.1.9"), .package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "0.62.2"), ], targets: [ .target( name: "Tabs", dependencies: [ "PureLayout", .product(name: "MaterialIcons", package: "material-icons"), ], plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")] ), ] ) ================================================ FILE: Tabs/README.md ================================================ # Tabs A description of this package. ================================================ FILE: Tabs/Sources/Tabs/DraggingSingleRowStackView.swift ================================================ // // DraggingSingleRowStackView.swift // Analysis // // Created by Mark Onyschuk on 2017-02-02. // Copyright © 2017 Mark Onyschuk. All rights reserved. // // From https://stackoverflow.com/a/42024401 // Slightly modified and reformatted. import Cocoa final class DraggingSingleRowStackView: NSStackView { var postDraggingHandler: ((NSStackView, NSView) -> Void)? override func mouseDragged(with event: NSEvent) { let location = convert(event.locationInWindow, from: nil) if let dragged = views.first(where: { $0.hitTest(location) != nil }) { self.reorder(view: dragged, event: event) self.postDraggingHandler?(self, dragged) } } func update(views: [NSView]) { self.views.forEach { self.removeView($0) } views.forEach { self.addView($0, in: .leading) } } private func reorder(view: NSView, event: NSEvent) { guard let layer = self.layer else { return } guard let cached = try? self.cacheViews() else { return } let container = CALayer() container.frame = layer.bounds container.zPosition = 1 container.backgroundColor = NSColor.underPageBackgroundColor.cgColor cached .filter { $0.view !== view } .forEach { container.addSublayer($0) } layer.addSublayer(container) defer { container.removeFromSuperlayer() } let dragged = cached.first(where: { $0.view === view })! dragged.zPosition = 2 layer.addSublayer(dragged) defer { dragged.removeFromSuperlayer() } let d0 = view.frame.origin let p0 = convert(event.locationInWindow, from: nil) window!.trackEvents( matching: [.leftMouseDragged, .leftMouseUp], timeout: 1e6, mode: RunLoop.Mode.eventTracking ) { optionalEvent, stop in guard let event = optionalEvent else { return } if event.type == .leftMouseDragged { self.autoscroll(with: event) let p1 = self.convert(event.locationInWindow, from: nil) let dx = (self.orientation == .horizontal) ? p1.x - p0.x : 0 let dy = (self.orientation == .vertical) ? p1.y - p0.y : 0 CATransaction.begin() CATransaction.setDisableActions(true) dragged.frame.origin.x = d0.x + dx dragged.frame.origin.y = d0.y + dy CATransaction.commit() let reordered = self.views .map { ( view: $0, position: $0 !== view ? CGPoint(x: $0.frame.midX, y: $0.frame.midY) : CGPoint(x: dragged.frame.midX, y: dragged.frame.midY) ) } .sorted { switch self.orientation { case .vertical: return $0.position.y > $1.position.y case .horizontal: return $0.position.x < $1.position.x @unknown default: fatalError() } } .map(\.view) let nextIndex = reordered.firstIndex(of: view)! let prevIndex = self.views.firstIndex(of: view)! if nextIndex != prevIndex { self.update(views: reordered) self.layoutSubtreeIfNeeded() CATransaction.begin() CATransaction.setAnimationDuration(0.15) CATransaction.setAnimationTimingFunction( CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeInEaseOut) ) for layer in cached { layer.position = CGPoint(x: layer.view.frame.midX, y: layer.view.frame.midY) } CATransaction.commit() } } else { view.mouseUp(with: event) stop.pointee = true } } } @MainActor private class CachedViewLayer: CALayer { let view: NSView! enum CacheError: Error { case bitmapCreationFailed } // FIXME: Check whether forced cast is appropriate here override init(layer: Any) { // swiftlint:disable:next force_cast self.view = (layer as! CachedViewLayer).view super.init(layer: layer) } init(view: NSView) throws { self.view = view super.init() guard let bitmap = view.bitmapImageRepForCachingDisplay(in: view.bounds) else { throw CacheError.bitmapCreationFailed } view.cacheDisplay(in: view.bounds, to: bitmap) frame = view.frame contents = bitmap.cgImage } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } private func cacheViews() throws -> [CachedViewLayer] { try views.map { try self.cacheView(view: $0) } } private func cacheView(view: NSView) throws -> CachedViewLayer { try CachedViewLayer(view: view) } } ================================================ FILE: Tabs/Sources/Tabs/HorizontalOnlyScrollView.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa final class HorizontalOnlyScrollView: NSScrollView { // Needed to be able to override scrollWheel(with:) // https://stackoverflow.com/a/31201614 override static var isCompatibleWithResponsiveScrolling: Bool { true } override init(frame frameRect: NSRect) { super.init(frame: frameRect) self.hasVerticalScroller = false self.verticalScrollElasticity = .none } override func scrollWheel(with event: NSEvent) { guard let cgEvent = event.cgEvent?.copy() else { super.scrollWheel(with: event) return } if event.scrollingDeltaX != 0 { cgEvent.setDoubleValueField(.scrollWheelEventDeltaAxis1, value: 0) } else { cgEvent.setDoubleValueField(.scrollWheelEventDeltaAxis2, value: Double(event.scrollingDeltaY)) } guard let eventToForward = NSEvent(cgEvent: cgEvent) else { super.scrollWheel(with: event) return } super.scrollWheel(with: eventToForward) } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } ================================================ FILE: Tabs/Sources/Tabs/Tab.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MaterialIcons struct TabPosition: OptionSet { static let first = TabPosition(rawValue: 1 << 0) static let last = TabPosition(rawValue: 1 << 1) let rawValue: Int } final class Tab: NSView { var title: String { self.tabRepresentative.title } var tabRepresentative: Rep { willSet { if self.isSelected == newValue.isSelected { return } self.adjustToSelectionChange(newValue.isSelected) } didSet { self.updateTitle(self.title) } } private func updateTitle(_ title: String) { let display_title = self.displayTitle(title) if self.titleView.stringValue == display_title { return } self.titleView.stringValue = display_title self.adjustWidth() } private func displayTitle(_ title: String) -> String { guard let cwd = (self.tabBar?.cwd as NSString?)?.abbreviatingWithTildeInPath else { return title } guard title.commonPrefix(with: cwd) == cwd else { return title } let cwd_component_count = (cwd as NSString).pathComponents.count return NSString.path( withComponents: Array((title as NSString).pathComponents[cwd_component_count...]) ) } init(withTabRepresentative tabRepresentative: Rep, in tabBar: TabBar) { self.tabBar = tabBar self.tabRepresentative = tabRepresentative super.init(frame: .zero) self.configureForAutoLayout() self.wantsLayer = true self.autoSetDimension(.height, toSize: self.theme.tabHeight) self.titleView.stringValue = tabRepresentative.title self.addViews() self.adjustToSelectionChange(self.tabRepresentative.isSelected) self.adjustWidth() } func updateTheme() { self.adjustColors(self.isSelected) } func updateContext() { self.updateTitle(self.title) } override func mouseUp(with _: NSEvent) { self.tabBar?.select(tab: self) } override func draw(_: NSRect) { self.drawSeparators() self.drawSelectionIndicator() } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } var position: TabPosition = [] { willSet { self.needsDisplay = self.position != newValue } } private weak var tabBar: TabBar? private let closeButton = NSButton(forAutoLayout: ()) private let titleView = NSTextField(forAutoLayout: ()) private var widthConstraint: NSLayoutConstraint? @objc func closeAction(_: NSButton) { self.tabBar?.close(tab: self) } } // MARK: - Private extension Tab { private var isSelected: Bool { self.tabRepresentative.isSelected } private var theme: Theme { // We set tabBar in init, it's weak only because we want to avoid retain cycle. self.tabBar!.theme } private func adjustColors(_ newIsSelected: Bool) { if newIsSelected { self.layer?.backgroundColor = self.theme.selectedBackgroundColor.cgColor self.titleView.textColor = self.theme.selectedForegroundColor self.closeButton.image = self.theme.selectedCloseButtonImage } else { self.layer?.backgroundColor = self.theme.backgroundColor.cgColor self.titleView.textColor = self.theme.foregroundColor self.closeButton.image = self.theme.closeButtonImage } self.needsDisplay = true } // We need the arg since we are calling this function also in willSet. private func adjustToSelectionChange(_ newIsSelected: Bool) { self.adjustColors(newIsSelected) if newIsSelected { self.titleView.font = self.theme.selectedTitleFont } else { self.titleView.font = self.theme.titleFont } self.adjustWidth() self.needsDisplay = true } private func adjustWidth() { let idealWidth = 3 * self.theme.tabHorizontalPadding + self.theme.iconDimension.width + self.titleView.intrinsicContentSize.width let targetWidth = min(max(self.theme.tabMinWidth, idealWidth), self.theme.tabMaxWidth) if let c = self.widthConstraint { self.removeConstraint(c) } self.widthConstraint = self.autoSetDimension(.width, toSize: targetWidth) } private func addViews() { let close = self.closeButton let title = self.titleView self.addSubview(close) self.addSubview(title) close.imagePosition = .imageOnly close.image = self.theme.closeButtonImage close.isBordered = false (close.cell as? NSButtonCell)?.highlightsBy = .contentsCellMask close.target = self close.action = #selector(Self.closeAction) title.drawsBackground = false title.font = self.theme.titleFont title.textColor = self.theme.foregroundColor title.isEditable = false title.isBordered = false title.isSelectable = false title.usesSingleLineMode = true title.lineBreakMode = .byTruncatingTail close.autoSetDimensions(to: self.theme.iconDimension) close.autoPinEdge(toSuperviewEdge: .left, withInset: self.theme.tabHorizontalPadding) close.autoAlignAxis(toSuperviewAxis: .horizontal) title.autoPinEdge(.left, to: .right, of: close, withOffset: self.theme.tabHorizontalPadding) title.autoPinEdge(toSuperviewEdge: .right, withInset: self.theme.tabHorizontalPadding) title.autoAlignAxis(toSuperviewAxis: .horizontal) } private func drawSeparators() { let b = self.bounds let left = CGRect(x: 0, y: 0, width: self.theme.separatorThickness, height: b.height) let right = CGRect(x: b.maxX - 1, y: 0, width: self.theme.separatorThickness, height: b.height) let bottom = CGRect( x: 0, y: 0, width: b.width, height: self.theme.separatorThickness ) guard let context = NSGraphicsContext.current?.cgContext else { return } context.saveGState() defer { context.restoreGState() } self.theme.separatorColor.set() if self.position.isEmpty { left.fill() right.fill() } if self.position == .first { right.fill() } if self.position == .last { left.fill() } bottom.fill() } private func drawSelectionIndicator() { guard self.isSelected else { return } let b = self.bounds let rect = CGRect( x: self.theme.separatorThickness, y: 0, width: b.width, height: self.theme.tabSelectionIndicatorThickness ) guard let context = NSGraphicsContext.current?.cgContext else { return } context.saveGState() defer { context.restoreGState() } self.theme.tabSelectedIndicatorColor.set() rect.fill() } } ================================================ FILE: Tabs/Sources/Tabs/TabBar.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout public protocol TabRepresentative: Hashable { var title: String { get } var isSelected: Bool { get } } public final class TabBar: NSView { public typealias TabCallback = (Int, Rep, [Rep]) -> Void public var theme: Theme { self._theme } public var cwd: String? { didSet { self.tabs.forEach { $0.updateContext() } } } public var closeHandler: TabCallback? public var selectHandler: TabCallback? public var reorderHandler: TabCallback? public init(withTheme theme: Theme) { self._theme = theme super.init(frame: .zero) self.configureForAutoLayout() self.wantsLayer = true self.layer?.backgroundColor = theme.tabBarBackgroundColor.cgColor self.addViews() } public func update(theme: Theme) { self._theme = theme self.layer?.backgroundColor = theme.tabBarBackgroundColor.cgColor self.needsDisplay = true self.tabs.forEach { $0.updateTheme() } } public func update(tabRepresentatives entries: [Rep]) { var result = [Tab]() for entry in entries { if let existingTab = self.tabs.first(where: { $0.tabRepresentative == entry }) { existingTab.tabRepresentative = entry result.append(existingTab) } else { result.append(Tab(withTabRepresentative: entry, in: self)) } } result.forEach { $0.position = [] } result.first?.position.insert(.first) result.last?.position.insert(.last) self.stackView.update(views: result) self.tabs = result } override public func draw(_: NSRect) { self.drawSeparator() } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } var tabs = [Tab]() private var _theme: Theme private let scrollView = HorizontalOnlyScrollView(forAutoLayout: ()) private let stackView = DraggingSingleRowStackView(forAutoLayout: ()) } // MARK: - Internal extension TabBar { func close(tab: Tab) { guard let index = self.tabs.firstIndex(where: { $0 == tab }) else { return } self.closeHandler?(index, tab.tabRepresentative, self.tabs.map(\.tabRepresentative)) } func select(tab: Tab) { guard let index = self.tabs.firstIndex(where: { $0 == tab }) else { return } self.selectHandler?(index, tab.tabRepresentative, self.tabs.map(\.tabRepresentative)) } } // MARK: - Private extension TabBar { private func drawSeparator() { let b = self.bounds let rect = CGRect(x: 0, y: 0, width: b.width, height: self._theme.separatorThickness) guard let context = NSGraphicsContext.current?.cgContext else { return } context.saveGState() defer { context.restoreGState() } self._theme.separatorColor.set() rect.fill() } private func addViews() { let scroll = self.scrollView let stack = self.stackView self.addSubview(scroll) scroll.autoPinEdgesToSuperviewEdges() scroll.drawsBackground = false scroll.hasHorizontalScroller = false scroll.documentView = stack stack.autoPinEdge(toSuperviewEdge: .top) stack.autoPinEdge(toSuperviewEdge: .left) stack.autoPinEdge(toSuperviewEdge: .bottom) stack.spacing = self._theme.tabSpacing stack.postDraggingHandler = { [weak self] stackView, draggedView in self?.tabs = stackView.arrangedSubviews.compactMap { $0 as? Tab } if let draggedTab = draggedView as? Tab, let indexOfDraggedTab = self?.tabs.firstIndex(where: { $0 == draggedTab }) { self?.reorderHandler?( indexOfDraggedTab, draggedTab.tabRepresentative, self?.tabs.map(\.tabRepresentative) ?? [] ) } let endIndex = stackView.arrangedSubviews.endIndex - 1 self?.tabs.enumerated().forEach { index, tab in tab.position = [] if index == 0 { tab.position.insert(.first) } if index == endIndex { tab.position.insert(.last) } } } } } ================================================ FILE: Tabs/Sources/Tabs/Theme.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MaterialIcons public struct Theme: Sendable { public static let `default` = Self() public var separatorColor = NSColor.gridColor public var backgroundColor = NSColor.textBackgroundColor public var foregroundColor = NSColor.textColor { didSet { self.closeButtonImage = Icon.close.asImage( dimension: self.iconDimension.width, color: self.foregroundColor ) } } public var selectedBackgroundColor = NSColor.selectedTextBackgroundColor public var selectedForegroundColor = NSColor.selectedTextColor { didSet { self.selectedCloseButtonImage = Icon.close.asImage( dimension: self.iconDimension.width, color: self.selectedForegroundColor ) } } public var tabSelectedIndicatorColor = NSColor.selectedTextColor public var tabBarBackgroundColor = NSColor.windowBackgroundColor public var tabBarForegroundColor = NSColor.textColor // I guess NSFont should be safe to send around public nonisolated(unsafe) var titleFont = NSFont.systemFont(ofSize: 11) public nonisolated(unsafe) var selectedTitleFont = NSFont.boldSystemFont(ofSize: 11) public var tabHeight = CGFloat(28) public var tabMaxWidth = CGFloat(250) public var separatorThickness = CGFloat(1) public var tabHorizontalPadding = CGFloat(4) public var tabSelectionIndicatorThickness = CGFloat(3) public var iconDimension = CGSize(width: 16, height: 16) public var tabMinWidth: CGFloat { 3 * self.tabHorizontalPadding + self.iconDimension.width + 32 } public var tabBarHeight: CGFloat { self.tabHeight } public var tabSpacing = CGFloat(-1) // I guess NSImage should be safe to send around public nonisolated(unsafe) var closeButtonImage: NSImage public nonisolated(unsafe) var selectedCloseButtonImage: NSImage public init() { self.closeButtonImage = Icon.close.asImage( dimension: self.iconDimension.width, color: self.foregroundColor ) self.selectedCloseButtonImage = Icon.close.asImage( dimension: self.iconDimension.width, color: self.foregroundColor ) } } ================================================ FILE: Tabs/Support/TabsSupport/AppDelegate.swift ================================================ // // AppDelegate.swift // TabsSupport // // Created by Tae Won Ha on 22.11.20. // import Cocoa import PureLayout import Tabs @main class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet var window: NSWindow! override init() { self.tabBar = TabBar(withTheme: .default) super.init() } func applicationDidFinishLaunching(_: Notification) { let contentView = self.window.contentView! contentView.addSubview(self.tabBar) let tb = self.tabBar tb.autoPinEdge(toSuperviewEdge: .top) tb.autoPinEdge(toSuperviewEdge: .left) tb.autoPinEdge(toSuperviewEdge: .right) tb.autoSetDimension(.height, toSize: Theme().tabBarHeight) tb.selectHandler = { [weak self] _, selectedEntry, _ in self?.tabEntries.enumerated().forEach { index, entry in self?.tabEntries[index].isSelected = (entry == selectedEntry) } DispatchQueue.main.async { Swift.print("select: \(self!.tabEntries)") self?.tabBar.update(tabRepresentatives: self?.tabEntries ?? []) } } tb.reorderHandler = { [weak self] index, reorderedEntry, entries in self?.tabEntries = entries self?.tabEntries.enumerated().forEach { index, entry in self?.tabEntries[index].isSelected = (entry == reorderedEntry) } DispatchQueue.main.async { Swift.print("reorder: \(entries)") self?.tabBar.update(tabRepresentatives: self?.tabEntries ?? []) } } self.tabEntries = [ DummyTabEntry(title: "Test 1"), DummyTabEntry(title: "Test 2"), DummyTabEntry(title: "Test 3"), DummyTabEntry(title: "Very long long long title, and some more text!"), ] self.tabEntries[0].isSelected = true self.tabBar.update(tabRepresentatives: self.tabEntries) } func applicationWillTerminate(_: Notification) { // Insert code here to tear down your application } private let tabBar: TabBar private var tabEntries = [DummyTabEntry]() } struct DummyTabEntry: Hashable, TabRepresentative { var title: String var isSelected = false } ================================================ FILE: Tabs/Support/TabsSupport/Assets.xcassets/AccentColor.colorset/Contents.json ================================================ { "colors" : [ { "idiom" : "universal" } ], "info" : { "author" : "xcode", "version" : 1 } } ================================================ FILE: Tabs/Support/TabsSupport/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "idiom" : "mac", "scale" : "1x", "size" : "16x16" }, { "idiom" : "mac", "scale" : "2x", "size" : "16x16" }, { "idiom" : "mac", "scale" : "1x", "size" : "32x32" }, { "idiom" : "mac", "scale" : "2x", "size" : "32x32" }, { "idiom" : "mac", "scale" : "1x", "size" : "128x128" }, { "idiom" : "mac", "scale" : "2x", "size" : "128x128" }, { "idiom" : "mac", "scale" : "1x", "size" : "256x256" }, { "idiom" : "mac", "scale" : "2x", "size" : "256x256" }, { "idiom" : "mac", "scale" : "1x", "size" : "512x512" }, { "idiom" : "mac", "scale" : "2x", "size" : "512x512" } ], "info" : { "author" : "xcode", "version" : 1 } } ================================================ FILE: Tabs/Support/TabsSupport/Assets.xcassets/Contents.json ================================================ { "info" : { "author" : "xcode", "version" : 1 } } ================================================ FILE: Tabs/Support/TabsSupport/Base.lproj/MainMenu.xib ================================================ Default Left to Right Right to Left Default Left to Right Right to Left ================================================ FILE: Tabs/Support/TabsSupport/Info.plist ================================================ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString 1.0 CFBundleVersion 1 LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSMainNibFile MainMenu NSPrincipalClass NSApplication ================================================ FILE: Tabs/Support/TabsSupport.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 54; objects = { /* Begin PBXBuildFile section */ 4B2A75652572869C0002D722 /* Tabs in Frameworks */ = {isa = PBXBuildFile; productRef = 4B2A75642572869C0002D722 /* Tabs */; }; 4BEBD4BA256A76BB002218F8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BEBD4B9256A76BB002218F8 /* AppDelegate.swift */; }; 4BEBD4BC256A76BB002218F8 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4BEBD4BB256A76BB002218F8 /* Assets.xcassets */; }; 4BEBD4BF256A76BB002218F8 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BEBD4BD256A76BB002218F8 /* MainMenu.xib */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 4BEBD4B6256A76BB002218F8 /* TabsSupport.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TabsSupport.app; sourceTree = BUILT_PRODUCTS_DIR; }; 4BEBD4B9256A76BB002218F8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4BEBD4BB256A76BB002218F8 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 4BEBD4BE256A76BB002218F8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 4BEBD4C0256A76BB002218F8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 4BEBD4B3256A76BB002218F8 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4B2A75652572869C0002D722 /* Tabs in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 4BEBD4AD256A76BB002218F8 = { isa = PBXGroup; children = ( 4BEBD4B8256A76BB002218F8 /* TabsSupport */, 4BEBD4B7256A76BB002218F8 /* Products */, 4BEBD4CA256A7740002218F8 /* Frameworks */, ); sourceTree = ""; }; 4BEBD4B7256A76BB002218F8 /* Products */ = { isa = PBXGroup; children = ( 4BEBD4B6256A76BB002218F8 /* TabsSupport.app */, ); name = Products; sourceTree = ""; }; 4BEBD4B8256A76BB002218F8 /* TabsSupport */ = { isa = PBXGroup; children = ( 4BEBD4B9256A76BB002218F8 /* AppDelegate.swift */, 4BEBD4BB256A76BB002218F8 /* Assets.xcassets */, 4BEBD4BD256A76BB002218F8 /* MainMenu.xib */, 4BEBD4C0256A76BB002218F8 /* Info.plist */, ); path = TabsSupport; sourceTree = ""; }; 4BEBD4CA256A7740002218F8 /* Frameworks */ = { isa = PBXGroup; children = ( ); name = Frameworks; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 4BEBD4B5256A76BB002218F8 /* TabsSupport */ = { isa = PBXNativeTarget; buildConfigurationList = 4BEBD4C4256A76BB002218F8 /* Build configuration list for PBXNativeTarget "TabsSupport" */; buildPhases = ( 4BEBD4B2256A76BB002218F8 /* Sources */, 4BEBD4B3256A76BB002218F8 /* Frameworks */, 4BEBD4B4256A76BB002218F8 /* Resources */, ); buildRules = ( ); dependencies = ( ); name = TabsSupport; packageProductDependencies = ( 4B2A75642572869C0002D722 /* Tabs */, ); productName = TabsSupport; productReference = 4BEBD4B6256A76BB002218F8 /* TabsSupport.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 4BEBD4AE256A76BB002218F8 /* Project object */ = { isa = PBXProject; attributes = { LastSwiftUpdateCheck = 1220; LastUpgradeCheck = 1340; TargetAttributes = { 4BEBD4B5256A76BB002218F8 = { CreatedOnToolsVersion = 12.2; }; }; }; buildConfigurationList = 4BEBD4B1256A76BB002218F8 /* Build configuration list for PBXProject "TabsSupport" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 4BEBD4AD256A76BB002218F8; packageReferences = ( ); productRefGroup = 4BEBD4B7256A76BB002218F8 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 4BEBD4B5256A76BB002218F8 /* TabsSupport */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 4BEBD4B4256A76BB002218F8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BEBD4BC256A76BB002218F8 /* Assets.xcassets in Resources */, 4BEBD4BF256A76BB002218F8 /* MainMenu.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 4BEBD4B2256A76BB002218F8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BEBD4BA256A76BB002218F8 /* AppDelegate.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 4BEBD4BD256A76BB002218F8 /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( 4BEBD4BE256A76BB002218F8 /* Base */, ); name = MainMenu.xib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 4BEBD4C2256A76BB002218F8 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 6.0; }; name = Debug; }; 4BEBD4C3256A76BB002218F8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 6.0; }; name = Release; }; 4BEBD4C5256A76BB002218F8 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = TabsSupport/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.TabsSupport; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; name = Debug; }; 4BEBD4C6256A76BB002218F8 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; DEVELOPMENT_TEAM = ""; ENABLE_HARDENED_RUNTIME = YES; INFOPLIST_FILE = TabsSupport/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.TabsSupport; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 4BEBD4B1256A76BB002218F8 /* Build configuration list for PBXProject "TabsSupport" */ = { isa = XCConfigurationList; buildConfigurations = ( 4BEBD4C2256A76BB002218F8 /* Debug */, 4BEBD4C3256A76BB002218F8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4BEBD4C4256A76BB002218F8 /* Build configuration list for PBXNativeTarget "TabsSupport" */ = { isa = XCConfigurationList; buildConfigurations = ( 4BEBD4C5256A76BB002218F8 /* Debug */, 4BEBD4C6256A76BB002218F8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ /* Begin XCSwiftPackageProductDependency section */ 4B2A75642572869C0002D722 /* Tabs */ = { isa = XCSwiftPackageProductDependency; productName = Tabs; }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 4BEBD4AE256A76BB002218F8 /* Project object */; } ================================================ FILE: VimR/Dev.xcconfig ================================================ VIMR_DISPLAY_NAME = VimR-dev VIMR_BUNDLE_IDENTIFIER = com.qvacua.VimR.dev ================================================ FILE: VimR/Release.xcconfig ================================================ VIMR_DISPLAY_NAME = VimR VIMR_BUNDLE_IDENTIFIER = com.qvacua.VimR ================================================ FILE: VimR/VimR/AdvancedPrefReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class AdvancedPrefReducer: ReducerType { typealias StateType = AppState typealias ActionType = AdvancedPref.Action func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action { case let .setUseInteractiveZsh(value): state.mainWindowTemplate.useInteractiveZsh = value case let .setUseSnapshotUpdate(value): state.useSnapshotUpdate = value case let .setNvimBinary(value): state.mainWindowTemplate.nvimBinary = value case let .setNvimAppName(value): state.nvimAppName = value } return ReduceTuple(state: state, action: tuple.action, modified: true) } } ================================================ FILE: VimR/VimR/AdvencedPref.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout final class AdvancedPref: PrefPane, UiComponent, NSTextFieldDelegate { typealias StateType = AppState enum Action { case setUseInteractiveZsh(Bool) case setUseSnapshotUpdate(Bool) case setNvimBinary(String) case setNvimAppName(String) } let uuid = UUID() override var displayName: String { "Advanced" } override var pinToContainer: Bool { true } required init(context: ReduxContext, state: StateType) { self.emit = context.actionEmitter.typedEmit() self.useInteractiveZsh = state.mainWindowTemplate.useInteractiveZsh self.useSnapshotUpdate = state.useSnapshotUpdate self.nvimBinary = state.mainWindowTemplate.nvimBinary self.nvimAppName = state.nvimAppName super.init(frame: .zero) self.addViews() self.updateViews() context.subscribe(uuid: self.uuid) { state in if self.useInteractiveZsh != state.mainWindowTemplate.useInteractiveZsh || self.nvimBinary != state.mainWindowTemplate.nvimBinary || self.nvimAppName != state.nvimAppName || self.useSnapshotUpdate != state.useSnapshotUpdate { self.useInteractiveZsh = state.mainWindowTemplate.useInteractiveZsh self.nvimBinary = state.mainWindowTemplate.nvimBinary self.nvimAppName = state.nvimAppName self.useSnapshotUpdate = state.useSnapshotUpdate self.updateViews() } } } private let emit: (Action) -> Void private var useInteractiveZsh: Bool private var useSnapshotUpdate: Bool private var nvimBinary: String = "" private var nvimAppName: String = "" private let useInteractiveZshCheckbox = NSButton(forAutoLayout: ()) private let useSnapshotUpdateCheckbox = NSButton(forAutoLayout: ()) private let nvimBinaryField = NSTextField(forAutoLayout: ()) private let nvimAppNameField = NSTextField(forAutoLayout: ()) @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } override func windowWillClose() { self.nvimBinaryFieldAction() self.nvimAppNameFieldAction() } private func updateViews() { self.useSnapshotUpdateCheckbox.boolState = self.useSnapshotUpdate self.useInteractiveZshCheckbox.boolState = self.useInteractiveZsh self.nvimBinaryField.stringValue = self.nvimBinary self.nvimAppNameField.stringValue = self.nvimAppName } private func addViews() { let paneTitle = self.paneTitleTextField(title: "Advanced") let useInteractiveZsh = self.useInteractiveZshCheckbox self.configureCheckbox( button: useInteractiveZsh, title: "Use interactive mode for zsh", action: #selector(AdvancedPref.useInteractiveZshAction(_:)) ) let useInteractiveZshInfo = self.infoTextField(markdown: #""" If your login shell is `zsh`, when checked, the `-i` option will be used to launch `zsh`.\ Checking this option may break VimR if your `.zshrc` contains complex stuff.\ It may be a good idea to put the `PATH`-settings in `.zshenv` and let this unchecked.\ *Use with caution.* """#) let useSnapshotUpdate = self.useSnapshotUpdateCheckbox self.configureCheckbox( button: self.useSnapshotUpdateCheckbox, title: "Use Snapshot Update Channel", action: #selector(AdvancedPref.useSnapshotUpdateChannelAction(_:)) ) let useSnapshotUpdateInfo = self.infoTextField(markdown: #""" If you are adventurous, check this. You'll be test driving the newest snapshot builds\ of VimR in no time! """#) let nvimBinaryTitle = self.titleTextField(title: "Nvim Binary:") let nvimBinaryField = self.nvimBinaryField let nvimAppNameTitle = self.titleTextField(title: "NVIM_APPNAME:") let nvimAppNameField = self.nvimAppNameField let nvimAppNameInfo = self.infoTextField(markdown: #""" When set, VimR will set the `NVIM_APPNAME` environment variable to this value by default. """#) self.addSubview(paneTitle) self.addSubview(useSnapshotUpdate) self.addSubview(useSnapshotUpdateInfo) self.addSubview(useInteractiveZsh) self.addSubview(useInteractiveZshInfo) self.addSubview(nvimBinaryTitle) self.addSubview(nvimBinaryField) self.addSubview(nvimAppNameTitle) self.addSubview(nvimAppNameField) self.addSubview(nvimAppNameInfo) paneTitle.autoPinEdge(toSuperviewEdge: .top, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) useSnapshotUpdate.autoPinEdge(.top, to: .bottom, of: paneTitle, withOffset: 18) useSnapshotUpdate.autoPinEdge(.left, to: .right, of: nvimAppNameTitle, withOffset: 5) useSnapshotUpdateInfo.autoPinEdge(.top, to: .bottom, of: useSnapshotUpdate, withOffset: 5) useSnapshotUpdateInfo.autoPinEdge(.left, to: .left, of: useSnapshotUpdate) useInteractiveZsh.autoPinEdge(.top, to: .bottom, of: useSnapshotUpdateInfo, withOffset: 18) useInteractiveZsh.autoPinEdge(.left, to: .right, of: nvimAppNameTitle, withOffset: 5) useInteractiveZshInfo.autoPinEdge(.top, to: .bottom, of: useInteractiveZsh, withOffset: 5) useInteractiveZshInfo.autoPinEdge(.left, to: .left, of: useInteractiveZsh) nvimBinaryTitle.autoPinEdge(.top, to: .bottom, of: useInteractiveZshInfo, withOffset: 18) nvimBinaryTitle.autoPinEdge(.right, to: .right, of: nvimAppNameTitle) nvimBinaryField.autoAlignAxis(.baseline, toSameAxisOf: nvimBinaryTitle) nvimBinaryField.autoPinEdge(.left, to: .right, of: nvimBinaryTitle, withOffset: 5) nvimBinaryField.autoSetDimension(.width, toSize: 180, relation: .greaterThanOrEqual) nvimBinaryField.autoSetDimension(.width, toSize: 400, relation: .lessThanOrEqual) nvimBinaryField.autoPinEdge( toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual ) NotificationCenter.default.addObserver( forName: NSControl.textDidEndEditingNotification, object: nvimBinaryField, queue: nil ) { [weak self] _ in Task { @MainActor in self?.nvimBinaryFieldAction() } } nvimAppNameTitle.autoPinEdge(.top, to: .bottom, of: nvimBinaryField, withOffset: 18) nvimAppNameTitle.autoPinEdge( toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual ) nvimAppNameField.autoAlignAxis(.baseline, toSameAxisOf: nvimAppNameTitle) nvimAppNameField.autoPinEdge(.left, to: .right, of: nvimAppNameTitle, withOffset: 5) nvimAppNameField.autoSetDimension(.width, toSize: 180) NotificationCenter.default.addObserver( forName: NSControl.textDidEndEditingNotification, object: nvimAppNameField, queue: nil ) { [weak self] _ in Task { @MainActor in self?.nvimAppNameFieldAction() } } nvimAppNameInfo.autoPinEdge(.top, to: .bottom, of: nvimAppNameField, withOffset: 5) nvimAppNameInfo.autoPinEdge(.left, to: .right, of: nvimAppNameTitle, withOffset: 5) } } // MARK: - Actions extension AdvancedPref { @objc func useInteractiveZshAction(_ sender: NSButton) { self.emit(.setUseInteractiveZsh(sender.boolState)) } @objc func useSnapshotUpdateChannelAction(_ sender: NSButton) { self.emit(.setUseSnapshotUpdate(sender.boolState)) } func nvimBinaryFieldAction() { let newNvimBinary = self.nvimBinaryField.stringValue self.emit(.setNvimBinary(newNvimBinary)) } func nvimAppNameFieldAction() { let newNvimAppName = self.nvimAppNameField.stringValue self.emit(.setNvimAppName(newNvimAppName)) } } ================================================ FILE: VimR/VimR/AppDelegate.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import CommonsObjC import DictionaryCoding import os import PureLayout import Sparkle import UserNotifications let debugMenuItemIdentifier = NSUserInterfaceItemIdentifier("debug-menu-item") final class UpdaterDelegate: NSObject, SPUUpdaterDelegate { var useSnapshotChannel = false func feedURLString(for _: SPUUpdater) -> String? { if self.useSnapshotChannel { "https://raw.githubusercontent.com/qvacua/vimr/master/appcast_snapshot.xml" } else { "https://raw.githubusercontent.com/qvacua/vimr/master/appcast.xml" } } } @main @MainActor final class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDelegate { struct OpenConfig { var urls: [URL] var cwd: URL var cliPipePath: String? var nvimArgs: [String]? var additionalEnvs: [String: String] var line: Int? } enum Action { case newMainWindow(config: OpenConfig) case openInKeyWindow(config: OpenConfig) case preferences } let uuid = UUID() @IBOutlet var customConfigWindow: NSWindow! override init() { let baseServerUrl = URL(string: "http://localhost:\(NetUtils.openPort())")! var initialAppState: AppState let dictDecoder = DictionaryDecoder() if let stateDict = UserDefaults.standard .value(forKey: PrefMiddleware.compatibleVersion) as? [String: Any], let state = try? dictDecoder.decode(AppState.self, from: stateDict) { initialAppState = state } else { initialAppState = .default } initialAppState.mainWindowTemplate.htmlPreview.server = nil self.context = ReduxContext(baseServerUrl: baseServerUrl, state: initialAppState) self.emit = self.context.actionEmitter.typedEmit() self.openNewMainWindowOnLaunch = initialAppState.openNewMainWindowOnLaunch self.openNewMainWindowOnReactivation = initialAppState.openNewMainWindowOnReactivation self.updaterDelegate.useSnapshotChannel = initialAppState.useSnapshotUpdate self.updaterController = SPUStandardUpdaterController( startingUpdater: false, updaterDelegate: self.updaterDelegate, userDriverDelegate: nil ) super.init() UNUserNotificationCenter.current().delegate = self } // awakeFromNib is not @MainActor isolated // https://www.massicotte.org/awakefromnib override func awakeFromNib() { super.awakeFromNib() MainActor.assumeIsolated { // We want to build the menu items tree at some point, eg in the init() of // ShortcutsPref. We have to do that *after* the MainMenu.xib is loaded. // Therefore, we use optional var for the self.uiRoot. Ugly, but, well... self.uiRoot = UiRoot(context: self.context, state: self.context.state) self.setupCustomConfigWindow() self.context.subscribe(uuid: self.uuid) { appState in self.hasMainWindows = !appState.mainWindows.isEmpty self.hasDirtyWindows = appState.mainWindows.values.contains(where: { $0.isDirty }) self.openNewMainWindowOnLaunch = appState.openNewMainWindowOnLaunch self.openNewMainWindowOnReactivation = appState.openNewMainWindowOnReactivation if self.updaterDelegate.useSnapshotChannel != appState.useSnapshotUpdate { self.updaterDelegate.useSnapshotChannel = appState.useSnapshotUpdate } if appState.quit { NSApp.terminate(self) } } } } private let context: ReduxContext private let emit: (Action) -> Void private var uiRoot: UiRoot? private var hasDirtyWindows = false private var hasMainWindows = false private var openNewMainWindowOnLaunch: Bool private var openNewMainWindowOnReactivation: Bool private var launching = true private let updaterController: SPUStandardUpdaterController private let updaterDelegate = UpdaterDelegate() private let logger = Logger( subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.general ) private var customConfigTextField = NSTextField(forAutoLayout: ()) private func setupCustomConfigWindow() { // We know that the window and its contentView exist let win = self.customConfigWindow! let view = win.contentView! let title = self.titleTextField(title: "NVIM_APPNAME:") let location = self.customConfigTextField let info = self.infoTextField(markdown: """ Nvim will be started with the config directory `$HOME/.config/`. See [Nvim's documentation](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME) for more details. """) let okButton = NSButton(forAutoLayout: ()) okButton.title = "OK" okButton.keyEquivalent = "\r" okButton.bezelStyle = .rounded okButton.target = self okButton.action = #selector(customConfigOkAction(_:)) let cancelButton = NSButton(forAutoLayout: ()) cancelButton.title = "Cancel" cancelButton.keyEquivalent = "\u{1b}" // ESC cancelButton.bezelStyle = .rounded cancelButton.target = self cancelButton.action = #selector(customConfigCancelAction(_:)) view.addSubview(title) view.addSubview(location) view.addSubview(info) view.addSubview(okButton) view.addSubview(cancelButton) title.autoPinEdge(toSuperviewEdge: .top, withInset: 18) title.autoPinEdge(toSuperviewEdge: .left, withInset: 18) location.autoPinEdge(.left, to: .right, of: title, withOffset: 5) location.autoPinEdge(toSuperviewEdge: .right, withInset: 18) location.autoSetDimension(.width, toSize: 300) location.autoAlignAxis(.baseline, toSameAxisOf: title) info.autoPinEdge(.left, to: .left, of: location) info.autoPinEdge(.top, to: .bottom, of: location, withOffset: 5) info.autoPinEdge(toSuperviewEdge: .right, withInset: 18) okButton.autoPinEdge(.top, to: .bottom, of: info, withOffset: 18) okButton.autoPinEdge(toSuperviewEdge: .bottom, withInset: 18) okButton.autoPinEdge(toSuperviewEdge: .right, withInset: 18) cancelButton.autoPinEdge(.top, to: .top, of: okButton) cancelButton.autoPinEdge(.right, to: .left, of: okButton, withOffset: -8) } private func titleTextField(title: String) -> NSTextField { let field = NSTextField.defaultTitleTextField() field.alignment = .right field.stringValue = title return field } func infoTextField(markdown: String) -> NSTextField { let field = NSTextField(forAutoLayout: ()) field.backgroundColor = NSColor.clear field.isEditable = false field.isBordered = false field.usesSingleLineMode = false // both are needed, otherwise hyperlink won't accept mousedown field.isSelectable = true field.allowsEditingTextAttributes = true field.attributedStringValue = NSAttributedString.infoLabel(markdown: markdown) return field } } // MARK: - NSApplicationDelegate extension AppDelegate { func applicationWillFinishLaunching(_: Notification) { self.launching = true let appleEventManager = NSAppleEventManager.shared() appleEventManager.setEventHandler( self, andSelector: #selector(AppDelegate.handle(getUrlEvent:replyEvent:)), forEventClass: UInt32(kInternetEventClass), andEventID: UInt32(kAEGetURL) ) } func applicationDidFinishLaunching(_: Notification) { self.launching = false self.updaterController.startUpdater() #if DEBUG NSApp.mainMenu?.items.first { $0.identifier == debugMenuItemIdentifier }?.isHidden = false #else // defaults write com.qvacua.VimR enable-debug-menu 1 if UserDefaults.standard.bool(forKey: "enable-debug-menu") { NSApp.mainMenu?.items.first { $0.identifier == debugMenuItemIdentifier }?.isHidden = false } #endif } func applicationOpenUntitledFile(_: NSApplication) -> Bool { if self.launching { if self.openNewMainWindowOnLaunch { self.newDocument(self) return true } } else { if self.openNewMainWindowOnReactivation { self.newDocument(self) return true } } return false } func applicationShouldTerminate(_: NSApplication) -> NSApplication.TerminateReply { self.context.savePrefs() Task { guard self.hasMainWindows else { await self.uiRoot?.prepareQuit() NSApplication.shared.reply(toApplicationShouldTerminate: true) return } if await self.uiRoot?.hasBlockedWindows() == true { let alert = NSAlert() alert.messageText = "There are windows waiting for your input." alert.alertStyle = .informational alert.runModal() return } if self.hasDirtyWindows { let alert = NSAlert() let cancelButton = alert.addButton(withTitle: "Cancel") let discardAndQuitButton = alert.addButton(withTitle: "Discard and Quit") cancelButton.keyEquivalent = "\u{1b}" alert.messageText = "There are windows with unsaved buffers!" alert.alertStyle = .warning discardAndQuitButton.keyEquivalentModifierMask = .command discardAndQuitButton.keyEquivalent = "d" if alert.runModal() == .alertSecondButtonReturn { self.updateMainWindowTemplateBeforeQuitting() await self.uiRoot?.prepareQuit() NSApplication.shared.reply(toApplicationShouldTerminate: true) return } return } self.updateMainWindowTemplateBeforeQuitting() await self.uiRoot?.prepareQuit() NSApplication.shared.reply(toApplicationShouldTerminate: true) } return .terminateLater } // For drag & dropping files on the App icon. func application(_ sender: NSApplication, openFiles filenames: [String]) { let urls = filenames.map { URL(fileURLWithPath: $0) } let config = OpenConfig( urls: urls, cwd: FileUtils.userHomeUrl, cliPipePath: nil, nvimArgs: nil, additionalEnvs: [:], line: nil ) switch self.context.state.openFilesFromApplicationsAction { case .inCurrentWindow: self.emit(.openInKeyWindow(config: config)) default: self.emit(.newMainWindow(config: config)) } sender.reply(toOpenOrPrint: .success) } private func updateMainWindowTemplateBeforeQuitting() { self.context.savePrefs() } } // MARK: - AppleScript extension AppDelegate { @objc func handle( getUrlEvent event: NSAppleEventDescriptor, replyEvent _: NSAppleEventDescriptor ) { guard let urlString = event.paramDescriptor(forKeyword: UInt32(keyDirectObject))?.stringValue else { return } guard let url = URL(string: urlString) else { return } guard url.scheme == "vimr" else { return } guard let rawAction = url.host else { return } guard let action = VimRUrlAction(rawValue: rawAction) else { return } let rawParams = url.query?.components(separatedBy: "&") ?? [] guard let pipePath = queryParam(pipePathPrefix, from: rawParams, transforming: identity).first else { let alert = NSAlert() alert.alertStyle = .informational alert.messageText = "Outdated Command Line Tool?" alert.informativeText = "It seems that the installed vimr command line tool is outdated." + "Please re-install it from the General Preferences." alert.runModal() return } guard FileManager.default.fileExists(atPath: pipePath) else { // Use pipePath as a kind of nonce return } let dict = try? FileManager.default.attributesOfItem(atPath: pipePath) as NSDictionary guard dict?.filePosixPermissions() == 0o600 else { // Use pipePath as a kind of nonce return } let additionalEnvs: [String: String] if let envPath = queryParam(envPathPrefix, from: rawParams, transforming: identity).first { additionalEnvs = self.stringDict(from: URL(fileURLWithPath: envPath)) ?? [:] if FileManager.default.fileExists(atPath: envPath) { do { try FileManager.default.removeItem(atPath: envPath) } catch { self.logger.error(error.localizedDescription) } } } else { additionalEnvs = [:] } let line = self.queryParam(linePrefix, from: rawParams, transforming: { Int($0) }) .compactMap(\.self).first let urls = self.queryParam( filePrefix, from: rawParams, transforming: { URL(fileURLWithPath: $0) } ) let cwd = self.queryParam( cwdPrefix, from: rawParams, transforming: { URL(fileURLWithPath: $0) } ).first ?? FileUtils.userHomeUrl let wait = self.queryParam( waitPrefix, from: rawParams, transforming: { $0 == "true" ? true : false } ).first ?? false if wait == false { _ = Darwin.close(Darwin.open(pipePath, O_WRONLY)) } // If we don't do this, the window is active, but not in front. NSApp.activate(ignoringOtherApps: true) switch action { case .activate, .newWindow: let config = OpenConfig( urls: urls, cwd: cwd, cliPipePath: pipePath, nvimArgs: nil, additionalEnvs: additionalEnvs, line: line ) self.emit(.newMainWindow(config: config)) case .open: let config = OpenConfig( urls: urls, cwd: cwd, cliPipePath: pipePath, nvimArgs: nil, additionalEnvs: additionalEnvs, line: line ) self.emit(.openInKeyWindow(config: config)) case .separateWindows: for url in urls { let config = OpenConfig( urls: [url], cwd: cwd, cliPipePath: pipePath, nvimArgs: nil, additionalEnvs: [:], line: line ) self.emit(.newMainWindow(config: config)) } case .nvim: let config = OpenConfig( urls: urls, cwd: cwd, cliPipePath: pipePath, nvimArgs: queryParam( nvimArgsPrefix, from: rawParams, transforming: identity ), additionalEnvs: additionalEnvs, line: line ) self.emit(.newMainWindow(config: config)) } } private func stringDict(from jsonUrl: URL) -> [String: String]? { guard let data = try? Data(contentsOf: jsonUrl) else { return nil } do { return try JSONSerialization.jsonObject(with: data) as? [String: String] } catch { self.logger.error(error.localizedDescription) } return nil } private func queryParam( _ prefix: String, from rawParams: [String], transforming transform: (String) -> T ) -> [T] { rawParams .filter { $0.hasPrefix(prefix) } .compactMap { $0.without(prefix: prefix).removingPercentEncoding } .map(transform) } } // MARK: - IBActions extension AppDelegate { @IBAction func checkForUpdates(_ sender: Any?) { self.updaterController.checkForUpdates(sender) } @IBAction func newDocument(_: Any?) { let config = OpenConfig( urls: [], cwd: FileUtils.userHomeUrl, cliPipePath: nil, nvimArgs: nil, additionalEnvs: [:], line: nil ) self.emit(.newMainWindow(config: config)) } @IBAction func newDocumentWithCustomConfigLocation(_: Any?) { NSApp.runModal(for: self.customConfigWindow) } @objc private func customConfigOkAction(_: Any?) { let appName = self.customConfigTextField.stringValue.trimmingCharacters(in: .whitespaces) guard !appName.isEmpty else { self.customConfigTextField.layer?.borderColor = NSColor.systemRed.cgColor self.customConfigTextField.layer?.borderWidth = 3.0 return } self.stopCustomConfigWindow() self.emit(.newMainWindow(config: OpenConfig( urls: [], cwd: FileUtils.userHomeUrl, cliPipePath: nil, nvimArgs: nil, additionalEnvs: ["NVIM_APPNAME": appName], line: nil ))) } private func stopCustomConfigWindow() { NSApp.stopModal() self.customConfigWindow.orderOut(nil) self.customConfigTextField.stringValue = "" self.customConfigTextField.layer?.borderWidth = 0 } @objc private func customConfigCancelAction(_: Any?) { self.stopCustomConfigWindow() } @IBAction func openInNewWindow(_ sender: Any?) { self.openDocument(sender) } @IBAction func showPrefWindow(_: Any?) { self.emit(.preferences) } // Invoked when no main window is open. @IBAction func openDocument(_: Any?) { let panel = NSOpenPanel() panel.canChooseDirectories = true panel.allowsMultipleSelection = true panel.begin { result in guard result == .OK else { return } let urls = panel.urls let commonParentUrl = FileUtils.commonParent(of: urls) let config = OpenConfig( urls: urls, cwd: commonParentUrl, cliPipePath: nil, nvimArgs: nil, additionalEnvs: [:], line: nil ) self.emit(.newMainWindow(config: config)) } } } // MARK: - NSUserNotificationCenterDelegate extension AppDelegate { func userNotificationCenter( _: UNUserNotificationCenter, willPresent _: UNNotification ) async -> UNNotificationPresentationOptions { .banner } } // Keep the rawValues in sync with Action in the `vimr` Python script. private enum VimRUrlAction: String { case activate case open case newWindow = "open-in-new-window" case separateWindows = "open-in-separate-windows" case nvim } // Keep in sync with QueryParamKey in the `vimr` Python script. private let filePrefix = "file=" private let cwdPrefix = "cwd=" private let nvimArgsPrefix = "nvim-args=" private let pipePathPrefix = "pipe-path=" private let waitPrefix = "wait=" private let envPathPrefix = "env-path=" private let linePrefix = "line=" ================================================ FILE: VimR/VimR/AppDelegateReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class AppDelegateReducer: ReducerType { typealias StateType = AppState typealias ActionType = AppDelegate.Action init(baseServerUrl: URL) { self.baseServerUrl = baseServerUrl } func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action { case let .newMainWindow(config): let mainWindow = self.newMainWindow(with: state, config: config) state.mainWindows[mainWindow.uuid] = mainWindow case let .openInKeyWindow(config): guard let uuid = state.currentMainWindowUuid, state.mainWindows[uuid] != nil else { let mainWindow = self.newMainWindow(with: state, config: config) state.mainWindows[mainWindow.uuid] = mainWindow break } state.mainWindows[uuid]?.urlsToOpen = config.urls.toDict { _ in MainWindow.OpenMode.default } state.mainWindows[uuid]?.cwd = config.cwd if let line = config.line { state.mainWindows[uuid]?.goToLineFromCli = Marked(line) } case .preferences: state.preferencesOpen = Marked(true) } return ReduceTuple(state: state, action: tuple.action, modified: true) } private let baseServerUrl: URL private func newMainWindow( with state: AppState, config: AppDelegate.OpenConfig ) -> MainWindow.State { var mainWindow = state.mainWindowTemplate mainWindow.uuid = UUID() mainWindow.cwd = config.cwd mainWindow.isDirty = false mainWindow.htmlPreview = HtmlPreviewState( htmlFile: nil, server: Marked( HtmlPreviewReducer.serverUrl(baseUrl: self.baseServerUrl, uuid: mainWindow.uuid) ) ) mainWindow.preview.server = nil mainWindow.usesVcsIgnores = state.openQuickly.defaultUsesVcsIgnores mainWindow.nvimArgs = config.nvimArgs mainWindow.cliPipePath = config.cliPipePath mainWindow.additionalEnvs = config.additionalEnvs if !state.nvimAppName.isEmpty { mainWindow.additionalEnvs["NVIM_APPNAME"] = state.nvimAppName } mainWindow.urlsToOpen = config.urls.toDict { _ in MainWindow.OpenMode.default } mainWindow.frame = state.mainWindows.isEmpty ? state.mainWindowTemplate.frame : self.frame(relativeTo: state.mainWindowTemplate.frame) if let line = config.line { mainWindow.goToLineFromCli = Marked(line) } return mainWindow } private func frame(relativeTo refFrame: CGRect) -> CGRect { refFrame.offsetBy(dx: cascadeX, dy: -cascadeY) } } private let cascadeX: CGFloat = 24.0 private let cascadeY: CGFloat = 24.0 ================================================ FILE: VimR/VimR/AppKitCommons.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa @preconcurrency import Down extension NSView { @objc var isFirstResponder: Bool { self.window?.firstResponder == self } } extension NSAttributedString { static func infoLabel(markdown: String) -> NSAttributedString { let down = Down(markdownString: markdown) guard let result = try? down.toAttributedString(styler: downStyler) else { preconditionFailure("Wrong markdown: \(markdown)") } return result } } extension NSTableView { static func standardTableView() -> NSTableView { let tableView = NSTableView(frame: .zero) let column = NSTableColumn(identifier: NSUserInterfaceItemIdentifier("name")) column.isEditable = false tableView.addTableColumn(column) tableView.rowSizeStyle = .default tableView.sizeLastColumnToFit() tableView.allowsEmptySelection = false tableView.allowsMultipleSelection = false tableView.headerView = nil tableView.focusRingType = .none return tableView } static func standardSourceListTableView() -> NSTableView { let tableView = self.standardTableView() tableView.style = .sourceList return tableView } } extension NSOutlineView { static func standardOutlineView() -> NSOutlineView { let outlineView = NSOutlineView(frame: .zero) NSOutlineView.configure(toStandard: outlineView) return outlineView } static func configure(toStandard outlineView: NSOutlineView) { let column = NSTableColumn(identifier: NSUserInterfaceItemIdentifier("name")) column.resizingMask = .autoresizingMask column.isEditable = false outlineView.addTableColumn(column) outlineView.outlineTableColumn = column outlineView.allowsEmptySelection = false outlineView.allowsMultipleSelection = false outlineView.headerView = nil outlineView.focusRingType = .none } /** The selected item. When the selection is empty, then returns `nil`. When multiple items are selected, then returns the last selected item. */ var selectedItem: Any? { if self.selectedRow < 0 { return nil } return self.item(atRow: self.selectedRow) } var clickedItem: Any? { if self.clickedRow < 0 { return nil } return self.item(atRow: self.clickedRow) } func toggle(item: Any?) { if self.isItemExpanded(item) { self.collapseItem(item) } else { self.expandItem(item) } } } extension NSTextField { static func defaultTitleTextField() -> NSTextField { let field = NSTextField(forAutoLayout: ()) field.backgroundColor = NSColor.clear field.isEditable = false field.isBordered = false return field } } extension NSScrollView { static func standardScrollView() -> NSScrollView { let scrollView = NSScrollView(forAutoLayout: ()) scrollView.hasVerticalScroller = true scrollView.hasHorizontalScroller = true scrollView.autohidesScrollers = true scrollView.borderType = .bezelBorder return scrollView } } private enum AttributedStringMarkdownStyler { static func new() -> Styler { let fonts = StaticFontCollection( body: NSFont.systemFont(ofSize: NSFont.smallSystemFontSize), code: NSFont.userFixedPitchFont(ofSize: NSFont.smallSystemFontSize)! ) let style = DownStylerConfiguration(fonts: fonts, paragraphStyles: ParagraphStyles()) return DownStyler(configuration: style) } } private struct ParagraphStyles: ParagraphStyleCollection { let heading1: NSParagraphStyle let heading2: NSParagraphStyle let heading3: NSParagraphStyle let heading4: NSParagraphStyle let heading5: NSParagraphStyle let heading6: NSParagraphStyle let body: NSParagraphStyle let code: NSParagraphStyle init() { let headingStyle = NSParagraphStyle() let bodyStyle = NSMutableParagraphStyle() bodyStyle.paragraphSpacingBefore = 2 bodyStyle.paragraphSpacing = 2 bodyStyle.lineSpacing = 2 let codeStyle = NSMutableParagraphStyle() codeStyle.paragraphSpacingBefore = 2 codeStyle.paragraphSpacing = 2 self.heading1 = headingStyle self.heading2 = headingStyle self.heading3 = headingStyle self.heading4 = headingStyle self.heading5 = headingStyle self.heading6 = headingStyle self.body = bodyStyle self.code = codeStyle } } private let fontCollection = StaticFontCollection( body: NSFont.systemFont(ofSize: NSFont.smallSystemFontSize), code: NSFont.userFixedPitchFont(ofSize: NSFont.smallSystemFontSize)! ) private let downStyler = AttributedStringMarkdownStyler.new() ================================================ FILE: VimR/VimR/AppearancePref.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import NvimView import PureLayout final class AppearancePref: PrefPane, NSComboBoxDelegate, NSControlTextEditingDelegate, NSFontChanging { typealias StateType = AppState enum Action { case setUsesCustomTab(Bool) case setUsesColorscheme(Bool) case setShowsFileIcon(Bool) case setUsesLigatures(Bool) case setFont(NSFont) case setLinespacing(CGFloat) case setCharacterspacing(CGFloat) case setFontSmoothing(FontSmoothing) } let uuid = UUID() override var displayName: String { "Appearance" } override var pinToContainer: Bool { true } override func windowWillClose() { self.linespacingAction() self.characterspacingAction() } override func paneWillAppear() { self.previewArea.textColor = NSColor.textColor } required init(context: ReduxContext, state: StateType) { self.emit = context.actionEmitter.typedEmit() self.font = state.mainWindowTemplate.appearance.font self.linespacing = state.mainWindowTemplate.appearance.linespacing self.characterspacing = state.mainWindowTemplate.appearance.characterspacing self.usesLigatures = state.mainWindowTemplate.appearance.usesLigatures self.usesColorscheme = state.mainWindowTemplate.appearance.usesTheme self.showsFileIcon = state.mainWindowTemplate.appearance.showsFileIcon self.usesCustomTab = state.mainWindowTemplate.appearance.usesCustomTab self.fontSmoothing = state.mainWindowTemplate.appearance.fontSmoothing super.init(frame: .zero) self.addViews() self.updateViews() sharedFontManager.target = self context.subscribe(uuid: self.uuid) { state in let appearance = state.mainWindowTemplate.appearance guard self.font != appearance.font || self.linespacing != appearance.linespacing || self.characterspacing != appearance.characterspacing || self.fontSmoothing != appearance.fontSmoothing || self.usesLigatures != appearance.usesLigatures || self.usesColorscheme != appearance.usesTheme || self.showsFileIcon != appearance.showsFileIcon else { return } self.font = appearance.font self.linespacing = appearance.linespacing self.characterspacing = appearance.characterspacing self.fontSmoothing = appearance.fontSmoothing self.usesLigatures = appearance.usesLigatures self.usesColorscheme = appearance.usesTheme self.showsFileIcon = appearance.showsFileIcon self.updateViews() } } private let emit: (Action) -> Void private var font: NSFont private var linespacing: CGFloat private var characterspacing: CGFloat private var usesLigatures: Bool private var usesColorscheme: Bool private var showsFileIcon: Bool private var usesCustomTab: Bool private var fontSmoothing: FontSmoothing private let customTabCheckbox = NSButton(forAutoLayout: ()) private let colorschemeCheckbox = NSButton(forAutoLayout: ()) private let fileIconCheckbox = NSButton(forAutoLayout: ()) private let fontPanelButton = NSButton(forAutoLayout: ()) private let linespacingField = NSTextField(forAutoLayout: ()) private let characterspacingField = NSTextField(forAutoLayout: ()) private let fontSmoothingPopup = NSPopUpButton(forAutoLayout: ()) private let ligatureCheckbox = NSButton(forAutoLayout: ()) private let previewArea = NSTextView(frame: .zero) private let exampleText = #""" abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 -~ - ~ (){}[] +-*/= .,;:!?#&$%@|^ <- -> => >> << >>= =<< .. :: -< >- -<< >>- ++ /= == """# @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private func addViews() { let paneTitle = self.paneTitleTextField(title: "Appearance") let useCustomTab = self.customTabCheckbox self.configureCheckbox( button: useCustomTab, title: "Use custom tab implementation.", action: #selector(AppearancePref.usesCustomTabAction(_:)) ) let useColorscheme = self.colorschemeCheckbox self.configureCheckbox( button: useColorscheme, title: "Use Neovim's color scheme for main window and tools.", action: #selector(AppearancePref.usesColorschemeAction(_:)) ) let useColorschemeInfo = self.infoTextField(markdown: #""" If checked, the colors of the selected `colorscheme` will be used to render tools,\ for example the file browser. """#) let fileIcon = self.fileIconCheckbox self.configureCheckbox( button: fileIcon, title: "Show file icons", action: #selector(AppearancePref.fileIconAction(_:)) ) let fileIconInfo = self.infoTextField(markdown: #""" In case the selected `colorscheme` does not play well with the file icons\ in the file browser and the buffer list, you can turn them off. """#) let fontTitle = self.titleTextField(title: "Default Font:") let fontPanelButton = self.fontPanelButton fontPanelButton.bezelStyle = .rounded fontPanelButton.isBordered = true fontPanelButton.setButtonType(.momentaryPushIn) fontPanelButton.target = self fontPanelButton.action = #selector(AppearancePref.showFontPanel(_:)) let fontInfo = self.infoTextField(markdown: #""" The font panel will show variable width fonts, but VimR does not support them.\ If you select a variable width font, the rendering will be ... well ... questionable. """#) let linespacingTitle = self.titleTextField(title: "Line Spacing:") let linespacingField = self.linespacingField let characterspacingTitle = self.titleTextField(title: "Character Spacing:") let characterspacingField = self.characterspacingField let characterspacingInfo = self.infoTextField( markdown: "Character spacing not equal to `1` will likely break ligatures." ) let ligatureCheckbox = self.ligatureCheckbox self.configureCheckbox( button: ligatureCheckbox, title: "Use Ligatures", action: #selector(AppearancePref.usesLigaturesAction(_:)) ) let fontSmoothingPopup = self.fontSmoothingPopup let fontSmoothingTitle = self.titleTextField(title: "Font Smoothing:") fontSmoothingPopup.target = self fontSmoothingPopup.action = #selector(AppearancePref.fontSmoothingAction) fontSmoothingPopup.addItems(withTitles: self.fontSmoothingTitles) let fontSmoothingInfo = self.infoTextField(markdown: #""" "No Font Smoothing" may result in better rendering for non-Retina displays.\ If you're still using Monaco-9pt, choose "No Anti Aliasing" 😀 (you may want\ to set character spacing to 1.2 then). """#) let previewArea = self.previewArea previewArea.isEditable = true previewArea.maxSize = CGSize( width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude ) previewArea.isVerticallyResizable = true previewArea.isHorizontallyResizable = true previewArea.textContainer?.heightTracksTextView = false previewArea.textContainer?.widthTracksTextView = false previewArea.autoresizingMask = [.width, .height] previewArea.textContainer?.containerSize = CGSize( width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude ) previewArea.layoutManager?.replaceTextStorage(NSTextStorage(string: self.exampleText)) previewArea.isRichText = false previewArea.turnOffLigatures(self) let previewScrollView = NSScrollView(forAutoLayout: ()) previewScrollView.hasVerticalScroller = true previewScrollView.hasHorizontalScroller = true previewScrollView.autohidesScrollers = true previewScrollView.borderType = .bezelBorder previewScrollView.documentView = previewArea self.addSubview(paneTitle) self.addSubview(useCustomTab) self.addSubview(useColorscheme) self.addSubview(useColorschemeInfo) self.addSubview(fileIcon) self.addSubview(fileIconInfo) self.addSubview(fontTitle) self.addSubview(fontPanelButton) self.addSubview(fontInfo) self.addSubview(linespacingTitle) self.addSubview(linespacingField) self.addSubview(characterspacingTitle) self.addSubview(characterspacingField) self.addSubview(characterspacingInfo) self.addSubview(ligatureCheckbox) self.addSubview(fontSmoothingTitle) self.addSubview(fontSmoothingPopup) self.addSubview(fontSmoothingInfo) self.addSubview(previewScrollView) paneTitle.autoPinEdge(toSuperviewEdge: .top, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18) useCustomTab.autoPinEdge(.left, to: .right, of: fontTitle, withOffset: 5) useCustomTab.autoPinEdge(.top, to: .bottom, of: paneTitle, withOffset: 18) useColorscheme.autoPinEdge(.left, to: .right, of: fontTitle, withOffset: 5) useColorscheme.autoPinEdge(.top, to: .bottom, of: useCustomTab, withOffset: 18) useColorschemeInfo.autoPinEdge(.top, to: .bottom, of: useColorscheme, withOffset: 5) useColorschemeInfo.autoPinEdge(.left, to: .left, of: useColorscheme) fileIcon.autoPinEdge(.left, to: .right, of: fontTitle, withOffset: 5) fileIcon.autoPinEdge(.top, to: .bottom, of: useColorschemeInfo, withOffset: 18) fileIconInfo.autoPinEdge(.top, to: .bottom, of: fileIcon, withOffset: 5) fileIconInfo.autoPinEdge(.left, to: .left, of: fileIcon) fontTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual) fontTitle.autoAlignAxis(.baseline, toSameAxisOf: fontPanelButton) fontPanelButton.autoPinEdge(.top, to: .bottom, of: fileIconInfo, withOffset: 18) fontPanelButton.autoPinEdge(.left, to: .right, of: fontTitle, withOffset: 5) fontInfo.autoPinEdge(.top, to: .bottom, of: fontPanelButton, withOffset: 5) fontInfo.autoPinEdge(.left, to: .right, of: fontTitle, withOffset: 5) linespacingTitle.autoPinEdge( toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual ) linespacingTitle.autoPinEdge(.right, to: .right, of: fontTitle) linespacingTitle.autoAlignAxis(.baseline, toSameAxisOf: linespacingField) linespacingField.autoPinEdge(.top, to: .bottom, of: fontInfo, withOffset: 18) linespacingField.autoPinEdge(.left, to: .right, of: linespacingTitle, withOffset: 5) linespacingField.autoSetDimension(.width, toSize: 60) NotificationCenter.default.addObserver( forName: NSControl.textDidEndEditingNotification, object: linespacingField, queue: nil ) { [weak self] _ in Task { @MainActor in self?.linespacingAction() } } characterspacingTitle.autoPinEdge( toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual ) characterspacingTitle.autoPinEdge(.right, to: .right, of: linespacingTitle) characterspacingTitle.autoAlignAxis(.baseline, toSameAxisOf: characterspacingField) characterspacingField.autoPinEdge(.top, to: .bottom, of: linespacingField, withOffset: 18) characterspacingField.autoPinEdge(.left, to: .right, of: characterspacingTitle, withOffset: 5) characterspacingField.autoSetDimension(.width, toSize: 60) NotificationCenter.default.addObserver( forName: NSControl.textDidEndEditingNotification, object: characterspacingField, queue: nil ) { [weak self] _ in Task { @MainActor in self?.characterspacingAction() } } characterspacingInfo.autoPinEdge(.left, to: .left, of: characterspacingField) characterspacingInfo.autoPinEdge(.top, to: .bottom, of: characterspacingField, withOffset: 5) fontSmoothingTitle.autoPinEdge(.right, to: .right, of: characterspacingTitle) fontSmoothingTitle.autoAlignAxis(.baseline, toSameAxisOf: fontSmoothingPopup) fontSmoothingPopup.autoPinEdge(.top, to: .bottom, of: characterspacingInfo, withOffset: 18) fontSmoothingPopup.autoPinEdge(.left, to: .right, of: fontSmoothingTitle, withOffset: 5) fontSmoothingInfo.autoPinEdge(.left, to: .left, of: fontSmoothingPopup) fontSmoothingInfo.autoPinEdge(.top, to: .bottom, of: fontSmoothingPopup, withOffset: 5) ligatureCheckbox.autoPinEdge(.top, to: .bottom, of: fontSmoothingInfo, withOffset: 18) ligatureCheckbox.autoPinEdge(.left, to: .right, of: fontTitle, withOffset: 5) previewScrollView.autoSetDimension(.height, toSize: 120, relation: .greaterThanOrEqual) previewScrollView.autoPinEdge(.top, to: .bottom, of: ligatureCheckbox, withOffset: 18) previewScrollView.autoPinEdge(toSuperviewEdge: .right, withInset: 18) previewScrollView.autoPinEdge(toSuperviewEdge: .bottom, withInset: 18) previewScrollView.autoPinEdge(toSuperviewEdge: .left, withInset: 18) } private func updateViews() { sharedFontPanel.setPanelFont(self.font, isMultiple: false) self.fontPanelButton.title = self.font.displayName .map { "\($0) \(self.font.pointSize)" } ?? "Show fonts..." self.linespacingField.stringValue = String(format: "%.2f", self.linespacing) self.characterspacingField.stringValue = String(format: "%.2f", self.characterspacing) self.ligatureCheckbox.boolState = self.usesLigatures self.fontSmoothingPopup.selectItem(at: self.fontSmoothingToIndex(self.fontSmoothing)) self.previewArea.font = self.font self.customTabCheckbox.boolState = self.usesCustomTab self.colorschemeCheckbox.boolState = self.usesColorscheme self.fileIconCheckbox.boolState = self.showsFileIcon if self.usesLigatures { self.previewArea.useAllLigatures(self) } else { self.previewArea.turnOffLigatures(self) } } // Keep the index in sync with indexToFontSmoothing() and fontSmoothingToIndex(). private let fontSmoothingTitles = [ "System Setting", "With Font Smoothing", "No Font Smoothing", "No Anti Aliasing", ] private func indexToFontSmoothing(_ index: Int) -> FontSmoothing { switch index { case 0: .systemSetting case 1: .withFontSmoothing case 2: .noFontSmoothing case 3: .noAntiAliasing default: .systemSetting } } private func fontSmoothingToIndex(_ fontSmoothing: FontSmoothing) -> Int { switch fontSmoothing { case .systemSetting: 0 case .withFontSmoothing: 1 case .noFontSmoothing: 2 case .noAntiAliasing: 3 } } } // MARK: - NSFontChanging extension AppearancePref { func changeFont(_ sender: NSFontManager?) { guard let fontManager = sender else { return } let font = fontManager.convert(self.font) self.emit(.setFont(font)) } } // MARK: - Actions extension AppearancePref { @objc func usesCustomTabAction(_ sender: NSButton) { self.emit(.setUsesCustomTab(sender.boolState)) } @objc func usesColorschemeAction(_ sender: NSButton) { self.emit(.setUsesColorscheme(sender.boolState)) } @objc func fileIconAction(_ sender: NSButton) { self.emit(.setShowsFileIcon(sender.boolState)) } @objc func usesLigaturesAction(_ sender: NSButton) { self.emit(.setUsesLigatures(sender.boolState)) } @objc func showFontPanel(_ sender: NSButton) { sharedFontPanel.makeKeyAndOrderFront(sender) } func linespacingAction() { let newLinespacing = self.cappedLinespacing(self.linespacingField.doubleValue) self.emit(.setLinespacing(newLinespacing)) } @objc func fontSmoothingAction(_: NSPopUpButton) { let index = self.fontSmoothingPopup.indexOfSelectedItem guard FontSmoothing.allCases.indices.contains(index) else { return } self.fontSmoothing = self.indexToFontSmoothing(index) self.emit(.setFontSmoothing(self.fontSmoothing)) } private func cappedLinespacing(_ linespacing: Double) -> CGFloat { let cgfLinespacing = linespacing guard cgfLinespacing >= NvimView.minLinespacing else { return NvimView.defaultLinespacing } guard cgfLinespacing <= NvimView.maxLinespacing else { return NvimView.maxLinespacing } return cgfLinespacing } func characterspacingAction() { let newCharacterspacing = self.cappedCharacterspacing(self.characterspacingField.doubleValue) self.emit(.setCharacterspacing(newCharacterspacing)) } private func cappedCharacterspacing(_ characterspacing: Double) -> Double { guard characterspacing >= 0.0 else { return NvimView.defaultCharacterspacing } return characterspacing } private func cappedFontSize(_ size: Int) -> CGFloat { let cgfSize = size.cgf guard cgfSize >= NvimView.minFontSize else { return NvimView.defaultFont.pointSize } guard cgfSize <= NvimView.maxFontSize else { return NvimView.maxFontSize } return cgfSize } } @MainActor private let sharedFontManager = NSFontManager.shared @MainActor private let sharedFontPanel = NSFontPanel.shared ================================================ FILE: VimR/VimR/AppearancePrefReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class AppearancePrefReducer: ReducerType { typealias StateType = AppState typealias ActionType = AppearancePref.Action func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state var appearance = state.mainWindowTemplate.appearance switch tuple.action { case let .setUsesCustomTab(value): appearance.usesCustomTab = value case let .setUsesColorscheme(value): appearance.usesTheme = value case let .setShowsFileIcon(value): appearance.showsFileIcon = value case let .setUsesLigatures(value): appearance.usesLigatures = value case let .setFont(font): appearance.font = font case let .setLinespacing(linespacing): appearance.linespacing = linespacing case let .setCharacterspacing(characterspacing): appearance.characterspacing = characterspacing case let .setFontSmoothing(fontSmoothing): appearance.fontSmoothing = fontSmoothing } self.modify(state: &state, with: appearance) return ReduceTuple(state: state, action: tuple.action, modified: true) } private func modify(state: inout AppState, with appearance: AppearanceState) { state.mainWindowTemplate.appearance = appearance state.mainWindows.keys.forEach { state.mainWindows[$0]?.appearance = appearance } } } ================================================ FILE: VimR/VimR/Application.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Sparkle final class Application: NSApplication { override init() { setPressAndHoldSetting() super.init() } required init?(coder: NSCoder) { setPressAndHoldSetting() super.init(coder: coder) } @IBAction override func showHelp(_: Any?) { NSWorkspace.shared.open(URL(string: "https://github.com/qvacua/vimr/wiki")!) } } private func setPressAndHoldSetting() { // disable default press and hold behavior (copied from MacVim) CFPreferencesSetAppValue( "ApplePressAndHoldEnabled" as NSString, "NO" as NSString, kCFPreferencesCurrentApplication ) } ================================================ FILE: VimR/VimR/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images" : [ { "size" : "16x16", "idiom" : "mac", "filename" : "icon_16x16.png", "scale" : "1x" }, { "size" : "16x16", "idiom" : "mac", "filename" : "icon_16x16@2x.png", "scale" : "2x" }, { "size" : "32x32", "idiom" : "mac", "filename" : "icon_32x32.png", "scale" : "1x" }, { "idiom" : "mac", "size" : "32x32", "scale" : "2x" }, { "size" : "128x128", "idiom" : "mac", "filename" : "icon_128x128.png", "scale" : "1x" }, { "size" : "128x128", "idiom" : "mac", "filename" : "icon_128x128@2x.png", "scale" : "2x" }, { "size" : "256x256", "idiom" : "mac", "filename" : "icon_256x256.png", "scale" : "1x" }, { "size" : "256x256", "idiom" : "mac", "filename" : "icon_256x256@2x.png", "scale" : "2x" }, { "size" : "512x512", "idiom" : "mac", "filename" : "icon_512x512.png", "scale" : "1x" }, { "idiom" : "mac", "size" : "512x512", "scale" : "2x" } ], "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: VimR/VimR/Base.lproj/Credits.rtf ================================================ {\rtf1\ansi\ansicpg1252\cocoartf2821 \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fswiss\fcharset0 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} {\*\expandedcolortbl;;} \paperw11900\paperh16840\vieww10960\viewh15520\viewkind0 \pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 {\field{\*\fldinst{HYPERLINK "https://github.com/qvacua/vimr"}}{\fldrslt \f0\fs24 \cf0 https://github.com/qvacua/vimr}} \f1\b\fs24 \ \ By: \f0\b0 \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\partightenfactor0 \cf0 \f1\b Tae Won Ha \f0\b0 \'95 {\field{\*\fldinst{HYPERLINK "http://twitter.com/hataewon"}}{\fldrslt @hataewon}}\ {\field{\*\fldinst{HYPERLINK "mailto:h@taewon.de"}}{\fldrslt h@taewon.de}}\ \ \f1\b App icon by:\ Andrew Yeaton \f0\b0 \'95 {\field{\*\fldinst{HYPERLINK "https://twitter.com/xeeton"}}{\fldrslt @xeeton}}\ {\field{\*\fldinst{HYPERLINK "mailto:xeeton@gmail.com"}}{\fldrslt xeeton@gmail.com}}\ \ \f1\b Contributors: \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://github.com/qvacua/vimr/graphs/contributors"}}{\fldrslt https://github.com/qvacua/vimr/graphs/contributors}}\ {\field{\*\fldinst{HYPERLINK "https://github.com/qvacua/vimr/issues"}}{\fldrslt https://github.com/qvacua/vimr/issues}}\ \ \f1\b Backers \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://github.com/qvacua/"}}{\fldrslt https://github.com/qvacua/}}\ \ \f1\b Using stuff from:\ Neovim\ {\field{\*\fldinst{HYPERLINK "https://github.com/neovim/neovim"}}{\fldrslt \f0\b0 https://github.com/neovim/neovim}} \f0\b0 \ \ \f1\b MacVim \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://github.com/macvim-dev"}}{\fldrslt https://github.com/macvim-dev}}\ \ \f1\b PureLayout \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://github.com/smileyborg/PureLayout"}}{\fldrslt https://github.com/smileyborg/PureLayout}}\ \ \f1\b EonilFileSystemEvents \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://github.com/eonil/FileSystemEvents"}}{\fldrslt https://github.com/eonil/FileSystemEvents}}\ \ \f1\b Sparkle \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://sparkle-project.org"}}{\fldrslt https://sparkle-project.org}}\ \ \f1\b Material Icons \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://material.io/resources/icons"}}{\fldrslt https://material.io/resources/icons}}\ via {\field{\*\fldinst{HYPERLINK "https://github.com/qvacua/material-icons"}}{\fldrslt https://github.com/qvacua/material-icons}}\ \ \f1\b Down\ \f0\b0 {\field{\*\fldinst{HYPERLINK "https://github.com/iwasrobbed/Down"}}{\fldrslt https://github.com/iwasrobbed/Down}}\ \ \f1\b Swifter\ \f0\b0 {\field{\*\fldinst{HYPERLINK "https://github.com/httpswift/swifter"}}{\fldrslt https://github.com/httpswift/swifter}}\ \ \f1\b github-markdown-css\ \f0\b0 {\field{\*\fldinst{HYPERLINK "https://github.com/sindresorhus/github-markdown-css"}}{\fldrslt https://github.com/sindresorhus/github-markdown-css}}\ \ \f1\b MessagePack.swift\ {\field{\*\fldinst{HYPERLINK "https://github.com/a2/MessagePack.swift"}}{\fldrslt \f0\b0 https://github.com/a2/MessagePack.swift}} \f0\b0 \ \ \f1\b DictionaryCoding \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://github.com/elegantchaos/DictionaryCoding"}}{\fldrslt https://github.com/elegantchaos/DictionaryCoding}}\ \ \f1\b ShortcutRecorder \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://github.com/Kentzo/ShortcutRecorder"}}{\fldrslt https://github.com/Kentzo/ShortcutRecorder}}\ \ \f1\b wildmatch\ \f0\b0 {\field{\*\fldinst{HYPERLINK "https://github.com/davvid/wildmatch"}}{\fldrslt https://github.com/davvid/wildmatch}}\ via {\field{\*\fldinst{HYPERLINK "https://github.com/qvacua/misc.swift"}}{\fldrslt https://github.com/qvacua/misc.swift}}\ \ \f1\b fzy\ {\field{\*\fldinst{HYPERLINK "https://github.com/jhawthorn/fzy"}}{\fldrslt \f0\b0 https://github.com/jhawthorn/fzy}} \f0\b0 \ via {\field{\*\fldinst{HYPERLINK "https://github.com/qvacua/misc.swift"}}{\fldrslt https://github.com/qvacua/misc.swift}}\ \ \f1\b Nimble \f0\b0 \ {\field{\*\fldinst{HYPERLINK "https://github.com/Quick/Nimble"}}{\fldrslt https://github.com/Quick/Nimble}}\ } ================================================ FILE: VimR/VimR/Base.lproj/FileBrowserMenu.xib ================================================ ================================================ FILE: VimR/VimR/Base.lproj/MainMenu.xib ================================================ ================================================ FILE: VimR/VimR/Base.lproj/MainWindow.xib ================================================ ================================================ FILE: VimR/VimR/Base.lproj/OpenQuicklyWindow.xib ================================================ ================================================ FILE: VimR/VimR/Base.lproj/PrefWindow.xib ================================================ ================================================ FILE: VimR/VimR/Bridge.h ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ #import "ScoredUrl.h" #import "FileItem+CoreDataProperties.h" ================================================ FILE: VimR/VimR/BufferList.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Combine import Commons import NvimView import PureLayout final class BuffersList: NSView, UiComponent, NSTableViewDataSource, NSTableViewDelegate, ThemedView { typealias StateType = MainWindow.State enum Action { case open(NvimView.Buffer) } let uuid = UUID() private(set) var lastThemeMark = Token() private(set) var theme = Theme.default required init(context: ReduxContext, state: StateType) { self.context = context self.emit = context.actionEmitter.typedEmit() self.mainWinUuid = state.uuid self.usesTheme = state.appearance.usesTheme self.showsFileIcon = state.appearance.showsFileIcon super.init(frame: .zero) self.bufferList.dataSource = self self.bufferList.allowsEmptySelection = true self.bufferList.delegate = self self.bufferList.target = self self.bufferList.doubleAction = #selector(BuffersList.doubleClickAction) self.addViews() context.subscribe(uuid: self.uuid) { appState in guard let state = appState.mainWindows[self.mainWinUuid] else { return } if state.viewToBeFocused != nil, case .bufferList = state.viewToBeFocused! { self.beFirstResponder() } let themeChanged = changeTheme( themePrefChanged: state.appearance.usesTheme != self.usesTheme, themeChanged: state.appearance.theme.mark != self.lastThemeMark, usesTheme: state.appearance.usesTheme, forTheme: { self.updateTheme(state.appearance.theme) }, forDefaultTheme: { self.updateTheme(Marked(Theme.default)) } ) self.usesTheme = state.appearance.usesTheme if self.buffers == state.buffers, !themeChanged, self.showsFileIcon == state.appearance.showsFileIcon { return } self.showsFileIcon = state.appearance.showsFileIcon self.buffers = state.buffers self.bufferList.reloadData() } } func cleanup() { self.context.unsubscribe(uuid: self.uuid) } private let context: ReduxContext private let emit: (UuidAction) -> Void private var cancellables = Set() private let mainWinUuid: UUID private var usesTheme: Bool private var showsFileIcon: Bool private let bufferList = NSTableView.standardTableView() private var buffers = [NvimView.Buffer]() @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private func updateTheme(_ theme: Marked) { self.theme = theme.payload self.bufferList.enclosingScrollView?.backgroundColor = self.theme.background self.bufferList.backgroundColor = self.theme.background self.lastThemeMark = theme.mark } private func addViews() { let scrollView = NSScrollView.standardScrollView() scrollView.borderType = .noBorder scrollView.documentView = self.bufferList self.addSubview(scrollView) scrollView.autoPinEdgesToSuperviewEdges() } } // MARK: - Actions extension BuffersList { @objc func doubleClickAction(_: Any?) { let clickedRow = self.bufferList.clickedRow guard clickedRow >= 0, clickedRow < self.buffers.count else { return } self.emit(UuidAction(uuid: self.mainWinUuid, action: .open(self.buffers[clickedRow]))) } } // MARK: - NSTableViewDataSource extension BuffersList { @objc(numberOfRowsInTableView:) func numberOfRows(in _: NSTableView) -> Int { self.buffers.count } } // MARK: - NSTableViewDelegate extension BuffersList { func tableView( _ tableView: NSTableView, rowViewForRow _: Int ) -> NSTableRowView? { tableView.makeView( withIdentifier: NSUserInterfaceItemIdentifier("buffer-row-view"), owner: self ) as? ThemedTableRow ?? ThemedTableRow( withIdentifier: "buffer-row-view", themedView: self ) } func tableView( _ tableView: NSTableView, viewFor _: NSTableColumn?, row: Int ) -> NSView? { let cachedCell = (tableView.makeView( withIdentifier: NSUserInterfaceItemIdentifier("buffer-cell-view"), owner: self ) as? ThemedTableCell)?.reset() let cell = cachedCell ?? ThemedTableCell(withIdentifier: "buffer-cell-view") let buffer = self.buffers[row] cell.attributedText = self.text(for: buffer) guard self.showsFileIcon else { return cell } cell.image = self.icon(for: buffer) return cell } func tableView( _: NSTableView, didAdd rowView: NSTableRowView, forRow _: Int ) { guard let cellWidth = (rowView.view(atColumn: 0) as? NSTableCellView)? .fittingSize.width else { return } self.bufferList.tableColumns[0].width = max( self.bufferList.tableColumns[0].width, cellWidth + 10.0 ) } private func text(for buffer: NvimView.Buffer) -> NSAttributedString { guard let name = buffer.name else { return NSAttributedString(string: "No Name") } guard let url = buffer.url else { return NSAttributedString(string: name) } let pathInfo = url.pathComponents .dropFirst() .dropLast() .reversed() .joined(separator: " / ") + " /" let rowText = NSMutableAttributedString(string: "\(name) — \(pathInfo)") rowText.addAttribute( NSAttributedString.Key.foregroundColor, value: self.theme.foreground, range: NSRange(location: 0, length: name.count) ) rowText.addAttribute( NSAttributedString.Key.foregroundColor, value: self.theme.foreground.brightening(by: 1.15), range: NSRange(location: name.count, length: pathInfo.count + 3) ) return rowText } private func icon(for buffer: NvimView.Buffer) -> NSImage? { if let url = buffer.url { return FileUtils.icon(forUrl: url) } return genericIcon } } private let genericIcon = FileUtils.icon(forType: "public.data") ================================================ FILE: VimR/VimR/BufferListReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class BuffersListReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case let .open(buffer): state.currentBufferToSet = buffer } return ReduceTuple(state: state, action: tuple.action, modified: true) } } ================================================ FILE: VimR/VimR/Context.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import os final class ReduxContext { let actionEmitter = ActionEmitter() private(set) var state: ReduxTypes.StateType private var subscribers: [UUID: (ReduxTypes.StateType) -> Void] = [:] init(baseServerUrl url: URL, state: AppState) { self.state = state self.setupRedux(baseServerUrl: url) } // The following should only be used when Cmd-Q'ing func savePrefs() { if let curMainWindow = self.state.currentMainWindow { self.state.mainWindowTemplate = curMainWindow } self.prefMiddleware.applyPref(from: self.state) } func setupRedux(baseServerUrl: URL) { let uiRootReducer = UiRootReducer() let openQuicklyReducer = OpenQuicklyReducer() let appStateReduce = { tuple in [ AppDelegateReducer(baseServerUrl: baseServerUrl).reduce, uiRootReducer.mainWindow.reduce, openQuicklyReducer.mainWindow.reduce, openQuicklyReducer.reduce, uiRootReducer.reduce, // Preferences PrefWindowReducer().reduce, GeneralPrefReducer().reduce, ToolsPrefReducer().reduce, AppearancePrefReducer().reduce, AdvancedPrefReducer().reduce, KeysPrefReducer().reduce, ].reduce(tuple) { result, reduceBody in reduceBody(result) } } let appStateMiddlewareApply = [ self.prefMiddleware.mainWindow.apply, self.prefMiddleware.apply, ].reversed().reduce(appStateReduce) { result, middleware in middleware(result) } let markdownPreviewMiddleware = MarkdownPreviewMiddleware() let markdownPreviewReducer = MarkdownPreviewReducer(baseServerUrl: baseServerUrl) let htmlPreviewReducer = HtmlPreviewReducer(baseServerUrl: baseServerUrl) let httpMiddleware = HttpServerMiddleware(port: baseServerUrl.port!) let mainWinReduce = { tuple in [ MainWindowReducer().reduce, markdownPreviewReducer.mainWindow.reduce, markdownPreviewReducer.previewTool.reduce, MarkdownToolReducer(baseServerUrl: baseServerUrl).reduce, htmlPreviewReducer.mainWindow.reduce, htmlPreviewReducer.htmlPreview.reduce, FileBrowserReducer().reduce, BuffersListReducer().reduce, markdownPreviewReducer.buffersList.reduce, ].reduce(tuple) { result, reduceBody in reduceBody(result) } } let mainWinMiddlwareApply = [ markdownPreviewMiddleware.mainWindow.apply, httpMiddleware.markdownPreview.apply, markdownPreviewMiddleware.markdownTool.apply, HtmlPreviewMiddleware().apply, httpMiddleware.htmlPreviewMainWindow.apply, httpMiddleware.htmlPreviewTool.apply, ].reversed().reduce(mainWinReduce) { result, middleware in middleware(result) } self.actionEmitter.subscribe { action in var modified = false let tuple = ReduceTuple(state: self.state, action: action, modified: false) dlog.trace("AppState Redux tuple before reducing: \(tuple)") let result = appStateMiddlewareApply(tuple) dlog.trace("AppState Redux tuple after AppState reduce: \(tuple)") if result.modified { self.state = result.state modified = true } else { dlog.debug("AppState not mofified") } if let uuidAction = action as? UuidTagged, let mainWindowState = self.state.mainWindows[uuidAction.uuid] { let tuple = ReduceTuple(state: mainWindowState, action: action, modified: false) dlog.trace("MainWin \(uuidAction.uuid) Redux tuple before reducing: \(tuple)") let result = mainWinMiddlwareApply(tuple) dlog.trace("MainWin \(uuidAction.uuid) Redux tuple after reduce: \(tuple)") if result.modified { self.state.mainWindows[uuidAction.uuid] = result.state modified = true } else { dlog.debug("MainWin \(uuidAction.uuid) state not mofified") } } guard modified else { dlog.debug("No need to notify subscribers") return } for subscriber in self.subscribers.values { subscriber(self.state) } self.cleanUpAppState() } } deinit { self.subscribers.removeAll() } func subscribe(uuid: UUID, subscription: @escaping (ReduxTypes.StateType) -> Void) { self.subscribers[uuid] = subscription } func unsubscribe(uuid: UUID) { self.subscribers[uuid] = nil } private let prefMiddleware = PrefMiddleware() private func cleanUpAppState() { for uuid in self.state.mainWindows.keys { self.state.mainWindows[uuid]?.cwdToSet = nil self.state.mainWindows[uuid]?.currentBufferToSet = nil self.state.mainWindows[uuid]?.viewToBeFocused = nil self.state.mainWindows[uuid]?.urlsToOpen.removeAll() } } } ================================================ FILE: VimR/VimR/CoreDataStack.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Commons import CoreData import Foundation import os final class CoreDataStack { enum Error: Swift.Error { case noCacheFolder case pathDoesNotExit case pathNotFolder case unableToComplete(Swift.Error) } enum StoreLocation { case temp(String) case cache(String) case path(String) } let container: NSPersistentContainer let storeFile: URL var storeLocation: URL { self.storeFile.parent } func newBackgroundContext() -> NSManagedObjectContext { let context = self.container.newBackgroundContext() context.undoManager = nil return context } init(modelName: String, storeLocation: StoreLocation) throws { self.container = NSPersistentContainer(name: modelName) let fileManager = FileManager.default let url: URL switch storeLocation { case let .temp(folderName): let parentUrl = fileManager .temporaryDirectory .appendingPathComponent(folderName) try fileManager.createDirectory(at: parentUrl, withIntermediateDirectories: true) url = parentUrl.appendingPathComponent(modelName) case let .cache(folderName): guard let cacheUrl = fileManager.urls(for: .cachesDirectory, in: .userDomainMask).first else { throw Error.noCacheFolder } let parentUrl = cacheUrl.appendingPathComponent(folderName) try fileManager.createDirectory(at: parentUrl, withIntermediateDirectories: true) url = parentUrl.appendingPathComponent(modelName) case let .path(path): guard fileManager.fileExists(atPath: path) else { throw Error.pathDoesNotExit } let parentFolder = URL(fileURLWithPath: path) guard parentFolder.hasDirectoryPath else { throw Error.pathNotFolder } url = parentFolder.appendingPathComponent(modelName) } self.container.persistentStoreDescriptions = [NSPersistentStoreDescription(url: url)] self.storeFile = url dlog.debug("Created Core Data store in \(self.storeLocation)") let condition = ConditionVariable() var error: Swift.Error? self.container.loadPersistentStores { _, err in error = err condition.broadcast() } condition.wait(for: 5) if let err = error { throw Error.unableToComplete(err) } self.container.viewContext.undoManager = nil } func deleteStore() throws { guard let store = self.container.persistentStoreCoordinator.persistentStore( for: self.storeFile ) else { return } try self.container.persistentStoreCoordinator.remove(store) let parentFolder = self.storeLocation let fileManager = FileManager.default guard fileManager.fileExists(atPath: parentFolder.path) else { return } try fileManager.removeItem(at: parentFolder) dlog.debug("Deleted store at \(self.storeLocation)") } deinit { try? self.deleteStore() } } ================================================ FILE: VimR/VimR/CssUtils.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa final class CssUtils { // swiftlint:disable:next force_try static let cssOverridesTemplate: String = try! String( contentsOf: Resources.cssOverridesTemplateUrl ) static func cssOverrides(with theme: Theme) -> String { self .cssOverridesTemplate .replacingOccurrences(of: "{{ nvim-color }}", with: self.htmlColor(theme.cssColor)) .replacingOccurrences( of: "{{ nvim-background-color }}", with: self.htmlColor(theme.cssBackgroundColor) ) .replacingOccurrences(of: "{{ nvim-a }}", with: self.htmlColor(theme.cssA)) .replacingOccurrences( of: "{{ nvim-hr-background-color }}", with: self.htmlColor(theme.cssHrBorderBackgroundColor) ) .replacingOccurrences( of: "{{ nvim-hr-border-bottom-color }}", with: self.htmlColor(theme.cssHrBorderBottomColor) ) .replacingOccurrences( of: "{{ nvim-blockquote-border-left-color }}", with: self.htmlColor(theme.cssBlockquoteBorderLeftColor) ) .replacingOccurrences( of: "{{ nvim-blockquote-color }}", with: self.htmlColor(theme.cssBlockquoteColor) ) .replacingOccurrences( of: "{{ nvim-h2-border-bottom-color }}", with: self.htmlColor(theme.cssH2BorderBottomColor) ) .replacingOccurrences(of: "{{ nvim-h6-color }}", with: self.htmlColor(theme.cssH6Color)) .replacingOccurrences( of: "{{ nvim-code-background-color }}", with: self.htmlColor(theme.cssCodeBackgroundColor) ) .replacingOccurrences(of: "{{ nvim-code-color }}", with: self.htmlColor(theme.cssCodeColor)) } private static func htmlColor(_ color: NSColor) -> String { "#\(color.hex)" } } ================================================ FILE: VimR/VimR/DefaultShortcuts.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation @preconcurrency import ShortcutRecorder let defaultShortcuts: [String: Shortcut?] = [ "com.qvacua.vimr.menuitems.edit.copy": Shortcut(keyEquivalent: "⌘C"), "com.qvacua.vimr.menuitems.edit.cut": Shortcut(keyEquivalent: "⌘X"), "com.qvacua.vimr.menuitems.edit.delete": Shortcut(keyEquivalent: ""), "com.qvacua.vimr.menuitems.edit.paste": Shortcut(keyEquivalent: "⌘V"), "com.qvacua.vimr.menuitems.edit.redo": Shortcut(keyEquivalent: "⇧⌘Z"), "com.qvacua.vimr.menuitems.edit.select-all": Shortcut(keyEquivalent: "⌘A"), "com.qvacua.vimr.menuitems.edit.undo": Shortcut(keyEquivalent: "⌘Z"), "com.qvacua.vimr.menuitems.file.close": Shortcut(keyEquivalent: "⌘W"), "com.qvacua.vimr.menuitems.file.close-window": Shortcut(keyEquivalent: "⇧⌘W"), "com.qvacua.vimr.menuitems.file.new": Shortcut(keyEquivalent: "⌘N"), "com.qvacua.vimr.menuitems.file.new-custom-config-location": Shortcut(keyEquivalent: "⇧⌘N"), "com.qvacua.vimr.menuitems.file.new-tab": Shortcut(keyEquivalent: "⌘T"), "com.qvacua.vimr.menuitems.file.open-in-new-window": Shortcut(keyEquivalent: "⌥⌘O"), "com.qvacua.vimr.menuitems.file.open-quickly": Shortcut(keyEquivalent: "⇧⌘O"), "com.qvacua.vimr.menuitems.file.open": Shortcut(keyEquivalent: "⌘O"), "com.qvacua.vimr.menuitems.file.save-as": Shortcut(keyEquivalent: "⇧⌘S"), "com.qvacua.vimr.menuitems.file.save": Shortcut(keyEquivalent: "⌘S"), "com.qvacua.vimr.menuitems.help.vimr-help": Shortcut(keyEquivalent: ""), "com.qvacua.vimr.menuitems.tools.focus-neovim-view": Shortcut(keyEquivalent: "⌘."), "com.qvacua.vimr.menuitems.tools.toggle-all-tools": Shortcut(keyEquivalent: "⌘\\"), "com.qvacua.vimr.menuitems.tools.toggle-file-browser": Shortcut(keyEquivalent: "⌘1"), "com.qvacua.vimr.menuitems.tools.toggle-buffer-list": Shortcut(keyEquivalent: "⌘2"), "com.qvacua.vimr.menuitems.tools.toggle-markdown-preview": Shortcut(keyEquivalent: "⌘3"), "com.qvacua.vimr.menuitems.tools.toggle-html-preview": Shortcut(keyEquivalent: "⌘4"), "com.qvacua.vimr.menuitems.tools.toggle-tool-buttons": Shortcut(keyEquivalent: "⇧⌘\\"), "com.qvacua.vimr.menuitems.view.enter-full-screen": Shortcut(keyEquivalent: "⌃⌘F"), "com.qvacua.vimr.menuitems.view.font.bigger": Shortcut(keyEquivalent: "⌘+"), "com.qvacua.vimr.menuitems.view.font.reset-to-default-size": Shortcut(keyEquivalent: "⌘0"), "com.qvacua.vimr.menuitems.view.font.smaller": Shortcut(keyEquivalent: "⌘-"), "com.qvacua.vimr.menuitems.window.bring-all-to-front": Shortcut(keyEquivalent: ""), "com.qvacua.vimr.menuitems.window.minimize": Shortcut(keyEquivalent: "⌘M"), "com.qvacua.vimr.menuitems.window.zoom": Shortcut(keyEquivalent: ""), ] let legacyDefaultShortcuts = [ "com.qvacua.vimr.menuitems.edit.copy", "com.qvacua.vimr.menuitems.edit.cut", "com.qvacua.vimr.menuitems.edit.delete", "com.qvacua.vimr.menuitems.edit.paste", "com.qvacua.vimr.menuitems.edit.redo", "com.qvacua.vimr.menuitems.edit.select-all", "com.qvacua.vimr.menuitems.edit.undo", "com.qvacua.vimr.menuitems.file.close", "com.qvacua.vimr.menuitems.file.close-window", "com.qvacua.vimr.menuitems.file.new", "com.qvacua.vimr.menuitems.file.new-tab", "com.qvacua.vimr.menuitems.file.open-in-new-window", "com.qvacua.vimr.menuitems.file.open-quickly", "com.qvacua.vimr.menuitems.file.open", "com.qvacua.vimr.menuitems.file.save-as", "com.qvacua.vimr.menuitems.file.save", "com.qvacua.vimr.menuitems.help.vimr-help", "com.qvacua.vimr.menuitems.tools.focus-neovim-view", "com.qvacua.vimr.menuitems.tools.toggle-all-tools", "com.qvacua.vimr.menuitems.tools.toggle-file-browser", "com.qvacua.vimr.menuitems.tools.toggle-buffer-list", "com.qvacua.vimr.menuitems.tools.toggle-markdown-preview", "com.qvacua.vimr.menuitems.tools.toggle-html-preview", "com.qvacua.vimr.menuitems.tools.toggle-tool-buttons", "com.qvacua.vimr.menuitems.view.enter-full-screen", "com.qvacua.vimr.menuitems.view.font.bigger", "com.qvacua.vimr.menuitems.view.font.reset-to-default-size", "com.qvacua.vimr.menuitems.view.font.smaller", "com.qvacua.vimr.menuitems.window.bring-all-to-front", "com.qvacua.vimr.menuitems.window.minimize", "com.qvacua.vimr.menuitems.window.zoom", ] ================================================ FILE: VimR/VimR/Defs.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Commons import Foundation enum Defs { static let loggerSubsystem = Bundle.main.bundleIdentifier! enum LoggerCategory { static let general = "general" static let redux = "redux" static let ui = "ui" static let middleware = "middleware" static let service = "service" } } let dlog = DevLogger.shared ================================================ FILE: VimR/VimR/FileBrowser.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import MaterialIcons import PureLayout import Workspace final class FileBrowser: NSView, UiComponent { typealias StateType = MainWindow.State enum Action { case open(url: URL, mode: MainWindow.OpenMode) case setAsWorkingDirectory(URL) case setShowHidden(Bool) case refresh } let uuid = UUID() let innerCustomToolbar = InnerCustomToolbar() let menuItems: [NSMenuItem] override var isFirstResponder: Bool { self.fileView.isFirstResponder } required init(context: ReduxContext, state: StateType) { self.context = context self.emit = context.actionEmitter.typedEmit() self.mainWinUuid = state.uuid self.cwd = state.cwd self.fileView = FileOutlineView(context: context, state: state) self.showHiddenMenuItem = NSMenuItem( title: "Show Hidden Files", action: #selector(FileBrowser.showHiddenAction), keyEquivalent: "" ) self.showHiddenMenuItem.boolState = state.fileBrowserShowHidden self.menuItems = [self.showHiddenMenuItem] super.init(frame: .zero) self.addViews() self.showHiddenMenuItem.target = self self.innerCustomToolbar.fileBrowser = self self.context.subscribe(uuid: self.uuid) { appState in guard let state = appState.mainWindows[self.mainWinUuid] else { return } if self.cwd != state.cwd { self.cwd = state.cwd self.innerCustomToolbar.goToParentButton.isEnabled = state.cwd.path != "/" } self.currentBufferUrl = state.currentBuffer?.url self.showHiddenMenuItem.boolState = state.fileBrowserShowHidden } } func cleanup() { self.context.unsubscribe(uuid: self.uuid) self.fileView.cleanup() } private let context: ReduxContext private let emit: (UuidAction) -> Void private let mainWinUuid: UUID private var currentBufferUrl: URL? private let fileView: FileOutlineView private let showHiddenMenuItem: NSMenuItem private var cwd: URL @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private func addViews() { let scrollView = NSScrollView.standardScrollView() scrollView.borderType = .noBorder scrollView.documentView = self.fileView self.addSubview(scrollView) scrollView.autoPinEdgesToSuperviewEdges() } } extension FileBrowser { class InnerCustomToolbar: CustomToolBar { let goToParentButton = NSButton(forAutoLayout: ()) let scrollToSourceButton = NSButton(forAutoLayout: ()) let refreshButton = NSButton(forAutoLayout: ()) init() { super.init(frame: .zero) self.configureForAutoLayout() self.addViews() } override func repaint(with theme: Workspace.Theme) { self.goToParentButton.image = Icon.arrowUpward.asImage( dimension: InnerToolBar.iconDimension, style: .filled, color: theme.toolbarForeground ) self.scrollToSourceButton.image = Icon.adjust.asImage( dimension: InnerToolBar.iconDimension, style: .filled, color: theme.toolbarForeground ) self.refreshButton.image = Icon.refresh.asImage( dimension: InnerToolBar.iconDimension, style: .filled, color: theme.toolbarForeground ) } fileprivate weak var fileBrowser: FileBrowser? { didSet { self.goToParentButton.target = self.fileBrowser self.scrollToSourceButton.target = self.fileBrowser self.refreshButton.target = self.fileBrowser } } private func addViews() { let goToParent = self.goToParentButton InnerToolBar.configureToStandardIconButton( button: goToParent, iconName: .arrowUpward, style: .filled ) goToParent.toolTip = "Set parent as working directory" goToParent.action = #selector(FileBrowser.goToParentAction) let scrollToSource = self.scrollToSourceButton InnerToolBar.configureToStandardIconButton( button: scrollToSource, iconName: .adjust, style: .filled ) scrollToSource.toolTip = "Navigate to the current buffer" scrollToSource.action = #selector(FileBrowser.scrollToSourceAction) let refresh = self.refreshButton InnerToolBar.configureToStandardIconButton(button: refresh, iconName: .sync, style: .filled) refresh.toolTip = "Refresh" refresh.action = #selector(FileBrowser.refreshAction) self.addSubview(goToParent) self.addSubview(scrollToSource) self.addSubview(refresh) refresh.autoPinEdge(toSuperviewEdge: .top) refresh.autoPinEdge(toSuperviewEdge: .right, withInset: InnerToolBar.itemPadding) goToParent.autoPinEdge(toSuperviewEdge: .top) goToParent.autoPinEdge(.right, to: .left, of: refresh, withOffset: -InnerToolBar.itemPadding) scrollToSource.autoPinEdge(toSuperviewEdge: .top) scrollToSource.autoPinEdge( .right, to: .left, of: goToParent, withOffset: -InnerToolBar.itemPadding ) } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } } // MARK: - Actions extension FileBrowser { @objc func showHiddenAction(_ sender: Any?) { guard let menuItem = sender as? NSMenuItem else { return } self.emit(UuidAction(uuid: self.mainWinUuid, action: .setShowHidden(!menuItem.boolState))) } @objc func goToParentAction(_: Any?) { self.emit(UuidAction(uuid: self.mainWinUuid, action: .setAsWorkingDirectory(self.cwd.parent))) } @objc func scrollToSourceAction(_: Any?) { guard let url = self.currentBufferUrl else { return } self.fileView.select(url) } @objc func refreshAction(_: Any?) { self.emit(UuidAction(uuid: self.mainWinUuid, action: .refresh)) } } ================================================ FILE: VimR/VimR/FileBrowserReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class FileBrowserReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case let .open(url, mode): state.urlsToOpen[url] = mode state.viewToBeFocused = .neoVimView case let .setAsWorkingDirectory(url): state.cwdToSet = url case let .setShowHidden(show): state.fileBrowserShowHidden = show case .refresh: state.lastFileSystemUpdate = Marked(state.cwd) } return ReduceTuple(state: state, action: tuple.action, modified: true) } } ================================================ FILE: VimR/VimR/FileItem+CoreDataClass.h ================================================ // // FileItem+CoreDataClass.h // VimR // // Created by Tae Won Ha on 18.01.20. // Copyright © 2020 Tae Won Ha. All rights reserved. // // #import #import NS_ASSUME_NONNULL_BEGIN @interface FileItem : NSManagedObject @end NS_ASSUME_NONNULL_END #import "FileItem+CoreDataProperties.h" ================================================ FILE: VimR/VimR/FileItem+CoreDataClass.m ================================================ // // FileItem+CoreDataClass.m // VimR // // Created by Tae Won Ha on 18.01.20. // Copyright © 2020 Tae Won Ha. All rights reserved. // // #import "FileItem+CoreDataClass.h" @implementation FileItem @end ================================================ FILE: VimR/VimR/FileMonitor.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Commons import EonilFSEvents import Foundation import os // TODO: Think about producing an AsyncStream of events // actors cannot have deinit where we want to stop the FSStream. final class FileMonitor: @unchecked Sendable { static let fileSystemEventsLatency = 1.0 private(set) var urlToMonitor = FileUtils.userHomeUrl func monitor(url: URL, eventHandler: @Sendable @escaping (URL) -> Void) throws { self.monitorLock.lock() defer { self.monitorLock.unlock() } self.stopMonitor() self.urlToMonitor = url self.monitor = try EonilFSEventStream( pathsToWatch: [self.urlToMonitor.path], sinceWhen: EonilFSEventsEventID.getCurrentEventId(), latency: FileMonitor.fileSystemEventsLatency, flags: [], handler: { event in if event.flag == .historyDone { dlog.debug("Not firing first event (.historyDone): \(event)") return } let url = URL(fileURLWithPath: event.path) eventHandler(url) } ) self.monitor?.setDispatchQueue(self.queue) try self.monitor?.start() dlog.debug("Started monitoring \(self.urlToMonitor)") } deinit { stopMonitor() } private func stopMonitor() { self.monitor?.stop() self.monitor?.invalidate() } private var monitor: EonilFSEventStream? private let monitorLock = OSAllocatedUnfairLock() private let queue = DispatchQueue( label: String(reflecting: FileMonitor.self) + "-\(UUID())", qos: .userInitiated, target: .global(qos: .userInitiated) ) } ================================================ FILE: VimR/VimR/FileOutlineView.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import MaterialIcons import NvimView import os import PureLayout final class FileOutlineView: NSOutlineView, UiComponent, NSOutlineViewDelegate, ThemedView { typealias StateType = MainWindow.State let uuid = UUID() @objc dynamic var content = [Node]() private(set) var lastThemeMark = Token() private(set) var theme = Theme.default required init(context: ReduxContext, state: StateType) { self.context = context self.emit = context.actionEmitter.typedEmit() self.mainWinUuid = state.uuid self.root = Node(url: state.cwd) self.usesTheme = state.appearance.usesTheme self.showsFileIcon = state.appearance.showsFileIcon self.isShowHidden = state.fileBrowserShowHidden self.triangleClosed = Icon.chevronRight.asImage( dimension: triangleImageSize, style: .filled, color: self.theme.directoryForeground ) self.triangleOpen = Icon.expandMore.asImage( dimension: triangleImageSize, style: .filled, color: self.theme.directoryForeground ) super.init(frame: .zero) try? self.fileMonitor.monitor(url: state.cwd) { [weak self] url in self?.handleFileSystemChanges(url) } NSOutlineView.configure(toStandard: self) self.delegate = self context.subscribe(uuid: self.uuid) { appState in guard let state = appState.mainWindows[self.mainWinUuid] else { return } if state.viewToBeFocused != nil, case .fileBrowser = state.viewToBeFocused! { self.beFirstResponder() } let themeChanged = changeTheme( themePrefChanged: state.appearance.usesTheme != self.usesTheme, themeChanged: state.appearance.theme.mark != self.lastThemeMark, usesTheme: state.appearance.usesTheme, forTheme: { self.updateTheme(state.appearance.theme) }, forDefaultTheme: { self.updateTheme(Marked(Theme.default)) } ) self.usesTheme = state.appearance.usesTheme guard self.shouldReloadData(for: state, themeChanged: themeChanged) else { return } self.showsFileIcon = state.appearance.showsFileIcon self.isShowHidden = state.fileBrowserShowHidden self.lastFileSystemUpdateMark = state.lastFileSystemUpdate.mark if self.root.url != state.cwd { self.root = Node(url: state.cwd) try? self.fileMonitor.monitor(url: state.cwd) { [weak self] url in self?.handleFileSystemChanges(url) } } self.reloadRoot() } self.initContextMenu() self.initBindings() self.reloadRoot() } func cleanup() { self.context.unsubscribe(uuid: self.uuid) self.unbindTreeController() } // We cannot use outlineView(_:willDisplayOutlineCell:for:item:) delegate // method to customize the disclosure triangle in a view-based NSOutlineView. // See https://stackoverflow.com/a/20454413 override func makeView( withIdentifier identifier: NSUserInterfaceItemIdentifier, owner: Any? ) -> NSView? { let result = super.makeView(withIdentifier: identifier, owner: owner) if identifier == NSOutlineView.disclosureButtonIdentifier { let triangleButton = result as? NSButton triangleButton?.image = self.triangleClosed triangleButton?.alternateImage = self.triangleOpen } return result } func select(_ url: URL) { guard let childrenOfRoot = self.treeController.arrangedObjects.children else { return } var stack = [NSTreeNode]() // NSTreeController.arrangedObjects has no Node. for childOfRoot in childrenOfRoot { guard let node = childOfRoot.node else { continue } if node.url == url { self.select(treeNode: childOfRoot) return } if node.url.isAncestor(of: url) { self.expandItem(childOfRoot) stack.append(contentsOf: childOfRoot.children ?? []) break } } while let item = stack.popLast() { self.expandItem(item) guard let node = item.node else { continue } if node.url == url { self.select(treeNode: item) return } if node.url.isAncestor(of: url) { stack.append(contentsOf: item.children ?? []) } } } func unbindTreeController() { // Forbid addition and removal now. // See comment in FileOutlineView.handleRemoval. self.treeController.isEditable = false self.treeController.unbind(.contentArray) self.unbind(.content) self.unbind(.selectionIndexPaths) } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private nonisolated func handleFileSystemChanges(_ changedUrl: URL) { Task { @MainActor in guard let changeTreeNode = self.changedTreeNode(for: changedUrl) else { return } let newChildUrls = Set(self.childUrls(for: changedUrl)) self.handleRemoval(changeTreeNode: changeTreeNode, newChildUrls: newChildUrls) self.handleAddition(changeTreeNode: changeTreeNode, newChildUrls: newChildUrls) } } private let context: ReduxContext private let emit: (UuidAction) -> Void private let mainWinUuid: UUID private var root: Node private var cwd: URL { self.root.url } private let treeController = NSTreeController() private let fileMonitor = FileMonitor() private var cachedColumnWidth = 20.0 private var usesTheme: Bool private var lastFileSystemUpdateMark = Token() private var showsFileIcon: Bool private var isShowHidden: Bool private var triangleClosed: NSImage private var triangleOpen: NSImage private let logger = Logger(subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.ui) private func initContextMenu() { // Loading the nib file will set self.menu. guard Bundle.main.loadNibNamed( NSNib.Name("FileBrowserMenu"), owner: self, topLevelObjects: nil ) else { self.logger.error("FileBrowserMenu.xib could not be loaded") return } self.menu?.items.forEach { $0.target = self } self.doubleAction = #selector(FileOutlineView.doubleClickAction) } private func initBindings() { self.treeController.childrenKeyPath = "children" self.treeController.leafKeyPath = "isLeaf" self.treeController.countKeyPath = "childrenCount" self.treeController.objectClass = Node.self self.treeController.avoidsEmptySelection = false self.treeController.preservesSelection = true self.treeController.sortDescriptors = [ NSSortDescriptor(key: "isLeaf", ascending: true), // Folders first, NSSortDescriptor(key: "displayName", ascending: true), // then, name ] // The following will create a retain cycle. The superview *must* unbind // in deinit. See deinit of FileBrowser self.treeController.bind(.contentArray, to: self, withKeyPath: "content") self.bind(.content, to: self.treeController, withKeyPath: "arrangedObjects") self.bind(.selectionIndexPaths, to: self.treeController, withKeyPath: "selectionIndexPaths") } private func changedTreeNode(for url: URL) -> NSTreeNode? { if url == self.cwd { return self.treeController.arrangedObjects } let cwdCompsCount = self.cwd.pathComponents.count guard cwdCompsCount <= url.pathComponents.count else { return nil } let comps = url.pathComponents.suffix(cwdCompsCount) let rootTreeNode = self.treeController.arrangedObjects let changedTreeNode = comps.reduce(rootTreeNode) { prev, comp in prev.children?.first { child in child.node?.displayName == comp } ?? prev } guard let changeNode = changedTreeNode.node else { return nil } guard changeNode.url == url, changeNode.children != nil else { return nil } return changedTreeNode } private func handleAddition(changeTreeNode: NSTreeNode, newChildUrls: Set) { // See comment in FileOutlineView.handleRemoval. guard self.treeController.isEditable else { return } let existingUrls = changeTreeNode.children?.compactMap { $0.node?.url } ?? [] let newNodes = newChildUrls.subtracting(existingUrls).map(Node.init) let newIndexPaths = (0..) { // FileOutlineView is deinit'ed a bit after Neovim is closed. // If Neovim deletes for example a temporary file, then handleRemoval is // called after the self.content is frozen. Thus, we make the controller // not editable when unbinding, see FileOutlineView.unbindTreeController, // and check here before modifying. guard self.treeController.isEditable else { return } let indexPathsToRemove = changeTreeNode .children? .filter { child in guard let url = child.node?.url else { return true } return newChildUrls.contains(url) == false } .map(\.indexPath) ?? [] #if DEBUG changeTreeNode .children? .filter { child in guard let url = child.node?.url else { return true } return newChildUrls.contains(url) == false } .forEach { treeNode in dlog.debug(treeNode.node) } #endif self.treeController.removeObjects(atArrangedObjectIndexPaths: indexPathsToRemove) } private func childUrls(for url: URL) -> [URL] { let urls = FileUtils.directDescendants(of: url).sorted { lhs, rhs in lhs.lastPathComponent < rhs.lastPathComponent } if self.isShowHidden { return urls } return urls.filter { !$0.isHidden } } private func childNodes(for node: Node) -> [Node] { if node.isChildrenScanned { return node.children ?? [] } let nodes = FileUtils.directDescendants(of: node.url).map(Node.init) if self.isShowHidden { return nodes } return nodes.filter { !$0.isHidden } } private func reloadRoot() { // See comment in FileOutlineView.handleRemoval. guard self.treeController.isEditable else { return } let children = self.childNodes(for: self.root) self.root.children = children self.content.removeAll() self.content.append(contentsOf: children) } private func select(treeNode: NSTreeNode) { let targetRow = self.row(forItem: treeNode) self.selectRowIndexes(IndexSet(integer: targetRow), byExtendingSelection: false) self.scrollRowToVisible(targetRow) } private func updateTheme(_ theme: Marked) { self.theme = theme.payload self.enclosingScrollView?.backgroundColor = self.theme.background self.backgroundColor = self.theme.background self.triangleClosed = Icon.chevronRight.asImage( dimension: triangleImageSize, style: .filled, color: self.theme.directoryForeground ) self.triangleOpen = Icon.expandMore.asImage( dimension: triangleImageSize, style: .filled, color: self.theme.directoryForeground ) self.lastThemeMark = theme.mark } private func shouldReloadData(for state: StateType, themeChanged: Bool = false) -> Bool { if self.isShowHidden != state.fileBrowserShowHidden { return true } if themeChanged { return true } if self.showsFileIcon != state.appearance.showsFileIcon { return true } if state.cwd != self.cwd { return true } return false } private func node(from item: Any?) -> Node? { (item as? NSTreeNode)?.node } } // MARK: - Actions extension FileOutlineView { @IBAction func doubleClickAction(_: Any?) { let clickedTreeNode = self.clickedItem guard let node = self.node(from: clickedTreeNode) else { return } if node.isDir { self.toggle(item: clickedTreeNode) } else { self.emit(UuidAction(uuid: self.mainWinUuid, action: .open(url: node.url, mode: .default))) } } @IBAction func openInNewTab(_: Any?) { guard let node = self.node(from: self.clickedItem) else { return } self.emit(UuidAction(uuid: self.mainWinUuid, action: .open(url: node.url, mode: .newTab))) } @IBAction func openInCurrentTab(_: Any?) { guard let node = self.node(from: self.clickedItem) else { return } self.emit(UuidAction(uuid: self.mainWinUuid, action: .open(url: node.url, mode: .currentTab))) } @IBAction func openInHorizontalSplit(_: Any?) { guard let node = self.node(from: self.clickedItem) else { return } self.emit(UuidAction( uuid: self.mainWinUuid, action: .open(url: node.url, mode: .horizontalSplit) )) } @IBAction func openInVerticalSplit(_: Any?) { guard let node = self.node(from: self.clickedItem) else { return } self.emit(UuidAction( uuid: self.mainWinUuid, action: .open(url: node.url, mode: .verticalSplit) )) } @IBAction func newFile(_: Any?) { guard let node = self.node(from: self.clickedItem) else { return } guard node.url.hasDirectoryPath else { return } let panel = NSSavePanel() panel.directoryURL = node.url panel.nameFieldLabel = "Filename" panel.prompt = "Open" panel.showsTagField = false panel.beginSheetModal(for: self.window!) { result in guard result == .OK else { return } let showAlert: () -> Void = { let alert = NSAlert() alert.addButton(withTitle: "OK") alert.messageText = "Invalid File Name" alert .informativeText = "The file name you have entered cannot be used. Please use a different name." alert.alertStyle = .warning alert.runModal() } guard let url = panel.url else { showAlert() return } self.emit(UuidAction(uuid: self.mainWinUuid, action: .open(url: url, mode: .newTab))) } } @IBAction func deleteFile(_: Any?) { guard let node = self.node(from: self.clickedItem) else { return } let fileManager = FileManager.default let showAlert: () -> Void = { let alert = NSAlert() alert.addButton(withTitle: "OK") alert.messageText = "Could not move file to Trash" alert.alertStyle = .warning alert.runModal() } do { try fileManager.trashItem(at: node.url, resultingItemURL: nil) } catch { showAlert() return } self.emit(UuidAction(uuid: self.mainWinUuid, action: .refresh)) } @IBAction func setAsWorkingDirectory(_: Any?) { guard let node = self.node(from: self.clickedItem) else { return } guard node.url.hasDirectoryPath else { return } self.emit(UuidAction(uuid: self.mainWinUuid, action: .setAsWorkingDirectory(node.url))) } } // MARK: - NSOutlineViewDelegate extension FileOutlineView { func outlineView(_: NSOutlineView, rowViewForItem _: Any) -> NSTableRowView? { let view = self.makeView( withIdentifier: NSUserInterfaceItemIdentifier("file-row-view"), owner: self ) as? ThemedTableRow ?? ThemedTableRow(withIdentifier: "file-row-view", themedView: self) return view } func outlineView(_: NSOutlineView, viewFor _: NSTableColumn?, item: Any) -> NSView? { guard let node = self.node(from: item) else { return nil } let cellView = self.makeView( withIdentifier: NSUserInterfaceItemIdentifier("file-cell-view"), owner: self ) as? ThemedTableCell ?? ThemedTableCell(withIdentifier: "file-cell-view") cellView.isDir = node.isDir cellView.text = node.displayName let icon = FileUtils.icon(forUrl: node.url) cellView.image = node.isHidden ? icon?.tinting(with: NSColor.white.withAlphaComponent(0.4)) : icon return cellView } func outlineView(_: NSOutlineView, heightOfRowByItem _: Any) -> CGFloat { 20 } func outlineView(_: NSOutlineView, shouldExpandItem item: Any) -> Bool { guard let node = self.node(from: item) else { return false } if node.isChildrenScanned { return true } node.children = FileUtils.directDescendants(of: node.url).map(Node.init) return true } func outlineView(_: NSOutlineView, didAdd rowView: NSTableRowView, forRow row: Int) { guard let cellWidth = (rowView.view(atColumn: 0) as? NSTableCellView)?.fittingSize.width else { return } let level = self.level(forRow: row).cgf let width = level * self.indentationPerLevel + cellWidth + columnWidthRightPadding self.cachedColumnWidth = max(self.cachedColumnWidth, width) self.tableColumns[0].width = self.cachedColumnWidth let rv = rowView as? ThemedTableRow guard rv?.themeToken != self.lastThemeMark else { return } let triangleView = rv?.triangleView triangleView?.image = self.triangleClosed triangleView?.alternateImage = self.triangleOpen rv?.themeToken = self.lastThemeMark } } // MARK: - NSUserInterfaceValidations extension FileOutlineView { override func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool { guard let clickedNode = self.node(from: self.clickedItem) else { return true } let isValid: Bool = switch item.action { case #selector(self.setAsWorkingDirectory(_:)): clickedNode.url.hasDirectoryPath case #selector(self.newFile(_:)): clickedNode.url.hasDirectoryPath default: true } return isValid } } // MARK: - NSView extension FileOutlineView { override func keyDown(with event: NSEvent) { guard let char = event.charactersIgnoringModifiers?.first else { super.keyDown(with: event) return } guard let node = self.node(from: self.selectedItem) else { super.keyDown(with: event) return } switch char { case " ", "\r": // Why "\r" and not "\n"? if node.url.hasDirectoryPath || node.url.isPackage { self.toggle(item: node) } else { self.emit(UuidAction(uuid: self.mainWinUuid, action: .open(url: node.url, mode: .newTab))) } default: super.keyDown(with: event) } } } final class Node: NSObject, Comparable { static func < (lhs: Node, rhs: Node) -> Bool { lhs.displayName < rhs.displayName } @objc dynamic var url: URL @objc dynamic var isLeaf: Bool @objc dynamic var isHidden: Bool @objc dynamic var children: [Node]? @objc dynamic var childrenCount: Int { self.children?.count ?? -1 } @objc dynamic var displayName: String { self.url.lastPathComponent } var isDir: Bool { !self.isLeaf } var isChildrenScanned = false override var description: String { "" } override var hash: Int { self.url.hashValue } init(url: URL) { self.url = url self.isLeaf = !url.hasDirectoryPath self.isHidden = url.isHidden } } private extension NSTreeNode { var node: Node? { self.representedObject as? Node } } private let columnWidthRightPadding = 40.0 private let triangleImageSize = 18.0 ================================================ FILE: VimR/VimR/FoundationCommons.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import os extension URL { var direntType: Int16 { if self.isRegularFile { return Int16(DT_REG) } if self.hasDirectoryPath { return Int16(DT_DIR) } return Int16(DT_UNKNOWN) } } ================================================ FILE: VimR/VimR/FuzzySearch.xcdatamodel/contents ================================================ ================================================ FILE: VimR/VimR/FuzzySearchService.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Commons @preconcurrency import CoreData import Foundation import Ignore import Misc import os extension ScoredUrl: @unchecked Sendable {} extension FileItem: @unchecked Sendable {} final class FuzzySearchService: @unchecked Sendable { typealias ScoredUrlsCallback = @Sendable ([ScoredUrl]) -> Void var usesVcsIgnores = true { willSet { self.stopScanScore() } didSet { self.queue.sync { self.deleteAllFiles() self.ensureRootFileInStore() } } } func cleanUp() { try? self.coreDataStack.deleteStore() } func stopScanScore() { self.stopLock.lock() defer { self.stopLock.unlock() } self.stop = true } func scanScore( for pattern: String, beginCallback: @Sendable @escaping () -> Void, endCallback: @Sendable @escaping () -> Void, callback: @Sendable @escaping ([ScoredUrl]) -> Void ) { self.queue.async { dlog.debug("Starting fuzzy search for \(pattern) in \(self.root)") beginCallback() defer { endCallback() } let ctx = self.writeContext ctx.performAndWait { self.stopLock.lock() self.stop = false self.stopLock.unlock() let matcher = FzyMatcher(needle: pattern) self.scanScoreSavedFiles(matcher: matcher, context: ctx, callback: callback) if self.shouldStop() { return } self.scanScoreFilesNeedScanning(matcher: matcher, context: ctx, callback: callback) } dlog.debug("Finished fuzzy search for \(pattern) in \(self.root)") } } private func scanScoreSavedFiles( matcher: FzyMatcher, context: NSManagedObjectContext, callback: ScoredUrlsCallback ) { let predicate = NSPredicate(format: "direntType != %d", DT_DIR) let countReq = FileItem.fetchRequest() countReq.predicate = predicate countReq.includesSubentities = false guard let count = try? context.count(for: countReq) else { self.logger.error("Could not get count of Files") return } dlog.debug("Scoring \(count) Files for pattern \(matcher.needle)") let urlSorter = NSSortDescriptor(key: "url", ascending: true) let fetchReq = FileItem.fetchRequest() fetchReq.fetchLimit = coreDataBatchSize fetchReq.sortDescriptors = [urlSorter] fetchReq.predicate = predicate let chunkCount = Int(ceil(Double(count) / Double(coreDataBatchSize))) for chunkIndex in 0.. FileItem in self.file(fromUrl: url, in: context) } saveCounter += childFiles.count counter += childFiles.count folder.addChildren(Set(childFiles)) folder.needsScanChildren = false let childFolders = childFiles.filter { $0.direntType == DT_DIR } let childBatons = childFolders.map { self.ignoreService.ignore(for: $0.url!) } stack.append(contentsOf: zip(childBatons, childFolders)) if saveCounter > coreDataBatchSize { dlog.debug( "Flushing and scoring \(saveCounter) Files, stack has \(stack.count) Files" ) self.scoreAllRegisteredFiles( matcher: matcher, context: context, callback: callback ) self.saveAndReset(context: context) saveCounter = 0 // We have to re-fetch the Files in stack to get the parent-children relationship right. // Since objectID survives NSManagedObjectContext.reset(), we can re-populate (re-fetch) // stack using the objectIDs. let ids = stack.map(\.1.objectID) stack = Array(zip( stack.map(\.0), ids.map { // swiftlint:disable:next force_cast context.object(with: $0) as! FileItem } )) } } } dlog.debug("Flushing and scoring last \(saveCounter) Files") self.scoreAllRegisteredFiles(matcher: matcher, context: context, callback: callback) self.saveAndReset(context: context) dlog.debug("Stored \(counter) Files") } private func saveAndReset(context: NSManagedObjectContext) { do { try context.save() } catch { self.logger.error("There was an error saving the context: \(error)") } context.reset() } private func shouldStop(_ body: (() -> Void)? = nil) -> Bool { self.stopLock.lock() defer { self.stopLock.unlock() } if self.stop { body?() return true } return false } private func scoreAllRegisteredFiles( matcher: FzyMatcher, context: NSManagedObjectContext, callback: ScoredUrlsCallback ) { let files = context.registeredObjects .compactMap { $0 as? FileItem } .filter { $0.direntType != DT_DIR } dlog.debug("Scoring \(files.count) Files") self.scoreFiles(matcher: matcher, files: files, callback: callback) } private func scoreFiles( matcher: FzyMatcher, files: [FileItem], callback: ScoredUrlsCallback ) { let matchFullPath = matcher.needle.contains("/") let count = files.count let chunkCount = Int(ceil(Double(count) / Double(fuzzyMatchChunkSize))) DispatchQueue.concurrentPerform(iterations: chunkCount) { chunkIndex in let start = Swift.min(chunkIndex * fuzzyMatchChunkSize, count) let end = Swift.min(start + fuzzyMatchChunkSize, count) if self.shouldStop() { return } let scoreThreshold = 1.0 callback(files[start.. NSFetchRequest { let req: NSFetchRequest = FileItem.fetchRequest() req.predicate = NSPredicate(format: format, argumentArray: arguments) return req } /// Call this in self.queue.(a)sync private func deleteAllFiles() { let delReq = NSBatchDeleteRequest( fetchRequest: NSFetchRequest(entityName: String(describing: FileItem.self)) ) let ctx = self.writeContext ctx.performAndWait { do { try ctx.execute(delReq) } catch { self.logger.error("Could not delete all Files: \(error)") } } } private func file(fromUrl url: URL, in context: NSManagedObjectContext) -> FileItem { let file = FileItem(context: context) file.url = url file.direntType = url.direntType file.isHidden = url.isHidden file.isPackage = url.isPackage if url.hasDirectoryPath { file.needsScanChildren = true } return file } #if DEBUG // swiftlint:disable no_direct_standard_out_logs func debug() { let req = self.fileFetchRequest("needsScanChildren == TRUE AND direntType == %d", [DT_DIR]) self.queue.async { let moc = self.writeContext moc.performAndWait { do { let result = try moc.fetch(req) Swift.print("Files with needsScanChildren = true:") result.forEach { Swift.print("\t\(String(describing: $0.url))") } Swift.print("--- \(result.count)") } catch { Swift.print(error) } } } } // swiftlint:enable no_direct_standard_out_logs #endif private var stop = false private let stopLock = NSLock() private let queue = DispatchQueue( label: "scan-score-queue", qos: .userInitiated, target: .global(qos: .userInitiated) ) private let fileMonitor = FileMonitor() private let coreDataStack: CoreDataStack private let writeContext: NSManagedObjectContext private let ignoreService: IgnoreService private var root: URL private let logger = Logger( subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.service ) } private let fuzzyMatchChunkSize = 100 private let coreDataBatchSize = 10000 ================================================ FILE: VimR/VimR/GeneralPref.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout final class GeneralPref: PrefPane, UiComponent, NSTextFieldDelegate { typealias StateType = AppState enum Action { case setOpenOnLaunch(Bool) case setOpenFilesFromApplications(AppState.OpenFilesFromApplicationsAction) case setAfterLastWindowAction(AppState.AfterLastWindowAction) case setActivateAsciiImInNormalModeAction(Bool) case setOpenOnReactivation(Bool) case setDefaultUsesVcsIgnores(Bool) case setCustomMarkdownProcessor(String) } let uuid = UUID() override var displayName: String { "General" } override var pinToContainer: Bool { true } override func windowWillClose() { self.customMarkdownProcessorAction() } required init(context: ReduxContext, state: StateType) { self.emit = context.actionEmitter.typedEmit() super.init(frame: .zero) self.addViews() self.openWhenLaunchingCheckbox.boolState = state.openNewMainWindowOnLaunch self.activateAsciiImInNormalModeCheckbox.boolState = state.activateAsciiImInNormalMode self.openOnReactivationCheckbox.boolState = state.openNewMainWindowOnReactivation self.defaultUsesVcsIgnoresCheckbox.boolState = state.openQuickly.defaultUsesVcsIgnores self.openFilesFromApplicationsAction = state.openFilesFromApplicationsAction self.openFilesFromApplicationsPopup .selectItem( at: AppState.OpenFilesFromApplicationsAction.allCases .firstIndex(of: state.openFilesFromApplicationsAction) ?? 0 ) self.lastWindowAction = state.afterLastWindowAction self.afterLastWindowPopup .selectItem(at: indexToAfterLastWindowAction.firstIndex(of: state.afterLastWindowAction) ?? 0) self.customMarkdownProcessor = state.mainWindowTemplate.customMarkdownProcessor self.customMarkdownProcessorField.stringValue = state.mainWindowTemplate.customMarkdownProcessor context.subscribe(uuid: self.uuid) { state in if self.openWhenLaunchingCheckbox.boolState != state.openNewMainWindowOnLaunch { self.openWhenLaunchingCheckbox.boolState = state.openNewMainWindowOnLaunch } if self.openOnReactivationCheckbox.boolState != state.openNewMainWindowOnReactivation { self.openOnReactivationCheckbox.boolState = state.openNewMainWindowOnReactivation } if self.openFilesFromApplicationsAction != state.openFilesFromApplicationsAction { self.openFilesFromApplicationsPopup.selectItem( at: AppState.OpenFilesFromApplicationsAction.allCases .firstIndex(of: state.openFilesFromApplicationsAction) ?? 0 ) self.openFilesFromApplicationsAction = state.openFilesFromApplicationsAction } if self.lastWindowAction != state.afterLastWindowAction { self.afterLastWindowPopup.selectItem( at: indexToAfterLastWindowAction.firstIndex(of: state.afterLastWindowAction) ?? 0 ) } self.lastWindowAction = state.afterLastWindowAction } } private let emit: (Action) -> Void private var openFilesFromApplicationsAction = AppState.OpenFilesFromApplicationsAction.inNewWindow private var lastWindowAction = AppState.AfterLastWindowAction.doNothing private let activateAsciiImInNormalModeCheckbox = NSButton(forAutoLayout: ()) private let openWhenLaunchingCheckbox = NSButton(forAutoLayout: ()) private let openOnReactivationCheckbox = NSButton(forAutoLayout: ()) private let defaultUsesVcsIgnoresCheckbox = NSButton(forAutoLayout: ()) private let openFilesFromApplicationsPopup = NSPopUpButton(forAutoLayout: ()) private let afterLastWindowPopup = NSPopUpButton(forAutoLayout: ()) private var customMarkdownProcessor = "" private let customMarkdownProcessorField = NSTextField(forAutoLayout: ()) @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private func addViews() { let paneTitle = self.paneTitleTextField(title: "General") let openUntitledWindowTitle = self.titleTextField(title: "Open Untitled Window:") self.configureCheckbox( button: self.openWhenLaunchingCheckbox, title: "On launch", action: #selector(GeneralPref.openUntitledWindowWhenLaunchingAction) ) self.configureCheckbox( button: self.openOnReactivationCheckbox, title: "On re-activation", action: #selector(GeneralPref.openUntitledWindowOnReactivationAction) ) self.configureCheckbox( button: self.defaultUsesVcsIgnoresCheckbox, title: "Use VCS Ignores", action: #selector(GeneralPref.defaultUsesVcsIgnoresAction) ) let whenLaunching = self.openWhenLaunchingCheckbox let onReactivation = self.openOnReactivationCheckbox let openFilesFromApplicationsTitle = self.titleTextField(title: "Open files from applications:") self.openFilesFromApplicationsPopup.target = self self.openFilesFromApplicationsPopup .action = #selector(GeneralPref.afterOpenFilesFromApplicationsAction) self.openFilesFromApplicationsPopup.addItems(withTitles: [ "In a New Window", "In the Current Window", ]) let openFilesFromApplicationsInfo = self.infoTextField(markdown: #""" This applies to files opened from the Finder \ (e.g. by double-clicking on a file or by dragging a file onto the VimR dock icon) \ or from external programs such as Xcode. """#) let afterLastWindowTitle = self.titleTextField(title: "After Last Window Closes:") let lastWindow = self.afterLastWindowPopup lastWindow.target = self lastWindow.action = #selector(GeneralPref.afterLastWindowAction) lastWindow.addItems(withTitles: [ "Do Nothing", "Hide", "Quit", ]) let activateAsciiImTitle = self.titleTextField(title: "When entering Normal Mode:") self.configureCheckbox( button: self.activateAsciiImInNormalModeCheckbox, title: "Activate ASCII-compatible Input Method", action: #selector(GeneralPref.activateAsciiImInNormalModeAction) ) let asciiIm = self.activateAsciiImInNormalModeCheckbox let asciiInfo = self.infoTextField(markdown: #""" When checked, VimR will automatically select the last ASCII-compatible input method\ when you enter Normal mode. When you re-enter Insert mode, VimR will select\ the last input method used in the Insert mode. """#) let ignoreListTitle = self.titleTextField(title: "Open Quickly:") let ignoreInfo = self.infoTextField(markdown: #""" When checked, the ignore files of VCSs, e.g. `gitignore`, will we used to ignore files.\ This checkbox will set the initial value for each VimR window.\ You can change this setting for each VimR window in the Open Quickly window. """#) let customMarkdownProcessorTitle = self.titleTextField(title: "Custom Markdown Processor:") let customMarkdownProcessorField = self.customMarkdownProcessorField NotificationCenter.default.addObserver( forName: NSControl.textDidEndEditingNotification, object: customMarkdownProcessorField, queue: nil ) { [weak self] _ in Task { @MainActor in self?.customMarkdownProcessorAction() } } let cliToolTitle = self.titleTextField(title: "CLI Tool:") let cliToolButton = NSButton(forAutoLayout: ()) cliToolButton.title = "Copy 'vimr' CLI Tool..." cliToolButton.bezelStyle = .rounded cliToolButton.isBordered = true cliToolButton.setButtonType(.momentaryPushIn) cliToolButton.target = self cliToolButton.action = #selector(GeneralPref.copyCliTool(_:)) let cliToolInfo = self.infoTextField( markdown: #""" Put the executable `vimr` in your `$PATH` and execute `vimr -h` for help.\ You need `python3` executable in your `$PATH`. """# ) let vcsIg = self.defaultUsesVcsIgnoresCheckbox self.addSubview(paneTitle) self.addSubview(openUntitledWindowTitle) self.addSubview(whenLaunching) self.addSubview(onReactivation) self.addSubview(vcsIg) self.addSubview(ignoreListTitle) self.addSubview(ignoreInfo) self.addSubview(openFilesFromApplicationsTitle) self.addSubview(self.openFilesFromApplicationsPopup) self.addSubview(openFilesFromApplicationsInfo) self.addSubview(afterLastWindowTitle) self.addSubview(lastWindow) self.addSubview(activateAsciiImTitle) self.addSubview(asciiIm) self.addSubview(asciiInfo) self.addSubview(cliToolTitle) self.addSubview(cliToolButton) self.addSubview(cliToolInfo) self.addSubview(customMarkdownProcessorTitle) self.addSubview(customMarkdownProcessorField) paneTitle.autoPinEdge(toSuperviewEdge: .top, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) openUntitledWindowTitle.autoAlignAxis(.baseline, toSameAxisOf: whenLaunching, withOffset: 0) openUntitledWindowTitle.autoPinEdge(.right, to: .right, of: afterLastWindowTitle) openUntitledWindowTitle.autoPinEdge( toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual ) whenLaunching.autoPinEdge(.top, to: .bottom, of: paneTitle, withOffset: 18) whenLaunching.autoPinEdge(.left, to: .right, of: openUntitledWindowTitle, withOffset: 5) whenLaunching.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) onReactivation.autoPinEdge(.top, to: .bottom, of: whenLaunching, withOffset: 5) onReactivation.autoPinEdge(.left, to: .left, of: whenLaunching) onReactivation.autoPinEdge( toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual ) openFilesFromApplicationsTitle.autoAlignAxis( .baseline, toSameAxisOf: self.openFilesFromApplicationsPopup ) openFilesFromApplicationsTitle.autoPinEdge(.right, to: .right, of: openUntitledWindowTitle) openFilesFromApplicationsTitle.autoPinEdge( toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual ) self.openFilesFromApplicationsPopup.autoPinEdge( .top, to: .bottom, of: onReactivation, withOffset: 18 ) self.openFilesFromApplicationsPopup.autoPinEdge( .left, to: .right, of: openFilesFromApplicationsTitle, withOffset: 5 ) openFilesFromApplicationsInfo.autoPinEdge( .top, to: .bottom, of: self.openFilesFromApplicationsPopup, withOffset: 5 ) openFilesFromApplicationsInfo.autoPinEdge(toSuperviewEdge: .right, withInset: 18) openFilesFromApplicationsInfo.autoPinEdge( .left, to: .left, of: self.openFilesFromApplicationsPopup ) afterLastWindowTitle.autoAlignAxis(.baseline, toSameAxisOf: lastWindow) afterLastWindowTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18) lastWindow.autoPinEdge(.top, to: .bottom, of: openFilesFromApplicationsInfo, withOffset: 18) lastWindow.autoPinEdge(.left, to: .right, of: afterLastWindowTitle, withOffset: 5) activateAsciiImTitle.autoAlignAxis(.baseline, toSameAxisOf: asciiIm, withOffset: 0) activateAsciiImTitle.autoPinEdge(.right, to: .right, of: afterLastWindowTitle) activateAsciiImTitle.autoPinEdge( toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual ) asciiIm.autoPinEdge(.top, to: .bottom, of: lastWindow, withOffset: 18) asciiIm.autoPinEdge(.left, to: .right, of: activateAsciiImTitle, withOffset: 5) asciiIm.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) asciiInfo.autoPinEdge(.top, to: .bottom, of: asciiIm, withOffset: 5) asciiInfo.autoPinEdge(toSuperviewEdge: .right, withInset: 18) asciiInfo.autoPinEdge(.left, to: .left, of: asciiIm) ignoreListTitle.autoAlignAxis(.baseline, toSameAxisOf: vcsIg) ignoreListTitle.autoPinEdge(.right, to: .right, of: activateAsciiImTitle) ignoreListTitle.autoPinEdge( toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual ) vcsIg.autoPinEdge(.top, to: .bottom, of: asciiInfo, withOffset: 18) vcsIg.autoPinEdge(.left, to: .right, of: ignoreListTitle, withOffset: 5) ignoreInfo.autoPinEdge(.top, to: .bottom, of: vcsIg, withOffset: 5) ignoreInfo.autoPinEdge(toSuperviewEdge: .right, withInset: 18) ignoreInfo.autoPinEdge(.left, to: .left, of: vcsIg) cliToolTitle.autoAlignAxis(.baseline, toSameAxisOf: cliToolButton) cliToolTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual) cliToolTitle.autoPinEdge(.right, to: .right, of: openUntitledWindowTitle) cliToolButton.autoPinEdge(.top, to: .bottom, of: ignoreInfo, withOffset: 18) cliToolButton.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) cliToolButton.autoPinEdge(.left, to: .right, of: cliToolTitle, withOffset: 5) cliToolInfo.autoPinEdge(.top, to: .bottom, of: cliToolButton, withOffset: 5) cliToolInfo.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) cliToolInfo.autoPinEdge(.left, to: .right, of: cliToolTitle, withOffset: 5) customMarkdownProcessorTitle.autoAlignAxis( .baseline, toSameAxisOf: customMarkdownProcessorField ) customMarkdownProcessorTitle.autoPinEdge(.right, to: .right, of: openUntitledWindowTitle) customMarkdownProcessorTitle.autoPinEdge( toSuperviewEdge: .left, withInset: 18, relation: .greaterThanOrEqual ) customMarkdownProcessorField.autoPinEdge(.top, to: .bottom, of: cliToolInfo, withOffset: 18) customMarkdownProcessorField.autoPinEdge(toSuperviewEdge: .right, withInset: 18) customMarkdownProcessorField.autoPinEdge( .left, to: .right, of: customMarkdownProcessorTitle, withOffset: 5 ) } } // MARK: - Actions extension GeneralPref { @objc func copyCliTool(_: NSButton) { let panel = NSOpenPanel() panel.canChooseFiles = false panel.canChooseDirectories = true panel.beginSheetModal(for: self.window!) { result in guard result == .OK else { return } guard let vimrUrl = Bundle.main.url(forResource: "vimr", withExtension: nil) else { self.alert( title: "Something Went Wrong.", info: "The CLI tool 'vimr' could not be found. Please re-download VimR and try again." ) return } guard let targetUrl = panel.url?.appendingPathComponent("vimr") else { self.alert( title: "Something Went Wrong.", info: "The target directory could not be determined. Please try again with a different directory." ) return } do { try FileManager.default.copyItem(at: vimrUrl, to: targetUrl) } catch let err as NSError { self.alert(title: "Error copying 'vimr'", info: err.localizedDescription) } } } @objc func defaultUsesVcsIgnoresAction(_ sender: NSButton) { self.emit(.setDefaultUsesVcsIgnores(sender.boolState)) } @objc func openUntitledWindowWhenLaunchingAction(_: NSButton) { self.emit(.setOpenOnLaunch(self.openWhenLaunchingCheckbox.boolState)) } @objc func openUntitledWindowOnReactivationAction(_: NSButton) { self.emit(.setOpenOnReactivation(self.openOnReactivationCheckbox.boolState)) } @objc func afterOpenFilesFromApplicationsAction(_ sender: NSPopUpButton) { let index = sender.indexOfSelectedItem guard AppState.OpenFilesFromApplicationsAction.allCases.indices.contains(index) else { return } self.openFilesFromApplicationsAction = AppState.OpenFilesFromApplicationsAction.allCases[index] self.emit(.setOpenFilesFromApplications(self.openFilesFromApplicationsAction)) } @objc func afterLastWindowAction(_ sender: NSPopUpButton) { let index = sender.indexOfSelectedItem guard index >= 0, index <= 2 else { return } self.lastWindowAction = indexToAfterLastWindowAction[index] self.emit(.setAfterLastWindowAction(self.lastWindowAction)) } @objc func activateAsciiImInNormalModeAction(_: NSButton) { self.emit( .setActivateAsciiImInNormalModeAction( self.activateAsciiImInNormalModeCheckbox.boolState ) ) } private func customMarkdownProcessorAction() { let command = self.customMarkdownProcessorField.stringValue if command == self.customMarkdownProcessor { return } self.customMarkdownProcessor = command self.emit(.setCustomMarkdownProcessor(self.customMarkdownProcessor)) } private func alert(title: String, info: String) { let alert = NSAlert() alert.alertStyle = .warning alert.messageText = title alert.informativeText = info alert.runModal() } } private let indexToAfterLastWindowAction: [AppState.AfterLastWindowAction] = [ .doNothing, .hide, .quit, ] ================================================ FILE: VimR/VimR/GeneralPrefReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class GeneralPrefReducer: ReducerType { typealias StateType = AppState typealias ActionType = GeneralPref.Action func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action { case let .setOpenOnLaunch(value): state.openNewMainWindowOnLaunch = value case let .setOpenFilesFromApplications(action): state.openFilesFromApplicationsAction = action case let .setAfterLastWindowAction(action): state.afterLastWindowAction = action case let .setActivateAsciiImInNormalModeAction(value): state.activateAsciiImInNormalMode = value case let .setOpenOnReactivation(value): state.openNewMainWindowOnReactivation = value case let .setDefaultUsesVcsIgnores(value): state.openQuickly.defaultUsesVcsIgnores = value case let .setCustomMarkdownProcessor(command): state.mainWindowTemplate.customMarkdownProcessor = command state.mainWindows.keys.forEach { state.mainWindows[$0]?.customMarkdownProcessor = command } } return ReduceTuple(state: state, action: tuple.action, modified: true) } } ================================================ FILE: VimR/VimR/HtmlPreviewMiddleware.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Commons import Foundation final class HtmlPreviewMiddleware: MiddlewareType { static func selectFirstHtmlUrl(uuid: UUID) -> URL { FileUtils.tempDir().appendingPathComponent("\(uuid)-select-first.html") } typealias StateType = MainWindow.State typealias ActionType = UuidAction init() { // swiftlint:disable:next force_try self.selectFirstHtmlTemplate = try! String(contentsOf: Resources.selectFirstHtmlTemplateUrl) } func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction { { tuple in let result = reduce(tuple) if tuple.state.appearance.theme.mark != self.themeToken { self.updateCssOverrides(with: tuple.state.appearance.theme.payload) self.themeToken = tuple.state.appearance.theme.mark } self.updateCssOverrides(with: tuple.state.appearance.theme.payload) self.writeSelectFirstHtml(uuid: tuple.state.uuid) return result } } private func writeSelectFirstHtml(uuid: UUID) { let url = HtmlPreviewMiddleware.selectFirstHtmlUrl(uuid: uuid) try? self.selectFirstHtml.write(to: url, atomically: true, encoding: .utf8) } private func updateCssOverrides(with theme: Theme) { self.selectFirstHtml = self .selectFirstHtmlTemplate .replacingOccurrences(of: "{{ css-overrides }}", with: CssUtils.cssOverrides(with: theme)) } private var themeToken = Token() private var selectFirstHtml = "" private let selectFirstHtmlTemplate: String } ================================================ FILE: VimR/VimR/HtmlPreviewTool.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa @preconcurrency import EonilFSEvents import MaterialIcons import os import PureLayout import WebKit import Workspace private let fileSystemEventsLatency = 1.0 final class HtmlPreviewTool: NSView, UiComponent, WKNavigationDelegate { typealias StateType = MainWindow.State enum Action { case selectHtmlFile(URL) } let uuid = UUID() let innerCustomToolbar = InnerCustomToolbar() required init(context: ReduxContext, state: StateType) { self.context = context self.emit = context.actionEmitter.typedEmit() self.mainWinUuid = state.uuid self.webview = WKWebView(frame: .zero, configuration: WKWebViewConfiguration()) self.queue = DispatchQueue( label: String(reflecting: HtmlPreviewTool.self) + "-\(self.mainWinUuid)", qos: .userInitiated, target: .global(qos: .userInitiated) ) super.init(frame: .zero) self.configureForAutoLayout() self.webview.navigationDelegate = self self.innerCustomToolbar.htmlPreviewTool = self self.addViews() if let serverUrl = state.htmlPreview.server?.payload { self.webview.load(URLRequest(url: serverUrl)) } context.subscribe(uuid: self.uuid) { appState in guard let state = appState.mainWindows[self.mainWinUuid] else { return } if state.viewToBeFocused != nil, case .htmlPreview = state.viewToBeFocused! { self.beFirstResponder() } guard let serverUrl = state.htmlPreview.server else { self.monitor = nil return } if serverUrl.mark == self.mark { return } self.mark = serverUrl.mark self.reloadWebview(with: serverUrl.payload) guard let htmlFileUrl = state.htmlPreview.htmlFile else { return } do { self.monitor = try EonilFSEventStream( pathsToWatch: [htmlFileUrl.path], sinceWhen: EonilFSEventsEventID.getCurrentEventId(), latency: fileSystemEventsLatency, flags: [.fileEvents], handler: { [weak self] _ in Task { @MainActor in self?.reloadWebview(with: serverUrl.payload) } } ) self.monitor?.setDispatchQueue(self.queue) try self.monitor?.start() } catch { self.logger.error("Could not start file monitor for \(htmlFileUrl): \(error)") } self.innerCustomToolbar .selectHtmlFile.toolTip = (htmlFileUrl.path as NSString).abbreviatingWithTildeInPath } } func cleanup() { self.context.unsubscribe(uuid: self.uuid) self.monitor?.stop() self.monitor?.invalidate() } private func reloadWebview(with url: URL) { DispatchQueue.main.async { self.webview.evaluateJavaScript("document.body.scrollTop") { result, _ in self.scrollTop = result as? Int ?? 0 } } self.webview.load(URLRequest(url: url)) } private func addViews() { self.webview.configureForAutoLayout() self.addSubview(self.webview) self.webview.autoPinEdgesToSuperviewEdges() } private let context: ReduxContext private let emit: (UuidAction) -> Void private let mainWinUuid: UUID private var mark = Token() private var scrollTop = 0 private let webview: WKWebView private var monitor: EonilFSEventStream? private let logger = Logger(subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.ui) private let queue: DispatchQueue @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } @objc func selectHtmlFile(sender _: Any?) { let panel = NSOpenPanel() panel.canChooseDirectories = false panel.allowsMultipleSelection = false panel.beginSheetModal(for: self.window!) { result in guard result == .OK else { return } let urls = panel.urls guard urls.count == 1 else { return } self.emit(UuidAction(uuid: self.mainWinUuid, action: .selectHtmlFile(urls[0]))) } } func webView(_: WKWebView, didFinish _: WKNavigation!) { self.webview.evaluateJavaScript("document.body.scrollTop = \(self.scrollTop)") } } extension HtmlPreviewTool { class InnerCustomToolbar: CustomToolBar { fileprivate weak var htmlPreviewTool: HtmlPreviewTool? { didSet { self.selectHtmlFile.target = self.htmlPreviewTool } } let selectHtmlFile = NSButton(forAutoLayout: ()) init() { super.init(frame: .zero) self.configureForAutoLayout() self.addViews() } override func repaint(with theme: Workspace.Theme) { self.selectHtmlFile.image = Icon.description.asImage( dimension: InnerToolBar.iconDimension, style: .outlined, color: theme.toolbarForeground ) } private func addViews() { let selectHtmlFile = self.selectHtmlFile InnerToolBar.configureToStandardIconButton( button: selectHtmlFile, iconName: Icon.description, style: .outlined ) selectHtmlFile.toolTip = "Select the HTML file" selectHtmlFile.action = #selector(HtmlPreviewTool.selectHtmlFile) self.addSubview(selectHtmlFile) selectHtmlFile.autoPinEdge(toSuperviewEdge: .top) selectHtmlFile.autoPinEdge(toSuperviewEdge: .right, withInset: InnerToolBar.itemPadding) } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } } ================================================ FILE: VimR/VimR/HtmlPreviewToolReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class HtmlPreviewReducer { static let basePath = "tools/html-preview" static func serverUrl(baseUrl: URL, uuid: UUID) -> URL { baseUrl.appendingPathComponent("\(uuid)/\(self.basePath)/index.html") } let mainWindow: MainWindowReducer let htmlPreview: HtmlPreviewToolReducer init(baseServerUrl: URL) { self.mainWindow = MainWindowReducer(baseServerUrl: baseServerUrl) self.htmlPreview = HtmlPreviewToolReducer(baseServerUrl: baseServerUrl) } class MainWindowReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction init(baseServerUrl: URL) { self.baseServerUrl = baseServerUrl } func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case .setTheme: guard state.htmlPreview.htmlFile == nil else { return tuple } state.htmlPreview.server = Marked( HtmlPreviewReducer.serverUrl(baseUrl: self.baseServerUrl, uuid: state.uuid) ) default: return tuple } return ReduceTuple(state: state, action: tuple.action, modified: true) } private let baseServerUrl: URL } class HtmlPreviewToolReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction init(baseServerUrl: URL) { self.baseServerUrl = baseServerUrl } func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case let .selectHtmlFile(url): state.htmlPreview.htmlFile = url state.htmlPreview.server = Marked( HtmlPreviewReducer.serverUrl(baseUrl: self.baseServerUrl, uuid: state.uuid) ) } return ReduceTuple(state: state, action: tuple.action, modified: true) } private let baseServerUrl: URL } } ================================================ FILE: VimR/VimR/HttpServerMiddleware.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import os import Swifter final class HttpServerMiddleware { let htmlPreviewTool: HtmlPreviewToolMiddleware let htmlPreviewMainWindow: HtmlPreviewMainWindowMiddleware let markdownPreview: MarkdownPreviewMiddleware init(port: Int) { let localhost = "127.0.0.1" // We know that the URL is valid! let baseUrl = URL(string: "http://\(localhost):\(port)")! // swiftlint:disable force_try let cssOverridesTemplate = try! String(contentsOf: Resources.cssOverridesTemplateUrl) let selectFirstHtmlTemplate = try! String(contentsOf: Resources.selectFirstHtmlTemplateUrl) // swiftlint:enable force_try let server = HttpServer() server.listenAddressIPv4 = localhost let htmlTemplates = ( selectFirst: selectFirstHtmlTemplate, cssOverrides: cssOverridesTemplate ) self.htmlPreviewTool = HtmlPreviewToolMiddleware( server: server, baseUrl: baseUrl, cssUrl: Resources.cssUrl, htmlTemplates: htmlTemplates ) self.htmlPreviewMainWindow = HtmlPreviewMainWindowMiddleware( server: server, baseUrl: baseUrl, cssUrl: Resources.cssUrl, htmlTemplates: htmlTemplates ) self.markdownPreview = MarkdownPreviewMiddleware( server: server, baseUrl: baseUrl, cssUrl: Resources.cssUrl, baseCssUrl: Resources.baseCssUrl ) do { try server.start(in_port_t(port), forceIPv4: true) dlog.debug("VimR http server started on \(baseUrl)") // server["\(HtmlPreviewToolReducer.basePath)/:path"] = shareFilesFromDirectory( // Resources.previewUrl.path // ) // server.GET["\(HtmlPreviewToolReducer.basePath)/github-markdown.css"] = shareFile( // Resources.cssUrl.path // ) } catch { self.logger.error("Server could not be started on port \(port): \(error)") } } private let logger = Logger( subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.middleware ) class HtmlPreviewMainWindowMiddleware: MiddlewareType { typealias StateType = MainWindow.State typealias ActionType = UuidAction fileprivate init( server: HttpServer, baseUrl: URL, cssUrl: URL, htmlTemplates _: HtmlTemplates ) { self.server = server self.baseUrl = baseUrl self.cssUrl = cssUrl } func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction { { tuple in let result = reduce(tuple) guard case .setTheme = tuple.action.payload else { return result } let state = result.state guard state.htmlPreview.htmlFile == nil, let serverUrl = state.htmlPreview.server else { return result } let basePath = serverUrl.payload.deletingLastPathComponent() self.server.GET[basePath.appendingPathComponent("github-markdown.css").path] = shareFile( Resources.cssUrl.path ) self.server.GET[basePath.appendingPathComponent("base.css").path] = shareFile( Resources.baseCssUrl.path ) self.server.GET[serverUrl.payload.path] = shareFile( HtmlPreviewMiddleware.selectFirstHtmlUrl(uuid: state.uuid).path ) dlog.debug("Serving on \(self.fullUrl(with: serverUrl.payload.path)) the select first") return result } } private let server: HttpServer private let baseUrl: URL private let cssUrl: URL private func fullUrl(with path: String) -> URL { self.baseUrl.appendingPathComponent(path) } } class HtmlPreviewToolMiddleware: MiddlewareType { typealias StateType = MainWindow.State typealias ActionType = UuidAction fileprivate init( server: HttpServer, baseUrl: URL, cssUrl: URL, htmlTemplates _: HtmlTemplates ) { self.server = server self.baseUrl = baseUrl self.cssUrl = cssUrl } func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction { { tuple in let result = reduce(tuple) guard case .selectHtmlFile = tuple.action.payload else { return result } let state = result.state guard let serverUrl = state.htmlPreview.server, let htmlFileUrl = state.htmlPreview.htmlFile else { return result } let basePath = serverUrl.payload.deletingLastPathComponent().path self.server.GET[serverUrl.payload.path] = shareFile(htmlFileUrl.path) self.server["\(basePath)/:path"] = shareFilesFromDirectory(htmlFileUrl.parent.path) dlog.debug( "Serving on \(self.fullUrl(with: serverUrl.payload.path)) the HTML file \(htmlFileUrl)" ) return result } } private let server: HttpServer private let baseUrl: URL private let cssUrl: URL private func fullUrl(with path: String) -> URL { self.baseUrl.appendingPathComponent(path) } } class MarkdownPreviewMiddleware: MiddlewareType { typealias StateType = MainWindow.State typealias ActionType = UuidAction fileprivate init(server: HttpServer, baseUrl: URL, cssUrl: URL, baseCssUrl: URL) { self.server = server self.baseUrl = baseUrl self.cssUrl = cssUrl self.baseCssUrl = baseCssUrl } func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction { { tuple in let result = reduce(tuple) let uuidAction = tuple.action switch uuidAction.payload { case .newCurrentBuffer, .bufferWritten, .setTheme: break default: return result } let preview = result.state.preview guard let htmlUrl = preview.html, let serverUrl = preview.server else { return result } dlog.debug("Serving \(htmlUrl) on \(serverUrl)") let htmlBasePath = serverUrl.deletingLastPathComponent().path if let bufferUrl = preview.buffer { self.server["\(htmlBasePath)/:path"] = shareFilesFromDirectory( bufferUrl.deletingLastPathComponent().path ) } self.server.GET[serverUrl.path] = shareFile(htmlUrl.path) self.server.GET["\(htmlBasePath)/github-markdown.css"] = shareFile(self.cssUrl.path) self.server.GET["\(htmlBasePath)/base.css"] = shareFile(self.baseCssUrl.path) dlog.debug("Serving on \(self.fullUrl(with: serverUrl.path)) for markdown preview") return result } } private let server: HttpServer private let baseUrl: URL private let cssUrl: URL private let baseCssUrl: URL private func fullUrl(with path: String) -> URL { self.baseUrl.appendingPathComponent(path) } } } private typealias HtmlTemplates = ( selectFirst: String, cssOverrides: String ) ================================================ FILE: VimR/VimR/IgnoreService.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Commons import Foundation import Ignore import OrderedCollections final class IgnoreService { var root: URL { didSet { self.rootIgnore = Ignore(base: self.root, parent: Ignore.globalGitignore(base: self.root)) } } init(count: Int, root: URL) { self.root = root self.count = count self.queue = DispatchQueue( label: "\(String(reflecting: IgnoreService.self))-\(UUID().uuidString)", qos: .default, target: .global(qos: DispatchQoS.default.qosClass) ) self.storage = OrderedDictionary(minimumCapacity: count) self.rootIgnore = Ignore(base: root, parent: Ignore.globalGitignore(base: root)) } func ignore(for url: URL) -> Ignore? { self.queue.sync { if self.root == url { return self.rootIgnore } guard self.root.isAncestor(of: url) else { return nil } if let ignore = self.storage[url] { return ignore } if let parentIgnore = self.storage[url.parent] { let ignore = Ignore.parentOrIgnore(for: url, withParent: parentIgnore) self.storage[url] = ignore return ignore } // Since we descend the directory structure step by step, the ignore of the parent should // already be present. Most probably we won't land here... let rootPathComp = self.root.pathComponents let pathComp = url.pathComponents let lineage = pathComp.suffix(from: rootPathComp.count) var ancestorUrl = self.root var ancestorIgnore = self.rootIgnore for ancestorComponent in lineage { ancestorUrl = ancestorUrl.appendingPathComponent(ancestorComponent, isDirectory: true) if let cachedAncestorIc = self.storage[ancestorUrl] { ancestorIgnore = cachedAncestorIc } else { guard let ignore = Ignore.parentOrIgnore( for: ancestorUrl, withParent: ancestorIgnore ) else { return nil } self.set(ignoreCollection: ignore, forUrl: ancestorUrl) ancestorIgnore = ignore } } return ancestorIgnore } } private func set(ignoreCollection: Ignore, forUrl url: URL) { if self.storage.count == self.count { self.storage.removeFirst() } self.storage[url] = ignoreCollection } private var rootIgnore: Ignore? private let count: Int private var storage: OrderedDictionary private let queue: DispatchQueue } ================================================ FILE: VimR/VimR/ImageAndTextTableCell.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout final class ImageAndTextTableCell: NSTableCellView { private let _textField = NSTextField(forAutoLayout: ()) private let _imageView = NSImageView(forAutoLayout: ()) // MARK: - API static let font = NSFont.systemFont(ofSize: 12) static let widthWithoutText = (2 + 16 + 4 + 2).cgf static func width(with text: String) -> CGFloat { let attrStr = NSAttributedString( string: text, attributes: [NSAttributedString.Key.font: ImageAndTextTableCell.font] ) return self.widthWithoutText + attrStr.size().width } override var intrinsicContentSize: CGSize { CGSize( width: ImageAndTextTableCell.widthWithoutText + self._textField.intrinsicContentSize.width, height: max(self._textField.intrinsicContentSize.height, 16) ) } var attributedText: NSAttributedString { get { self.textField!.attributedStringValue } set { self.textField?.attributedStringValue = newValue } } var text: String { get { self.textField!.stringValue } set { self.textField?.stringValue = newValue } } var image: NSImage? { get { self.imageView?.image } set { self.imageView?.image = newValue } } init(withIdentifier identifier: String) { super.init(frame: CGRect.zero) self.identifier = NSUserInterfaceItemIdentifier(identifier) self.textField = self._textField self.imageView = self._imageView let textField = self._textField textField.font = ImageAndTextTableCell.font textField.isBordered = false textField.isBezeled = false textField.allowsEditingTextAttributes = false textField.isEditable = false textField.usesSingleLineMode = true textField.drawsBackground = false let imageView = self._imageView self.addSubview(textField) self.addSubview(imageView) imageView.autoPinEdge(toSuperviewEdge: .top, withInset: 2) imageView.autoPinEdge(toSuperviewEdge: .left, withInset: 2) imageView.autoSetDimension(.width, toSize: 16) imageView.autoSetDimension(.height, toSize: 16) textField.autoPinEdge(toSuperviewEdge: .top, withInset: 2) textField.autoPinEdge(toSuperviewEdge: .right, withInset: 2) textField.autoPinEdge(toSuperviewEdge: .bottom, withInset: 2) textField.autoPinEdge(.left, to: .right, of: imageView, withOffset: 4) } func reset() -> ImageAndTextTableCell { self.text = "" self.image = nil return self } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } ================================================ FILE: VimR/VimR/Info.plist ================================================ CFBundleDevelopmentRegion en CFBundleDocumentTypes CFBundleTypeName Document CFBundleTypeRole Editor LSItemContentTypes public.data LSTypeIsPackage 0 CFBundleTypeExtensions vim CFBundleTypeIconFile MacVim-vim CFBundleTypeName Vim Script File CFBundleTypeRole Editor LSIsAppleDefaultForType CFBundleTypeExtensions txt text utf8 CFBundleTypeIconFile MacVim-txt CFBundleTypeMIMETypes text/plain CFBundleTypeName Plain Text File CFBundleTypeRole Editor LSIsAppleDefaultForType CFBundleTypeExtensions tex sty cls ltx ins dtx CFBundleTypeIconFile MacVim-tex CFBundleTypeName TeX File CFBundleTypeRole Editor LSIsAppleDefaultForType CFBundleTypeExtensions h CFBundleTypeIconFile MacVim-h CFBundleTypeName C Header Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.c-header CFBundleTypeExtensions pch CFBundleTypeIconFile MacVim-h CFBundleTypeName C Precompiled Header Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.precompiled-c-header CFBundleTypeExtensions hh hp hpp hxx h++ CFBundleTypeIconFile MacVim-h CFBundleTypeName C++ Header Source File CFBundleTypeRole Editor LSIsAppleDefaultForType CFBundleTypeExtensions pch++ CFBundleTypeIconFile MacVim-h CFBundleTypeName C++ Precompiled Header Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.precompiled-c-plus-plus-header CFBundleTypeExtensions c CFBundleTypeIconFile MacVim-c CFBundleTypeName C Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.c-source CFBundleTypeExtensions m CFBundleTypeIconFile MacVim-m CFBundleTypeName Objective-C Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.objective-c-source CFBundleTypeExtensions mm CFBundleTypeIconFile MacVim-mm CFBundleTypeName Objective-C++ Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.objective-c-plus-plus-source CFBundleTypeExtensions cc cp cpp cxx c++ CFBundleTypeIconFile MacVim-cpp CFBundleTypeName C++ Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.c-plus-plus-source CFBundleTypeExtensions s asm CFBundleTypeName Assembly Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.assembler-source CFBundleTypeExtensions r CFBundleTypeName Rez Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.rez-source CFBundleTypeExtensions java jav CFBundleTypeIconFile MacVim-java CFBundleTypeName Java Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes com.sun.java-source CFBundleTypeExtensions l lm lmm lpp lxx CFBundleTypeName Lex Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.lex-source CFBundleTypeExtensions y ym ymm ypp yxx CFBundleTypeName Yacc Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.yacc-source CFBundleTypeExtensions defs CFBundleTypeName Mig Definition File CFBundleTypeRole Editor LSIsAppleDefaultForType CFBundleTypeExtensions exp CFBundleTypeName Symbol Export File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.symbol-export CFBundleTypeExtensions f for fpp f77 f90 f95 CFBundleTypeIconFile MacVim-f CFBundleTypeName Fortran Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.fortran-source CFBundleTypeExtensions pas CFBundleTypeName Pascal Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.pascal-source CFBundleTypeExtensions ada adb ads CFBundleTypeName Ada Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.ada-source CFBundleTypeExtensions html phtml shtml xhtml htm pht sht xht phtm shtm xhtm CFBundleTypeIconFile MacVim-html CFBundleTypeMIMETypes text/html CFBundleTypeName HTML Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.html CFBundleTypeExtensions xml rss tld pt cpt dtml CFBundleTypeIconFile MacVim-xml CFBundleTypeMIMETypes text/xml CFBundleTypeName XML Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes public.xml CFBundleTypeExtensions js htc jscript javascript CFBundleTypeIconFile MacVim-js CFBundleTypeMIMETypes text/javascript CFBundleTypeName JavaScript Source File CFBundleTypeRole Editor LSIsAppleDefaultForType LSItemContentTypes com.netscape.javascript-source CFBundleTypeExtensions pl pm pod perl CFBundleTypeIconFile MacVim-perl CFBundleTypeMIMETypes text/x-perl-script CFBundleTypeName Perl Source File CFBundleTypeRole Editor LSItemContentTypes public.perl-script CFBundleTypeExtensions py rpy cpy python CFBundleTypeIconFile MacVim-py CFBundleTypeMIMETypes text/x-python-script CFBundleTypeName Python Source File CFBundleTypeRole Editor LSItemContentTypes public.python-script CFBundleTypeExtensions php php3 php4 php5 ph3 ph4 phtml CFBundleTypeIconFile MacVim-php CFBundleTypeMIMETypes text/php CFBundleTypeName PHP Source File CFBundleTypeRole Editor LSItemContentTypes public.php-script CFBundleTypeExtensions rb rbw rbx rjs rxml CFBundleTypeIconFile MacVim-rb CFBundleTypeMIMETypes text/ruby-script CFBundleTypeName Ruby Source File CFBundleTypeRole Editor LSItemContentTypes public.ruby-script CFBundleTypeExtensions sh csh command ss bashrc bash_profile bash_login profile bash_logout CFBundleTypeIconFile MacVim-bash CFBundleTypeName Shell script CFBundleTypeRole Editor LSItemContentTypes public.shell-script CFBundleTypeExtensions class CFBundleTypeName Java Class File CFBundleTypeRole Viewer LSIsAppleDefaultForType LSItemContentTypes com.sun.java-class CFBundleTypeExtensions patch diff CFBundleTypeIconFile MacVim-patch CFBundleTypeName Patch File CFBundleTypeRole Editor LSIsAppleDefaultForType CFBundleTypeExtensions strings CFBundleTypeName Strings File CFBundleTypeRole Editor LSItemContentTypes public.strings-text CFBundleTypeExtensions * CFBundleTypeName Text File CFBundleTypeOSTypes **** CFBundleTypeRole Editor CFBundleTypeExtensions applescript CFBundleTypeIconFile MacVim-applescript CFBundleTypeName AppleScript Source File CFBundleTypeRole Editor LSItemContentTypes com.apple.applescript.text CFBundleTypeExtensions as CFBundleTypeIconFile MacVim-as CFBundleTypeName ActionScript Source File CFBundleTypeRole Editor CFBundleTypeExtensions asp asa CFBundleTypeIconFile MacVim-asp CFBundleTypeName ASP document CFBundleTypeRole Editor CFBundleTypeExtensions aspx ascx asmx ashx CFBundleTypeIconFile MacVim-asp CFBundleTypeName ASP.NET document CFBundleTypeRole Editor CFBundleTypeExtensions bib CFBundleTypeIconFile MacVim-bib CFBundleTypeName BibTeX bibliography CFBundleTypeRole Editor CFBundleTypeExtensions cs CFBundleTypeIconFile MacVim-cs CFBundleTypeName C# Source File CFBundleTypeRole Editor CFBundleTypeExtensions cfdg CFBundleTypeIconFile MacVim-csfg CFBundleTypeName Context Free Design Grammar CFBundleTypeRole Editor CFBundleTypeExtensions csv CFBundleTypeIconFile MacVim-csv CFBundleTypeName Comma separated values CFBundleTypeRole Editor CFBundleTypeExtensions tsv CFBundleTypeIconFile MacVim-tsv CFBundleTypeName Tab separated values CFBundleTypeRole Editor CFBundleTypeExtensions cgi fcgi CFBundleTypeIconFile MacVim-cgi CFBundleTypeName CGI script CFBundleTypeRole Editor CFBundleTypeExtensions cfg conf config htaccess CFBundleTypeIconFile MacVim-cfg CFBundleTypeName Configuration file CFBundleTypeRole Editor CFBundleTypeExtensions css CFBundleTypeIconFile MacVim-css CFBundleTypeName Cascading style sheet CFBundleTypeRole Editor CFBundleTypeExtensions dtd CFBundleTypeIconFile MacVim-dtd CFBundleTypeName Document Type Definition CFBundleTypeRole Editor CFBundleTypeExtensions dylan CFBundleTypeIconFile MacVim-dylan CFBundleTypeName Dylan Source File CFBundleTypeRole Editor CFBundleTypeExtensions erl hrl CFBundleTypeIconFile MacVim-erl CFBundleTypeName Erlang Source File CFBundleTypeRole Editor CFBundleTypeExtensions fscript CFBundleTypeIconFile MacVim-fscript CFBundleTypeName F-Script Source File CFBundleTypeRole Editor CFBundleTypeExtensions hs lhs CFBundleTypeIconFile MacVim-hs CFBundleTypeName Haskell Source File CFBundleTypeRole Editor CFBundleTypeExtensions inc CFBundleTypeIconFile MacVim-inc CFBundleTypeName Include file CFBundleTypeRole Editor CFBundleTypeExtensions ics CFBundleTypeIconFile MacVim-ics CFBundleTypeName iCalendar schedule CFBundleTypeRole Editor CFBundleTypeExtensions ini CFBundleTypeIconFile MacVim-ini CFBundleTypeName MS Windows initialization file CFBundleTypeRole Editor CFBundleTypeExtensions io CFBundleTypeIconFile MacVim-io CFBundleTypeName Io Source File CFBundleTypeRole Editor CFBundleTypeExtensions bsh CFBundleTypeIconFile MacVim-bsh CFBundleTypeName BeanShell script CFBundleTypeRole Editor CFBundleTypeExtensions properties CFBundleTypeIconFile MacVim-properties CFBundleTypeName Java properties file CFBundleTypeRole Editor CFBundleTypeExtensions jsp CFBundleTypeIconFile MacVim-jsp CFBundleTypeName Java Server Page CFBundleTypeRole Editor CFBundleTypeExtensions lisp cl l lsp mud el CFBundleTypeIconFile MacVim-lisp CFBundleTypeName LISP Source File CFBundleTypeRole Editor CFBundleTypeExtensions log CFBundleTypeIconFile MacVim-log CFBundleTypeName Log file CFBundleTypeRole Editor CFBundleTypeExtensions wiki wikipedia mediawiki CFBundleTypeIconFile MacVim-wiki CFBundleTypeName Mediawiki document CFBundleTypeRole Editor CFBundleTypeExtensions ps eps CFBundleTypeIconFile MacVim-ps CFBundleTypeName PostScript Source File CFBundleTypeRole Editor CFBundleTypeExtensions scm sch CFBundleTypeIconFile MacVim-sch CFBundleTypeName Scheme Source File CFBundleTypeRole Editor CFBundleTypeExtensions sql CFBundleTypeIconFile MacVim-sql CFBundleTypeName SQL Source File CFBundleTypeRole Editor CFBundleTypeExtensions tcl CFBundleTypeIconFile MacVim-tcl CFBundleTypeName Tcl Source File CFBundleTypeRole Editor CFBundleTypeExtensions xsl xslt CFBundleTypeIconFile MacVim-xsl CFBundleTypeName XSL stylesheet CFBundleTypeRole Editor CFBundleTypeExtensions vcf vcard CFBundleTypeIconFile MacVim-vcf CFBundleTypeName Electronic business card CFBundleTypeRole Editor CFBundleTypeExtensions vb CFBundleTypeIconFile MacVim-vb CFBundleTypeName Visual Basic Source File CFBundleTypeRole Editor CFBundleTypeExtensions yaml yml CFBundleTypeIconFile MacVim-yaml CFBundleTypeName YAML document CFBundleTypeRole Editor CFBundleTypeExtensions gtd gtdlog CFBundleTypeIconFile MacVim-gtd CFBundleTypeName GTD document CFBundleTypeRole Editor CFBundleTypeExtensions markdown markd mdown md CFBundleTypeIconFile MacVim-markdown CFBundleTypeName Markdown document CFBundleTypeRole Editor CFBundleTypeExtensions rst CFBundleTypeIconFile MacVim-rst CFBundleTypeName reStructuredText document CFBundleTypeRole Editor CFBundleTypeExtensions vba CFBundleTypeIconFile MacVim-vba CFBundleTypeName Vimball Archive CFBundleTypeRole Editor CFBundleTypeExtensions vhd vhdl CFBundleTypeIconFile MacVim-generic CFBundleTypeName VHDL Source File CFBundleTypeRole Editor CFBundleTypeExtensions lua CFBundleTypeIconFile MacVim-generic CFBundleTypeMIMETypes text/x-lua-script CFBundleTypeName Lua Source File CFBundleTypeRole Editor CFBundleTypeExtensions v CFBundleTypeIconFile MacVim-generic CFBundleTypeName Verilog HDL Source File CFBundleTypeRole Editor CFBundleTypeExtensions vh CFBundleTypeIconFile MacVim-generic CFBundleTypeName Verilog HDL Header Source File CFBundleTypeRole Editor CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIconFile CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(VIMR_DISPLAY_NAME) CFBundlePackageType APPL CFBundleShortVersionString 0.60.0 CFBundleSignature ???? CFBundleURLTypes CFBundleTypeRole Editor CFBundleURLName com.qvacua.vimr.url CFBundleURLSchemes vimr CFBundleVersion 20260129.185351 LSApplicationCategoryType public.app-category.productivity LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSAppTransportSecurity NSExceptionDomains localhost NSExceptionAllowsInsecureHTTPLoads NSExceptionMinimumTLSVersion TLSv1.2 NSExceptionRequiresForwardSecrecy NSIncludesSubdomains NSRequiresCertificateTransparency NSThirdPartyExceptionAllowsInsecureHTTPLoads NSThirdPartyExceptionMinimumTLSVersion TLSv1.2 NSThirdPartyExceptionRequiresForwardSecrecy NSHumanReadableCopyright Copyright © 2022 Tae Won Ha. All rights reserved. NSMainNibFile MainMenu NSPrincipalClass VimR.Application SUPublicEDKey G37CFFnc1dSRxbsuzquapWYKBVaEatiParffxNIvghI= ================================================ FILE: VimR/VimR/KeysPref.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout final class KeysPref: PrefPane, UiComponent, NSTextFieldDelegate { typealias StateType = AppState enum Action { case isLeftOptionMeta(Bool) case isRightOptionMeta(Bool) } let uuid = UUID() override var displayName: String { "Keys" } override var pinToContainer: Bool { true } required init(context: ReduxContext, state: StateType) { self.emit = context.actionEmitter.typedEmit() self.isLeftOptionMeta = state.mainWindowTemplate.isLeftOptionMeta self.isRightOptionMeta = state.mainWindowTemplate.isRightOptionMeta super.init(frame: .zero) self.addViews() self.updateViews() context.subscribe(uuid: self.uuid) { state in if self.isLeftOptionMeta != state.mainWindowTemplate.isLeftOptionMeta || self.isRightOptionMeta != state.mainWindowTemplate.isRightOptionMeta { self.isLeftOptionMeta = state.mainWindowTemplate.isLeftOptionMeta self.isRightOptionMeta = state.mainWindowTemplate.isRightOptionMeta self.updateViews() } } } private let emit: (Action) -> Void private var isLeftOptionMeta: Bool private var isRightOptionMeta: Bool private let isLeftOptionMetaCheckbox = NSButton(forAutoLayout: ()) private let isRightOptionMetaCheckbox = NSButton(forAutoLayout: ()) @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private func updateViews() { self.isLeftOptionMetaCheckbox.boolState = self.isLeftOptionMeta self.isRightOptionMetaCheckbox.boolState = self.isRightOptionMeta } private func addViews() { let paneTitle = self.paneTitleTextField(title: "Keys") let isLeftOptionMeta = self.isLeftOptionMetaCheckbox self.configureCheckbox( button: isLeftOptionMeta, title: "Use Left Option as Meta", action: #selector(KeysPref.isLeftOptionMetaAction(_:)) ) let isRightOptionMeta = self.isRightOptionMetaCheckbox self.configureCheckbox( button: isRightOptionMeta, title: "Use Right Option as Meta", action: #selector(KeysPref.isRightOptionMetaAction(_:)) ) let metaInfo = self.infoTextField(markdown: #""" When an Option key is set to Meta, then every input containing the corresponding Option key will\ be passed through to Neovim. This means that you can use mappings like `` in Neovim, but\ cannot use the corresponding Option key for keyboard shortcuts containing `Option` or to enter\ special characters like `µ` which is entered by `Option-M` (on the ABC keyboard layout). """#) self.addSubview(paneTitle) self.addSubview(isLeftOptionMeta) self.addSubview(isRightOptionMeta) self.addSubview(metaInfo) paneTitle.autoPinEdge(toSuperviewEdge: .top, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) isLeftOptionMeta.autoPinEdge(.top, to: .bottom, of: paneTitle, withOffset: 18) isLeftOptionMeta.autoPinEdge(toSuperviewEdge: .left, withInset: 18) isRightOptionMeta.autoPinEdge(.top, to: .bottom, of: isLeftOptionMeta, withOffset: 5) isRightOptionMeta.autoPinEdge(toSuperviewEdge: .left, withInset: 18) metaInfo.autoPinEdge(.top, to: .bottom, of: isRightOptionMeta, withOffset: 5) metaInfo.autoPinEdge(toSuperviewEdge: .left, withInset: 18) } } // MARK: - Actions extension KeysPref { @objc func isLeftOptionMetaAction(_ sender: NSButton) { self.emit(.isLeftOptionMeta(sender.boolState)) } @objc func isRightOptionMetaAction(_ sender: NSButton) { self.emit(.isRightOptionMeta(sender.boolState)) } } ================================================ FILE: VimR/VimR/KeysPrefReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class KeysPrefReducer: ReducerType { typealias StateType = AppState typealias ActionType = KeysPref.Action func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action { case let .isLeftOptionMeta(value): state.mainWindowTemplate.isLeftOptionMeta = value state.mainWindows.keys.forEach { state.mainWindows[$0]?.isLeftOptionMeta = value } case let .isRightOptionMeta(value): state.mainWindowTemplate.isRightOptionMeta = value state.mainWindows.keys.forEach { state.mainWindows[$0]?.isRightOptionMeta = value } } return ReduceTuple(state: state, action: tuple.action, modified: true) } } ================================================ FILE: VimR/VimR/MainWindow+Actions.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import MessagePack import Workspace // MARK: - RpcEvent Actions extension MainWindow { func rpcEventAction(params rawParams: [MessagePackValue]) { guard rawParams.count > 0 else { return } guard let strEvent = rawParams[0].stringValue, let event = RpcEvent(rawValue: "\(RpcEvent.prefix).\(strEvent)") else { return } let params = Array(rawParams.suffix(from: 1)) switch event { case .refreshFileBrowser: self.refreshFileBrowser() case .revealCurrentBufferInFileBrowser: self.revealCurrentBufferInFileBrowser() case .makeSessionTemporary: self.emit(self.uuidAction(for: .makeSessionTemporary)) case .maximizeWindow: guard let screen = self.window.screen else { return } self.window.setFrame(screen.frame, display: true) case .toggleTools: guard params.count == 1 else { return } let param = params[0].int64Value if params.isEmpty || param == 0 { self.toggleAllTools(self) } else if param == -1 { self.hideAllTools() } else if param == 1 { self.showAllTools() } case .toggleToolButtons: guard params.count == 1 else { return } let param = params[0].int64Value if params.isEmpty || param == 0 { self.toggleToolButtons(self) } else if param == -1 { self.hideToolButtons() } else if param == 1 { self.showToolButtons() } case .toggleFullScreen: self.window.toggleFullScreen(self) case .setFont: guard params.count == 2 else { return } guard let fontName = params[0].stringValue, let fontSize = params[1].int64Value, let font = NSFont(name: fontName, size: fontSize.cgf) else { return } self.emit(self.uuidAction(for: .setFont(font))) case .setLinespacing: guard params.count == 1 else { return } guard let linespacing = params[0].doubleValue else { return } self.emit(self.uuidAction(for: .setLinespacing(linespacing))) case .setCharacterspacing: guard params.count == 1 else { return } guard let characterspacing = params[0].doubleValue else { return } self.emit(self.uuidAction(for: .setCharacterspacing(characterspacing))) } } private func hideToolButtons() { self.workspace.hideToolButtons() self.focusNvimView(self) self.emit(self.uuidAction( for: .toggleToolButtons(self.workspace.isToolButtonsVisible) )) } private func showToolButtons() { self.workspace.showToolButtons() self.focusNvimView(self) self.emit(self.uuidAction( for: .toggleToolButtons(self.workspace.isToolButtonsVisible) )) } private func hideAllTools() { self.workspace.hideAllTools() self.focusNvimView(self) self.emit(self.uuidAction( for: .toggleAllTools(self.workspace.isAllToolsVisible) )) } private func showAllTools() { self.workspace.showAllTools() self.focusNvimView(self) self.emit(self.uuidAction( for: .toggleAllTools(self.workspace.isAllToolsVisible) )) } } // MARK: - File Menu Item Actions extension MainWindow { @IBAction func newTab(_: Any?) { Task { await self.neoVimView.newTab() } } @IBAction func openDocument(_: Any?) { let panel = NSOpenPanel() panel.canChooseDirectories = true panel.allowsMultipleSelection = true panel.beginSheetModal(for: self.window) { result in Task { guard result == .OK else { return } let urls = panel.urls let bufs = await self.neoVimView.allBuffers() ?? [] if bufs.count == 1 { let isTransient = bufs.first?.isTransient ?? false if isTransient { self.neoVimView.cwd = FileUtils.commonParent(of: urls) } } await self.neoVimView.open(urls: urls) } } } @IBAction func openQuickly(_: Any?) { self.emit(self.uuidAction(for: .openQuickly)) } @IBAction func closeWindow(_: Any?) { self.closeWindow = true self.window.performClose(nil) } @IBAction func saveDocument(_: Any?) { Task { guard let curBuf = await self.neoVimView.currentBuffer() else { return } if curBuf.url == nil { self.savePanelSheet { url in Task { await self.neoVimView.saveCurrentTab(url: url) } } } else { await self.neoVimView.saveCurrentTab() } } } @IBAction func saveDocumentAs(_: Any?) { Task { guard let curBuf = await self.neoVimView.currentBuffer() else { return } self.savePanelSheet { url in Task { await self.neoVimView.saveCurrentTab(url: url) curBuf.isDirty ? await self.neoVimView.openInNewTab(urls: [url]) : await self.neoVimView .openInCurrentTab(url: url) } } } } private func savePanelSheet(action: @escaping (URL) -> Void) { let panel = NSSavePanel() panel.beginSheetModal(for: self.window) { result in guard result == .OK else { return } let showAlert: () -> Void = { let alert = NSAlert() alert.addButton(withTitle: "OK") alert.messageText = "Invalid File Name" alert .informativeText = "The file name you have entered cannot be used. Please use a different name." alert.alertStyle = .warning alert.runModal() } guard let url = panel.url else { showAlert() return } action(url) } } } // MARK: - Tools Menu Item Actions extension MainWindow { @IBAction func toggleAllTools(_: Any?) { self.workspace.toggleAllTools() self.focusNvimView(self) self.emit(self.uuidAction(for: .toggleAllTools(self.workspace.isAllToolsVisible))) } @IBAction func toggleToolButtons(_: Any?) { self.workspace.toggleToolButtons() self.emit(self.uuidAction(for: .toggleToolButtons(self.workspace.isToolButtonsVisible))) } @IBAction func toggleFileBrowser(_: Any?) { guard let fileBrowser = self.fileBrowserContainer else { return } self.toggle(tool: fileBrowser, toolType: .fileBrowser) } @IBAction func toggleBufferList(_: Any?) { guard let bufferList = self.buffersListContainer else { return } self.toggle(tool: bufferList, toolType: .bufferList) } @IBAction func toggleMarkdownPreview(_: Any?) { guard let markdownPreview = self.previewContainer else { return } self.toggle(tool: markdownPreview, toolType: .markdownPreview) } @IBAction func toggleHtmlPreview(_: Any?) { guard let htmlPreview = self.htmlPreviewContainer else { return } self.toggle(tool: htmlPreview, toolType: .htmlPreview) } @IBAction func focusNvimView(_: Any?) { self.emit(self.uuidAction(for: .focus(.neoVimView))) } private func toggle(tool: WorkspaceTool, toolType: FocusableView) { if tool.isSelected == true { if tool.view.isFirstResponder == true { tool.toggle() self.focusNvimView(self) } else { self.emit(self.uuidAction(for: .focus(toolType))) } return } tool.toggle() self.emit(self.uuidAction(for: .focus(toolType))) } } // MARK: - NSUserInterfaceValidationsProtocol extension MainWindow { func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool { let canSave = self.neoVimView.currentBufferSync()?.type == "" let canSaveAs = canSave let canOpen = canSave let canOpenQuickly = canSave let canFocusNvimView = self.window.firstResponder != self.neoVimView let canToggleFileBrowser = self.tools.keys.contains(.fileBrowser) let canToggleTools = !self.tools.isEmpty guard let action = item.action else { return true } switch action { case #selector(self.toggleAllTools(_:)), #selector(self.toggleToolButtons(_:)): return canToggleTools case #selector(self.toggleFileBrowser(_:)): return canToggleFileBrowser case #selector(self.focusNvimView(_:)): return canFocusNvimView case #selector(self.openDocument(_:)): return canOpen case #selector(self.openQuickly(_:)): return canOpenQuickly case #selector(self.saveDocument(_:)): return canSave case #selector(self.saveDocumentAs(_:)): return canSaveAs default: return true } } } ================================================ FILE: VimR/VimR/MainWindow+CustomTitle.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout // MARK: - Custom title extension MainWindow { func themeTitlebar(grow _: Bool) { if self.window.styleMask.contains(.fullScreen) { return } let prevFirstResponder = self.window.firstResponder self.window.titlebarAppearsTransparent = true self.neoVimView.tabBar?.removeFromSuperview() self.workspace.removeFromSuperview() self.set(repUrl: self.window.representedURL, themed: true) self.addViews(withTopInset: titleBarHeight) self.titlebarThemed = true self.window.makeFirstResponder(prevFirstResponder) } func unthemeTitlebar(dueFullScreen: Bool) { // NSWindow becomes the first responder at the end of this method. let firstResponder = self.window.firstResponder self.clearCustomTitle() let prevFrame = window.frame self.window.titlebarAppearsTransparent = false self.neoVimView.tabBar?.removeFromSuperview() self.workspace.removeFromSuperview() self.window.titleVisibility = .visible self.window.styleMask.remove(.fullSizeContentView) self.set(repUrl: self.window.representedURL, themed: false) self.addViews(withTopInset: 0) if !dueFullScreen { self.window.setFrame(prevFrame, display: true, animate: false) self.titlebarThemed = false } self.window.makeFirstResponder(firstResponder) } func set(repUrl url: URL?, themed: Bool) { if self.window.styleMask.contains(NSWindow.StyleMask.fullScreen) || themed == false { self.internalSetRepUrl(url) return } let prevFirstResponder = self.window.firstResponder let prevFrame = self.window.frame self.clearCustomTitle() self.window.titleVisibility = .visible self.internalSetRepUrl(url) guard let contentView = self.window.contentView else { return } self.window.titleVisibility = .hidden self.window.styleMask.insert(.fullSizeContentView) let title = NSTextField(forAutoLayout: ()) title.isEditable = false title.isSelectable = false title.isBordered = false title.isBezeled = false title.backgroundColor = .clear title.textColor = self.theme.foreground title.stringValue = self.window.title contentView.addSubview(title) title.autoPinEdge(toSuperviewEdge: .top, withInset: 3) self.titleView = title if let button = self.window.standardWindowButton(.documentIconButton) { button .removeFromSuperview() // remove the rep icon from the original superview and add it to // content view contentView.addSubview(button) button.autoSetDimension(.width, toSize: 16) button.autoSetDimension(.height, toSize: 16) button.autoPinEdge(toSuperviewEdge: .top, withInset: 3) // Center the rep icon and the title side by side in the content view: // rightView.left = leftView.right + gap // rightView.right = parentView.centerX + (leftView.width + gap + rightView.width) / 2 - 4 // The (-4) at the end is an empirical value... contentView.addConstraint(NSLayoutConstraint( item: title, attribute: .left, relatedBy: .equal, toItem: button, attribute: .right, multiplier: 1, constant: repIconToTitleGap )) contentView.addConstraint( // Here we use title.intrinsicContentSize instead of title.frame because title.frame is // still zero. NSLayoutConstraint( item: title, attribute: .right, relatedBy: .equal, toItem: contentView, attribute: .centerX, multiplier: 1, constant: -4 + (button.frame.width + repIconToTitleGap + title.intrinsicContentSize.width) / 2 ) ) self.repIcon = button } else { title.autoAlignAxis(toSuperviewAxis: .vertical) } self.window.setFrame(prevFrame, display: true, animate: false) self.window.makeFirstResponder(prevFirstResponder) } private func clearCustomTitle() { self.titleView?.removeFromSuperview() self.repIcon?.removeFromSuperview() self.titleView = nil self.repIcon = nil } private func internalSetRepUrl(_ url: URL?) { self.window.representedURL = nil self.window.representedURL = url } } private let repIconToTitleGap = 4.0 private let titleBarHeight = CGFloat(ProcessInfo.processInfo.operatingSystemVersion.majorVersion >= 11 ? 28 : 22) ================================================ FILE: VimR/VimR/MainWindow+Delegates.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MessagePack import NvimApi import NvimView import Workspace // MARK: - NvimViewDelegate extension MainWindow { func neoVimStopped() { if self.isClosing { return } self.prepareClosing() self.windowController.close() self.set(dirtyStatus: false) self.emit(self.uuidAction(for: .close)) } func prepareClosing() { self.isClosing = true // If we close the window in the full screen mode, either by clicking the close button or by // invoking :q // the main thread crashes. We exit the full screen mode here as a quick and dirty hack. if self.window.styleMask.contains(.fullScreen) { self.window.toggleFullScreen(nil) } guard let cliPipePath = self.cliPipePath, FileManager.default.fileExists(atPath: cliPipePath) else { return } let fd = Darwin.open(cliPipePath, O_RDWR) guard fd != -1 else { return } let handle = FileHandle(fileDescriptor: fd) handle.closeFile() _ = Darwin.close(fd) } func set(title: String) { self.window.title = title self.titleView?.stringValue = title } func set(dirtyStatus: Bool) { self.emit(self.uuidAction(for: .setDirtyStatus(dirtyStatus))) } func cwdChanged() { self.emit(self.uuidAction(for: .cd(to: self.neoVimView.cwd))) } func bufferListChanged() async { let bufs = await self.neoVimView.allBuffers() ?? [] let action = self.uuidAction(for: .setBufferList(bufs.filter(\.isListed))) self.emit(action) } func bufferWritten(_ buffer: NvimView.Buffer) { self.emit(self.uuidAction(for: .bufferWritten(buffer))) } func newCurrentBuffer(_ currentBuffer: NvimView.Buffer) { self.emit(self.uuidAction(for: .newCurrentBuffer(currentBuffer))) } func tabChanged() async { if let curBuf = await self.neoVimView.currentBuffer() { self.newCurrentBuffer(curBuf) } } func colorschemeChanged(to nvimTheme: NvimView.Theme) { dlog.debug("Theme changed delegate method: \(nvimTheme)") if let colors = self.updatedCssColors() { self.emit( self.uuidAction(for: .setTheme(Theme(from: nvimTheme, additionalColorDict: colors))) ) } else { self.logger.error("oops couldn't set theme") } } func guifontChanged(to font: NSFont) { self.emit(self.uuidAction(for: .setFont(font))) } func ipcBecameInvalid(reason: String) { let alert = NSAlert() alert.addButton(withTitle: "Close") alert.messageText = "Sorry, an error occurred." alert .informativeText = "VimR encountered an error from which it cannot recover. This window will now close.\n" + reason alert.alertStyle = .critical alert.beginSheetModal(for: self.window) { _ in self.windowController.close() } } func scroll() { self.scrollThrottler.call(.scroll(to: Marked(self.neoVimView.currentPosition))) } func cursor(to position: Position) { if position == self.editorPosition.payload { return } self.editorPosition = Marked(position) self.cursorThrottler.call(.setCursor(to: self.editorPosition)) } private func updatedCssColors() -> [String: CellAttributes]? { let colorNames = [ "Normal", // color and background-color "Directory", // a "Question", // blockquote foreground "CursorColumn", // code background and foreground ] let map: [String: CellAttributes] = colorNames.reduce(into: [:]) { dict, colorName in let result = self.neoVimView.apiSync.nvimGetHl( ns_id: 0, opts: ["name": MessagePackValue(colorName)] ) guard let name = try? result.get() else { return } dict[colorName] = CellAttributes(withDict: name, with: self.neoVimView.defaultCellAttributes) }.compactMapValues { $0 } if map.count == colorNames.count { return map } else { return nil } } } // MARK: - NSWindowDelegate extension MainWindow { func windowWillEnterFullScreen(_: Notification) { self.unthemeTitlebar(dueFullScreen: true) } func windowDidExitFullScreen(_: Notification) { if self.titlebarThemed { self.themeTitlebar(grow: true) } } func windowDidBecomeMain(_: Notification) { self .emit( self .uuidAction(for: .becomeKey(isFullScreen: self.window.styleMask.contains(.fullScreen))) ) Task { await self.neoVimView.didBecomeMain() } } func windowDidResignMain(_: Notification) { Task { await self.neoVimView.didResignMain() } } func windowDidMove(_: Notification) { self.emit(self.uuidAction(for: .frameChanged(to: self.window.frame))) } func windowDidResize(_: Notification) { if self.window.styleMask.contains(.fullScreen) { return } self.emit(self.uuidAction(for: .frameChanged(to: self.window.frame))) } func windowShouldClose(_: NSWindow) -> Bool { defer { self.closeWindow = false } let closeWindow = self.closeWindow Task { if await self.neoVimView.isBlocked() { let alert = NSAlert() alert.messageText = "Nvim is waiting for your input." alert.alertStyle = .informational alert.runModal() return } if closeWindow { if await self.neoVimView.hasDirtyBuffers() { self.discardCloseActionAlert().beginSheetModal(for: self.window) { response in if response == .alertSecondButtonReturn { Task { await self.neoVimView.quitNeoVimWithoutSaving() } } } } else { await self.neoVimView.quitNeoVimWithoutSaving() } return } guard await self.neoVimView.isCurrentBufferDirty() else { await self.neoVimView.closeCurrentTab() return } self.discardCloseActionAlert().beginSheetModal(for: self.window) { response in if response == .alertSecondButtonReturn { Task { await self.neoVimView.closeCurrentTabWithoutSaving() } } } } return false } private func discardCloseActionAlert() -> NSAlert { let alert = NSAlert() let cancelButton = alert.addButton(withTitle: "Cancel") let discardAndCloseButton = alert.addButton(withTitle: "Discard and Close") cancelButton.keyEquivalent = "\u{1b}" alert.messageText = "The current buffer has unsaved changes!" alert.alertStyle = .warning discardAndCloseButton.keyEquivalentModifierMask = .command discardAndCloseButton.keyEquivalent = "d" return alert } } // MARK: - WorkspaceDelegate extension MainWindow { func resizeWillStart(workspace _: Workspace, tool _: WorkspaceTool?) { self.neoVimView.enterResizeMode() } func resizeDidEnd(workspace _: Workspace, tool: WorkspaceTool?) { self.neoVimView.exitResizeMode() if let tool, let toolIdentifier = self.toolIdentifier(for: tool) { self.emit(self.uuidAction(for: .setState( for: toolIdentifier, with: .init(location: tool.location, dimension: tool.dimension, open: tool.isSelected) ))) } } func toggled(tool: WorkspaceTool) { if let toolIdentifier = self.toolIdentifier(for: tool) { self.emit(self.uuidAction(for: .setState( for: toolIdentifier, with: .init(location: tool.location, dimension: tool.dimension, open: tool.isSelected) ))) } } func moved(tool: WorkspaceTool) { let tools = self.workspace.orderedTools .compactMap { (tool: WorkspaceTool) -> (Tools, WorkspaceToolState)? in guard let toolId = self.toolIdentifier(for: tool) else { return nil } return ( toolId, .init(location: tool.location, dimension: tool.dimension, open: tool.isSelected) ) } self.emit(self.uuidAction(for: .setToolsState(tools))) } private func toolIdentifier(for tool: WorkspaceTool) -> Tools? { if tool == self.fileBrowserContainer { return .fileBrowser } if tool == self.buffersListContainer { return .buffersList } if tool == self.previewContainer { return .preview } if tool == self.htmlPreviewContainer { return .htmlPreview } return nil } } ================================================ FILE: VimR/VimR/MainWindow+Types.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import NvimView import Workspace extension MainWindow { enum Action: Sendable { case cd(to: URL) case setBufferList([NvimView.Buffer]) case newCurrentBuffer(NvimView.Buffer) case bufferWritten(NvimView.Buffer) case setDirtyStatus(Bool) case becomeKey(isFullScreen: Bool) case frameChanged(to: CGRect) case scroll(to: Marked) case setCursor(to: Marked) case focus(FocusableView) case openQuickly case toggleAllTools(Bool) case toggleToolButtons(Bool) // FIXME: Do not use WorkspaceTool, but a struct which contains the state of the workspace tool! case setState(for: Tools, with: WorkspaceToolState) case setToolsState([(Tools, WorkspaceToolState)]) case makeSessionTemporary case setTheme(Theme) case close // RPC actions case setFont(NSFont) case setLinespacing(CGFloat) case setCharacterspacing(CGFloat) } enum FocusableView { case neoVimView case fileBrowser case bufferList case markdownPreview case htmlPreview } enum Tools: String, Codable { static let all = Set( [ Tools.fileBrowser, Tools.buffersList, Tools.preview, Tools.htmlPreview, ] ) case fileBrowser = "com.qvacua.vimr.tools.file-browser" case buffersList = "com.qvacua.vimr.tools.opened-files-list" case preview = "com.qvacua.vimr.tools.preview" case htmlPreview = "com.qvacua.vimr.tools.html-preview" } enum OpenMode { case `default` case currentTab case newTab case horizontalSplit case verticalSplit } } ================================================ FILE: VimR/VimR/MainWindow.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa @preconcurrency import Combine import NvimView import os import PureLayout import Tabs import UserNotifications import Workspace final class MainWindow: NSObject, UiComponent, NSWindowDelegate, NSUserInterfaceValidations, WorkspaceDelegate, NvimViewDelegate { typealias StateType = State let uuid: UUID let emit: (UuidAction) -> Void let windowController: NSWindowController var window: NSWindow { self.windowController.window! } let workspace: Workspace let neoVimView: NvimView var activateAsciiImInInsertMode: Bool { get { self.neoVimView.activateAsciiImInNormalMode } set { self.neoVimView.activateAsciiImInNormalMode = newValue } } weak var shortcutService: ShortcutService? let scrollThrottler = Throttler(interval: .milliseconds(750)) let cursorThrottler = Throttler(interval: .milliseconds(750)) var editorPosition = Marked(Position.beginning) let tools: [Tools: WorkspaceTool] var previewContainer: WorkspaceTool? var fileBrowserContainer: WorkspaceTool? var buffersListContainer: WorkspaceTool? var htmlPreviewContainer: WorkspaceTool? var theme = Theme.default var titlebarThemed = false var repIcon: NSButton? var titleView: NSTextField? var closeWindow = false var isClosing = false let cliPipePath: String? required init(context: ReduxContext, state: StateType) { self.context = context self.emit = context.actionEmitter.typedEmit() self.uuid = state.uuid self.cliPipePath = state.cliPipePath self.goToLineFromCli = state.goToLineFromCli self.windowController = NSWindowController(windowNibName: NSNib.Name("MainWindow")) var sourceFileUrls = [URL]() if let sourceFileUrl = Bundle(for: MainWindow.self) .url(forResource: "com.qvacua.VimR", withExtension: "vim") { sourceFileUrls.append(sourceFileUrl) } let neoVimViewConfig = NvimView.Config( usesCustomTabBar: state.appearance.usesCustomTab, useInteractiveZsh: state.useInteractiveZsh, cwd: state.cwd, nvimBinary: state.nvimBinary, nvimArgs: state.nvimArgs, additionalEnvs: state.additionalEnvs, sourceFiles: sourceFileUrls ) self.neoVimView = NvimView( frame: .init(x: 0, y: 0, width: 640, height: 480), config: neoVimViewConfig ) self.neoVimView.configureForAutoLayout() self.workspace = Workspace(mainView: self.neoVimView) var tools: [Tools: WorkspaceTool] = [:] if state.activeTools[.preview] == true { self.preview = MarkdownTool(context: context, state: state) let previewConfig = WorkspaceTool.Config( title: "Markdown", view: self.preview!, customMenuItems: self.preview!.menuItems ) self.previewContainer = WorkspaceTool(previewConfig) self.previewContainer!.dimension = state.tools[.preview]?.dimension ?? 250 tools[.preview] = self.previewContainer } if state.activeTools[.htmlPreview] == true { self.htmlPreview = HtmlPreviewTool(context: context, state: state) let htmlPreviewConfig = WorkspaceTool.Config( title: "HTML", view: self.htmlPreview!, customToolbar: self.htmlPreview!.innerCustomToolbar ) self.htmlPreviewContainer = WorkspaceTool(htmlPreviewConfig) self.htmlPreviewContainer!.dimension = state.tools[.htmlPreview]? .dimension ?? 250 tools[.htmlPreview] = self.htmlPreviewContainer } if state.activeTools[.fileBrowser] == true { self.fileBrowser = FileBrowser(context: context, state: state) let fileBrowserConfig = WorkspaceTool.Config( title: "Files", view: self.fileBrowser!, customToolbar: self.fileBrowser!.innerCustomToolbar, customMenuItems: self.fileBrowser!.menuItems ) self.fileBrowserContainer = WorkspaceTool(fileBrowserConfig) self.fileBrowserContainer!.dimension = state .tools[.fileBrowser]? .dimension ?? 200 tools[.fileBrowser] = self.fileBrowserContainer } if state.activeTools[.buffersList] == true { self.buffersList = BuffersList(context: context, state: state) let buffersListConfig = WorkspaceTool.Config( title: "Buffers", view: self.buffersList! ) self.buffersListContainer = WorkspaceTool(buffersListConfig) self.buffersListContainer!.dimension = state .tools[.buffersList]? .dimension ?? 200 tools[.buffersList] = self.buffersListContainer } self.tools = tools super.init() self.window.tabbingMode = .disallowed self.fontSmoothing = state.appearance.fontSmoothing self.defaultFont = state.appearance.font self.linespacing = state.appearance.linespacing self.characterspacing = state.appearance.characterspacing self.usesLigatures = state.appearance.usesLigatures self.editorPosition = state.preview.editorPosition self.previewPosition = state.preview.previewPosition self.usesTheme = state.appearance.usesTheme for toolId in state.orderedTools { guard let tool = tools[toolId] else { continue } self.workspace.append( tool: tool, location: state.tools[toolId]?.location ?? .left ) } for (toolId, toolContainer) in self.tools where state.tools[toolId]?.open == true { toolContainer.toggle() } if !state.isToolButtonsVisible { self.workspace.toggleToolButtons() } if !state.isAllToolsVisible { self.workspace.toggleAllTools() } self.windowController.window?.delegate = self self.windowController.nextResponder = NSApplication.shared self.workspace.delegate = self self.addViews(withTopInset: 0) self.neoVimView.delegate = self self.updateNeoVimAppearance() self.setupScrollAndCursorDebouncers() self.subscribeToStateChange(context) self.window.setFrame(state.frame, display: true) self.window.makeFirstResponder(self.neoVimView) Task { await self.openInitialUrlsAndGoToLine(urlsToOpen: state.urlsToOpen) } } func cleanup() { self.context.unsubscribe(uuid: self.uuid) self.scrollThrottler.finish() self.cursorThrottler.finish() self.preview?.cleanup() self.htmlPreview?.cleanup() self.fileBrowser?.cleanup() self.buffersList?.cleanup() } func uuidAction(for action: Action) -> UuidAction { UuidAction(uuid: self.uuid, action: action) } func show() { self.windowController.showWindow(self) } func quitNeoVimWithoutSaving() async { await self.neoVimView.quitNeoVimWithoutSaving() } @IBAction func toggleFramerate(_: Any?) { self.neoVimView.toggleFramerateView() } // MARK: - Private private let context: ReduxContext private var currentBuffer: NvimView.Buffer? private var goToLineFromCli: Marked? private var fontSmoothing = FontSmoothing.systemSetting private var defaultFont = NvimView.defaultFont private var linespacing = NvimView.defaultLinespacing private var characterspacing = NvimView.defaultCharacterspacing private var usesLigatures = true private var drawsParallel = false private var previewPosition = Marked(Position.beginning) private var preview: MarkdownTool? private var htmlPreview: HtmlPreviewTool? private var fileBrowser: FileBrowser? private var buffersList: BuffersList? private var usesTheme = true private var lastThemeMark = Token() let logger = Logger(subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.ui) private var cancellables = Set() private func setupScrollAndCursorDebouncers() { self.scrollThrottler.publisher .merge(with: self.cursorThrottler.publisher) .receive(on: RunLoop.main) .sink { action in self.emit(self.uuidAction(for: action)) } .store(in: &self.cancellables) } private func subscribeToStateChange(_ context: ReduxContext) { context.subscribe(uuid: self.uuid) { appState in // FIXME: proper error handling? guard let state = appState.mainWindows[self.uuid] else { return } if self.isClosing { return } if state.viewToBeFocused != nil, case .neoVimView = state.viewToBeFocused! { self.window.makeFirstResponder(self.neoVimView) } self.windowController.setDocumentEdited(state.isDirty) if let cwd = state.cwdToSet { self.neoVimView.cwd = cwd self.neoVimView.tabBar?.cwd = cwd.path } if state.preview.status == .markdown, state.previewTool.isReverseSearchAutomatically, state.preview.previewPosition.hasDifferentMark(as: self.previewPosition) { Task { self.previewPosition = state.preview.previewPosition await self.neoVimView.cursorGo(to: state.preview.previewPosition.payload) } } self.open(urls: state.urlsToOpen) if let currentBuffer = state.currentBufferToSet { Task { await self.neoVimView.select(buffer: currentBuffer) } } if self.goToLineFromCli?.mark != state.goToLineFromCli?.mark { self.goToLineFromCli = state.goToLineFromCli if let goToLine = self.goToLineFromCli { Task { await self.neoVimView.goTo(line: goToLine.payload) } } } let usesTheme = state.appearance.usesTheme let themePrefChanged = state.appearance.usesTheme != self.usesTheme let themeChanged = state.appearance.theme.mark != self.lastThemeMark if themeChanged { self.theme = state.appearance.theme.payload } _ = changeTheme( themePrefChanged: themePrefChanged, themeChanged: themeChanged, usesTheme: usesTheme, forTheme: { self.themeTitlebar(grow: !self.titlebarThemed) self.window.backgroundColor = state.appearance .theme.payload.background.brightening(by: 0.9) self.set(workspaceThemeWith: state.appearance.theme.payload) self.set(tabsThemeWith: state.appearance.theme.payload) self.lastThemeMark = state.appearance.theme.mark }, forDefaultTheme: { self.unthemeTitlebar(dueFullScreen: false) self.window.backgroundColor = .windowBackgroundColor self.workspace.theme = .default self.neoVimView.tabBar?.update(theme: .default) } ) self.usesTheme = state.appearance.usesTheme if self.currentBuffer == nil || self.currentBuffer != state.currentBuffer { self.currentBuffer = state.currentBuffer let title = self.currentBuffer?.name ?? "VimR" self.set(title: title) if state.appearance.showsFileIcon { self.set(repUrl: self.currentBuffer?.url, themed: self.titlebarThemed) } else { self.set(repUrl: nil, themed: self.titlebarThemed) } } self.neoVimView.isLeftOptionMeta = state.isLeftOptionMeta self.neoVimView.isRightOptionMeta = state.isRightOptionMeta if self.defaultFont != state.appearance.font || self.linespacing != state.appearance.linespacing || self.characterspacing != state.appearance.characterspacing || self.usesLigatures != state.appearance.usesLigatures || self.fontSmoothing != state.appearance.fontSmoothing { self.fontSmoothing = state.appearance.fontSmoothing self.defaultFont = state.appearance.font self.linespacing = state.appearance.linespacing self.characterspacing = state.appearance.characterspacing self.usesLigatures = state.appearance.usesLigatures self.updateNeoVimAppearance() } } } private func openInitialUrlsAndGoToLine(urlsToOpen: [URL: OpenMode]) async { self.open(urls: urlsToOpen) if let goToLine = self.goToLineFromCli { await self.neoVimView.goTo(line: goToLine.payload) } } private func updateNeoVimAppearance() { self.neoVimView.fontSmoothing = self.fontSmoothing self.neoVimView.font = self.defaultFont self.neoVimView.linespacing = self.linespacing self.neoVimView.characterspacing = self.characterspacing self.neoVimView.usesLigatures = self.usesLigatures } private func set(tabsThemeWith _: Theme) { var tabsTheme = Tabs.Theme.default tabsTheme.foregroundColor = self.theme.tabForeground tabsTheme.backgroundColor = self.theme.tabBackground tabsTheme.separatorColor = self.theme.background.brightening(by: 0.75) tabsTheme.tabBarBackgroundColor = self.theme.tabBarBackground tabsTheme.tabBarForegroundColor = self.theme.tabBarForeground tabsTheme.selectedForegroundColor = self.theme.selectedTabForeground tabsTheme.selectedBackgroundColor = self.theme.selectedTabBackground tabsTheme.tabSelectedIndicatorColor = self.theme.highlightForeground self.neoVimView.tabBar?.update(theme: tabsTheme) } private func set(workspaceThemeWith theme: Theme) { var workspaceTheme = Workspace.Theme() workspaceTheme.foreground = theme.foreground workspaceTheme.background = theme.background workspaceTheme.separator = theme.background.brightening(by: 0.75) workspaceTheme.barBackground = theme.background workspaceTheme.barFocusRing = theme.foreground workspaceTheme.barButtonHighlight = theme.background.brightening(by: 0.75) workspaceTheme.toolbarForeground = theme.foreground workspaceTheme.toolbarBackground = theme.background.brightening(by: 0.75) self.workspace.theme = workspaceTheme } private func open(urls: [URL: OpenMode]) { Task { if urls.isEmpty { return } for entry in urls { let url = entry.key let mode = entry.value switch mode { case .default: return await self.neoVimView.open(urls: [url]) case .currentTab: return await self.neoVimView.openInCurrentTab(url: url) case .newTab: return await self.neoVimView.openInNewTab(urls: [url]) case .horizontalSplit: return await self.neoVimView.openInHorizontalSplit(urls: [url]) case .verticalSplit: return await self.neoVimView.openInVerticalSplit(urls: [url]) } } } } func addViews(withTopInset topInset: CGFloat) { if self.neoVimView.usesCustomTabBar { self.addViewsWithTabBar(withTopInset: topInset) } else { self.addViewsWithoutTabBar(withTopInset: topInset) } } private func addViewsWithTabBar(withTopInset topInset: CGFloat) { guard let tabBar = self.neoVimView.tabBar else { self.logger.error("Could not get the TabBar from NvimView!") self.addViewsWithoutTabBar(withTopInset: 0) return } let ws = self.workspace // FIXME: Find out why we have to add tabBar after adding ws, otherwise tabBar is not visible // With deployment target 10_15, adding first tabBar worked fine. self.window.contentView?.addSubview(ws) self.window.contentView?.addSubview(tabBar) tabBar.autoPinEdge(toSuperviewEdge: .top, withInset: topInset) tabBar.autoPinEdge(toSuperviewEdge: .left) tabBar.autoPinEdge(toSuperviewEdge: .right) ws.autoPinEdge(.top, to: .bottom, of: tabBar) ws.autoPinEdge(toSuperviewEdge: .left) ws.autoPinEdge(toSuperviewEdge: .right) ws.autoPinEdge(toSuperviewEdge: .bottom) } private func addViewsWithoutTabBar(withTopInset topInset: CGFloat) { let ws = self.workspace self.window.contentView?.addSubview(ws) ws.autoPinEdge(toSuperviewEdge: .top, withInset: topInset) ws.autoPinEdge(toSuperviewEdge: .right) ws.autoPinEdge(toSuperviewEdge: .bottom) ws.autoPinEdge(toSuperviewEdge: .left) } private func showInitError() { let content = UNMutableNotificationContent() content.title = "Error during initialization" content.body = """ There was an error during the initialization of NeoVim. Use :messages to view the error messages. """ content.sound = .default let request = UNNotificationRequest( identifier: UUID().uuidString, content: content, trigger: nil ) UNUserNotificationCenter.current().add(request) } private func show(warning: NvimView.Warning) { let alert = NSAlert() alert.addButton(withTitle: "OK") switch warning { case .cannotCloseLastTab: alert.messageText = "You cannot close the last tab." case .noWriteSinceLastChange: alert.messageText = "There are changes since the last write." } alert.alertStyle = .informational alert.beginSheetModal(for: self.window) { _ in } } func revealCurrentBufferInFileBrowser() { self.fileBrowser?.scrollToSourceAction(nil) } func refreshFileBrowser() { self.fileBrowser?.refreshAction(nil) } } // NvimViewDelegate extension MainWindow { func isMenuItemKeyEquivalent(_ event: NSEvent) -> Bool { self.shortcutService?.isMenuItemShortcut(event) == true } func nextEvent(_ event: NvimView.Event) { dlog.debug("Event from NvimView: \(event)") switch event { case .nvimReady: // Now, sync API is also ready. Fire colorscheme changed again since it uses the sync API // and when it first fires, sync API does not run yet. // FIXME: There might be other events which need to be fired here. self.colorschemeChanged(to: self.neoVimView.theme) case .neoVimStopped: self.neoVimStopped() case let .setTitle(title): self.set(title: title) case let .setDirtyStatus(dirty): self.set(dirtyStatus: dirty) case .cwdChanged: self.cwdChanged() case .bufferListChanged: Task { await self.bufferListChanged() } case .tabChanged: Task { await self.tabChanged() } case let .newCurrentBuffer(curBuf): self.newCurrentBuffer(curBuf) case let .bufferWritten(buf): self.bufferWritten(buf) case let .colorschemeChanged(theme): self.colorschemeChanged(to: theme) case let .guifontChanged(font): self.guifontChanged(to: font) case let .ipcBecameInvalid(reason): self.ipcBecameInvalid(reason: reason) case .scroll: self.scroll() case let .cursor(position): self.cursor(to: position) case .initVimError: self.showInitError() case let .apiError(error, msg): self.logger.error("Got api error with msg '\(msg)' and error: \(error)") case let .rpcEvent(params): self.rpcEventAction(params: params) case let .warning(warning): self.show(warning: warning) case .rpcEventSubscribed: break } } } ================================================ FILE: VimR/VimR/MainWindowReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class MainWindowReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case let .frameChanged(to: frame): state.frame = frame case let .cd(to: cwd): if state.cwd != cwd { state.cwd = cwd } case let .setBufferList(buffers): state.buffers = buffers case let .newCurrentBuffer(buffer): state.currentBuffer = buffer case let .setDirtyStatus(status): // When I gt or w around, we change tab somehow... Dunno why... if status == tuple.state.isDirty { return tuple } state.isDirty = status case let .focus(view): state.viewToBeFocused = view case let .setState(for: tool, with: workspaceToolState): state.tools[tool] = workspaceToolState if workspaceToolState.open { state.tools .filter { $0 != tool && $1.location == workspaceToolState.location } .forEach { state.tools[$0.0]?.open = false } } case let .setToolsState(tools): state.orderedTools = [] for toolPair in tools { let toolId = toolPair.0 let toolState = toolPair.1 state.tools[toolId] = toolState if toolState.open { state.tools .filter { $0 != toolId && $1.location == toolState.location } .forEach { state.tools[$0.0]?.open = false } } state.orderedTools.append(toolId) } case let .toggleAllTools(value): state.isAllToolsVisible = value case let .toggleToolButtons(value): state.isToolButtonsVisible = value case let .setTheme(theme): state.appearance.theme = Marked(theme) case .makeSessionTemporary: state.isTemporarySession = true default: return tuple } return ReduceTuple(state: state, action: tuple.action, modified: true) } } ================================================ FILE: VimR/VimR/MarkdownPreviewMiddleware.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Down import Foundation import os final class MarkdownPreviewMiddleware { let markdownTool: MarkdownToolMiddleware let mainWindow: MainWindowMiddleware init() { let generator = PreviewGenerator() self.markdownTool = MarkdownToolMiddleware(generator: generator) self.mainWindow = MainWindowMiddleware(generator: generator) } class PreviewGenerator { init() { // We know that the files are there! // swiftlint:disable force_try self.template = try! String(contentsOf: Resources.markdownTemplateUrl) self.emptyHtmlTemplate = try! String(contentsOf: Resources.emptyHtmlTemplateUrl) self.errorHtmlTemplate = try! String(contentsOf: Resources.errorHtmlTemplateUrl) self.saveFirstHtmlTemplate = try! String(contentsOf: Resources.saveFirstHtmlTemplateUrl) // swiftlint:enable force_try self.updateCssOverrides(with: Theme.default) } func apply(_ state: MainWindow.State, uuid: UUID) { let preview = state.preview if state.appearance.theme.mark != self.themeToken { self.updateCssOverrides(with: state.appearance.theme.payload) self.themeToken = state.appearance.theme.mark } self.removePreviewHtmlFile(uuid: uuid) guard let htmlUrl = preview.html else { return } switch preview.status { case .none: self.writePage(html: self.emptyHtml, uuid: uuid, url: htmlUrl) case .notSaved: self.writePage(html: self.saveFirstHtml, uuid: uuid, url: htmlUrl) case .error: self.writePage(html: self.errorHtml, uuid: uuid, url: htmlUrl) case .markdown: guard let buffer = preview.buffer else { return } do { try self.render( buffer, to: htmlUrl, customMarkdownProcessor: state.customMarkdownProcessor ) self.previewFiles[uuid] = htmlUrl } catch let error as NSError { // FIXME: error handling! self.logger.error("error while rendering \(buffer) to \(htmlUrl): \(error)") return } } } private func writePage(html: String, uuid: UUID, url: URL) { try? html.write(to: url, atomically: true, encoding: .utf8) self.previewFiles[uuid] = url } private func removePreviewHtmlFile(uuid: UUID) { guard let previewUrl = self.previewFiles[uuid] else { return } try? FileManager.default.removeItem(at: previewUrl) self.previewFiles.removeValue(forKey: uuid) } private func updateCssOverrides(with theme: Theme) { self.cssOverrides = CssUtils.cssOverrides(with: theme) self.emptyHtml = self.fillCssOverrides(template: self.emptyHtmlTemplate) self.errorHtml = self.fillCssOverrides(template: self.errorHtmlTemplate) self.saveFirstHtml = self.fillCssOverrides(template: self.saveFirstHtmlTemplate) } private var themeToken = Token() private var cssOverrides = "" private var emptyHtml = "" private var errorHtml = "" private var saveFirstHtml = "" private let emptyHtmlTemplate: String private let errorHtmlTemplate: String private let saveFirstHtmlTemplate: String private let template: String private var previewFiles = [UUID: URL]() private let logger = Logger( subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.middleware ) private func render( _ bufferUrl: URL, to htmlUrl: URL, customMarkdownProcessor cmp: String? ) throws { let body: String if let cmp, cmp != "" { let content = try Data(contentsOf: bufferUrl) let sh = Process() let output = Pipe() let input = Pipe() let err = Pipe() sh.executableURL = URL(fileURLWithPath: "/usr/bin/env") sh.arguments = ["bash", "-l", "-c", cmp] sh.standardInput = input sh.standardOutput = output sh.standardError = err input.fileHandleForWriting.write(content) input.fileHandleForWriting.closeFile() try sh.run() body = String(data: output.fileHandleForReading.readDataToEndOfFile(), encoding: .utf8) ?? "" } else { let md = try String(contentsOf: bufferUrl) let down = Down(markdownString: md) body = try down.toHTML(DownOptions.sourcePos) } let html = self.filledTemplate(body: body, title: bufferUrl.lastPathComponent) let htmlFilePath = htmlUrl.path try html.write(toFile: htmlFilePath, atomically: true, encoding: .utf8) } private func fillCssOverrides(template: String) -> String { template.replacingOccurrences(of: "{{ css-overrides }}", with: self.cssOverrides) } private func filledTemplate(body: String, title: String) -> String { self.template .replacingOccurrences(of: "{{ title }}", with: title) .replacingOccurrences(of: "{{ body }}", with: body) .replacingOccurrences(of: "{{ css-overrides }}", with: self.cssOverrides) } } class MarkdownToolMiddleware: MiddlewareType { typealias StateType = MainWindow.State typealias ActionType = UuidAction init(generator: PreviewGenerator) { self.generator = generator } func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction { { tuple in let result = reduce(tuple) let uuidAction = tuple.action guard case .refreshNow = uuidAction.payload else { return result } self.generator.apply(result.state, uuid: uuidAction.uuid) return result } } private let generator: PreviewGenerator } class MainWindowMiddleware: MiddlewareType { typealias StateType = MainWindow.State typealias ActionType = UuidAction init(generator: PreviewGenerator) { self.generator = generator } func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction { { tuple in let result = reduce(tuple) let uuidAction = tuple.action switch uuidAction.payload { case .newCurrentBuffer, .bufferWritten, .setTheme: self.generator.apply(result.state, uuid: uuidAction.uuid) default: return result } return result } } private let generator: PreviewGenerator } } ================================================ FILE: VimR/VimR/MarkdownPreviewReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import NvimView final class MarkdownPreviewReducer { private static func previewState( for uuid: UUID, baseUrl: URL, buffer: NvimView.Buffer?, editorPosition: Marked, previewPosition: Marked ) -> PreviewState { var state = PreviewState( html: self.htmlUrl(with: uuid), server: self.serverUrl(for: uuid, baseUrl: baseUrl, lastComponent: indexHtml), editorPosition: editorPosition, previewPosition: previewPosition ) state.status = .notSaved guard let url = buffer?.url else { return state } state.status = .error guard FileUtils.fileExists(at: url) else { return state } state.status = .none guard self.extensions.contains(url.pathExtension) else { return state } state.status = .markdown state.buffer = url return state } private static func serverUrl(for uuid: UUID, baseUrl: URL, lastComponent: String) -> URL { baseUrl.appendingPathComponent("\(uuid)/tools/markdown/\(lastComponent)") } private static func htmlUrl(with uuid: UUID) -> URL { FileUtils.tempDir().appendingPathComponent("\(uuid)-markdown-index.html") } private static let extensions = Set(["md", "markdown", "mdown", "mkdn", "mkd"]) let previewTool: PreviewToolReducer let buffersList: BuffersListReducer let mainWindow: MainWindowReducer init(baseServerUrl: URL) { self.previewTool = PreviewToolReducer(baseServerUrl: baseServerUrl) self.buffersList = BuffersListReducer(baseServerUrl: baseServerUrl) self.mainWindow = MainWindowReducer(baseServerUrl: baseServerUrl) } class PreviewToolReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case .refreshNow: state.preview = MarkdownPreviewReducer.previewState( for: tuple.state.uuid, baseUrl: self.baseServerUrl, buffer: state.currentBuffer, editorPosition: state.preview.editorPosition, previewPosition: state.preview.previewPosition ) state.preview.lastSearch = .reload case let .reverseSearch(to: position): state.preview.previewPosition = Marked(position) state.preview.lastSearch = .reverse case let .scroll(to: position): if state.preview.lastSearch == .reload { state.preview.lastSearch = .none break } guard state.previewTool.isReverseSearchAutomatically, state.preview.lastSearch != .forward else { state.preview.lastSearch = .none state.preview.previewPosition = Marked( mark: state.preview.previewPosition.mark, payload: position ) break } state.preview.previewPosition = Marked(position) state.preview.lastSearch = .reverse default: return tuple } return ReduceTuple(state: state, action: tuple.action, modified: true) } init(baseServerUrl: URL) { self.baseServerUrl = baseServerUrl } private let baseServerUrl: URL } class BuffersListReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case let .open(buffer): state.preview = MarkdownPreviewReducer.previewState( for: tuple.state.uuid, baseUrl: self.baseServerUrl, buffer: buffer, editorPosition: Marked(.beginning), previewPosition: Marked(.beginning) ) state.preview.lastSearch = .none } return ReduceTuple(state: state, action: tuple.action, modified: true) } init(baseServerUrl: URL) { self.baseServerUrl = baseServerUrl } private let baseServerUrl: URL } class MainWindowReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case let .newCurrentBuffer(buffer): state.preview = MarkdownPreviewReducer.previewState( for: tuple.state.uuid, baseUrl: self.baseServerUrl, buffer: buffer, editorPosition: state.preview.editorPosition, previewPosition: state.preview.previewPosition ) state.preview.lastSearch = .none case .bufferWritten: state.preview = MarkdownPreviewReducer.previewState( for: tuple.state.uuid, baseUrl: self.baseServerUrl, buffer: state.currentBuffer, editorPosition: state.preview.editorPosition, previewPosition: state.preview.previewPosition ) state.preview.lastSearch = .reload case let .setCursor(to: position): if state.preview.lastSearch == .reload { state.preview.lastSearch = .none break } guard state.previewTool.isForwardSearchAutomatically, state.preview.lastSearch != .reverse else { state.preview.editorPosition = Marked( mark: state.preview.editorPosition.mark, payload: position.payload ) state.preview.lastSearch = .none break } state.preview.editorPosition = Marked(position.payload) // .none because the forward search does not invoke .scroll above. state.preview.lastSearch = .none case .close: state.preview = self.stateForClose(state) state.preview.lastSearch = .none default: return tuple } return ReduceTuple(state: state, action: tuple.action, modified: true) } init(baseServerUrl: URL) { self.baseServerUrl = baseServerUrl } private func stateForClose(_ state: StateType) -> PreviewState { PreviewState( status: .none, html: MarkdownPreviewReducer.htmlUrl(with: state.uuid), server: MarkdownPreviewReducer.serverUrl( for: state.uuid, baseUrl: self.baseServerUrl, lastComponent: indexHtml ), editorPosition: state.preview.editorPosition, previewPosition: state.preview.previewPosition ) } private let baseServerUrl: URL } } private let indexHtml = "index.html" ================================================ FILE: VimR/VimR/MarkdownTool.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Combine import NvimView import os import PureLayout import WebKit final class MarkdownTool: NSView, UiComponent, WKNavigationDelegate { typealias StateType = MainWindow.State enum Action { case refreshNow case reverseSearch(to: Position) case scroll(to: Position) case setAutomaticReverseSearch(to: Bool) case setAutomaticForwardSearch(to: Bool) case setRefreshOnWrite(to: Bool) } let uuid = UUID() let mainWinUuid: UUID let menuItems: [NSMenuItem] required init(context: ReduxContext, state: StateType) { self.context = context self.emit = context.actionEmitter.typedEmit() self.mainWinUuid = state.uuid let configuration = WKWebViewConfiguration() configuration.userContentController = self.userContentController self.webview = WKWebView(frame: CGRect.zero, configuration: configuration) let refreshMenuItem = NSMenuItem(title: "Refresh Now", action: nil, keyEquivalent: "") let forwardSearchMenuItem = NSMenuItem(title: "Forward Search", action: nil, keyEquivalent: "") let reverseSearchMenuItem = NSMenuItem(title: "Reverse Search", action: nil, keyEquivalent: "") let automaticForward = self.automaticForwardMenuItem let automaticReverse = self.automaticReverseMenuItem let refreshOnWrite = self.refreshOnWriteMenuItem automaticForward.boolState = state.previewTool.isForwardSearchAutomatically automaticReverse.boolState = state.previewTool.isReverseSearchAutomatically refreshOnWrite.boolState = state.previewTool.isRefreshOnWrite self.menuItems = [ refreshMenuItem, forwardSearchMenuItem, reverseSearchMenuItem, NSMenuItem.separator(), automaticForward, automaticReverse, NSMenuItem.separator(), refreshOnWrite, ] super.init(frame: .zero) self.configureForAutoLayout() refreshMenuItem.target = self refreshMenuItem.action = #selector(MarkdownTool.refreshNowAction) forwardSearchMenuItem.target = self forwardSearchMenuItem.action = #selector(MarkdownTool.forwardSearchAction) reverseSearchMenuItem.target = self reverseSearchMenuItem.action = #selector(MarkdownTool.reverseSearchAction) automaticForward.target = self automaticForward.action = #selector(MarkdownTool.automaticForwardSearchAction) automaticReverse.target = self automaticReverse.action = #selector(MarkdownTool.automaticReverseSearchAction) refreshOnWrite.target = self refreshOnWrite.action = #selector(MarkdownTool.refreshOnWriteAction) self.addViews() self.webview.navigationDelegate = self if let url = state.preview.server { self.webview.load(URLRequest(url: url)) } context.subscribe(uuid: self.uuid) { appState in guard let state = appState.mainWindows[self.mainWinUuid] else { return } if state.viewToBeFocused != nil, case .markdownPreview = state.viewToBeFocused! { self.beFirstResponder() } self.automaticForwardMenuItem.boolState = state.previewTool.isForwardSearchAutomatically self.automaticReverseMenuItem.boolState = state.previewTool.isReverseSearchAutomatically self.refreshOnWriteMenuItem.boolState = state.previewTool.isRefreshOnWrite if state.preview.status == .markdown, state.previewTool.isForwardSearchAutomatically, state.preview.editorPosition.hasDifferentMark(as: self.editorPosition) { self.forwardSearch(position: state.preview.editorPosition.payload) } self.editorPosition = state.preview.editorPosition guard state.preview.updateDate > self.lastUpdateDate else { return } guard let serverUrl = state.preview.server else { return } if serverUrl != self.url { self.url = serverUrl self.scrollTop = 0 self.previewPosition = Position.beginning } self.lastUpdateDate = state.preview.updateDate self.webview.load(URLRequest(url: serverUrl)) } self.webviewMessageHandler.source .throttle(for: .milliseconds(750), scheduler: RunLoop.main, latest: true) .sink(receiveValue: { [weak self] position, scrollTop in guard let mainWinUuid = self?.mainWinUuid, let previewPosition = self?.previewPosition else { return } self?.previewPosition = position self?.scrollTop = scrollTop self?.emit(UuidAction(uuid: mainWinUuid, action: .scroll(to: previewPosition))) }) .store(in: &self.cancellables) } func cleanup() { self.context.unsubscribe(uuid: self.uuid) self.webviewMessageHandler.subject.send(completion: .finished) self.cancellables.removeAll() self.webview.navigationDelegate = nil self.webview.removeFromSuperview() } private func addViews() { self.webview.navigationDelegate = self self.userContentController.add( self.webviewMessageHandler, name: "com_vimr_tools_preview_markdown" ) self.webview.configureForAutoLayout() self.addSubview(self.webview) self.webview.autoPinEdgesToSuperviewEdges() } func webView( _: WKWebView, didFailProvisionalNavigation _: WKNavigation!, withError error: Error ) { self.logger.error("ERROR preview component's webview: \(error)") } func webView(_: WKWebView, didFinish _: WKNavigation!) { self.webview.evaluateJavaScript("document.body.scrollTop = \(self.scrollTop)") } private let context: ReduxContext private let emit: (UuidAction) -> Void private var cancellables = Set() private let webview: WKWebView private var isOpen = false private var url: URL? private var lastUpdateDate = Date.distantPast private var editorPosition = Marked(Position.beginning) private var previewPosition = Position.beginning private var scrollTop = 0 private let userContentController = WKUserContentController() private let webviewMessageHandler = WebviewMessageHandler() private let automaticForwardMenuItem = NSMenuItem( title: "Automatic Forward Search", action: nil, keyEquivalent: "" ) private let automaticReverseMenuItem = NSMenuItem( title: "Automatic Reverse Search", action: nil, keyEquivalent: "" ) private let refreshOnWriteMenuItem = NSMenuItem( title: "Refresh on Write", action: nil, keyEquivalent: "" ) private let logger = Logger(subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.ui) @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private func forwardSearch(position: Position) { self.webview .evaluateJavaScript("scrollToPosition(\(position.row), \(position.column));") { result, _ in if let scrollTop = result as? Int { self.scrollTop = scrollTop } } } } // MARK: - Actions extension MarkdownTool { @objc func refreshNowAction(_: Any?) { self.emit(UuidAction(uuid: self.mainWinUuid, action: .refreshNow)) } @objc func forwardSearchAction(_: Any?) { self.forwardSearch(position: self.editorPosition.payload) } @objc func reverseSearchAction(_: Any?) { self.emit(UuidAction(uuid: self.mainWinUuid, action: .reverseSearch(to: self.previewPosition))) } @objc func automaticForwardSearchAction(_ sender: NSMenuItem) { self .emit(UuidAction( uuid: self.mainWinUuid, action: .setAutomaticForwardSearch(to: !sender.boolState) )) } @objc func automaticReverseSearchAction(_ sender: NSMenuItem) { self .emit(UuidAction( uuid: self.mainWinUuid, action: .setAutomaticReverseSearch(to: !sender.boolState) )) } @objc func refreshOnWriteAction(_ sender: NSMenuItem) { self.emit(UuidAction(uuid: self.mainWinUuid, action: .setRefreshOnWrite(to: !sender.boolState))) } } private class WebviewMessageHandler: NSObject, WKScriptMessageHandler { var source: AnyPublisher<(Position, Int), Never> { self.subject.eraseToAnyPublisher() } func userContentController(_: WKUserContentController, didReceive message: WKScriptMessage) { guard let msgBody = message.body as? [String: Int] else { return } guard let lineBegin = msgBody["lineBegin"], let columnBegin = msgBody["columnBegin"], let scrollTop = msgBody["scrollTop"] else { return } self.subject.send((Position(row: lineBegin, column: columnBegin), scrollTop)) } fileprivate let subject = PassthroughSubject<(Position, Int), Never>() } ================================================ FILE: VimR/VimR/MarkdownToolReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class MarkdownToolReducer: ReducerType { typealias StateType = MainWindow.State typealias ActionType = UuidAction init(baseServerUrl: URL) { self.baseServerUrl = baseServerUrl } func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action.payload { case let .setAutomaticReverseSearch(to: value): state.previewTool.isReverseSearchAutomatically = value case let .setAutomaticForwardSearch(to: value): state.previewTool.isForwardSearchAutomatically = value case let .setRefreshOnWrite(to: value): state.previewTool.isRefreshOnWrite = value default: return tuple } return ReduceTuple(state: state, action: tuple.action, modified: true) } private let baseServerUrl: URL } ================================================ FILE: VimR/VimR/OpenQuicklyFileViewRow.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa final class OpenQuicklyFileViewRow: NSTableRowView { override func drawSelection(in dirtyRect: NSRect) { if self.isSelected { NSColor.selectedControlColor.set() } else { NSColor.clear.set() } self.rectsBeingDrawn().forEach { $0.intersection(dirtyRect).fill(using: .sourceOver) } } } ================================================ FILE: VimR/VimR/OpenQuicklyReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class OpenQuicklyReducer: ReducerType { typealias StateType = AppState typealias ActionType = OpenQuicklyWindow.Action let mainWindow = MainWindowReducer() func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var appState = tuple.state switch tuple.action { case let .setUsesVcsIgnores(usesVcsIgnores): guard let uuid = appState.currentMainWindowUuid else { return tuple } appState.mainWindows[uuid]?.usesVcsIgnores = usesVcsIgnores case let .open(url): guard let uuid = appState.currentMainWindowUuid else { return tuple } appState.mainWindows[uuid]?.urlsToOpen[url] = .default appState.openQuickly.open = false case .close: appState.openQuickly.open = false } return ReduceTuple(state: appState, action: tuple.action, modified: true) } class MainWindowReducer: ReducerType { typealias StateType = AppState typealias ActionType = UuidAction func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { switch tuple.action.payload { case .openQuickly: var appState = tuple.state guard let uuid = appState.currentMainWindowUuid, appState.mainWindows[uuid]?.cwd != nil else { return tuple } appState.openQuickly.open = true return ReduceTuple(state: appState, action: tuple.action, modified: true) default: return tuple } } } } ================================================ FILE: VimR/VimR/OpenQuicklyWindow.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Combine import Commons import os import PureLayout final class OpenQuicklyWindow: NSObject, UiComponent, NSWindowDelegate, NSTextFieldDelegate, NSTableViewDelegate { typealias StateType = AppState typealias ActionType = Action enum Action { case setUsesVcsIgnores(Bool) case open(URL) case close } let uuid = UUID() @objc private(set) dynamic var unsortedScoredUrls = [ScoredUrl]() // Call this only when quitting func cleanUp() { self.searchServicePerRootUrl.values.forEach { $0.cleanUp() } self.searchServicePerRootUrl.removeAll() } @objc func useVcsAction(_: Any?) { self.scanToken = Token() self.currentSearchService?.stopScanScore() self.endProgress() self.unsortedScoredUrls.removeAll() self.emit(.setUsesVcsIgnores(self.useVcsIgnoresCheckBox.boolState)) } required init(context: ReduxContext, state: StateType) { self.emit = context.actionEmitter.typedEmit() self.windowController = NSWindowController(windowNibName: NSNib.Name("OpenQuicklyWindow")) self.searchStream = NotificationCenter.default .publisher(for: NSControl.textDidChangeNotification, object: self.searchField) .map { ($0.object as? NSTextField)?.stringValue ?? "" } .debounce(for: .milliseconds(500), scheduler: RunLoop.main) .removeDuplicates() super.init() self.searchField.delegate = self self.configureWindow() self.addViews() context.subscribe(uuid: self.uuid) { state in self.subscription(state) } } // MARK: - Private private let emit: (Action) -> Void private let searchStream: any Publisher private var perSessionCancellables = Set() private var cwdPathCompsCount = 0 private var usesVcsIgnores = true private var scanToken = Token() private var searchServicePerRootUrl: [URL: FuzzySearchService] = [:] private var currentSearchService: FuzzySearchService? private let scoredUrlsController = NSArrayController() private let windowController: NSWindowController private let titleField = NSTextField.defaultTitleTextField() private let useVcsIgnoresCheckBox = NSButton(forAutoLayout: ()) private let searchField = NSTextField(forAutoLayout: ()) private let progressIndicator = NSProgressIndicator(forAutoLayout: ()) private let cwdControl = NSPathControl(forAutoLayout: ()) private let fileView = NSTableView.standardTableView() private let logger = Logger(subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.ui) private var window: NSWindow { self.windowController.window! } private func configureWindow() { [ NSWindow.ButtonType.closeButton, NSWindow.ButtonType.miniaturizeButton, NSWindow.ButtonType.zoomButton, ].forEach { self.window.standardWindowButton($0)?.isHidden = true } self.window.delegate = self } private func subscription(_ state: StateType) { self.updateRootUrls(state: state) guard state.openQuickly.open, let curWinState = state.currentMainWindow else { self.windowController.close() return } let windowIsOpen = self.window.isKeyWindow // The window is open and the user changed the setting if self.usesVcsIgnores != curWinState.usesVcsIgnores, windowIsOpen { self.usesVcsIgnores = curWinState.usesVcsIgnores self.useVcsIgnoresCheckBox.boolState = curWinState.usesVcsIgnores self.scanToken = Token() // FIXME: recreate the service? self.currentSearchService?.usesVcsIgnores = self.usesVcsIgnores self.unsortedScoredUrls.removeAll() let pattern = self.searchField.stringValue if pattern.count >= 2 { self.scanAndScore(pattern) } return } // already open, so do nothing if windowIsOpen { return } self.usesVcsIgnores = curWinState.usesVcsIgnores // TODO: read global vcs ignores self.prepareSearch(curWinState: curWinState) self.windowController.showWindow(nil) self.searchField.beFirstResponder() } private func prepareSearch(curWinState: MainWindow.State) { self.usesVcsIgnores = curWinState.usesVcsIgnores self.useVcsIgnoresCheckBox.boolState = curWinState.usesVcsIgnores let cwd = curWinState.cwd self.currentSearchService = self.searchServicePerRootUrl[cwd] self.cwdPathCompsCount = cwd.pathComponents.count self.cwdControl.url = cwd self.searchStream .sink { [weak self] pattern in self?.scanAndScore(pattern) } .store(in: &self.perSessionCancellables) } private func reset() { self.scanToken = Token() self.currentSearchService?.stopScanScore() self.currentSearchService = nil self.endProgress() self.unsortedScoredUrls.removeAll() self.searchField.stringValue = "" self.perSessionCancellables.removeAll() } private func scanAndScore(_ pattern: String) { self.currentSearchService?.stopScanScore() guard pattern.count >= 2 else { self.unsortedScoredUrls.removeAll() return } self.scanToken = Token() let localToken = self.scanToken self.unsortedScoredUrls.removeAll() self.currentSearchService?.scanScore( for: pattern, beginCallback: { self.startProgress() }, endCallback: { self.endProgress() }, callback: { scoredUrls in DispatchQueue.main.async { guard localToken == self.scanToken else { return } self.unsortedScoredUrls.append(contentsOf: scoredUrls) } } ) } // Since we use GCD's main queue, we can set it to nonisolated private nonisolated func startProgress() { Task { @MainActor in self.progressIndicator.startAnimation(self) } } // Since we use GCD's main queue, we can set it to nonisolated private nonisolated func endProgress() { Task { @MainActor in self.progressIndicator.stopAnimation(self) } } private func updateRootUrls(state: AppState) { let urlsToMonitor = Set(state.mainWindows.map { $1.cwd }) let currentUrls = Set(self.searchServicePerRootUrl.map { url, _ in url }) let newUrls = urlsToMonitor.subtracting(currentUrls) let obsoleteUrls = currentUrls.subtracting(urlsToMonitor) for url in newUrls { dlog.debug("Adding \(url) and its service.") guard let service = try? FuzzySearchService(root: url) else { self.logger.error("Could not create FileService for \(url)") continue } self.searchServicePerRootUrl[url] = service } for url in obsoleteUrls { dlog.debug("Removing \(url) and its service.") self.searchServicePerRootUrl.removeValue(forKey: url) } } private func addViews() { let useVcsIg = self.useVcsIgnoresCheckBox useVcsIg.setButtonType(.switch) useVcsIg.controlSize = .mini useVcsIg.title = "Use VCS Ignores" useVcsIg.target = self useVcsIg.action = #selector(OpenQuicklyWindow.useVcsAction) let title = self.titleField title.font = .boldSystemFont(ofSize: 11) title.stringValue = "Open Quickly" let progressIndicator = self.progressIndicator progressIndicator.isIndeterminate = true progressIndicator.isDisplayedWhenStopped = false progressIndicator.style = .spinning progressIndicator.controlSize = .small let fileView = self.fileView fileView.intercellSpacing = CGSize(width: 4, height: 4) let c = self.scoredUrlsController c.avoidsEmptySelection = false c.preservesSelection = true c.objectClass = ScoredUrl.self c.sortDescriptors = [NSSortDescriptor(key: "score", ascending: false)] c.automaticallyRearrangesObjects = true c.bind(.contentArray, to: self, withKeyPath: "unsortedScoredUrls") fileView.bind(.content, to: c, withKeyPath: "arrangedObjects") fileView.bind(.selectionIndexes, to: c, withKeyPath: "selectionIndexes") fileView.delegate = self let fileScrollView = NSScrollView.standardScrollView() fileScrollView.autoresizesSubviews = true fileScrollView.documentView = fileView let cwdControl = self.cwdControl cwdControl.pathStyle = .standard cwdControl.backgroundColor = NSColor.clear cwdControl.refusesFirstResponder = true cwdControl.cell?.controlSize = .small cwdControl.cell?.font = NSFont.systemFont(ofSize: NSFont.smallSystemFontSize) cwdControl.setContentCompressionResistancePriority(.defaultLow, for: .horizontal) let contentView = self.window.contentView! contentView.addSubview(title) contentView.addSubview(useVcsIg) contentView.addSubview(searchField) contentView.addSubview(progressIndicator) contentView.addSubview(fileScrollView) contentView.addSubview(cwdControl) title.autoPinEdge(toSuperviewEdge: .left, withInset: 8) title.autoPinEdge(toSuperviewEdge: .top, withInset: 8) useVcsIg.autoAlignAxis(.horizontal, toSameAxisOf: title) useVcsIg.autoPinEdge(toSuperviewEdge: .right, withInset: 8) let searchField = self.searchField searchField.autoPinEdge(.top, to: .bottom, of: useVcsIg, withOffset: 8) searchField.autoPinEdge(.left, to: .left, of: title) searchField.autoPinEdge(.right, to: .right, of: useVcsIg) fileScrollView.autoPinEdge(.top, to: .bottom, of: searchField, withOffset: 8) fileScrollView.autoPinEdge(toSuperviewEdge: .left, withInset: -1) fileScrollView.autoPinEdge(toSuperviewEdge: .right, withInset: -1) fileScrollView.autoSetDimension(.height, toSize: 200, relation: .greaterThanOrEqual) cwdControl.autoPinEdge(.top, to: .bottom, of: fileScrollView, withOffset: 4) cwdControl.autoPinEdge(toSuperviewEdge: .left, withInset: 2) cwdControl.autoPinEdge(toSuperviewEdge: .bottom, withInset: 4) progressIndicator.autoAlignAxis(.horizontal, toSameAxisOf: cwdControl) progressIndicator.autoPinEdge(.left, to: .right, of: cwdControl, withOffset: 4) progressIndicator.autoPinEdge(toSuperviewEdge: .right, withInset: 8) } } // MARK: - NSTableViewDelegate extension OpenQuicklyWindow { func tableView(_: NSTableView, rowViewForRow _: Int) -> NSTableRowView? { OpenQuicklyFileViewRow() } func tableView(_ tableView: NSTableView, viewFor _: NSTableColumn?, row: Int) -> NSView? { let cachedCell = ( tableView.makeView( withIdentifier: NSUserInterfaceItemIdentifier("file-view-row"), owner: self ) as? ImageAndTextTableCell )?.reset() let cell = cachedCell ?? ImageAndTextTableCell(withIdentifier: "file-view-row") guard let sortedUrls = self.scoredUrlsController.arrangedObjects as? [ScoredUrl] else { self.logger.error("Could not convert arranged objects to [ScoredUrl].") return nil } let url = sortedUrls[row].url cell.attributedText = self.rowText(for: url as URL) cell.image = FileUtils.icon(forUrl: url) return cell } private func rowText(for url: URL) -> NSAttributedString { let pathComps = url.pathComponents let truncatedPathComps = pathComps[self.cwdPathCompsCount.. Bool { switch commandSelector { case NSSelectorFromString("cancelOperation:"): self.window.performClose(self) return true case NSSelectorFromString("insertNewline:"): guard let sortedUrls = self.scoredUrlsController.arrangedObjects as? [ScoredUrl] else { self.logger.error("Could not convert arranged objects to [ScoredUrl].") return true } let selectedRow = self.fileView.selectedRow guard selectedRow >= 0, selectedRow < sortedUrls.count else { return false } self.emit(.open(sortedUrls[selectedRow].url)) self.window.performClose(self) return true case NSSelectorFromString("moveUp:"): self.moveSelection(ofTableView: self.fileView, byDelta: -1) return true case NSSelectorFromString("moveDown:"): self.moveSelection(ofTableView: self.fileView, byDelta: 1) return true default: return false } } private func moveSelection(ofTableView tableView: NSTableView, byDelta delta: Int) { let selectedRow = tableView.selectedRow let lastIdx = tableView.numberOfRows - 1 let targetIdx: Int = if selectedRow + delta < 0 { 0 } else if selectedRow + delta > lastIdx { lastIdx } else { selectedRow + delta } tableView.selectRowIndexes(IndexSet(integer: targetIdx), byExtendingSelection: false) tableView.scrollRowToVisible(targetIdx) } } // MARK: - NSWindowDelegate extension OpenQuicklyWindow { func windowShouldClose(_: NSWindow) -> Bool { self.emit(.close) return false } func windowWillClose(_: Notification) { self.reset() } func windowDidResignKey(_: Notification) { self.window.performClose(self) } } ================================================ FILE: VimR/VimR/PrefMiddleware.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa @preconcurrency import DictionaryCoding import os import UserNotifications final class PrefMiddleware: MiddlewareType { typealias StateType = AppState typealias ActionType = Sendable static let compatibleVersion = "168" let mainWindow = MainWindowMiddleware() // The following should only be used when Cmd-Q'ing func applyPref(from appState: AppState) { do { let dictionary: [String: Any] = try dictEncoder.encode(appState) defaults.set(dictionary, forKey: PrefMiddleware.compatibleVersion) defaults.synchronize() } catch { self.logger.error("AppState could not converted to Dictionary: \(error)") } } func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction { { tuple in let result = reduce(tuple) guard result.modified else { return result } let newFont = result.state.mainWindowTemplate.appearance.font let traits = newFont.fontDescriptor.symbolicTraits if newFont != self.currentFont { self.currentFont = newFont let newFontNameText = if let newFontName = newFont.displayName { ", \(newFontName)," } else { "" } if !traits.contains(.monoSpace) { let content = UNMutableNotificationContent() content.title = "No monospaced font" content.body = "The font you selected\(newFontNameText) does not seem " + "to be a monospaced font. The rendering will most likely be broken." content.sound = .default let request = UNNotificationRequest( identifier: UUID().uuidString, content: content, trigger: nil ) UNUserNotificationCenter.current().add(request) } } do { let dictionary: [String: Any] = try dictEncoder.encode(result.state) defaults.set(dictionary, forKey: PrefMiddleware.compatibleVersion) defaults.synchronize() } catch { self.logger.error("AppState could not converted to Dictionary: \(error)") } return result } } private let logger = Logger( subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.middleware ) private var currentFont = NSFont.userFixedPitchFont(ofSize: 13)! class MainWindowMiddleware: MiddlewareType { typealias StateType = AppState typealias ActionType = UuidAction func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction { { tuple in let result = reduce(tuple) guard case .close = tuple.action.payload else { return result } do { let dictionary: [String: Any] = try dictEncoder.encode(result.state) defaults.set(dictionary, forKey: PrefMiddleware.compatibleVersion) defaults.synchronize() } catch { self.logger.error("AppState could not converted to Dictionary: \(error)") } return result } } private let logger = Logger( subsystem: Defs.loggerSubsystem, category: Defs.LoggerCategory.middleware ) } } // UserDefaults is thread-safe // https://developer.apple.com/documentation/foundation/userdefaults#2926903 private nonisolated(unsafe) let defaults = UserDefaults.standard private let dictEncoder = DictionaryEncoder() ================================================ FILE: VimR/VimR/PrefPane.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa class PrefPane: NSView { // Return true to place this to the upper left corner when the scroll view is bigger than this // view. override var isFlipped: Bool { true } var displayName: String { preconditionFailure("Please override") } var pinToContainer: Bool { false } func paneWillAppear() { // noop, override } func windowWillClose() { // noop, override } } // MARK: - Control Utils extension PrefPane { func paneTitleTextField(title: String) -> NSTextField { let field = NSTextField.defaultTitleTextField() field.font = NSFont.boldSystemFont(ofSize: 16) field.alignment = .left field.stringValue = title return field } func titleTextField(title: String) -> NSTextField { let field = NSTextField.defaultTitleTextField() field.alignment = .right field.stringValue = title return field } func infoTextField(markdown: String) -> NSTextField { let field = NSTextField(forAutoLayout: ()) field.backgroundColor = NSColor.clear field.isEditable = false field.isBordered = false field.usesSingleLineMode = false // both are needed, otherwise hyperlink won't accept mousedown field.isSelectable = true field.allowsEditingTextAttributes = true field.attributedStringValue = NSAttributedString.infoLabel(markdown: markdown) return field } func configureCheckbox(button: NSButton, title: String, action: Selector) { button.title = title button.setButtonType(.switch) button.target = self button.action = action } } ================================================ FILE: VimR/VimR/PrefUtils.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import NvimView enum PrefUtils { static func value(from dict: [String: Any], for key: String) -> T? { dict[key] as? T } static func value(from dict: [String: Any], for key: String, default defaultValue: T) -> T { dict[key] as? T ?? defaultValue } static func dict(from dict: [String: Any], for key: String) -> [String: Any]? { dict[key] as? [String: Any] } static func float( from dict: [String: Any], for key: String, default defaultValue: Float ) -> Float { (dict[key] as? NSNumber)?.floatValue ?? defaultValue } static func float(from dict: [String: Any], for key: String) -> Float? { guard let number = dict[key] as? NSNumber else { return nil } return number.floatValue } static func bool(from dict: [String: Any], for key: String) -> Bool? { guard let number = dict[key] as? NSNumber else { return nil } return number.boolValue } static func bool(from dict: [String: Any], for key: String, default defaultValue: Bool) -> Bool { (dict[key] as? NSNumber)?.boolValue ?? defaultValue } static func string(from dict: [String: Any], for key: String) -> String? { dict[key] as? String } static func string( from dict: [String: Any], for key: String, default defaultValue: String ) -> String { dict[key] as? String ?? defaultValue } } ================================================ FILE: VimR/VimR/PrefWindow.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout final class PrefWindow: NSObject, UiComponent, NSWindowDelegate, NSTableViewDataSource, NSTableViewDelegate { typealias StateType = AppState enum Action { case close } let uuid = UUID() weak var shortcutService: ShortcutService? { didSet { let shortcutsPref = self.panes.first { pane in pane is ShortcutsPref } as? ShortcutsPref shortcutsPref?.shortcutService = self.shortcutService } } required init(context: ReduxContext, state: StateType) { self.emit = context.actionEmitter.typedEmit() self.openStatusMark = state.preferencesOpen.mark self.windowController = NSWindowController(windowNibName: NSNib.Name("PrefWindow")) self.panes = [ GeneralPref(context: context, state: state), ToolsPref(context: context, state: state), AppearancePref(context: context, state: state), KeysPref(context: context, state: state), ShortcutsPref(context: context, state: state), AdvancedPref(context: context, state: state), ] super.init() self.window.delegate = self self.addViews() context.subscribe(uuid: self.uuid) { state in if state.preferencesOpen.mark == self.openStatusMark { return } if state.preferencesOpen.payload == false { self.windowController.close() return } else { self.windowController.showWindow(self) } self.openStatusMark = state.preferencesOpen.mark } } private let emit: (Action) -> Void private var openStatusMark: Token private let windowController: NSWindowController private var window: NSWindow { self.windowController.window! } private let categoryView = NSTableView.standardSourceListTableView() private let categoryScrollView = NSScrollView.standardScrollView() private let paneContainer = NSScrollView(forAutoLayout: ()) private let panes: [PrefPane] private var currentPane: PrefPane { get { // swiftlint:disable:next force_cast self.paneContainer.documentView as! PrefPane } set { self.paneContainer.documentView = newValue // Auto-layout seems to be smart enough not to add redundant constraints. if newValue.pinToContainer { newValue.autoPinEdgesToSuperviewEdges() } } } private func addViews() { let categoryView = self.categoryView categoryView.dataSource = self categoryView.delegate = self let categoryScrollView = self.categoryScrollView categoryScrollView.documentView = categoryView let paneContainer = self.paneContainer paneContainer.hasVerticalScroller = true paneContainer.hasHorizontalScroller = true paneContainer.autohidesScrollers = true paneContainer.borderType = .noBorder paneContainer.autoresizesSubviews = false paneContainer.backgroundColor = NSColor.windowBackgroundColor self.window.contentView?.addSubview(categoryScrollView) self.window.contentView?.addSubview(paneContainer) categoryScrollView.autoSetDimension(.width, toSize: 150) categoryScrollView.autoPinEdge(toSuperviewEdge: .top, withInset: -1) categoryScrollView.autoPinEdge(toSuperviewEdge: .bottom, withInset: -1) categoryScrollView.autoPinEdge(toSuperviewEdge: .left, withInset: -1) paneContainer.autoSetDimension(.width, toSize: 200, relation: .greaterThanOrEqual) paneContainer.autoPinEdge(toSuperviewEdge: .top) paneContainer.autoPinEdge(toSuperviewEdge: .right) paneContainer.autoPinEdge(toSuperviewEdge: .bottom) paneContainer.autoPinEdge(.left, to: .right, of: categoryScrollView) self.currentPane = self.panes[0] } } // MARK: - NSWindowDelegate extension PrefWindow { func windowShouldClose(_: NSWindow) -> Bool { self.emit(.close) return false } func windowWillClose(_: Notification) { self.panes.forEach { $0.windowWillClose() } } } // MARK: - NSTableViewDataSource extension PrefWindow { @objc(numberOfRowsInTableView:) func numberOfRows(in _: NSTableView) -> Int { self.panes.count } @objc(tableView: objectValueForTableColumn:row:) func tableView( _: NSTableView, objectValueFor _: NSTableColumn?, row: Int ) -> Any? { self.panes[row].displayName } } // MARK: - NSTableViewDelegate extension PrefWindow { func tableViewSelectionDidChange(_: Notification) { let idx = self.categoryView.selectedRow self.panes[idx].paneWillAppear() self.currentPane = self.panes[idx] } } ================================================ FILE: VimR/VimR/PrefWindowReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class PrefWindowReducer: ReducerType { typealias StateType = AppState typealias ActionType = PrefWindow.Action func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action { case .close: state.preferencesOpen = Marked(false) } return ReduceTuple(state: state, action: tuple.action, modified: true) } } ================================================ FILE: VimR/VimR/Redux.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation import os enum ReduxTypes { typealias StateType = AppState typealias ActionType = Sendable typealias ReduceFunction = (ReduceTuple) -> ReduceTuple< StateType, ActionType > } struct ReduceTuple { var state: State let action: Action var modified: Bool } final class ActionEmitter { typealias ActionSubscription = (ReduxTypes.ActionType) -> Void private var subscribers = [ActionSubscription]() @MainActor func typedEmit() -> (T) -> Void { { [weak self] action in dlog.debug("Action emitted: \(action)") Task { @MainActor in self?.subscribers.forEach { $0(action) } } } } @MainActor func emit(_ action: ReduxTypes.ActionType) { Task { self.subscribers.forEach { $0(action) } } dlog.debug("Action emitted: \(action)") } func subscribe(_ subscription: @escaping ActionSubscription) { self.subscribers.append(subscription) } } protocol ReducerType { associatedtype StateType associatedtype ActionType: Sendable typealias TypedReduceTuple = ReduceTuple typealias ActionTypeErasedReduceTuple = ReduceTuple func typedReduce(_ tuple: TypedReduceTuple) -> TypedReduceTuple } extension ReducerType { func reduce(_ tuple: ActionTypeErasedReduceTuple) -> ActionTypeErasedReduceTuple { guard let typedAction = tuple.action as? ActionType else { return tuple } let typedResult = self.typedReduce(TypedReduceTuple( state: tuple.state, action: typedAction, modified: tuple.modified )) return .init( state: typedResult.state, action: typedResult.action, modified: typedResult.modified ) } } protocol MiddlewareType { associatedtype StateType associatedtype ActionType: Sendable typealias TypedReduceTuple = ReduceTuple typealias ActionTypeErasedReduceTuple = ReduceTuple typealias TypedActionReduceFunction = (TypedReduceTuple) -> ActionTypeErasedReduceTuple typealias ActionTypeErasedReduceFunction = (ActionTypeErasedReduceTuple) -> ActionTypeErasedReduceTuple func typedApply(_ reduce: @escaping TypedActionReduceFunction) -> TypedActionReduceFunction } extension MiddlewareType { func apply(_ reduce: @escaping ActionTypeErasedReduceFunction) -> ActionTypeErasedReduceFunction { { tuple in guard let typedAction = tuple.action as? ActionType else { return reduce(tuple) } let typedTuple = TypedReduceTuple( state: tuple.state, action: typedAction, modified: tuple.modified ) let typedReduce: (TypedReduceTuple) -> ActionTypeErasedReduceTuple = { typedTuple in reduce(.init( state: typedTuple.state, action: typedTuple.action, modified: typedTuple.modified )) } return self.typedApply(typedReduce)(typedTuple) } } } @MainActor protocol UiComponent { associatedtype StateType var uuid: UUID { get } init(context: ReduxContext, state: StateType) } ================================================ FILE: VimR/VimR/Resources.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation enum Resources { static let resourceUrl = Bundle.main.resourceURL! static let previewUrl = resourceUrl.appendingPathComponent("preview") static let cssOverridesTemplateUrl = resourceUrl .appendingPathComponent("markdown/color-overrides.css") static let cssUrl = resourceUrl.appendingPathComponent("markdown/github-markdown.css") static let markdownTemplateUrl = resourceUrl.appendingPathComponent("markdown/template.html") static let baseCssUrl = previewUrl.appendingPathComponent("base.css") static let emptyHtmlTemplateUrl = previewUrl.appendingPathComponent("empty.html") static let errorHtmlTemplateUrl = previewUrl.appendingPathComponent("error.html") static let saveFirstHtmlTemplateUrl = previewUrl.appendingPathComponent("save-first.html") static let selectFirstHtmlTemplateUrl = previewUrl.appendingPathComponent("select-first.html") } ================================================ FILE: VimR/VimR/RpcAppearanceReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa final class RpcAppearanceReducer: ReducerType { typealias StateType = AppState typealias ActionType = UuidAction func typedReduce(_ tuple: TypedReduceTuple) -> TypedReduceTuple { var state = tuple.state var modified = tuple.modified switch tuple.action.payload { case let .setFont(font): state.mainWindowTemplate.appearance.font = font modified = true case let .setLinespacing(linespacing): state.mainWindowTemplate.appearance.linespacing = linespacing modified = true case let .setCharacterspacing(characterspacing): state.mainWindowTemplate.appearance.characterspacing = characterspacing modified = true default: break } if modified { for key in state.mainWindows.keys { state.mainWindows[key]?.appearance = state.mainWindowTemplate.appearance } return TypedReduceTuple(state: state, action: tuple.action, modified: true) } else { return tuple } } } ================================================ FILE: VimR/VimR/RpcEvents.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation enum RpcEvent: String, CaseIterable { static let prefix = "com.qvacua.vimr.rpc-events" case makeSessionTemporary = "com.qvacua.vimr.rpc-events.make-session-temporary" case maximizeWindow = "com.qvacua.vimr.rpc-events.maximize-window" case toggleTools = "com.qvacua.vimr.rpc-events.toggle-tools" case toggleToolButtons = "com.qvacua.vimr.rpc-events.toggle-tool-buttons" case toggleFullScreen = "com.qvacua.vimr.rpc-events.toggle-fullscreen" case setFont = "com.qvacua.vimr.rpc-events.set-font" case setLinespacing = "com.qvacua.vimr.rpc-events.set-linespacing" case setCharacterspacing = "com.qvacua.vimr.rpc-events.set-characterspacing" case revealCurrentBufferInFileBrowser = "com.qvacua.vimr.rpc-events.reveal-current-buffer-in-file-browser" case refreshFileBrowser = "com.qvacua.vimr.rpc-events.refresh-file-browser" } ================================================ FILE: VimR/VimR/ScoredUrl.h ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ #import @interface ScoredUrl : NSObject @property (readonly, nonnull) NSURL *url; @property (readonly) double score; - (instancetype _Nonnull)initWithUrl:(NSURL * _Nonnull)url score:(double)score; - (NSString * _Nonnull)description; - (BOOL)isEqual:(id _Nullable)other; - (BOOL)isEqualToUrl:(ScoredUrl * _Nullable)url; - (NSUInteger)hash; @end ================================================ FILE: VimR/VimR/ScoredUrl.m ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ #import "ScoredUrl.h" @implementation ScoredUrl { } - (BOOL)isEqual:(id)other { if (other == self) return YES; if (!other || ![[other class] isEqual:[self class]]) return NO; return [self isEqualToUrl:other]; } - (BOOL)isEqualToUrl:(ScoredUrl *)url { if (self == url) return YES; if (url == nil) return NO; if (self.url != url.url && ![self.url isEqual:url.url]) return NO; if (self.score != url.score) return NO; return YES; } - (NSUInteger)hash { NSUInteger hash = self.url.hash; hash = hash * 31u + @(self.score).hash; return hash; } - (NSString *)description { NSMutableString *description = [NSMutableString stringWithFormat:@"<%@: ", NSStringFromClass([self class])]; [description appendFormat:@"self.url=%@", self.url.path]; [description appendFormat:@", self.score=%f", self.score]; [description appendString:@">"]; return description; } - (instancetype)initWithUrl:(NSURL *)url score:(double)score { self = [super init]; if (!self) { return nil; } _url = url; _score = score; return self; } @end ================================================ FILE: VimR/VimR/ShortcutItem.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa final class ShortcutItem: NSObject, Comparable { static func < (lhs: ShortcutItem, rhs: ShortcutItem) -> Bool { lhs.title < rhs.title } @objc dynamic var title: String @objc dynamic var isLeaf: Bool @objc dynamic var childrenCount: Int { self.children?.count ?? -1 } var identifier: String? { self.item?.identifier?.rawValue } var isContainer: Bool { !self.isLeaf } override var description: String { "" } let item: NSMenuItem? @objc dynamic var children: [ShortcutItem]? init(title: String, isLeaf: Bool, item: NSMenuItem?) { self.title = title self.isLeaf = isLeaf self.item = item self.children = isLeaf ? nil : [] } } ================================================ FILE: VimR/VimR/ShortcutService.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import ShortcutRecorder final class ShortcutService { func update(shortcuts: [Shortcut]) { self.shortcuts = shortcuts } func isMenuItemShortcut(_ event: NSEvent) -> Bool { if let shortcut = Shortcut(event: event), self.shortcuts.contains(shortcut) { return true } return false } private var shortcuts = [Shortcut]() } ================================================ FILE: VimR/VimR/ShortcutsPref.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout @preconcurrency import ShortcutRecorder final class ShortcutValueTransformer: ValueTransformer { // Should be fine to be nonisolated nonisolated(unsafe) static let shared = ShortcutValueTransformer() override static func allowsReverseTransformation() -> Bool { true } /// Data to Shortcut override func transformedValue(_ value: Any?) -> Any? { guard let value, let data = value as? Data else { return nil } return try? NSKeyedUnarchiver.unarchivedObject(ofClass: Shortcut.self, from: data) } /// Shortcut to Data override func reverseTransformedValue(_ value: Any?) -> Any? { // When the user clears a shortcut, the value is nil. // We want to store an empty shortcut instead of removing the key from UserDefaults // so that the default value is not restored on the next launch. let shortcut = (value as? Shortcut) ?? Shortcut(keyEquivalent: "") return try? NSKeyedArchiver.archivedData(withRootObject: shortcut, requiringSecureCoding: true) } } final class ShortcutsPref: PrefPane, UiComponent, NSOutlineViewDelegate, @preconcurrency RecorderControlDelegate { typealias StateType = AppState typealias ActionType = Sendable let uuid = UUID() @objc dynamic var content = [ShortcutItem]() override var displayName: String { "Shortcuts" } override var pinToContainer: Bool { true } weak var shortcutService: ShortcutService? { didSet { self.updateShortcutService() } } required init(context _: ReduxContext, state _: StateType) { // We know that the identifier is not empty. let shortcutSuiteName = Bundle.main.bundleIdentifier! + ".menuitems" self.shortcutsUserDefaults = UserDefaults(suiteName: shortcutSuiteName) self.shortcutsDefaultsController = NSUserDefaultsController( defaults: self.shortcutsUserDefaults, initialValues: nil ) super.init(frame: .zero) if let version = self.shortcutsUserDefaults?.integer(forKey: defaultsVersionKey), version > defaultsVersion { let alert = NSAlert() alert.alertStyle = .warning alert.messageText = "Incompatible Defaults for Shortcuts" alert.informativeText = "The stored defaults for shortcuts are not compatible with " + "this version of VimR. You can delete the stored defaults " + "by executing 'defaults delete com.qvacua.VimR.menuitems' " + "in Terminal." alert.runModal() return } self.migrateDefaults() self.initShortcutUserDefaults() self.addViews() self.initShortcutItems() if let children = self.shortcutItemsRoot.children { self.content.append(contentsOf: children) } self.initMenuItemsBindings() self.initOutlineViewBindings() self.shortcutList.expandItem(nil, expandChildren: true) } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private let shortcutList = NSOutlineView.standardOutlineView() private let shortcutScrollView = NSScrollView.standardScrollView() private let resetButton = NSButton(forAutoLayout: ()) private let treeController = NSTreeController() private let shortcutItemsRoot = ShortcutItem(title: "root", isLeaf: false, item: nil) private let keyEqTransformer = DataToKeyEquivalentTransformer() private let keyEqModTransformer = DataToKeyEquivalentModifierMaskTransformer() private let shortcutsUserDefaults: UserDefaults? private let shortcutsDefaultsController: NSUserDefaultsController private func migrateDefaults() { if (self.shortcutsUserDefaults?.integer(forKey: defaultsVersionKey) ?? 0) == defaultsVersion { return } for id in legacyDefaultShortcuts { let shortcut: Shortcut? = if let dict = self.shortcutsUserDefaults? .value(forKey: id) as? [String: Any] { Shortcut(dictionary: dict) } else { defaultShortcuts[id] ?? nil } let data = ShortcutValueTransformer.shared.reverseTransformedValue(shortcut) as? NSData self.shortcutsUserDefaults?.set(data, forKey: id) } self.shortcutsUserDefaults?.set(defaultsVersion, forKey: defaultsVersionKey) } private func initShortcutUserDefaults() { let transformer = ShortcutValueTransformer.shared for (id, shortcut) in defaultShortcuts where self.shortcutsUserDefaults?.value(forKey: id) == nil { let shortcutData = transformer.reverseTransformedValue(shortcut) as? NSData self.shortcutsUserDefaults?.set(shortcutData, forKey: id) } self.shortcutsUserDefaults?.set(defaultsVersion, forKey: defaultsVersionKey) } private func initOutlineViewBindings() { self.treeController.childrenKeyPath = "children" self.treeController.leafKeyPath = "isLeaf" self.treeController.countKeyPath = "childrenCount" self.treeController.objectClass = ShortcutItem.self self.treeController.avoidsEmptySelection = false self.treeController.preservesSelection = true self.treeController.sortDescriptors = [NSSortDescriptor(key: "title", ascending: true)] self.treeController.bind(.contentArray, to: self, withKeyPath: "content") self.shortcutList.bind(.content, to: self.treeController, withKeyPath: "arrangedObjects") self.shortcutList.bind( .selectionIndexPaths, to: self.treeController, withKeyPath: "selectionIndexPaths" ) } private func traverseMenuItems(with fn: (String, NSMenuItem) -> Void) { var queue = self.shortcutItemsRoot.children ?? [] while !queue.isEmpty { guard let item = queue.popLast() else { break } if item.isContainer, let children = item.children { queue.append(contentsOf: children) continue } guard let menuItem = item.item, let identifier = item.identifier, item.isLeaf else { continue } fn(identifier, menuItem) } } private func initMenuItemsBindings() { self.traverseMenuItems { identifier, menuItem in menuItem.bind( NSBindingName("keyEquivalent"), to: self.shortcutsDefaultsController, withKeyPath: "values.\(identifier)", options: [.valueTransformer: self.keyEqTransformer] ) menuItem.bind( NSBindingName("keyEquivalentModifierMask"), to: self.shortcutsDefaultsController, withKeyPath: "values.\(identifier)", options: [.valueTransformer: self.keyEqModTransformer] ) } } private func initShortcutItems() { guard let mainMenu = NSApplication.shared.mainMenu else { return } let firstLevel = mainMenu.items .suffix(from: 1) .filter { $0.identifier != debugMenuItemIdentifier } var queue = firstLevel.map { ( parent: self.shortcutItemsRoot, shortcutItem: ShortcutItem(title: $0.title, isLeaf: false, item: $0) ) } while !queue.isEmpty { guard let entry = queue.popLast() else { break } if !entry.shortcutItem.isLeaf || entry.shortcutItem.identifier?.hasPrefix("com.qvacua.vimr.menuitems.") == true { entry.parent.children?.append(entry.shortcutItem) } if entry.shortcutItem.isContainer, let childMenuItems = entry.shortcutItem.item?.submenu?.items { let shortcutChildItems = childMenuItems .filter { !$0.title.isEmpty } .map { menuItem in ( parent: entry.shortcutItem, shortcutItem: ShortcutItem( title: menuItem.title, isLeaf: !menuItem.hasSubmenu, item: menuItem ) ) } queue.append(contentsOf: shortcutChildItems) } } } private func updateShortcutService() { let transformer = ShortcutValueTransformer.shared let shortcuts = defaultShortcuts.compactMap { id, shortcut -> Shortcut? in if self.shortcutsUserDefaults?.value(forKey: id) == nil { return shortcut } return transformer.transformedValue( self.shortcutsUserDefaults?.value(forKey: id) ) as? Shortcut } self.shortcutService?.update(shortcuts: shortcuts) } private func addViews() { let paneTitle = self.paneTitleTextField(title: "Shortcuts") let shortcutList = self.shortcutList shortcutList.delegate = self let shortcutScrollView = self.shortcutScrollView shortcutScrollView.documentView = shortcutList let reset = self.resetButton reset.title = "Reset All to Default" reset.bezelStyle = .rounded reset.isBordered = true reset.setButtonType(.momentaryPushIn) reset.target = self reset.action = #selector(ShortcutsPref.resetToDefault) self.addSubview(paneTitle) self.addSubview(shortcutScrollView) self.addSubview(reset) paneTitle.autoPinEdge(toSuperviewEdge: .top, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) shortcutScrollView.autoPinEdge(.top, to: .bottom, of: paneTitle, withOffset: 18) shortcutScrollView.autoPinEdge(.left, to: .left, of: paneTitle) shortcutScrollView.autoPinEdge(toSuperviewEdge: .right, withInset: 18) reset.autoPinEdge(.left, to: .left, of: paneTitle) reset.autoPinEdge(.top, to: .bottom, of: shortcutScrollView, withOffset: 18) reset.autoPinEdge(toSuperviewEdge: .bottom, withInset: 18) } } // MARK: - Actions extension ShortcutsPref { @objc func resetToDefault(_: NSButton) { guard let window = self.window else { return } let alert = NSAlert() alert.addButton(withTitle: "Cancel") alert.addButton(withTitle: "Reset") alert.messageText = "Do you want to reset all shortcuts to their default values?" alert.alertStyle = .warning alert.beginSheetModal(for: window, completionHandler: { response in guard response == .alertSecondButtonReturn else { return } self.traverseMenuItems { identifier, _ in let shortcut = defaultShortcuts[identifier] ?? Shortcut(keyEquivalent: "") let valueToWrite = ShortcutValueTransformer.shared.reverseTransformedValue(shortcut) self.shortcutsDefaultsController.setValue(valueToWrite, forKeyPath: "values.\(identifier)") self.updateShortcutService() self.treeController.rearrangeObjects() } }) } } // MARK: - NSOutlineViewDelegate extension ShortcutsPref { func outlineView(_: NSOutlineView, rowViewForItem _: Any) -> NSTableRowView? { let view = self.shortcutList.makeView( withIdentifier: NSUserInterfaceItemIdentifier("shortcut-row-view"), owner: self ) as? ShortcutTableRow ?? ShortcutTableRow(withIdentifier: "shortcut-row-view") return view } func outlineView(_: NSOutlineView, viewFor _: NSTableColumn?, item: Any) -> NSView? { let cellView = self.shortcutList.makeView( withIdentifier: NSUserInterfaceItemIdentifier("shortcut-cell-view"), owner: self ) as? ShortcutTableCell ?? ShortcutTableCell(withIdentifier: "shortcut-cell-view") let repObj = (item as? NSTreeNode)?.representedObject guard let item = repObj as? ShortcutItem else { return nil } guard let identifier = item.identifier else { return cellView } cellView.isDir = !item.isLeaf cellView.text = item.title if item.isContainer { cellView.customized = false cellView.layoutViews() return cellView } cellView.customized = !self.areShortcutsEqual(identifier) cellView.layoutViews() cellView.setDelegateOfRecorder(self) cellView.bindRecorder(toKeyPath: "values.\(identifier)", to: self.shortcutsDefaultsController) return cellView } func outlineView(_: NSOutlineView, heightOfRowByItem _: Any) -> CGFloat { 28 } private func areShortcutsEqual(_ identifier: String) -> Bool { guard let dataFromDefaults = self.shortcutsDefaultsController.value( forKeyPath: "values.\(identifier)" ) as? NSData else { return true } guard let shortcutFromDefaults = ShortcutValueTransformer.shared .transformedValue(dataFromDefaults) as? Shortcut else { return true } let defaultShortcut = defaultShortcuts[identifier] ?? nil return shortcutFromDefaults.isEqual(to: defaultShortcut) == true } } // MARK: - SRRecorderControlDelegate extension ShortcutsPref { func recorderControlDidEndRecording(_: RecorderControl) { self.updateShortcutService() self.treeController.rearrangeObjects() } } private let defaultsVersionKey = "version" private let defaultsVersion = 337 private class DataToKeyEquivalentTransformer: ValueTransformer { override func transformedValue(_ value: Any?) -> Any? { guard let shortcut = ShortcutValueTransformer.shared.transformedValue(value) as? Shortcut else { return "" } return KeyEquivalentTransformer.shared.transformedValue(shortcut) } } private class DataToKeyEquivalentModifierMaskTransformer: ValueTransformer { override func transformedValue(_ value: Any?) -> Any? { guard let shortcut = ShortcutValueTransformer.shared .transformedValue(value) as? Shortcut else { return NSNumber(value: 0) } return KeyEquivalentModifierMaskTransformer.shared.transformedValue(shortcut) } } ================================================ FILE: VimR/VimR/ShortcutsTableSubviews.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import ShortcutRecorder final class ShortcutTableRow: NSTableRowView { init(withIdentifier identifier: String) { super.init(frame: .zero) self.identifier = NSUserInterfaceItemIdentifier(identifier) } @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } final class ShortcutTableCell: NSTableCellView { static let font = NSFont.systemFont(ofSize: 13) static let boldFont = NSFont.boldSystemFont(ofSize: 13) var customized = false var isDir = false var text: String { get { self.textField!.stringValue } set { self.textField?.stringValue = newValue } } func setDelegateOfRecorder(_ delegate: RecorderControlDelegate) { self.shortcutRecorder.delegate = delegate } func bindRecorder(toKeyPath keypath: String, to content: Any) { self.shortcutRecorder.unbind(.value) self.shortcutRecorder.bind( .value, to: content, withKeyPath: keypath, options: [.valueTransformer: ShortcutValueTransformer.shared] ) } init(withIdentifier identifier: String) { super.init(frame: .zero) self.identifier = NSUserInterfaceItemIdentifier(identifier) self.textField = self._textField let textField = self._textField textField.font = ShortcutTableCell.font textField.isBordered = true textField.isBezeled = false textField.allowsEditingTextAttributes = false textField.isEditable = false textField.usesSingleLineMode = true textField.drawsBackground = false let recorder = self.shortcutRecorder recorder.allowsEscapeToCancelRecording = true recorder.allowsDeleteToClearShortcutAndEndRecording = true recorder.set( allowedModifierFlags: [.command, .shift, .option, .control], requiredModifierFlags: [], allowsEmptyModifierFlags: false ) recorder.allowsDeleteToClearShortcutAndEndRecording = true } func reset() -> ShortcutTableCell { self.text = "" self.removeAllSubviews() return self } func layoutViews() { let textField = self._textField let recorder = self.shortcutRecorder textField.removeFromSuperview() recorder.removeFromSuperview() if self.isDir { textField.font = ShortcutTableCell.boldFont } else { textField.font = ShortcutTableCell.font } if self.customized { textField.textColor = .blue } else { textField.textColor = .textColor } self.addSubview(textField) guard !self.isDir else { textField.autoPinEdgesToSuperviewEdges( with: NSEdgeInsets(top: 3, left: 4, bottom: 3, right: 12) ) return } self.addSubview(recorder) recorder.autoPinEdge(toSuperviewEdge: .right, withInset: 12) recorder.autoPinEdge(toSuperviewEdge: .top, withInset: 2) recorder.autoSetDimension(.width, toSize: 180) textField.autoPinEdge(toSuperviewEdge: .left, withInset: 4) textField.autoPinEdge(.right, to: .left, of: recorder, withOffset: -8) textField.autoPinEdge(toSuperviewEdge: .top, withInset: 3) } private let shortcutRecorder = RecorderControl(forAutoLayout: ()) private let _textField = NSTextField(forAutoLayout: ()) @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } ================================================ FILE: VimR/VimR/States.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import NvimView import Workspace struct AppState: Codable, Sendable { enum OpenFilesFromApplicationsAction: String, Codable, CaseIterable { case inNewWindow case inCurrentWindow } enum AfterLastWindowAction: String, Codable { case doNothing = "do-nothing" case hide case quit } static let `default` = AppState() enum CodingKeys: String, CodingKey { case openNewMainWindowOnLaunch = "open-new-window-when-launching" case openNewMainWindowOnReactivation = "open-new-window-on-reactivation" case openFilesFromApplicationsAction = "open-files-from-applications-action" case afterLastWindowAction = "after-last-window-action" case activateAsciiImInNormalMode = "activate-ascii-im-in-normal-mode" case useSnapshotUpdate = "use-snapshot-update-channel" case nvimAppName = "nvim-appname" case openQuickly = "open-quickly" case mainWindowTemplate = "main-window" } var openNewMainWindowOnLaunch = true var openNewMainWindowOnReactivation = true var openFilesFromApplicationsAction = OpenFilesFromApplicationsAction.inNewWindow var afterLastWindowAction = AfterLastWindowAction.doNothing var activateAsciiImInNormalMode = true var useSnapshotUpdate = false var nvimAppName = "" var preferencesOpen = Marked(false) var mainWindowTemplate = MainWindow.State.default var currentMainWindowUuid: UUID? var mainWindows: [UUID: MainWindow.State] = [:] var currentMainWindow: MainWindow.State? { guard let uuid = self.currentMainWindowUuid else { return nil } return self.mainWindows[uuid] } var openQuickly = OpenQuicklyWindow.State.default var quit = false init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.openNewMainWindowOnLaunch = try container.decode( forKey: .openNewMainWindowOnLaunch, default: AppState.default.openNewMainWindowOnLaunch ) self.openNewMainWindowOnReactivation = try container.decode( forKey: .openNewMainWindowOnReactivation, default: AppState.default.openNewMainWindowOnReactivation ) self.openFilesFromApplicationsAction = try container.decode( forKey: .openFilesFromApplicationsAction, default: .inNewWindow ) self.afterLastWindowAction = try container.decode( forKey: .afterLastWindowAction, default: .doNothing ) self.activateAsciiImInNormalMode = try container.decode( forKey: .activateAsciiImInNormalMode, default: true ) self.useSnapshotUpdate = try container.decode( forKey: .useSnapshotUpdate, default: AppState.default.useSnapshotUpdate ) self.nvimAppName = try container.decode( forKey: .nvimAppName, default: AppState.default.nvimAppName ) self.openQuickly = try container.decode( forKey: .openQuickly, default: OpenQuicklyWindow.State.default ) self.mainWindowTemplate = try container.decode( forKey: .mainWindowTemplate, default: MainWindow.State.default ) } // Use generated encode(to:) private init() {} } extension OpenQuicklyWindow { struct State: Codable { static let `default` = State() enum CodingKeys: String, CodingKey { case defaultUsesVcsIgnore = "default-uses-vcs-ignores" } var defaultUsesVcsIgnores = true var open = false init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.defaultUsesVcsIgnores = try container.decode( forKey: .defaultUsesVcsIgnore, default: OpenQuicklyWindow.State.default.defaultUsesVcsIgnores ) } func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(self.defaultUsesVcsIgnores, forKey: .defaultUsesVcsIgnore) } private init() {} } } struct PreviewState { static let `default` = PreviewState() enum Status { case none case notSaved case error case markdown } enum SearchAction { case none case forward case reverse case reload } var status = Status.none var buffer: URL? var html: URL? var server: URL? var updateDate: Date var editorPosition = Marked(Position.beginning) var previewPosition = Marked(Position.beginning) var lastSearch = SearchAction.none init( status: Status = .none, buffer: URL? = nil, html: URL? = nil, server: URL? = nil, updateDate: Date = Date(), editorPosition: Marked = Marked(.beginning), previewPosition: Marked = Marked(.beginning) ) { self.status = status self.buffer = buffer self.html = html self.server = server self.updateDate = updateDate self.editorPosition = editorPosition self.previewPosition = previewPosition } } struct HtmlPreviewState { static let `default` = HtmlPreviewState() var htmlFile: URL? var server: Marked? } struct AppearanceState: Codable, Sendable { static let `default` = AppearanceState() enum CodingKeys: String, CodingKey { case usesCustomTab = "uses-custom-tab" case usesTheme = "uses-theme" case showsFileIcon = "shows-file-icon" case editorFontName = "editor-font-name" case editorFontSize = "editor-font-size" case editorLinespacing = "editor-linespacing" case editorCharacterspacing = "editor-characterspacing" case editorUsesLigatures = "editor-uses-ligatures" case editorFontSmoothing = "editor-font-smoothing" } var font = NSFont.userFixedPitchFont(ofSize: 13)! var linespacing: CGFloat = 1 var characterspacing: CGFloat = 1 var usesLigatures = true var fontSmoothing = FontSmoothing.systemSetting var usesCustomTab = true var usesTheme = true var showsFileIcon = true var theme = Marked(Theme.default) init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) if let fontName = try container.decodeIfPresent(String.self, forKey: .editorFontName), let fontSize = try container.decodeIfPresent(Double.self, forKey: .editorFontSize), let font = NSFont(name: fontName, size: fontSize) { self.font = font } else { self.font = NvimView.defaultFont } self .linespacing = try (container.decodeIfPresent(Double.self, forKey: .editorLinespacing) ?? 1.0) self .characterspacing = try ( container .decodeIfPresent(Double.self, forKey: .editorCharacterspacing) ?? 1.0 ) self.usesLigatures = try container .decodeIfPresent(Bool.self, forKey: .editorUsesLigatures) ?? true self.fontSmoothing = try container.decodeIfPresent( FontSmoothing.self, forKey: .editorFontSmoothing ) ?? .systemSetting self.usesTheme = try container.decodeIfPresent(Bool.self, forKey: .usesTheme) ?? true self.usesCustomTab = try container.decodeIfPresent(Bool.self, forKey: .usesCustomTab) ?? true self.showsFileIcon = try container.decodeIfPresent(Bool.self, forKey: .showsFileIcon) ?? true } func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(self.usesCustomTab, forKey: .usesCustomTab) try container.encode(self.usesTheme, forKey: .usesTheme) try container.encode(self.showsFileIcon, forKey: .showsFileIcon) try container.encode(self.font.fontName, forKey: .editorFontName) try container.encode(self.font.pointSize, forKey: .editorFontSize) try container.encode(self.linespacing, forKey: .editorLinespacing) try container.encode(self.characterspacing, forKey: .editorCharacterspacing) try container.encode(self.fontSmoothing, forKey: .editorFontSmoothing) try container.encode(self.usesLigatures, forKey: .editorUsesLigatures) } private init() {} } extension MainWindow { struct State: Codable, Sendable { static let `default` = State( isAllToolsVisible: true, isToolButtonsVisible: true, nvimBinary: "" ) static let defaultTools: [MainWindow.Tools: WorkspaceToolState] = [ .fileBrowser: WorkspaceToolState(location: .left, dimension: 200, open: true), .buffersList: WorkspaceToolState(location: .left, dimension: 200, open: false), .preview: WorkspaceToolState(location: .right, dimension: 250, open: false), .htmlPreview: WorkspaceToolState(location: .right, dimension: 500, open: false), ] static let orderedDefault: [MainWindow.Tools] = [.fileBrowser, .buffersList, .preview, .htmlPreview] var isAllToolsVisible = true var isToolButtonsVisible = true var activeTools = [ Tools.fileBrowser: true, Tools.buffersList: true, Tools.preview: true, Tools.htmlPreview: true, ] var frame = CGRect(x: 100, y: 100, width: 600, height: 400) ////// transient var goToLineFromCli: Marked? var lastFileSystemUpdate = Marked(FileUtils.userHomeUrl) var tools = MainWindow.State.defaultTools var orderedTools = MainWindow.State.orderedDefault var preview = PreviewState.default var htmlPreview = HtmlPreviewState.default var previewTool = MarkdownTool.State.default var fileBrowserShowHidden = false var isTemporarySession = false var customMarkdownProcessor = "" // neovim var uuid = UUID() var currentBuffer: NvimView.Buffer? var buffers = [NvimView.Buffer]() var cwd = FileUtils.userHomeUrl var isDirty = false var appearance = AppearanceState.default var useInteractiveZsh = false var nvimBinary: String = "" var nvimArgs: [String]? var cliPipePath: String? var additionalEnvs: [String: String] = [:] var usesVcsIgnores = true var isLeftOptionMeta = false var isRightOptionMeta = false // to be cleaned var urlsToOpen = [URL: OpenMode]() var currentBufferToSet: NvimView.Buffer? var cwdToSet: URL? var viewToBeFocused: FocusableView? = FocusableView.neoVimView init(isAllToolsVisible: Bool, isToolButtonsVisible: Bool, nvimBinary: String) { self.isAllToolsVisible = isAllToolsVisible self.isToolButtonsVisible = isToolButtonsVisible self.nvimBinary = nvimBinary } enum CodingKeys: String, CodingKey { case allToolsVisible = "is-all-tools-visible" case toolButtonsVisible = "is-tool-buttons-visible" case orderedTools = "ordered-tools" case activeTools = "active-tools" case frame case isLeftOptionMeta = "is-left-option-meta" case isRightOptionMeta = "is-right-option-meta" case useInteractiveZsh = "use-interactive-zsh" case nvimBinary = "nvim-binary" case useLiveResize = "use-live-resize" case isShowHidden = "is-show-hidden" case customMarkdownProcessor = "custom-markdown-processor" case appearance case workspaceTools = "workspace-tool" case previewTool = "preview-tool" } init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.isLeftOptionMeta = try container.decode( forKey: .isLeftOptionMeta, default: State.default.isLeftOptionMeta ) self.isRightOptionMeta = try container.decode( forKey: .isRightOptionMeta, default: State.default.isRightOptionMeta ) self.useInteractiveZsh = try container.decode( forKey: .useInteractiveZsh, default: State.default.useInteractiveZsh ) self.nvimBinary = try container.decodeIfPresent(String.self, forKey: .nvimBinary) ?? State .default.nvimBinary if let frameRawValue = try container.decodeIfPresent(String.self, forKey: .frame) { self.frame = NSRectFromString(frameRawValue) } else { self.frame = CGRect(x: 100, y: 100, width: 600, height: 400) } self.isAllToolsVisible = try container.decode( forKey: .allToolsVisible, default: State.default.isAllToolsVisible ) self.isToolButtonsVisible = try container.decode( forKey: .toolButtonsVisible, default: State.default.isToolButtonsVisible ) self.customMarkdownProcessor = try container.decode( forKey: .customMarkdownProcessor, default: State.default.customMarkdownProcessor ) self.appearance = try container.decode(forKey: .appearance, default: State.default.appearance) self.orderedTools = try container.decode( forKey: .orderedTools, default: State.default.orderedTools ) let missingOrderedTools = MainWindow.Tools.all.subtracting(self.orderedTools) self.orderedTools.append(contentsOf: missingOrderedTools) // See [1] let rawActiveTools: [String: Bool] = try container.decode(forKey: .activeTools, default: [:]) self.activeTools = rawActiveTools.flatMapToDict { key, value in guard let toolId = MainWindow.Tools(rawValue: key) else { return nil } return (toolId, value) } let missingActiveTools = MainWindow.Tools.all.subtracting(self.activeTools.keys) missingActiveTools.forEach { self.activeTools[$0] = true } let rawTools: [String: WorkspaceToolState] = try container .decode(forKey: .workspaceTools, default: [:]) self.tools = rawTools.flatMapToDict { key, value in guard let tool = MainWindow.Tools(rawValue: key) else { return nil } return (tool, value) } let missingTools = MainWindow.Tools.all.subtracting(self.tools.keys) for missingTool in missingTools { self.tools[missingTool] = MainWindow.State.defaultTools[missingTool]! } self.previewTool = try container.decode( forKey: .previewTool, default: State.default.previewTool ) self.fileBrowserShowHidden = try container.decode( forKey: .isShowHidden, default: State.default .fileBrowserShowHidden ) } func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(self.isAllToolsVisible, forKey: .allToolsVisible) try container.encode(self.isToolButtonsVisible, forKey: .toolButtonsVisible) try container.encode(NSStringFromRect(self.frame), forKey: .frame) try container.encode(self.customMarkdownProcessor, forKey: .customMarkdownProcessor) try container.encode(self.isLeftOptionMeta, forKey: .isLeftOptionMeta) try container.encode(self.isRightOptionMeta, forKey: .isRightOptionMeta) try container.encode(self.useInteractiveZsh, forKey: .useInteractiveZsh) try container.encode(self.nvimBinary, forKey: .nvimBinary) try container.encode(self.fileBrowserShowHidden, forKey: .isShowHidden) // See [1] try container.encode( Dictionary(uniqueKeysWithValues: self.tools.map { k, v in (k.rawValue, v) }), forKey: .workspaceTools ) try container.encode( Dictionary(uniqueKeysWithValues: self.activeTools.map { k, v in (k.rawValue, v) }), forKey: .activeTools ) try container.encode(self.appearance, forKey: .appearance) try container.encode(self.orderedTools, forKey: .orderedTools) try container.encode(self.previewTool, forKey: .previewTool) } } } struct WorkspaceToolState: Codable, Sendable { static let `default` = WorkspaceToolState() enum CodingKeys: String, CodingKey { case location case open = "is-visible" case dimension } var location = WorkspaceBarLocation.left var dimension = 200.0 var open = false init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.location = try container.decode( forKey: .location, default: WorkspaceToolState.default.location ) self.dimension = try container.decode( forKey: .dimension, default: WorkspaceToolState.default.dimension ) self.open = try container.decode( forKey: .open, default: WorkspaceToolState.default.open ) } // Use generated encode(to:) private init() {} init(location: WorkspaceBarLocation, dimension: CGFloat, open: Bool) { self.location = location self.dimension = dimension self.open = open } } extension MarkdownTool { struct State: Codable { static let `default` = State() enum CodingKeys: String, CodingKey { case forwardSearchAutomatically = "is-forward-search-automatically" case reverseSearchAutomatically = "is-reverse-search-automatically" case refreshOnWrite = "is-refresh-on-write" } var isForwardSearchAutomatically = false var isReverseSearchAutomatically = false var isRefreshOnWrite = true private init() {} init(from decoder: Decoder) throws { let container = try decoder.container(keyedBy: CodingKeys.self) self.isForwardSearchAutomatically = try container.decode( forKey: .forwardSearchAutomatically, default: State.default .isForwardSearchAutomatically ) self.isReverseSearchAutomatically = try container.decode( forKey: .reverseSearchAutomatically, default: State.default .isReverseSearchAutomatically ) self.isRefreshOnWrite = try container.decode( forKey: .refreshOnWrite, default: State.default.isRefreshOnWrite ) } func encode(to encoder: Encoder) throws { var container = encoder.container(keyedBy: CodingKeys.self) try container.encode(self.isForwardSearchAutomatically, forKey: .forwardSearchAutomatically) try container.encode(self.isReverseSearchAutomatically, forKey: .reverseSearchAutomatically) try container.encode(self.isRefreshOnWrite, forKey: .refreshOnWrite) } } } private extension KeyedDecodingContainer where K: CodingKey { func decode(forKey key: K, default: T) throws -> T { try self.decodeIfPresent(T.self, forKey: key) ?? `default` } } /** [1] Swift 4.2 has a bug: Only when a `Dictionary` has `String` or `Int` keys, it is encoded to dictionary. This means that `Dictionary`s with `enum SomeEnum: String, Codable` keys are encoded as `Array`s. The same problem persists also for decoding. */ ================================================ FILE: VimR/VimR/Theme.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons import NvimView func changeTheme( themePrefChanged: Bool, themeChanged: Bool, usesTheme: Bool, forTheme: () -> Void, forDefaultTheme: () -> Void ) -> Bool { if themePrefChanged, usesTheme { forTheme() return true } if themePrefChanged, !usesTheme { forDefaultTheme() return true } if !themePrefChanged, themeChanged, usesTheme { forTheme() return true } return false } struct Theme: CustomStringConvertible, Sendable { static let `default` = Theme() var foreground = NSColor.textColor var background = NSColor.textBackgroundColor var highlightForeground = NSColor.selectedMenuItemTextColor // NSColor.selectedMenuItemColor is deprecated. The doc says that // NSVisualEffectView.Material.selection should be used instead, but I don't know how to get // an NSColor from it. var highlightBackground = NSColor.selectedContentBackgroundColor var directoryForeground = NSColor.textColor var tabForeground = NSColor.selectedMenuItemTextColor var tabBackground = NSColor.selectedContentBackgroundColor var tabBarForeground = NSColor.selectedMenuItemTextColor var tabBarBackground = NSColor.selectedContentBackgroundColor var selectedTabForeground = NSColor.selectedMenuItemTextColor var selectedTabBackground = NSColor.selectedContentBackgroundColor var cssColor = NSColor(hex: "24292e")! var cssBackgroundColor = NSColor.white var cssA = NSColor(hex: "0366d6")! var cssHrBorderBackgroundColor = NSColor(hex: "dfe2e5")! var cssHrBorderBottomColor = NSColor(hex: "eeeeee")! var cssBlockquoteBorderLeftColor = NSColor(hex: "dfe2e5")! var cssBlockquoteColor = NSColor(hex: "6a737d")! var cssH2BorderBottomColor = NSColor(hex: "eaecef")! var cssH6Color = NSColor(hex: "6a737d")! var cssCodeColor = NSColor(hex: "24292e")! var cssCodeBackgroundColor = NSColor(hex: "1b1f23")! var description: String { "Theme<" + "fg: \(self.foreground.hex), bg: \(self.background.hex), " + "hl-fg: \(self.highlightForeground.hex), hl-bg: \(self.highlightBackground.hex), " + "dir-fg: \(self.directoryForeground.hex), " + "tab-fg: \(self.tabForeground.hex), tab-bg: \(self.tabBackground.hex), " + "tabfill-fg: \(self.tabBarForeground.hex), tabfill-bg: \(self.tabBarBackground.hex), " + "tabsel-bg: \(self.selectedTabBackground.hex), tabsel-fg: \(self.selectedTabForeground.hex)" + ">" } init() {} init(from nvimTheme: NvimView.Theme, additionalColorDict: [String: CellAttributes]) { self.foreground = nvimTheme.foreground self.background = nvimTheme.background self.highlightForeground = nvimTheme.visualForeground self.highlightBackground = nvimTheme.visualBackground self.directoryForeground = nvimTheme.directoryForeground self.tabBackground = nvimTheme.tabBackground self.tabForeground = nvimTheme.tabForeground self.tabBarBackground = nvimTheme.tabBarBackground self.tabBarForeground = nvimTheme.tabBarForeground self.selectedTabBackground = nvimTheme.selectedTabBackground self.selectedTabForeground = nvimTheme.selectedTabForeground self.updateCssColors(additionalColorDict) } private mutating func updateCssColors(_ colors: [String: CellAttributes]) { guard let normal = colors["Normal"], let directory = colors["Directory"], let question = colors["Question"], let cursorColumn = colors["CursorColumn"] else { return } self.cssColor = NSColor(rgb: normal.effectiveForeground) self.cssBackgroundColor = NSColor(rgb: normal.effectiveBackground) self.cssA = NSColor(rgb: directory.effectiveForeground) self.cssHrBorderBackgroundColor = NSColor(rgb: cursorColumn.effectiveForeground) self.cssHrBorderBottomColor = NSColor(rgb: cursorColumn.effectiveBackground) self.cssBlockquoteBorderLeftColor = NSColor(rgb: cursorColumn.effectiveForeground) self.cssBlockquoteColor = NSColor(rgb: question.effectiveBackground) self.cssH2BorderBottomColor = NSColor(rgb: cursorColumn.effectiveBackground) self.cssH6Color = NSColor(rgb: normal.effectiveForeground) self.cssCodeColor = NSColor(rgb: cursorColumn.effectiveForeground) self.cssCodeBackgroundColor = NSColor(rgb: cursorColumn.effectiveBackground) } } ================================================ FILE: VimR/VimR/ThemedTableSubviews.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import NvimView import PureLayout @MainActor protocol ThemedView: AnyObject { var theme: Theme { get } var lastThemeMark: Token { get } } final class ThemedTableRow: NSTableRowView { weak var triangleView: NSButton? var themeToken: Token init(withIdentifier identifier: String, themedView: ThemedView) { self.themedView = themedView self.themeToken = themedView.lastThemeMark super.init(frame: .zero) self.identifier = NSUserInterfaceItemIdentifier(identifier) } override func didAddSubview(_ subview: NSView) { super.didAddSubview(subview) if subview.identifier == NSOutlineView.disclosureButtonIdentifier { self.triangleView = subview as? NSButton } } override func drawBackground(in dirtyRect: NSRect) { if let cell = self.view(atColumn: 0) as? ThemedTableCell { if cell.isDir { cell.textField?.textColor = self.themedView?.theme.directoryForeground ?? Theme.default.directoryForeground } else { cell.textField?.textColor = self.themedView?.theme.foreground ?? Theme.default.foreground } } self.themedView?.theme.background.set() dirtyRect.fill() } override func drawSelection(in dirtyRect: NSRect) { if let cell = self.view(atColumn: 0) as? ThemedTableCell { cell.textField?.textColor = self.themedView?.theme.highlightForeground ?? Theme.default.highlightForeground } self.themedView?.theme.highlightBackground.set() dirtyRect.fill() } private weak var themedView: ThemedView? @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } final class ThemedTableCell: NSTableCellView { // MARK: - API static let font = NSFont.systemFont(ofSize: 12) static let widthWithoutText = (2 + 16 + 4 + 2).cgf // static func width(with text: String) -> CGFloat { // let attrStr = NSAttributedString(string: text, attributes: [NSAttributedString.Key.font: // ThemedTableCell.font]) // // return self.widthWithoutText + attrStr.size().width // } // // override var intrinsicContentSize: CGSize { // return CGSize(width: ThemedTableCell.widthWithoutText + // self._textField.intrinsicContentSize.width, // height: max(self._textField.intrinsicContentSize.height, 16)) // } var isDir = false var attributedText: NSAttributedString { get { self.textField!.attributedStringValue } set { self.textField?.attributedStringValue = newValue self.addTextField() } } var text: String { get { self.textField!.stringValue } set { self.textField?.stringValue = newValue self.addTextField() } } var image: NSImage? { get { self.imageView?.image } set { self.imageView?.image = newValue self.removeAllSubviews() let textField = self._textField let imageView = self._imageView self.addSubview(textField) self.addSubview(imageView) imageView.autoPinEdge(toSuperviewEdge: .top, withInset: 2) imageView.autoPinEdge(toSuperviewEdge: .left, withInset: 2) imageView.autoSetDimension(.width, toSize: 16) imageView.autoSetDimension(.height, toSize: 16) textField.autoPinEdge(toSuperviewEdge: .top, withInset: 2) textField.autoPinEdge(toSuperviewEdge: .right, withInset: 2) textField.autoPinEdge(toSuperviewEdge: .bottom, withInset: 2) textField.autoPinEdge(.left, to: .right, of: imageView, withOffset: 4) } } init(withIdentifier identifier: String) { super.init(frame: .zero) self.identifier = NSUserInterfaceItemIdentifier(identifier) self.textField = self._textField self.imageView = self._imageView let textField = self._textField textField.font = ThemedTableCell.font textField.isBordered = false textField.isBezeled = false textField.allowsEditingTextAttributes = false textField.isEditable = false textField.usesSingleLineMode = true textField.drawsBackground = false } func reset() -> ThemedTableCell { self.text = "" self.image = nil self.isDir = false self.removeAllSubviews() return self } private func addTextField() { let textField = self._textField textField.removeFromSuperview() self.addSubview(textField) textField.autoPinEdgesToSuperviewEdges(with: NSEdgeInsets(top: 2, left: 4, bottom: 2, right: 2)) } private let _textField = NSTextField(forAutoLayout: ()) private let _imageView = NSImageView(forAutoLayout: ()) @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } } ================================================ FILE: VimR/VimR/Throttler.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Combine import Foundation final class Throttler { let publisher: AnyPublisher init(interval: DispatchQueue.SchedulerTimeType.Stride, latest: Bool = true) { self.publisher = self.subject.throttle( for: interval, scheduler: DispatchQueue.main, latest: latest ) .eraseToAnyPublisher() } func finish() { self.subject.send(completion: .finished) self.cancellables.removeAll() } func call(_ element: T) { self.subject.send(element) } private let subject = PassthroughSubject() private var cancellables = Set() } ================================================ FILE: VimR/VimR/ToolsPref.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout final class ToolsPref: PrefPane, UiComponent { typealias StateType = AppState enum Action { case setActiveTools([MainWindow.Tools: Bool]) } let uuid = UUID() override var displayName: String { "Tools" } override var pinToContainer: Bool { true } required init(context: ReduxContext, state: StateType) { self.emit = context.actionEmitter.typedEmit() self.tools = state.mainWindowTemplate.activeTools super.init(frame: .zero) self.addViews() self.updateViews() context.subscribe(uuid: self.uuid) { _ in self.updateViews() } } private let emit: (Action) -> Void private var tools: [MainWindow.Tools: Bool] private let fileBrowserCheckbox = NSButton(forAutoLayout: ()) private let openedFilesListCheckbox = NSButton(forAutoLayout: ()) private let previewCheckbox = NSButton(forAutoLayout: ()) private let htmlCheckbox = NSButton(forAutoLayout: ()) @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private func updateViews() { self.fileBrowserCheckbox.boolState = self.tools[.fileBrowser] ?? true self.openedFilesListCheckbox.boolState = self.tools[.buffersList] ?? true self.previewCheckbox.boolState = self.tools[.preview] ?? true self.htmlCheckbox.boolState = self.tools[.htmlPreview] ?? true } private func addViews() { let paneTitle = self.paneTitleTextField(title: "Tools") let fileBrowser = self.fileBrowserCheckbox fileBrowser.target = self self.configureCheckbox( button: fileBrowser, title: "File Browser", action: #selector(ToolsPref.fileBrowserAction(_:)) ) let openedFilesList = self.openedFilesListCheckbox openedFilesList.target = self self.configureCheckbox( button: openedFilesList, title: "Buffers", action: #selector(ToolsPref.openedFilesListAction(_:)) ) let preview = self.previewCheckbox preview.target = self self.configureCheckbox( button: preview, title: "Markdown Preview", action: #selector(ToolsPref.previewAction(_:)) ) let html = self.htmlCheckbox html.target = self self.configureCheckbox( button: html, title: "HTML Preview", action: #selector(ToolsPref.htmlPreviewAction(_:)) ) let info = self.infoTextField( markdown: "You can turn off tools you don't need. The effect takes place when new windows are opened." ) self.addSubview(paneTitle) self.addSubview(fileBrowser) self.addSubview(openedFilesList) self.addSubview(preview) self.addSubview(html) self.addSubview(info) paneTitle.autoPinEdge(toSuperviewEdge: .top, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .left, withInset: 18) paneTitle.autoPinEdge(toSuperviewEdge: .right, withInset: 18, relation: .greaterThanOrEqual) fileBrowser.autoPinEdge(.top, to: .bottom, of: paneTitle, withOffset: 18) fileBrowser.autoPinEdge(toSuperviewEdge: .left, withInset: 18) openedFilesList.autoPinEdge(.top, to: .bottom, of: fileBrowser, withOffset: 5) openedFilesList.autoPinEdge(toSuperviewEdge: .left, withInset: 18) preview.autoPinEdge(.top, to: .bottom, of: openedFilesList, withOffset: 5) preview.autoPinEdge(toSuperviewEdge: .left, withInset: 18) html.autoPinEdge(.top, to: .bottom, of: preview, withOffset: 5) html.autoPinEdge(toSuperviewEdge: .left, withInset: 18) info.autoPinEdge(.top, to: .bottom, of: html, withOffset: 18) info.autoPinEdge(toSuperviewEdge: .left, withInset: 18) } } // MARK: - Actions extension ToolsPref { @IBAction func fileBrowserAction(_: Any?) { self.tools[.fileBrowser] = self.fileBrowserCheckbox.boolState self.emit(.setActiveTools(self.tools)) } @IBAction func openedFilesListAction(_: Any?) { self.tools[.buffersList] = self.openedFilesListCheckbox.boolState self.emit(.setActiveTools(self.tools)) } @IBAction func previewAction(_: Any?) { self.tools[.preview] = self.previewCheckbox.boolState self.emit(.setActiveTools(self.tools)) } @IBAction func htmlPreviewAction(_: Any?) { self.tools[.htmlPreview] = self.htmlCheckbox.boolState self.emit(.setActiveTools(self.tools)) } } ================================================ FILE: VimR/VimR/ToolsPrefReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class ToolsPrefReducer: ReducerType { typealias StateType = AppState typealias ActionType = ToolsPref.Action func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var state = tuple.state switch tuple.action { case let .setActiveTools(tools): state.mainWindowTemplate.activeTools = tools } return ReduceTuple(state: state, action: tuple.action, modified: true) } } ================================================ FILE: VimR/VimR/Types.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import UserNotifications extension NSFont: @retroactive @unchecked Sendable {} extension UNNotification: @retroactive @unchecked Sendable {} // UNUserNotificationCenter is thread-safe // https://developer.apple.com/documentation/usernotifications/unusernotificationcenter#overview extension UNUserNotificationCenter: @retroactive @unchecked Sendable {} struct StateActionPair { var state: S var action: A var modified: Bool } protocol UuidTagged { var uuid: UUID { get } } final class UuidAction: UuidTagged, CustomStringConvertible, Sendable { let uuid: UUID let payload: A var description: String { "UuidAction(uuid: \(self.uuid), payload: \(String(reflecting: self.payload)))" } init(uuid: UUID, action: A) { self.uuid = uuid self.payload = action } } final class UuidState: UuidTagged, CustomStringConvertible { let uuid: UUID let payload: S var description: String { "UuidState(uuid: \(self.uuid), payload: \(String(reflecting: self.payload)))" } init(uuid: UUID, state: S) { self.uuid = uuid self.payload = state } } final class Token: Hashable, CustomStringConvertible, Sendable { func hash(into hasher: inout Hasher) { hasher.combine(ObjectIdentifier(self)) } var description: String { ObjectIdentifier(self).debugDescription } static func == (left: Token, right: Token) -> Bool { left === right } } final class Marked: CustomStringConvertible, Sendable { let mark: Token let payload: T var description: String { "Marked<\(self.mark) -> \(self.payload)>" } init(_ payload: T) { self.mark = Token() self.payload = payload } init(mark: Token, payload: T) { self.mark = mark self.payload = payload } func hasDifferentMark(as other: Marked) -> Bool { self.mark != other.mark } } #if DEBUG final class UiComponentTemplate: UiComponent { typealias StateType = State struct State { var someField: String } enum Action { case doSth } let uuid = UUID() required init(context: ReduxContext, state: StateType) { self.context = context // set the typed action emit function self.emit = context.actionEmitter.typedEmit() // init the component with the initial state "state" self.someField = state.someField // react to the new state context.subscribe(uuid: self.uuid) { state in dlog.debug(state) } } func cleanup() { self.context.unsubscribe(uuid: self.uuid) } func someAction() { // when the user does something, emit an action self.emit(.doSth) } private let context: ReduxContext private let emit: (Action) -> Void private let someField: String } #endif ================================================ FILE: VimR/VimR/UiRoot.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa final class UiRoot: UiComponent { typealias StateType = AppState enum Action { case quit } let uuid = UUID() required init(context: ReduxContext, state: StateType) { self.context = context self.emitter = context.actionEmitter self.emit = context.actionEmitter.typedEmit() self.openQuicklyWindow = OpenQuicklyWindow(context: context, state: state) self.prefWindow = PrefWindow(context: context, state: state) self.prefWindow.shortcutService = self.shortcutService self.activateAsciiImInInsertMode = state.activateAsciiImInNormalMode context.subscribe(uuid: self.uuid) { state in let uuidsInState = Set(state.mainWindows.keys) uuidsInState .subtracting(self.mainWindows.keys) .compactMap { state.mainWindows[$0] } .map(self.newMainWindow) .forEach { mainWindow in mainWindow.show() } if self.mainWindows.isEmpty { // We exit here if there are no main windows open. // Otherwise, when hide/quit after last main window is active, // you have to be really quick to open a new window // when re-activating VimR w/o automatic new main window. return } self.mainWindows.keys .filter { !uuidsInState.contains($0) } .forEach(self.removeMainWindow) if self.activateAsciiImInInsertMode != state.activateAsciiImInNormalMode { self.activateAsciiImInInsertMode = state.activateAsciiImInNormalMode self.mainWindows.values .forEach { $0.activateAsciiImInInsertMode = self.activateAsciiImInInsertMode } } guard self.mainWindows.isEmpty else { return } switch state.afterLastWindowAction { case .doNothing: return case .hide: NSApp.hide(self) case .quit: self.emit(.quit) } } } // The following should only be used when Cmd-Q'ing func hasBlockedWindows() async -> Bool { for mainWin in self.mainWindows.values where await mainWin.neoVimView.isBlocked() { return true } return false } // The following should only be used when Cmd-Q'ing func prepareQuit() async { self.mainWindows.values.forEach { $0.prepareClosing() } if !self.mainWindows.isEmpty { for mainWin in self.mainWindows.values { await mainWin.quitNeoVimWithoutSaving() } } self.openQuicklyWindow.cleanUp() } private let context: ReduxContext private let emitter: ActionEmitter private let emit: (Action) -> Void private let shortcutService = ShortcutService() private let openQuicklyWindow: OpenQuicklyWindow private let prefWindow: PrefWindow private var activateAsciiImInInsertMode = true private var mainWindows = [UUID: MainWindow]() private func newMainWindow(with state: MainWindow.State) -> MainWindow { let mainWin = MainWindow(context: self.context, state: state) // sync global self state to child window mainWin.shortcutService = self.shortcutService mainWin.activateAsciiImInInsertMode = self.activateAsciiImInInsertMode self.mainWindows[mainWin.uuid] = mainWin return mainWin } private func removeMainWindow(with uuid: UUID) { guard let mainWin = self.mainWindows.removeValue(forKey: uuid) else { return } mainWin.cleanup() } } ================================================ FILE: VimR/VimR/UiRootReducer.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Foundation final class UiRootReducer: ReducerType { typealias StateType = AppState typealias ActionType = UiRoot.Action let mainWindow = MainWindowReducer() func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var appState = tuple.state switch tuple.action { case .quit: appState.quit = true } return ReduceTuple(state: appState, action: tuple.action, modified: true) } class MainWindowReducer: ReducerType { typealias StateType = AppState typealias ActionType = UuidAction func typedReduce(_ tuple: ReduceTuple) -> ReduceTuple { var appState = tuple.state let uuid = tuple.action.uuid switch tuple.action.payload { case let .becomeKey(isFullScreen): appState.currentMainWindowUuid = uuid if appState.mainWindows[uuid]?.isTemporarySession == true { break } appState.mainWindowTemplate = self.mainWindowTemplate( from: appState.mainWindowTemplate, new: appState.mainWindows[uuid] ?? appState.mainWindowTemplate, isFullScreen: isFullScreen ) case let .frameChanged(to: frame): if appState.mainWindows[uuid]?.isTemporarySession == true { break } if uuid == appState.currentMainWindowUuid { appState.mainWindowTemplate.frame = frame } case let .setToolsState(tools): if appState.mainWindows[uuid]?.isTemporarySession == true { break } appState.mainWindowTemplate.orderedTools = tools.map(\.0) case let .toggleAllTools(value): if appState.mainWindows[uuid]?.isTemporarySession == true { break } appState.mainWindowTemplate.isAllToolsVisible = value case let .toggleToolButtons(value): if appState.mainWindows[uuid]?.isTemporarySession == true { break } appState.mainWindowTemplate.isToolButtonsVisible = value case .close: if appState.mainWindows[uuid]?.isTemporarySession == true { if appState.currentMainWindowUuid == uuid { appState.currentMainWindowUuid = nil } appState.mainWindows.removeValue(forKey: uuid) break } if appState.currentMainWindowUuid == uuid, let mainWindowToClose = appState.mainWindows[uuid] { appState.currentMainWindowUuid = nil appState.mainWindowTemplate = self.mainWindowTemplate( from: appState.mainWindowTemplate, new: mainWindowToClose, isFullScreen: false ) } appState.mainWindows.removeValue(forKey: uuid) case let .setTheme(theme): appState.mainWindowTemplate.appearance.theme = Marked(theme) default: return tuple } return ReduceTuple(state: appState, action: tuple.action, modified: true) } private func mainWindowTemplate( from old: MainWindow.State, new: MainWindow.State, isFullScreen: Bool ) -> MainWindow.State { var result = old if !isFullScreen { result.frame = new.frame } result.isAllToolsVisible = new.isAllToolsVisible result.isToolButtonsVisible = new.isToolButtonsVisible result.tools = new.tools result.orderedTools = new.orderedTools result.previewTool = new.previewTool result.fileBrowserShowHidden = new.fileBrowserShowHidden result.htmlPreview = .default return result } } } ================================================ FILE: VimR/VimR/com.qvacua.VimR.vim ================================================ function! s:VimRMakeSessionTemporary() abort call rpcnotify(0, 'com.qvacua.NvimView', 'make-session-temporary') endfunction command! -nargs=0 VimRMakeSessionTemporary call s:VimRMakeSessionTemporary() function! s:VimRMaximizeWindow() abort call rpcnotify(0, 'com.qvacua.NvimView', 'maximize-window') endfunction command! -nargs=0 VimRMaximizeWindow call s:VimRMaximizeWindow() " -1: hide, 0: toggle, 1: show function! s:VimRToggleTools(value) abort call rpcnotify(0, 'com.qvacua.NvimView', 'toggle-tools', a:value) endfunction command! -nargs=0 VimRHideTools call s:VimRToggleTools(-1) command! -nargs=0 VimRToggleTools call s:VimRToggleTools(0) command! -nargs=0 VimRShowTools call s:VimRToggleTools(1) " -1: hide, 0: toggle, 1: show function! s:VimRToggleToolButtons(value) abort call rpcnotify(0, 'com.qvacua.NvimView', 'toggle-tool-buttons', a:value) endfunction command! -nargs=0 VimRHideToolButtons call s:VimRToggleToolButtons(-1) command! -nargs=0 VimRToggleToolButtons call s:VimRToggleToolButtons(0) command! -nargs=0 VimRShowToolButtons call s:VimRToggleToolButtons(1) function! s:VimRRevealCurrentBufferInFileBrowser() abort if filereadable(expand('%')) call rpcnotify(0, 'com.qvacua.NvimView', 'reveal-current-buffer-in-file-browser') endif endfunction command! -nargs=0 VimRRevealCurrentBuffer call s:VimRRevealCurrentBufferInFileBrowser() function! s:VimRRefreshFileBrowser() abort call rpcnotify(0, 'com.qvacua.NvimView', 'refresh-file-browser') endfunction command! -nargs=0 VimRRefreshFileBrowser call s:VimRRefreshFileBrowser() function! s:VimRToggleFullscreen() abort call rpcnotify(0, 'com.qvacua.NvimView', 'toggle-fullscreen') endfunction command! -nargs=0 VimRToggleFullscreen call s:VimRToggleFullscreen() function! s:VimRSetFontAndSize(font, size) abort call rpcnotify(0, 'com.qvacua.NvimView', 'set-font', a:font, a:size) endfunction command! -nargs=* VimRSetFontAndSize call s:VimRSetFontAndSize() function! s:VimRSetLinespacing(linespacing) abort call rpcnotify(0, 'com.qvacua.NvimView', 'set-linespacing', a:linespacing) endfunction command! -nargs=1 VimRSetLinespacing call s:VimRSetLinespacing() function! s:VimRSetCharacterspacing(characterspacing) abort call rpcnotify(0, 'com.qvacua.NvimView', 'set-characterspacing', a:characterspacing) endfunction command! -nargs=1 VimRSetCharacterspacing call s:VimRSetCharacterspacing() ================================================ FILE: VimR/VimR/markdown/color-overrides.css ================================================ :root { --nvim-color: {{ nvim-color }}; --nvim-background-color: {{ nvim-background-color }}; --nvim-a: {{ nvim-a }}; --nvim-hr-background-color: {{ nvim-hr-background-color }}; --nvim-hr-border-bottom-color: {{ nvim-hr-border-bottom-color }}; --nvim-blockquote-border-left-color: {{ nvim-blockquote-border-left-color }}; --nvim-blockquote-color: {{ nvim-blockquote-color }}; --nvim-h2-border-bottom-color: {{ nvim-h2-border-bottom-color }}; --nvim-h6-color: {{ nvim-h6-color }}; --nvim-code-background-color: {{ nvim-code-background-color }}; --nvim-code-color: {{ nvim-code-color }}; } .markdown-body { color: var(--nvim-color); background-color: var(--nvim-background-color); } .markdown-body a { color: var(--nvim-a); } .markdown-body hr { background-color: var(--nvim-hr-background-color); border-bottom-color: var(--nvim-hr-border-bottom-color); } .markdown-body blockquote { border-left-color: var(--nvim-blockquote-border-left-color); color: var(--nvim-blockquote-foreground); } .markdown-body h2 { border-bottom-color: var(--nvim-border-bottom-color); } .markdown-body h6 { color: var(--nvim-h6-color); } .markdown-body pre { color: var(--nvim-code-color); background-color: var(--nvim-code-background-color); } ================================================ FILE: VimR/VimR/markdown/github-markdown.css ================================================ @media (prefers-color-scheme: dark) { .markdown-body { color-scheme: dark; --color-prettylights-syntax-comment: #8b949e; --color-prettylights-syntax-constant: #79c0ff; --color-prettylights-syntax-entity: #d2a8ff; --color-prettylights-syntax-storage-modifier-import: #c9d1d9; --color-prettylights-syntax-entity-tag: #7ee787; --color-prettylights-syntax-keyword: #ff7b72; --color-prettylights-syntax-string: #a5d6ff; --color-prettylights-syntax-variable: #ffa657; --color-prettylights-syntax-brackethighlighter-unmatched: #f85149; --color-prettylights-syntax-invalid-illegal-text: #f0f6fc; --color-prettylights-syntax-invalid-illegal-bg: #8e1519; --color-prettylights-syntax-carriage-return-text: #f0f6fc; --color-prettylights-syntax-carriage-return-bg: #b62324; --color-prettylights-syntax-string-regexp: #7ee787; --color-prettylights-syntax-markup-list: #f2cc60; --color-prettylights-syntax-markup-heading: #1f6feb; --color-prettylights-syntax-markup-italic: #c9d1d9; --color-prettylights-syntax-markup-bold: #c9d1d9; --color-prettylights-syntax-markup-deleted-text: #ffdcd7; --color-prettylights-syntax-markup-deleted-bg: #67060c; --color-prettylights-syntax-markup-inserted-text: #aff5b4; --color-prettylights-syntax-markup-inserted-bg: #033a16; --color-prettylights-syntax-markup-changed-text: #ffdfb6; --color-prettylights-syntax-markup-changed-bg: #5a1e02; --color-prettylights-syntax-markup-ignored-text: #c9d1d9; --color-prettylights-syntax-markup-ignored-bg: #1158c7; --color-prettylights-syntax-meta-diff-range: #d2a8ff; --color-prettylights-syntax-brackethighlighter-angle: #8b949e; --color-prettylights-syntax-sublimelinter-gutter-mark: #484f58; --color-prettylights-syntax-constant-other-reference-link: #a5d6ff; --color-fg-default: #c9d1d9; --color-fg-muted: #8b949e; --color-fg-subtle: #484f58; --color-canvas-default: #0d1117; --color-canvas-subtle: #161b22; --color-border-default: #30363d; --color-border-muted: #21262d; --color-neutral-muted: rgba(110,118,129,0.4); --color-accent-fg: #58a6ff; --color-accent-emphasis: #1f6feb; --color-danger-fg: #f85149; } } @media (prefers-color-scheme: light) { .markdown-body { color-scheme: light; --color-prettylights-syntax-comment: #6e7781; --color-prettylights-syntax-constant: #0550ae; --color-prettylights-syntax-entity: #8250df; --color-prettylights-syntax-storage-modifier-import: #24292f; --color-prettylights-syntax-entity-tag: #116329; --color-prettylights-syntax-keyword: #cf222e; --color-prettylights-syntax-string: #0a3069; --color-prettylights-syntax-variable: #953800; --color-prettylights-syntax-brackethighlighter-unmatched: #82071e; --color-prettylights-syntax-invalid-illegal-text: #f6f8fa; --color-prettylights-syntax-invalid-illegal-bg: #82071e; --color-prettylights-syntax-carriage-return-text: #f6f8fa; --color-prettylights-syntax-carriage-return-bg: #cf222e; --color-prettylights-syntax-string-regexp: #116329; --color-prettylights-syntax-markup-list: #3b2300; --color-prettylights-syntax-markup-heading: #0550ae; --color-prettylights-syntax-markup-italic: #24292f; --color-prettylights-syntax-markup-bold: #24292f; --color-prettylights-syntax-markup-deleted-text: #82071e; --color-prettylights-syntax-markup-deleted-bg: #FFEBE9; --color-prettylights-syntax-markup-inserted-text: #116329; --color-prettylights-syntax-markup-inserted-bg: #dafbe1; --color-prettylights-syntax-markup-changed-text: #953800; --color-prettylights-syntax-markup-changed-bg: #ffd8b5; --color-prettylights-syntax-markup-ignored-text: #eaeef2; --color-prettylights-syntax-markup-ignored-bg: #0550ae; --color-prettylights-syntax-meta-diff-range: #8250df; --color-prettylights-syntax-brackethighlighter-angle: #57606a; --color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f; --color-prettylights-syntax-constant-other-reference-link: #0a3069; --color-fg-default: #24292f; --color-fg-muted: #57606a; --color-fg-subtle: #6e7781; --color-canvas-default: #ffffff; --color-canvas-subtle: #f6f8fa; --color-border-default: #d0d7de; --color-border-muted: hsla(210,18%,87%,1); --color-neutral-muted: rgba(175,184,193,0.2); --color-accent-fg: #0969da; --color-accent-emphasis: #0969da; --color-danger-fg: #cf222e; } } .markdown-body { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; margin: 0; color: var(--color-fg-default); background-color: var(--color-canvas-default); font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"; font-size: 16px; line-height: 1.5; word-wrap: break-word; } .markdown-body .octicon { display: inline-block; fill: currentColor; vertical-align: text-bottom; } .markdown-body h1:hover .anchor .octicon-link:before, .markdown-body h2:hover .anchor .octicon-link:before, .markdown-body h3:hover .anchor .octicon-link:before, .markdown-body h4:hover .anchor .octicon-link:before, .markdown-body h5:hover .anchor .octicon-link:before, .markdown-body h6:hover .anchor .octicon-link:before { width: 16px; height: 16px; content: ' '; display: inline-block; background-color: currentColor; -webkit-mask-image: url("data:image/svg+xml,"); mask-image: url("data:image/svg+xml,"); } .markdown-body details, .markdown-body figcaption, .markdown-body figure { display: block; } .markdown-body summary { display: list-item; } .markdown-body a { background-color: transparent; color: var(--color-accent-fg); text-decoration: none; } .markdown-body a:active, .markdown-body a:hover { outline-width: 0; } .markdown-body abbr[title] { border-bottom: none; -webkit-text-decoration: underline dotted; text-decoration: underline dotted; } .markdown-body b, .markdown-body strong { font-weight: 600; } .markdown-body dfn { font-style: italic; } .markdown-body h1 { margin: .67em 0; font-weight: 600; padding-bottom: .3em; font-size: 2em; border-bottom: 1px solid var(--color-border-muted); } .markdown-body mark { background-color: #ff0; color: var(--color-text-primary); } .markdown-body small { font-size: 90%; } .markdown-body sub, .markdown-body sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } .markdown-body sub { bottom: -0.25em; } .markdown-body sup { top: -0.5em; } .markdown-body img { border-style: none; max-width: 100%; box-sizing: content-box; background-color: var(--color-canvas-default); } .markdown-body code, .markdown-body kbd, .markdown-body pre, .markdown-body samp { font-family: monospace,monospace; font-size: 1em; } .markdown-body figure { margin: 1em 40px; } .markdown-body hr { box-sizing: content-box; overflow: hidden; background: transparent; border-bottom: 1px solid var(--color-border-muted); height: .25em; padding: 0; margin: 24px 0; background-color: var(--color-border-default); border: 0; } .markdown-body html [type=button], .markdown-body [type=reset], .markdown-body [type=submit] { -webkit-appearance: button; } .markdown-body [type=button]::-moz-focus-inner, .markdown-body [type=reset]::-moz-focus-inner, .markdown-body [type=submit]::-moz-focus-inner { border-style: none; padding: 0; } .markdown-body [type=button]:-moz-focusring, .markdown-body [type=reset]:-moz-focusring, .markdown-body [type=submit]:-moz-focusring { outline: 1px dotted ButtonText; } .markdown-body [type=checkbox], .markdown-body [type=radio] { box-sizing: border-box; padding: 0; } .markdown-body [type=number]::-webkit-inner-spin-button, .markdown-body [type=number]::-webkit-outer-spin-button { height: auto; } .markdown-body [type=search] { -webkit-appearance: textfield; outline-offset: -2px; } .markdown-body [type=search]::-webkit-search-cancel-button, .markdown-body [type=search]::-webkit-search-decoration { -webkit-appearance: none; } .markdown-body ::-webkit-input-placeholder { color: inherit; opacity: .54; } .markdown-body ::-webkit-file-upload-button { -webkit-appearance: button; font: inherit; } .markdown-body a:hover { text-decoration: underline; } .markdown-body hr::before { display: table; content: ""; } .markdown-body hr::after { display: table; clear: both; content: ""; } .markdown-body table { border-spacing: 0; border-collapse: collapse; display: block; width: max-content; max-width: 100%; overflow: auto; } .markdown-body td, .markdown-body th { padding: 0; } .markdown-body details summary { cursor: pointer; } .markdown-body details:not([open])>*:not(summary) { display: none !important; } .markdown-body kbd { display: inline-block; padding: 3px 5px; font: 11px ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; line-height: 10px; color: var(--color-fg-default); vertical-align: middle; background-color: var(--color-canvas-subtle); border: solid 1px var(--color-neutral-muted); border-bottom-color: var(--color-neutral-muted); border-radius: 6px; box-shadow: inset 0 -1px 0 var(--color-neutral-muted); } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25; } .markdown-body h2 { font-weight: 600; padding-bottom: .3em; font-size: 1.5em; border-bottom: 1px solid var(--color-border-muted); } .markdown-body h3 { font-weight: 600; font-size: 1.25em; } .markdown-body h4 { font-weight: 600; font-size: 1em; } .markdown-body h5 { font-weight: 600; font-size: .875em; } .markdown-body h6 { font-weight: 600; font-size: .85em; color: var(--color-fg-muted); } .markdown-body p { margin-top: 0; margin-bottom: 10px; } .markdown-body blockquote { margin: 0; padding: 0 1em; color: var(--color-fg-muted); border-left: .25em solid var(--color-border-default); } .markdown-body ul, .markdown-body ol { margin-top: 0; margin-bottom: 0; padding-left: 2em; } .markdown-body ol ol, .markdown-body ul ol { list-style-type: lower-roman; } .markdown-body ul ul ol, .markdown-body ul ol ol, .markdown-body ol ul ol, .markdown-body ol ol ol { list-style-type: lower-alpha; } .markdown-body dd { margin-left: 0; } .markdown-body tt, .markdown-body code { font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; font-size: 12px; } .markdown-body pre { margin-top: 0; margin-bottom: 0; font-family: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; font-size: 12px; word-wrap: normal; } .markdown-body :-ms-input-placeholder { color: var(--color-fg-subtle); opacity: 1; } .markdown-body ::-ms-input-placeholder { color: var(--color-fg-subtle); opacity: 1; } .markdown-body ::placeholder { color: var(--color-fg-subtle); opacity: 1; } .markdown-body .pl-c { color: var(--color-prettylights-syntax-comment); } .markdown-body .pl-c1, .markdown-body .pl-s .pl-v { color: var(--color-prettylights-syntax-constant); } .markdown-body .pl-e, .markdown-body .pl-en { color: var(--color-prettylights-syntax-entity); } .markdown-body .pl-smi, .markdown-body .pl-s .pl-s1 { color: var(--color-prettylights-syntax-storage-modifier-import); } .markdown-body .pl-ent { color: var(--color-prettylights-syntax-entity-tag); } .markdown-body .pl-k { color: var(--color-prettylights-syntax-keyword); } .markdown-body .pl-s, .markdown-body .pl-pds, .markdown-body .pl-s .pl-pse .pl-s1, .markdown-body .pl-sr, .markdown-body .pl-sr .pl-cce, .markdown-body .pl-sr .pl-sre, .markdown-body .pl-sr .pl-sra { color: var(--color-prettylights-syntax-string); } .markdown-body .pl-v, .markdown-body .pl-smw { color: var(--color-prettylights-syntax-variable); } .markdown-body .pl-bu { color: var(--color-prettylights-syntax-brackethighlighter-unmatched); } .markdown-body .pl-ii { color: var(--color-prettylights-syntax-invalid-illegal-text); background-color: var(--color-prettylights-syntax-invalid-illegal-bg); } .markdown-body .pl-c2 { color: var(--color-prettylights-syntax-carriage-return-text); background-color: var(--color-prettylights-syntax-carriage-return-bg); } .markdown-body .pl-sr .pl-cce { font-weight: bold; color: var(--color-prettylights-syntax-string-regexp); } .markdown-body .pl-ml { color: var(--color-prettylights-syntax-markup-list); } .markdown-body .pl-mh, .markdown-body .pl-mh .pl-en, .markdown-body .pl-ms { font-weight: bold; color: var(--color-prettylights-syntax-markup-heading); } .markdown-body .pl-mi { font-style: italic; color: var(--color-prettylights-syntax-markup-italic); } .markdown-body .pl-mb { font-weight: bold; color: var(--color-prettylights-syntax-markup-bold); } .markdown-body .pl-md { color: var(--color-prettylights-syntax-markup-deleted-text); background-color: var(--color-prettylights-syntax-markup-deleted-bg); } .markdown-body .pl-mi1 { color: var(--color-prettylights-syntax-markup-inserted-text); background-color: var(--color-prettylights-syntax-markup-inserted-bg); } .markdown-body .pl-mc { color: var(--color-prettylights-syntax-markup-changed-text); background-color: var(--color-prettylights-syntax-markup-changed-bg); } .markdown-body .pl-mi2 { color: var(--color-prettylights-syntax-markup-ignored-text); background-color: var(--color-prettylights-syntax-markup-ignored-bg); } .markdown-body .pl-mdr { font-weight: bold; color: var(--color-prettylights-syntax-meta-diff-range); } .markdown-body .pl-ba { color: var(--color-prettylights-syntax-brackethighlighter-angle); } .markdown-body .pl-sg { color: var(--color-prettylights-syntax-sublimelinter-gutter-mark); } .markdown-body .pl-corl { text-decoration: underline; color: var(--color-prettylights-syntax-constant-other-reference-link); } .markdown-body [data-catalyst] { display: block; } .markdown-body g-emoji { font-family: "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; font-size: 1em; font-style: normal !important; font-weight: 400; line-height: 1; vertical-align: -0.075em; } .markdown-body g-emoji img { width: 1em; height: 1em; } .markdown-body::before { display: table; content: ""; } .markdown-body::after { display: table; clear: both; content: ""; } .markdown-body>*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !important; } .markdown-body a:not([href]) { color: inherit; text-decoration: none; } .markdown-body .absent { color: var(--color-danger-fg); } .markdown-body .anchor { float: left; padding-right: 4px; margin-left: -20px; line-height: 1; } .markdown-body .anchor:focus { outline: none; } .markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre, .markdown-body details { margin-top: 0; margin-bottom: 16px; } .markdown-body blockquote>:first-child { margin-top: 0; } .markdown-body blockquote>:last-child { margin-bottom: 0; } .markdown-body sup>a::before { content: "["; } .markdown-body sup>a::after { content: "]"; } .markdown-body h1 .octicon-link, .markdown-body h2 .octicon-link, .markdown-body h3 .octicon-link, .markdown-body h4 .octicon-link, .markdown-body h5 .octicon-link, .markdown-body h6 .octicon-link { color: var(--color-fg-default); vertical-align: middle; visibility: hidden; } .markdown-body h1:hover .anchor, .markdown-body h2:hover .anchor, .markdown-body h3:hover .anchor, .markdown-body h4:hover .anchor, .markdown-body h5:hover .anchor, .markdown-body h6:hover .anchor { text-decoration: none; } .markdown-body h1:hover .anchor .octicon-link, .markdown-body h2:hover .anchor .octicon-link, .markdown-body h3:hover .anchor .octicon-link, .markdown-body h4:hover .anchor .octicon-link, .markdown-body h5:hover .anchor .octicon-link, .markdown-body h6:hover .anchor .octicon-link { visibility: visible; } .markdown-body h1 tt, .markdown-body h1 code, .markdown-body h2 tt, .markdown-body h2 code, .markdown-body h3 tt, .markdown-body h3 code, .markdown-body h4 tt, .markdown-body h4 code, .markdown-body h5 tt, .markdown-body h5 code, .markdown-body h6 tt, .markdown-body h6 code { padding: 0 .2em; font-size: inherit; } .markdown-body ul.no-list, .markdown-body ol.no-list { padding: 0; list-style-type: none; } .markdown-body ol[type="1"] { list-style-type: decimal; } .markdown-body ol[type=a] { list-style-type: lower-alpha; } .markdown-body ol[type=i] { list-style-type: lower-roman; } .markdown-body div>ol:not([type]) { list-style-type: decimal; } .markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul { margin-top: 0; margin-bottom: 0; } .markdown-body li>p { margin-top: 16px; } .markdown-body li+li { margin-top: .25em; } .markdown-body dl { padding: 0; } .markdown-body dl dt { padding: 0; margin-top: 16px; font-size: 1em; font-style: italic; font-weight: 600; } .markdown-body dl dd { padding: 0 16px; margin-bottom: 16px; } .markdown-body table th { font-weight: 600; } .markdown-body table th, .markdown-body table td { padding: 6px 13px; border: 1px solid var(--color-border-default); } .markdown-body table tr { background-color: var(--color-canvas-default); border-top: 1px solid var(--color-border-muted); } .markdown-body table tr:nth-child(2n) { background-color: var(--color-canvas-subtle); } .markdown-body table img { background-color: transparent; } .markdown-body img[align=right] { padding-left: 20px; } .markdown-body img[align=left] { padding-right: 20px; } .markdown-body .emoji { max-width: none; vertical-align: text-top; background-color: transparent; } .markdown-body span.frame { display: block; overflow: hidden; } .markdown-body span.frame>span { display: block; float: left; width: auto; padding: 7px; margin: 13px 0 0; overflow: hidden; border: 1px solid var(--color-border-default); } .markdown-body span.frame span img { display: block; float: left; } .markdown-body span.frame span span { display: block; padding: 5px 0 0; clear: both; color: var(--color-fg-default); } .markdown-body span.align-center { display: block; overflow: hidden; clear: both; } .markdown-body span.align-center>span { display: block; margin: 13px auto 0; overflow: hidden; text-align: center; } .markdown-body span.align-center span img { margin: 0 auto; text-align: center; } .markdown-body span.align-right { display: block; overflow: hidden; clear: both; } .markdown-body span.align-right>span { display: block; margin: 13px 0 0; overflow: hidden; text-align: right; } .markdown-body span.align-right span img { margin: 0; text-align: right; } .markdown-body span.float-left { display: block; float: left; margin-right: 13px; overflow: hidden; } .markdown-body span.float-left span { margin: 13px 0 0; } .markdown-body span.float-right { display: block; float: right; margin-left: 13px; overflow: hidden; } .markdown-body span.float-right>span { display: block; margin: 13px auto 0; overflow: hidden; text-align: right; } .markdown-body code, .markdown-body tt { padding: .2em .4em; margin: 0; font-size: 85%; background-color: var(--color-neutral-muted); border-radius: 6px; } .markdown-body code br, .markdown-body tt br { display: none; } .markdown-body del code { text-decoration: inherit; } .markdown-body pre code { font-size: 100%; } .markdown-body pre>code { padding: 0; margin: 0; word-break: normal; white-space: pre; background: transparent; border: 0; } .markdown-body .highlight { margin-bottom: 16px; } .markdown-body .highlight pre { margin-bottom: 0; word-break: normal; } .markdown-body .highlight pre, .markdown-body pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background-color: var(--color-canvas-subtle); border-radius: 6px; } .markdown-body pre code, .markdown-body pre tt { display: inline; max-width: auto; padding: 0; margin: 0; overflow: visible; line-height: inherit; word-wrap: normal; background-color: transparent; border: 0; } .markdown-body .csv-data td, .markdown-body .csv-data th { padding: 5px; overflow: hidden; font-size: 12px; line-height: 1; text-align: left; white-space: nowrap; } .markdown-body .csv-data .blob-num { padding: 10px 8px 9px; text-align: right; background: var(--color-canvas-default); border: 0; } .markdown-body .csv-data tr { border-top: 0; } .markdown-body .csv-data th { font-weight: 600; background: var(--color-canvas-subtle); border-top: 0; } .markdown-body .footnotes { font-size: 12px; color: var(--color-fg-muted); border-top: 1px solid var(--color-border-default); } .markdown-body .footnotes ol { padding-left: 16px; } .markdown-body .footnotes li { position: relative; } .markdown-body .footnotes li:target::before { position: absolute; top: -8px; right: -8px; bottom: -8px; left: -24px; pointer-events: none; content: ""; border: 2px solid var(--color-accent-emphasis); border-radius: 6px; } .markdown-body .footnotes li:target { color: var(--color-fg-default); } .markdown-body .footnotes .data-footnote-backref g-emoji { font-family: monospace; } .markdown-body [hidden] { display: none !important; } .markdown-body ::-webkit-calendar-picker-indicator { filter: invert(50%); } ================================================ FILE: VimR/VimR/markdown/template.html ================================================ {{ title }} {{ body }} ================================================ FILE: VimR/VimR/preview/base.css ================================================ /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: none; } table { border-collapse: collapse; border-spacing: 0; } body { font-family: -apple-system, sans-serif; } #message { text-align: center; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .info-text { font-size: small; color: gray; } ================================================ FILE: VimR/VimR/preview/empty.html ================================================ Empty

😶

no preview...
================================================ FILE: VimR/VimR/preview/error.html ================================================ Error

😱

There was an error...
================================================ FILE: VimR/VimR/preview/save-first.html ================================================ Error

😶

Save first for preview
================================================ FILE: VimR/VimR/preview/select-first.html ================================================ Error

😶

Select an HTML file for preview
================================================ FILE: VimR/VimR/vimr ================================================ #!/usr/bin/env python3 import tempfile import urllib.parse import subprocess import argparse import os import uuid import json from enum import Enum class Action(Enum): ACTIVATE = "activate" OPEN = "open" NEW_WINDOW = "open-in-new-window" SEPARATE_WINDOWS = "open-in-separate-windows" NVIM = "nvim" class QueryParamKey(Enum): PIPE_PATH = "pipe-path" ENV_PATH = "env-path" CWD = "cwd" FILE = "file" NVIM_ARGS = "nvim-args" WAIT = "wait" LINE = "line" def wait_for_ui_to_close(pipe_path): with open(pipe_path, 'r') as fifo: while True: if len(fifo.read()) == 0: break def call_open(action, query_params, args): if args.wait: query_params[QueryParamKey.WAIT.value] = "true" url = f"vimr://{action.value}?{urllib.parse.urlencode(query_params, True).replace('+', '%20')}" if args.dry_run: print(f"/usr/bin/open {url}") else: subprocess.call(["/usr/bin/open", url]) def abspath(path): return os.path.abspath(os.path.expanduser(path)) def vimr_nvim(other_args, nvim_args, query_params): query_params[QueryParamKey.CWD.value] = os.getcwd() if nvim_args: query_params[QueryParamKey.NVIM_ARGS.value] = nvim_args call_open(Action.NVIM, query_params, other_args) def vimr(action, args, query_params): cwd = os.getcwd() if args.cwd is not None: cwd = abspath(args.cwd) query_params[QueryParamKey.CWD.value] = cwd files = args.file if files: query_params[QueryParamKey.FILE.value] = [abspath(f) for f in files] call_open(action, query_params, args) def main(args): temp_dir_path = tempfile.gettempdir() uuid_str = str(uuid.uuid4()) pipe_path = f"/{temp_dir_path}/com_qvacua_vimr_cli_pipe_{uuid_str}" if os.path.exists(pipe_path): os.remove(pipe_path) try: os.mkfifo(pipe_path, 0o600) except OSError as error: print(f"ERROR: {error}\n" f"{pipe_path} could not be mkfifo'ed.\n" f"Please go to https://github.com/qvacua/vimr and create an issue.") raise query_params = { QueryParamKey.PIPE_PATH.value: pipe_path } if args.line is not None: query_params[QueryParamKey.LINE.value] = args.line if args.cur_env: env_file = f"/{temp_dir_path}/com_qvacua_vimr_env_{uuid_str}" with open(env_file, "w") as f: f.write(json.dumps({k: v for (k, v) in os.environ.items()})) os.chmod(env_file, 0o600) query_params[QueryParamKey.ENV_PATH.value] = env_file if args.nvim: nvim_parser = argparse.ArgumentParser() nvim_parser.add_argument("--nvim", action="store_true") nvim_parser.add_argument("--wait", action="store_true") nvim_parser.add_argument("--cur-env", action="store_true") nvim_parser.add_argument("--dry-run", action="store_true") nvim_parser.add_argument("--line", action="store") other_args, nvim_args = nvim_parser.parse_known_args() vimr_nvim(other_args, nvim_args, query_params) else: if not args.file: action = Action.ACTIVATE elif args.new_window or args.cur_env: action = Action.NEW_WINDOW elif args.separate_windows: action = Action.SEPARATE_WINDOWS else: action = Action.OPEN vimr(action, args, query_params) if args.dry_run: exit(0) wait_for_ui_to_close(pipe_path) os.remove(pipe_path) def parse_args(): description = """ Open files in VimR: By default all files are open in tabs in the front most window or in a new window if there is none. The working directory will be set to the current directory. """ parser = argparse.ArgumentParser(description=description) parser.add_argument("--dry-run", action="store_true", dest="dry_run", help="Just print the 'open' command.") parser.add_argument("--cwd", action="store", help="Set the working directory.") parser.add_argument("--line", action="store", help="Go to line") parser.add_argument("--wait", action="store_true", help="This command line tool will exit when the corresponding UI window is closed.") parser.add_argument("--nvim", action="store_true", help="All arguments except --cur-env, --line, --dry-run and --wait will be passed " "over to the (new) nvim instance in a new UI window.") group = parser.add_mutually_exclusive_group() # no option => Open files in tabs in the front most window. group.add_argument("--cur-env", action="store_true", dest="cur_env", help="Use the current environment variables when launching the background neovim process. " "All files will be opened in a new window.") group.add_argument("-n", action="store_true", dest="new_window", help="Open files in tabs in a new window.") group.add_argument("-s", action="store_true", dest="separate_windows", help="Open files in separate windows.") parser.add_argument("file", nargs="*") args, _ = parser.parse_known_args() return args if __name__ == "__main__": args = parse_args() main(args) ================================================ FILE: VimR/VimR.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 54; objects = { /* Begin PBXBuildFile section */ 1929B05B9D664052EC2D23EF /* FileOutlineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BCE3E156C06EDF1F2806 /* FileOutlineView.swift */; }; 1929B0C7150100A84FBDB8BF /* ShortcutItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BF230875DED6CD7AB3EB /* ShortcutItem.swift */; }; 1929B0E0C3BC59F52713D5A2 /* FoundationCommons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B9AF20D7BD6E5C975128 /* FoundationCommons.swift */; }; 1929B0F599D1F62C7BE53D2C /* HttpServerMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B1DC584C89C477E83FA2 /* HttpServerMiddleware.swift */; }; 1929B1837C750CADB3A5BCB9 /* OpenQuicklyFileViewRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B1558455B3A74D93EF2A /* OpenQuicklyFileViewRow.swift */; }; 1929B223C6E97C090474B2C2 /* Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BC40B7B7708D8BE3A272 /* Resources.swift */; }; 1929B250DB3FB395A700FE8C /* RpcEvents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BBF0944940845485A512 /* RpcEvents.swift */; }; 1929B28EF1D4135A94C07558 /* ShortcutService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BD2195B8D7B87B2069C4 /* ShortcutService.swift */; }; 1929B29B95AD176D57942E08 /* UiRootReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B457B9D0FA4D21F3751E /* UiRootReducer.swift */; }; 1929B29FF537A339CF4075BD /* CssUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BA05F1FE30CA74F006C4 /* CssUtils.swift */; }; 1929B2D56C4652E251C23AD4 /* DefaultShortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B93256AF7F9137223E36 /* DefaultShortcuts.swift */; }; 1929B3217A7A3D79E28C80DB /* PrefWindowReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B49E6924847AD085C8C9 /* PrefWindowReducer.swift */; }; 1929B3557317755A43513B17 /* OpenQuicklyWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B71A92C24FEFE79A851E /* OpenQuicklyWindow.swift */; }; 1929B376DB09AB5FDBF42BA1 /* MainWindow+Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B41F704A4D67621197ED /* MainWindow+Types.swift */; }; 1929B3A6C332FFAAEC7FD219 /* MainWindow+CustomTitle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B71B4BB6550F5BC6D4CF /* MainWindow+CustomTitle.swift */; }; 1929B3AC66EFE35D68C020E3 /* MarkdownToolReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BFB0F294F3714D5E095F /* MarkdownToolReducer.swift */; }; 1929B4219A68586E2CED6E96 /* FileMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B333D8752E2E68F35122 /* FileMonitor.swift */; }; 1929B4B00D7BB191A9A6532D /* HtmlPreviewToolReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BE5AEA3D0980860EED50 /* HtmlPreviewToolReducer.swift */; }; 1929B4B70926DE113E6BF990 /* MarkdownPreviewReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BE37AA2843779CAFA76F /* MarkdownPreviewReducer.swift */; }; 1929B4E54E2F13A7F5F2B682 /* BufferListReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B67A10E6BB2986B2416E /* BufferListReducer.swift */; }; 1929B4F0612224E594E89B92 /* AppearancePref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B0FBFB766042CF06E463 /* AppearancePref.swift */; }; 1929B4FEE6EB56EF3F56B805 /* Context.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B34FC23D805A8B29E8F7 /* Context.swift */; }; 1929B50D933A369A86A165DE /* AdvencedPref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BBE0A534F2F6009D31BE /* AdvencedPref.swift */; }; 1929B5257DB27F03C6663482 /* MainWindow+Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B067B3247675BCD09218 /* MainWindow+Actions.swift */; }; 1929B542A071BD03C846F6EF /* PrefUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B8241CDE58F7AAF89AE4 /* PrefUtils.swift */; }; 1929B560C6CE264FD1E1F5A3 /* com.qvacua.VimR.vim in Resources */ = {isa = PBXBuildFile; fileRef = 1929BC6D45B7E14D4D75D4E6 /* com.qvacua.VimR.vim */; }; 1929B59FA5C286E010F70BEE /* Types.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BFC0A5A9C6DB09BE1368 /* Types.swift */; }; 1929B5A0EDD1119CFF7BB84C /* Defs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B7F7A4B3FD52263D211D /* Defs.swift */; }; 1929B5A2EE366F79ED32744C /* KeysPrefReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B88B5FA08E897A3C2168 /* KeysPrefReducer.swift */; }; 1929B5C1BABBC0D09D97C3EF /* MarkdownPreviewMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B617C229B19DB3E987B8 /* MarkdownPreviewMiddleware.swift */; }; 1929B6460862447A31B5B082 /* ImageAndTextTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BDC3F82CB4CB4FE56D1B /* ImageAndTextTableCell.swift */; }; 1929B6BE1610892E6C4C0CE6 /* GeneralPrefReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B0EB3F49C42A57D083AF /* GeneralPrefReducer.swift */; }; 1929B6C0393DE40E34F4A49A /* ToolsPrefReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B694508FB5FDE607513A /* ToolsPrefReducer.swift */; }; 1929B6D8F5FC723B7109031F /* OpenQuicklyReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B12CE56A9B36980288A4 /* OpenQuicklyReducer.swift */; }; 1929B71381946860626E5224 /* FileBrowserReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BDC8F5D48578A90236E9 /* FileBrowserReducer.swift */; }; 1929B7D1665BBB75DC89E391 /* IgnoreService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B71F6A82A34F16BB52BE /* IgnoreService.swift */; }; 1929B8DDACEB28E6672AEC42 /* MainWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B6E01216D49BB9F3B6A3 /* MainWindow.swift */; }; 1929B8F498D1E7C53F572CE2 /* KeysPref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B14A5949FB64C4B2646F /* KeysPref.swift */; }; 1929B8FB248D71BF88A35761 /* MarkdownTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B6C6C7792B05164B0216 /* MarkdownTool.swift */; }; 1929B990A143763A56CFCED0 /* PrefMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B364460D86F17E80943C /* PrefMiddleware.swift */; }; 1929BA269EBD68251410A08E /* ShortcutsTableSubviews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B07F0085B7AE10413346 /* ShortcutsTableSubviews.swift */; }; 1929BA715337FE26155B2071 /* BufferList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BA43449BA41666CD55ED /* BufferList.swift */; }; 1929BA76A1D97D8226F7CFB1 /* Throttler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B6AD3396160AA2C46919 /* Throttler.swift */; }; 1929BAE4900D72A7877741B1 /* PrefWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BE168F31344B69E61B62 /* PrefWindow.swift */; }; 1929BAFF1E011321D3186EE6 /* UiRoot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BD4149D5A25C82064DD8 /* UiRoot.swift */; }; 1929BB4A9B2FA42A64CCCC76 /* MainWindowReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BD83A13BF133741766CC /* MainWindowReducer.swift */; }; 1929BB67CAAD4F6CBD38DF0A /* Redux.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B66A5E2D00EA143AFD86 /* Redux.swift */; }; 1929BB85B2D30E548A32663D /* ShortcutsPref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B0E9B2F018D3E31D4B0B /* ShortcutsPref.swift */; }; 1929BBE28654E4307AF1E2FD /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BC2F05E9A5C0DB039739 /* Theme.swift */; }; 1929BC64D3C195A92BE3FD64 /* HtmlPreviewMiddleware.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B18E9BE35750BF2BA571 /* HtmlPreviewMiddleware.swift */; }; 1929BCC7908DD899999B70BE /* AppearancePrefReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BED01F5D94BFCA4CF80F /* AppearancePrefReducer.swift */; }; 1929BCC9D3604933DFF07E2E /* FileBrowser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BA5C7099CDEB04B76BA4 /* FileBrowser.swift */; }; 1929BCF7F7B9CC5499A3F506 /* AdvancedPrefReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B7039C5689CE45F53888 /* AdvancedPrefReducer.swift */; }; 1929BD3878A3A47B8D685CD2 /* AppDelegateReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B7A68B7109CEFAF105E8 /* AppDelegateReducer.swift */; }; 1929BE0DAEE9664C5BCFA211 /* States.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BB6608B4F0E037CA0F4C /* States.swift */; }; 1929BE0F64A6CE5BCE2A5092 /* MainWindow+Delegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B714EB137AE448CE8ABD /* MainWindow+Delegates.swift */; }; 1929BE2F3E0182CC51F2763A /* ThemedTableSubviews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BD2CA8DD198A6BCDBCB7 /* ThemedTableSubviews.swift */; }; 1929BE511088E082529199CB /* IgnoreServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B07A72CA7CCA31337713 /* IgnoreServiceTest.swift */; }; 1929BEAE0592096BC1191B67 /* PrefPane.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B07A4A9209C88380E015 /* PrefPane.swift */; }; 1929BEDE1BE950EDA9497363 /* GeneralPref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BB55946DAEBF55D24048 /* GeneralPref.swift */; }; 1929BF03FD6465F289AA80B2 /* ToolsPref.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929BB2AD21A10A0ECA66A5E /* ToolsPref.swift */; }; 1929BFDE22D155F7C4B19E96 /* HtmlPreviewTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B85023B042C485409CE1 /* HtmlPreviewTool.swift */; }; 4B029F1A1D45E349004EE0D3 /* PrefWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B029F1C1D45E349004EE0D3 /* PrefWindow.xib */; }; 4B0B36202595236000B06899 /* Swifter in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD5655224E8014100D52809 /* Swifter */; }; 4B0B36212595236000B06899 /* PureLayout in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD5655824E8040E00D52809 /* PureLayout */; }; 4B0B36232595236000B06899 /* DictionaryCoding in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD5657724E8443300D52809 /* DictionaryCoding */; }; 4B0B36252595236000B06899 /* MessagePack in Frameworks */ = {isa = PBXBuildFile; productRef = 4B9BC41D24EB2E22000209B5 /* MessagePack */; }; 4B0B36292595236000B06899 /* NvimView in Frameworks */ = {isa = PBXBuildFile; productRef = 4B9BC42624EB2E51000209B5 /* NvimView */; }; 4B0B362A2595236000B06899 /* ShortcutRecorder in Frameworks */ = {isa = PBXBuildFile; productRef = 4B9BC42924EB2E6D000209B5 /* ShortcutRecorder */; }; 4B0B362C2595236000B06899 /* Commons in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD67C7A24EC765900147C51 /* Commons */; }; 4B0B362D2595236000B06899 /* MaterialIcons in Frameworks */ = {isa = PBXBuildFile; productRef = 4B69B31A24EDBAF000B1E5EB /* MaterialIcons */; }; 4B0B362E2595236000B06899 /* Workspace in Frameworks */ = {isa = PBXBuildFile; productRef = 4B69B31C24EDC9F100B1E5EB /* Workspace */; }; 4B0B362F2595236000B06899 /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = 4BA284B1256471ED00CFDF7F /* Sparkle */; }; 4B0B36302595236000B06899 /* Nimble in Frameworks */ = {isa = PBXBuildFile; productRef = 4BD67CDB24EE45E900147C51 /* Nimble */; }; 4B19BEFC1E110183007E823C /* markdown in Resources */ = {isa = PBXBuildFile; fileRef = 4B19BEFA1E110183007E823C /* markdown */; }; 4B19BEFD1E110183007E823C /* preview in Resources */ = {isa = PBXBuildFile; fileRef = 4B19BEFB1E110183007E823C /* preview */; }; 4B238BE11D3BF24200CBDD98 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B238BE01D3BF24200CBDD98 /* Application.swift */; }; 4B37ADB91D6E471B00970D55 /* vimr in Resources */ = {isa = PBXBuildFile; fileRef = 4B37ADB81D6E471B00970D55 /* vimr */; }; 4B6A70941D60E04200E12030 /* AppKitCommons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6A70931D60E04200E12030 /* AppKitCommons.swift */; }; 4B7021CE2D7EE5B6001D82AF /* RpcAppearanceReducer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B7021CD2D7EE5AD001D82AF /* RpcAppearanceReducer.swift */; }; 4B9433DC20B95EC6005807BA /* MacVim-bsh.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A120B95EC1005807BA /* MacVim-bsh.icns */; }; 4B9433DD20B95EC6005807BA /* MacVim-generic.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A220B95EC1005807BA /* MacVim-generic.icns */; }; 4B9433DE20B95EC6005807BA /* MacVim-dylan.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A320B95EC1005807BA /* MacVim-dylan.icns */; }; 4B9433DF20B95EC6005807BA /* MacVim-lisp.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A420B95EC1005807BA /* MacVim-lisp.icns */; }; 4B9433E020B95EC6005807BA /* MacVim-plist.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A520B95EC1005807BA /* MacVim-plist.icns */; }; 4B9433E120B95EC6005807BA /* MacVim-csfg.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A620B95EC1005807BA /* MacVim-csfg.icns */; }; 4B9433E220B95EC6005807BA /* MacVim-yaml.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A720B95EC1005807BA /* MacVim-yaml.icns */; }; 4B9433E320B95EC6005807BA /* MacVim-tex.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A820B95EC1005807BA /* MacVim-tex.icns */; }; 4B9433E420B95EC6005807BA /* MacVim-sql.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433A920B95EC2005807BA /* MacVim-sql.icns */; }; 4B9433E520B95EC6005807BA /* MacVim-applescript.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433AA20B95EC2005807BA /* MacVim-applescript.icns */; }; 4B9433E620B95EC6005807BA /* MacVim-log.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433AB20B95EC2005807BA /* MacVim-log.icns */; }; 4B9433E720B95EC6005807BA /* MacVim-cgi.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433AC20B95EC2005807BA /* MacVim-cgi.icns */; }; 4B9433E820B95EC7005807BA /* MacVim-csv.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433AD20B95EC2005807BA /* MacVim-csv.icns */; }; 4B9433E920B95EC7005807BA /* MacVim-bash.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433AE20B95EC2005807BA /* MacVim-bash.icns */; }; 4B9433EA20B95EC7005807BA /* MacVim-vcf.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433AF20B95EC2005807BA /* MacVim-vcf.icns */; }; 4B9433EB20B95EC7005807BA /* MacVim-cpp.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B020B95EC2005807BA /* MacVim-cpp.icns */; }; 4B9433EC20B95EC7005807BA /* MacVim-js.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B120B95EC2005807BA /* MacVim-js.icns */; }; 4B9433ED20B95EC7005807BA /* MacVim-f.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B220B95EC2005807BA /* MacVim-f.icns */; }; 4B9433EE20B95EC7005807BA /* MacVim-vim.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B320B95EC2005807BA /* MacVim-vim.icns */; }; 4B9433EF20B95EC7005807BA /* MacVim-tsv.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B420B95EC2005807BA /* MacVim-tsv.icns */; }; 4B9433F020B95EC7005807BA /* MacVim-py.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B520B95EC3005807BA /* MacVim-py.icns */; }; 4B9433F120B95EC7005807BA /* MacVim-html.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B620B95EC3005807BA /* MacVim-html.icns */; }; 4B9433F220B95EC7005807BA /* MacVim-hs.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B720B95EC3005807BA /* MacVim-hs.icns */; }; 4B9433F320B95EC7005807BA /* MacVim-cs.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B820B95EC3005807BA /* MacVim-cs.icns */; }; 4B9433F420B95EC7005807BA /* MacVim-vb.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433B920B95EC3005807BA /* MacVim-vb.icns */; }; 4B9433F520B95EC7005807BA /* MacVim-asp.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433BA20B95EC3005807BA /* MacVim-asp.icns */; }; 4B9433F620B95EC7005807BA /* MacVim-as.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433BB20B95EC3005807BA /* MacVim-as.icns */; }; 4B9433F720B95EC7005807BA /* MacVim-mm.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433BC20B95EC3005807BA /* MacVim-mm.icns */; }; 4B9433F820B95EC7005807BA /* MacVim-properties.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433BD20B95EC3005807BA /* MacVim-properties.icns */; }; 4B9433F920B95EC7005807BA /* MacVim-gtd.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433BE20B95EC3005807BA /* MacVim-gtd.icns */; }; 4B9433FA20B95EC7005807BA /* MacVim-tcl.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433BF20B95EC4005807BA /* MacVim-tcl.icns */; }; 4B9433FB20B95EC7005807BA /* MacVim-markdown.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C020B95EC4005807BA /* MacVim-markdown.icns */; }; 4B9433FC20B95EC7005807BA /* MacVim-vba.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C120B95EC4005807BA /* MacVim-vba.icns */; }; 4B9433FD20B95EC7005807BA /* MacVim-patch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C220B95EC4005807BA /* MacVim-patch.icns */; }; 4B9433FE20B95EC7005807BA /* MacVim-txt.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C320B95EC4005807BA /* MacVim-txt.icns */; }; 4B9433FF20B95EC7005807BA /* MacVim-rb.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C420B95EC4005807BA /* MacVim-rb.icns */; }; 4B94340020B95EC7005807BA /* MacVim-fscript.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C520B95EC4005807BA /* MacVim-fscript.icns */; }; 4B94340120B95EC7005807BA /* MacVim-m.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C620B95EC4005807BA /* MacVim-m.icns */; }; 4B94340220B95EC7005807BA /* MacVim-io.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C720B95EC4005807BA /* MacVim-io.icns */; }; 4B94340320B95EC7005807BA /* MacVim-h.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C820B95EC4005807BA /* MacVim-h.icns */; }; 4B94340420B95EC7005807BA /* MacVim-inc.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433C920B95EC5005807BA /* MacVim-inc.icns */; }; 4B94340520B95EC7005807BA /* MacVim-c.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433CA20B95EC5005807BA /* MacVim-c.icns */; }; 4B94340620B95EC7005807BA /* MacVim-ini.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433CB20B95EC5005807BA /* MacVim-ini.icns */; }; 4B94340720B95EC7005807BA /* MacVim-jsp.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433CC20B95EC5005807BA /* MacVim-jsp.icns */; }; 4B94340820B95EC7005807BA /* MacVim-php.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433CD20B95EC5005807BA /* MacVim-php.icns */; }; 4B94340920B95EC7005807BA /* MacVim-xml.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433CE20B95EC5005807BA /* MacVim-xml.icns */; }; 4B94340A20B95EC7005807BA /* MacVim-bib.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433CF20B95EC5005807BA /* MacVim-bib.icns */; }; 4B94340B20B95EC7005807BA /* MacVim-cfg.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D020B95EC5005807BA /* MacVim-cfg.icns */; }; 4B94340C20B95EC7005807BA /* MacVim-erl.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D120B95EC5005807BA /* MacVim-erl.icns */; }; 4B94340D20B95EC7005807BA /* MacVim-dtd.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D220B95EC5005807BA /* MacVim-dtd.icns */; }; 4B94340E20B95EC7005807BA /* MacVim-wiki.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D320B95EC6005807BA /* MacVim-wiki.icns */; }; 4B94340F20B95EC7005807BA /* MacVim-java.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D420B95EC6005807BA /* MacVim-java.icns */; }; 4B94341020B95EC7005807BA /* MacVim-perl.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D520B95EC6005807BA /* MacVim-perl.icns */; }; 4B94341120B95EC7005807BA /* MacVim-ics.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D620B95EC6005807BA /* MacVim-ics.icns */; }; 4B94341220B95EC7005807BA /* MacVim-rst.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D720B95EC6005807BA /* MacVim-rst.icns */; }; 4B94341320B95EC7005807BA /* MacVim-xsl.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D820B95EC6005807BA /* MacVim-xsl.icns */; }; 4B94341420B95EC7005807BA /* MacVim-sch.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433D920B95EC6005807BA /* MacVim-sch.icns */; }; 4B94341520B95EC7005807BA /* MacVim-ps.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433DA20B95EC6005807BA /* MacVim-ps.icns */; }; 4B94341620B95EC7005807BA /* MacVim-css.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4B9433DB20B95EC6005807BA /* MacVim-css.icns */; }; 4B97E2CC1D33F53D00FC0660 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4B97E2CE1D33F53D00FC0660 /* MainWindow.xib */; }; 4B9D049D273481AD007E8614 /* Down in Frameworks */ = {isa = PBXBuildFile; productRef = 4B9D049C273481AD007E8614 /* Down */; }; 4BA19812285B4BA600B49309 /* Misc in Frameworks */ = {isa = PBXBuildFile; productRef = 4BA19811285B4BA600B49309 /* Misc */; }; 4BA19817285B599400B49309 /* FuzzySearch.xcdatamodel in Sources */ = {isa = PBXBuildFile; fileRef = 1929B656C04BA6F950BFA2F5 /* FuzzySearch.xcdatamodel */; }; 4BADD55B283A847100C6B16D /* Ignore in Frameworks */ = {isa = PBXBuildFile; productRef = 4BADD55A283A847100C6B16D /* Ignore */; }; 4BADD55E283ABD0200C6B16D /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = 4BADD55D283ABD0200C6B16D /* OrderedCollections */; }; 4BB409E51DD68CCC005F39A2 /* FileBrowserMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BB409E71DD68CCC005F39A2 /* FileBrowserMenu.xib */; }; 4BBE7F512D21C12B006090D9 /* EonilFSEvents in Frameworks */ = {isa = PBXBuildFile; productRef = 4BBE7F502D21C12B006090D9 /* EonilFSEvents */; }; 4BDF50171D77540900D8FBC3 /* OpenQuicklyWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BDF50191D77540900D8FBC3 /* OpenQuicklyWindow.xib */; }; 4BE73F99285C9A9A00B63585 /* IgnoreService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B71F6A82A34F16BB52BE /* IgnoreService.swift */; }; 4BE73F9B285C9AC100B63585 /* Ignore in Frameworks */ = {isa = PBXBuildFile; productRef = 4BE73F9A285C9AC100B63585 /* Ignore */; }; 4BE73F9D285C9AD600B63585 /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = 4BE73F9C285C9AD600B63585 /* OrderedCollections */; }; 4BE73FA2285C9C6C00B63585 /* FoundationCommons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1929B9AF20D7BD6E5C975128 /* FoundationCommons.swift */; }; 4BE73FA4285C9C7700B63585 /* Commons in Frameworks */ = {isa = PBXBuildFile; productRef = 4BE73FA3285C9C7700B63585 /* Commons */; }; 4BE73FA6285CA9D100B63585 /* Resources in Resources */ = {isa = PBXBuildFile; fileRef = 4BE73FA5285CA9D100B63585 /* Resources */; }; 4BEBA5091CFF374B00673FDF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BEBA5081CFF374B00673FDF /* AppDelegate.swift */; }; 4BEBA50B1CFF374B00673FDF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4BEBA50A1CFF374B00673FDF /* Assets.xcassets */; }; 4BEBA50E1CFF374B00673FDF /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BEBA50C1CFF374B00673FDF /* MainMenu.xib */; }; 4BF07EE41D51326A009BECEB /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 4BF07EE61D51326A009BECEB /* Credits.rtf */; }; 4BF70ED623D1B54F009E51E9 /* ScoredUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BF70ED523D1B54F009E51E9 /* ScoredUrl.m */; }; 4BF70EE523D1B5EC009E51E9 /* FuzzySearchService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BF70EE323D1B5EC009E51E9 /* FuzzySearchService.swift */; }; 4BF70EEA23D1B5FF009E51E9 /* CoreDataStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BF70EE923D1B5FF009E51E9 /* CoreDataStack.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ 4BE73F9E285C9C4500B63585 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 4BEBA4FD1CFF374B00673FDF /* Project object */; proxyType = 1; remoteGlobalIDString = 4BEBA5041CFF374B00673FDF; remoteInfo = VimR; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ 4B6A709B1D65079600E12030 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 1929B067B3247675BCD09218 /* MainWindow+Actions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MainWindow+Actions.swift"; sourceTree = ""; }; 1929B07A4A9209C88380E015 /* PrefPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrefPane.swift; sourceTree = ""; }; 1929B07A72CA7CCA31337713 /* IgnoreServiceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IgnoreServiceTest.swift; sourceTree = ""; }; 1929B07F0085B7AE10413346 /* ShortcutsTableSubviews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShortcutsTableSubviews.swift; sourceTree = ""; }; 1929B0E9B2F018D3E31D4B0B /* ShortcutsPref.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShortcutsPref.swift; sourceTree = ""; }; 1929B0EB3F49C42A57D083AF /* GeneralPrefReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneralPrefReducer.swift; sourceTree = ""; }; 1929B0FBFB766042CF06E463 /* AppearancePref.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppearancePref.swift; sourceTree = ""; }; 1929B12CE56A9B36980288A4 /* OpenQuicklyReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyReducer.swift; sourceTree = ""; }; 1929B14A5949FB64C4B2646F /* KeysPref.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeysPref.swift; sourceTree = ""; }; 1929B1558455B3A74D93EF2A /* OpenQuicklyFileViewRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyFileViewRow.swift; sourceTree = ""; }; 1929B18E9BE35750BF2BA571 /* HtmlPreviewMiddleware.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HtmlPreviewMiddleware.swift; sourceTree = ""; }; 1929B1DC584C89C477E83FA2 /* HttpServerMiddleware.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HttpServerMiddleware.swift; sourceTree = ""; }; 1929B333D8752E2E68F35122 /* FileMonitor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileMonitor.swift; sourceTree = ""; }; 1929B34FC23D805A8B29E8F7 /* Context.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Context.swift; sourceTree = ""; }; 1929B364460D86F17E80943C /* PrefMiddleware.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrefMiddleware.swift; sourceTree = ""; }; 1929B41F704A4D67621197ED /* MainWindow+Types.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MainWindow+Types.swift"; sourceTree = ""; }; 1929B457B9D0FA4D21F3751E /* UiRootReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UiRootReducer.swift; sourceTree = ""; }; 1929B49E6924847AD085C8C9 /* PrefWindowReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrefWindowReducer.swift; sourceTree = ""; }; 1929B617C229B19DB3E987B8 /* MarkdownPreviewMiddleware.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkdownPreviewMiddleware.swift; sourceTree = ""; }; 1929B656C04BA6F950BFA2F5 /* FuzzySearch.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = FuzzySearch.xcdatamodel; sourceTree = ""; }; 1929B66A5E2D00EA143AFD86 /* Redux.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Redux.swift; sourceTree = ""; }; 1929B67A10E6BB2986B2416E /* BufferListReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BufferListReducer.swift; sourceTree = ""; }; 1929B694508FB5FDE607513A /* ToolsPrefReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToolsPrefReducer.swift; sourceTree = ""; }; 1929B6AD3396160AA2C46919 /* Throttler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Throttler.swift; sourceTree = ""; }; 1929B6C6C7792B05164B0216 /* MarkdownTool.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkdownTool.swift; sourceTree = ""; }; 1929B6E01216D49BB9F3B6A3 /* MainWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainWindow.swift; sourceTree = ""; }; 1929B7039C5689CE45F53888 /* AdvancedPrefReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvancedPrefReducer.swift; sourceTree = ""; }; 1929B714EB137AE448CE8ABD /* MainWindow+Delegates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MainWindow+Delegates.swift"; sourceTree = ""; }; 1929B71A92C24FEFE79A851E /* OpenQuicklyWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenQuicklyWindow.swift; sourceTree = ""; }; 1929B71B4BB6550F5BC6D4CF /* MainWindow+CustomTitle.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MainWindow+CustomTitle.swift"; sourceTree = ""; }; 1929B71F6A82A34F16BB52BE /* IgnoreService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IgnoreService.swift; sourceTree = ""; }; 1929B7A68B7109CEFAF105E8 /* AppDelegateReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegateReducer.swift; sourceTree = ""; }; 1929B7F7A4B3FD52263D211D /* Defs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Defs.swift; sourceTree = ""; }; 1929B8241CDE58F7AAF89AE4 /* PrefUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrefUtils.swift; sourceTree = ""; }; 1929B85023B042C485409CE1 /* HtmlPreviewTool.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HtmlPreviewTool.swift; sourceTree = ""; }; 1929B88B5FA08E897A3C2168 /* KeysPrefReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KeysPrefReducer.swift; sourceTree = ""; }; 1929B93256AF7F9137223E36 /* DefaultShortcuts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultShortcuts.swift; sourceTree = ""; }; 1929B9AF20D7BD6E5C975128 /* FoundationCommons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FoundationCommons.swift; sourceTree = ""; }; 1929BA05F1FE30CA74F006C4 /* CssUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CssUtils.swift; sourceTree = ""; }; 1929BA43449BA41666CD55ED /* BufferList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BufferList.swift; sourceTree = ""; }; 1929BA5C7099CDEB04B76BA4 /* FileBrowser.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileBrowser.swift; sourceTree = ""; }; 1929BB2AD21A10A0ECA66A5E /* ToolsPref.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ToolsPref.swift; sourceTree = ""; }; 1929BB55946DAEBF55D24048 /* GeneralPref.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneralPref.swift; sourceTree = ""; }; 1929BB6608B4F0E037CA0F4C /* States.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = States.swift; sourceTree = ""; }; 1929BBE0A534F2F6009D31BE /* AdvencedPref.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AdvencedPref.swift; sourceTree = ""; }; 1929BBF0944940845485A512 /* RpcEvents.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RpcEvents.swift; sourceTree = ""; }; 1929BC2F05E9A5C0DB039739 /* Theme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = ""; }; 1929BC40B7B7708D8BE3A272 /* Resources.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Resources.swift; sourceTree = ""; }; 1929BC6D45B7E14D4D75D4E6 /* com.qvacua.VimR.vim */ = {isa = PBXFileReference; lastKnownFileType = file.vim; path = com.qvacua.VimR.vim; sourceTree = ""; }; 1929BCE3E156C06EDF1F2806 /* FileOutlineView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileOutlineView.swift; sourceTree = ""; }; 1929BD2195B8D7B87B2069C4 /* ShortcutService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShortcutService.swift; sourceTree = ""; }; 1929BD2CA8DD198A6BCDBCB7 /* ThemedTableSubviews.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThemedTableSubviews.swift; sourceTree = ""; }; 1929BD4149D5A25C82064DD8 /* UiRoot.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UiRoot.swift; sourceTree = ""; }; 1929BD83A13BF133741766CC /* MainWindowReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainWindowReducer.swift; sourceTree = ""; }; 1929BDC3F82CB4CB4FE56D1B /* ImageAndTextTableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageAndTextTableCell.swift; sourceTree = ""; }; 1929BDC8F5D48578A90236E9 /* FileBrowserReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileBrowserReducer.swift; sourceTree = ""; }; 1929BE168F31344B69E61B62 /* PrefWindow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PrefWindow.swift; sourceTree = ""; }; 1929BE37AA2843779CAFA76F /* MarkdownPreviewReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkdownPreviewReducer.swift; sourceTree = ""; }; 1929BE5AEA3D0980860EED50 /* HtmlPreviewToolReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HtmlPreviewToolReducer.swift; sourceTree = ""; }; 1929BED01F5D94BFCA4CF80F /* AppearancePrefReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppearancePrefReducer.swift; sourceTree = ""; }; 1929BF230875DED6CD7AB3EB /* ShortcutItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShortcutItem.swift; sourceTree = ""; }; 1929BFB0F294F3714D5E095F /* MarkdownToolReducer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MarkdownToolReducer.swift; sourceTree = ""; }; 1929BFC0A5A9C6DB09BE1368 /* Types.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Types.swift; sourceTree = ""; }; 4B029F1B1D45E349004EE0D3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/PrefWindow.xib; sourceTree = ""; }; 4B19BEFA1E110183007E823C /* markdown */ = {isa = PBXFileReference; lastKnownFileType = folder; path = markdown; sourceTree = ""; }; 4B19BEFB1E110183007E823C /* preview */ = {isa = PBXFileReference; lastKnownFileType = folder; path = preview; sourceTree = ""; }; 4B238BE01D3BF24200CBDD98 /* Application.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = ""; }; 4B2A2C0D1D0353750074CE9A /* Bridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Bridge.h; sourceTree = ""; }; 4B37ADB81D6E471B00970D55 /* vimr */ = {isa = PBXFileReference; fileEncoding = 1; lastKnownFileType = text.script.python; path = vimr; sourceTree = ""; }; 4B6A70931D60E04200E12030 /* AppKitCommons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppKitCommons.swift; sourceTree = ""; }; 4B7021CD2D7EE5AD001D82AF /* RpcAppearanceReducer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RpcAppearanceReducer.swift; sourceTree = ""; }; 4B8C64CD23F02259008733D8 /* Dev.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Dev.xcconfig; sourceTree = ""; }; 4B8C64CE23F022C2008733D8 /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 4B9433A120B95EC1005807BA /* MacVim-bsh.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-bsh.icns"; path = "macvim-file-icons/MacVim-bsh.icns"; sourceTree = ""; }; 4B9433A220B95EC1005807BA /* MacVim-generic.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-generic.icns"; path = "macvim-file-icons/MacVim-generic.icns"; sourceTree = ""; }; 4B9433A320B95EC1005807BA /* MacVim-dylan.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-dylan.icns"; path = "macvim-file-icons/MacVim-dylan.icns"; sourceTree = ""; }; 4B9433A420B95EC1005807BA /* MacVim-lisp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-lisp.icns"; path = "macvim-file-icons/MacVim-lisp.icns"; sourceTree = ""; }; 4B9433A520B95EC1005807BA /* MacVim-plist.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-plist.icns"; path = "macvim-file-icons/MacVim-plist.icns"; sourceTree = ""; }; 4B9433A620B95EC1005807BA /* MacVim-csfg.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-csfg.icns"; path = "macvim-file-icons/MacVim-csfg.icns"; sourceTree = ""; }; 4B9433A720B95EC1005807BA /* MacVim-yaml.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-yaml.icns"; path = "macvim-file-icons/MacVim-yaml.icns"; sourceTree = ""; }; 4B9433A820B95EC1005807BA /* MacVim-tex.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-tex.icns"; path = "macvim-file-icons/MacVim-tex.icns"; sourceTree = ""; }; 4B9433A920B95EC2005807BA /* MacVim-sql.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-sql.icns"; path = "macvim-file-icons/MacVim-sql.icns"; sourceTree = ""; }; 4B9433AA20B95EC2005807BA /* MacVim-applescript.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-applescript.icns"; path = "macvim-file-icons/MacVim-applescript.icns"; sourceTree = ""; }; 4B9433AB20B95EC2005807BA /* MacVim-log.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-log.icns"; path = "macvim-file-icons/MacVim-log.icns"; sourceTree = ""; }; 4B9433AC20B95EC2005807BA /* MacVim-cgi.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-cgi.icns"; path = "macvim-file-icons/MacVim-cgi.icns"; sourceTree = ""; }; 4B9433AD20B95EC2005807BA /* MacVim-csv.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-csv.icns"; path = "macvim-file-icons/MacVim-csv.icns"; sourceTree = ""; }; 4B9433AE20B95EC2005807BA /* MacVim-bash.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-bash.icns"; path = "macvim-file-icons/MacVim-bash.icns"; sourceTree = ""; }; 4B9433AF20B95EC2005807BA /* MacVim-vcf.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-vcf.icns"; path = "macvim-file-icons/MacVim-vcf.icns"; sourceTree = ""; }; 4B9433B020B95EC2005807BA /* MacVim-cpp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-cpp.icns"; path = "macvim-file-icons/MacVim-cpp.icns"; sourceTree = ""; }; 4B9433B120B95EC2005807BA /* MacVim-js.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-js.icns"; path = "macvim-file-icons/MacVim-js.icns"; sourceTree = ""; }; 4B9433B220B95EC2005807BA /* MacVim-f.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-f.icns"; path = "macvim-file-icons/MacVim-f.icns"; sourceTree = ""; }; 4B9433B320B95EC2005807BA /* MacVim-vim.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-vim.icns"; path = "macvim-file-icons/MacVim-vim.icns"; sourceTree = ""; }; 4B9433B420B95EC2005807BA /* MacVim-tsv.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-tsv.icns"; path = "macvim-file-icons/MacVim-tsv.icns"; sourceTree = ""; }; 4B9433B520B95EC3005807BA /* MacVim-py.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-py.icns"; path = "macvim-file-icons/MacVim-py.icns"; sourceTree = ""; }; 4B9433B620B95EC3005807BA /* MacVim-html.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-html.icns"; path = "macvim-file-icons/MacVim-html.icns"; sourceTree = ""; }; 4B9433B720B95EC3005807BA /* MacVim-hs.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-hs.icns"; path = "macvim-file-icons/MacVim-hs.icns"; sourceTree = ""; }; 4B9433B820B95EC3005807BA /* MacVim-cs.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-cs.icns"; path = "macvim-file-icons/MacVim-cs.icns"; sourceTree = ""; }; 4B9433B920B95EC3005807BA /* MacVim-vb.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-vb.icns"; path = "macvim-file-icons/MacVim-vb.icns"; sourceTree = ""; }; 4B9433BA20B95EC3005807BA /* MacVim-asp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-asp.icns"; path = "macvim-file-icons/MacVim-asp.icns"; sourceTree = ""; }; 4B9433BB20B95EC3005807BA /* MacVim-as.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-as.icns"; path = "macvim-file-icons/MacVim-as.icns"; sourceTree = ""; }; 4B9433BC20B95EC3005807BA /* MacVim-mm.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-mm.icns"; path = "macvim-file-icons/MacVim-mm.icns"; sourceTree = ""; }; 4B9433BD20B95EC3005807BA /* MacVim-properties.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-properties.icns"; path = "macvim-file-icons/MacVim-properties.icns"; sourceTree = ""; }; 4B9433BE20B95EC3005807BA /* MacVim-gtd.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-gtd.icns"; path = "macvim-file-icons/MacVim-gtd.icns"; sourceTree = ""; }; 4B9433BF20B95EC4005807BA /* MacVim-tcl.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-tcl.icns"; path = "macvim-file-icons/MacVim-tcl.icns"; sourceTree = ""; }; 4B9433C020B95EC4005807BA /* MacVim-markdown.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-markdown.icns"; path = "macvim-file-icons/MacVim-markdown.icns"; sourceTree = ""; }; 4B9433C120B95EC4005807BA /* MacVim-vba.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-vba.icns"; path = "macvim-file-icons/MacVim-vba.icns"; sourceTree = ""; }; 4B9433C220B95EC4005807BA /* MacVim-patch.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-patch.icns"; path = "macvim-file-icons/MacVim-patch.icns"; sourceTree = ""; }; 4B9433C320B95EC4005807BA /* MacVim-txt.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-txt.icns"; path = "macvim-file-icons/MacVim-txt.icns"; sourceTree = ""; }; 4B9433C420B95EC4005807BA /* MacVim-rb.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-rb.icns"; path = "macvim-file-icons/MacVim-rb.icns"; sourceTree = ""; }; 4B9433C520B95EC4005807BA /* MacVim-fscript.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-fscript.icns"; path = "macvim-file-icons/MacVim-fscript.icns"; sourceTree = ""; }; 4B9433C620B95EC4005807BA /* MacVim-m.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-m.icns"; path = "macvim-file-icons/MacVim-m.icns"; sourceTree = ""; }; 4B9433C720B95EC4005807BA /* MacVim-io.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-io.icns"; path = "macvim-file-icons/MacVim-io.icns"; sourceTree = ""; }; 4B9433C820B95EC4005807BA /* MacVim-h.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-h.icns"; path = "macvim-file-icons/MacVim-h.icns"; sourceTree = ""; }; 4B9433C920B95EC5005807BA /* MacVim-inc.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-inc.icns"; path = "macvim-file-icons/MacVim-inc.icns"; sourceTree = ""; }; 4B9433CA20B95EC5005807BA /* MacVim-c.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-c.icns"; path = "macvim-file-icons/MacVim-c.icns"; sourceTree = ""; }; 4B9433CB20B95EC5005807BA /* MacVim-ini.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-ini.icns"; path = "macvim-file-icons/MacVim-ini.icns"; sourceTree = ""; }; 4B9433CC20B95EC5005807BA /* MacVim-jsp.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-jsp.icns"; path = "macvim-file-icons/MacVim-jsp.icns"; sourceTree = ""; }; 4B9433CD20B95EC5005807BA /* MacVim-php.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-php.icns"; path = "macvim-file-icons/MacVim-php.icns"; sourceTree = ""; }; 4B9433CE20B95EC5005807BA /* MacVim-xml.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-xml.icns"; path = "macvim-file-icons/MacVim-xml.icns"; sourceTree = ""; }; 4B9433CF20B95EC5005807BA /* MacVim-bib.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-bib.icns"; path = "macvim-file-icons/MacVim-bib.icns"; sourceTree = ""; }; 4B9433D020B95EC5005807BA /* MacVim-cfg.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-cfg.icns"; path = "macvim-file-icons/MacVim-cfg.icns"; sourceTree = ""; }; 4B9433D120B95EC5005807BA /* MacVim-erl.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-erl.icns"; path = "macvim-file-icons/MacVim-erl.icns"; sourceTree = ""; }; 4B9433D220B95EC5005807BA /* MacVim-dtd.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-dtd.icns"; path = "macvim-file-icons/MacVim-dtd.icns"; sourceTree = ""; }; 4B9433D320B95EC6005807BA /* MacVim-wiki.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-wiki.icns"; path = "macvim-file-icons/MacVim-wiki.icns"; sourceTree = ""; }; 4B9433D420B95EC6005807BA /* MacVim-java.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-java.icns"; path = "macvim-file-icons/MacVim-java.icns"; sourceTree = ""; }; 4B9433D520B95EC6005807BA /* MacVim-perl.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-perl.icns"; path = "macvim-file-icons/MacVim-perl.icns"; sourceTree = ""; }; 4B9433D620B95EC6005807BA /* MacVim-ics.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-ics.icns"; path = "macvim-file-icons/MacVim-ics.icns"; sourceTree = ""; }; 4B9433D720B95EC6005807BA /* MacVim-rst.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-rst.icns"; path = "macvim-file-icons/MacVim-rst.icns"; sourceTree = ""; }; 4B9433D820B95EC6005807BA /* MacVim-xsl.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-xsl.icns"; path = "macvim-file-icons/MacVim-xsl.icns"; sourceTree = ""; }; 4B9433D920B95EC6005807BA /* MacVim-sch.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-sch.icns"; path = "macvim-file-icons/MacVim-sch.icns"; sourceTree = ""; }; 4B9433DA20B95EC6005807BA /* MacVim-ps.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-ps.icns"; path = "macvim-file-icons/MacVim-ps.icns"; sourceTree = ""; }; 4B9433DB20B95EC6005807BA /* MacVim-css.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = "MacVim-css.icns"; path = "macvim-file-icons/MacVim-css.icns"; sourceTree = ""; }; 4B97E2CD1D33F53D00FC0660 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainWindow.xib; sourceTree = ""; }; 4BB409E61DD68CCC005F39A2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/FileBrowserMenu.xib; sourceTree = ""; }; 4BDF50181D77540900D8FBC3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/OpenQuicklyWindow.xib; sourceTree = ""; }; 4BE73FA5285CA9D100B63585 /* Resources */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Resources; sourceTree = ""; }; 4BEBA5051CFF374B00673FDF /* VimR-dev.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "VimR-dev.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 4BEBA5081CFF374B00673FDF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 4BEBA50A1CFF374B00673FDF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 4BEBA50D1CFF374B00673FDF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 4BEBA50F1CFF374B00673FDF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4BEBA5141CFF374B00673FDF /* VimRTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VimRTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 4BEBA51A1CFF374B00673FDF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4BF07EE51D51326A009BECEB /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Base; path = Base.lproj/Credits.rtf; sourceTree = ""; }; 4BF70ED423D1B54F009E51E9 /* ScoredUrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScoredUrl.h; sourceTree = ""; }; 4BF70ED523D1B54F009E51E9 /* ScoredUrl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ScoredUrl.m; sourceTree = ""; }; 4BF70EE323D1B5EC009E51E9 /* FuzzySearchService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FuzzySearchService.swift; sourceTree = ""; }; 4BF70EE923D1B5FF009E51E9 /* CoreDataStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreDataStack.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 4BEBA5021CFF374B00673FDF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4BA19812285B4BA600B49309 /* Misc in Frameworks */, 4B0B362A2595236000B06899 /* ShortcutRecorder in Frameworks */, 4B9D049D273481AD007E8614 /* Down in Frameworks */, 4BADD55E283ABD0200C6B16D /* OrderedCollections in Frameworks */, 4B0B36212595236000B06899 /* PureLayout in Frameworks */, 4B0B362E2595236000B06899 /* Workspace in Frameworks */, 4B0B362C2595236000B06899 /* Commons in Frameworks */, 4B0B36202595236000B06899 /* Swifter in Frameworks */, 4B0B362F2595236000B06899 /* Sparkle in Frameworks */, 4BADD55B283A847100C6B16D /* Ignore in Frameworks */, 4B0B36232595236000B06899 /* DictionaryCoding in Frameworks */, 4B0B362D2595236000B06899 /* MaterialIcons in Frameworks */, 4B0B36292595236000B06899 /* NvimView in Frameworks */, 4BBE7F512D21C12B006090D9 /* EonilFSEvents in Frameworks */, 4B0B36252595236000B06899 /* MessagePack in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BEBA5111CFF374B00673FDF /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 4BE73FA4285C9C7700B63585 /* Commons in Frameworks */, 4BE73F9B285C9AC100B63585 /* Ignore in Frameworks */, 4BE73F9D285C9AD600B63585 /* OrderedCollections in Frameworks */, 4B0B36302595236000B06899 /* Nimble in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 1929B1645977E0AEFE53193D /* File Browser */ = { isa = PBXGroup; children = ( 1929BCE3E156C06EDF1F2806 /* FileOutlineView.swift */, 1929BA5C7099CDEB04B76BA4 /* FileBrowser.swift */, 1929BD2CA8DD198A6BCDBCB7 /* ThemedTableSubviews.swift */, ); name = "File Browser"; sourceTree = ""; }; 1929B2C6D0242153758A138A /* Shortcuts */ = { isa = PBXGroup; children = ( 1929B0E9B2F018D3E31D4B0B /* ShortcutsPref.swift */, 1929B07F0085B7AE10413346 /* ShortcutsTableSubviews.swift */, 1929B93256AF7F9137223E36 /* DefaultShortcuts.swift */, 1929BF230875DED6CD7AB3EB /* ShortcutItem.swift */, ); name = Shortcuts; sourceTree = ""; }; 1929B32401E8914DE9BF76CA /* Components */ = { isa = PBXGroup; children = ( 1929BD4149D5A25C82064DD8 /* UiRoot.swift */, 1929B6C6C7792B05164B0216 /* MarkdownTool.swift */, 1929BA43449BA41666CD55ED /* BufferList.swift */, 1929BC56ADBA3275E7A0A598 /* Preferences */, 1929B1645977E0AEFE53193D /* File Browser */, 1929BD9EEC30C0A498877E5B /* Open Quickly */, 1929B85023B042C485409CE1 /* HtmlPreviewTool.swift */, 1929BC2F05E9A5C0DB039739 /* Theme.swift */, 1929BBEE2FFA397A0691CC25 /* MainWindow */, ); name = Components; sourceTree = ""; }; 1929B5E773BDB3B4EE9D00C1 /* Reducers */ = { isa = PBXGroup; children = ( 4B7021CD2D7EE5AD001D82AF /* RpcAppearanceReducer.swift */, 1929B7A68B7109CEFAF105E8 /* AppDelegateReducer.swift */, 1929B457B9D0FA4D21F3751E /* UiRootReducer.swift */, 1929BD83A13BF133741766CC /* MainWindowReducer.swift */, 1929BE37AA2843779CAFA76F /* MarkdownPreviewReducer.swift */, 1929BFB0F294F3714D5E095F /* MarkdownToolReducer.swift */, 1929B12CE56A9B36980288A4 /* OpenQuicklyReducer.swift */, 1929BDC8F5D48578A90236E9 /* FileBrowserReducer.swift */, 1929B67A10E6BB2986B2416E /* BufferListReducer.swift */, 1929BB4CF1C1FFEE6CCDD6FD /* Preferences */, 1929BE5AEA3D0980860EED50 /* HtmlPreviewToolReducer.swift */, ); name = Reducers; sourceTree = ""; }; 1929BA652D3B88FC071531EC /* UI */ = { isa = PBXGroup; children = ( 1929BB6608B4F0E037CA0F4C /* States.swift */, 1929B34FC23D805A8B29E8F7 /* Context.swift */, 1929B32401E8914DE9BF76CA /* Components */, 1929B5E773BDB3B4EE9D00C1 /* Reducers */, 1929BFA93DC859DD76C46192 /* Middlewares */, 1929BFC0A5A9C6DB09BE1368 /* Types.swift */, 1929BD2195B8D7B87B2069C4 /* ShortcutService.swift */, ); name = UI; sourceTree = ""; }; 1929BB4CF1C1FFEE6CCDD6FD /* Preferences */ = { isa = PBXGroup; children = ( 1929B49E6924847AD085C8C9 /* PrefWindowReducer.swift */, 1929B0EB3F49C42A57D083AF /* GeneralPrefReducer.swift */, 1929BED01F5D94BFCA4CF80F /* AppearancePrefReducer.swift */, 1929B7039C5689CE45F53888 /* AdvancedPrefReducer.swift */, 1929B694508FB5FDE607513A /* ToolsPrefReducer.swift */, 1929B88B5FA08E897A3C2168 /* KeysPrefReducer.swift */, ); name = Preferences; sourceTree = ""; }; 1929BBEE2FFA397A0691CC25 /* MainWindow */ = { isa = PBXGroup; children = ( 1929B71B4BB6550F5BC6D4CF /* MainWindow+CustomTitle.swift */, 1929B6E01216D49BB9F3B6A3 /* MainWindow.swift */, 1929B067B3247675BCD09218 /* MainWindow+Actions.swift */, 1929B714EB137AE448CE8ABD /* MainWindow+Delegates.swift */, 1929B41F704A4D67621197ED /* MainWindow+Types.swift */, ); name = MainWindow; sourceTree = ""; }; 1929BC56ADBA3275E7A0A598 /* Preferences */ = { isa = PBXGroup; children = ( 1929BE168F31344B69E61B62 /* PrefWindow.swift */, 1929B07A4A9209C88380E015 /* PrefPane.swift */, 1929BB55946DAEBF55D24048 /* GeneralPref.swift */, 1929B0FBFB766042CF06E463 /* AppearancePref.swift */, 1929BBE0A534F2F6009D31BE /* AdvencedPref.swift */, 1929BB2AD21A10A0ECA66A5E /* ToolsPref.swift */, 1929B14A5949FB64C4B2646F /* KeysPref.swift */, 1929B2C6D0242153758A138A /* Shortcuts */, ); name = Preferences; sourceTree = ""; }; 1929BD9EEC30C0A498877E5B /* Open Quickly */ = { isa = PBXGroup; children = ( 1929B71A92C24FEFE79A851E /* OpenQuicklyWindow.swift */, 1929B1558455B3A74D93EF2A /* OpenQuicklyFileViewRow.swift */, 1929BDC3F82CB4CB4FE56D1B /* ImageAndTextTableCell.swift */, ); name = "Open Quickly"; sourceTree = ""; }; 1929BFA93DC859DD76C46192 /* Middlewares */ = { isa = PBXGroup; children = ( 1929B617C229B19DB3E987B8 /* MarkdownPreviewMiddleware.swift */, 1929B1DC584C89C477E83FA2 /* HttpServerMiddleware.swift */, 1929B364460D86F17E80943C /* PrefMiddleware.swift */, 1929B18E9BE35750BF2BA571 /* HtmlPreviewMiddleware.swift */, ); name = Middlewares; sourceTree = ""; }; 4B8C64D023F024D9008733D8 /* Build configurations */ = { isa = PBXGroup; children = ( 4B8C64CE23F022C2008733D8 /* Release.xcconfig */, 4B8C64CD23F02259008733D8 /* Dev.xcconfig */, ); name = "Build configurations"; sourceTree = ""; }; 4B9433A020B95EA7005807BA /* MacVim file icons */ = { isa = PBXGroup; children = ( 4B9433AA20B95EC2005807BA /* MacVim-applescript.icns */, 4B9433BB20B95EC3005807BA /* MacVim-as.icns */, 4B9433BA20B95EC3005807BA /* MacVim-asp.icns */, 4B9433AE20B95EC2005807BA /* MacVim-bash.icns */, 4B9433CF20B95EC5005807BA /* MacVim-bib.icns */, 4B9433A120B95EC1005807BA /* MacVim-bsh.icns */, 4B9433CA20B95EC5005807BA /* MacVim-c.icns */, 4B9433D020B95EC5005807BA /* MacVim-cfg.icns */, 4B9433AC20B95EC2005807BA /* MacVim-cgi.icns */, 4B9433B020B95EC2005807BA /* MacVim-cpp.icns */, 4B9433B820B95EC3005807BA /* MacVim-cs.icns */, 4B9433A620B95EC1005807BA /* MacVim-csfg.icns */, 4B9433DB20B95EC6005807BA /* MacVim-css.icns */, 4B9433AD20B95EC2005807BA /* MacVim-csv.icns */, 4B9433D220B95EC5005807BA /* MacVim-dtd.icns */, 4B9433A320B95EC1005807BA /* MacVim-dylan.icns */, 4B9433D120B95EC5005807BA /* MacVim-erl.icns */, 4B9433B220B95EC2005807BA /* MacVim-f.icns */, 4B9433C520B95EC4005807BA /* MacVim-fscript.icns */, 4B9433A220B95EC1005807BA /* MacVim-generic.icns */, 4B9433BE20B95EC3005807BA /* MacVim-gtd.icns */, 4B9433C820B95EC4005807BA /* MacVim-h.icns */, 4B9433B720B95EC3005807BA /* MacVim-hs.icns */, 4B9433B620B95EC3005807BA /* MacVim-html.icns */, 4B9433D620B95EC6005807BA /* MacVim-ics.icns */, 4B9433C920B95EC5005807BA /* MacVim-inc.icns */, 4B9433CB20B95EC5005807BA /* MacVim-ini.icns */, 4B9433C720B95EC4005807BA /* MacVim-io.icns */, 4B9433D420B95EC6005807BA /* MacVim-java.icns */, 4B9433B120B95EC2005807BA /* MacVim-js.icns */, 4B9433CC20B95EC5005807BA /* MacVim-jsp.icns */, 4B9433A420B95EC1005807BA /* MacVim-lisp.icns */, 4B9433AB20B95EC2005807BA /* MacVim-log.icns */, 4B9433C620B95EC4005807BA /* MacVim-m.icns */, 4B9433C020B95EC4005807BA /* MacVim-markdown.icns */, 4B9433BC20B95EC3005807BA /* MacVim-mm.icns */, 4B9433C220B95EC4005807BA /* MacVim-patch.icns */, 4B9433D520B95EC6005807BA /* MacVim-perl.icns */, 4B9433CD20B95EC5005807BA /* MacVim-php.icns */, 4B9433A520B95EC1005807BA /* MacVim-plist.icns */, 4B9433BD20B95EC3005807BA /* MacVim-properties.icns */, 4B9433DA20B95EC6005807BA /* MacVim-ps.icns */, 4B9433B520B95EC3005807BA /* MacVim-py.icns */, 4B9433C420B95EC4005807BA /* MacVim-rb.icns */, 4B9433D720B95EC6005807BA /* MacVim-rst.icns */, 4B9433D920B95EC6005807BA /* MacVim-sch.icns */, 4B9433A920B95EC2005807BA /* MacVim-sql.icns */, 4B9433BF20B95EC4005807BA /* MacVim-tcl.icns */, 4B9433A820B95EC1005807BA /* MacVim-tex.icns */, 4B9433B420B95EC2005807BA /* MacVim-tsv.icns */, 4B9433C320B95EC4005807BA /* MacVim-txt.icns */, 4B9433B920B95EC3005807BA /* MacVim-vb.icns */, 4B9433C120B95EC4005807BA /* MacVim-vba.icns */, 4B9433AF20B95EC2005807BA /* MacVim-vcf.icns */, 4B9433B320B95EC2005807BA /* MacVim-vim.icns */, 4B9433D320B95EC6005807BA /* MacVim-wiki.icns */, 4B9433CE20B95EC5005807BA /* MacVim-xml.icns */, 4B9433D820B95EC6005807BA /* MacVim-xsl.icns */, 4B9433A720B95EC1005807BA /* MacVim-yaml.icns */, ); name = "MacVim file icons"; sourceTree = ""; }; 4B97E2CF1D33F92200FC0660 /* resources */ = { isa = PBXGroup; children = ( 4B9433A020B95EA7005807BA /* MacVim file icons */, 4B19BEFA1E110183007E823C /* markdown */, 4B19BEFB1E110183007E823C /* preview */, 4BEBA50C1CFF374B00673FDF /* MainMenu.xib */, 4B97E2CE1D33F53D00FC0660 /* MainWindow.xib */, 4B029F1C1D45E349004EE0D3 /* PrefWindow.xib */, 4BDF50191D77540900D8FBC3 /* OpenQuicklyWindow.xib */, 4BB409E71DD68CCC005F39A2 /* FileBrowserMenu.xib */, 4BEBA50A1CFF374B00673FDF /* Assets.xcassets */, 4BF07EE61D51326A009BECEB /* Credits.rtf */, 4BEBA50F1CFF374B00673FDF /* Info.plist */, 4B37ADB81D6E471B00970D55 /* vimr */, 1929BC6D45B7E14D4D75D4E6 /* com.qvacua.VimR.vim */, ); name = resources; sourceTree = ""; }; 4BADD559283A847100C6B16D /* Frameworks */ = { isa = PBXGroup; children = ( ); name = Frameworks; sourceTree = ""; }; 4BDF50101D760AB700D8FBC3 /* Commons */ = { isa = PBXGroup; children = ( 4B6A70931D60E04200E12030 /* AppKitCommons.swift */, 1929B9AF20D7BD6E5C975128 /* FoundationCommons.swift */, ); name = Commons; sourceTree = ""; }; 4BEBA4FC1CFF374B00673FDF = { isa = PBXGroup; children = ( 4B8C64D023F024D9008733D8 /* Build configurations */, 4BEBA5071CFF374B00673FDF /* VimR */, 4BEBA5171CFF374B00673FDF /* VimRTests */, 4BEBA5061CFF374B00673FDF /* Products */, 4BADD559283A847100C6B16D /* Frameworks */, ); indentWidth = 2; sourceTree = ""; tabWidth = 2; }; 4BEBA5061CFF374B00673FDF /* Products */ = { isa = PBXGroup; children = ( 4BEBA5051CFF374B00673FDF /* VimR-dev.app */, 4BEBA5141CFF374B00673FDF /* VimRTests.xctest */, ); name = Products; sourceTree = ""; }; 4BEBA5071CFF374B00673FDF /* VimR */ = { isa = PBXGroup; children = ( 4BF70ECB23D1B40A009E51E9 /* Fuzzy Search */, 4B2A2C0D1D0353750074CE9A /* Bridge.h */, 4B238BE01D3BF24200CBDD98 /* Application.swift */, 4BEBA5081CFF374B00673FDF /* AppDelegate.swift */, 4BF8EED91D858C4400CAC08A /* Utils */, 4BDF50101D760AB700D8FBC3 /* Commons */, 4B97E2CF1D33F92200FC0660 /* resources */, 1929BA652D3B88FC071531EC /* UI */, 1929B66A5E2D00EA143AFD86 /* Redux.swift */, 1929BBF0944940845485A512 /* RpcEvents.swift */, 1929B7F7A4B3FD52263D211D /* Defs.swift */, ); path = VimR; sourceTree = ""; }; 4BEBA5171CFF374B00673FDF /* VimRTests */ = { isa = PBXGroup; children = ( 4BE73FA5285CA9D100B63585 /* Resources */, 4BEBA51A1CFF374B00673FDF /* Info.plist */, 1929B07A72CA7CCA31337713 /* IgnoreServiceTest.swift */, ); path = VimRTests; sourceTree = ""; }; 4BF70ECB23D1B40A009E51E9 /* Fuzzy Search */ = { isa = PBXGroup; children = ( 1929B656C04BA6F950BFA2F5 /* FuzzySearch.xcdatamodel */, 4BF70EE923D1B5FF009E51E9 /* CoreDataStack.swift */, 4BF70EE323D1B5EC009E51E9 /* FuzzySearchService.swift */, 4BF70ED423D1B54F009E51E9 /* ScoredUrl.h */, 4BF70ED523D1B54F009E51E9 /* ScoredUrl.m */, 1929B71F6A82A34F16BB52BE /* IgnoreService.swift */, ); name = "Fuzzy Search"; sourceTree = ""; }; 4BF8EED91D858C4400CAC08A /* Utils */ = { isa = PBXGroup; children = ( 1929B6AD3396160AA2C46919 /* Throttler.swift */, 1929B8241CDE58F7AAF89AE4 /* PrefUtils.swift */, 1929B333D8752E2E68F35122 /* FileMonitor.swift */, 1929BC40B7B7708D8BE3A272 /* Resources.swift */, 1929BA05F1FE30CA74F006C4 /* CssUtils.swift */, ); name = Utils; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 4BEBA5041CFF374B00673FDF /* VimR */ = { isa = PBXNativeTarget; buildConfigurationList = 4BEBA51D1CFF374B00673FDF /* Build configuration list for PBXNativeTarget "VimR" */; buildPhases = ( 4B19BEFF1E110208007E823C /* ShellScript */, 4BEBA5011CFF374B00673FDF /* Sources */, 4BEBA5021CFF374B00673FDF /* Frameworks */, 4BEBA5031CFF374B00673FDF /* Resources */, ); buildRules = ( ); dependencies = ( 4B582FBB2EA525600016D7AF /* PBXTargetDependency */, ); name = VimR; packageProductDependencies = ( 4BD5655224E8014100D52809 /* Swifter */, 4BD5655824E8040E00D52809 /* PureLayout */, 4BD5657724E8443300D52809 /* DictionaryCoding */, 4B9BC41D24EB2E22000209B5 /* MessagePack */, 4B9BC42624EB2E51000209B5 /* NvimView */, 4B9BC42924EB2E6D000209B5 /* ShortcutRecorder */, 4BD67C7A24EC765900147C51 /* Commons */, 4B69B31A24EDBAF000B1E5EB /* MaterialIcons */, 4B69B31C24EDC9F100B1E5EB /* Workspace */, 4BA284B1256471ED00CFDF7F /* Sparkle */, 4B9D049C273481AD007E8614 /* Down */, 4BADD55A283A847100C6B16D /* Ignore */, 4BADD55D283ABD0200C6B16D /* OrderedCollections */, 4BA19811285B4BA600B49309 /* Misc */, 4BBE7F502D21C12B006090D9 /* EonilFSEvents */, ); productName = VimR; productReference = 4BEBA5051CFF374B00673FDF /* VimR-dev.app */; productType = "com.apple.product-type.application"; }; 4BEBA5131CFF374B00673FDF /* VimRTests */ = { isa = PBXNativeTarget; buildConfigurationList = 4BEBA5201CFF374B00673FDF /* Build configuration list for PBXNativeTarget "VimRTests" */; buildPhases = ( 4BEBA5101CFF374B00673FDF /* Sources */, 4BEBA5111CFF374B00673FDF /* Frameworks */, 4BEBA5121CFF374B00673FDF /* Resources */, 4B6A709B1D65079600E12030 /* CopyFiles */, ); buildRules = ( ); dependencies = ( 4BE73F9F285C9C4500B63585 /* PBXTargetDependency */, ); name = VimRTests; packageProductDependencies = ( 4BD67CDB24EE45E900147C51 /* Nimble */, 4BE73F9A285C9AC100B63585 /* Ignore */, 4BE73F9C285C9AD600B63585 /* OrderedCollections */, 4BE73FA3285C9C7700B63585 /* Commons */, ); productName = VimRTests; productReference = 4BEBA5141CFF374B00673FDF /* VimRTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 4BEBA4FD1CFF374B00673FDF /* Project object */ = { isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 0830; LastUpgradeCheck = 2600; ORGANIZATIONNAME = "Tae Won Ha"; TargetAttributes = { 4BEBA5041CFF374B00673FDF = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 0900; ProvisioningStyle = Manual; }; 4BEBA5131CFF374B00673FDF = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 0900; ProvisioningStyle = Manual; }; }; }; buildConfigurationList = 4BEBA5001CFF374B00673FDF /* Build configuration list for PBXProject "VimR" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, Base, ); mainGroup = 4BEBA4FC1CFF374B00673FDF; packageReferences = ( 4BD5655124E8014100D52809 /* XCRemoteSwiftPackageReference "swifter" */, 4BD5655724E8040E00D52809 /* XCRemoteSwiftPackageReference "PureLayout" */, 4BD5657624E8443300D52809 /* XCRemoteSwiftPackageReference "DictionaryCoding" */, 4B9BC41C24EB2E22000209B5 /* XCRemoteSwiftPackageReference "MessagePack" */, 4B9BC42824EB2E6D000209B5 /* XCRemoteSwiftPackageReference "ShortcutRecorder" */, 4B69B31924EDBAF000B1E5EB /* XCRemoteSwiftPackageReference "material-icons" */, 4BD67CD824EE45CA00147C51 /* XCRemoteSwiftPackageReference "Nimble" */, 4BA284B0256471ED00CFDF7F /* XCRemoteSwiftPackageReference "Sparkle" */, 4B9D049B273481AD007E8614 /* XCRemoteSwiftPackageReference "Down" */, 4BADD55C283ABD0200C6B16D /* XCRemoteSwiftPackageReference "swift-collections" */, 4BA19810285B4BA600B49309 /* XCRemoteSwiftPackageReference "misc" */, 4BBE7F4F2D21C12B006090D9 /* XCRemoteSwiftPackageReference "FSEvents" */, 4B582FB92EA525580016D7AF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */, ); productRefGroup = 4BEBA5061CFF374B00673FDF /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 4BEBA5041CFF374B00673FDF /* VimR */, 4BEBA5131CFF374B00673FDF /* VimRTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 4BEBA5031CFF374B00673FDF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BF07EE41D51326A009BECEB /* Credits.rtf in Resources */, 4B94340920B95EC7005807BA /* MacVim-xml.icns in Resources */, 4B9433E520B95EC6005807BA /* MacVim-applescript.icns in Resources */, 4B94340E20B95EC7005807BA /* MacVim-wiki.icns in Resources */, 4B94340F20B95EC7005807BA /* MacVim-java.icns in Resources */, 4B94341220B95EC7005807BA /* MacVim-rst.icns in Resources */, 4B94340B20B95EC7005807BA /* MacVim-cfg.icns in Resources */, 4B94340420B95EC7005807BA /* MacVim-inc.icns in Resources */, 4B9433DC20B95EC6005807BA /* MacVim-bsh.icns in Resources */, 4B94341020B95EC7005807BA /* MacVim-perl.icns in Resources */, 4B9433EA20B95EC7005807BA /* MacVim-vcf.icns in Resources */, 4B9433FB20B95EC7005807BA /* MacVim-markdown.icns in Resources */, 4B9433FC20B95EC7005807BA /* MacVim-vba.icns in Resources */, 4B9433F320B95EC7005807BA /* MacVim-cs.icns in Resources */, 4B9433F920B95EC7005807BA /* MacVim-gtd.icns in Resources */, 4B9433EC20B95EC7005807BA /* MacVim-js.icns in Resources */, 4B9433E320B95EC6005807BA /* MacVim-tex.icns in Resources */, 4B94341620B95EC7005807BA /* MacVim-css.icns in Resources */, 4B9433EF20B95EC7005807BA /* MacVim-tsv.icns in Resources */, 4B9433F520B95EC7005807BA /* MacVim-asp.icns in Resources */, 4B9433E020B95EC6005807BA /* MacVim-plist.icns in Resources */, 4BEBA50B1CFF374B00673FDF /* Assets.xcassets in Resources */, 4B9433FF20B95EC7005807BA /* MacVim-rb.icns in Resources */, 4B94340620B95EC7005807BA /* MacVim-ini.icns in Resources */, 4B9433E220B95EC6005807BA /* MacVim-yaml.icns in Resources */, 4B9433F420B95EC7005807BA /* MacVim-vb.icns in Resources */, 4B94340720B95EC7005807BA /* MacVim-jsp.icns in Resources */, 4B9433F120B95EC7005807BA /* MacVim-html.icns in Resources */, 4B9433FA20B95EC7005807BA /* MacVim-tcl.icns in Resources */, 4B94340220B95EC7005807BA /* MacVim-io.icns in Resources */, 4BDF50171D77540900D8FBC3 /* OpenQuicklyWindow.xib in Resources */, 4B9433E820B95EC7005807BA /* MacVim-csv.icns in Resources */, 4B9433F720B95EC7005807BA /* MacVim-mm.icns in Resources */, 4B94340A20B95EC7005807BA /* MacVim-bib.icns in Resources */, 4B9433EB20B95EC7005807BA /* MacVim-cpp.icns in Resources */, 4B94341520B95EC7005807BA /* MacVim-ps.icns in Resources */, 4B94341420B95EC7005807BA /* MacVim-sch.icns in Resources */, 4B9433DE20B95EC6005807BA /* MacVim-dylan.icns in Resources */, 4B9433E420B95EC6005807BA /* MacVim-sql.icns in Resources */, 4B94340120B95EC7005807BA /* MacVim-m.icns in Resources */, 4B9433F220B95EC7005807BA /* MacVim-hs.icns in Resources */, 4B37ADB91D6E471B00970D55 /* vimr in Resources */, 4B94340520B95EC7005807BA /* MacVim-c.icns in Resources */, 4B9433E720B95EC6005807BA /* MacVim-cgi.icns in Resources */, 4B9433DD20B95EC6005807BA /* MacVim-generic.icns in Resources */, 4B9433F820B95EC7005807BA /* MacVim-properties.icns in Resources */, 4B94341120B95EC7005807BA /* MacVim-ics.icns in Resources */, 4B94340820B95EC7005807BA /* MacVim-php.icns in Resources */, 4B94340320B95EC7005807BA /* MacVim-h.icns in Resources */, 4B9433F620B95EC7005807BA /* MacVim-as.icns in Resources */, 4BB409E51DD68CCC005F39A2 /* FileBrowserMenu.xib in Resources */, 4BEBA50E1CFF374B00673FDF /* MainMenu.xib in Resources */, 4B9433FE20B95EC7005807BA /* MacVim-txt.icns in Resources */, 4B9433E120B95EC6005807BA /* MacVim-csfg.icns in Resources */, 4B94340020B95EC7005807BA /* MacVim-fscript.icns in Resources */, 4B94340C20B95EC7005807BA /* MacVim-erl.icns in Resources */, 4B97E2CC1D33F53D00FC0660 /* MainWindow.xib in Resources */, 4B19BEFC1E110183007E823C /* markdown in Resources */, 4B9433FD20B95EC7005807BA /* MacVim-patch.icns in Resources */, 4B94341320B95EC7005807BA /* MacVim-xsl.icns in Resources */, 4B9433ED20B95EC7005807BA /* MacVim-f.icns in Resources */, 4B9433E920B95EC7005807BA /* MacVim-bash.icns in Resources */, 4B029F1A1D45E349004EE0D3 /* PrefWindow.xib in Resources */, 4B19BEFD1E110183007E823C /* preview in Resources */, 4B9433EE20B95EC7005807BA /* MacVim-vim.icns in Resources */, 4B9433F020B95EC7005807BA /* MacVim-py.icns in Resources */, 4B9433E620B95EC6005807BA /* MacVim-log.icns in Resources */, 4B94340D20B95EC7005807BA /* MacVim-dtd.icns in Resources */, 4B9433DF20B95EC6005807BA /* MacVim-lisp.icns in Resources */, 1929B560C6CE264FD1E1F5A3 /* com.qvacua.VimR.vim in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BEBA5121CFF374B00673FDF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BE73FA6285CA9D100B63585 /* Resources in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ 4B19BEFF1E110208007E823C /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "${SRCROOT}/../bin/setup_markdown_css.sh\n"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 4BEBA5011CFF374B00673FDF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BA19817285B599400B49309 /* FuzzySearch.xcdatamodel in Sources */, 4B238BE11D3BF24200CBDD98 /* Application.swift in Sources */, 4B6A70941D60E04200E12030 /* AppKitCommons.swift in Sources */, 4BEBA5091CFF374B00673FDF /* AppDelegate.swift in Sources */, 1929B0E0C3BC59F52713D5A2 /* FoundationCommons.swift in Sources */, 1929BE0DAEE9664C5BCFA211 /* States.swift in Sources */, 1929B4FEE6EB56EF3F56B805 /* Context.swift in Sources */, 1929BD3878A3A47B8D685CD2 /* AppDelegateReducer.swift in Sources */, 1929BAFF1E011321D3186EE6 /* UiRoot.swift in Sources */, 1929B29B95AD176D57942E08 /* UiRootReducer.swift in Sources */, 1929BB4A9B2FA42A64CCCC76 /* MainWindowReducer.swift in Sources */, 4BF70ED623D1B54F009E51E9 /* ScoredUrl.m in Sources */, 1929B8FB248D71BF88A35761 /* MarkdownTool.swift in Sources */, 1929B4B70926DE113E6BF990 /* MarkdownPreviewReducer.swift in Sources */, 1929B5C1BABBC0D09D97C3EF /* MarkdownPreviewMiddleware.swift in Sources */, 1929B0F599D1F62C7BE53D2C /* HttpServerMiddleware.swift in Sources */, 1929B3AC66EFE35D68C020E3 /* MarkdownToolReducer.swift in Sources */, 1929B59FA5C286E010F70BEE /* Types.swift in Sources */, 1929B6D8F5FC723B7109031F /* OpenQuicklyReducer.swift in Sources */, 1929B71381946860626E5224 /* FileBrowserReducer.swift in Sources */, 1929BA715337FE26155B2071 /* BufferList.swift in Sources */, 1929B4E54E2F13A7F5F2B682 /* BufferListReducer.swift in Sources */, 4B7021CE2D7EE5B6001D82AF /* RpcAppearanceReducer.swift in Sources */, 1929BAE4900D72A7877741B1 /* PrefWindow.swift in Sources */, 1929BEAE0592096BC1191B67 /* PrefPane.swift in Sources */, 1929BEDE1BE950EDA9497363 /* GeneralPref.swift in Sources */, 1929B3217A7A3D79E28C80DB /* PrefWindowReducer.swift in Sources */, 1929B6BE1610892E6C4C0CE6 /* GeneralPrefReducer.swift in Sources */, 1929B05B9D664052EC2D23EF /* FileOutlineView.swift in Sources */, 1929BCC9D3604933DFF07E2E /* FileBrowser.swift in Sources */, 1929B4F0612224E594E89B92 /* AppearancePref.swift in Sources */, 1929B50D933A369A86A165DE /* AdvencedPref.swift in Sources */, 1929BCC7908DD899999B70BE /* AppearancePrefReducer.swift in Sources */, 1929B3557317755A43513B17 /* OpenQuicklyWindow.swift in Sources */, 1929B1837C750CADB3A5BCB9 /* OpenQuicklyFileViewRow.swift in Sources */, 4BF70EEA23D1B5FF009E51E9 /* CoreDataStack.swift in Sources */, 1929B990A143763A56CFCED0 /* PrefMiddleware.swift in Sources */, 1929BA76A1D97D8226F7CFB1 /* Throttler.swift in Sources */, 1929BFDE22D155F7C4B19E96 /* HtmlPreviewTool.swift in Sources */, 1929B4B00D7BB191A9A6532D /* HtmlPreviewToolReducer.swift in Sources */, 1929BCF7F7B9CC5499A3F506 /* AdvancedPrefReducer.swift in Sources */, 1929BF03FD6465F289AA80B2 /* ToolsPref.swift in Sources */, 1929B6C0393DE40E34F4A49A /* ToolsPrefReducer.swift in Sources */, 1929B542A071BD03C846F6EF /* PrefUtils.swift in Sources */, 1929BE2F3E0182CC51F2763A /* ThemedTableSubviews.swift in Sources */, 1929B6460862447A31B5B082 /* ImageAndTextTableCell.swift in Sources */, 1929BBE28654E4307AF1E2FD /* Theme.swift in Sources */, 1929B3A6C332FFAAEC7FD219 /* MainWindow+CustomTitle.swift in Sources */, 1929B8DDACEB28E6672AEC42 /* MainWindow.swift in Sources */, 1929B5257DB27F03C6663482 /* MainWindow+Actions.swift in Sources */, 1929BE0F64A6CE5BCE2A5092 /* MainWindow+Delegates.swift in Sources */, 1929B8F498D1E7C53F572CE2 /* KeysPref.swift in Sources */, 1929B5A2EE366F79ED32744C /* KeysPrefReducer.swift in Sources */, 1929BB67CAAD4F6CBD38DF0A /* Redux.swift in Sources */, 1929BB85B2D30E548A32663D /* ShortcutsPref.swift in Sources */, 1929BA269EBD68251410A08E /* ShortcutsTableSubviews.swift in Sources */, 1929B2D56C4652E251C23AD4 /* DefaultShortcuts.swift in Sources */, 4BF70EE523D1B5EC009E51E9 /* FuzzySearchService.swift in Sources */, 1929B0C7150100A84FBDB8BF /* ShortcutItem.swift in Sources */, 1929B250DB3FB395A700FE8C /* RpcEvents.swift in Sources */, 1929B5A0EDD1119CFF7BB84C /* Defs.swift in Sources */, 1929B376DB09AB5FDBF42BA1 /* MainWindow+Types.swift in Sources */, 1929B4219A68586E2CED6E96 /* FileMonitor.swift in Sources */, 1929B223C6E97C090474B2C2 /* Resources.swift in Sources */, 1929BC64D3C195A92BE3FD64 /* HtmlPreviewMiddleware.swift in Sources */, 1929B29FF537A339CF4075BD /* CssUtils.swift in Sources */, 1929B28EF1D4135A94C07558 /* ShortcutService.swift in Sources */, 1929B7D1665BBB75DC89E391 /* IgnoreService.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; 4BEBA5101CFF374B00673FDF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 4BE73FA2285C9C6C00B63585 /* FoundationCommons.swift in Sources */, 4BE73F99285C9A9A00B63585 /* IgnoreService.swift in Sources */, 1929BE511088E082529199CB /* IgnoreServiceTest.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ 4B582FBB2EA525600016D7AF /* PBXTargetDependency */ = { isa = PBXTargetDependency; productRef = 4B582FBA2EA525600016D7AF /* SwiftLintBuildToolPlugin */; }; 4BE73F9F285C9C4500B63585 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 4BEBA5041CFF374B00673FDF /* VimR */; targetProxy = 4BE73F9E285C9C4500B63585 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ 4B029F1C1D45E349004EE0D3 /* PrefWindow.xib */ = { isa = PBXVariantGroup; children = ( 4B029F1B1D45E349004EE0D3 /* Base */, ); name = PrefWindow.xib; sourceTree = ""; }; 4B97E2CE1D33F53D00FC0660 /* MainWindow.xib */ = { isa = PBXVariantGroup; children = ( 4B97E2CD1D33F53D00FC0660 /* Base */, ); name = MainWindow.xib; sourceTree = ""; }; 4BB409E71DD68CCC005F39A2 /* FileBrowserMenu.xib */ = { isa = PBXVariantGroup; children = ( 4BB409E61DD68CCC005F39A2 /* Base */, ); name = FileBrowserMenu.xib; sourceTree = ""; }; 4BDF50191D77540900D8FBC3 /* OpenQuicklyWindow.xib */ = { isa = PBXVariantGroup; children = ( 4BDF50181D77540900D8FBC3 /* Base */, ); name = OpenQuicklyWindow.xib; sourceTree = ""; }; 4BEBA50C1CFF374B00673FDF /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( 4BEBA50D1CFF374B00673FDF /* Base */, ); name = MainMenu.xib; sourceTree = ""; }; 4BF07EE61D51326A009BECEB /* Credits.rtf */ = { isa = PBXVariantGroup; children = ( 4BF07EE51D51326A009BECEB /* Base */, ); name = Credits.rtf; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 4BEBA51B1CFF374B00673FDF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 20260129.185351; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_MODULE_VERIFIER = YES; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; FUSE_BUILD_SCRIPT_PHASES = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; OTHER_SWIFT_FLAGS = "-D DEBUG"; STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_DISABLE_SAFETY_CHECKS = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_STRICT_CONCURRENCY = complete; SWIFT_VERSION = 6.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; }; 4BEBA51C1CFF374B00673FDF /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; CURRENT_PROJECT_VERSION = 20260129.185351; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_MODULE_VERIFIER = YES; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_USER_SCRIPT_SANDBOXING = YES; FUSE_BUILD_SCRIPT_PHASES = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_OPTIMIZATION_LEVEL = fast; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = NO; STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_COMPILATION_MODE = wholemodule; SWIFT_DISABLE_SAFETY_CHECKS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_STRICT_CONCURRENCY = complete; SWIFT_VERSION = 6.0; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; }; 4BEBA51E1CFF374B00673FDF /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4B8C64CD23F02259008733D8 /* Dev.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 20260129.185351; DEFINES_MODULE = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; IBC_MODULE = VimR; INFOPLIST_FILE = VimR/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; OTHER_LDFLAGS = "-pthread"; PRODUCT_BUNDLE_IDENTIFIER = "$(VIMR_BUNDLE_IDENTIFIER)"; PRODUCT_MODULE_NAME = VimR; PRODUCT_NAME = "$(VIMR_DISPLAY_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = VimR/Bridge.h; }; name = Debug; }; 4BEBA51F1CFF374B00673FDF /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4B8C64CE23F022C2008733D8 /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; CURRENT_PROJECT_VERSION = 20260129.185351; DEFINES_MODULE = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; IBC_MODULE = VimR; INFOPLIST_FILE = VimR/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", ); MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu99 gnu++11"; OTHER_LDFLAGS = "-pthread"; PRODUCT_BUNDLE_IDENTIFIER = "$(VIMR_BUNDLE_IDENTIFIER)"; PRODUCT_MODULE_NAME = VimR; PRODUCT_NAME = "$(VIMR_DISPLAY_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = VimR/Bridge.h; }; name = Release; }; 4BEBA5211CFF374B00673FDF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = VimRTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.VimRTests; PRODUCT_NAME = VimRTests; }; name = Debug; }; 4BEBA5221CFF374B00673FDF /* Release */ = { isa = XCBuildConfiguration; buildSettings = { COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = VimRTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/../Frameworks", "@loader_path/../Frameworks", ); PRODUCT_BUNDLE_IDENTIFIER = com.qvacua.VimRTests; PRODUCT_NAME = VimRTests; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 4BEBA5001CFF374B00673FDF /* Build configuration list for PBXProject "VimR" */ = { isa = XCConfigurationList; buildConfigurations = ( 4BEBA51B1CFF374B00673FDF /* Debug */, 4BEBA51C1CFF374B00673FDF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4BEBA51D1CFF374B00673FDF /* Build configuration list for PBXNativeTarget "VimR" */ = { isa = XCConfigurationList; buildConfigurations = ( 4BEBA51E1CFF374B00673FDF /* Debug */, 4BEBA51F1CFF374B00673FDF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; 4BEBA5201CFF374B00673FDF /* Build configuration list for PBXNativeTarget "VimRTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 4BEBA5211CFF374B00673FDF /* Debug */, 4BEBA5221CFF374B00673FDF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ 4B582FB92EA525580016D7AF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/SimplyDanny/SwiftLintPlugins"; requirement = { kind = upToNextMajorVersion; minimumVersion = 0.62.2; }; }; 4B69B31924EDBAF000B1E5EB /* XCRemoteSwiftPackageReference "material-icons" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/qvacua/material-icons"; requirement = { kind = exactVersion; version = 0.2.0; }; }; 4B9BC41C24EB2E22000209B5 /* XCRemoteSwiftPackageReference "MessagePack" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/qvacua/MessagePack.swift"; requirement = { kind = exactVersion; version = 4.1.0; }; }; 4B9BC42824EB2E6D000209B5 /* XCRemoteSwiftPackageReference "ShortcutRecorder" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Kentzo/ShortcutRecorder"; requirement = { kind = exactVersion; version = 3.4.0; }; }; 4B9D049B273481AD007E8614 /* XCRemoteSwiftPackageReference "Down" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/johnxnguyen/Down"; requirement = { kind = exactVersion; version = 0.11.0; }; }; 4BA19810285B4BA600B49309 /* XCRemoteSwiftPackageReference "misc" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/qvacua/misc.swift"; requirement = { kind = exactVersion; version = 0.4.0; }; }; 4BA284B0256471ED00CFDF7F /* XCRemoteSwiftPackageReference "Sparkle" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/sparkle-project/Sparkle"; requirement = { kind = exactVersion; version = 2.8.1; }; }; 4BADD55C283ABD0200C6B16D /* XCRemoteSwiftPackageReference "swift-collections" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/apple/swift-collections.git"; requirement = { kind = upToNextMajorVersion; minimumVersion = 1.3.0; }; }; 4BBE7F4F2D21C12B006090D9 /* XCRemoteSwiftPackageReference "FSEvents" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/qvacua/FSEvents/"; requirement = { kind = exactVersion; version = 0.1.8; }; }; 4BD5655124E8014100D52809 /* XCRemoteSwiftPackageReference "swifter" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/httpswift/swifter"; requirement = { kind = exactVersion; version = 1.5.0; }; }; 4BD5655724E8040E00D52809 /* XCRemoteSwiftPackageReference "PureLayout" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/PureLayout/PureLayout"; requirement = { kind = exactVersion; version = 3.1.9; }; }; 4BD5657624E8443300D52809 /* XCRemoteSwiftPackageReference "DictionaryCoding" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/elegantchaos/DictionaryCoding"; requirement = { kind = exactVersion; version = 1.0.9; }; }; 4BD67CD824EE45CA00147C51 /* XCRemoteSwiftPackageReference "Nimble" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Quick/Nimble"; requirement = { kind = upToNextMajorVersion; minimumVersion = 14.0.0; }; }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ 4B582FBA2EA525600016D7AF /* SwiftLintBuildToolPlugin */ = { isa = XCSwiftPackageProductDependency; package = 4B582FB92EA525580016D7AF /* XCRemoteSwiftPackageReference "SwiftLintPlugins" */; productName = "plugin:SwiftLintBuildToolPlugin"; }; 4B69B31A24EDBAF000B1E5EB /* MaterialIcons */ = { isa = XCSwiftPackageProductDependency; package = 4B69B31924EDBAF000B1E5EB /* XCRemoteSwiftPackageReference "material-icons" */; productName = MaterialIcons; }; 4B69B31C24EDC9F100B1E5EB /* Workspace */ = { isa = XCSwiftPackageProductDependency; productName = Workspace; }; 4B9BC41D24EB2E22000209B5 /* MessagePack */ = { isa = XCSwiftPackageProductDependency; package = 4B9BC41C24EB2E22000209B5 /* XCRemoteSwiftPackageReference "MessagePack" */; productName = MessagePack; }; 4B9BC42624EB2E51000209B5 /* NvimView */ = { isa = XCSwiftPackageProductDependency; productName = NvimView; }; 4B9BC42924EB2E6D000209B5 /* ShortcutRecorder */ = { isa = XCSwiftPackageProductDependency; package = 4B9BC42824EB2E6D000209B5 /* XCRemoteSwiftPackageReference "ShortcutRecorder" */; productName = ShortcutRecorder; }; 4B9D049C273481AD007E8614 /* Down */ = { isa = XCSwiftPackageProductDependency; package = 4B9D049B273481AD007E8614 /* XCRemoteSwiftPackageReference "Down" */; productName = Down; }; 4BA19811285B4BA600B49309 /* Misc */ = { isa = XCSwiftPackageProductDependency; package = 4BA19810285B4BA600B49309 /* XCRemoteSwiftPackageReference "misc" */; productName = Misc; }; 4BA284B1256471ED00CFDF7F /* Sparkle */ = { isa = XCSwiftPackageProductDependency; package = 4BA284B0256471ED00CFDF7F /* XCRemoteSwiftPackageReference "Sparkle" */; productName = Sparkle; }; 4BADD55A283A847100C6B16D /* Ignore */ = { isa = XCSwiftPackageProductDependency; productName = Ignore; }; 4BADD55D283ABD0200C6B16D /* OrderedCollections */ = { isa = XCSwiftPackageProductDependency; package = 4BADD55C283ABD0200C6B16D /* XCRemoteSwiftPackageReference "swift-collections" */; productName = OrderedCollections; }; 4BBE7F502D21C12B006090D9 /* EonilFSEvents */ = { isa = XCSwiftPackageProductDependency; package = 4BBE7F4F2D21C12B006090D9 /* XCRemoteSwiftPackageReference "FSEvents" */; productName = EonilFSEvents; }; 4BD5655224E8014100D52809 /* Swifter */ = { isa = XCSwiftPackageProductDependency; package = 4BD5655124E8014100D52809 /* XCRemoteSwiftPackageReference "swifter" */; productName = Swifter; }; 4BD5655824E8040E00D52809 /* PureLayout */ = { isa = XCSwiftPackageProductDependency; package = 4BD5655724E8040E00D52809 /* XCRemoteSwiftPackageReference "PureLayout" */; productName = PureLayout; }; 4BD5657724E8443300D52809 /* DictionaryCoding */ = { isa = XCSwiftPackageProductDependency; package = 4BD5657624E8443300D52809 /* XCRemoteSwiftPackageReference "DictionaryCoding" */; productName = DictionaryCoding; }; 4BD67C7A24EC765900147C51 /* Commons */ = { isa = XCSwiftPackageProductDependency; productName = Commons; }; 4BD67CDB24EE45E900147C51 /* Nimble */ = { isa = XCSwiftPackageProductDependency; package = 4BD67CD824EE45CA00147C51 /* XCRemoteSwiftPackageReference "Nimble" */; productName = Nimble; }; 4BE73F9A285C9AC100B63585 /* Ignore */ = { isa = XCSwiftPackageProductDependency; productName = Ignore; }; 4BE73F9C285C9AD600B63585 /* OrderedCollections */ = { isa = XCSwiftPackageProductDependency; package = 4BADD55C283ABD0200C6B16D /* XCRemoteSwiftPackageReference "swift-collections" */; productName = OrderedCollections; }; 4BE73FA3285C9C7700B63585 /* Commons */ = { isa = XCSwiftPackageProductDependency; productName = Commons; }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 4BEBA4FD1CFF374B00673FDF /* Project object */; } ================================================ FILE: VimR/VimR.xcodeproj/project.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: VimR/VimR.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: VimR/VimR.xcodeproj/xcshareddata/xcschemes/VimR.xcscheme ================================================ ================================================ FILE: VimR/VimRTests/IgnoreServiceTest.swift ================================================ /// Tae Won Ha - http://taewon.de - @hataewon /// See LICENSE import Nimble import XCTest class IgnoreServiceTest: XCTestCase { var base: URL! var service: IgnoreService! override func setUp() { self.base = Bundle(for: type(of: self)).url( forResource: "ignore-service-test", withExtension: nil, subdirectory: "Resources" )! self.service = IgnoreService(count: 100, root: self.base) super.setUp() } func testDeepest() { let ignoreAaa = self.service.ignore(for: self.base.appendingPathComponent("a/aa/aaa"))! expect(ignoreAaa.filters.count).to(beGreaterThanOrEqualTo(4)) expect(ignoreAaa.filters[back: 0].pattern).to(equal("last-level")) expect(ignoreAaa.filters[back: 1].pattern).to(equal("level-aaa")) expect(ignoreAaa.filters[back: 2].pattern).to(equal("level-a")) expect(ignoreAaa.filters[back: 3].pattern).to(equal("root-level")) } func testWholeTree() { let ignoreBase = self.service.ignore(for: self.base)! let ignoreA = self.service.ignore(for: self.base.appendingPathComponent("a/"))! let ignoreAa = self.service.ignore(for: self.base.appendingPathComponent("a/aa/"))! let ignoreAaa = self.service.ignore(for: self.base.appendingPathComponent("a/aa/aaa"))! expect(ignoreBase.filters.count).to(beGreaterThanOrEqualTo(1)) expect(ignoreBase.filters[back: 0].pattern).to(equal("root-level")) expect(ignoreA.filters.count).to(equal(ignoreBase.filters.count + 1)) expect(ignoreA.filters[back: 0].pattern).to(equal("level-a")) expect(ignoreA.filters[back: 1].pattern).to(equal("root-level")) expect(ignoreAa).to(be(ignoreA)) expect(ignoreAaa.filters.count).to(equal(ignoreAa.filters.count + 2)) expect(ignoreAaa.filters[back: 0].pattern).to(equal("last-level")) expect(ignoreAaa.filters[back: 1].pattern).to(equal("level-aaa")) expect(ignoreAaa.filters[back: 2].pattern).to(equal("level-a")) expect(ignoreAaa.filters[back: 3].pattern).to(equal("root-level")) } } private extension BidirectionalCollection { subscript(back i: Int) -> Element { self[index(endIndex, offsetBy: -(i + 1))] } } ================================================ FILE: VimR/VimRTests/Info.plist ================================================ CFBundleDevelopmentRegion en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName $(PRODUCT_NAME) CFBundlePackageType BNDL CFBundleShortVersionString 0.60.0 CFBundleSignature ???? CFBundleVersion 20260129.185351 ================================================ FILE: VimR/VimRTests/Resources/ignore-service-test/.gitignore ================================================ root-level ================================================ FILE: VimR/VimRTests/Resources/ignore-service-test/a/.gitignore ================================================ level-a ================================================ FILE: VimR/VimRTests/Resources/ignore-service-test/a/aa/aaa/.gitignore ================================================ level-aaa last-level ================================================ FILE: VimR.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: VimR.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist ================================================ IDEDidComputeMac32BitWarning ================================================ FILE: VimR.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings ================================================ ================================================ FILE: Workspace/.gitignore ================================================ .DS_Store /.build /Packages /*.xcodeproj xcuserdata/ ================================================ FILE: Workspace/Package.swift ================================================ // swift-tools-version: 6.0 import PackageDescription let package = Package( name: "Workspace", platforms: [.macOS(.v14)], products: [ .library(name: "Workspace", targets: ["Workspace"]), ], dependencies: [ .package(url: "https://github.com/PureLayout/PureLayout", from: "3.1.9"), .package(url: "https://github.com/qvacua/material-icons", from: "0.2.0"), .package(url: "https://github.com/SimplyDanny/SwiftLintPlugins", from: "0.62.2"), .package(path: "../Commons"), ], targets: [ .target( name: "Workspace", dependencies: [ "PureLayout", .product(name: "MaterialIcons", package: "material-icons"), "Commons", ], plugins: [.plugin(name: "SwiftLintBuildToolPlugin", package: "SwiftLintPlugins")] ), ] ) ================================================ FILE: Workspace/README.md ================================================ # Workspace A description of this package. ================================================ FILE: Workspace/Sources/Workspace/InnterToolBar.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import MaterialIcons import PureLayout open class CustomToolBar: NSView { open func repaint(with _: Workspace.Theme) { // please implement } } /** This class is the base class for inner toolbars for workspace tools. It's got two default buttons: - Close button - Cog button: not shown when there's no menu */ public final class InnerToolBar: NSView, NSUserInterfaceValidations { // MARK: - Public public static let iconDimension = 16.0 public static let itemPadding = 4.0 public static func configureToStandardIconButton( button: NSButton, iconName: Icon, style: Style, color: NSColor = Workspace.Theme.default.toolbarForeground ) { let icon = iconName.asImage( dimension: InnerToolBar.iconDimension, style: style, color: color ) button.imagePosition = .imageOnly button.image = icon button.isBordered = false // The following disables the square appearing when pushed. let cell = button.cell as? NSButtonCell cell?.highlightsBy = .contentsCellMask } public init(customToolbar: CustomToolBar? = nil, customMenuItems: [NSMenuItem] = []) { self.customMenuItems = customMenuItems self.customToolbar = customToolbar super.init(frame: .zero) self.configureForAutoLayout() // Because other views also want layer, this view also must want layer. Otherwise the z-index // ordering is not set // correctly: views w/ wantsLayer = false are behind views w/ wantsLayer = true even when added later. self.wantsLayer = true self.layer?.backgroundColor = self.theme.toolbarBackground.cgColor self.addViews() } override public var intrinsicContentSize: CGSize { CGSize(width: NSView.noIntrinsicMetric, height: InnerToolBar.height) } override public func draw(_ dirtyRect: NSRect) { self.theme.separator.set() let bottomSeparatorRect = self.bottomSeparatorRect() if dirtyRect.intersects(bottomSeparatorRect) { bottomSeparatorRect.fill() } self.theme.toolbarForeground.set() let innerSeparatorRect = self.innerSeparatorRect() if dirtyRect.intersects(innerSeparatorRect) { innerSeparatorRect.fill() } } // MARK: - NSUserInterfaceValidations public func validateUserInterfaceItem(_ item: NSValidatedUserInterfaceItem) -> Bool { guard let loc = self.tool?.location else { return true } if item.action == self.locToSelector[loc] { return false } return true } // MARK: - Internal and private @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } var customMenuItems: [NSMenuItem]? { didSet { self.removeCustomUiElements() self.addViews() } } var customToolbar: CustomToolBar? { didSet { self.removeCustomUiElements() self.addViews() } } var theme: Workspace.Theme { self.tool?.theme ?? Workspace.Theme.default } weak var tool: WorkspaceTool? { didSet { self.titleField.stringValue = self.tool?.title ?? "" let toolTitle = self.tool?.title ?? "Tool" self.closeButton.toolTip = "Close \(toolTitle)" self.cogButton.toolTip = "\(toolTitle) Settings" } } private static let separatorThickness = 1.0 private static let height = InnerToolBar.iconDimension + 2 + 2 + InnerToolBar.separatorThickness private let titleField = NSTextField(forAutoLayout: ()) private let closeButton = NSButton(forAutoLayout: ()) private let cogButton = NSButton(forAutoLayout: ()) private let cogMenu = NSMenu() private let locToSelector: [WorkspaceBarLocation: Selector] = [ .top: #selector(InnerToolBar.moveToTopAction(_:)), .right: #selector(InnerToolBar.moveToRightAction(_:)), .bottom: #selector(InnerToolBar.moveToBottomAction(_:)), .left: #selector(InnerToolBar.moveToLeftAction(_:)), ] } extension InnerToolBar { func repaint() { self.layer!.backgroundColor = self.theme.toolbarBackground.cgColor self.titleField.textColor = self.theme.toolbarForeground self.cogButton.image = Icon.settings.asImage( dimension: InnerToolBar.iconDimension, style: .filled, color: self.theme.toolbarForeground ) self.closeButton.image = Icon.highlightOff.asImage( dimension: InnerToolBar.iconDimension, style: .outlined, color: self.theme.toolbarForeground ) self.customToolbar?.repaint(with: self.theme) self.needsDisplay = true } private func removeCustomUiElements() { self.customToolbar?.removeFromSuperview() [self.titleField, self.closeButton, self.cogButton].forEach { $0.removeFromSuperview() } self.cogButton.menu = nil } private func addViews() { let title = self.titleField let close = self.closeButton let cog = self.cogButton title.isBezeled = false title.drawsBackground = false title.isEditable = false title.isSelectable = false title.controlSize = .small InnerToolBar.configureToStandardIconButton( button: close, iconName: .highlightOff, style: .outlined, color: self.theme.toolbarForeground ) close.target = self close.action = #selector(InnerToolBar.closeAction) InnerToolBar.configureToStandardIconButton( button: cog, iconName: .settings, style: .filled, color: self.theme.toolbarForeground ) cog.action = #selector(InnerToolBar.cogAction) cog.target = self let moveToMenu = NSMenu() let topMenuItem = NSMenuItem( title: "Top", action: #selector(InnerToolBar.moveToTopAction), keyEquivalent: "" ) topMenuItem.target = self let rightMenuItem = NSMenuItem( title: "Right", action: #selector(InnerToolBar.moveToRightAction), keyEquivalent: "" ) rightMenuItem.target = self let bottomMenuItem = NSMenuItem( title: "Bottom", action: #selector(InnerToolBar.moveToBottomAction), keyEquivalent: "" ) bottomMenuItem.target = self let leftMenuItem = NSMenuItem( title: "Left", action: #selector(InnerToolBar.moveToLeftAction), keyEquivalent: "" ) leftMenuItem.target = self moveToMenu.addItem(leftMenuItem) moveToMenu.addItem(rightMenuItem) moveToMenu.addItem(bottomMenuItem) moveToMenu.addItem(topMenuItem) let moveToMenuItem = NSMenuItem( title: "Move To", action: nil, keyEquivalent: "" ) moveToMenuItem.submenu = moveToMenu if self.customMenuItems?.isEmpty == false { self.customMenuItems?.forEach(self.cogMenu.addItem) self.cogMenu.addItem(NSMenuItem.separator()) } self.cogMenu.addItem(moveToMenuItem) if let customToolbar = self.customToolbar { customToolbar.configureForAutoLayout() self.addSubview(customToolbar) } self.addSubview(title) self.addSubview(close) self.addSubview(cog) title.autoAlignAxis(toSuperviewAxis: .horizontal) title.autoPinEdge(toSuperviewEdge: .left, withInset: 4) close.autoPinEdge(toSuperviewEdge: .top, withInset: 2) close.autoPinEdge(toSuperviewEdge: .right, withInset: 2) cog.autoPinEdge( .right, to: .left, of: close, withOffset: -InnerToolBar.itemPadding ) cog.autoPinEdge(.top, to: .top, of: close) if let customToolbar = self.customToolbar { customToolbar.autoPinEdge(toSuperviewEdge: .top, withInset: 2) customToolbar.autoPinEdge( .right, to: .left, of: cog, withOffset: -InnerToolBar.itemPadding - InnerToolBar.separatorThickness ) customToolbar.autoPinEdge( toSuperviewEdge: .bottom, withInset: 2 + InnerToolBar.separatorThickness ) customToolbar.autoPinEdge( .left, to: .right, of: title, withOffset: -InnerToolBar.itemPadding ) } } private func bottomSeparatorRect() -> CGRect { let bounds = self.bounds return CGRect( x: bounds.minX, y: bounds.minY, width: bounds.width, height: InnerToolBar.separatorThickness ) } private func innerSeparatorRect() -> CGRect { let cogBounds = self.cogButton.frame let bounds = self.bounds return CGRect( x: cogBounds.minX - InnerToolBar.itemPadding, y: bounds.minY + 4, width: 1, height: bounds.height - 4 - 4 ) } } // MARK: - Actions extension InnerToolBar { @objc func closeAction(_: Any?) { self.tool?.toggle() } @objc func cogAction(_ sender: NSButton) { guard let event = NSApp.currentEvent else { return } NSMenu.popUpContextMenu(self.cogMenu, with: event, for: sender) } @objc func moveToTopAction(_: Any?) { self.move(to: .top) } @objc func moveToRightAction(_: Any?) { self.move(to: .right) } @objc func moveToBottomAction(_: Any?) { self.move(to: .bottom) } @objc func moveToLeftAction(_: Any?) { self.move(to: .left) } private func move(to location: WorkspaceBarLocation) { guard let tool = self.tool else { return } tool.workspace?.move(tool: tool, to: location) } } ================================================ FILE: Workspace/Sources/Workspace/ProxyWorkspaceBar.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout /** This class is used to display the placeholder bar when a tool is drag & dropped to a location with no existing tools. */ final class ProxyWorkspaceBar: NSView { var theme = Workspace.Theme.default @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } override init(frame: NSRect) { super.init(frame: frame) // Because other views also want layer, this view also must want layer. Otherwise the z-index // ordering is not set // correctly: views w/ wantsLayer = false are behind views w/ wantsLayer = true even when added later. self.wantsLayer = true self.layer?.backgroundColor = self.theme.background.cgColor } func repaint() { self.layer?.backgroundColor = self.theme.background.cgColor self.needsDisplay = true } override func draw(_: NSRect) { let path = NSBezierPath(rect: self.bounds) path.lineWidth = 4 self.theme.barFocusRing.set() path.stroke() } } ================================================ FILE: Workspace/Sources/Workspace/Workspace.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout public enum WorkspaceBarLocation: String, Codable, CaseIterable, Sendable { case top case right case bottom case left } @MainActor public protocol WorkspaceDelegate: AnyObject { func resizeWillStart(workspace: Workspace, tool: WorkspaceTool?) func resizeDidEnd(workspace: Workspace, tool: WorkspaceTool?) func toggled(tool: WorkspaceTool) func moved(tool: WorkspaceTool) } public final class Workspace: NSView, WorkspaceBarDelegate { // MARK: - Public public struct Config { public let mainViewMinimumSize: CGSize public init(mainViewMinimumSize: CGSize) { self.mainViewMinimumSize = mainViewMinimumSize } } public struct Theme: Sendable { public static let `default` = Workspace.Theme() public var foreground = NSColor.black public var background = NSColor.white public var separator = NSColor.separatorColor public var barBackground = NSColor.windowBackgroundColor public var barFocusRing = NSColor.selectedControlColor public var barButtonBackground = NSColor.clear public var barButtonHighlight = NSColor.separatorColor public var toolbarForeground = NSColor.darkGray public var toolbarBackground = NSColor(red: 0.899, green: 0.934, blue: 0.997, alpha: 1) public init() {} } public private(set) var isAllToolsVisible = true { didSet { self.relayout() } } public private(set) var isToolButtonsVisible = true { didSet { self.bars.values.forEach { $0.isButtonVisible = !$0.isButtonVisible } } } public var orderedTools: [WorkspaceTool] { self.bars.values.reduce([]) { [$0, $1.tools].flatMap(\.self) } } public let mainView: NSView public let config: Config public var theme = Workspace.Theme.default { didSet { self.repaint() } } public weak var delegate: WorkspaceDelegate? public init( mainView: NSView, config: Config = Config(mainViewMinimumSize: CGSize(width: 100, height: 100)) ) { self.config = config self.mainView = mainView self.bars = [ .top: WorkspaceBar(location: .top), .right: WorkspaceBar(location: .right), .bottom: WorkspaceBar(location: .bottom), .left: WorkspaceBar(location: .left), ] super.init(frame: .init(x: 0, y: 0, width: 640, height: 480)) self.configureForAutoLayout() self.registerForDraggedTypes([NSPasteboard.PasteboardType(WorkspaceToolButton.toolUti)]) for value in self.bars.values { value.workspace = self value.delegate = self } self.relayout() } public func append(tool: WorkspaceTool, location: WorkspaceBarLocation) { if self.tools.contains(tool) { return } self.tools.append(tool) self.bars[location]?.append(tool: tool) } public func move(tool: WorkspaceTool, to location: WorkspaceBarLocation) { tool.bar?.remove(tool: tool) self.bars[location]?.append(tool: tool) self.delegate?.moved(tool: tool) } public func hideAllTools() { if self.isAllToolsVisible { self.isAllToolsVisible = false } } public func showAllTools() { if !self.isAllToolsVisible { self.isAllToolsVisible = true } } public func toggleAllTools() { self.isAllToolsVisible = !self.isAllToolsVisible } public func hideToolButtons() { if self.isToolButtonsVisible { self.isToolButtonsVisible = false } } public func showToolButtons() { if !self.isToolButtonsVisible { self.isToolButtonsVisible = true } } public func toggleToolButtons() { self.isToolButtonsVisible = !self.isToolButtonsVisible } // MARK: - Internal and private @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } let bars: [WorkspaceBarLocation: WorkspaceBar] private var tools = [WorkspaceTool]() private var isDragOngoing = false private var draggedOnBarLocation: WorkspaceBarLocation? private let proxyBar = ProxyWorkspaceBar(forAutoLayout: ()) } // MARK: - NSDraggingDestination public extension Workspace { override func draggingEntered(_: NSDraggingInfo) -> NSDragOperation { self.isDragOngoing = true return .move } override func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation { let loc = self.convert(sender.draggingLocation, from: nil) let currentBarLoc = self.barLocation(inPoint: loc) if currentBarLoc == self.draggedOnBarLocation { return .move } self.draggedOnBarLocation = currentBarLoc self.relayout() return .move } override func draggingExited(_: NSDraggingInfo?) { self.endDrag() } override func draggingEnded(_: NSDraggingInfo) { self.endDrag() } private func endDrag() { self.isDragOngoing = false self.draggedOnBarLocation = nil self.proxyBar.removeFromSuperview() } override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { let loc = self.convert(sender.draggingLocation, from: nil) guard let barLoc = self.barLocation(inPoint: loc) else { return false } guard let toolButton = sender.draggingSource as? WorkspaceToolButton else { return false } guard let tool = toolButton.tool else { return false } self.move(tool: tool, to: barLoc) return true } private func barLocation(inPoint loc: CGPoint) -> WorkspaceBarLocation? { return WorkspaceBarLocation.allCases.first(where: { self.rect(forBar: $0).contains(loc) }) } // We copy and pasted WorkspaceBar.barFrame() since we need the rect for the proxy bars. private func rect(forBar location: WorkspaceBarLocation) -> CGRect { let size = self.bounds.size let dimension = self.bars[location]!.dimensionWithoutTool() switch location { case .top: return CGRect(x: 0, y: size.height - dimension, width: size.width, height: dimension) case .right: return CGRect(x: size.width - dimension, y: 0, width: dimension, height: size.height) case .bottom: return CGRect(x: 0, y: 0, width: size.width, height: dimension) case .left: return CGRect(x: 0, y: 0, width: dimension, height: size.height) } } } // MARK: - WorkspaceBarDelegate extension Workspace { func resizeWillStart(workspaceBar _: WorkspaceBar, tool: WorkspaceTool?) { self.delegate?.resizeWillStart(workspace: self, tool: tool) } func resizeDidEnd(workspaceBar _: WorkspaceBar, tool: WorkspaceTool?) { self.delegate?.resizeDidEnd(workspace: self, tool: tool) } func toggle(tool: WorkspaceTool) { self.delegate?.toggled(tool: tool) } func moved(tool: WorkspaceTool) { self.delegate?.moved(tool: tool) } } // MARK: - Layout private extension Workspace { private func repaint() { self.bars.values.forEach { $0.repaint() } self.proxyBar.repaint() self.needsDisplay = true } private func relayout() { // FIXME: I did not investigate why toggleButtons does not work correctly if we store all constraints in an array // and remove them here by self.removeConstraints(${all constraints). The following seems to // work... self.subviews.forEach { $0.removeAllConstraints() } self.removeAllSubviews() let mainView = self.mainView self.addSubview(mainView) mainView.autoSetDimension( .width, toSize: self.config.mainViewMinimumSize.width, relation: .greaterThanOrEqual ) mainView.autoSetDimension( .height, toSize: self.config.mainViewMinimumSize.height, relation: .greaterThanOrEqual ) guard self.isAllToolsVisible else { mainView.autoPinEdgesToSuperviewEdges() return } let topBar = self.bars[.top]! let rightBar = self.bars[.right]! let bottomBar = self.bars[.bottom]! let leftBar = self.bars[.left]! self.addSubview(topBar) self.addSubview(rightBar) self.addSubview(bottomBar) self.addSubview(leftBar) topBar.autoPinEdge(toSuperviewEdge: .top) topBar.autoPinEdge(toSuperviewEdge: .right) topBar.autoPinEdge(toSuperviewEdge: .left) rightBar.autoPinEdge(.top, to: .bottom, of: topBar) rightBar.autoPinEdge(toSuperviewEdge: .right) rightBar.autoPinEdge(.bottom, to: .top, of: bottomBar) bottomBar.autoPinEdge(toSuperviewEdge: .right) bottomBar.autoPinEdge(toSuperviewEdge: .bottom) bottomBar.autoPinEdge(toSuperviewEdge: .left) leftBar.autoPinEdge(.top, to: .bottom, of: topBar) leftBar.autoPinEdge(toSuperviewEdge: .left) leftBar.autoPinEdge(.bottom, to: .top, of: bottomBar) NSLayoutConstraint.autoSetPriority(.dragThatCannotResizeWindow) { topBar.dimensionConstraint = topBar.autoSetDimension(.height, toSize: 50) rightBar.dimensionConstraint = rightBar.autoSetDimension(.width, toSize: 50) bottomBar.dimensionConstraint = bottomBar.autoSetDimension(.height, toSize: 50) leftBar.dimensionConstraint = leftBar.autoSetDimension(.width, toSize: 50) } self.bars.values.forEach { $0.relayout() } mainView.autoPinEdge(.top, to: .bottom, of: topBar) mainView.autoPinEdge(.right, to: .left, of: rightBar) mainView.autoPinEdge(.bottom, to: .top, of: bottomBar) mainView.autoPinEdge(.left, to: .right, of: leftBar) if let barLoc = self.draggedOnBarLocation { let proxyBar = self.proxyBar self.addSubview(proxyBar) let barRect = self.rect(forBar: barLoc) switch barLoc { case .top: proxyBar.autoPinEdge(toSuperviewEdge: .top) proxyBar.autoPinEdge(toSuperviewEdge: .right) proxyBar.autoPinEdge(toSuperviewEdge: .left) proxyBar.autoSetDimension(.height, toSize: barRect.height) case .right: proxyBar.autoPinEdge(.top, to: .bottom, of: topBar) proxyBar.autoPinEdge(toSuperviewEdge: .right) proxyBar.autoPinEdge(.bottom, to: .top, of: bottomBar) proxyBar.autoSetDimension(.width, toSize: barRect.width) case .bottom: proxyBar.autoPinEdge(toSuperviewEdge: .right) proxyBar.autoPinEdge(toSuperviewEdge: .bottom) proxyBar.autoPinEdge(toSuperviewEdge: .left) proxyBar.autoSetDimension(.height, toSize: barRect.height) case .left: proxyBar.autoPinEdge(.top, to: .bottom, of: topBar) proxyBar.autoPinEdge(toSuperviewEdge: .left) proxyBar.autoPinEdge(.bottom, to: .top, of: bottomBar) proxyBar.autoSetDimension(.width, toSize: barRect.width) } } self.needsDisplay = true } } ================================================ FILE: Workspace/Sources/Workspace/WorkspaceBar.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import os import PureLayout @MainActor protocol WorkspaceBarDelegate: AnyObject { func resizeWillStart(workspaceBar: WorkspaceBar, tool: WorkspaceTool?) func resizeDidEnd(workspaceBar: WorkspaceBar, tool: WorkspaceTool?) func toggle(tool: WorkspaceTool) func moved(tool: WorkspaceTool) } /** TODO: Refactor to include the buttons and the inner separator. Currently it's just a pass-through view only for drag & drop due to the drag & drop infrastructure of Cocoa. */ private class ProxyBar: NSView { fileprivate var draggedOnToolIdx: Int? private var isDragOngoing = false private var buttonFrames: [CGRect] = [] fileprivate weak var container: WorkspaceBar? @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } init() { super.init(frame: .zero) self.configureForAutoLayout() self.registerForDraggedTypes([NSPasteboard.PasteboardType(WorkspaceToolButton.toolUti)]) self.wantsLayer = true } } final class WorkspaceBar: NSView, WorkspaceToolDelegate { private static let separatorThickness = 1.0 fileprivate(set) var tools = [WorkspaceTool]() private weak var selectedTool: WorkspaceTool? private var isMouseDownOngoing = false private var dragIncrement = 1.0 private var layoutConstraints = [NSLayoutConstraint]() private let proxyBar = ProxyBar() @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } // MARK: - API static let minimumDimension = 50.0 let location: WorkspaceBarLocation var isButtonVisible = true { didSet { self.relayout() } } var isOpen: Bool { self.selectedTool != nil } var dimensionConstraint = NSLayoutConstraint() var theme: Workspace.Theme { self.workspace?.theme ?? Workspace.Theme.default } weak var delegate: WorkspaceBarDelegate? weak var workspace: Workspace? init(location: WorkspaceBarLocation) { self.location = location super.init(frame: .zero) self.configureForAutoLayout() self.wantsLayer = true self.layer!.backgroundColor = self.theme.barBackground.cgColor self.proxyBar.container = self } func dimensionWithoutTool() -> CGFloat { switch self.location { case .top, .bottom: WorkspaceToolButton.dimension() + WorkspaceBar.separatorThickness case .right, .left: WorkspaceToolButton.dimension() + WorkspaceBar.separatorThickness } } func barFrame() -> CGRect { let size = self.bounds.size let dimension = self.dimensionWithoutTool() switch self.location { case .top: return CGRect(x: 0, y: size.height - dimension, width: size.width, height: dimension) case .right: return CGRect(x: size.width - dimension, y: 0, width: dimension, height: size.height) case .bottom: return CGRect(x: 0, y: 0, width: size.width, height: dimension) case .left: return CGRect(x: 0, y: 0, width: dimension, height: size.height) } } func repaint() { self.layer!.backgroundColor = self.theme.barBackground.cgColor self.tools.forEach { $0.repaint() } self.needsDisplay = true } func relayout() { self.removeConstraints(self.layoutConstraints) self.removeAllSubviews() if self.isEmpty() { self.set(dimension: 0) return } if self.isButtonVisible { self.layoutButtons() if self.isOpen { let curTool = self.selectedTool! self.layout(curTool) let newDimension = self.barDimension(withToolDimension: curTool.dimension) self.set(dimension: newDimension) } else { self.set(dimension: self.barDimensionWithButtonsWithoutTool()) } } else { if self.isOpen { let curTool = self.selectedTool! self.layoutWithoutButtons(curTool) let newDimension = self.barDimensionWithoutButtons(withToolDimension: curTool.dimension) self.set(dimension: newDimension) } else { self.set(dimension: 0) } } let proxyBar = self.proxyBar self.addSubview(proxyBar) switch self.location { case .top: proxyBar.autoPinEdge(toSuperviewEdge: .top) proxyBar.autoPinEdge(toSuperviewEdge: .right) proxyBar.autoPinEdge(toSuperviewEdge: .left) proxyBar.autoSetDimension(.height, toSize: self.barDimensionWithButtonsWithoutTool()) case .right: proxyBar.autoPinEdge(toSuperviewEdge: .top) proxyBar.autoPinEdge(toSuperviewEdge: .bottom) proxyBar.autoPinEdge(toSuperviewEdge: .right) proxyBar.autoSetDimension(.width, toSize: self.barDimensionWithButtonsWithoutTool()) case .bottom: proxyBar.autoPinEdge(toSuperviewEdge: .right) proxyBar.autoPinEdge(toSuperviewEdge: .bottom) proxyBar.autoPinEdge(toSuperviewEdge: .left) proxyBar.autoSetDimension(.height, toSize: self.barDimensionWithButtonsWithoutTool()) case .left: proxyBar.autoPinEdge(toSuperviewEdge: .top) proxyBar.autoPinEdge(toSuperviewEdge: .bottom) proxyBar.autoPinEdge(toSuperviewEdge: .left) proxyBar.autoSetDimension(.width, toSize: self.barDimensionWithButtonsWithoutTool()) } } func append(tool: WorkspaceTool) { tool.bar = self tool.delegate = self tool.location = self.location self.tools.append(tool) if self.isOpen || tool.isSelected { self.selectedTool?.isSelected = false self.selectedTool = tool self.selectedTool?.isSelected = true } self.relayout() } func insert(tool: WorkspaceTool, at idx: Int) { tool.bar = self tool.delegate = self tool.location = self.location self.tools.insert(tool, at: idx) if self.isOpen || tool.isSelected { self.selectedTool?.isSelected = false self.selectedTool = tool self.selectedTool?.isSelected = true } self.relayout() } func remove(tool: WorkspaceTool) { guard let idx = self.tools.firstIndex(of: tool) else { return } tool.bar = nil tool.delegate = nil self.tools.remove(at: idx) if self.isOpen, self.selectedTool == tool { self.selectedTool = self.tools.first } self.relayout() } } // MARK: - NSDraggingDestination extension ProxyBar { private func isTool(atIndex idx: Int, beingDragged info: NSDraggingInfo) -> Bool { let pasteboard = info.draggingPasteboard guard let uuid = pasteboard .string(forType: NSPasteboard.PasteboardType(WorkspaceToolButton.toolUti)) else { return false } let tool = self.container!.tools[idx] return self.container!.tools.first { $0.uuid == uuid } == tool } override func draggingEntered(_: NSDraggingInfo) -> NSDragOperation { self.buttonFrames.removeAll() self.buttonFrames = self.container!.tools.map(\.button.frame) self.isDragOngoing = true return .move } override func draggingUpdated(_ sender: NSDraggingInfo) -> NSDragOperation { let locInProxy = self.convert(sender.draggingLocation, from: nil) let locInBar = self.convert(locInProxy, to: self.container) let currentDraggedOnToolIdx = self.buttonFrames.enumerated() .reduce(nil) { result, entry -> Int? in if result != nil { return result } if entry.element.contains(locInBar) { if self.isTool(atIndex: entry.offset, beingDragged: sender) { return nil } return entry.offset } return nil } if currentDraggedOnToolIdx == self.draggedOnToolIdx { return .move } self.draggedOnToolIdx = currentDraggedOnToolIdx self.container!.relayout() return .move } override func draggingEnded(_: NSDraggingInfo) { self.endDrag() } override func draggingExited(_: NSDraggingInfo?) { self.endDrag() } override func performDragOperation(_ sender: NSDraggingInfo) -> Bool { guard let toolButton = sender.draggingSource as? WorkspaceToolButton else { return false } guard let tool = toolButton.tool else { return false } guard let draggedOnToolIdx = self.draggedOnToolIdx else { // This means: // 1. the dragged tool is from this bar and is dropped at the same spot // 2. the dragged tool is from this bar and is dropped at the end of the bar // 3. the dragged tool is not from this bar and is dropped at the end of the bar guard let toolIdx = self.container!.tools.firstIndex(of: tool) else { // 3. tool.bar?.remove(tool: tool) self.container!.append(tool: tool) self.container?.delegate?.moved(tool: tool) return true } // 2. let locInProxy = self.convert(sender.draggingLocation, from: nil) let locInBar = self.convert(locInProxy, to: self.container) if self.buttonFrames.filter({ $0.contains(locInBar) }).isEmpty, self.container!.barFrame().contains(locInBar) { self.container!.tools.remove(at: toolIdx) self.container!.tools.append(tool) self.container?.delegate?.moved(tool: tool) return true } // 1. return false } // If we are here, the dragged tool is dropped somewhere in the middle and // 1. is not from this bar // 2. is from this bar guard let toolIdx = self.container!.tools.firstIndex(of: tool) else { // 1. tool.bar?.remove(tool: tool) self.container!.insert(tool: tool, at: draggedOnToolIdx) self.container?.delegate?.moved(tool: tool) return true } // 2. if draggedOnToolIdx > toolIdx { self.container!.tools.remove(at: toolIdx) self.container!.tools.insert(tool, at: draggedOnToolIdx - 1) } else { self.container!.tools.remove(at: toolIdx) self.container!.tools.insert(tool, at: draggedOnToolIdx) } self.container?.delegate?.moved(tool: tool) return true } private func endDrag() { self.isDragOngoing = false self.draggedOnToolIdx = nil self.container!.relayout() } } // MARK: - NSView extension WorkspaceBar { override func draw(_ dirtyRect: NSRect) { // super.draw(dirtyRect) if self.isButtonVisible { self.drawInnerSeparator(dirtyRect) } if self.isOpen { self.drawOuterSeparator(dirtyRect) } } override func hitTest(_ point: NSPoint) -> NSView? { let loc = self.convert(point, from: nil) guard self.isOpen else { return super.hitTest(point) } if self.resizeRect().contains(loc) { return self } return super.hitTest(point) } override func mouseDown(with event: NSEvent) { guard self.isOpen else { return } if self.isMouseDownOngoing { return } let initialMouseLoc = self.convert(event.locationInWindow, from: nil) let mouseInResizeRect = NSMouseInRect(initialMouseLoc, self.resizeRect(), self.isFlipped) guard mouseInResizeRect, event.type == .leftMouseDown else { super.mouseDown(with: event) return } self.isMouseDownOngoing = true self.delegate?.resizeWillStart(workspaceBar: self, tool: self.selectedTool) self.dimensionConstraint.priority = NSLayoutConstraint .Priority( NSLayoutConstraint.Priority .RawValue(Int(NSLayoutConstraint.Priority.dragThatCannotResizeWindow.rawValue) - 1) ) var dragged = false var curEvent = event let nextEventMask: NSEvent.EventTypeMask = [.leftMouseDragged, .leftMouseDown, .leftMouseUp] while curEvent.type != .leftMouseUp { let nextEvent = NSApp.nextEvent( matching: nextEventMask, until: .distantFuture, inMode: .eventTracking, dequeue: true ) guard nextEvent != nil else { break } curEvent = nextEvent! guard curEvent.type == .leftMouseDragged else { break } let curMouseLoc = self.convert(curEvent.locationInWindow, from: nil) let distance = self.sq(initialMouseLoc.x - curMouseLoc.x) + self .sq(initialMouseLoc.y - curMouseLoc.y) guard dragged || distance >= 1 else { continue } let locInSuperview = self.superview!.convert(curEvent.locationInWindow, from: nil) let newDimension = self.newDimension(forLocationInSuperview: locInSuperview) self.set(dimension: newDimension) dragged = true } self.dimensionConstraint.priority = .dragThatCannotResizeWindow self.isMouseDownOngoing = false self.delegate?.resizeDidEnd(workspaceBar: self, tool: self.selectedTool) } override func resetCursorRects() { guard self.isOpen else { return } switch self.location { case .top, .bottom: self.addCursorRect(self.resizeRect(), cursor: .resizeUpDown) case .right, .left: self.addCursorRect(self.resizeRect(), cursor: .resizeLeftRight) } } private func drawInnerSeparator(_ dirtyRect: NSRect) { self.theme.separator.set() let innerLineRect = self.innerSeparatorRect() if dirtyRect.intersects(innerLineRect) { innerLineRect.fill() } } private func drawOuterSeparator(_ dirtyRect: NSRect) { self.theme.separator.set() let outerLineRect = self.outerSeparatorRect() if dirtyRect.intersects(outerLineRect) { outerLineRect.fill() } } private func buttonSize() -> CGSize { if self.isEmpty() { return CGSize.zero } return WorkspaceToolButton.size(forLocation: self.location) } private func innerSeparatorRect() -> CGRect { let bounds = self.bounds let thickness = WorkspaceBar.separatorThickness let bar = self.buttonSize() switch self.location { case .top: return CGRect( x: 0, y: bounds.height - bar.height - thickness, width: bounds.width, height: thickness ) case .right: return CGRect( x: bounds.width - bar.width - thickness, y: 0, width: thickness, height: bounds.height ) case .bottom: return CGRect(x: 0, y: bar.height, width: bounds.width, height: thickness) case .left: return CGRect(x: bar.width, y: 0, width: thickness, height: bounds.height) } } private func newDimension(forLocationInSuperview locInSuperview: CGPoint) -> CGFloat { let dimension = self.dimension(forLocationInSuperview: locInSuperview) return self.dragIncrement * floor(dimension / self.dragIncrement) } private func dimension(forLocationInSuperview locInSuperview: CGPoint) -> CGFloat { let superviewBounds = self.superview!.bounds switch self.location { case .top: return superviewBounds.height - locInSuperview.y case .right: return superviewBounds.width - locInSuperview.x case .bottom: return locInSuperview.y case .left: return locInSuperview.x } } private func sq(_ number: CGFloat) -> CGFloat { number * number } private func outerSeparatorRect() -> CGRect { let thickness = WorkspaceBar.separatorThickness switch self.location { case .top: return CGRect(x: 0, y: 0, width: self.bounds.width, height: thickness) case .right: return CGRect(x: 0, y: 0, width: thickness, height: self.bounds.height) case .bottom: return CGRect( x: 0, y: self.bounds.height - thickness, width: self.bounds.width, height: thickness ) case .left: return CGRect( x: self.bounds.width - thickness, y: 0, width: thickness, height: self.bounds.height ) } } private func resizeRect() -> CGRect { let separatorRect = self.outerSeparatorRect() let clickDimension = 4.0 switch self.location { case .top: return separatorRect.offsetBy(dx: 0, dy: clickDimension).union(separatorRect) case .right: return separatorRect.offsetBy(dx: clickDimension, dy: 0).union(separatorRect) case .bottom: return separatorRect.offsetBy(dx: 0, dy: -clickDimension).union(separatorRect) case .left: return separatorRect.offsetBy(dx: -clickDimension, dy: 0).union(separatorRect) } } private func set(dimension: CGFloat) { let saneDimension = self.saneDimension(from: dimension) self.dimensionConstraint.constant = saneDimension let toolDimension = self.toolDimension(fromBarDimension: saneDimension) if self.isOpen { self.selectedTool?.dimension = toolDimension } // In 10.12 we need the following, otherwise resizing the tools does not work correctly. self.layoutSubtreeIfNeeded() self.window?.invalidateCursorRects(for: self) self.needsDisplay = true } private func saneDimension(from dimension: CGFloat) -> CGFloat { if dimension == 0 { return 0 } if self.isOpen { return max(dimension, self.selectedTool!.minimumDimension, WorkspaceBar.minimumDimension) } return max(dimension, self.barDimensionWithButtonsWithoutTool()) } } // MARK: - Layout extension WorkspaceBar { private func isEmpty() -> Bool { self.tools.isEmpty } private func hasTools() -> Bool { !self.isEmpty() } private func layoutWithoutButtons(_ tool: WorkspaceTool) { let view = tool let thickness = WorkspaceBar.separatorThickness self.addSubview(view) switch self.location { case .top: self.layoutConstraints.append(contentsOf: [ view.autoPinEdge(toSuperviewEdge: .top), view.autoPinEdge(toSuperviewEdge: .right), view.autoPinEdge(toSuperviewEdge: .bottom, withInset: thickness), view.autoPinEdge(toSuperviewEdge: .left), view.autoSetDimension( .height, toSize: tool.minimumDimension, relation: .greaterThanOrEqual ), ]) case .right: self.layoutConstraints.append(contentsOf: [ view.autoPinEdge(toSuperviewEdge: .top), view.autoPinEdge(toSuperviewEdge: .right), view.autoPinEdge(toSuperviewEdge: .bottom), view.autoPinEdge(toSuperviewEdge: .left, withInset: thickness), view.autoSetDimension(.width, toSize: tool.minimumDimension, relation: .greaterThanOrEqual), ]) case .bottom: self.layoutConstraints.append(contentsOf: [ view.autoPinEdge(toSuperviewEdge: .top, withInset: thickness), view.autoPinEdge(toSuperviewEdge: .right), view.autoPinEdge(toSuperviewEdge: .bottom), view.autoPinEdge(toSuperviewEdge: .left), view.autoSetDimension( .height, toSize: tool.minimumDimension, relation: .greaterThanOrEqual ), ]) case .left: self.layoutConstraints.append(contentsOf: [ view.autoPinEdge(toSuperviewEdge: .top), view.autoPinEdge(toSuperviewEdge: .right, withInset: thickness), view.autoPinEdge(toSuperviewEdge: .bottom), view.autoPinEdge(toSuperviewEdge: .left), view.autoSetDimension(.width, toSize: tool.minimumDimension, relation: .greaterThanOrEqual), ]) } } private func layout(_ tool: WorkspaceTool) { let view = tool let button = tool.button let thickness = WorkspaceBar.separatorThickness self.addSubview(view) switch self.location { case .top: self.layoutConstraints.append(contentsOf: [ view.autoPinEdge(.top, to: .bottom, of: button, withOffset: thickness), view.autoPinEdge(toSuperviewEdge: .right), view.autoPinEdge(toSuperviewEdge: .bottom, withInset: thickness), view.autoPinEdge(toSuperviewEdge: .left), view.autoSetDimension( .height, toSize: tool.minimumDimension, relation: .greaterThanOrEqual ), ]) case .right: self.layoutConstraints.append(contentsOf: [ view.autoPinEdge(toSuperviewEdge: .top), view.autoPinEdge(.right, to: .left, of: button, withOffset: -thickness), // Offset is count l -> r, view.autoPinEdge(toSuperviewEdge: .bottom), view.autoPinEdge(toSuperviewEdge: .left, withInset: thickness), view.autoSetDimension(.width, toSize: tool.minimumDimension, relation: .greaterThanOrEqual), ]) case .bottom: self.layoutConstraints.append(contentsOf: [ view.autoPinEdge(toSuperviewEdge: .top, withInset: thickness), view.autoPinEdge(toSuperviewEdge: .right), view.autoPinEdge(.bottom, to: .top, of: button, withOffset: -thickness), // Offset is count t -> b, view.autoPinEdge(toSuperviewEdge: .left), view.autoSetDimension( .height, toSize: tool.minimumDimension, relation: .greaterThanOrEqual ), ]) case .left: self.layoutConstraints.append(contentsOf: [ view.autoPinEdge(toSuperviewEdge: .top), view.autoPinEdge(toSuperviewEdge: .right, withInset: thickness), view.autoPinEdge(toSuperviewEdge: .bottom), view.autoPinEdge(.left, to: .right, of: button, withOffset: thickness), view.autoSetDimension(.width, toSize: tool.minimumDimension, relation: .greaterThanOrEqual), ]) } } private func draggedButtonDimension() -> CGFloat { guard let idx = self.proxyBar.draggedOnToolIdx else { return 0 } let button = self.tools[idx].button switch button.location { case .top, .bottom: switch self.location { case .top, .bottom: return button.intrinsicContentSize.width case .left, .right: return button.intrinsicContentSize.width } case .left, .right: switch self.location { case .top, .bottom: return button.intrinsicContentSize.height case .left, .right: return button.intrinsicContentSize.height } } } private func layoutButtons() { guard let firstTool = self.tools.first else { return } self.tools .map(\.button) .forEach { self.addSubview($0) } let dimensionForDraggedButton = self.draggedButtonDimension() let firstButton = firstTool.button let firstButtonMargin = self.proxyBar.draggedOnToolIdx == 0 ? dimensionForDraggedButton : 0 switch self.location { case .top: self.layoutConstraints.append(contentsOf: [ firstButton.autoPinEdge(toSuperviewEdge: .top), firstButton.autoPinEdge(toSuperviewEdge: .left, withInset: firstButtonMargin), ]) case .right: self.layoutConstraints.append(contentsOf: [ firstButton.autoPinEdge(toSuperviewEdge: .top, withInset: firstButtonMargin), firstButton.autoPinEdge(toSuperviewEdge: .right), ]) case .bottom: self.layoutConstraints.append(contentsOf: [ firstButton.autoPinEdge(toSuperviewEdge: .left, withInset: firstButtonMargin), firstButton.autoPinEdge(toSuperviewEdge: .bottom), ]) case .left: self.layoutConstraints.append(contentsOf: [ firstButton.autoPinEdge(toSuperviewEdge: .top, withInset: firstButtonMargin), firstButton.autoPinEdge(toSuperviewEdge: .left), ]) } var lastButton = firstButton self.tools .map(\.button) .enumerated() .forEach { idx, button in // self.tools.first is already done above guard idx > 0 else { return } let margin = self.proxyBar.draggedOnToolIdx == idx ? dimensionForDraggedButton : 0 switch self.location { case .top: self.layoutConstraints.append(contentsOf: [ button.autoPinEdge(toSuperviewEdge: .top), button.autoPinEdge(.left, to: .right, of: lastButton, withOffset: margin), ]) case .right: self.layoutConstraints.append(contentsOf: [ button.autoPinEdge(.top, to: .bottom, of: lastButton, withOffset: margin), button.autoPinEdge(toSuperviewEdge: .right), ]) case .bottom: self.layoutConstraints.append(contentsOf: [ button.autoPinEdge(.left, to: .right, of: lastButton, withOffset: margin), button.autoPinEdge(toSuperviewEdge: .bottom), ]) case .left: self.layoutConstraints.append(contentsOf: [ button.autoPinEdge(.top, to: .bottom, of: lastButton, withOffset: margin), button.autoPinEdge(toSuperviewEdge: .left), ]) } lastButton = button } } private func barDimensionWithButtonsWithoutTool() -> CGFloat { switch self.location { case .top, .bottom: self.buttonSize().height + WorkspaceBar.separatorThickness case .right, .left: self.buttonSize().width + WorkspaceBar.separatorThickness } } private func barDimensionWithoutButtons(withToolDimension toolDimension: CGFloat) -> CGFloat { toolDimension + WorkspaceBar.separatorThickness } private func barDimension(withToolDimension toolDimension: CGFloat) -> CGFloat { self.barDimensionWithButtonsWithoutTool() + toolDimension + WorkspaceBar.separatorThickness } private func toolDimension(fromBarDimension barDimension: CGFloat) -> CGFloat { if self.isButtonVisible { return barDimension - WorkspaceBar.separatorThickness - self .barDimensionWithButtonsWithoutTool() } return barDimension - WorkspaceBar.separatorThickness } } // MARK: - WorkspaceToolDelegate extension WorkspaceBar { func toggle(_ tool: WorkspaceTool) { self.delegate?.resizeWillStart(workspaceBar: self, tool: self.selectedTool) if self.isOpen { let curTool = self.selectedTool! if curTool == tool { // In this case, curTool.isSelected is already set to false in WorkspaceTool.toggle() self.selectedTool = nil } else { curTool.isSelected = false self.selectedTool = tool } } else { self.selectedTool = tool } self.relayout() self.delegate?.resizeDidEnd(workspaceBar: self, tool: self.selectedTool) self.delegate?.toggle(tool: tool) } } ================================================ FILE: Workspace/Sources/Workspace/WorkspaceTool.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import PureLayout @MainActor protocol WorkspaceToolDelegate: AnyObject { func toggle(_ tool: WorkspaceTool) } public final class WorkspaceTool: NSView { public var dimension: CGFloat // MARK: - Public override public var hash: Int { self.uuid.hashValue } /** This UUID is only memory-persistent. It's generated when the tool is instantiated. */ public let uuid = UUID().uuidString public let title: String public let view: NSView public let button: WorkspaceToolButton public var location = WorkspaceBarLocation.left { didSet { self.button.location = self.location } } public var isSelected = false { didSet { if self.isSelected { self.button.highlight() } else { self.button.dehighlight() } } } public struct Config { let title: String let view: NSView let minimumDimension: CGFloat let isWithInnerToolbar: Bool let customToolbar: CustomToolBar? let customMenuItems: [NSMenuItem] public init( title: String, view: NSView, minimumDimension: CGFloat = 50, withInnerToolbar: Bool = true, customToolbar: CustomToolBar? = nil, customMenuItems: [NSMenuItem] = [] ) { self.title = title self.view = view self.minimumDimension = minimumDimension self.isWithInnerToolbar = withInnerToolbar self.customToolbar = customToolbar self.customMenuItems = customMenuItems } } public init(_ config: Config) { self.title = config.title self.view = config.view self.minimumDimension = config.minimumDimension self.dimension = self.minimumDimension self.button = WorkspaceToolButton(title: self.title) super.init(frame: .zero) self.configureForAutoLayout() self.button.tool = self if config.isWithInnerToolbar { self.innerToolbar = InnerToolBar( customToolbar: config.customToolbar, customMenuItems: config.customMenuItems ) self.innerToolbar?.tool = self } self.addViews() } public func toggle() { self.isSelected = !self.isSelected self.delegate?.toggle(self) } // MARK: - Internal and private @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } private var innerToolbar: InnerToolBar? static func == (left: WorkspaceTool, right: WorkspaceTool) -> Bool { left.uuid == right.uuid } var theme: Workspace.Theme { self.bar?.theme ?? Workspace.Theme.default } weak var delegate: WorkspaceToolDelegate? weak var bar: WorkspaceBar? var workspace: Workspace? { self.bar?.workspace } let minimumDimension: CGFloat var customInnerToolbar: CustomToolBar? { get { self.innerToolbar?.customToolbar } set { DispatchQueue.main.async { self.innerToolbar?.customToolbar = newValue } } } var customInnerMenuItems: [NSMenuItem]? { get { self.innerToolbar?.customMenuItems } set { self.innerToolbar?.customMenuItems = newValue } } func repaint() { self.button.repaint() self.innerToolbar?.repaint() self.needsDisplay = true } private func addViews() { let view = self.view self.addSubview(view) if let innerToolbar = self.innerToolbar { self.addSubview(innerToolbar) innerToolbar.autoPinEdge(toSuperviewEdge: .top) innerToolbar.autoPinEdge(toSuperviewEdge: .right) innerToolbar.autoPinEdge(toSuperviewEdge: .left) view.autoPinEdge(.top, to: .bottom, of: innerToolbar) view.autoPinEdge(toSuperviewEdge: .right) view.autoPinEdge(toSuperviewEdge: .bottom) view.autoPinEdge(toSuperviewEdge: .left) return } view.autoPinEdgesToSuperviewEdges() } } ================================================ FILE: Workspace/Sources/Workspace/WorkspaceToolButton.swift ================================================ /** * Tae Won Ha - http://taewon.de - @hataewon * See LICENSE */ import Cocoa import Commons public final class WorkspaceToolButton: NSView, NSDraggingSource { private static let titlePadding = CGSize(width: 8, height: 2) private static let dummyButton = WorkspaceToolButton(title: "Dummy") private var isHighlighted = false private let title: NSMutableAttributedString private var trackingArea = NSTrackingArea() @available(*, unavailable) required init?(coder _: NSCoder) { fatalError("init(coder:) has not been implemented") } static let toolUti = "com.qvacua.vimr.tool" static func == (left: WorkspaceToolButton, right: WorkspaceToolButton) -> Bool { guard let leftTool = left.tool, let rightTool = right.tool else { return false } return leftTool == rightTool } var location = WorkspaceBarLocation.top var isSelected: Bool { self.tool?.isSelected ?? false } var theme: Workspace.Theme { self.tool?.theme ?? Workspace.Theme.default } weak var tool: WorkspaceTool? static func dimension() -> CGFloat { self.dummyButton.intrinsicContentSize.height } static func size(forLocation loc: WorkspaceBarLocation) -> CGSize { switch loc { case .top, .bottom: self.dummyButton.intrinsicContentSize case .right, .left: CGSize( width: self.dummyButton.intrinsicContentSize.height, height: self.dummyButton.intrinsicContentSize.width ) } } init(title: String) { self.title = NSMutableAttributedString(string: title, attributes: [ NSAttributedString.Key.font: NSFont.systemFont(ofSize: 11), ]) super.init(frame: .zero) self.configureForAutoLayout() self.title.addAttribute( NSAttributedString.Key.foregroundColor, value: self.theme.foreground, range: NSRange(location: 0, length: self.title.length) ) self.wantsLayer = true } func repaint() { if self.isHighlighted { self.highlight() } else { self.dehighlight() } self.title.addAttribute( NSAttributedString.Key.foregroundColor, value: self.theme.foreground, range: NSRange(location: 0, length: self.title.length) ) self.needsDisplay = true } func highlight() { self.isHighlighted = true self.layer?.backgroundColor = self.theme.barButtonHighlight.cgColor } func dehighlight() { self.isHighlighted = false self.layer?.backgroundColor = self.theme.barButtonBackground.cgColor } } // MARK: - NSView public extension WorkspaceToolButton { override var intrinsicContentSize: NSSize { let titleSize = self.title.size() let padding = WorkspaceToolButton.titlePadding switch self.location { case .top, .bottom: return CGSize( width: titleSize.width + 2 * padding.width, height: titleSize.height + 2 * padding.height ) case .right, .left: return CGSize( width: titleSize.height + 2 * padding.height, height: titleSize.width + 2 * padding.width ) } } override func draw(_ dirtyRect: NSRect) { super.draw(dirtyRect) let padding = WorkspaceToolButton.titlePadding switch self.location { case .top, .bottom: self.title.draw(at: CGPoint(x: padding.width, y: padding.height)) case .right: self.title.draw( at: CGPoint(x: padding.height, y: self.bounds.height - padding.width), angle: -(.pi / 2) ) case .left: self.title.draw( at: CGPoint(x: self.bounds.width - padding.height, y: padding.width), angle: .pi / 2 ) } } override func updateTrackingAreas() { self.removeTrackingArea(self.trackingArea) self.trackingArea = NSTrackingArea( rect: self.bounds, options: [.mouseEnteredAndExited, .activeInActiveApp], owner: self, userInfo: nil ) self.addTrackingArea(self.trackingArea) super.updateTrackingAreas() } override func mouseDown(with event: NSEvent) { guard let nextEvent = self.window!.nextEvent(matching: [.leftMouseUp, .leftMouseDragged]) else { return } switch nextEvent.type { case .leftMouseUp: self.tool?.toggle() return case .leftMouseDragged: let pasteboardItem = NSPasteboardItem() pasteboardItem.setString( self.tool!.uuid, forType: NSPasteboard.PasteboardType(WorkspaceToolButton.toolUti) ) let draggingItem = NSDraggingItem(pasteboardWriter: pasteboardItem) draggingItem.setDraggingFrame(self.bounds, contents: self.snapshot()) self.beginDraggingSession(with: [draggingItem], event: event, source: self) return default: return } } override func mouseEntered(with _: NSEvent) { if self.isSelected { return } self.highlight() } override func mouseExited(with _: NSEvent) { if self.isSelected { return } self.dehighlight() } // Modified version of snapshot() from // https://www.raywenderlich.com/136272/drag-and-drop-tutorial-for-macos private func snapshot() -> NSImage { let pdfData = self.dataWithPDF(inside: self.bounds) guard let image = NSImage(data: pdfData) else { return NSImage() } let result = NSImage() let rect = CGRect(origin: .zero, size: image.size) result.size = rect.size result.lockFocus() self.theme.barButtonHighlight.set() rect.fill() image.draw(in: rect) result.unlockFocus() return result } } // MARK: - NSDraggingSource public extension WorkspaceToolButton { @objc(draggingSession: sourceOperationMaskForDraggingContext:) func draggingSession( _: NSDraggingSession, sourceOperationMaskFor _: NSDraggingContext ) -> NSDragOperation { .move } @objc(draggingSession: endedAtPoint:operation:) func draggingSession( _: NSDraggingSession, endedAt screenPoint: NSPoint, operation _: NSDragOperation ) { guard let pointInWindow = self.window? .convertFromScreen(CGRect(origin: screenPoint, size: .zero)) else { return } let pointInView = self.convert(pointInWindow, from: nil) // Sometimes if the drag ends, the button does not get dehighlighted. if !self.frame.contains(pointInView), !(self.tool?.isSelected ?? false) { self.dehighlight() } } } ================================================ FILE: appcast.xml ================================================ VimR with NeoVim https://twitter.com/vimrefined Most recent changes with links to updates for VimR. en v0.60.0-20260129.185351 https://twitter.com/vimrefined 20260129.185351 v0.60.0
  • Neovim 0.11.6 😀
  • Dependencides updates:
    • sparkle-project/Sparkle@2.8.1
    • Quick/Nimble@14.0.0
    • SimplyDanny/SwiftLintPlugins@0.62.2
    • apple/swift-collections@1.3.0
  • ]]>
    https://github.com/qvacua/vimr/releases/tag/v0.60.0-20260129.185351 2026-01-29T18:58:44.779598 14.8
    ================================================ FILE: appcast_snapshot.xml ================================================ VimR with NeoVim https://twitter.com/vimrefined Most recent changes with links to updates for VimR. en v0.60.0-20260129.185351 https://twitter.com/vimrefined 20260129.185351 v0.60.0
  • Neovim 0.11.6 😀
  • Dependencides updates:
    • sparkle-project/Sparkle@2.8.1
    • Quick/Nimble@14.0.0
    • SimplyDanny/SwiftLintPlugins@0.62.2
    • apple/swift-collections@1.3.0
  • ]]>
    https://github.com/qvacua/vimr/releases/tag/v0.60.0-20260129.185351 2026-01-29T18:58:44.779598 14.8
    ================================================ FILE: bin/.python-version ================================================ com.qvacua.VimR.bin ================================================ FILE: bin/README.md ================================================ ## How to use * `cd` into `${PROJECT_ROOT}/bin`, this directory. * Install pyenv and pyenv-virtuelenv. * Install Python 3.9.7 using pyenv. * Create a virtualenv with the name `com.qvacua.VimR.bin`. * Ensure that you're running the Python in the virtualenv by ```bash pyenv which python /${HOME}/.pyenv/versions/com.qvacua.VimR.bin/bin/python ``` * Install the requirements ```bash pip install -r requirements.txt ``` ================================================ FILE: bin/build_jenkins.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly branch=${branch:?"which branch to use"} declare -r -x create_gh_release=${create_gh_release:?"create Github release?"} declare -r -x upload=${upload:?"upload artifact to github release?"} declare -r -x update_appcast=${update_appcast:?"update and push appcast?"} # release.spec.sh will declare these two variables release_notes=${release_notes:?"release notes"} is_snapshot=${is_snapshot:?"is snapshot?"} check_parameters() { if [[ "${is_snapshot}" == false && -z "${marketing_version}" ]]; then echo "### No marketing_version for a release version! Exiting" exit 1 fi if [[ "${create_gh_release}" == true && -z "${release_notes}" ]]; then echo "### No release notes when creating github release! Exiting" exit 1 fi } main() { echo "### Releasing VimR started" pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null check_parameters git submodule update --init git checkout "${branch}" git pull ./bin/set_new_versions.sh echo "### Store release notes" echo "${release_notes}" > release-notes.temp.md # get the marketing version to be used as tag source release.spec.sh if [[ "${is_snapshot}" == true ]]; then tag_name="snapshot/${bundle_version}" else tag_name="${marketing_version}-${bundle_version}" fi echo "### Using ${tag_name} as tag name" echo "### Build VimR" is_jenkins=true release_spec_file=release.spec.sh ./bin/build_release.sh echo "### Commit and push the tag" git commit -am "Bump version to ${tag_name}" git tag -a "${tag_name}" -m "${tag_name}" git push git push origin "${tag_name}" if [[ "${create_gh_release}" == false ]]; then echo "### No github release, so exiting after building" exit 0 fi echo "### Publish VimR to GitHub" release_spec_file=release.spec.sh \ ./bin/publish_release.sh echo "### Commit appcast" if [[ "${update_appcast}" == true ]]; then if [[ "${is_snapshot}" == false ]]; then cp appcast.xml appcast_snapshot.xml fi git commit appcast* -m "Update appcast" git push fi popd >/dev/null echo "### Releasing VimR ended" } main ================================================ FILE: bin/build_nightly_jenkins.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly branch=${branch:?"which branch to use"} upload_artifact() { local -r vimr_artifact_path="$1" local -x GH_TOKEN GH_TOKEN=$(cat ~/.local/secrets/github.qvacua.release.token) readonly GH_TOKEN echo "### Uploading artifact" gh release upload "neovim-nightly" "${vimr_artifact_path}" --clobber echo "### Uploaded artifact" } main() { echo "### Releasing nightly VimR started" pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null git submodule update --init git tag -f neovim-nightly; git push -f origin neovim-nightly echo "### Build VimR" clean=true notarize=true ./bin/build_vimr.sh pushd ./build/Build/Products/Release >/dev/null tar cjf "VimR-nightly.tar.bz2" VimR.app upload_artifact "VimR-nightly.tar.bz2" popd >/dev/null popd >/dev/null echo "### Releasing nightly VimR ended" } main ================================================ FILE: bin/build_nvimserver.sh ================================================ #!/bin/bash set -Eeuo pipefail # This script prepares Neovim binary and the runtime files for building VimR. # For most cases, you can just download the pre-built universal Neovim releases by running # `clean=true for_dev=false ./bin/neovim/bin/download_neovim_releases.sh` # If you want to build Neovim locally, use `for_dev=true`, then, the Neovim binary will be # built for the current architecture only and using the simple `make` command. declare -r -x clean=${clean:-true} declare -r -x for_dev=${for_dev:-false} main() { pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null local -r resources_folder="./NvimView/Sources/NvimView/Resources" rm -rf "${resources_folder}/NvimServer" rm -rf "${resources_folder}/runtime" if [[ "${clean}" == true ]]; then pushd ./Neovim >/dev/null rm -rf .deps rm -rf build make distclean popd >/dev/null rm -rf "${resources_folder}/NvimServer" rm -rf "${resources_folder}/runtime" fi if [[ "${for_dev}" == true ]]; then ./bin/neovim/bin/build_neovim_for_dev.sh pushd ./Neovim/build >/dev/null local arch; arch="$(uname -m)"; readonly arch tar -xf "nvim-macos-${arch}.tar.gz" popd >/dev/null cp "./Neovim/build/nvim-macos-${arch}/bin/nvim" "${resources_folder}/NvimServer" cp -r "./Neovim/build/nvim-macos-${arch}/share/nvim/runtime" "${resources_folder}" else local neovim_release; neovim_release=$(jq -r ".neovimRelease" ./bin/neovim/resources/buildInfo.json) readonly neovim_release pushd ./Neovim >/dev/null mkdir -p build pushd ./build >/dev/null curl -LO "https://github.com/qvacua/vimr/releases/download/${neovim_release}/nvim-macos-universal.tar.bz" tar -xf nvim-macos-universal.tar.bz popd >/dev/null popd >/dev/null cp ./Neovim/build/nvim-macos-universal/bin/nvim "${resources_folder}/NvimServer" cp -r ./Neovim/build/nvim-macos-universal/share/nvim/runtime "${resources_folder}" fi # Copy VimR specific vim file to runtime/plugin folder cp "${resources_folder}/com.qvacua.NvimView.vim" "${resources_folder}/runtime/plugin" popd >/dev/null } main ================================================ FILE: bin/build_release.sh ================================================ #!/bin/bash set -Eeuo pipefail # The release spec file should export the following env vars: # is_snapshot # bundle_version # marketing_version # tag # github_release_name # release_notes readonly release_spec_file=${release_spec_file:?"path to release spec sh file (output by set_new_versions.sh script"} source "${release_spec_file}" readonly build_folder_path="./build/Build/Products/Release" readonly vimr_artifact_path="${build_folder_path}/VimR-${marketing_version}.tar.bz2" check_version() { if [[ "${is_snapshot}" == true && ! "${marketing_version}" =~ ^SNAPSHOT.* ]]; then echo "When snapshot, marketing_version should be SNAPSHOT-xyz" exit 1 fi if [[ "${is_snapshot}" == false && ! "${marketing_version}" =~ ^v.* ]]; then echo "When no snapshot, marketing_version should be like v0.35.0" exit 1 fi } build_release() { echo "### Building release" # Check whether NvimServer submodule is clean git submodule update pushd Neovim >/dev/null if [[ ! -z "$(git status --porcelain)" ]]; then echo "NvimServer submodule not clean!" exit 1 fi popd >/dev/null is_jenkins=${is_jenkins:-false} clean=true notarize=true ./bin/build_vimr.sh pushd "${build_folder_path}" >/dev/null tar cjf "VimR-${marketing_version}.tar.bz2" VimR.app popd >/dev/null echo "### Built (signed and notarized) release: ${vimr_artifact_path}" } main() { echo "vimr_artifact_path=${vimr_artifact_path}" pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null check_version build_release popd >/dev/null } main ================================================ FILE: bin/build_vimr.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly strip_symbols=${strip_symbols:-true} readonly notarize=${notarize:?"true or false"} readonly clean=${clean:?"true or false"} readonly is_jenkins=${is_jenkins:-false} build_vimr() { local -r build_path=$1 local plugin_flag="" if [[ "${is_jenkins}" == true ]]; then plugin_flag="-skipPackagePluginValidation" fi echo "### Xcodebuilding" rm -rf "${build_path}" if [[ "${clean}" == true ]]; then xcodebuild \ -configuration Release -derivedDataPath "${build_path}" \ -workspace VimR.xcworkspace -scheme VimR \ ${plugin_flag} \ clean build else xcodebuild \ -configuration Release -derivedDataPath "${build_path}" \ -workspace VimR.xcworkspace -scheme VimR \ ${plugin_flag} \ build fi } main () { pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null echo "### Building VimR" ./bin/build_nvimserver.sh local -r build_path="./build" build_vimr "${build_path}" local -r -x vimr_app_path="${build_path}/Build/Products/Release/VimR.app" if [[ "${strip_symbols}" == true ]]; then strip -rSTx "${vimr_app_path}/Contents/MacOS/VimR" strip -rSx "${vimr_app_path}/Contents/Resources/NvimView_NvimView.bundle/Contents/Resources/NvimServer" fi if [[ "${notarize}" == true ]]; then ./bin/sign_vimr.sh ./bin/notarize_vimr.sh fi echo "### VimR built in ${build_path}/Build/Products/Release/VimR.app" popd >/dev/null } main ================================================ FILE: bin/generate_autocmds.py ================================================ #!/usr/bin/env python3 import io import os import re from string import Template # Assume that we're in $REPO_ROOT/Neovim NVIM_AUEVENTS_ENUM_FILE = "./build/include/auevents_enum.generated.h" SWIFT_TEMPLATE_FILE = "../resources/autocmds.template.swift" def convert(line: str) -> tuple[str, str]: result = re.match(r"^EVENT_(.*) = (.*)", line.replace(",", "")) return result.group(1), result.group(2) def swift_autocmds(version: str, template_string: str) -> str: with io.open(NVIM_AUEVENTS_ENUM_FILE, "r") as auto_cmds_file: raw_auto_cmds = [ line.strip() for line in auto_cmds_file.readlines() if re.match(r"^EVENT_", line.strip()) ] autocmds = [convert(line) for line in raw_auto_cmds] template = Template(template_string) return template.substitute( event_cases="\n".join([f" case {event[0].lower()}" for event in autocmds]), version=version ) if __name__ == "__main__": version = os.environ["version"] with io.open(SWIFT_TEMPLATE_FILE, "r") as template: print(swift_autocmds(version, template.read())) ================================================ FILE: bin/generate_cursor_shape.py ================================================ #!/usr/bin/env python3 import io import os import re from string import Template # Assume that we're in $REPO_ROOT/Neovim NVIM_CURSOR_SHAPE_ENUM_FILE = "./src/nvim/cursor_shape.h" SWIFT_TEMPLATE_FILE = "../resources/cursor_shape.template.swift" SHAPE_NAMES = { "SHAPE_IDX_N": (0, "normal"), "SHAPE_IDX_V": (1, "visual"), "SHAPE_IDX_I": (2, "insert"), "SHAPE_IDX_R": (3, "replace"), "SHAPE_IDX_C": (4, "cmdlineNormal"), "SHAPE_IDX_CI": (5, "cmdlineInsert"), "SHAPE_IDX_CR": (6, "cmdlineReplace"), "SHAPE_IDX_O": (7, "operatorPending"), "SHAPE_IDX_VE": (8, "visualExclusive"), "SHAPE_IDX_CLINE": (9, "onCmdline"), "SHAPE_IDX_STATUS": (10, "onStatusLine"), "SHAPE_IDX_SDRAG": (11, "draggingStatusLine"), "SHAPE_IDX_VSEP": (12, "onVerticalSepLine"), "SHAPE_IDX_VDRAG": (13, "draggingVerticalSepLine"), "SHAPE_IDX_MORE": (14, "more"), "SHAPE_IDX_MOREL": (15, "moreLastLine"), "SHAPE_IDX_SM": (16, "showingMatchingParen"), "SHAPE_IDX_TERM": (17, "terminalMode"), "SHAPE_IDX_COUNT": (18, "count"), } def are_shapes_same() -> bool: with io.open(NVIM_CURSOR_SHAPE_ENUM_FILE, "r") as cursor_shape_header: shape_regex = r"^\s*(SHAPE_IDX_[A-Z]+)\s*= ([0-9]+)" shape_lines = [re.match(shape_regex, line) for line in cursor_shape_header] nvim_shapes = [m.groups() for m in shape_lines if m] return set(nvim_shapes) == set([(k, str(v[0])) for (k, v) in SHAPE_NAMES.items()]) def swift_shapes() -> str: with io.open(SWIFT_TEMPLATE_FILE, "r") as template_file: template = Template(template_file.read()) cases = "\n".join([f" case {v[1]}" for (k, v) in SHAPE_NAMES.items()]) return template.substitute(cursor_shapes=cases, version=version) if __name__ == "__main__": version = os.environ["version"] assert are_shapes_same() print(swift_shapes()) ================================================ FILE: bin/generate_sources.sh ================================================ #!/bin/bash set -Eeuo pipefail clean=${clean:?"true or false"} readonly use_committed_nvim=${use_committed_nvim:?"If true, checkout the committed version of nvim, otherwise use the workspace."} main() { echo "### Generating autocmds file." echo "* use_committed_nvim=$use_committed_nvim" pushd "$( dirname "${BASH_SOURCE[0]}" )/.." > /dev/null if [[ "${use_committed_nvim}" == true ]]; then echo "### Using the committed version of neovim." git submodule update else echo "### Using the workspace neovim." fi pushd Neovim > /dev/null major=$(grep -e "set(NVIM_VERSION_MAJOR" CMakeLists.txt | gsed -E "s/.* ([0-9]+)\)/\1/") minor=$(grep -e "set(NVIM_VERSION_MINOR" CMakeLists.txt | gsed -E "s/.* ([0-9]+)\)/\1/") patch=$(grep -e "set(NVIM_VERSION_PATCH" CMakeLists.txt | gsed -E "s/.* ([0-9]+)\)/\1/") prerelease=$(grep -e "set(NVIM_VERSION_PRERELEASE" CMakeLists.txt | gsed -E "s/.*\(.*\"(.*)\"\).*/\1/") nvim_version="v$major.$minor.$patch$prerelease" echo "### Using nvim version: $nvim_version" for_dev=true ../bin/build_nvimserver.sh version=${nvim_version} ../bin/generate_autocmds.py > "../NvimView/Sources/NvimView/NvimAutoCommandEvent.generated.swift" version=${nvim_version} ../bin/generate_cursor_shape.py > "../NvimView/Sources/NvimView/NvimCursorModeShape.generated.swift" swiftformat "../NvimView/Sources/NvimView/NvimAutoCommandEvent.generated.swift" swiftformat "../NvimView/Sources/NvimView/NvimCursorModeShape.generated.swift" popd > /dev/null clean=false ./NvimApi/bin/generate_sources.sh popd > /dev/null echo "### Successfully generated autocmds." } main ================================================ FILE: bin/neovim/bin/.gitignore ================================================ .idea ================================================ FILE: bin/neovim/bin/build_neovim.sh ================================================ #!/bin/bash set -Eeuo pipefail # This script builds Neovim with gettext for host's architecture, *no* universal build # Produces /Neovim/build/neovim-macos-$arch.tar.gz readonly clean=${clean:?"true or false"} readonly NVIM_BUILD_TYPE=${NVIM_BUILD_TYPE:-"Release"} readonly gettext_version="0.26" readonly gettext_url="https://ftp.gnu.org/pub/gnu/gettext/gettext-${gettext_version}.tar.gz" declare temp_dir; temp_dir="$(mktemp -d)"; readonly temp_dir readonly gettext_install_dir="${temp_dir}/gettext" build_gettext() { local -r -x MACOSX_DEPLOYMENT_TARGET="$1" pushd "${temp_dir}" >/dev/null curl -L "${gettext_url}" -o gettext.tar.gz tar -xzf gettext.tar.gz mkdir gettext # See https://github.com/Homebrew/homebrew-core/pull/199639 export am_cv_func_iconv_works="yes" pushd "./gettext-${gettext_version}" >/dev/null ./configure \ --prefix "${gettext_install_dir}" \ --disable-silent-rules \ --with-included-glib \ --with-included-libcroco \ --with-included-libunistring \ --with-included-libxml \ --without-emacs \ --disable-java \ --disable-csharp \ --without-git \ --without-cvs \ --without-xz make make install popd >/dev/null popd >/dev/null } build_neovim() { # slightly modified version of Neovim's Github workflow for release local -r -x MACOSX_DEPLOYMENT_TARGET=$1 local -x SDKROOT; SDKROOT=$(xcrun --sdk macosx --show-sdk-path); readonly SDKROOT # Brew's gettext does not get sym-linked to PATH export PATH="/opt/homebrew/opt/gettext/bin:/usr/local/opt/gettext/bin:${PATH}" cmake -S cmake.deps -B .deps -G Ninja \ -D CMAKE_BUILD_TYPE="${NVIM_BUILD_TYPE}" \ -D CMAKE_OSX_DEPLOYMENT_TARGET="${MACOSX_DEPLOYMENT_TARGET}" \ -D CMAKE_FIND_FRAMEWORK=NEVER cmake --build .deps # See https://matrix.to/#/!cylwlNXSwagQmZSkzs:matrix.org/$WxndooGmUtD0a4IqjnALvZ_okHw3Gb0TZJIrc77T-SM?via=matrix.org&via=gitter.im&via=envs.net for libintl cmake -B build -G Ninja \ -D CMAKE_BUILD_TYPE="${NVIM_BUILD_TYPE}" \ -D CMAKE_OSX_DEPLOYMENT_TARGET="${MACOSX_DEPLOYMENT_TARGET}" \ -D CMAKE_FIND_FRAMEWORK=NEVER \ -D LIBINTL_INCLUDE_DIR="${gettext_install_dir}/include" \ -D LIBINTL_LIBRARY="${gettext_install_dir}/lib/libintl.a" cmake --build build cpack --config build/CPackConfig.cmake } main() { # This script is located in /bin/neovim/bin and we have to go to / pushd "$(dirname "${BASH_SOURCE[0]}")/../../../" >/dev/null local deployment_target deployment_target=$(jq -r .deploymentTarget ./bin/neovim/resources/buildInfo.json) readonly deployment_target pushd ./Neovim >/dev/null echo "### Building neovim binary" if [[ "${clean}" == true ]]; then make distclean fi build_gettext "${deployment_target}" build_neovim "${deployment_target}" popd >/dev/null popd >/dev/null } main ================================================ FILE: bin/neovim/bin/build_neovim_for_dev.sh ================================================ #!/bin/bash set -Eeuo pipefail # This script builds Neovim with gettext for host's architecture, *no* universal build # Produces /Neovim/build/neovim-macos-$arch.tar.gz readonly clean=${clean:?"true or false"} readonly NVIM_BUILD_TYPE=${NVIM_BUILD_TYPE:-"Release"} build_neovim() { # slightly modified version of Neovim's Github workflow for release local -r -x MACOSX_DEPLOYMENT_TARGET=$1 local -x SDKROOT; SDKROOT=$(xcrun --sdk macosx --show-sdk-path); readonly SDKROOT # Brew's gettext does not get sym-linked to PATH export PATH="/opt/homebrew/opt/gettext/bin:/usr/local/opt/gettext/bin:${PATH}" make CMAKE_BUILD_TYPE="${NVIM_BUILD_TYPE}" cpack --config build/CPackConfig.cmake } main() { # This script is located in /bin/neovim/bin and we have to go to / pushd "$(dirname "${BASH_SOURCE[0]}")/../../../" >/dev/null local deployment_target deployment_target=$(jq -r .deploymentTarget ./bin/neovim/resources/buildInfo.json) readonly deployment_target pushd ./Neovim >/dev/null echo "### Building neovim binary" if [[ "${clean}" == true ]]; then make distclean fi build_neovim "${deployment_target}" popd >/dev/null popd >/dev/null } main ================================================ FILE: bin/neovim/bin/build_universal_neovim.sh ================================================ #!/bin/bash set -Eeuo pipefail # This script creates a universal build, incl. Treesitter `so`s. The Treesitter # libs are put under the `runtime` folder instead of under `lib`. # # It expects to find the following files in the workspace root: # - nvim-macos-x86_64.tar.gz # - nvim-macos-arm64.tar.gz # It will produce the following in the workspace root: # - nvim-macos-universal.tar.bz # # To be used in the context of Github actions main() { # This script is located in /bin/neovim/bin and we have to go to / pushd "$(dirname "${BASH_SOURCE[0]}")/../../../" >/dev/null tar -xf nvim-macos-x86_64.tar.gz tar -xf nvim-macos-arm64.tar.gz mkdir -p "nvim-macos-universal" local universal_folder_path; universal_folder_path="$(pwd)/nvim-macos-universal"; readonly universal_folder_path echo "${universal_folder_path}" ls -la mkdir -p "${universal_folder_path}/bin" cp -r nvim-macos-arm64/share "${universal_folder_path}" mkdir -p "${universal_folder_path}/share/nvim/runtime/parser" lipo -create nvim-macos-arm64/bin/nvim nvim-macos-x86_64/bin/nvim \ -output "${universal_folder_path}/bin/nvim" for f in nvim-macos-arm64/lib/nvim/parser/*; do f="${f%/}" local filename="${f##*/}" lipo -create "nvim-macos-arm64/lib/nvim/parser/${filename}" \ "nvim-macos-x86_64/lib/nvim/parser/${filename}" \ -output "${universal_folder_path}/share/nvim/runtime/parser/${filename}" done tar -cjf nvim-macos-universal.tar.bz nvim-macos-universal popd >/dev/null } main ================================================ FILE: bin/neovim/resources/NvimServer.entitlements ================================================ com.apple.security.cs.allow-jit com.apple.security.cs.allow-unsigned-executable-memory com.apple.security.cs.disable-executable-page-protection com.apple.security.cs.disable-library-validation ================================================ FILE: bin/neovim/resources/buildInfo.json ================================================ { "deploymentTarget": "14", "neovimRelease": "neovim-v0.11.6-20260129.182851" } ================================================ FILE: bin/notarize_vimr.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly vimr_app_path=${vimr_app_path:?"Path to VimR.app"} main() { pushd "${vimr_app_path}/.." >/dev/null echo "### Notarizing" ditto -c -k --keepParent VimR.app VimR.app.zip echo "#### Notarizing" xcrun notarytool submit VimR.app.zip \ --keychain-profile "apple-dev-notar" \ --wait popd >/dev/null pushd "${vimr_app_path}/.." >/dev/null xcrun stapler staple VimR.app echo "### Notarization finished" popd >/dev/null } main ================================================ FILE: bin/pre-commit.py ================================================ #!/usr/bin/env python3 from typing import List from shelly import sh, shout RELEVANT_PATHS = [ "Commons/Sources/Commons", "Ignore/Sources/Ignore", "NvimApi/Sources/NvimApi", "NvimView/Sources/NvimApi", "Tabs/Sources/Tabs", "VimR/VimR", "Workspace/Sources/Workspace", ] def lint(changed_files: List[str]) -> None: for path in RELEVANT_PATHS: if any(file.startswith(path) for file in changed_files): sh(["swiftlint", path]) def format(changed_files: List[str]) -> None: for file in [f for f in changed_files if f.endswith(".swift")]: sh(["swiftformat", file]) sh(["git", "add", file]) if __name__ == "__main__": changed_files = shout("git diff --cached --name-only --diff-filter=ACMR").splitlines() lint(changed_files) format(changed_files) ================================================ FILE: bin/publish_release.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly create_gh_release=${create_gh_release:?"true or false"} readonly upload=${upload:?"true or false"} readonly update_appcast=${update_appcast:?"true or false"} # The release spec file should export the following env vars: # is_snapshot # bundle_version # marketing_version # tag # github_release_name # release_notes readonly release_spec_file=${release_spec_file:?"path to release spec sh file (output by set_new_versions.sh script"} source "${release_spec_file}" readonly build_folder_path="./build/Build/Products/Release" readonly vimr_artifact_path="${build_folder_path}/VimR-${marketing_version}.tar.bz2" readonly GH_REPO="qvacua/vimr" export GH_REPO prepare_bin() { pushd ./bin >/dev/null python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt popd >/dev/null } check_gh_release_present() { if [[ "${upload}" == true ]]; then if gh release list | grep "${tag}"; then echo "Release with tag ${tag} found" else echo "Release with tag ${tag} does not exist!" exit 1 fi fi } create_gh_release() { if [[ "${is_snapshot}" == true ]]; then gh release create "${tag}" \ --discussion-category "general" \ --prerelease \ --title "${github_release_name}" \ --notes "${release_notes}" else gh release create "${tag}" \ --discussion-category "general" \ --title "${github_release_name}" \ --notes "${release_notes}" fi } upload_artifact() { echo "### Uploading artifact" gh release upload "${tag}" "${vimr_artifact_path}" echo "### Uploaded artifact" } update_appcast_file() { ./bin/set_appcast.py \ "${vimr_artifact_path}" \ "${bundle_version}" \ "${marketing_version}" \ "${tag}" \ "${is_snapshot}" local app_cast_file_name="appcast.xml" if [[ "${is_snapshot}" == true ]]; then app_cast_file_name="appcast_snapshot.xml" fi readonly app_cast_file_name cp "${build_folder_path}/${app_cast_file_name}" . echo "### ${app_cast_file_name} updated. Commit and push" } main() { echo "create_gh_release=${create_gh_release} \\" echo "upload=${upload} update_appcast=${update_appcast} \\" echo "vimr_artifact_path=${vimr_artifact_path}" pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null prepare_bin if [[ "${create_gh_release}" == false ]]; then echo "### No github release, exiting" exit 0 fi local -x GH_TOKEN GH_TOKEN=$(cat ~/.local/secrets/github.qvacua.release.token) readonly GH_TOKEN create_gh_release if [[ "${upload}" == true ]]; then # Give GitHub some time. sleep 5 check_gh_release_present upload_artifact fi if [[ "${update_appcast}" == true ]]; then # Sometimes GitHub is not yet up-to-date with the uploaded asset. sleep 5 update_appcast_file fi popd >/dev/null } main ================================================ FILE: bin/requirements.txt ================================================ requests Markdown ================================================ FILE: bin/set_appcast.py ================================================ #!/usr/bin/env python3 # pip3 install requests # pip3 install Markdown # We use python of brew due to some pip packages. import io import json import subprocess import sys from datetime import datetime from string import Template import markdown import requests SIGN_UPDATE = "./build/SourcePackages/artifacts/sparkle/Sparkle/bin/sign_update" file_path = sys.argv[1] bundle_version = sys.argv[2] marketing_version = sys.argv[3] tag_name = sys.argv[4] is_snapshot = True if len(sys.argv) > 5 and sys.argv[5] == "true" else False file_signature = subprocess.check_output([SIGN_UPDATE, file_path]).decode("utf-8").strip() appcast_template_file = open("resources/appcast_template.xml", "r") appcast_template = Template(appcast_template_file.read()) appcast_template_file.close() release_response = requests.get( "https://api.github.com/repos/qvacua/vimr/releases/tags/{0}".format(tag_name) ) release_json = json.loads(release_response.content) title = release_json["name"] download_url = release_json["assets"][0]["browser_download_url"] release_notes_url = release_json["html_url"] release_notes = release_json["body"] appcast = appcast_template.substitute( title=title, release_notes=markdown.markdown(release_notes), release_notes_link=release_notes_url, publication_date=datetime.now().isoformat(), file_url=download_url, bundle_version=bundle_version, marketing_version=marketing_version, signature_output=file_signature, ) appcast_file_name = "appcast_snapshot.xml" if is_snapshot else "appcast.xml" with io.open("build/Build/Products/Release/{0}".format(appcast_file_name), "w+") as appcast_file: appcast_file.write(appcast) ================================================ FILE: bin/set_new_versions.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly is_snapshot=${is_snapshot:?"true or false"} marketing_version=${marketing_version:-""} main() { if [[ "${is_snapshot}" == false && -z "${marketing_version}" ]]; then echo "When no snapshot, you have to set 'marketing_version', eg v0.38.1" if [[ "${marketing_version}" =~ ^v.* ]]; then echo "### marketing_version must not begin with v!" exit 1 fi exit 1 fi echo "### Setting versions of VimR" pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null local bundle_version bundle_version="$(date "+%Y%m%d.%H%M%S")" readonly bundle_version if [[ "${is_snapshot}" == true ]]; then marketing_version="SNAPSHOT-${bundle_version}" fi pushd VimR >/dev/null agvtool new-version -all "${bundle_version}" agvtool new-marketing-version "${marketing_version}" popd >/dev/null popd >/dev/null echo "### Set versions of VimR" local tag local github_release_name local version_marker if [[ "${is_snapshot}" == true ]]; then tag="snapshot/${bundle_version}" github_release_name="${marketing_version}" version_marker="snapshot" else tag="v${marketing_version}-${bundle_version}" github_release_name="$tag" version_marker="release" marketing_version="v${marketing_version}" fi readonly tag readonly github_release_name readonly version_marker readonly marketing_version local output output=$(cat <<-END declare -r -x is_snapshot=${is_snapshot} declare -r -x bundle_version=${bundle_version} declare -r -x marketing_version=${marketing_version} declare -r -x tag=${tag} declare -r -x github_release_name=${github_release_name} declare -r -x release_notes=\$(cat release-notes.temp.md) # Add release notes to release-notes.temp.md and issue # create_gh_release=true upload=true update_appcast=true release_spec_file=release.spec.sh ./bin/build_release.sh END ) readonly output local output_exec output_exec=$(cat <<-END create_gh_release=true upload=true update_appcast=true release_spec_file=release.spec.sh ./bin/build_release.sh END ) readonly output_exec echo "Release notes" > release-notes.temp.md echo "${output}" > "release.spec.sh" echo "${output_exec}" > "build_release.temp.sh" chmod +x "build_release.temp.sh" echo "### Tag, commit and push with ${tag}." echo "Then, add release notes to release-notes.temp.md." echo "" echo "### Use the following to build a release:" echo "" echo "release_spec_file=release.spc.sh \\" echo "create_gh_release=true upload=true update_appcast=true \\" echo "./bin/build_release.sh" echo "" echo "OR do build_release.temp.sh" } main ================================================ FILE: bin/setup_markdown_css.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly version="5.0.0" readonly url="https://github.com/sindresorhus/github-markdown-css/archive/refs/tags/v${version}.tar.gz" readonly ref_md5="91db7943196075d6790c76fa184591d0" main() { pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null local existing_md5; existing_md5="$(md5 -q ./VimR/VimR/markdown/github-markdown.css || echo "no file")"; readonly existing_md5 if [[ "${existing_md5}" == "${ref_md5}" ]]; then echo "### CSS already exists, exiting" popd >/dev/null exit 0 fi echo "### Downloading CSS and copying" local temp_dir; temp_dir="$(mktemp -d)"; readonly temp_dir echo "${temp_dir}" pushd "${temp_dir}" >/dev/null curl -s -L "${url}" -o "css.tar.gz" tar -xf css.tar.gz popd >/dev/null cp "${temp_dir}/github-markdown-css-${version}/github-markdown.css" ./VimR/VimR/markdown popd >/dev/null } main ================================================ FILE: bin/shelly.py ================================================ import shlex import subprocess from typing import List def sh(cmd: str | List[str], check: bool = True) -> int: """Execute a shell command and return its stdout output. WARNING: This function does NOT support shell features like wildcards. """ args = cmd if isinstance(cmd, str): args = shlex.split(cmd) return subprocess.run(args, check=check).returncode def shout(cmd: str | List[str], check: bool = True) -> str: """Execute a shell command and return its stdout output. WARNING: This function does NOT support shell features like wildcards. """ args = cmd if isinstance(cmd, str): args = shlex.split(cmd) return subprocess.run(args, check=check, text=True, capture_output=True).stdout ================================================ FILE: bin/sign_vimr.sh ================================================ #!/bin/bash set -Eeuo pipefail readonly vimr_app_path=${vimr_app_path:?"Path to VimR.app"} readonly identity="Developer ID Application: Tae Won Ha (H96Q2NKTQH)" remove_sparkle_xpc () { # VimR is not sandboxed, so, remove the XPCs # https://sparkle-project.org/documentation/sandboxing/#removing-xpc-services rm -rf "${vimr_app_path}/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/org.sparkle-project.InstallerLauncher.xpc" rm -rf "${vimr_app_path}/Contents/Frameworks/Sparkle.framework/Versions/B/XPCServices/org.sparkle-project.Downloader.xpc" } main () { pushd "$(dirname "${BASH_SOURCE[0]}")/.." >/dev/null echo "### Signing VimR" local entitlements_path entitlements_path=$(realpath ./bin/neovim/resources/NvimServer.entitlements) readonly entitlements_path remove_sparkle_xpc codesign --verbose --force -s "${identity}" --timestamp --options=runtime \ "${vimr_app_path}/Contents/Frameworks/Sparkle.framework/Versions/B/Autoupdate" codesign --verbose --force -s "${identity}" --deep --timestamp --options=runtime \ "${vimr_app_path}/Contents/Frameworks/Sparkle.framework/Versions/B/Updater.app" codesign --verbose --force -s "${identity}" --options=runtime \ "${vimr_app_path}/Contents/Frameworks/Sparkle.framework" codesign --verbose --force -s "${identity}" --timestamp --options=runtime \ --entitlements="${entitlements_path}" \ "${vimr_app_path}/Contents/Resources/NvimView_NvimView.bundle/Contents/Resources/NvimServer" for f in "${vimr_app_path}/Contents/Resources/NvimView_NvimView.bundle/Contents/Resources/runtime/parser"/*; do codesign --verbose --force -s "${identity}" --timestamp --options=runtime \ "${f}" done codesign --verbose --force -s "${identity}" --deep --timestamp --options=runtime \ "${vimr_app_path}" echo "### Signed VimR" echo "### Use 'spctl -a -vvvv ${vimr_app_path}' to verify the signing." popd >/dev/null } main ================================================ FILE: ci/README.md ================================================ * Install Jenkins (via brew) * Install plugins - Job DSL - AnsiColor * Set the `git` binary in *Manage Jenkins* -> *Global Tool Configuration* * Set `PATH` for Jenkins (necessary for e.g. `git-lfs`) in *Manage Jenkins* -> *Configure System* -> *Global properties* -> *Environment variables" * Add a free style job `vimr_setup_jobs` with one step to process a Job DSL file at `ci/create_build_job.groovy`. - Approve script at *Manager Jenkins* -> *In-process Script Approval*. --- To test the job creation using local git repository, use `file:///Users/.../vimr-repo` as repository and add "-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true" to `/opt/homebrew/opt/jenkins/bin/jenkins`: ```bash #!/bin/bash export JAVA_HOME="${JAVA_HOME:-/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home}" exec "${JAVA_HOME}/bin/java" "-Dhudson.plugins.git.GitSCM.ALLOW_LOCAL_CHECKOUT=true" "-jar" "/opt/homebrew/Cellar/jenkins/2.435/libexec/jenkins.war" "$@" ``` ================================================ FILE: ci/create_build_job.groovy ================================================ // Install the following plugins in addition to recommended plugins when installing Jenkins // - Job DSL // - AnsiColor def releaseVimRJob = freeStyleJob('vimr_release') def nightlyVimRJob = freeStyleJob('vimr_nightly') releaseVimRJob.with { description 'Release a new version' logRotator { numToKeep(10) } parameters { stringParam('marketing_version', null, 'Eg "0.34.0". If "is_snapshot" is unchecked, you have to enter this.') booleanParam('is_snapshot', true) stringParam('branch', 'master', 'Branch to build; defaults to master') textParam('release_notes', null, 'Release notes') booleanParam('create_gh_release', false, 'Publish this release to Github?') booleanParam('upload', false, 'Upload VimR to Github?') booleanParam('update_appcast', false) } scm { git { remote { url('git@github.com:qvacua/vimr.git') } branch('*/${branch}') } } wrappers { colorizeOutput() } steps { shell('./bin/build_jenkins.sh') } publishers { archiveArtifacts { pattern('build/Build/Products/Release/**, release.spec.sh, release-notes.temp.md, appcast*, build_release.temp.sh') } } } nightlyVimRJob.with { description 'Release nightly' logRotator { numToKeep(10) } parameters { stringParam('branch', 'update-neovim', 'Branch to build; defaults to update-neovim') } scm { git { remote { url('git@github.com:qvacua/vimr.git') } branch('*/${branch}') } } wrappers { colorizeOutput() } steps { shell('./bin/build_nightly_jenkins.sh') } publishers { archiveArtifacts { pattern('build/Build/Products/Release/**') } } } ================================================ FILE: docs/notes-on-cocoa-text-input.md ================================================ # Some Notes on Cocoa's Text Input To use Cocoa's text input system, e.g. the 2-Set Korean input, your view has to implement the [NSTextInputClient](https://developer.apple.com/reference/appkit/nstextinputclient) protocol. Apple's documentation is very scarce, so we're writing down some of our findings. ## Simple Case For simple cases like `ü`, which can be entered by `Opt-u` + `u`, it's quite straightforward: 1. Enter `Opt-u`. 1. `hasMarkedText()` is called to check whether we already have marked text. 1. `setMarkedText("¨", selectedRange NSRange(1, 0), replacementRange: NSRange(NSNotFound, 0))` is called. In this case the first argument is an `NSString`, `selectedRange` tells us where to put the cursor relative to the string: in this case after `¨`. The range `replacemenRange` tells us whether the string should replace some of the existing text. In this case no replacement is required. 1. Enter `u`. 1. `hasMarkedText()` is called again. 1. `insertText("ü", replacementRange: NSRange(NSNotFound, 0))` is called to finalize the input. It seems that for the replacement range `(NSNotFound, 0)` we should replace the previously marked text with the final string. So in this case we must first delete `¨` and insert `ü`. ## Korean (Hangul, 한글) Let's move to a bit more complicated case: Korean. In this case more methods are involved: * `selectedRange()`: all other additional methods seem to rely on this method. Ideally we should return `NSRange(CursorPosition, 0)` when nothing is selected or `NSRange(SelectionBegin, SelectionLength)` when there's a selection. * `attributedSubstringForProposedRange(_:actualRange:)`: for entering only Hangul, this method can be ignored. Let's assume we want to enter `하태원`: (`hasMarkedText()` is called here and there...) 1. `selectedRange()` is called multiple times when changing the input method from US to Korean. This is also the case when starting the app with Korean input selected. 1. Enter `ㅎ`. 1. `setMarkedText("ㅎ", selectedRange: NSRange(1, 0) replacementRange:NSRange(NotFound, 0))` is called. 1. Enter `ㅏ`. 1. `attributedSubstringForProposedRange(_:actualRange:)` and `selectedRange()` are called multiple times: again, for only Hangul, ignorable. 1. `setMarkedText("하", selectedRange: NSRange(1, 0), replacementRange: NSRange(NotFound, 0))` is called: delete `ㅎ` and insert `하`; not yet finalized. 1. Enter `ㅌ` 1. `attributedSubstringForProposedRange(_:actualRange:)` and `selectedRange()` are called multiple times: ignore. 1. `setMarkedText("핱", selectedRange: NSRange(1, 0), replacementRange: NSRange(NotFound, 0))` is called: delete `하` and insert `핱`; not yet finalized. 1. Enter `ㅐ` 1. `attributedSubstringForProposedRange(_:actualRange:)` and `selectedRange()` are called multiple times: ignore. 1. `setMarkedText("하", selectedRange: NSRange(1, 0), replacementRange: NSRange(NotFound, 0))` is called: delete `핱` and insert `하`; not yet finalized. 1. `insertText("하", replacementRange: NSRange(NotFound, 0))` is called to finalize the input of `하`. 1. `attributedSubstringForProposedRange(_:actualRange:)` and `selectedRange()` are called multiple times: ignore. 1. `setMarkedText("태", selectedRange: NSRange(1, 0), replacementRange: NSRange(NotFound, 0))` is called: Since the replacement range is `NotFound`, append the marked text `태` to the freshly finalized `하`. 1. ... ## Hanja (한자) Let's consider the even more complicated case: Hanja in Korean. In this case the `selectedRange()` and `attributedSubstringForProposedRange(_:actualRange:)` play a vital role and also * `firstRectForCharacterRange(_:actualRange)`: this method is used to determine where to show the Hanja popup. The character range is determined by `selectedRange()`. Let's assume we want to enter `河`: (again `hasMarkedText()` is called here and there...) 1. Enter `ㅎ`. 1. `setMarkedText("ㅎ", selectedRange: NSRange(1, 0) replacementRange:NSRange(NotFound, 0))` is called. 1. Enter `ㅏ`. 1. `attributedSubstringForProposedRange(_:actualRange:)`, `selectedRange()` and `hasMarkedText()` are called multiple times: again, for only Hangul, ignorable. 1. `setMarkedText("하", selectedRange: NSRange(1, 0), replacementRange: NSRange(NotFound, 0))` is called: delete `ㅎ` and insert `하`; not yet finalized. 1. Enter `Opt-Return`. 1. `setMarkedText("하", selectedRange: NSRange(1, 0), replacementRange: NSRange(NotFound, 0))` is called again. 1. `selectedRange()` is called: here we should return a range which can be consistently used by `attributedSubstringForProposedRange(_:actualRange)` and `firstRectForCharacterRange(_:actualRange)`. 1. `insertText("하", replacementRange: NSRange(NotFound, 0))` is called even we are not done yet... So our view thinks we finalized the input of `하`. 1. `attributedSubstringForProposedRange(_:actualRange)` is called multiple times to get the Hangul syllable to replace with Hanja. The proposed range can be very different in each call. 1. Only if the range from `selectedRange()` could be somehow consistently used in `attributedSubstringForProposedRange(_:actualRange)`, then the Hanja popup is displayed. Otherwise we get the selector `insertNewlineIgnoringFieldEditor` in `doCommandBySelector()`. 1. `setMarkedText("下" , selectedRange: NSRange(1, 0), replacementRange: NSRange(1, 1))` is called: the replacement range is not `NotFound` which means that we first have to delete the text in the given range, in this case the finalized `하` and then append the marked text. 1. Selecting different Hanja calls the usual `setMarkedText(_:selectedRange:actualRange)` and `Return` finalizes the input of `河`. ## Chinese Pinyin suppose we want to enter 中国 1. we should enter the pinyin `zhongguo`, then `` to confirm it. 2. each char input triggers: setMarkedText, markedRange, firstRect, attributedSubstringForProposedRange 3. finally setMarkedText("zhong guo", selectedRange: NSRange(10, 0), replacementRange: NSRange(NotFound, 0)) iscalled: 4. then after `` enter, insertText("中国", replacementRange: NSRange(NotFound, 0)) is called 5. many selectedRange and attributedSubstring(forProposedRange:actualRange:) calls. this seems right simple. but when in markedtext state(before confirming it), 1. we can use number to select other candidates 2. we can use `=`, `-`, ``, ``, ``, `` to choose candidate, and vim shouldn't handle it. 3. we can use ``, `` to move in marked text, and insert char in middle of markedText. even complicate, the move is not by char, but by word. each marked text or marked cursor changes, setMarkedText will called, with selectedRange point to the marked cursor position(may be middle, not the text end) so these key shouldn't be handle by vim directly when in marked text state. and finally we confirmed all markedtext, then a `insertText` will be called ## Other Writing System Not a clue, since I only know Latin alphabet and Korean (+Hanja)... ================================================ FILE: resources/appcast_template.xml ================================================ VimR with NeoVim https://twitter.com/vimrefined Most recent changes with links to updates for VimR. en ${title} https://twitter.com/vimrefined ${bundle_version} ${marketing_version} ${release_notes_link} ${publication_date} 14.8 ================================================ FILE: resources/autocmds.template.swift ================================================ // Auto generated for nvim ${version} // See bin/generate_autocmds.py enum NvimAutoCommandEvent: String { ${event_cases} } ================================================ FILE: resources/cursor_shape.template.swift ================================================ // Auto generated for nvim ${version} // See bin/generate_cursor_shape.py public enum CursorModeShape: String { ${cursor_shapes} } ================================================ FILE: resources/release-notes.md ================================================ # Next * Neovim 0.11.6 😀 * Dependencides updates: - sparkle-project/Sparkle@2.8.1 - Quick/Nimble@14.0.0 - SimplyDanny/SwiftLintPlugins@0.62.2 - apple/swift-collections@1.3.0 # 0.59.3-20251222.155246 * GH-1141: Fix Cmd+Shift+W closing only the current tab instead of the window. Thanks @rainux for the PR! * GH-1144: Persist cleared shortcuts instead of restoring defaults. Thanks @rainux for the PR! # 0.59.2-20251201.200738 * Slight performance improvement. # 0.59.1-20251127.190300 * Slight performance improvement. * Minimum macOS bumped to macOS 14. # 0.59.0-20251103.194245 * Neovim 0.11.5 😀 # 0.58.0-20251013.211150 * Add option to set the default `NVIM_APPNAME` and to open new window with custom `NVIM_APPNAME` (⌘⇧N) # 0.57.3-20251011.181129 * Slight performance improvement. * Dependencies updates: - Quick/Nimble@13.8.0 - sparkle-project/Sparkle@2.8.0 # 0.57.2-20251005.154642 * Slight performance improvement. # 0.57.1-20250921.204618 * Slight performance improvement. # 0.57.0-20250901.212156 * Neovim 0.11.4 😀 * Dependencies updates: - apple/swift-collections@1.2.1 - sparkle-project/Sparkle@2.7.1 # 0.56.1-20250725.172504 * Fix universal build issue * GH-1117: Bug fix re. IME; Thanks @wmil for the PR! # v0.56.0-20250723.181258 * Migration to Swift 6: Use Swift's `async/await` instead of RxSwift. * ⚠️ Complex input methods, e.g., CJK input, are not working correctly since some time. # v0.55.0-20250713.101600 * Neovim 0.11.3 😀 # 0.54.0-20250531.222551 * Neovim 0.11.2 😀 # 0.53.0-20250430.152427 * Neovim 0.11.1 😀 # 0.52.0-20250401.183326 * Neovim 0.11.0 😀 * Dependencies updates: - ReactiveX/RxSwift@6.9.0 - sparkle-project/Sparkle@2.7.0 # 0.51.1-20250215.143933 * GH-1095: Fix: option as meta when control and command are pressed; Thanks @gaelph for the PR! # 0.51.0-20250129.234141 * Neovim 0.10.4 😀 # 0.50.0-20241224.155723 * Neovim 0.10.3 😀 * Dependencies updates: - qvacua/MessagePack.swift@4.1.0 - ReactiveX/RxSwift@6.8.0 # 0.49.0-20241006.202133 * Neovim 0.10.2 😀 # 0.48.1-20240928.193147 * Bugfix: `lcd/cwd` fix. * Dependencies updates: - sparkle-project/Sparkle@2.7.4 - Quick/Nimble@13.4.0 - apple/swift-collections@1.1.2 # 0.48.0-20240727.082947 * Neovim 0.10.1 😀 # 0.47.5-20240630.155444 * GH-1078: Fix lcd/tcd. Thanks @shanesmith for the PR! # 0.47.4-20240626.190016 * GH-1075: Fix "E1502: Lua failed to grow stack to 4001". Thanks @shanesmith for the PR! * Dependencies updates: - sparkle-project/Sparkle@2.7.3 - apple/swift-collections@1.1.1 # v0.47.3-20240616.090032 * GH-1072: Match the tab colors 1:1 with Neovim's `colorscheme`; thanks @s-daveb for the PR! * GH-1073: Scroll the window content instead of moving the cursor; thanks @shanesmith for the PR! # v0.47.2-20240531.221846 * Always use live resizing * Dependencies updates: - sparkle-project/Sparkle@2.7.2 - ReactiveX/RxSwift@6.7.1 # v0.47.1-20240528.171603 * Neovim 0.10.0 😀 - 0.47.0 did not contain the generated API methods for Neovim 0.10.0... # v0.47.0-20240528.165939 * Neovim 0.10.0 😀 # v0.46.2-20240517.102525 * GH-1059: Improved coloring of custom tabs; thanks @s-daveb for the PR! # v0.46.1-20240426.143700 * Properly include `libintl` such that for example `:languge` works. * Bugfix: Filetype detection issue * Dependencies updates: - sparkle-project/Sparkle@2.6.0 - Quick/Nimble@13.3.0 - apple/swift-collections@1.1.0 # v0.46.0-20240102.233758 * Neovim 0.9.5 😀 * Improve rendering performance slightly. # v0.45.5-20231223.144003 * Bugfix: When there are modified buffers, VimR hangs when closing the window (or `:quit`ting Neovim) * Fix a memory leak # v0.45.4-20231222.171428 * Reduce memory usage, esp., when scrolling. # v0.45.3-20231219.174252 * Add `enable-debug-menu` preferences item to enable Debug menu item. * Fix a synchronization issue in MsgpackRpc. * Fix a memory leak # v0.45.2-20231214.165334 * Removed parallel typesetting option since single threaded typesetting seems to be faster. # v0.45.1-20231211.195158 * VimR now uses the release Neovim version 0.9.4 and is compatible with external Neovim binary version 0.9.x. * Minium macOS requirement is now Monterey (v12). * GH-1026: Bugfix: Scroll direction system setting is not respected when trackpad-scrolling. * GH-1022: Bugfix: Custom Neovim binary setting is not stored correctly and the alert for incompatible version does not show up. * Dependencies updates: - sparkle-project/Sparkle@2.5.1 - Removed: Kitura/BlueSocket # 0.45.0-20231122.130444 * VimR is not using custom build binary based on `libnvim` anymore. Thanks to GH-1015 by [georgeharker](https://github.com/georgeharker), VimR now uses stock Neovim and can even use external Neovim binary (from v0.10.0 on). * Neovim 0.10.0-dev which means Neovim itself may have some rough edges. * Minimum macOS requirement is now Ventura (v13). * Fix VimRSetCharacterspacing: GH-1014 * Add basic file handling to the filebrowser: GH-1005 * Provide neovim original commandline interface: GH-1003 * Add an option for custom Markdown processor: GH-745 * Dependencies updates: - ReactiveX/RxSwift@6.6.0 - sparkle-project/Sparkle@2.5.0 - apple/swift-collections@1.0.5 - Quick/Nimble@13.0.0 # 0.44.0-20230103.174333 * Neovim 0.8.2 😀 * Reduce app size (~14MB) by using `strip` on VimR binary. * Dependencies updates - Kitura/BlueSocket@2.0.4 - sparkle-project/Sparkle@2.3.1 # 0.43.0-20221115.195322 * Neovim 0.8.1 😀 * Dependencies updates: - Kentzo/ShortcutRecorder@3.4.0 - sparkle-project/Sparkle@2.3.0 # 0.42.2-20220913.230838 * Improve rendering performance. # 0.42.1-20220910.153746 * Bugfix: Memory leak (custom tabs). # 0.42.0-20220703.104316 * Add `VimRRefreshFileBrowser` and `VimRRevealCurrentBufferInFileBrowser` functions. Thanks @jaanauati for the PR! * Include `libintl` again. # 0.41.2-20220628.220813 * Bugfix: Sometimes macOS returns a weird locale, e.g., `en_DE.UTF-8`, which Neovim does not understand. # 0.41.1-20220628.205401 * Skipping the version # 0.41.0-20220626.182832 * Neovim 0.7.2 😀 # 0.40.0-20220618.161750 * Improved trackpad scrolling sensitivity (removed the option for customizing the sensitivity). Thanks @tsung-ju for the PR! * Refactor open quickly: - Use [fzy](https://github.com/jhawthorn/fzy) instead of [ccls](https://github.com/MaskRay/ccls) - Replace [The Silver Searcher](https://github.com/ggreer/the_silver_searcher)'s ignore mechanism with own implementation in Swift using [wildmatch](https://github.com/davvid/wildmatch) * Dependencies updates - Quick/Nimble@10.0.0 - qvacua/misc.swift@0.0.1 # 0.39.0-20220416.182927 * Neovim 0.7.0 😀 * GH-922: Add an option to set font smoothing. * GH-928: Bugfix: Files containing some special characters in their names cannot be opened. # 0.38.2-20220322.180037 * GH-923: Bugfix: Input method auto-switch is not handled correctly. Thanks @SolaWing for the PR! * Dependencies updates: - sparkle-project/Sparkle@2.1.0 # 0.38.1-20220319.090018 * GH-919: Bugfix: The CLI tool `vimr` hangs. Thanks @archoversight for the PR! # 0.38.0-20220317.192248 * GH-914: Add option to open files from applications in current window. Thanks @SolaWing for the PR! # 0.37.1-20220311.174922 * GH-913: Bugfix: Spaces in the file names are not correctly handled by `vimr`. Thanks @edgarcosta for the PR! # 0.37.0-20220308.223757 * GH-900: Auto-switch to an ASCII-compatible input method when entering the Normal mode and switch back to the last used input method when re-entering the Insert mode. Thanks @georgealbert for the PR! * GH-899: The CLI tool `vimr` now uses `python3`. Thanks @imajes for the PR! * Dependencies updates: - ReactiveX/RxSwift@6.5.0 # 0.36.1-20220212.162106 * GH-895: Add support for right and middle mouse buttons. Thank you @atishay! * GH-880: Copying non-ASCII characters results in garbled text. # 0.36.0-20220102.161018 * Neovim 0.6.1 😀 * GH-876: Forward `Cmd-.` to Neovim. Thank you @imkerberos! * GH-881: Make the `ESC` key cancel "Not yet saved"-dialogs. Thank you @jasonm! * GH-874: Make Chinese input possible (and simplify input method handling in general), thank you very much, @SolaWing! * GH-805 (GH-415): Vertically center-align text. Thank you @apaleslimghost! * Improve menu item key equivalent handling. * Dependencies updates: - sindresorhus/github-markdown-css@5.0.0 # 0.35.0-20211105.213803 * Universal binary! * Neovim 0.5.1 😀 * GH-832: Re-revert neovim launching code * GH-750: Search highlight displays incorrectly for gui=reverse: Thanks @rluba for the PR! * GH-349: First versino of custom tabs. If they does not work well, you can turn it off in the Appearance preferences. * GH-804: Configurable cursor shapes and color: Thank you @cypheon! * GH-812: Allow all fonts, but warn when variable width font is selected. * Do not hard-code `${LANG}` environment variable to `en_US.UTF-8`. * Replace FontAwesome with [Material Icons](https://github.com/qvacua/material-icons). * GH-830: Support `guifont` option (fixes GH-779). Thank you @Shirk! * Revert to old launching logic (first launch the login shell, then launch NvimServer). * Adapt title bar rendering on Big Sur. * Dependencies updates: - IBM-Swift/BlueSocket@2.0.2 - PureLayout/PureLayout@3.1.9 - Quick/Nimble@9.2.1 - ReactiveX/RxSwift@6.2.0 - httpswift/swifter@1.5.0 - iwasrobbed/Down@0.11.0 -> johnxnguyen/Down@0.11.0 - sparkle-project/Sparkle@1.27.0 # 0.34.0-355 * Neovim 0.4.4 * Improved pasting. # 0.33.1-354 * Bugfix: The Emoji popup is sometimes misplaced. * GH-762: Bugfix: parinfer-rust dylib does not load. * Dependencies updates: - PureLayout/PureLayout@3.1.6 - a2/MessagePack.swift@4.0.0 - Kentzo/ShortcutRecorder@3.2 - eonil/FSEvents@0.1.7 - Quick/Nimble@8.1.1 # 0.33.0-351 * GH-799: Bugfix: VimR sometimes uses High-CPU usage for apparent reason. * GH-775: Use the colors of the selected color scheme for the markdown preview. * GH-792: Use the macOS Font Panel to select the font: Thank you @apaleslimghost! - If you select a variable width font, the rendering will be broken. * GH-786: Improve space key handling which enables `` to be mapped: Thank you @cypheon! * Improve drawing performance. * Dependencies updates: - ggreer/the_silver_searcher@a509a81 - sparkle-project/Sparkle@1.23.0 - ReactiveX/RxSwift@5.1.1 # 0.32.0-344 We updated the library ShortcutRecorder to the latest version. By doing so, we store the shortcuts in a different format than before. This means that after you launched this version, old versions will not be compatible with the stored shortcuts. To delete the stored shortcuts, you can use `defaults delete com.qvacua.VimR.menuitems` in Terminal. * Show only font family names of monospace fonts. * Set `gui_running` to `true` (GH-476). * Improve drawing performance. * Bugfix: The cursor is not drawn when a new window is opened. * Bugfix: Preview in the Appearance preferences is not dark mode compatible. * Bugfix: Shortcut buttons are not dark mode compatible. * Dependencies updates: - Kentzo/ShortcutRecorder@3.1 - httpswift/swifter@1.4.7 - eonil/FSEvents@0.1.6 - Quick/Nimble@8.0.5 - sparkle-project/Sparkle@1.22.0 # 0.31.0-337 * Improve handling of file system changes for the file browser # 0.30.0-335 * Improve Open Quickly - Use [The Silver Searcher](https://github.com/ggreer/the_silver_searcher)'s ignore mechanism - Use [ccls](https://github.com/MaskRay/ccls)' fuzzy search * GH-730: Add "Close Window" menu item, which closes all tabs (and the VimR window). * GH-768: Bugfix: coc.nvim does not work. * Bugfix: VimR hangs when there are windows in which nvim is waiting for user input. * Bugfix: Forward search in Markdown preview does not work. * Bugfix: "Open Quickly" result rows are not dark mode compatible. * Bugfix: Enter without selecting a result in the "Open Quickly" window results in a crash. * Dependencies updates: - IBM-Swift/BlueSocket 1.0.52 - elegantchaos/DictionaryCoding 1.0.7 # 0.29.0-329 * Dependencies updates: - Neovim 0.4.3 # 0.28.0-328 * Add MathJax to Markdown preview * Dependencies updates: - Neovim 0.4.2 # 0.27.5 * Dependencies updates: - Neovim 0.3.8 # 0.27.4 * Bugfix: File Browser sometimes does not update. * Dependencies updates: - Neovim 0.3.7 # 0.27.3 * GH-725: Better character spacing; thanks @tkonolige! * Dependencies updates: - RxSwift/RxSwift@5.0.1 - IBM-Swift/BlueSocket@1.0.46 # 0.27.2-323 * Update neovim to v0.3.5 # 0.27.1-322 * Notarize the app # 0.27.0-321 * GH-720: Add option to change spacing between characters; thanks @tkonolige! # 0.26.10-319 * Minimum macOS requirement is now 10.13 High Sierra; see GH-715 * Bugfix: Wrong closing behavior of temporary sessions * Use Swift 5 * Dependencies updates: - eonil/FSEvents (instead of eonil/FileSystemEvents) # 0.26.9-312 * Bugfix: wrong color of "Select the HTML file" button of HTML preview tool * Bugfix: memory leak (strange behavior between `CTFontManager` and `NSFontManager`) # 0.26.8-311 * Bugfix: memory leak # 0.26.7-310 * Bugfix: memory leak # 0.26.6-309 * Bugfix: The state of the "Use Concurrent Rendering" checkbox is not set correctly. * Limit the number of "VimR Networking" processes. # 0.26.5-308 * GH-458: Bugfix: Opening files by drag-n-dropping on VimR window does not work. * Bugfix: Crashes when some files are deleted in the `cwd` when closing. # 0.26.4-307 * GH-709: Bugfix: Some Unicode characters were broken when ligatures are turned off. * Dependencies updates: - ReactiveX/RxSwift@4.4.2 - Quick/nimble@8.0.1 # 0.26.3-306 * Bugfix: Memory leak. # 0.26.2-305 * GH-425: Bind http server to localhost # 0.26.1-304 * Fix broken "Navigate to the current buffer" of the file browser * Dependencies updates: - Use FontAwesome 5 (thanks for the PR, @chriszielinski!) # 0.26.0-303 * Minimum macOS requirement is now 10.12 Sierra. * Optional parallel computation of glyphs. This may result in faster rendering depending on the situation. * GH-314: You can customize the key shortcut for all menu items in the *Shortcut* preferences pane. * GH-501: Add key shortcuts to toggle the Buffer List, Markdown Preview, and HTML Preview tools. * GH-649: Add commands that can control some of GUI elements. * GH-506: Set font, size and linespacing via `~/.config/nvim/ginit.vim`. * Draw the disclosure triangle in appropriate color of the current color scheme (and improve handling of changes of `cwd` in the file browser). # 0.25.0-297 * Neovim 0.3.4 * GH-625: `vimr --cur-env` will pass the current environment variables to the new neovim process. This will result in `virtualenv` support. * GH-443: `vimr --line ${LINE_NUMBER} ${SOME_FILE}` will open the file and go to the given line. If the file is already open in a UI window, then that window will be selected and the cursor will be moved to the given line. This can be used for example to reverse-search LaTeX. * GH-603: Bugfix: `Cmd-V` pastes at the wrong location in the insert mode. * GH-659: Bugfix (introduced in a snapshot): Turning off ligatures does not really turn off ligatures. * GH-664: Bugfix: VimR crashes for some shell configurations. * GH-666: Adapt to the new UI-API of Neovim * Dependencies updates: - ReactiveX/RxSwift@4.4.1 - httpswift/swifter@1.4.5 - PureLayout/PureLayout@3.1.4 - sindresorhus/github-markdown-css@3.0.1 - sparkle-project/Sparkle@1.21.3 # 0.24.0-282 * Neovim 0.3.0 * Some refactorings for the Neovim and the UI interface. * GH-402: Add file associations; using definitions and icons from [MacVim](http://macvim.org/) * GH-636: Bugfix: double cursor when entering terminal * GH-653: Bugfix: Crashes when closing the last window with "Quit after last window closes"-option turned on. * Bugfix: Crashes when `vimr --wait` is used, but is `Ctlr-C`'ed before closing the UI window. * Bugfix: `vimr --wait SOME_FILE` does not exit. * Use LuaJIT again. * Dependencies updates: - sparkle-project/Sparkle@1.19.0 - Quick/nimble@7.1.2 - eonil/FileSystemEvents@1.0.0 # 0.23.0-275 * GH-419: File browser sorts folders on the top. (Thanks @laibulle for the PR) # 0.22.0-273 * GH-543: Add an option in the Keys preferences to use left or/and right Option key as Meta key. (Thanks @xiehuc for the PR) * Bugfix: Eliminate a memory leak. * Dependencies updates: - ReactiveX/RxSwift@4.1.2 # 0.21.2-271 * GH-626: Bugfix: Emoji menu (`Cmd-Ctrl-Space`) does not work. * GH-162: Bugfix: Anti-aliasing on non-Retina display is broken. # 0.21.1-269 * GH-548: Bugfix: When using certain plugings, writing beyond the right border crashes. * GH-620: Bugfix: Wrong underline rendering. * Dependencies updates: - httpswift/swifter@1.4.0 # 0.21.0-267 * GH-605: Slightly improve scroll performance. * GH-572: Add a slider to change the trackpad scroll sensitivity in the Advanced preferences. * GH-614: Add a checkbox for live resizing in the Advanced preferences. * GH-611: Prevent crashing for some users when loading the FontAwesom font for icons used for example in the file browser: - We still don't know why the font cannot be loaded for some users. This fix will prevent the crashes, but, then, the icons will be replaced by `?`. * Migrate one of the few Objective-C parts to Swift (the UI bridge). * Dependencies updates: - ReactiveX/RxSwift@4.1.1 - sindresorhus/github-markdown-css@2.10.0 - Quick/Nimble@7.0.3 # 0.20.6-261 * GH-609: Bugfix: HTML preview crashes when reloading. # 0.20.5-259 * GH-597: Bugfix: vim-fugitive sometimes causes crashes. # 0.20.4-256 * GH-579: Bugfix: In certain cases closing window crashes in fullscreen. * GH-545: Bugfix: Focus is lost when entering/exiting fullscreen. # 0.20.3-255 * Bugfix: "Focus Neovim View" does not work. # 0.20.2-254 * GH-571: Bugfix: Read-only buffers are considered as modified. For example NERDTree buffers won't trigger the "Please save first" dialog anymore. * GH-387: Show all buffers (the same as `:buffers`) in the buffers list * GH-553: Bugfix: Do not crash when there's an error in `init.vim`. * Improve forward- and reverse-search for Markdown previews. * High Sierra related fixes - Do not crash on launch - Too narrow entries in the file browser and buffers list. # 0.20.1-245 * GH-580: Bugfix: Memory leak # 0.20.0-238 * GH-534: `Cmd-D` for "Discard and Close/Quit" buttons. (thanks @nclark for the PR) * GH-521: Improve the performance of the file browser, especically for folders like `node_modules` which contains many many files. * GH-544: Migrate to Swift 4 * GH-528, GH-358: Add rudimentary support for Touch Bar. (thanks @greg for the PR) * Dependencies updates: - neovim/neovim@v0.2.2 - ReactiveX/RxSwift@4.0.0 - sindresorhus/github-markdown-css@2.9.0 # 0.19.1-229 * GH-485: Bugfix: When using a dark theme the title is very difficult to read. # 0.19.0-226 * GH-492: Improve `Control` key handling: e.g. `Ctrl-6` works now. (thanks @nhtzr for the PR) * GH-482, GH-283 Improve Emoji + CJK + Greek text rendering. (thanks @nhtzr for the PR) * GH-325: Improve how the window position and size are stored. * GH-491: Bugfix: Closing the window in full screen mode crashes the app. * GH-512: Bugfix: Intermittent crashes when closing windows or quitting the app. * Dependencies updates: - ReactiveX/RxSwift@3.6.1 - sparkle-project/Sparkle@1.18.1 - sindresorhus/github-markdown-css@2.8.0 - Quick/Nimble@7.0.1 # 0.18.0-217 * GH-481: Bugfix: Quiting with `:qa!` warns about buffers that are already gone. (thanks @nhtzr for the PR) * GH-458: Drag & Drop of files onto the main window works. (thanks @nhtzr for the PR) * GH-487: Hide the mouse cursor when typing. (thanks @nhtzr for the PR) * GH-315: Enable mapping of `` and ``. (thanks @nhtzr for the PR) * GH-368: Send `FocusGained` and `FocusLost` event to neovim backend. (thanks @nhtzr for the PR) # 0.17.0-213 * GH-436: Use colors from the selected `colorscheme` for tools, e.g. the file browser: - Use the `directory` color for folders in the file browser. - Use slightly darker version of the `background` color for the window title bar. - Add an option to turn off file icons in the file browser and in the buffer list in case the `colorscheme` does not play well with them, cf. GH-479. # 0.16.2-210 * GH-472: Bugfix: Mouse wheel scrolling in split window sometimes scrolls in the wrong split. # 0.16.1-208 * GH-472: Bugfix: mouse scrolling an out-of-focus split window scrolls the focused split window. # 0.16.0-205 * GH-378: Draw curly underline, e.g. when the spelling is incorrect. * GH-326, GH-460: Add an option to hide or quit VimR when the last window closes. This is for example useful when you want to use VimR as `git difftool` as described below. * GH-302, GH-421: The `vimr` CLI tool has two new options: - `--wait`: When present, the `vimr` CLI tool will exit only after the corresponding VimR window has been closed. This is particularly useful when combined with the `--nvim` option as described below. - `--nvim`: When present, all command line arguments except `--dry-run` and `--wait`, see above, will be passed over to the background `nvim` process when launching. This means that you can now use for example the `-d` option to activate the diffmode. To use VimR as `git difftool`, add the following to your `~/.gitconfig` ``` [difftool "vimrdiff"] cmd = vimr --wait --nvim -d $LOCAL $REMOTE [diff] tool = vimrdiff ``` You have to re-install the `vimr` CLI tool in the Preferences window as described in the [wiki](https://github.com/qvacua/vimr/wiki#command-line-tool). * Reduce the binary size by approx. 8 MB: We compile httpswift/swifter directly into VimR's binary... * Bonus: The Neovim splash screen shows up! # 0.15.2-201 * Bugfix: The state of the tools of a new window is not the same as the last active window. * GH-423: Bugfix: `lcd` and `tcd` does not work correctly when switching tabs. # 0.15.1-199 * Improved scroll performance. * GH-450: Bugfix: Crashes when a hidden file gets deleted in the `cwd`. * GH-395: Bugfix: Massive file system changes in the working directory causes VimR to freeze. * GH-430: Bugfix: The cursor disappears when using arrow keys in the command mode. * GH-403, GH-447: `Shift-Tab` works (thanks to @mkhl) * Dependencies updates: - neovim/neovim@1b2acb8d958c1c8e2f382c2de9c98586801fd9fe - ReactiveX/RxSwift@3.5.0 # 0.15.0-191 * We now compile `gettext` ourselves and do not use the pre-built version from homebrew: The library from homebrew is built for 10.12 and VimR's deployment target it 10.10. This mismatch produced many warnings during compilation time... * GH-426: You can now turn off some or all tools, e.g. file browser. * GH-434: Bugfix: `autochdir` does not work. * Bugfix: When you hide all tools, the state does not get stored in the user defaults. * `set mouse=a` when launching the neovim process. * Dependencies updates: - neovim/neovim@v0.2.0 - ReactiveX/RxSwift@3.4.1 # 0.14.3-185 * GH-440: Bugfix: "User interactive mode for zsh" does not work. # 0.14.2-184 * GH-438: Bugfix: `:help` does not work. # 0.14.1-182 * Make app launch time much faster. # 0.14.0-181 * GH-405: Redesign - Redux-like architecture using RxSwift * GH-383: Add a general web view preview which preserves the scroll position when (automatically) reloading the selected file. * GH-398: Set the represented icon in the window title bar. * GH-389: Bugfix: The Files tool does not update when one folder is created. * GH-374: Bugfix: The tool buttons have a narrow area which does not react to mouse down when the tool is closed. * Dependencies updates: - RxSwift: 3.4.0 - Sparkle: 1.17 - github-markdown-css: 2.6.0 - swifter: 1.3.3 - Nimble: 6.1.0 - neovim: neovim/neovim@337299c8082347feecb5e733bed993c6a5933456 # 0.13.1-167 * Make pinch-zooming fast (enough) on Retina-displays. * Make markdown previewing more robust against non-existing file. * GH-392: Bugfix: fix a weird scroll issue. * GH-371: Small scroll performance improvment. # 0.13.0-164 * GH-339: Add a simple markdown previewer. # 0.12.6-162 * GH-382: Bugfix: Sometimes the working directory is not set correctly when using the command line tool `vimr`. # 0.12.5-159 * GH-376: Bugfix: Sometimes the communication between the UI and the Neovim backend breaks. # 0.12.4-156 * GH-376: Fix a part of the bug. There's still an issue, cf. discussions in GH-376. # 0.12.3-154 * GH-376: Bugfix: Exiting full-screen sometimes causes crashes. * Update RxSwift to [3.1.0](https://github.com/ReactiveX/RxSwift/releases/tag/3.1.0) # 0.12.2-153 * Bugfix: Store preferences correctly. * GH-292: Improve Open Quickly results * Update Sparkle to [0.15.1](https://github.com/sparkle-project/Sparkle/releases/tag/1.15.1) # 0.12.1-151 * Fix memory leak # 0.12.0-150 * GH-360: Bugfix: a buffer list related bug. * GH-363: Upgrade to jemalloc 4.4.0 for 10.10 (and 10.11) * GH-293: More tool, i.e. file browser and buffer list improvements - option to show hidden files - move tool to top/right/bottom/left - add a button for `cd ..` - select the currently open file: "Scroll from source" from IntelliJ * GH-369: Bugfix: set the `cwd` correctly when opening files using the `vimr` command line tool # 0.11.1-140 * GH-354: Bugfix: a file browser related bug. # 0.11.0-138 * GH-341: Do not become unresponsive when opening a file with existing swap file via the file browser. (This bug was introduced with GH-299) * GH-347: Do not become unresponsive when you `wq` the last tab or buffer. * GH-297: Add a buffer list tool. * GH-296: Drag & drop tools, currently the file browser and the buffer list, to any side of the window! 😀 * GH-351: Improve file browser updating. It also became better at keeping the expanded states of folders. * Make `Cmd-V` a bit better * neovim/neovim@42033bc5bd4bd0f06b33391e12672900bc21b993 # 0.10.2-127 * GH-332: Turn on `paste` option before `Cmd-V`ing (and reset the value) * GH-333: Set `$LANG` to `utf-8` such that non-ASCII characters are not garbled when copied to the system clipboard. - GH-337: With the first version of GH-333, strangely, on 10.12.X `init.vim` did not get read. GH-337 fixes this issue. * GH-334: `set` `title` and `termguicolors` by default such that airline works without changing `init.vim`. * GH-276: Draw a different, i.e. thin, cursor in the insert mode. * GH-299: Add a context menu to the file browser. * GH-237: Increase mouse scrollwheel sensitivity. * neovim/neovim@598f5af58b21747ea9d6dc0a7d846cb85ae52824 # 0.10.1-122 * GH-321: `Cmd-V` now works in the terminal mode. * GH-330: Closing the file browser with `Cmd-1` now focuses the Neovim view. * GU-308: Set `cwd` to the parent folder of the file when opening a file in a new window * Update RxSwift from `3.0.0-rc1` to `3.0.1` * Update Neovim to neovim/neovim@0213e99aaf6eba303fd459183dd14a4a11cc5b07 - includes `inccommand`! 😆 # 0.10.0-118 * GH-309: When opening a file via a GUI action, check whether the file is already open. - Open in a tab or split: select the tab/split - Open in another (GUI) window: let NeoVim handle it. * GH-239, GH-312: Turn on font smoothing such that the 'Use LCD font smoothing when available' setting from the General system preferences pane is respected. * GH-270: Make line spacing configurable via the 'Appearances' preferences pane. * GH-322: Fix crashes related to the file browser. * Bugfix: The command line tool `vimr` sometimes does not open the files in the frontmost window. # 0.9.0-112 ## First release of VimR with NeoVim backend * NeoVim rulez! 😆 (neovim/neovim@5bcb7aa8bf75966416f2df5a838e5cb71d439ae7) * Pinch to zoom in or out * Simple file browser * Open quickly a la Xcode * Ligatures support * Command line tool